Доброго времени суток Уважаемые коллеги. Значит вопрос в следующем. Работаем на УТ 11.1.1.17. При распечатке Торг-12 если в накладной больше 18 позиций, печатается так: 18позиций выводиться на первом листе, 19 позиция на втором с итогом, а остальные на 3-ем. Изображение в прикрепленных файлах. При предварительном просмотре и последующей настройки вроде бы все настраивается, но это не сохраняется и печатается 3 листа вместо положенных двух.
Прикрепленные файлы:




По теме из базы знаний
Найденные решения
Это проблема всех типовых конфигураций на управляемом интерфейсе. А связана она со следующим:
Дла разбивки на страницы естественно используется метод табличного документа "ПроверитьВывод" .который в ТИПОВЫХ работает на сервере. А для печати используется метод "Напечатать()" (или просто печать интерактивная) которое работает только на клиенте. (Понятно что разработчики типовых такими подробностями заморачиваться нужным не считают).
И тут возникает следующее:
Во-первых имя одного и того же принтера на сервере и клиента может быть разное, и в этом случае проверка вывода осуществится в контексте не того принтера на который на клиенте идет печать, а произвольно попавшегося на сервере (который соответственно имеет другие границы печати) и несколько миллиметров разницы и дает подвисшие строки.
Во-вторых даже если имя принтера одинакова, то проблема остается, так как могут быть разные версии драйвера и т.п.
Вышесказанное не значит что она возникнет всегда, но говорит о том, что она может возникнуть в любой момент. (обновилась винда - обновился драйвер - вот оно и вылезло). Ну типа как если ремонт делают таджики это не значит что завтра гарантированно будет короткое замыкание или трубу прорвет, но надо понимать что это может произойти в любой момент.
Соответственно для радикального решения надо или выполнять ПроверитьВывод на клиенте, или печать на сервере (но это не просто т.к. Напечатать в 8.2 на сервере не работает) или в печатную форму добавлять запас на возможную потерю этих миллиметров. (т.е. при "проверить вывод" добавить в список тестируемых областей область из пары строк табличного документа, которые реально потом печататься не будут.).
Дла разбивки на страницы естественно используется метод табличного документа "ПроверитьВывод" .который в ТИПОВЫХ работает на сервере. А для печати используется метод "Напечатать()" (или просто печать интерактивная) которое работает только на клиенте. (Понятно что разработчики типовых такими подробностями заморачиваться нужным не считают).
И тут возникает следующее:
Во-первых имя одного и того же принтера на сервере и клиента может быть разное, и в этом случае проверка вывода осуществится в контексте не того принтера на который на клиенте идет печать, а произвольно попавшегося на сервере (который соответственно имеет другие границы печати) и несколько миллиметров разницы и дает подвисшие строки.
Во-вторых даже если имя принтера одинакова, то проблема остается, так как могут быть разные версии драйвера и т.п.
Вышесказанное не значит что она возникнет всегда, но говорит о том, что она может возникнуть в любой момент. (обновилась винда - обновился драйвер - вот оно и вылезло). Ну типа как если ремонт делают таджики это не значит что завтра гарантированно будет короткое замыкание или трубу прорвет, но надо понимать что это может произойти в любой момент.
Соответственно для радикального решения надо или выполнять ПроверитьВывод на клиенте, или печать на сервере (но это не просто т.к. Напечатать в 8.2 на сервере не работает) или в печатную форму добавлять запас на возможную потерю этих миллиметров. (т.е. при "проверить вывод" добавить в список тестируемых областей область из пары строк табличного документа, которые реально потом печататься не будут.).
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) IT_PROGRAMMIST, Не вопрос.
Функция СформироватьПечатнуюФормуТОРГ12(СтруктураТипов, ОбъектыПечати, ПараметрыПечати, КомплектыПечати = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ПолеСлева = 5;
ТабличныйДокумент.ПолеСправа = 5;
ТабличныйДокумент.РазмерКолонтитулаСверху = 0;
ТабличныйДокумент.РазмерКолонтитулаСнизу = 0;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ТОРГ12";
НомерТипаДокумента = 0;
Для Каждого СтруктураОбъектов Из СтруктураТипов Цикл
НомерТипаДокумента = НомерТипаДокумента + 1;
Если НомерТипаДокумента > 1 Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтруктураОбъектов.Ключ);
ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыТОРГ12(ПараметрыПечати, СтруктураОбъектов.Значение);
ЗаполнитьТабличныйДокументТОРГ12(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ПараметрыПечати, КомплектыПечати);
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
Функция СформироватьПечатнуюФормуТОРГ12(СтруктураТипов, ОбъектыПечати, ПараметрыПечати, КомплектыПечати = Неопределено) Экспорт
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ПолеСлева = 5;
ТабличныйДокумент.ПолеСправа = 5;
ТабличныйДокумент.РазмерКолонтитулаСверху = 0;
ТабличныйДокумент.РазмерКолонтитулаСнизу = 0;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ТОРГ12";
НомерТипаДокумента = 0;
Для Каждого СтруктураОбъектов Из СтруктураТипов Цикл
НомерТипаДокумента = НомерТипаДокумента + 1;
Если НомерТипаДокумента > 1 Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
МенеджерОбъекта = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(СтруктураОбъектов.Ключ);
ДанныеДляПечати = МенеджерОбъекта.ПолучитьДанныеДляПечатнойФормыТОРГ12(ПараметрыПечати, СтруктураОбъектов.Значение);
ЗаполнитьТабличныйДокументТОРГ12(ТабличныйДокумент, ДанныеДляПечати, ОбъектыПечати, ПараметрыПечати, КомплектыПечати);
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
(4) Ruslan-Proff, забавный ты )))
у табличного документа сделай по нулям верхнее и нижнее поле, тогда поместится.
наши бухи тоже хотят, чтобы все на лист влезало,
однако разработчики печатных форм часто делают проверку вывода до того как заполнят области макета
Поэтому, если какое-нибудь наименование займет раздвинет строку, т.е. сделает её высоту больше,
то и получается така бяка.
у табличного документа сделай по нулям верхнее и нижнее поле, тогда поместится.
наши бухи тоже хотят, чтобы все на лист влезало,
однако разработчики печатных форм часто делают проверку вывода до того как заполнят области макета
Поэтому, если какое-нибудь наименование займет раздвинет строку, т.е. сделает её высоту больше,
то и получается така бяка.
Это проблема всех типовых конфигураций на управляемом интерфейсе. А связана она со следующим:
Дла разбивки на страницы естественно используется метод табличного документа "ПроверитьВывод" .который в ТИПОВЫХ работает на сервере. А для печати используется метод "Напечатать()" (или просто печать интерактивная) которое работает только на клиенте. (Понятно что разработчики типовых такими подробностями заморачиваться нужным не считают).
И тут возникает следующее:
Во-первых имя одного и того же принтера на сервере и клиента может быть разное, и в этом случае проверка вывода осуществится в контексте не того принтера на который на клиенте идет печать, а произвольно попавшегося на сервере (который соответственно имеет другие границы печати) и несколько миллиметров разницы и дает подвисшие строки.
Во-вторых даже если имя принтера одинакова, то проблема остается, так как могут быть разные версии драйвера и т.п.
Вышесказанное не значит что она возникнет всегда, но говорит о том, что она может возникнуть в любой момент. (обновилась винда - обновился драйвер - вот оно и вылезло). Ну типа как если ремонт делают таджики это не значит что завтра гарантированно будет короткое замыкание или трубу прорвет, но надо понимать что это может произойти в любой момент.
Соответственно для радикального решения надо или выполнять ПроверитьВывод на клиенте, или печать на сервере (но это не просто т.к. Напечатать в 8.2 на сервере не работает) или в печатную форму добавлять запас на возможную потерю этих миллиметров. (т.е. при "проверить вывод" добавить в список тестируемых областей область из пары строк табличного документа, которые реально потом печататься не будут.).
Дла разбивки на страницы естественно используется метод табличного документа "ПроверитьВывод" .который в ТИПОВЫХ работает на сервере. А для печати используется метод "Напечатать()" (или просто печать интерактивная) которое работает только на клиенте. (Понятно что разработчики типовых такими подробностями заморачиваться нужным не считают).
И тут возникает следующее:
Во-первых имя одного и того же принтера на сервере и клиента может быть разное, и в этом случае проверка вывода осуществится в контексте не того принтера на который на клиенте идет печать, а произвольно попавшегося на сервере (который соответственно имеет другие границы печати) и несколько миллиметров разницы и дает подвисшие строки.
Во-вторых даже если имя принтера одинакова, то проблема остается, так как могут быть разные версии драйвера и т.п.
Вышесказанное не значит что она возникнет всегда, но говорит о том, что она может возникнуть в любой момент. (обновилась винда - обновился драйвер - вот оно и вылезло). Ну типа как если ремонт делают таджики это не значит что завтра гарантированно будет короткое замыкание или трубу прорвет, но надо понимать что это может произойти в любой момент.
Соответственно для радикального решения надо или выполнять ПроверитьВывод на клиенте, или печать на сервере (но это не просто т.к. Напечатать в 8.2 на сервере не работает) или в печатную форму добавлять запас на возможную потерю этих миллиметров. (т.е. при "проверить вывод" добавить в список тестируемых областей область из пары строк табличного документа, которые реально потом печататься не будут.).
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот