Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 5, свеженьких 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Отримання друкованої форми Видаткової в УВП (серверна)          
Inkognito Подменю пользователя
сообщение 12.03.25, 12:50
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 996
Из: Україна
Спасибо сказали: 449 раз
Рейтинг: 14.5

"Управление производственным предприятием для Украины", редакция 1.3 (1.3.86.1) - серверна
Отримання друкованої форми (ТабДок) видаткової:

    ИмяМенеджераПечати = "Документ.РеализацияТоваровУслуг"; // имя менеджера документа
            ИменаМакетов       = "Накладная";
            ПараметрКоманды = Новый Массив;
            ПараметрКоманды.Добавить(знДок);  
            
            ПараметрыПечати= Неопределено;
            КоллекцияПечатныхФорм= Неопределено;
            ОбъектыПечати= Неопределено;  
            ПараметрыВывода= Неопределено;
    
            Выполнить("УправлениеПечатью.СформироватьПечатныеФормы(ИмяМенеджераПечати, ИменаМакетов, ПараметрКоманды, Неопределено, КоллекцияПечатныхФорм, Неопределено, Неопределено);");  

            
            Если КоллекцияПечатныхФорм <> Неопределено Тогда // обрабатываем полученный набор табличных документов
                Для каждого СтрокаКоллекции Из КоллекцияПечатныхФорм Цикл
                    Если СтрокаКоллекции.ТабличныйДокумент <> Неопределено Тогда
                        ТабДок= СтрокаКоллекции.ТабличныйДокумент;
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;


Чудово працює в локальній базі. В серверній видає помилку:
Ошибка при вызове метода контекста (СформироватьПечатныеФормы): Попытка передачи с сервера клиенту мутабельного значения 5-го параметра метода СформироватьПечатныеФормы ().


Також невдалими є спроби:
Выполнить("УправлениеПечатью.СформироватьПечатныеФормы(ИмяМенеджераПечати, ИменаМакетов, ПараметрКоманды, , , , );");  
Выполнить("УправлениеПечатью.СформироватьПечатныеФормы(ИмяМенеджераПечати, ИменаМакетов, ПараметрКоманды);");



Profi_1C77 Подменю пользователя
сообщение 12.03.25, 14:20
Сообщение #2

Завсегдатай
****
Группа: Пользователи
Сообщений: 117
Из: Черкассы
Спасибо сказали: 29 раз
Рейтинг: 29

Inkognito @ Сегодня, 12:50 * ,
Она у вас запускается в тонком клиенте, Вам нужно выбрать базу :
Нажать Изменить - Делее - Основной режим запуска Толстый Клиент вместо Авто

Slon747 Подменю пользователя
сообщение 12.03.25, 14:28
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 114
Спасибо сказали: 14 раз
Рейтинг: 14

На сервер не можна передавати об'ект.
У вас в ПараметрКоманды масив. А в масиві знДок.
Якого типу знДок?

Inkognito Подменю пользователя
сообщение 12.03.25, 16:08
Сообщение #4

Ветеран
*******
Группа: Пользователи
Сообщений: 996
Из: Україна
Спасибо сказали: 449 раз
Рейтинг: 14.5

Цитата(Profi_1C77 @ 12.03.25, 14:20) *
Она у вас запускается в тонком клиенте, Вам нужно выбрать базу :
Нажать Изменить - Делее - Основной режим запуска Толстый Клиент вместо Авто

Потрібне рішення без зміни властивостей конфігурації

Цитата(Slon747 @ 12.03.25, 14:28) *
в ПараметрКоманды масив. А в масиві знДок.
Якого типу знДок?

ДокументСсылка

Profi_1C77 Подменю пользователя
сообщение 12.03.25, 16:38
Сообщение #5

Завсегдатай
****
Группа: Пользователи
Сообщений: 117
Из: Черкассы
Спасибо сказали: 29 раз
Рейтинг: 29

Цитата(Inkognito @ 12.03.25, 16:08) *
Потрібне рішення без зміни властивостей конфігурації


УПП она в обычных формах, т.е толстый клиент, т.е "сервер"

Сообщение отредактировал Vofka - 12.03.25, 18:50

Inkognito Подменю пользователя
сообщение 12.03.25, 16:47
Сообщение #6

Ветеран
*******
Группа: Пользователи
Сообщений: 996
Из: Україна
Спасибо сказали: 449 раз
Рейтинг: 14.5

Цитата(Profi_1C77 @ 12.03.25, 16:38) *
УПП она в обычных формах, т.е толстый клиент, т.е "сервер"

Змінив "Автоматично" на "Тоствий клієнт", не допомогло.
Потрібно саме на рівні коду внести зміни, щоб користувачам зовсім не потрібно нічого було змінювати.

xlmel Подменю пользователя
сообщение 12.03.25, 18:16
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 36
Из: Харьков
Спасибо сказали: 21 раз
Рейтинг: 23.7

УправлениеПечатью.СформироватьПечатныеФормы - это, насколько я помню, из БСП и модуль серверный.
Код такого вызова обычно находится в процедуре с контекстом &НаКлиенте в УФ. Если это действительно УФ, то можно попробовать перенести вызов с клиента на сервер, и вернуть ТабДок на клиент.
Если это не УФ, то сделать в модуле объекта обработки функцию с вызовом (это гарантированно контекст сервера) и вернуть готовый ТабДок

P.S. А зачем Вы добавляете Выполнить в стоку вызова функции?

Slon747 Подменю пользователя
сообщение 12.03.25, 19:11
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 114
Спасибо сказали: 14 раз
Рейтинг: 14

Цитата(xlmel @ 12.03.25, 18:16) *
Код такого вызова обычно находится в процедуре с контекстом &НаКлиенте в УФ. Если это действительно УФ

УПП вся на обычных формах.
Думаю, где клиент, а где сервер, зависит от галочек общих модулей.

xlmel Подменю пользователя
сообщение 12.03.25, 20:02
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 36
Из: Харьков
Спасибо сказали: 21 раз
Рейтинг: 23.7

Цитата(Slon747 @ 12.03.25, 19:11) *
УПП вся на обычных формах.
Думаю, где клиент, а где сервер, зависит от галочек общих модулей.

В УТ я включал возможность управляемых форм в обычном приложении просто установив в конфигураторе в свойствах конфигурации галочку Использовать управляемые формы в обычном приложении. Думаю, что в УПП она тоже доступна.
Приведенный топикстартером код находится, скорее всего, в форме во внешней обработке. Поэтому, я думаю, что простое создание экспортной функции в модуле объекта обработки, перенос туда всего этого вызова и возврат в исходную процедуру табличного документа может решить проблему.

Inkognito Подменю пользователя
сообщение 12.03.25, 20:58
Сообщение #10

Ветеран
*******
Группа: Пользователи
Сообщений: 996
Из: Україна
Спасибо сказали: 449 раз
Рейтинг: 14.5

Цитата(xlmel @ 12.03.25, 20:02) *
установив в конфигураторе в свойствах конфигурации галочку Использовать управляемые формы в обычном приложении

Нажаль, не допомогло.
Цитата(xlmel @ 12.03.25, 20:02) *
Приведенный топикстартером код находится, скорее всего, в форме во внешней обработке.

Так, зовнішня обробка.
Цитата(xlmel @ 12.03.25, 20:02) *
создание экспортной функции в модуле объекта обработки, перенос туда всего этого вызова и возврат в исходную процедуру табличного документа может решить проблему.

Нажаль, не допомогло.

xlmel Подменю пользователя
сообщение 13.03.25, 13:16
Сообщение #11

Общительный
**
Группа: Пользователи
Сообщений: 36
Из: Харьков
Спасибо сказали: 21 раз
Рейтинг: 23.7

Если можно, то дайте полный текст функции из модуля объекта и текст процедуры вызова. Так очень трудно что-то советовать

Profi_1C77 Подменю пользователя
сообщение 13.03.25, 18:54
Сообщение #12

Завсегдатай
****
Группа: Пользователи
Сообщений: 117
Из: Черкассы
Спасибо сказали: 29 раз
Рейтинг: 29

Цитата(Inkognito @ 12.03.25, 12:50) *
Чудово працює в локальній базі. В серверній видає помилку:

Это как то странно, учитывая что в даже в Толстом клиенте запускали.
Вероятно придется переносить "много" в общий модуль с обработки
да и команда Выполнить..... XLMEL верно написал - дайте код для понимания

Inkognito Подменю пользователя
сообщение 14.03.25, 9:22
Сообщение #13

Ветеран
*******
Группа: Пользователи
Сообщений: 996
Из: Україна
Спасибо сказали: 449 раз
Рейтинг: 14.5

Код
Процедура СохрДокумент()
    
    ТабДок = Получить_ПФ_Реализации(Документ);

    ФайлВыгрузки = КаталогДокументов() + "Видаткова " + Документ.Номер + " від " +  Формат( Документ.Дата, "ДФ=dd-MM-yyyy");    
    ТабДок.Записать(ФайлВыгрузки, ТипФайлаТабличногоДокумента.PDF);    
        
КонецПроцедуры

Функция Получить_ПФ_Реализации(знДок)
    
    Если ИмяБазы = "УПП" или ИмяБазы = "УСО" или ИмяБазы = "УСХ" тогда
        ИмяМенеджераПечати = "Документ.РеализацияТоваровУслуг"; // имя менеджера документа
        ИменаМакетов       = "Накладная"; // список макетов для печати (можно один, можно списком)
        ПараметрКоманды = Новый Массив;
        ПараметрКоманды.Добавить(знДок);  
        
        ПараметрыПечати= Неопределено;
        КоллекцияПечатныхФорм= Неопределено;
        ОбъектыПечати= Неопределено;  
        ПараметрыВывода= Неопределено;
        Выполнить("УправлениеПечатью.СформироватьПечатныеФормы(ИмяМенеджераПечати, ИменаМакетов, ПараметрКоманды, Неопределено, КоллекцияПечатныхФорм, Неопределено, Неопределено);");  
        Если КоллекцияПечатныхФорм <> Неопределено Тогда // обрабатываем полученный набор табличных документов
            Для каждого СтрокаКоллекции Из КоллекцияПечатныхФорм Цикл
                Если СтрокаКоллекции.ТабличныйДокумент <> Неопределено Тогда
                    ТабДок= СтрокаКоллекции.ТабличныйДокумент;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    Иначе
        ТабДок= Документ.ПолучитьОбъект().ПечатьДокумента();
    КонецЕсли;  

Возврат ТабДок;
    
КонецФункции


Проблема саме УПП (та схожих) конфігураціях. Розробники винесли функцію в модуль менеджера (замість модуля обекта).
Выполннить() зроблено для того, щоб обробка нормально відкрилась в не УППшних конфігураціях, оскільки в них цей модуль відсутній

xlmel Подменю пользователя
сообщение 14.03.25, 10:43
Сообщение #14

Общительный
**
Группа: Пользователи
Сообщений: 36
Из: Харьков
Спасибо сказали: 21 раз
Рейтинг: 23.7

За наведеним кодом важко визначити контекст для процедури та функції. Судячи з того, що немає функції слова Експорт, підозрюю, що вони знаходяться в одному контексті.
Хіба Виконати не викликає помилку за відсутності даного модуля? Чи може краще використовувати Попытка ... Исключение ... КонецПопытки?

P.S. Скажіть, наскільки добре 1С формує PDF-файли з табличного документа зараз. Свого часу, коли писав формування друкованих форм для Вчасно, відмовився від цього варіанту, зважаючи на те, що якість була моторошною

Inkognito Подменю пользователя
сообщение 14.03.25, 10:59
Сообщение #15

Ветеран
*******
Группа: Пользователи
Сообщений: 996
Из: Україна
Спасибо сказали: 449 раз
Рейтинг: 14.5

1) Всі функції в модулі зовнішньої обробки.
2) Обробка не відкриється на БУ, УТП, оскільки немає УправлениеПечатью.СформироватьПечатныеФормы() Якщо треба уніфікований код, для всіх конфігурацій, то треба взяти в Выполнить("")
3) Так, саме для Вчасно і робиться цей код. І саме на серверній 1С:УПП отримати друковану форму не виходить. А в клієнта саме такий випадок. Все ОК, друкована форма всюди коректна.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 26.03.25, 23:15
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!