Вывод дополнительных реквизитов в несколько колонок
Зачастую чтобы реализовать автоматизацию какого-либо процесса требуется добавлять большое количество дополнительных реквизитов. В типовом режиме все реквизиты выводяться на форму в том порядке в котором они заданы для набора свойств конкретного объекта, например, внутреннего документа определённого вида.
Как можно упорядочить дополнительные реквизиты
Для изменения порядка вывода дополнительных реквизитов на форме нужно в форме «Дополнительные реквизиты» встать на нужное поле и по кнопке «Еще» выбрать команду «Переместить вверх» или «Переместить вниз».
Например, чтобы отобразить поле «Дата документа» первым, а «Номер документа» вторым нужно встать на нужное поле «Дата документа» и нажать «Переместить вверх»:
Однако часто для повышения удобства работы и улучшения читаемости требуется структурировать дополнительные реквизиты на форме. Первое что напрашивается, это сделать вывод дополнительных реквизитов в несколько колонок, чтобы оптимально использовать видимую область формы
Кроме того, неплохо было бы объединять дополнительные реквизиты в логические группы внутри колонок и обозначать их суть. Например, вот так:
Вывод дополнительных реквизитов в несколько колонок
Для начала в форме элемента справочника «ВнутренниеДокументы» находим группу «ГруппаСвойства» и устанавливаем ее параметр «Группировка» в значение «Горизонтальная всегда». Потом добавляем в данную группу свои группы. Вы можете сами решить сколько групп вам надо и как их расположить на форме. Мы добавили три группы «маг_ГруппаСвойстваКолонка1», «маг_ГруппаСвойстваКолонка2» и «маг_ГруппаСвойстваКолонка3»:
Данные группы будут выводиться горизонтально как колонки. Внутри групп группировка будет вертикальной. Если необходимо для разных видов документов формировать свои варианты группировок дополнительных реквизитов, то создание и настройка таких групп надо реализовать программно в зависимости от вида документа который открывается в данный момент.
После создания групп, необходимо реализовать перенос дополнительных реквизитов в эти группы. Для этого добавим в своем общем модуле маг_РаботаСДокументами процедуру ЗаполнитьДополнительныеРеквизитыВФорме():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
Процедура ЗаполнитьДополнительныеРеквизитыВФорме(Форма, Объект, ПоляНадписей) Экспорт Если ТипЗнч(Объект.Ссылка) <> Тип("СправочникСсылка.ВнутренниеДокументы") Тогда Возврат; КонецЕсли; ВидДокументаСтрокой = ""+Объект.ВидДокумента; Если ВидДокументаСтрокой = "Заявка на прием" тогда //Получаем группы-колонки маг_ГруппаСвойстваКолонка1 = Форма.Элементы.маг_ГруппаСвойстваКолонка1; маг_ГруппаСвойстваКолонка2 = Форма.Элементы.маг_ГруппаСвойстваКолонка2; маг_ГруппаСвойстваКолонка3 = Форма.Элементы.маг_ГруппаСвойстваКолонка3; //Создаем логическую группу внутри колонки 1 магГруппаПерсональныеДанные = Форма.Элементы.Найти("магГруппаПерсональныеДанные"); Если магГруппаПерсональныеДанные = Неопределено тогда магГруппаПерсональныеДанные = Форма.Элементы.Добавить("магГруппаПерсональныеДанные", Тип("ГруппаФормы"), маг_ГруппаСвойстваКолонка1); магГруппаПерсональныеДанные.Вид = ВидГруппыФормы.ОбычнаяГруппа; магГруппаПерсональныеДанные.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; магГруппаПерсональныеДанные.Заголовок = "Персональные данные сотрудника"; КонецЕсли; //Реквизит СНИЛС ИмяРеквизита = маг_ПовторноеИспользование.УникальноеИмяДопРеквизита(Объект.ВидДокумента, "СНИЛС"); Рек = Форма.Элементы.Найти(ИмяРеквизита); Если Рек<> Неопределено тогда Форма.Элементы.Переместить(Рек, магГруппаПерсональныеДанные); Рек.Маска = "999-999-999 99"; КонецЕсли; //Реквизит Е-mail магГруппаУчетныеДанные = Форма.Элементы.Найти("магГруппаУчетныеДанные"); Если магГруппаУчетныеДанные = Неопределено тогда магГруппаУчетныеДанные = Форма.Элементы.Добавить("магГруппаУчетныеДанные", Тип("ГруппаФормы"), маг_ГруппаСвойстваКолонка2); магГруппаУчетныеДанные.Вид = ВидГруппыФормы.ОбычнаяГруппа; магГруппаУчетныеДанные.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; магГруппаУчетныеДанные.Заголовок = "Корпоративные учетные данные"; КонецЕсли; МассивРеквизитов = Новый Массив; МассивРеквизитов.Добавить(маг_ПовторноеИспользование.УникальноеИмяДопРеквизита(Форма.Объект.ВидДокумента, "Подключить E-mail")); МассивРеквизитов.Добавить(маг_ПовторноеИспользование.УникальноеИмяДопРеквизита(Форма.Объект.ВидДокумента, "E-mail")); Для каждого ИмяРеквизита из МассивРеквизитов цикл Рек = Форма.Элементы.Найти(ИмяРеквизита); Если Рек<> Неопределено тогда Форма.Элементы.Переместить(Рек, магГруппаУчетныеДанные); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры |
Вызов данной процедуры помещаем в типовую процедуру ЗаполнитьДополнительныеРеквизитыВФорме() в общем модуле УправлениеСвойствами. Подробней об этом и о процедуре УникальноеИмяДопРеквизита() мы рассказывали в предыдущей статье.
Теперь наш дополнительный реквизит «СНИЛС» выводиться в первой колонке, а реквизит «E-mail» во второй. Кроме этого реквизиты внутри колонок объединены в логические группы.
Третья колонка у нас осталась резервной. При расширении функционала туда при необходимости можно будет поместить другие группы дополнительных реквизитов.
Итоги
Хотя типовой механизм дополнительных реквизитов 1С не позволяет гибко управлять их расположением на форме, небольшая доработка программы позволила нам улучшить их визуальное оформление. Теперь область закладки «Свойства» формы внутреннего документа используется оптимально и пользователю стало легче работать с ней.
Еще можно посмотреть
Похожие записи
- Ошибка в типовой интеграция 1С:ЗУП с 1С:Документооборот
- Пропажа индексов дескрипторов в 1С:Документообороте
- Хранилище вариантов отчета 1С для внешнего отчета
- Делаем свою автоподстановку в 1С Документообороте
- Добавляем обработчик события для дополнительного реквизита 1С
- Зачем нужны Дополнительные реквизиты 1С
- Расположение дополнительных реквизитов на форме