Если КоллекцияПечатныхФорм <> Неопределено Тогда // обрабатываем полученный набор табличных документов Для каждого СтрокаКоллекции Из КоллекцияПечатныхФорм Цикл Если СтрокаКоллекции.ТабличныйДокумент <> Неопределено Тогда ТабДок= СтрокаКоллекции.ТабличныйДокумент; КонецЕсли; КонецЦикла; КонецЕсли;
Чудово працює в локальній базі. В серверній видає помилку:
Ошибка при вызове метода контекста (СформироватьПечатныеФормы): Попытка передачи с сервера клиенту мутабельного значения 5-го параметра метода СформироватьПечатныеФормы ().
Inkognito @ Сегодня, 12:50
, Она у вас запускается в тонком клиенте, Вам нужно выбрать базу : Нажать Изменить - Делее - Основной режим запуска Толстый Клиент вместо Авто
Ветеран
Группа: Пользователи
Сообщений: 996
Из: Україна
Спасибо сказали: 449 раз
Рейтинг: 14.5
Цитата(Profi_1C77 @ 12.03.25, 16:38)
УПП она в обычных формах, т.е толстый клиент, т.е "сервер"
Змінив "Автоматично" на "Тоствий клієнт", не допомогло. Потрібно саме на рівні коду внести зміни, щоб користувачам зовсім не потрібно нічого було змінювати.
УправлениеПечатью.СформироватьПечатныеФормы - это, насколько я помню, из БСП и модуль серверный. Код такого вызова обычно находится в процедуре с контекстом &НаКлиенте в УФ. Если это действительно УФ, то можно попробовать перенести вызов с клиента на сервер, и вернуть ТабДок на клиент. Если это не УФ, то сделать в модуле объекта обработки функцию с вызовом (это гарантированно контекст сервера) и вернуть готовый ТабДок
P.S. А зачем Вы добавляете Выполнить в стоку вызова функции?
УПП вся на обычных формах. Думаю, где клиент, а где сервер, зависит от галочек общих модулей.
В УТ я включал возможность управляемых форм в обычном приложении просто установив в конфигураторе в свойствах конфигурации галочку Использовать управляемые формы в обычном приложении. Думаю, что в УПП она тоже доступна. Приведенный топикстартером код находится, скорее всего, в форме во внешней обработке. Поэтому, я думаю, что простое создание экспортной функции в модуле объекта обработки, перенос туда всего этого вызова и возврат в исходную процедуру табличного документа может решить проблему.
Ветеран
Группа: Пользователи
Сообщений: 996
Из: Україна
Спасибо сказали: 449 раз
Рейтинг: 14.5
Цитата(xlmel @ 12.03.25, 20:02)
установив в конфигураторе в свойствах конфигурации галочку Использовать управляемые формы в обычном приложении
Нажаль, не допомогло.
Цитата(xlmel @ 12.03.25, 20:02)
Приведенный топикстартером код находится, скорее всего, в форме во внешней обработке.
Так, зовнішня обробка.
Цитата(xlmel @ 12.03.25, 20:02)
создание экспортной функции в модуле объекта обработки, перенос туда всего этого вызова и возврат в исходную процедуру табличного документа может решить проблему.
Чудово працює в локальній базі. В серверній видає помилку:
Это как то странно, учитывая что в даже в Толстом клиенте запускали. Вероятно придется переносить "много" в общий модуль с обработки да и команда Выполнить..... XLMEL верно написал - дайте код для понимания
Если ИмяБазы = "УПП" или ИмяБазы = "УСО" или ИмяБазы = "УСХ" тогда ИмяМенеджераПечати = "Документ.РеализацияТоваровУслуг"; // имя менеджера документа ИменаМакетов = "Накладная"; // список макетов для печати (можно один, можно списком) ПараметрКоманды = Новый Массив; ПараметрКоманды.Добавить(знДок);
ПараметрыПечати= Неопределено; КоллекцияПечатныхФорм= Неопределено; ОбъектыПечати= Неопределено; ПараметрыВывода= Неопределено; Выполнить("УправлениеПечатью.СформироватьПечатныеФормы(ИмяМенеджераПечати, ИменаМакетов, ПараметрКоманды, Неопределено, КоллекцияПечатныхФорм, Неопределено, Неопределено);"); Если КоллекцияПечатныхФорм <> Неопределено Тогда // обрабатываем полученный набор табличных документов Для каждого СтрокаКоллекции Из КоллекцияПечатныхФорм Цикл Если СтрокаКоллекции.ТабличныйДокумент <> Неопределено Тогда ТабДок= СтрокаКоллекции.ТабличныйДокумент; КонецЕсли; КонецЦикла; КонецЕсли; Иначе ТабДок= Документ.ПолучитьОбъект().ПечатьДокумента(); КонецЕсли;
Возврат ТабДок;
КонецФункции
Проблема саме УПП (та схожих) конфігураціях. Розробники винесли функцію в модуль менеджера (замість модуля обекта). Выполннить() зроблено для того, щоб обробка нормально відкрилась в не УППшних конфігураціях, оскільки в них цей модуль відсутній
За наведеним кодом важко визначити контекст для процедури та функції. Судячи з того, що немає функції слова Експорт, підозрюю, що вони знаходяться в одному контексті. Хіба Виконати не викликає помилку за відсутності даного модуля? Чи може краще використовувати Попытка ... Исключение ... КонецПопытки?
P.S. Скажіть, наскільки добре 1С формує PDF-файли з табличного документа зараз. Свого часу, коли писав формування друкованих форм для Вчасно, відмовився від цього варіанту, зважаючи на те, що якість була моторошною
Ветеран
Группа: Пользователи
Сообщений: 996
Из: Україна
Спасибо сказали: 449 раз
Рейтинг: 14.5
1) Всі функції в модулі зовнішньої обробки. 2) Обробка не відкриється на БУ, УТП, оскільки немає УправлениеПечатью.СформироватьПечатныеФормы() Якщо треба уніфікований код, для всіх конфігурацій, то треба взяти в Выполнить("") 3) Так, саме для Вчасно і робиться цей код. І саме на серверній 1С:УПП отримати друковану форму не виходить. А в клієнта саме такий випадок. Все ОК, друкована форма всюди коректна.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!