Немного текста о том, как родилась разработка.
В конфе ДО 3.0 вся основная работа ведётся в объекте “ДокументыПредприятия”, содержащем 60 реквизитов и около 2700 элементов на форме. Создавать служебные реквизиты для ввода пользователем даты увольнения сотрудника, типа устройство для удаленного доступа или же номер топливной карты ТС, а также многое другое не очень-то и хочется напрямую из конфигуратора. Ведь для этого нужно создать отдельный реквизит, под этот реквизит создать перечисление или использовать какой-то общий справочник со значениями, а потом ещё программно вывести каждый реквизит на форму. И это я ещё не говорю о том, как со стороны бизнеса может штормить их желания в том или ином виде шаблона. «Сегодня реквизит нужен, а завтра нам надо всё по-другому» – классика! И таких реквизитов будет нескончаемое количество, ведь бизнесу нужны постоянно новые тематики служебных записок. Именно по этим причинам командой было принято решение дорабатывать шаблоны для новых видов и тематик через функционал доп. реквизитов. По началу все плевались от них, так как неудобно было с ними работать программно, но это было лишь из-за непривычки.
При очередной разработки нового шаблона документа мне понадобилось изменить элемент доп. реквизита, чтоб выглядело понятнее, красивее и удобнее. Тут зародилось полотно из блоков “Если” и “ИначеЕсли”, где программно изменялись элементы доп. реквизитов. Это полотно со временем выглядело ужасно и плодилось ещё больше с каждой новой тематикой. Хотелось управлять элементами напрямую из предприятия, а не копошиться каждый раз в коде. Типовой функционал “Дополнительных реквизитов и сведений” имеет, к сожалению, бедный набор свойств, отвечающий за отображение элементов:

Из стандартных параметров мы можем поиграть с подсказкой, настройками видимости, доступности и обязательности заполнения, вывести в виде гиперссылки и для типов “Булево”, “Число”, “Дата” доступно редактирование формата. И всё.
Скудно, согласитесь? Ни изменить вид флажка для булево, ни добавить подсказу ввода, ни изменить растягивание элемента. Ещё один момент, который мне изначально очень не понравился, так это не установленное свойство “Быстрый выбор” для элементов с типом значения “Дополнительное значение”. То есть чтоб выбрать из пяти или меньше значений пользователю необходимо нажимать “Показать все”, чтоб только потом на форме выбора найти нужное и выбрать его. Ммм, вкуснятина.
Управлять элементами доп. реквизитов пришлось программно и расстилать ещё дальше и дальше то полотно из лоскутков “Если”. Это, во-первых, выглядело некрасиво, а во-вторых, было не мобильно в отладке или доработке. Наверное, кому-то оно и не нужно совсем, но мне очень бы хотелось это всё изменять интерактивно напрямую из объекта реквизита, раз мы и создаем этот реквизит в предприятии. Поэтому я и разработал то, что закрывает мою хотелку полностью.
Основной функционал расширения
Огромная часть разработки была облегчена благодаря Сергею Муравьеву (SergMuravev) и его конструктору управляемых форм. Сергей, спасибо огромное! От конструктора я позаимствовал форму "Свойства элемента". Доработав форму и функционал под свои задачи, получил на выходе отличную среду для настройки свойств элемента. Все свойства редактируются напрямую из формы элемента, записываются измененные свойства при записи дополнительного реквизита.


Алгоритм по установке свойств и событий элементами дополнительных реквизитов оформлен в модуле "УправлениеСвойствами" после создания основных объектов на форму.
&После("ЗаполнитьДополнительныеРеквизитыВФорме")
Процедура ДБ_ЗаполнитьДополнительныеРеквизитыВФорме(Форма, Объект, ПоляНадписей, СкрытьУдаленные)
Если НЕ Форма.Свойства_ИспользоватьСвойства
ИЛИ НЕ Форма.Свойства_ИспользоватьДопРеквизиты Тогда
Возврат;
КонецЕсли;
ОписаниеРеквизитов = Форма.Свойства_ОписаниеДополнительныхРеквизитов;
Если НЕ ОписаниеРеквизитов.Количество() Тогда
Возврат;
КонецЕсли;
СвойстваЭлементов = СвойстваЭлементовДополнительныхРеквизитовФормы(ОписаниеРеквизитов);
Для Каждого Знч Из СвойстваЭлементов Цикл
ЭлементФормы = Форма.Элементы.Найти(Знч.ИмяРеквизитаЗначение);
Если ЭлементФормы = Неопределено Тогда Продолжить; КонецЕсли;
Для Каждого КлючИЗначение Из Знч.СвойстваЭлемента.ИзмененныеСвойства Цикл
ЭлементФормы[КлючИЗначение.Ключ] = КлючИЗначение.Значение;
КонецЦикла;
Для Каждого КлючИЗначение Из Знч.СвойстваЭлемента.ИзмененныеСобытия Цикл
ЭлементФормы.УстановитьДействие(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Настраиваем свойства и записываем объект.


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

Разработка универсальна под все конфигурации с БСП, поэтому скачивайте и пользуйтесь там, где вам бы этого хотелось. Если есть какие-то конструктивные замечания или предложения, то можете сообщить мне о них, буду рад почитать.
Разрабатывалось на БСП версии 3.1.11.378.
Проверено на следующих конфигурациях и релизах:
- Документооборот КОРП, редакция 3.0, релизы 3.0.19.30
- Бухгалтерия предприятия КОРП, редакция 3.0, релизы 3.0.190.22
- Управление торговлей, редакция 11, релизы 11.5.22.134
Вступайте в нашу телеграмм-группу Инфостарт

