Программная доработка форм в 1С: ЗУП

04.04.25

Разработка - Работа с интерфейсом

Сегодня каждый разработчик, стараясь минимизировать трудозатраты на обновление конфигурации, выполняет доработку типовых форм путем программного формирования реквизитов и элементов. И обычно это происходит путем добавления кода в обработчики событий ПриСозданииНаСервере и ПриЧтенииНаСервере модуля формы документа, но в конфигурации 1С:ЗУП в ряде документов существует особый подход, в рамках которого, на мой взгляд, и следует продолжать доработку этих типовых форм.

Это моя первая статья на данном ресурсе и вообще в целом, прошу строго не судить)

В конфигурации 1С ЗУП есть ряд документов, форма модуля которых содержит специальную область "ИнициализацияФормы"

Запустив глобальный поиск по конфигурации, мы получим их перечень:

Основная конфигурация Документ.БольничныйЛист.Форма.ФормаДокумента.Форма.Модуль(2609, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.ВосстановлениеВДолжности.Форма.ФормаДокумента.Форма.Модуль(1469, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.КадровыйПеревод.Форма.ФормаДокумента.Форма.Модуль(2033, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.КадровыйПереводСписком.Форма.ФормаСтроки.Форма.Модуль(1856, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.Командировка.Форма.ФормаДокумента.Форма.Модуль(1738, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.НачислениеЗарплаты.Форма.ФормаДокумента.Форма.Модуль(3124, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.НачислениеПоДоговорам.Форма.ФормаДокумента.Форма.Модуль(1101, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.ОплатаПоСреднемуЗаработку.Форма.ФормаДокумента.Форма.Модуль(1473, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.ОтгулСписком.Форма.ФормаДокумента.Форма.Модуль(969, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.Отпуск.Форма.ФормаДокумента.Форма.Модуль(2384, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.ОтпускБезСохраненияОплаты.Форма.ФормаДокумента.Форма.Модуль(1098, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.ОтпускБезСохраненияОплатыСписком.Форма.ФормаДокумента.Форма.Модуль(1123, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.ОтпускПоУходуЗаРебенком.Форма.ФормаДокумента.Форма.Модуль(2482, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.ПриемНаРаботу.Форма.ФормаДокумента.Форма.Модуль(1868, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.ПриемНаРаботуСписком.Форма.ФормаСтроки.Форма.Модуль(1669, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.ПрогулНеявка.Форма.ФормаДокумента.Форма.Модуль(975, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.ПрогулНеявкаСписком.Форма.ФормаДокумента.Форма.Модуль(963, 1)	#Область ИнициализацияФормы
Основная конфигурация Документ.РезервыПоОплатеТруда.Форма.ФормаДокумента.Форма.Модуль(1109, 1)	#Область ИнициализацияФормы

Если свернуто, то она выглядит вот так:

 

 

Не претендую на то, что максимально правильно воспринял идею этой схемы, но пришел к выводу, что самым удобным местом для вставки нетипового кода является процедура ДополнитьФорму()

Ее параметр ОтложенноеИзменение обеспечивает возможность управления, в какой момент мы добавляем реквизиты, в какой момент добавляем элементы, а когда нужно только настроить элементы:

Если ОтложенноеИзменение Тогда
   ДобавлятьЭлементыФормы = Ложь;
   ДобавлятьРеквизитыФормы = Истина;
Иначе
   ДобавлятьЭлементыФормы = Истина;
   ДобавлятьРеквизитыФормы = Ложь;
КонецЕсли;

Например, создаем новый общий модуль МояДоработкаФормы

В нем добавим несколько процедур:

Процедура ДополнитьФорму(Форма, 
		ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение) Экспорт
		
	Если ОтложенноеИзменение = Неопределено Тогда
		Возврат;
	КонецЕсли;		
		
	Если ДобавлятьРеквизитыФормы Тогда
		РеквизитыФормы(Форма);	
	КонецЕсли;
			
	Если ДобавлятьЭлементыФормы Тогда
		ДобавитьЭлементыФормы(Форма);
	КонецЕсли;
	
	Если НЕ ОтложенноеИзменение Тогда
		НастроитьЭлементыФормы(Форма);
	КонецЕсли;
	
КонецПроцедуры

Процедура ДобавитьРеквизитыФормы(Форма) 

// Тут добавляем новые реквизиты формы

КонецПроцедуры

Процедура ДобавитьЭлементыФормы(Форма)

// Тут добавляем новые элементы формы

КонецПроцедуры

Процедура НастроитьЭлементыФормы(Форма)

// Тут настраиваем элементы формы

КонецПроцедуры

И в модуле формы в процедуре ДополнитьФорму() добавляем вызов:

МояДоработкаФормы= ОбщегоНазначения.ОбщийМодуль("МояДоработкаФормы");
МояДоработкаФормы.ДополнитьФорму(ЭтотОбъект, 
   ДобавлятьЭлементыФормы, ДобавлятьРеквизитыФормы, ОтложенноеИзменение);

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

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

ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("НовыйРеквизит", Новый ОписаниеТипов("Булево")));
СуществующиеРеквизиты = Новый Массив;
ЗарплатаКадры.ЗаполнитьМассивИменРеквизитовФормы(Форма, СуществующиеРеквизиты, "");
ЗарплатаКадры.ИзменитьРеквизитыФормы(Форма, ДобавляемыеРеквизиты, СуществующиеРеквизиты, , Истина);

 

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    56020    17    23    

43

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    64388    45    60    

83

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    20327    29    6    

45

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

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

20.08.2024    26496    mrXoxot    44    

131

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    13765    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    18957    1244    elcoan    53    

128

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

3 стартмани

10.04.2023    13306    172    acces969    31    

127

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    8933    kalyaka    6    

34
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 1997 04.04.25 11:59 Сейчас в теме
Я использую единую точку входа через подсистему ПодключаемыеКоманды, благо она ко всем документам подключена. Подробнее здесь описывал
AntonH851; ubnkfl; +2 Ответить
2. AntonH851 93 04.04.25 14:18 Сейчас в теме
(1) Да, в общем случае тоже ей стараюсь пользоваться
3. EvgeniuXP 05.04.25 08:09 Сейчас в теме
Бсп есть процедура установить свойство. Ее можно вызывать и для не существующего элемента, ничего не упадет.
Оставьте свое сообщение