Как добавить комментарии к позициям товаров в счете на оплату в 1С:Бухгалтерия 3.0

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

В типовой конфигурации «1С:Бухгалтерия предприятия 3.0» (БП 3.0) при заполнении документа «Счет на оплату покупателю» пользователи часто сталкиваются с ограничением: для услуг предусмотрено поле «Содержание», куда можно вписать произвольный текст, а для товаров (номенклатуры с типом «Запас») это поле по умолчанию скрыто. Это создает неудобства, когда необходимо уточнить характеристики конкретной партии, указать особенности комплектации или добавить произвольное примечание к строке товара.

В данной статье мы подробно разберем, как реализовать возможность добавления комментариев к позициям номенклатуры, проанализируем стандартные механизмы системы и выберем наиболее оптимальные способы доработки программного продукта без снятия конфигурации с поддержки.

Анализ стандартного поведения системы

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

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

Способ 1. Использование расширения конфигурации (Рекомендуемый)

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

Шаг 1: Работа с формой документа. Нам необходимо перехватить процедуру управления видимостью колонок. В расширении мы создадим обработчик, который сделает колонку Содержание видимой всегда, независимо от типа номенклатуры.

Проанализируем программный код, который нужно добавить в модуль формы документа через расширение:


&НаСервере
&ИзменениеИКонтроль("УстановитьВидимостьСодержания")
Процедура Расш1_УстановитьВидимостьСодержания()
    // В типовой конфигурации здесь стоит условие: 
    // Элементы.ТоварыСодержание.Видимость = ЕстьУслуги;
    
    // Мы принудительно включаем видимость для всех типов строк
    Элементы.ТоварыСодержание.Видимость = Истина;
КонецПроцедуры

Шаг 2: Предотвращение перезаписи поля. В типовой БП 3.0 при выборе номенклатуры в поле Содержание автоматически записывается полное наименование услуги. Для товаров нам нужно либо разрешить ручной ввод, либо сделать так, чтобы система не затирала уже введенный комментарий. Для этого проанализируем событие ТоварыНоменклатураПриИзменении и при необходимости подкорректируем его поведение в расширении.

Способ 2. Внешняя печатная форма (ВПФ)

Если ваша задача заключается только в том, чтобы комментарий выводился на печать, а в экранной форме вы готовы использовать стандартные поля (например, вписывать комментарий прямо в «Наименование для печати» в карточке товара, что не всегда удобно), то можно обойтись созданием ВПФ.

Однако более изящный вариант — это когда ВПФ «умеет» считывать данные из скрытого поля Содержание. Рассмотрим алгоритм работы такой печатной формы:

  1. Программа обращается к табличной части Товары документа-объекта.
  2. В макете печатной формы создается дополнительная область или расширяется текущая область строки.
  3. При выводе строки проверяется заполненность поля Содержание. Если оно заполнено и отличается от краткого наименования номенклатуры, этот текст выводится отдельной строкой под основным названием или в этой же колонке.

Пример фрагмента кода для вывода текста в ВПФ:


// В обработке печати при переборе строк табличной части
ТекстНаименования = ДанныеСтроки.Номенклатура.НаименованиеПолное;
Если ЗначениеЗаполнено(ДанныеСтроки.Содержание) Тогда
    // Добавляем содержание к наименованию, если оно не дублирует его
    ТекстНаименования = ТекстНаименования + Символы.ПС + ДанныеСтроки.Содержание;
КонецЕсли;
ОбластьМакета.Параметры.ТоварНаименование = ТекстНаименования;

Способ 3. Метод «Пустой услуги» (Без программирования)

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

Пользователи часто применяют следующий прием: под строкой с основным товаром добавляется новая строка. В качестве номенклатуры выбирается служебный элемент с типом «Услуга» (например, с названием «Дополнительная информация»). У этой строки устанавливается нулевая цена и количество. В поле Содержание пишется необходимый комментарий. В печатной форме счета это будет выглядеть как дополнительная текстовая строка.

Важный нюанс: Этот метод имеет существенный минус — он «засоряет» информационную базу фиктивными строками, что может привести к ошибкам при выгрузке данных в системы складского учета (1С:УТ) или при анализе продаж.

Технические нюансы и риски при использовании ЭДО

Проанализируем ситуацию с Электронным документооборотом (ЭДО). Это критически важный момент, так как Счет на оплату часто передается контрагенту в электронном виде через операторов ЭДО.

Если вы добавите новое произвольное поле (реквизит табличной части) через расширение, оно не попадет в стандартный XML-файл электронного документа. Формат электронного счета строго регламентирован ФНС. Однако поле Содержание (оно же Наименование в терминах XML-счета) является стандартным. Поэтому использование именно типового поля Содержание, которое мы просто «открыли» для товаров, является наиболее правильным с точки зрения совместимости с ЭДО.

Итоги и рекомендации

Подведем итог нашему исследованию. Для реализации комментариев к позициям счета в «1С:Бухгалтерия 3.0» лучше всего придерживаться следующего алгоритма:

  1. Создаем расширение конфигурации.
  2. В расширении через механизм &ИзменениеИКонтроль или &После меняем процедуру управления видимостью колонок формы (УстановитьВидимостьСодержания), чтобы поле Содержание стало доступно для редактирования в строках с товарами.
  3. Если типовая печатная форма счета по-прежнему не выводит содержание для товаров (в некоторых релизах БП это зашито в логику макета), создаем внешнюю печатную форму или модифицируем макет через то же расширение.

Такой подход гарантирует сохранность данных при обновлениях, корректную работу с электронными документами и удобство работы пользователя без необходимости плодить лишние элементы в справочнике номенклатуры.

← На главную