При разработке интерфейсов на обычных формах (например, в конфигурации «Управление торговлей 10.3») часто возникает задача добавления пользовательских отметок в строки табличных частей. Типичный пример — фиксация факта наличия подписанных закрывающих документов по конкретным позициям накладной. Рассмотрим подробнее, почему флажок может не срабатывать или открывать форму объекта, и как правильно реализовать данный функционал.
Разберем типичные ошибки, из-за которых клик по флажку в табличном поле приводит к открытию формы или флажок вовсе не переключается:
Булево создан в шапке документа (на уровне реквизитов самого объекта), а колонка добавлена в табличную часть. Платформа 1С не может сопоставить элемент управления строки с реквизитом шапки, из-за чего значение не сохраняется в строке.ДанныеФлажка не привязано к булевому реквизиту строки табличной части, нажатие на ячейку интерпретируется платформой как выбор строки (стандартное действие списка или формы).Проанализируем правильную последовательность действий для настройки интерактивного флажка в форме документа на обычных формах:
ПоступлениеТоваровУслуг) и найдем требуемую табличную часть (например, Товары или Услуги). Добавим новый реквизит именно в состав реквизитов этой табличной части, установив имя (например, ОригиналПолучен) и тип данных Булево.Данные оставляем пустым. Это необходимо для того, чтобы в ячейке не отображался текстовый статус «Да/Нет» или «Истина/Ложь».ДанныеФлажка выбираем созданный реквизит табличной части: ОригиналПолучен.ЭлементУправления выбираем значение Флажок.РежимРедактирования переводим в значение Непосредственно. Это позволяет пользователю переключать галочку в один клик без предварительного двойного щелчка для перехода в режим редактирования строки.ТолькоПросмотр у колонки и у самого табличного поля отключено (установлено в Ложь).Хранение отметки об оригиналах документов непосредственно в реквизите табличной части имеет существенное ограничение, с которым разработчики сталкиваются на практике: дата запрета редактирования данных.
Посмотрим на проблему: закрывающие документы часто поступают с опозданием, когда бухгалтерский или управленческий период уже закрыт. Если реквизит находится внутри документа, для установки флажка пользователю потребуется перезаписать (а часто и перепровести) документ. Если дата запрета изменения данных уже установлена, система заблокирует сохранение.
Для решения этой задачи в реальных проектах применяется подход с использованием независимого регистра сведений. Разберем его структуру:
ОригиналыЗакрывающихДокументов).Документ (тип ДокументСсылка.ПоступлениеТоваровУслуг), при необходимости детализации по строкам — НомерСтрокиДокумента (тип Число) или Номенклатура (тип СправочникСсылка.Номенклатура).ОригиналПолучен (тип Булево), ДатаПолучения (тип Дата), Ответственный (тип СправочникСсылка.Пользователи).