ПроверитьВывод() Проблема разделения по страницам.
Доброго времени суток господа программисты.
Стоит задача: Для экономии места на листе А4. Организовать печать в следующем исполнениии.
Сначала формируется «заголовок», «таблица», «подвал» (микро-таблица), потом проверяется а эта микро-таблица помещается по вертикали втабличный документ(мини-таблица), если помещается тогда мы присоединяем к ней еще одну микро -таблицу и проверяем а помещается ли теперь ……..
И так до тех пор пока она не поместится, если не помещается мы воводим эту мини-таблицу (состоящую из нескольких микро -таблиц) на лист, (было бы все просто если нам нужно было просто поместить на лист и все, но на лист нужно присоеденить еще одну мини-таблицу (состоящую из еще одного соединения микро-таблиц).
И вот когда у нас на листе будет 2 мини-таблицы прикрепленные друг к другу и состоящие из нескольких микро-таблиц, тогда мы должны проверить а помещается ли 3я мини-таблица на лист, если не помещается мы должна создать новый лист и начать все заново.
Короче можете не пытаться осмыслить. Я постараюсь нарисовать как должно быть
………Заголовок……… ……Заголовок………
/////Строка///// /////Строка/////
//// Строка ///// ***Подвал*****
//// Строка ///// ………Заголовок………
***Подвал***** /////Строка/////
………Заголовок……… /////Строка/////
/////Строка///// /////Строка/////
//// Строка ///// /////Строка/////
***Подвал***** //// Строка /////
………Заголовок……… ***Подвал*****
/////Строка///// ………Заголовок………
//// Строка ///// //// Строка /////
//// Строка ///// ***Подвал*****
//// Строка /////
***Подвал*****
==========НОВАЯ СТРАНИЦА===========
………Заголовок……… ……Заголовок………
/////Строка///// /////Строка/////
//// Строка ///// ***Подвал*****
//// Строка ///// ………Заголовок………
***Подвал***** /////Строка/////
………Заголовок……… /////Строка/////
/////Строка///// /////Строка/////
//// Строка ///// /////Строка/////
***Подвал***** //// Строка /////
………Заголовок……… ***Подвал*****
/////Строка///// ………Заголовок………
//// Строка ///// //// Строка /////
//// Строка ///// ***Подвал*****
//// Строка /////
***Подвал*****
У меня почти все получилось, кроме параметров печати. У меня почему то при первой проверки на вертикальное положение, система считает что еще можно 2 строчки поместить, а на самом деле при выводе на печать их переносит на новую страницу, у меня есть подозрение, что ИмяПараметровПечати не чего не значит, в случае если параметры печати используются для другой таблицы.
Ниже приведен мною написанный листинг, надеюсь на любую помощь. Заранее спаисбо за внимание.
Я удалил из кода расчеты, оставил только места где я реально работаю с табличными документами
В результате несколько строк переносятся на новую страницу, вот я выкладываю файл как получается.
Причем, я сейчас заметил, что пока я в режиме просмотра табличного документа, все впорядке разделители там где нужно, а когда вывожу на печать, тогда эти разывы на 2 - 5 строчек выше. :(
Стоит задача: Для экономии места на листе А4. Организовать печать в следующем исполнениии.
Сначала формируется «заголовок», «таблица», «подвал» (микро-таблица), потом проверяется а эта микро-таблица помещается по вертикали втабличный документ(мини-таблица), если помещается тогда мы присоединяем к ней еще одну микро -таблицу и проверяем а помещается ли теперь ……..
И так до тех пор пока она не поместится, если не помещается мы воводим эту мини-таблицу (состоящую из нескольких микро -таблиц) на лист, (было бы все просто если нам нужно было просто поместить на лист и все, но на лист нужно присоеденить еще одну мини-таблицу (состоящую из еще одного соединения микро-таблиц).
И вот когда у нас на листе будет 2 мини-таблицы прикрепленные друг к другу и состоящие из нескольких микро-таблиц, тогда мы должны проверить а помещается ли 3я мини-таблица на лист, если не помещается мы должна создать новый лист и начать все заново.
Короче можете не пытаться осмыслить. Я постараюсь нарисовать как должно быть
………Заголовок……… ……Заголовок………
/////Строка///// /////Строка/////
//// Строка ///// ***Подвал*****
//// Строка ///// ………Заголовок………
***Подвал***** /////Строка/////
………Заголовок……… /////Строка/////
/////Строка///// /////Строка/////
//// Строка ///// /////Строка/////
***Подвал***** //// Строка /////
………Заголовок……… ***Подвал*****
/////Строка///// ………Заголовок………
//// Строка ///// //// Строка /////
//// Строка ///// ***Подвал*****
//// Строка /////
***Подвал*****
==========НОВАЯ СТРАНИЦА===========
………Заголовок……… ……Заголовок………
/////Строка///// /////Строка/////
//// Строка ///// ***Подвал*****
//// Строка ///// ………Заголовок………
***Подвал***** /////Строка/////
………Заголовок……… /////Строка/////
/////Строка///// /////Строка/////
//// Строка ///// /////Строка/////
***Подвал***** //// Строка /////
………Заголовок……… ***Подвал*****
/////Строка///// ………Заголовок………
//// Строка ///// //// Строка /////
//// Строка ///// ***Подвал*****
//// Строка /////
***Подвал*****
У меня почти все получилось, кроме параметров печати. У меня почему то при первой проверки на вертикальное положение, система считает что еще можно 2 строчки поместить, а на самом деле при выводе на печать их переносит на новую страницу, у меня есть подозрение, что ИмяПараметровПечати не чего не значит, в случае если параметры печати используются для другой таблицы.
Ниже приведен мною написанный листинг, надеюсь на любую помощь. Заранее спаисбо за внимание.
Процедура СформироватьМакет (ТаблицаОстатков, ИтоговаяТаблица, общТаблицаОтгрузок, общТаблицаПриемок, ДатаОкончания, ДатаНачала, НаДату = Истина) Экспорт
Макет = Обработки.прОборотыТоваров.ПолучитьМакет("Макет");
Заголовок = Макет.ПолучитьОбласть("Заголовок");
СтрокаТаблицы = Макет.ПолучитьОбласть("Строчка");
Подвал = Макет.ПолучитьОбласть("Подвал");
ИтоговыйТабличныйДокумент = Новый ТабличныйДокумент;
ЗаполненнаяСтраница = Новый ТабличныйДокумент;
ВыводимыйТабличныйДокумент = Новый ТабличныйДокумент;
ВыводимыйТабличныйДокумент.ИмяПараметровПечати = ПараметрыПечати_ОборотныйОтчет";
ИтоговыйТабличныйДокумент.ИмяПараметровПечати = ВыводимыйТабличныйДокумент.ИмяПараметровПечати;
ЗаполненнаяСтраница.ИмяПараметровПечати = ВыводимыйТабличныйДокумент.ИмяПараметровПечати;
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = ВыводимыйТабличныйДокумент.ИмяПараметровПечати;
Заголовок.Параметры.Номенклатура = Строка(СтрокаОстаток.Номенклатура);
Заголовок.Параметры.Дата = ?(НаДату, Строка("На " + Формат(ДатаНачала, "ДЛФ=Д")),
ТабДокумент.Вывести(Заголовок);
СтрокаТаблицы.Параметры.НомерЗаявки = Строка.НомерЗаявки;
СтрокаТаблицы.Параметры.Контрагент = Строка.Контрагент;
СтрокаТаблицы.Параметры.КоличествоПриход = Строка.Приход_;
СтрокаТаблицы.Параметры.КоличествоРасход = Строка.Расход_;
ТабДокумент.Вывести(СтрокаТаблицы);
Подвал.Параметры.Итог = Строка("Начал.: " + ОстатокНаНачалоПериода
+ " Приход: " + ПриходЗаПериод
+ " Расход: " + РасходЗаПериод
+ " Конеч.: " + ОстатокНаКонецПериода);
ТабДокумент.Вывести(Подвал);
Если ИтоговыйТабличныйДокумент.ПроверитьВывод(ТабДокумент) Тогда
ИтоговыйТабличныйДокумент.Вывести(ТабДокумент);
Иначе
Если ЗаполненнаяСтраница.ПроверитьПрисоединение(ИтоговыйТабличныйДокумент) Тогда
ЗаполненнаяСтраница.Присоединить(ИтоговыйТабличныйДокумент);
Иначе
ВыводимыйТабличныйДокумент.Вывести(ЗаполненнаяСтраница);
ВыводимыйТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ЗаполненнаяСтраница = Новый ТабличныйДокумент;
ЗаполненнаяСтраница.ИмяПараметровПечати = ВыводимыйТабличныйДокумент.ИмяПараметровПечати;
ЗаполненнаяСтраница.Присоединить(ИтоговыйТабличныйДокумент);
КонецЕсли;
ИтоговыйТабличныйДокумент = Новый ТабличныйДокумент;
ИтоговыйТабличныйДокумент.ИмяПараметровПечати = ВыводимыйТабличныйДокумент.ИмяПараметровПечати;
ИтоговыйТабличныйДокумент.Вывести(ТабДокумент);
КонецЕсли;
КонецЦикла;
КонецЕсли;
ВыводимыйТабличныйДокумент.Показать();
ПоказатьЯ удалил из кода расчеты, оставил только места где я реально работаю с табличными документами
В результате несколько строк переносятся на новую страницу, вот я выкладываю файл как получается.
Причем, я сейчас заметил, что пока я в режиме просмотра табличного документа, все впорядке разделители там где нужно, а когда вывожу на печать, тогда эти разывы на 2 - 5 строчек выше. :(
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Поднимаю тему :)
Использую функцию ПроверитьВывод() предварительно добавив в массив необходимые области.
Но при выводе на печать, видно что на одном из листов не получается правильный разделить по страницам.
Возможно проблема в том что я делаю объединение ячеек. Выкладываю проверку на вывод.
Если Не ТабДокумент.ПроверитьВывод(СтрокаМассив) Тогда
Колонка = Новый Массив;
Колонка.Добавить(2);Колонка.Добавить(3);Колонка.Добавить(4);
ИмяОбласти = "Строка2"; ///выше определены координаты (Обл.Верх) Области "Строка1"
Обл = ТабДокумент.Область(ИмяОбласти);
Низ = Обл.Низ;
Если Верх > Обл.Низ Тогда
Низ = Верх;
КонецЕсли;
Для Каждого Стр Из Колонка Цикл
Обл = ТабДокумент.Область(ИмяОбласти);
НужнаяОбласть = ТабДокумент.Область(Верх, Стр, Низ, Стр);
НужнаяОбласть.Объединить();
ТабДокумент.Область(Верх, Стр, Низ, Стр).ВертикальноеПоложение = ВертикальноеПоложение.Центр;
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
НужнаяОбласть.Обвести(Линия, Линия, Линия, Линия);
КонецЦикла;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ВторойЛист);
КонецЕсли;
Использую функцию ПроверитьВывод() предварительно добавив в массив необходимые области.
Но при выводе на печать, видно что на одном из листов не получается правильный разделить по страницам.
Возможно проблема в том что я делаю объединение ячеек. Выкладываю проверку на вывод.
Если Не ТабДокумент.ПроверитьВывод(СтрокаМассив) Тогда
Колонка = Новый Массив;
Колонка.Добавить(2);Колонка.Добавить(3);Колонка.Добавить(4);
ИмяОбласти = "Строка2"; ///выше определены координаты (Обл.Верх) Области "Строка1"
Обл = ТабДокумент.Область(ИмяОбласти);
Низ = Обл.Низ;
Если Верх > Обл.Низ Тогда
Низ = Верх;
КонецЕсли;
Для Каждого Стр Из Колонка Цикл
Обл = ТабДокумент.Область(ИмяОбласти);
НужнаяОбласть = ТабДокумент.Область(Верх, Стр, Низ, Стр);
НужнаяОбласть.Объединить();
ТабДокумент.Область(Верх, Стр, Низ, Стр).ВертикальноеПоложение = ВертикальноеПоложение.Центр;
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
НужнаяОбласть.Обвести(Линия, Линия, Линия, Линия);
КонецЦикла;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ВторойЛист);
КонецЕсли;
Такая ситуация еще имеет место, в случае, когда при печати вы устанавливаете ручками автомасштаб.
Тогда, что бы корректно выводило, нужно
устанавливать до проверки на вывод.
Тогда, что бы корректно выводило, нужно
ТабДок.АвтоМасштаб = Истина;
устанавливать до проверки на вывод.
Сталкивался с данной проблемой: динамически меняются число строк/столбцов (высота/ширина таблицы, автомасштаб). IMHO, "ПроверитьВывод" проверяет исходя из размера исходного макета.
Подогнал макет по ширине - все работает как задумано. Добавляется столбец - автомасштаб сжимает - снизу пустое место. Второе, в макете высота ячейки подгоняется под автоперенос строк - на выходе за границы на второй лист. В общем, побороть не удалось, или ставлю разделитель листов програмно, или подгоняю макет под 100% ширины без автомасштаба, фиксирую высоту строк таблицы.
Есть еще возможность пихать шапку и итоги таблицы в колонтитулы (отдельный документ-лист под титул, отдельно многостраничная таблица, отдельно итоги и подписи. Много гимора и коряво.
PS. В типовых Комплексной, Торговле в ведомостях инвентаризации аналогичноая проблема - без автомасштаба красиво по высоте, но несколько листов вширь, или заполнено только треть листа сверху. т.к. 1с сей трабл не решила (так же использует "ПроверитьВывод" :) то приходится подстраиваться "as is", иными словами, нерешаемо.
Подогнал макет по ширине - все работает как задумано. Добавляется столбец - автомасштаб сжимает - снизу пустое место. Второе, в макете высота ячейки подгоняется под автоперенос строк - на выходе за границы на второй лист. В общем, побороть не удалось, или ставлю разделитель листов програмно, или подгоняю макет под 100% ширины без автомасштаба, фиксирую высоту строк таблицы.
Есть еще возможность пихать шапку и итоги таблицы в колонтитулы (отдельный документ-лист под титул, отдельно многостраничная таблица, отдельно итоги и подписи. Много гимора и коряво.
PS. В типовых Комплексной, Торговле в ведомостях инвентаризации аналогичноая проблема - без автомасштаба красиво по высоте, но несколько листов вширь, или заполнено только треть листа сверху. т.к. 1с сей трабл не решила (так же использует "ПроверитьВывод" :) то приходится подстраиваться "as is", иными словами, нерешаемо.
Может кто поможет!? У меня вот такая ситуация
Почему то когда делаю ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
то у меня вроде в макете делает все хорошл, а на печать выходит одно пустая страница.
То есть первая страница нормальная как положена с итогами по странице, вторая страница Пустая, а третья тоже нормальная с итогами по странице и по документу, и нумерация страниц правильная. Не могу совладать с ненужной пустой страницей.
Процедура МХ1_ПолучитьОблатьСтрока(ТабДок, Макет, ВыгружаемыйДокумент)
//ОблМакетаШапкаПервойСтраницы = Макет.ПолучитьОбласть("ШапкаПервойСтраницы");
ОблМакетаШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОблМакетаСтрока = Макет.ПолучитьОбласть("Строка");
ОблМакетаИтого = Макет.ПолучитьОбласть("Итого");
ОблМакетаПодвал = Макет.ПолучитьОбласть("ПодвалРаботыУслуги");
ОблСтраница2 = Макет.ПолучитьОбласть("Страница2");
ТабДок.Вывести(ОблМакетаШапкаТаблицы);
МассивОбластей = новый Массив;
СтраницаНомер = 1;
СтоимостьПоСтранице = 0;
ИтогоКоличествоНаСтранице = 0;
ИтогоКоличество = 0;
ЭтоПервая = Истина;
Для Каждого Стр ИЗ ВыгружаемыйДокумент.Комплектация Цикл
//МассивОбластей.Добавить(ОблМакетаПодвал);
МассивОбластей.Очистить();
МассивОбластей.Добавить(ОблМакетаСтрока);
МассивОбластей.Добавить(ОблМакетаИтого);
//МассивОбластей.Добавить(ОблМакетаПодвал);
Если Не ТабДок.ПроверитьВывод(ТабДок) Тогда
ОблМакетаИтого.Параметры.КоличествоПоСтранице = Формат(ИтогоКоличествоНаСтранице, "ЧДЦ=2");
ОблМакетаИтого.Параметры.СтоимостьПоСтранице = Формат(СтоимостьПоСтранице, "ЧДЦ=2");
ОблМакетаИтого.Параметры.НомерСтраницы = "Страница: " + СтраницаНомер;
ТабДок.Вывести(ОблМакетаИтого);
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
ТабДок.Вывести(ОблСтраница2);
ТабДок.Вывести(ОблМакетаШапкаТаблицы);
СтраницаНомер = СтраницаНомер + 1;
КонецЕсли;
ТолщинаОбода = ПолучитьДополнительнуюИнформацию(Стр.Номенклатура,"Дополнительные свойства");
НомерЗавода = ПолучитьДополнительнуюИнформацию(Стр.Номенклатура,"Номер завода изготовителя");
ГодИзготовления = ПолучитьДополнительнуюИнформацию(Стр.Номенклатура,"Год изготовления");
ОблМакетаСтрока.Параметры.НомерСтроки = Стр.НомерСтроки;
//ОблМакетаСтрока.Параметры.ТоварНаименование = ""+Стр.Номенклатура + "," + ?(ПустаяСтрока(ТолщинаОбода),""," доп. св-ва. " +ТолщинаОбода)
// + ?(НомерЗавода=0,"",", "+ НомерЗавода)
// + ?(ГодИзготовления=0,"",", "+Формат(ГодИзготовления,"ЧГ=0") +" г.п.");// + ?(ПустаяСтрока(Стр.ТолщинаОбода),""," толщина обода " + Стр.ТолщинаОбода);
//ОблМакетаСтрока.Параметры.ТоварКод = Стр.Номенклатура.Артикул;
ОблМакетаСтрока.Параметры.ТоварНаименование = КРОН_ОбщегоНазначения.ПолучитьНаименованиеДляПечатныхФорм(Стр.Номенклатура);
ОблМакетаСтрока.Параметры.ЕдиницаИзмеренияНаименование = Стр.Номенклатура.БазоваяЕдиницаИзмерения;
ОблМакетаСтрока.Параметры.Характеристика ="" + НомерЗавода + "-" + Стр.НомерДетали + "-" + ГодИзготовления;
ОблМакетаСтрока.Параметры.ЕдиницаИзмеренияКодПоОКЕИ = Стр.Номенклатура.БазоваяЕдиницаИзмерения.Код;
ОблМакетаСтрока.Параметры.Количество = Стр.Количество;
ОблМакетаСтрока.Параметры.Цена = Формат(Стр.Цена,"ЧДЦ=2");
ОблМакетаСтрока.Параметры.Стоимость = Формат(Стр.Сумма,"ЧДЦ=2");
ИтогоКоличествоНаСтранице = ИтогоКоличествоНаСтранице + Стр.Количество;
ИтогоКоличество = ИтогоКоличество + Стр.Количество;
СтоимостьПоСтранице = СтоимостьПоСтранице + Стр.Сумма;
ТабДок.Вывести(ОблМакетаСтрока);
КонецЦикла;
ОблМакетаИтого.Параметры.КоличествоПоСтранице = Формат(ИтогоКоличествоНаСтранице, "ЧДЦ=2");
ОблМакетаИтого.Параметры.СтоимостьПоСтранице = Формат(СтоимостьПоСтранице, "ЧДЦ=2");
ОблМакетаИтого.Параметры.НомерСтраницы = "Страница: " + СтраницаНомер;
ТабДок.Вывести(ОблМакетаИтого);
Область = Макет.ПолучитьОбласть("Итого2");
Область.Параметры.ИтогоКоличество = Формат(ИтогоКоличество, "ЧДЦ=2");;
Область.Параметры.СтоимостьИтог = ВыгружаемыйДокумент.Комплектация.Итог("Сумма");
ТабДок.Вывести(Область);
КонецПроцедуры
ПоказатьПочему то когда делаю ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
то у меня вроде в макете делает все хорошл, а на печать выходит одно пустая страница.
То есть первая страница нормальная как положена с итогами по странице, вторая страница Пустая, а третья тоже нормальная с итогами по странице и по документу, и нумерация страниц правильная. Не могу совладать с ненужной пустой страницей.
(16) bmk74, ой не успел исправить
Метод я понимаю и делал его уже не раз.
в грубой форме, заполняю области и проверяю влезет ли у меня на страницу еще одна строка и итог по странице, если не выходит, то значит сразу вывожу итог по странице и ставлю разделитель страницы. Далее на новом листе продолжаю все это, но проблема в том что поле ВывестиГоризонтальныйРазделительСтраниц() у меня каким то образом после разделителя, у меня вылазит пустой лист.
ТабДок.ПроверитьВывод(МассивОбластей)
Метод я понимаю и делал его уже не раз.
в грубой форме, заполняю области и проверяю влезет ли у меня на страницу еще одна строка и итог по странице, если не выходит, то значит сразу вывожу итог по странице и ставлю разделитель страницы. Далее на новом листе продолжаю все это, но проблема в том что поле ВывестиГоризонтальныйРазделительСтраниц() у меня каким то образом после разделителя, у меня вылазит пустой лист.
Блин вот не могу понять, у меня есть антологичный код
который я делал и каторый работает исправно, что я сейчас не могу сделать не понимаю.
А из за макета может быть?
Для Каждого Стр ИЗ ВыгружаемыйДокумент.Состав Цикл
Если Стр.Количество=0 Тогда
Продолжить;
КонецЕсли;
МассивОблостей.Очистить();
МассивОблостей.Добавить(ОблМакетаСтрока);
МассивОблостей.Добавить(ОблМакетаИтогоСтр);
Если Не ТабДок.ПроверитьВывод(МассивОблостей) Тогда
ОблМакетаИтогоСтр.Параметры.ИтогоКоличествоНаСтранице = ИтогоКоличествоНаСтранице;
ОблМакетаИтогоСтр.Параметры.Сумма = Стоимость;
ТабДок.Вывести(ОблМакетаИтогоСтр);
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
ТабДок.Вывести(ОблМакетаШапкаТаблицы);
ИтогоКоличествоНаСтранице = 0;
Стоимость = 0;
///Сообщить(СтраницаНомер);
СтраницаНомер = СтраницаНомер + 1;
КонецЕсли;
ТолщинаОбода = КРОН_ОбщегоНазначения.ПолучитьДополнительныеСвойства(Стр.Номенклатура,"Дополнительные свойства");
НомерЗавода = КРОН_ОбщегоНазначения.ПолучитьДополнительныеСвойства(Стр.Номенклатура,"Номер завода изготовителя");
ГодИзготовления = КРОН_ОбщегоНазначения.ПолучитьДополнительныеСвойства(Стр.Номенклатура,"Год изготовления");
Показатькоторый я делал и каторый работает исправно, что я сейчас не могу сделать не понимаю.
А из за макета может быть?
(23)Сначала области заполните параметрами. потом в массив их добавляйте, так как могут быть переносы строк при заполнении параметров и область увеличится может, а вы проверку на пустую область делаете, и у вас получается что вы вставляете разрыв и автоматом еще и сама система вставляет разрыв, отсюда и пустая страница..как вариант попробуйте настройки ТабДока поиграть, Автомасштаб главное уберите, и для проверки попробуйте в массив допустим еще область добавить, ну например туже строку еще один раз....и помотреть на результат.
Блин, не чего не получается. Я тут поделал макет, поправил чуть код, у меня теперь итог вылазить на другой лист, хотя для него места и на первом есть.
то есть при выводе, система сама делает разрыв, потом я вывожу область, делаю сам разрыв, а дальше все нормально.
провывал убирать мой разрыв, тогда система автоматом не чего не делает, а просто "полностью, причем по самые края заполняет область" вот код.
то есть при выводе, система сама делает разрыв, потом я вывожу область, делаю сам разрыв, а дальше все нормально.
провывал убирать мой разрыв, тогда система автоматом не чего не делает, а просто "полностью, причем по самые края заполняет область" вот код.
Функция НапечататьДокументМХ3(ТабДок) Экспорт
Результат = Неопределено;
УстановитьПривилегированныйРежим(Истина);
ВыгружаемыеДанные = НапечататьМХ3(ЭтотОбъект,ТабДок);
Возврат ВыгружаемыеДанные;
КонецФункции
Функция НапечататьМХ3(ВыгружаемыйДокумент,ТабДок)
Макет = ПолучитьМакет("МХ3");
МХ1_ПолучитьОблатьШапка(ТабДок, Макет, ВыгружаемыйДокумент);
МХ1_ПолучитьОблатьСтрока(ТабДок, Макет, ВыгружаемыйДокумент);
МХ1_ПолучитьОблатьПодвал(ТабДок, Макет, ВыгружаемыйДокумент);
Возврат ТабДок;
КонецФункции
Процедура МХ1_ПолучитьОблатьШапка(ТабДок, Макет, ВыгружаемыйДокумент)
Область = Макет.ПолучитьОбласть("ШапкаПервойСтраницы");
Структура = Новый Структура;
СведенияОПоставщике = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ВыгружаемыйДокумент.Грузополучатель);
СведенияОГрузоотправителе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(ВыгружаемыйДокумент.Контрагент);
Структура.Вставить("ПредставлениеХранителя",ФормированиеПечатныхФорм.ОписаниеОрганизации(
СведенияОПоставщике, "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны"));
Структура.Вставить("ПредставлениеПоклажедателя", ФормированиеПечатныхФорм.ОписаниеОрганизации(
СведенияОГрузоотправителе, "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны"));
Структура.Вставить("ОрганизацияПоОКПО", ВыгружаемыйДокумент.Грузополучатель.КодПоОКПО);
Структура.Вставить("ПоклажедательПоОКПО", ВыгружаемыйДокумент.Контрагент.КодПоОКПО);
Структура.Вставить("НомерДокумента", ВыгружаемыйДокумент.Номер);
Структура.Вставить("ДатаДокумента", Формат(ВыгружаемыйДокумент.Дата,"ДЛФ=Д"));
Структура.Вставить("НомерДоговора", ВыгружаемыйДокумент.ДоговорКонтрагента.Номер);
Структура.Вставить("ДатаДоговора", ВыгружаемыйДокумент.ДоговорКонтрагента.Дата);
Структура.Вставить("Склад", "склад " + ВыгружаемыйДокумент.Склад);
Область.Параметры.Заполнить(Структура);
ТабДок.Вывести(Область);
КонецПроцедуры
Процедура МХ1_ПолучитьОблатьСтрока(ТабДок, Макет, ВыгружаемыйДокумент)
СтруктураОбластей = Новый Структура;
СтруктураОбластей.Вставить("ОблМакетаШапкаТаблицы",Макет.ПолучитьОбласть("ШапкаТаблицы"));
СтруктураОбластей.Вставить("Строка", Макет.ПолучитьОбласть("Строка"));
СтруктураОбластей.Вставить("Итого", Макет.ПолучитьОбласть("ИтогоПоСтранице"));
СтруктураОбластей.Вставить("ПодвалРаботыУслуги", Макет.ПолучитьОбласть("ПодвалРаботыУслуги"));
СтруктураОбластей.Вставить("Страница2", Макет.ПолучитьОбласть("Разрыв"));
СтруктураОбластей.Вставить("ПодвалРаботыУслуги", Макет.ПолучитьОбласть("ПодвалРаботыУслуги"));
ТабДок.Вывести(СтруктураОбластей.ОблМакетаШапкаТаблицы);
СтраницаНомер = 1;
СтоимостьПоСтранице = 0;
ИтогоКоличествоНаСтранице = 0;
ИтогоКоличество = 0;
Для Каждого Стр ИЗ ВыгружаемыйДокумент.Комплектация Цикл
МассивОбластей = новый Массив;
МассивОбластей.Добавить(СтруктураОбластей.Строка);
МассивОбластей.Добавить(СтруктураОбластей.Итого);
// МассивОбластей.Добавить(СтруктураОбластей.Страница2);
Если Не (ТабДок.ПроверитьВывод(МассивОбластей)) Тогда
МХ1_ПолучитьОблатьИтогПоСтранице(ТабДок,СтруктураОбластей,ИтогоКоличествоНаСтранице,СтоимостьПоСтранице,СтраницаНомер);
МассивОбластей.Очистить();
СтраницаНомер = СтраницаНомер + 1;
КонецЕсли;
МХ1_ПолучитьОблатьСтрокаВГруппе(ТабДок,СтруктураОбластей,Стр);
ИтогоКоличествоНаСтранице = ИтогоКоличествоНаСтранице + Стр.Количество;
ИтогоКоличество = ИтогоКоличество + Стр.Количество;
СтоимостьПоСтранице = СтоимостьПоСтранице + Стр.Сумма;
КонецЦикла;
СтруктураОбластей.Итого.Параметры.КоличествоПоСтранице = Формат(ИтогоКоличествоНаСтранице, "ЧДЦ=2");
СтруктураОбластей.Итого.Параметры.СтоимостьПоСтранице = Формат(СтоимостьПоСтранице, "ЧДЦ=2");
СтруктураОбластей.Итого.Параметры.НомерСтраницы = "Страница: " + СтраницаНомер;
ТабДок.Вывести(СтруктураОбластей.Итого);
Область = Макет.ПолучитьОбласть("Итого2");
Область.Параметры.ИтогоКоличество = Формат(ИтогоКоличество, "ЧДЦ=2");;
Область.Параметры.СтоимостьИтог = ВыгружаемыйДокумент.Комплектация.Итог("Сумма");
ТабДок.Вывести(Область);
КонецПроцедуры
Процедура МХ1_ПолучитьОблатьПодвал(ТабДок, Макет,ВыгружаемыйДокумент)
Область = Макет.ПолучитьОбласть("ПодвалРаботыУслуги");
Структура = Новый Структура;
Структура.Вставить("ДолжностьПодтверждаю",ВыгружаемыйДокумент.ДолжностьГрузополучателя);
Структура.Вставить("ФИОПодтверждаю",ФамилияИнициалыФизЛица(ВыгружаемыйДокумент.ПредставительГрузополучателя));
Структура.Вставить("ДолжностьПоклажедатель", ВыгружаемыйДокумент.ДолжностьПредставителя);
Структура.Вставить("ФИОПоклажедатель", ФамилияИнициалыФизЛица(ВыгружаемыйДокумент.ПредставительОрганизации));
Область.Параметры.Заполнить(Структура);
ТабДок.Вывести(Область);
КонецПроцедуры
Процедура МХ1_ПолучитьОблатьИтогПоСтранице(ТабДок,СтруктураОбластей,ИтогоКоличествоНаСтранице,СтоимостьПоСтранице,СтраницаНомер)
СтруктураОбластей.Итого.Параметры.КоличествоПоСтранице = Формат(ИтогоКоличествоНаСтранице, "ЧДЦ=2");
СтруктураОбластей.Итого.Параметры.СтоимостьПоСтранице = Формат(СтоимостьПоСтранице, "ЧДЦ=2");
СтруктураОбластей.Итого.Параметры.НомерСтраницы = "Страница: " + СтраницаНомер;
ТабДок.Вывести(СтруктураОбластей.Итого);
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
ТабДок.Вывести(СтруктураОбластей.Страница2);
ТабДок.Вывести(СтруктураОбластей.ОблМакетаШапкаТаблицы);
КонецПроцедуры
Процедура МХ1_ПолучитьОблатьСтрокаВГруппе(ТабДок,СтруктураОбластей,Стр)
ТолщинаОбода = ПолучитьДополнительнуюИнформацию(Стр.Номенклатура,"Дополнительные свойства");
НомерЗавода = ПолучитьДополнительнуюИнформацию(Стр.Номенклатура,"Номер завода изготовителя");
ГодИзготовления = ПолучитьДополнительнуюИнформацию(Стр.Номенклатура,"Год изготовления");
СтруктураОбластей.Строка.Параметры.НомерСтроки = Стр.НомерСтроки;
СтруктураОбластей.Строка.Параметры.ТоварНаименование = КРОН_ОбщегоНазначения.ПолучитьНаименованиеДляПечатныхФорм(Стр.Номенклатура);
СтруктураОбластей.Строка.Параметры.ЕдиницаИзмеренияНаименование = Стр.Номенклатура.БазоваяЕдиницаИзмерения;
СтруктураОбластей.Строка.Параметры.Характеристика ="" + НомерЗавода + "-" + Стр.НомерДетали + "-" + ГодИзготовления;
СтруктураОбластей.Строка.Параметры.ЕдиницаИзмеренияКодПоОКЕИ = Стр.Номенклатура.БазоваяЕдиницаИзмерения.Код;
СтруктураОбластей.Строка.Параметры.Количество = Стр.Количество;
СтруктураОбластей.Строка.Параметры.Цена = Формат(Стр.Цена,"ЧДЦ=2");
СтруктураОбластей.Строка.Параметры.Стоимость = Формат(Стр.Сумма,"ЧДЦ=2");
ТабДок.Вывести(СтруктураОбластей.Строка);
КонецПроцедуры
Показать
у меня была проблема может кому то поможет, сам за 12 лет столкнулся с таким (решение типовое 1С УПП 1.3), у пользователя Иванова Ивана в печатной форме 3-5, перемещение ТМЗ, вылетал разделитель после второй строки, пробовал многое , никак не мог победить, у других пользователей всё нормально.
Так вот...
Как "победилась" проблема. Изменил в у Пользовтеля имя добавив "1" и в справочнике Пользователи тоже самое, разделитель исчез, меняешь обратно появляется. Кэш чистил, поиск ссылок на объект ничего не дало, т.к. ссылка по сути не менялась, менялся код в справочнике Пользователей. с чем связано хто знает?
Так вот...
Как "победилась" проблема. Изменил в у Пользовтеля имя добавив "1" и в справочнике Пользователи тоже самое, разделитель исчез, меняешь обратно появляется. Кэш чистил, поиск ссылок на объект ничего не дало, т.к. ссылка по сути не менялась, менялся код в справочнике Пользователей. с чем связано хто знает?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот