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