К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как вывести комментарии в 1С

Как вывести комментарий в 1С: в коде, печатных формах документов, отчётах и формах. Пошаговые инструкции, примеры кода, типичные ошибки и ответы на вопросы.

Под «выводом комментариев» в 1С обычно понимают три разные задачи: показать текст комментария в печатной форме документа, вывести комментарий пользователю в интерфейсе или добавить служебный комментарий в код модуля. Каждая задача решается своим способом, и путать их нельзя: комментарий в коде никогда не попадёт в печатную форму, а реквизит «Комментарий» документа не виден в отчётах без дополнительной настройки.

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

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

Какие виды комментариев существуют в 1С

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

Реквизит «Комментарий» — это строка неограниченной длины, которая сохраняется вместе с объектом. Она доступна через точку после ссылки: ДокументСсылка.Комментарий. Именно этот реквизит чаще всего требуется вывести в печатную форму или отчёт.

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

Как вывести комментарий в печатную форму документа

Самая частая задача — чтобы текст из поля «Комментарий» печатался в счёте, акте или накладной. Для этого потребуется режим конфигуратора и права на изменение конфигурации (или создание внешней печатной формы, если конфигурация на поддержке без изменений).

Общий порядок такой: откройте макет печатной формы (обычно он находится в ветке «Макеты» нужного документа или в общих макетах), добавьте в нужную область новый параметр, например {Комментарий}, а затем в модуле, где формируется табличный документ, присвойте этому параметру значение реквизита.

Порядок действий для печатной формы
  1. 1
    Откройте конфигуратор и найдите макет печатной формы документа
  2. 2
    В нужной области макета добавьте строку с параметром {Комментарий} и установите у ячейки свойство «Заполнение» = «Параметр»
  3. 3
    В модуле менеджера или объекта найдите процедуру формирования печатной формы
  4. 4
    Добавьте строку заполнения параметра из реквизита документа
  5. 5
    Сохраните конфигурацию, обновите базу и сформируйте печатную форму для проверки

Пример кода заполнения параметра в процедуре печати:

ОбластьКомментарий = Макет.ПолучитьОбласть("Комментарий");

ОбластьКомментарий.Параметры.Комментарий = СсылкаНаДокумент.Комментарий;

ТабличныйДокумент.Вывести(ОбластьКомментарий);

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

Как вывести комментарий в отчёт или список документов

В отчётах на СКД (системе компоновки данных) комментарий выводится проще всего: он доступен как обычное поле. Откройте схему компоновки отчёта, в наборе данных добавьте поле Комментарий в запрос выборки, затем перетащите его в структуру отчёта на закладке «Настройки». Никакого кода для этого не требуется.

В форме списка документов комментарий по умолчанию обычно скрыт. Чтобы показать его, откройте форму списка в конфигураторе, найдите таблицу «Список» и добавьте колонку с путём к данным Список.Комментарий. В пользовательском режиме во многих конфигурациях то же самое делает команда «Изменить форму» — там можно включить отображение нужного поля без конфигуратора.

Если комментарий нужен в динамическом списке с произвольным запросом, убедитесь, что поле включено в текст запроса списка. Без этого колонка будет пустой, даже если она добавлена в форму.

Как вывести сообщение пользователю программно

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

// Простой вариант

Сообщить("Документ не проведён: не заполнен склад");

// Рекомендуемый вариант

Сообщение = Новый СообщениеПользователю;

Сообщение.Текст = "Не заполнено поле ""Склад""";

Сообщение.Поле = "Объект.Склад";

Сообщение.УстановитьДанные(Объект);

Сообщение.Сообщить();

Сообщения выводятся в панель сообщений в нижней части окна. Если панель скрыта, пользователь увидит индикатор и сможет открыть её кликом. Учтите: при массовой обработке документов большое количество сообщений замедляет работу и переполняет панель, поэтому в циклах выводите только значимые ошибки.

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

Как оформлять комментарии в коде модуля

Комментарии в коде нужны самим разработчикам и тем, кто будет сопровождать конфигурацию. Строка или её часть после двойного слэша // полностью игнорируется платформой. Многострочных комментариев в языке 1С нет — каждую строку нужно начинать слэшами отдельно.

// Рассчитываем скидку по накопительной программе

СуммаСкидки = СуммаДокумента * ПроцентСкидки / 100; // скидка не более 30%

Хорошая практика — комментировать назначение процедур и неочевидную логику, а не каждую строку. Для быстрого комментирования выделенного блока кода в конфигураторе используйте сочетание Ctrl + / (или кнопку «Добавить комментарий» на панели «Текст»), для снятия — соответствующую команду рядом.

Типичные ошибки при выводе комментариев

Типичные ошибки
01
В макете добавлен параметр, но в коде он не заполняется — на печати выводится пустая строка или текст {Комментарий}. Проверьте совпадение имени параметра в макете и в коде с точностью до регистра
02
Поле «Комментарий» добавлено в форму списка, но не включено в запрос динамического списка — колонка отображается пустой
03
Использование Сообщить() внутри длинного цикла — панель сообщений переполняется, интерфейс подвисает
04
Изменение типового макета без резервной копии — при обновлении конфигурации правки теряются
05
Ожидание, что комментарий из кода (//) увидит пользователь — служебные комментарии не выводятся в интерфейс никакими штатными средствами

Как проверить, что комментарий выводится правильно

После настройки обязательно проверьте результат на тестовых данных. Заполните поле «Комментарий» в документе текстом разной длины, включая длинный текст в несколько строк, и сформируйте печатную форму или отчёт.

Контрольные точки

Как проверить результат

Печатная форма документа
Норма

Текст комментария выведен полностью, переносится по строкам, не обрезан

Тревожный признак

Пустая строка, текст {Комментарий} или обрезанный по границе ячейки текст

Отчёт на СКД
Норма

Колонка «Комментарий» заполнена для документов, где поле заполнено

Тревожный признак

Колонка пустая для всех строк — поле не добавлено в запрос набора данных

Сообщение пользователю
Норма

Текст появился в панели сообщений и привязан к нужному полю формы

Тревожный признак

Сообщений нет — проверьте, что вызван метод Сообщить() и код вообще выполняется

Если комментарий не выводится, проверяйте цепочку по шагам: заполнен ли реквизит в самом документе, есть ли параметр в макете, совпадает ли имя параметра в коде, выводится ли вообще нужная область макета. Чаще всего проблема в несовпадении имён или в том, что область с комментарием просто не выводится в табличный документ.

Итог

Что важно запомнить

Комментарий документа — это реквизит, который выводится в макет через параметр и в отчёт через поле СКД. Сообщения пользователю выводятся объектом СообщениеПользователю. Комментарии в коде (//) видны только разработчику. Перед изменением типовых макетов делайте копию базы или используйте внешние печатные формы.

Часто задаваемые вопросы

Почему в печатной форме вместо комментария выводится текст {Комментарий}?

Это значит, что параметр есть в макете, но ему не присвоено значение в коде. Найдите в модуле формирования печатной формы место, где заполняются параметры области, и добавьте строку присваивания. Также проверьте, что у ячейки макета свойство «Заполнение» установлено в «Параметр», а не «Шаблон» или «Текст».

Можно ли вывести комментарий в печатную форму без конфигуратора?

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

Как вывести комментарии к строкам табличной части, а не к документу целиком?

Если в табличной части есть свой реквизит «Комментарий» (или аналогичный), его нужно добавить в область макета, которая выводится в цикле по строкам. В коде обращение будет вида СтрокаТаблицы.Комментарий внутри цикла обхода табличной части.

Почему пользователь не видит сообщения, выведенные через Сообщить()?

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

Как быстро закомментировать большой блок кода в конфигураторе?

Выделите нужные строки и нажмите Ctrl + / либо используйте команду «Блок комментариев — добавить» в меню «Текст». Снятие комментария выполняется аналогичной командой рядом. Это быстрее и надёжнее ручной расстановки слэшей.

Ограничена ли длина комментария в документе?

Стандартный реквизит «Комментарий» обычно имеет неограниченную длину строки, поэтому вместит практически любой текст. Ограничения возникают на стороне печатной формы: если ячейка макета не настроена на перенос и автоподбор высоты, длинный текст визуально обрежется, хотя в базе он сохранён полностью.