Заказать звонок

Изменение условного оформления формы из внешней обработки в 1С

23.11.2018

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

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

То есть, в обработке создается форма, в ней клиентская процедура с фиксированным именем ВыполнитьКоманду. В нее и будет передано выполнение кода при вызове обработки. ВладелецФормы – это и есть форма документа, из которого вызывается внешняя обработка.

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

Для решения подобных задач в БСП версии 2.1.6 был добавлен тип команды ЗаполнениеФормы. Использование этого типа выглядит следующим образом:

Ключевые моменты выделены цветом:

  1. Мы указываем параметр «Назначения» - тем самым даем понять системе, что это не просто внешняя обработка, а именно обработка заполнения, привязанная к определенному типу метаданных (в нашем случае к документу ОтпускаСотрудников). При этом логично будет указать вид обработки ЗаполнениеОбъекта. В этом случае команда из нашей обработки будет добавлена в подменю «Заполнить» указанного документа. Вместо вида ЗаполнениеОбъекта можно указывать другие виды: ПечатнаяФорма – подменю «Печать», СозданиеСвязанныхОбъектов – подменю «Создать на основании», Отчет – подменю «Отчеты». Виды обработки ДополнительнаяОбработка и ДополнительныйОтчет указывать не стоит – они не будут работать при заполненном массиве назначений.
  2. Версию БСП следует указать явным образом в параметрах, она должна быть не ниже 2.1.6, ну и конечно она должна быть внедрена в конфигурацию.
  3. Указывая тип команды ЗаполнениеФормы, мы даем системе понять, что в параметры выполнения команды должна быть передана форма для заполнения.
  4. Обработчик команды описываем в модуле объекта, добавляем третий параметр ПараметрыВыполнения.
  5. ПараметрыВыполнения – это структура из 2 элементов: ДополнительнаяОбработкаСсылка (тип СправочникСсылка. ДополнительныеОтчетыИОбработки – ссылка на нашу обработку) и ЭтаФорма (тип УправляемаяФорма). Код исполняется в контексте сервера, здесь становится доступно условное оформление, что нам и требовалось.

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

Подробное описание типов команд, параметров и подробностей размещения обработчиков можно найти в общем модуле ДополнительныеОтчетыИОбработкиКлиентСервер в комментариях к функциям вида ТипКоманды<ИмяТипаКоманды>.

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

Еще одна особенность - данный способ не требует записи объекта перед вызовом нашей команды, в отличие от команд с типом ВызовКлиентскогоМетода. Что довольно удобно. Например при ручном заполнении документа – нет лишних обращений на сервер для записи объекта и перечитывания его по ссылке.

 

Автор статьи: Олег Т., разработчик 1С компании Neti.


Возврат к списку

Наши услуги и вакансии

Разработчики
на full-time
Программист 1С на 8 часов в день
от 1 600 руб/час
Позадачная
разработка 1С
Доработки и развитие любых решений на платформе 1С
Стоимость по оценке
Карьера в Neti

Вакансии разработчиков и консультантов 1С
З.П. от 100 000 рублей