Создание произвольной формы 1с

Обновлено: 07.07.2024

Каждый, кто программировал в обычном приложении, часто сталкивался с задачей получения произвольной таблицы значений на форме. Под произвольной таблицей значений понимается таблица, количество и тип колонок которой наперед не известно. То есть колонок может быть 3, а может 6, а может 8. В обычном приложении все просто: можно было на форме обработки разместить элемент «ТаблицаЗначений»,и затем передать в этот элемент созданную таблицу значений программным способом. Потом простой командой:

получить готовую таблицу значений на форме. Казалось бы, что может быть проще.

Это все было в обычном приложении. В управляемом приложении все изменилось. Так просто произвольную таблицу не создать. Теперь нужно либо жестко параметризировать таблицу значений на форме, либо создавать ее программным способом (описывать,ну, в этом, собственно, и суть самого управляемого приложения). Это мы и попробуем сделать: программными средствами создать произвольную таблицу значений на управляемой форме.

Решение задачи.

Первое, что мы должны сделать, это определить, как таблица появится на форме. Главное, что никакого элемента формы в обработке создавать не нужно. Мы его создадим программным способом, как и всю таблицу. То есть таблица будет описана, и создаваться в момент открытия формы или с помощью кнопки – это кому как нужно.



Создание таблицы на форме происходит через описание таблицы значений как реквизита:

Теперь мы должны создать программную таблицу значений, которая содержит данные. Если таблица значений будет получена из запроса, то все более - менее порядок. Если таблица создается вручную, то значение колонок, которые будут содержать числа или даты могут быть созданы через «ОписаниеТипов». Суть в том, что колонки в таблице значений обязательно должны иметь какой-то тип. Если, например,предполагается, что пользователь будет заполнять данные в этих колонках интерактивно, то нельзя добавлять колонку таблицы значений просто с именем, она должна иметь тип. Имейте ввиду – это очень важно т.к. эти типы мы передадим в таблицу на форме.

Создаем таблицу, которая содержит несколько колонок:

Далее мы заполним нашу программную таблицу ТЗ нужными данными. Получаем таблицу ТЗ, которая содержит необходимые значения и готова к передаче в созданный реквизит формы.

Вот такая нехитрая комбинация и наша таблица готова.

Далее укажем путь к данным и, например, можем установить ширину колонок:

Условное оформление, если нам нужно мы также пишем вручную,командное меню – вручную. Обработчики таблицы также пишутся руками. Например,что бы добавить обработчик события таблицы «Выбор»:

Для обработки данного события в форме процедуры прописывается отдельная процедура:

Обратите внимание, что обработчики таблицы срабатывают на клиенте и поэтому должны иметь команду указатель компилятора

Ну, и последнее что хотелось добавить, что после всех этих действий обязательно не забываем передать готовую таблицу в реквизит формы:

Вот что имеем в результате:


А вот обработка события "Выбор":



Послесловие.

Надеюсь, статья окажет помощь тем программистам 1С, которые начинают создавать таблицы на форме программным способом.

Вы можете скачать обработку, которая программным способом создает таблицу значения и выводит на управляемую форму с комментариями,которые помогут Вам создавать свои таблицы.

Сегодня мы поработаем с формой документа: научимся ее создавать и добавлять на нее новые реквизиты.

Откроем документ "ПриходДенежныхСредств" и добавим реквизит "Договор" (Рисунок 1).

Укажем у реквизита "Договор" ссылку на справочник "Договоры" (Рисунок 1).

Теперь зайдем в пользователя и проверим изменения (Рисунок 2)!

Теперь я хочу сделать таким образом, что бы при выборе контрагента "Поставщик 3" показывались только те договоры, которые относятся к этому контрагенту! У нас для этого уже есть заготовки и просто необходимо включить этот функционал.

До этого мы указывали, что справочник "Договоры" является подчиненным для справочника "Контрагенты" - является владельцем.

Посмотрите на рисунок 2, сейчас в этом окне показываются все договоры, которые относятся к этому контрагенту и которые не относятся, а мне необходимо лишние отфильтровать по владельцу (контрагенту).

Для этого нужно открыть свойства реквизита "Договор" и найти свойство "Связи параметров выбора" (Рисунок 3).

У этого свойства необходимо нажать на значок многоточия и откроется окно (Рисунок 4).

В этом окне нам необходимо перетащить реквизит, по которому будет делаться отбор - это Контрагент. Нужно выделить реквизит и нажать на значок стрелки вправо и он переместится в правое окно (Рисунок 5).

В правом окне необходимо установить значения, которые показаны на рисунке 5 и нажать "Ок".

Если поле (столбец) "Имя" не отображается как на рисунке, то необходимо по нему дважды щелкнуть и в выпадающем списке выбрать необходимое значение.

После этого нужно перейти в режим пользователя и проверить изменения (Рисунок 6).

На рисунке 6 видно, что реквизит сам добавился и на форму документа и на форму списка, а так же, отбор по владельцу работает.

Работает это так: как только вы выбрали в поле "Контрагент" какой-то элемент, так сразу для поля "Договор" срабатывает отбор и будет показываться только то, что относится к этому владельцу (контрагенту).

Давайте продолжим. Добавим реквизит "Договор" (Рисунок 8) в документ "РасходДенег" - он будет абсолютно таким же, как и в прошлом документе, то есть нужно в свойствах указать отбор по владельцу (если не помните как, то посмотрите выше, там это описано), но перед этим добавим форму документа на вкладке "Формы" (Рисунок 7), выберите необходимые реквизиты, которые будут отображаться на форме и нажмите "Готово".

Закройте форму, она пока нам не нужна и теперь перейдите на вкладку "Данные" и создадим реквизит "Договор" (Рисунок 8).

После этого запустить пользователя и проверить изменения (Рисунок 9).

Посмотрите на рисунок 9, на форме документа нет реквизита "Договор"! Как так и почему? Ведь мы же его создали, а он тут не отображается!

Но, если закрыть форму документа и посмотреть на форму списка (Рисунок 10), то мы увидим, что этот реквизит на этой форме есть!

Как так получается? Почему в одном месте его нет, а в другом есть?

Все очень просто, все точно так же как и в справочнике! Мы создали реквизит после того, как создали форму! А в этом случае платформа понимает: "как только создана форма, она уходит в сторону и все работу по добавлению чего-то нового на форму, отдает полностью пользователю"!

Мы создали форму документа, а потом только создали реквизит. Именно поэтому он не добавился на форму, так как нам нужно добавлять его на форму вручную, а форму списка мы не трогали и именно поэтому платформа сама его добавила!

Давайте добавим реквизит на форму! Для этого откроем объект на вкладке "Формы" и откроем форму документа (Рисунок 11).

Теперь необходимо в правой части окна раскрыть список "Объект" и там найти реквизит "Договор" (Договор 12).

Проверим изменения в пользовательском режиме (Рисунок 13).

Все так и работает: как только создаете какую-то форму, так сразу платформа перестает сама добавлять реквизиты на форму, но если вы до создания формы создали все реквизиты и потом создали форму, то автоматически все реквизиты появятся на форме.

Мало того, что реквизит появился на форме, так и отбор работает - показываются только те договоры, которые относятся к определенному контрагенту!

Теперь проверим изменения в пользователе и убедимся в том, что она не появилась на форме документа - значит, нужно переместить ее сначала на форму в режиме разработчика (Рисунок 15).

Теперь проверим пользователя и будет выглядеть вот так (Рисунок 16).

Как видим по рисунку 16, табличка появилась выше первых двух таблиц, а не стала после таблички "Услуги" как на рисунке 17.

Так, как на рисунке 16, программа тоже будет работать, но не удобно будет, слишком много места занимает одна таблица, а нужно так, как на рисунке 17 - для экономии места и удобности.

Для этого перейдем на форму в режиме разработчика и сделаем следующее:

3. Рисунок 20 - Переименовать новую группу (Имя и Синоним)

4. Рисунок 21 - Переместить в папку "Дополнительно" таблицу "Дополнительно"

5. Рисунок 22 - Запустить пользователя и проверить изменения .

Рисунок 22 - Отображение таблицы в пользовательском режиме Рисунок 22 - Отображение таблицы в пользовательском режиме

Теперь место сэкономлено, стало более удобнее работать!

При добавлении таблички в нужно место мы познакомились побольше с формой, а именно с созданием группировки (папки), которая помогает правильно отобразить элемент на форме. Более подробно с созданием группировки мы поработаем на следующем занятии и разберемся со всем.

На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке. Если что-то не получается, то вы всегда сможете написать вопрос о том. что вам непонятно или вернуться к предыдущим урокам и посмотреть их - ссылки внизу!

Организация выбора из произвольной формы (на примере выбора из списка регистра сведений)

1С:Предприятие 8 поддерживает готовую функциональность для организации выбора из форм списков объектных данных (справочников, документов и т.д.). В большинстве случаев выбираются именно такие значения. Однако, в некоторых случаях, необходимо организовать выбор и других значений. Механизм форм 1С:Предприятия 8 включает универсальный механизм выбора, позволяющий организовать выбор практически любых значений.

Для этого используется возможность открытия формы в режиме выбора и возможность обработки события выбора.

В качестве примера приведем реализацию выбора записи регистра сведений. Стандартные расширения форм не поддерживают механику выбора, однако ее несложно реализовать.

Вначале создадим новую форму списка регистра сведений и назовем ее "ФормаВыбора". В форме реализуем событие Выбор табличного поля отображающего список.

В этом событии мы отменяем стандартное действие, предусмотренное расширением табличного поля, и вместо него вызываем метод ОповеститьОВыборе() , передавая ему в качестве параметра текущую строку. Значением текущей строки будет являться значение типа РегистрСведенийКлючЗаписи.<имя> .

Теперь реализуем функциональность выбора в той форме, в которой это требуется. Например, в форме обработки, имеющей поля ввода "Валюта" и "Период".

Вначале мы сформируем ключ записи регистра сведений, который будет использоваться для установки в списке текущей строки в соответствии с текущими значениями полей ввода. Сама установка будет выполняться через стандартный параметр формы ПараметрТекущаяСтрока .

Заметим, что если для установки текущей строки расширение формы не предоставляет стандартного параметра, то можно создать свой реквизит у формы выбора, заполнить его аналогично заполнению стандартного параметра в этом примере, и при открытии формы обеспечить позиционирование в списке в соответствии со значением данного реквизита.

Далее мы создаем форму, устанавливаем ей режим выбора, владельца формы, и выполняем открытие формы.

Теперь нам нужно только реализовать обработчик выбора в форме и выполнить в нем необходимее действия с выбранным значением.

Заметим, что в качестве владельца формы может устанавливаться не только сама форма, в которой осуществляется выбор, но и ТабличноеПоле , ПолеВвода и ПолеВыбора . Соответственно и обработчик выбора нужно будет реализовывать у этих элементов управления.

Произвольный документ можно создать:

1. Из рабочего места Текущие дела ЭДО.

Для создания произвольного документа необходимо в Текущих делах ЭДО перейти в папку «Создать» и выполнить команду «Создать произвольный документ».

1С-ЭДО. Отправка произвольного документа

В открывшемся окне необходимо выбрать организацию (отправителя электронного документа), контрагента (получателя электронного документа). После заполнения необходимых полей требуется нажать «Добавить файл» и выбрать документ из соответствующей директории Вашего компьютера.

1С-ЭДО. Отправка произвольного документа

Обращаем Ваше внимание, что имя присоединяемого файла автоматически преобразуется в транслит. Этот функционал создан с целью корректного переноса между различными операционными системами. Если по какой-либо причине документ должен быть отправлен без транслита, то необходимо зайти в группу команд «Ещё» и снять галочку с «Транслитировать имя присоединяемого файла» и выполнить повторное добавление файла.

1С-ЭДО. Отправка произвольного документа

После чего необходимо выбрать вид документа. Стандартными настройками вид документа определён как «Прочее».

1С-ЭДО. Отправка произвольного документа

Для каждого вида документов поддержан свой регламент ЭДО в настройках отправки электронных документов. Это позволяет выполнить более гибкие настройки запроса ответной подписи , извещения о получении и очередности подписания электронного документа.

1С-ЭДО. Отправка произвольного документа

В форме произвольного документа поддерживается возможность указания обязательных реквизитов (номер, дата, сумма).

1С-ЭДО. Отправка произвольного документа

После завершения обмена, документ будет доступен для просмотра в Архиве ЭДО с указанными ранее значениями (видом документа, номером и датой).

1С-ЭДО. Отправка произвольного документа

При необходимости можно установить связь с документом учёта.

1С-ЭДО. Отправка произвольного документа

В документе учётной системы будет отображаться состояние ЭДО по произвольному документу, а сам документ будет доступен при выполнении команды «ЭДО – Просмотреть электронный документ».

2. Из печатной формы документа учётной системы.

Начиная с версии модуля ЭДО 1.8.1 , реализована возможность быстрого формирования произвольных документов на основании печатных форм. Для этого следует перейти в документ учётной системы, раскрыть группу команд «Печать» и выбрать необходимый вид печатной формы.

1С-ЭДО. Отправка произвольного документа

В открывшемся окне требуется нажать кнопку «ЭДО».

1С-ЭДО. Отправка произвольного документа

1С-ЭДО. Отправка произвольного документа

Произвольный документ связан с документом учётной системы и будет доступен при выполнении команды «ЭДО – Просмотреть электронный документ». Также в документе учётной системы будет отображаться состояние ЭДО по произвольному документу.

1С-ЭДО. Отправка произвольного документа

3. Из документа учётной системы.

Произвольный электронный документ можно создать из документа учётной системы, нажав «ЭДО – Создать произвольный документ».

1С-ЭДО. Отправка произвольного документа

1С-ЭДО. Отправка произвольного документа

Произвольный документ связан с документом учётной системы и будет доступен при выполнении команды «ЭДО – Просмотреть электронный документ». Также в документе учётной системы будет отображаться состояние ЭДО по произвольному документу.

4. Из Архива электронных документов.

Произвольный документ можно создать из Архива ЭДО. Для этого необходимо перейти в «Администрирование – Архив ЭДО» и на вкладке «Документы» выполнить команду «Создать произвольный документ».

1С-ЭДО. Отправка произвольного документа

В версиях программных продуктов, использующих модуль ЭДО версии 1.1 (Бухгалтерия предприятия 2.0, Управление торговлей 10.3, Управление производственным предприятием 1.3) отправку произвольного документа можно осуществить:

1. Из формы списка произвольных электронных документов.

Для этого необходимо перейти в меню «Сервис», развернуть группу «Обмен электронными документами» и выбрать «Произвольные электронные документы».

1С-ЭДО. Отправка произвольного документа

В открывшемся окне следует перейти на вкладку «Исходящие» и нажать «Создать».

Читайте также: