Задолженность в счете
На предыдущем примере была создана печатная форма для счета на оплату покупателю. По сути, мы воссоздали типовую печатную форму, которая уже существует в программе. В данной главе мы доработаем счет, задействуя дополнительные возможности конструктора, не затронутые в предыдущей главе.
И так, нам необходимо доработать счет следующим образом: в подвале, после подписей, необходимо вывести информацию о дебиторской задолженности контрагента. При этом, если задолженность кредиторская (или отсутствует) данный раздел не должен выводиться вовсе. Образец внешнего вида раздела с задолженностью представлен на картинке 3.13.

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

Настройка закладки “Макет” для области “Задолженность”
Текст шаблона области:
По состоянию на [ДатаОстатков] за контрагентом имеется задолженность в сумме [СуммаЗадолженности] руб., просим погасить указанную задолженность в срок до [КонецМесяца].После доработки обновим список областей, активизируем строку области “Задолженность” и если все выполнено правильно, вы должны увидеть следующее:

Область “Задолженность” и ее параметры
Закладка Запросы
Заголовок раздела «Закладка Запросы»Для получения данных о задолженности, необходимо добавить новый запрос для сбора данных из регистров бухгалтерии. Для этого необходимо:
- создать новый запрос
- Имя: Задолженность
- Тип результата: Таблица значений
- Текст запроса
ВЫБРАТЬ РАЗЛИЧНЫЕ Т.Контрагент КАК КонтрагентПОМЕСТИТЬ ВТ_КонтрагентыИЗ Документ.СчетНаОплатуПокупателю КАК ТГДЕ Т.Ссылка В(&МассивОбъектов);
////////////////////////////////////////////////////////////////////////////////ВЫБРАТЬ ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто1 КАК Справочник.Контрагенты) КАК Контрагент, ХозрасчетныйОстатки.СуммаОстаток КАК СуммаОстатокИЗ РегистрБухгалтерии.Хозрасчетный.Остатки( , Счет В (&СписокСчетов), &Контрагент, Субконто1 В (ВЫБРАТЬ Т.Контрагент ИЗ ВТ_Контрагенты КАК Т)) КАК ХозрасчетныйОстатки;
////////////////////////////////////////////////////////////////////////////////УНИЧТОЖИТЬ ВТ_КонтрагентыОбратите внимание, строка с запросом подсвечена красным цветом (есть ошибки), а под полем для ввода текста запроса указана ошибка На найдено поле данных ""Ссылка"" (см. рис. 3.16)

Результат добавления запроса “Задолженность”
Установим флажок “Это общий запрос”. Строка запроса должна стать обычным цветом, а текст ошибки пропасть.
Давайте немного подробнее посмотрим на текст запроса. Данный запрос состоит из 3-х частей:
- запрос списка уникальных контрагентов из счетов, для которых формируются печатные формы. Результат запроса помещается во временную таблицу
ВТ_Контрагенты(инструкцияПОМЕСТИТЬ ВТ_Контрагенты); - запрос остатков задолженности по контрагентам для субконто
&Контрагент, счетов указанных в параметре&СписокСчетов, а также по списку контрагентов изВТ_Контрагенты; - уничтожение таблицы
ВТ_Контрагенты. Данная операция выполняется для оптимизации хранения данных в процессе выполнения печатной формы.
Далее необходимо выполнить настройку параметров запроса (&Контрагент, &СписокСчетов):
- параметр
&Контрагент- выберем тип “Виды субконто хозрасчетные”
- в списке субконто выберем “Контрагенты”
- параметр
&СписокСчетов(программа автоматически определила что требуется указать список счетов, в табличной части мы видим установленную галочку в соответствующей колонке):- выберем счета 60.01, 60.02, 62.01, 62.02, 76.05, 76.06

Значения списка параметра &СписокСчетов
Закладка Наборы
Заголовок раздела «Закладка Наборы»Далее нам необходим набор данных “Задолженность”. Скорее всего, добавлять его не придётся: при переходе с закладки “Запросы” программа сама создаёт набор по новому запросу и заполняет поля в нём. Если набора на закладке нет, нажмите кнопку “Обновить” над табличной частью “Наборы” — программа добавит соответствующий набор и обновит поля в нем.
В результате, данные закладки “Наборы” будут выглядеть следующим образом:

Настройка закладки “наборы”
Закладка Соединения
Заголовок раздела «Закладка Соединения»Если мы попытаемся настроить соответствие параметров областей макета и доступных полей наборов, то увидим, что нам доступны только поля с итогами по набору “Задолженность”. То есть, вся задолженность, всех контрагентов. Что, по условиям задачи, нам явно не подходит.
Для того, чтобы в момент печати каждой формы, получить задолженность именно контрагента из шапки документа, необходимо выполнить соединение наборов Шапка и Задолженность. Для этого необходимо перейти на закладку “Соединения” и настроить их следующим образом:
- нажать “Добавить” > “Связь наборов”, в новой строке указать значения:
- Левая сторона: Шапка
- Правая сторона: Задолженность
- Имя соединения: Задолженность
- Вид набора: Первая строка
- нажать “Добавить” > “Связь полей”
- Левая сторона: Контрагент
- Правая сторона: Контрагент
Таким образом, мы создали следующую инструкцию:
- для каждого набора “Шапка”
- найди в наборе “Задолженность” строки где Шапка.Контрагент = Задолженность.Контрагент
- найденную Первую строку добавь в виде группы “Задолженность” в доступные поля набора “Шапка”
При этом, в дереве доступных полей мы увидим, что появилась группа “Задолженность” внутри которой есть поля из набора “Задолженность”

Пример группы “Задолженность” в полях набора “Шапка”
Закладка Макет (параметры области)
Заголовок раздела «Закладка Макет (параметры области)»После настройки соединения, можно перейти к настройке сопоставления параметров области “Задолженность” и доступных полей. Сходу понятно, что можно сопоставить параметр “СуммаЗадолженности” с полем “НаборыДанных.Шапка.Задолженность.СуммаОстаток.Сумма”. Для этого двойным кликом по колонке “Значение” в строке “СуммаЗадолженности” переходим в дерево выбора доступных полей и находим нужное поле “Шапка” > “Задолженность” > “СуммаОстаток” > “Сумма”. Не забываем настроить форматирование.
Последний сегмент пути — имя агрегата по числовой колонке вложенного набора. Макеты, сделанные до версии 2026.2.11, писали путь без него (…Задолженность.СуммаОстаток); при загрузке такие пути приводятся к новой форме автоматически.
Однако, для остальных параметров, нам потребуется написать алгоритм. Они достаточно простые:
- параметр “ДатаОстатков”:
Результат = Формат(ТекущаяДата(), "ДЛФ=DD"); - параметр “КонецМесяца”:
Результат = Формат(КонецМесяца(ТекущаяДата()), "ДЛФ=DD");
Теперь мы можем протестировать нашу печатную форму.
Закладка Макет (условие вывода)
Заголовок раздела «Закладка Макет (условие вывода)»Остался один не охваченный вопрос: как сделать так, чтобы при отсутствии задолженности область вовсе не выходила на печать? Начиная с версии 2026.2.11 программировать для этого ничего не нужно — у каждой области макета есть собственные правила вывода.
Вернёмся на закладку “Макет” и в таблице областей активизируем строку “Задолженность”. Двойной клик по первой колонке таблицы (пиктограмма
, подсказка “Есть правила вывода области”) открывает форму “Правила вывода областей”. Добавим в ней одно правило:
| Использование | Левое значение | Вид сравнения | Значение |
|---|---|---|---|
| ✓ | НаборыДанных.Шапка.Задолженность.СуммаОстаток.Сумма | Больше | 0 |
Левое значение выбирается из того же дерева доступных полей, что и значения параметров области: “Шапка” > “Задолженность” > “СуммаОстаток” > “Сумма”. Нажимаем “Записать и закрыть” — пиктограмма в первой колонке становится заполненной, это признак того, что у области есть правила.
Одного правила достаточно: остаток по счетам расчётов положителен, когда задолженность дебиторская, поэтому и кредиторская задолженность (остаток меньше нуля), и её отсутствие (ноль) условию не удовлетворяют — область пропускается.
Теперь можно проверить работу макета. Если все выполнено верно, то в случае наличия задолженности область будет видна. А если задолженности нет, то область не появится в печатной форме.
Закладка События
Заголовок раздела «Закладка События»Та же задача решается и обработчиком события — так её решали до появления правил вывода. Способ остаётся нужным, когда условие не сводится к сравнению поля набора со значением: например, оно опирается на поле свойств, нумератора или произвольного алгоритма либо требует логики “ИЛИ” (правила вывода объединяются только по “И”). Разберём его на том же примере.
Тут нам помогут события, генерируемые конструктором в процессе работы. Перейдем на закладку “События” и активизируем строку алгоритма “ПередВыводомОбласти”.
Если прочитать описание, мы узнаем что: данное событие вызывается непосредственно перед тем, как область будет выведена в печатную форму. Также мы можем отказаться от вывода области. То что нужно!
Перейдем в расширенный редактор и выполним следующие действия:
- активизируем кнопку для отображения доступных полей (
) - в доступных полях найдем поле “Шапка” > “Задолженность” > “СуммаОстаток” > “Сумма” и двойным кликом добавим его в текст алгоритма;
- допишем проверку, если
ИмяОбласти = "Задолженность" И СуммаОстаток <= 0, то отказываемся от вывода области
Полный текст алгоритма, выглядит следующим образом:
СуммаОстаток = НаборыДанных.Шапка.Задолженность.СуммаОстаток.Сумма;
Если ИмяОбласти = "Задолженность" И СуммаОстаток <= 0 Тогда Отказ = Истина;КонецЕсли;Записываем алгоритм и проверяем работу макета — результат тот же, что и с правилом вывода.
Теперь мы можем закрыть образ и перенести изменения в основной макет. Для этого в тексте предупреждения (в шапке макета) нажимаем “Закрыть образ” и соглашаемся в окне заданного вопроса с переносом всех наработок в основной макет. Нам больше не требуется делать блокировку основного макета и настраивать команды, поскольку основной макет будет заменен на доработанный. И при нажатии команды печать, пользователь увидит новую печатную форму с задолженностью.