В процессе разработки или настройки конфигураций на платформе 1С часто возникает задача упростить ввод данных для пользователя. Одной из таких задач является автоматическое заполнение статуса или иного реквизита в строках табличной части при их создании. Рассмотрим подробнее, как реализовать этот функционал, не прибегая к написанию кода в модулях формы или объекта.
Разберем самый эффективный и штатный способ, предусмотренный платформой 1С. Многие разработчики привыкли искать настройки заполнения только для реквизитов «шапки» документа, однако аналогичный механизм существует и для табличных частей. Проанализируем ситуацию: начиная с версии платформы 8.3.3, у реквизитов табличных частей появилось свойство ЗначениеЗаполнения.
Пошаговый алгоритм настройки в конфигураторе:
Статус).Рассмотрим нюансы работы с типами данных. Если тип реквизита — ПеречислениеСсылка, мы просто выбираем нужное значение из списка. Если это Булево, устанавливаем «Да» или «Нет». Для ссылочных типов (например, справочник Статусы) потребуется выбрать конкретный предопределенный элемент, если он существует в системе.
Выясним причину, по которой пользователи часто не могут найти это свойство, как это произошло в обсуждении на форуме. Существует два основных фактора:
1. Версия платформы. Если конфигурация запущена на режиме совместимости с версиями ниже 8.3.3 (например, 8.2), данное свойство в палитре свойств просто не будет отображаться. Платформа 1С постоянно развивается, и механизмы автоматизации метаданных — одна из приоритетных зон роста.
2. Настройка палитры свойств. В конфигураторе палитра свойств может работать в разных режимах отображения. Посмотрим на верхнюю часть панели свойств: там есть кнопки фильтрации. Если включен режим «Отображать только важные», свойство ЗначениеЗаполнения может быть скрыто. Рекомендуем переключиться в режим «Все свойства» (отображение списком или по категориям без фильтрации), чтобы увидеть полный набор доступных настроек.
Проанализируем ситуацию, когда значение в колонке должно зависеть от другого реквизита. Хотя это не является прямой установкой значения «по умолчанию» в чистом виде, механизм СвязиПараметровВыбора позволяет системе автоматически подставлять значение, если оно является единственно возможным в данном контексте.
Например, если в строке табличной части выбирается Номенклатура, а следующая колонка — ЕдиницаИзмерения, при настройке связи по владельцу 1С автоматически подставит базовую единицу измерения, если это настроено в метаданных. Это позволяет избежать ручного ввода и минимизировать ошибки.
Рассмотрим ситуацию, когда документ уже создан, в нем много строк, и нам нужно массово установить значение в определенной колонке. Для этого не обязательно писать обработку на языке 1С. В типовых конфигурациях (и во многих самописных, использующих БСП) доступна стандартная обработка «Групповое изменение реквизитов».
Как это работает для табличных частей:
ЗаказПокупателя).Этот метод идеален для разовых корректировок или при изменении бизнес-логики в уже проведенных документах.
Посмотрим, как ведет себя система при копировании документов. Если мы хотим, чтобы при создании нового документа путем копирования старого значения в определенных колонках сохранялись (или, наоборот, очищались), нам поможет свойство ЗаполнятьИзЗаполняемого.
В свойствах реквизита табличной части флаг «Заполнять автоматически» (или «Заполнять из заполняемого» в зависимости от контекста) определяет, будет ли перенесено значение из документа-образца. Если мы хотим, чтобы статус всегда сбрасывался в начальный при копировании, а не наследовался от старого документа, это свойство следует настроить соответствующим образом.
Необходимо понимать границы применимости описанных методов. Рассмотрим условия, при которых без использования кода 1С:Предприятие обойтись не получится:
В таких случаях нам придется задействовать модуль объекта и процедуру ОбработкаЗаполнения. Пример простейшего кода для инициализации строки табличной части выглядит так:
Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка)
// Здесь может быть логика для шапки
КонецПроцедуры
// В модуле формы или при добавлении строки
&НаКлиенте
Процедура ТабличнаяЧастьПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока И Не Копирование Тогда
Элемент.ТекущиеДанные.Статус = ПредопределенноеЗначение("Перечисление.Статусы.Новый");
КонецЕсли;
КонецПроцедуры
Однако, как мы выяснили выше, для простых случаев установки статичного значения свойство «Значение заполнения» в метаданных является приоритетным, так как оно работает быстрее, поддерживается платформой на уровне ядра и не требует сопровождения кода при обновлении конфигурации.
Мы проанализировали способы автоматического заполнения колонок табличной части. Подведем итог: если вы используете современную платформу 8.3, всегда начинайте с проверки свойств реквизита в Конфигураторе. Использование стандартных свойств метаданных — это «хороший тон» разработки, который делает систему более прозрачной и легкой в поддержке. Совместное использование свойств заполнения и функционала группового изменения данных позволяет решать 90% задач по автоматизации ввода без написания единой строчки кода.