Добавление динамических элементов в 1С:Управление торговлей, редакция 11.3.3.178.
Наталия Г.
29.04.2017
82 понравилось
707 просмотров

Добавление динамических элементов в 1С:Управление торговлей, редакция 11.3.3.178.

Данная статья создана для иллюстрации работы с динамическими элементами формы. В качестве примера взята демо база «1С:Управление торговлей» 11.3.3.178.

Задача: добавить в документ «Реализация товаров и услуг» реквизиты ЕстьИнвойс, НомерИнвойс вывести их на вкладку «Прочее» формы документа, расположить их горизонтально относительно друг грура. Вкладку «Прочее» расположить перед вкладкой «Дополнительно» как показано на рисунке.

Форма реализация товаров и услуг

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

У многих объектов появился вызов общего модуля СобытияФорм, в котором расположены две процедуры ПриСозданиинаСервере() и ПриЧтенииНаСервере(). К сожалению, вызов есть не во всех формах, если его нет – нужно добавить самостоятельно:

СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);

СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);

Вызываются они из одноименных обработчиков событий форм, т.е. в процедурах ПриСозданииНаСервере() и ПриЧтенииНаСервере(). Далее, идет вызов следующих процедур:

МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка);

МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(Форма, ТекущийОбъект);

Нас будет интересовать только первая процедура МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(). Находится она в серверном общем модуле, что позволяет добавлять динамические элементы на форму. Процедура пустая, поэтому нам нужно внести в нее изменения. Для этого создадим свой общий модуль РаботаСФормамиСервер, который будет вызываться из данной процедуры:

Общий модуль модификации конфигурации 1С: Управление торговлей

Рис.1: Вызов новой процедуры из МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере()

Общий модуль Работа с формами 1С

Рис.2: Добавление своей процедуры ДобавитьРеквизитыНаФорму_ПриСозданииНаСервере()

в новом общем модуле РаботаСФормамиСервер

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

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

Листинг кода:

// Переопределяемая процедура, вызываемая из МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере

// Параметры:

//     Форма - форма, из обработчика события которой происходит вызов процедуры.

//     см. справочную информацию по событиям управляемой формы.

//

Процедура ДобавитьРеквизитыНаФорму_ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт

         

       Если Форма.ИмяФормы = "Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента" Тогда

             // Новая страница "Прочее"

             СтраницаПрочее = Форма.Элементы.Добавить("СтраницаПрочее", Тип("ГруппаФормы"), Форма.Элементы.ГруппаСтраницы);

             СтраницаПрочее.Вид                      = ВидГруппыФормы.Страница;

             СтраницаПрочее.Заголовок                = "Прочее";

             СтраницаПрочее.Группировка                     = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;

У вас есть вопрос, нужна помощь консультанта?

Оставьте номер телефона и мы перезвоним!

             СтраницаПрочее.ОтображатьЗаголовок             = Истина;

             СтраницаПрочее.Доступность                     = Истина;

             Форма.Элементы.Переместить(СтраницаПрочее, Форма.Элементы.ГруппаСтраницы, Форма.Элементы.ГруппаДополнительно);

             // горизонтальная группировка

       ГрпИнвойс = Форма.Элементы.Добавить("ГруппаИнвойс", Тип("ГруппаФормы"), СтраницаПрочее);

       ГрпИнвойс.Вид                           = ВидГруппыФормы.ОбычнаяГруппа;

       ГрпИнвойс.Группировка                   = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;

       ГрпИнвойс.ОтображатьЗаголовок     = Ложь;

                    

             СоздатьЭлементФормы(Форма, ГрпИнвойс, "ЕстьИнвойс", "Объект.ЕстьИнвойс", ВидПоляФормы.ПолеФлажка, Ложь);

             Форма.Элементы.ЕстьИнвойс.Заголовок = "Инвойс:";

             Форма.Элементы.ЕстьИнвойс.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Право;

             СоздатьЭлементФормы(Форма, ГрпИнвойс, "НомерИнвойс", "Объект.НомерИнвойс", ВидПоляФормы.ПолеВвода, Ложь);

             Форма.Элементы.НомерИнвойс.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;

            

       КонецЕсли; 

КонецПроцедуры // ДобавитьРеквизитыНаФорму_ПриСозданииНаСервере()

// Создает элементы на форме

// Параметры:

//     Форма               - Форма, из обработчика события которой происходит вызов процедуры.

//     ЭлементРодитель - Родитель для добавляемого элемента.

//     ИмяЭлемента - Уникальное имя добавляемого элемента.

//     ПутьКДанным - Содержит путь к реквизиту, с которым связан объект.

//     Вид                 - Определяет способ представления данных реквизита в форме.

//     ТолькоПросмотр      - Содержит признак возможности/невозможности редактирования отображаемых данных.

//

Функция СоздатьЭлементФормы(Форма, ЭлементРодитель, ИмяЭлемента, ПутьКДанным, Вид, ТолькоПросмотр)

       ЭлементФормы = Форма.Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭлементРодитель);

       ЭлементФормы.ПутьКДанным   = ПутьКДанным;

       ЭлементФормы.Вид           = Вид;

       ЭлементФормы.ТолькоПросмотр = ТолькоПросмотр;

КонецФункции // СоздатьЭлементФормы()

Эта статья помогла вам?

Теги:

Комментарии ( 0 )

Оставить комментарий