Как добавить колонку «Полное наименование» в табличную часть документа «Реализация товаров и услуг» в 1С:УТ 10.3?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При работе в 1С:Управление торговлей 10.3 часто возникает потребность видеть в печатных формах или непосредственно в интерфейсе документа «Реализация товаров и услуг» полное наименование номенклатуры, так как обычное наименование бывает слишком кратким. Рассмотрим пошагово, как реализовать эту задачу, учитывая лучшие практики разработки.

Шаг 1: Добавление колонки на форму

Первым делом нам необходимо подготовить интерфейсную часть документа. Для этого откроем конфигуратор и выполним следующие действия:

  1. Откройте форму документа Документ.РеализацияТоваровУслуг.ФормаДокумента.
  2. Перейдите к табличному полю, в котором отображаются товары (обычно оно называется Товары).
  3. В свойствах табличного поля добавьте новую колонку. Дайте ей понятное имя, например, НоменклатураНаименованиеПолное.
  4. Установите заголовок колонки — «Полное наименование».

Шаг 2: Вывод данных через событие «ПриВыводеСтроки»

После того как колонка появилась на форме, её нужно наполнить данными. Поскольку «Полное наименование» — это реквизит справочника Номенклатура, а не самой табличной части документа, нам нужно программно заполнить ячейку при отрисовке каждой строки.

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


Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    // Указываем системе, что мы будем управлять выводом текста вручную
    ОформлениеСтроки.Ячейки.НоменклатураНаименованиеПолное.ОтображатьТекст = ИСТИНА;
    
    // Получаем полное наименование из справочника
    ОформлениеСтроки.Ячейки.НоменклатураНаименованиеПолное.Текст = ДанныеСтроки.Номенклатура.НаименованиеПолное;
КонецПроцедуры

Разберем подробнее, что здесь происходит. Свойство ОтображатьТекст = ИСТИНА является критически важным для «виртуальных» колонок, которые не привязаны к данным самой табличной части. Оно говорит платформе 1С, что ячейка не должна пытаться найти связанное поле в базе данных, а должна отобразить тот текст, который мы передадим ей программно.

Шаг 3: Важные замечания о производительности

Хотя предложенный выше метод является самым быстрым способом решения задачи, важно осознавать его влияние на производительность. Событие ПриВыводеСтроки срабатывает каждый раз, когда пользователь прокручивает список товаров. Обращение через точку, как в примере ДанныеСтроки.Номенклатура.НаименованиеПолное, заставляет систему обращаться к базе данных для каждой отрисовываемой строки.

Советы по оптимизации:

Альтернативный подход: Использование «Данных» колонки

Если вы хотите избежать написания кода в процедурах обработки вывода, можно использовать штатный механизм платформы. Если колонка жестко привязана к реквизиту, настроенному в запросе формирования табличной части, данные будут выводиться автоматически. Однако, для типовых конфигураций вроде УТ 10.3, которые используют специфические процедуры вроде РаботаСДиалогами.ПоказатьКодАртикул, добавление кода в ПриВыводеСтроки остается наиболее простым и понятным методом реализации для начинающего разработчика.

Помните: ДанныеСтроки — это объект, представляющий текущую строку табличной части. Через него вы получаете доступ ко всем полям, которые уже загружены в память при открытии документа. Обращайтесь к ним аккуратно и всегда проверяйте, не является ли ссылка Номенклатура пустой, чтобы избежать ошибок при выполнении кода.

← На главную