// Проверим возможность вывода табличного документа
СтрокаСПодвалом = Новый Массив;
СтрокаСПодвалом.Добавить(ОбластьМакета);
Если НомерСтроки = КоличествоСтрок Тогда
СтрокаСПодвалом.Добавить(ОбластьМакетаИтого);
СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал);
Если ЭтоПечатьУПД Тогда
СтрокаСПодвалом.Добавить(ОбластьМакетаПодвалНакладной);
КонецЕсли;
КонецЕсли;
Если НЕ ТабДокумент.ПроверитьВывод(СтрокаСПодвалом) Тогда
Если КоличествоСтрок > 0 Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
КоличествоСтраниц = КоличествоСтраниц + 1;
КонецЕсли;
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
Алгоритм работает как надо если строка товара не переносится на следующую, в противном случае
функция ТабДокумент.ПроверитьВывод(СтрокаСПодвалом) показывает истину, НО после кода ТабДокумент.Вывести(ОбластьМакета); в отладчике рез. функции = ложь.
Так после вывода ОбластьМакета ТабДокумент увеличивается на область макета, конечно результат будет другой при других исходных данных.
Или я не поняла или попытайтесь переформулировать проблему.
я бы вынес СтрокаСПодвалом = Новый Массив;
перед циклом, а при обходе выборки сделал бы
СтрокаСПодвалом.Очистить()перед добавлением в него Областей
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший