Имя: Пароль:
1C
1С v8
Печать документа. Попытка передачи с клиента на сервер мутабельного значения
0 DirecTwiX
 
25.04.14
11:13
Комплексная автоматизация. Пытаюсь напечатать из обработки документ:

Процедура Тест(Кнопка)
    КоллекцияПечатныхФорм = ПодготовитьКоллекциюПечатныхФорм("СчетФактура283");
    ПараметрыВывода = ПодготовитьСтруктуруПараметровВывода();
    ОбъектыПечати = Новый СписокЗначений;
    
    Счета1 = Новый Массив();
    Счета1.Добавить(ЭлементыФормы.Счета.ТекущиеДанные.СчетФактура.Ссылка);
    Документы.СчетФактураВыданный.Печать(Счета1, Неопределено, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
    ТабДокумент = КоллекцияПечатныхФорм[0];
    
КонецПроцедуры


Падает с ошибкой:
{Документ.СчетФактураВыданный.МодульМенеджера(2107)}: Ошибка при вызове метода контекста (ПредставлениеСерий)
        Строчка.ТоварНаименование   = СокрЛП(ВыборкаСтрокТовары.ТоварНаименование) + ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаСтрокТовары);
по причине:
Попытка передачи с клиента на сервер мутабельного значения 1-го параметра метода ПредставлениеСерий ().

Хотя если попытаться распечатать из документа, то у ВыборкаСтрокТовары будет такой же тип, как и при печати из обработки - ВыборкаИзРезультатаЗапроса
1 MKZM
 
25.04.14
11:16
(0) Интерпритатор 1с прав
2 Wobland
 
25.04.14
11:18
спасибо за предупреждение. как оборол?
3 Defender aka LINN
 
25.04.14
11:19
(0) Да, ты кругом прав.
4 DirecTwiX
 
25.04.14
11:21
Что??
Меня интересует, что я не так делаю, и почему возникает ошибка)
5 Defender aka LINN
 
25.04.14
11:23
(4) Передаешь мутабельное значение. Так делать нельзя.
6 DirecTwiX
 
25.04.14
11:24
(5) А почему этот же код работает при печати из формы документа?
Как тогда напечатать документ из внешней обработки?
7 Defender aka LINN
 
25.04.14
11:38
(6) Потому что не происходит передачи управления на сервер - кэп подсказывает, что печать на сервере и происходитю
8 DirecTwiX
 
25.04.14
11:40
(7) Я уже подумал об этом.. Как передать управление на сервер?
Уже пробовал добавлять директиву &НаСервере и выполнять произвольный запрос)
9 DirecTwiX
 
25.04.14
12:13
Ап
10 К_Дач
 
25.04.14
12:23
Документы.СчетФактураВыданный - это менеджер, и он есть только на сервере, разумеется. Дальше надо объяснять или сам догадаешься?
11 DirecTwiX
 
25.04.14
12:28
(10) Надо, не догадался)
12 DirecTwiX
 
25.04.14
12:30
И вообще, не понимаю о каком сервере идёт во всей этой теме речь, если я работаю в толстом клиенте с обычными формами.
13 К_Дач
 
25.04.14
12:34
И что, что с обычными формами. База то сто пудов не файловая.

ФормированиеПечатныхФормСервер.ПредставлениеСерий(ВыборкаСтрокТовары) - вот этот модуль компилируется на сервере, о чем говорит уже само название

Документы.СчетФактураВыданный.Печать(Счета1, Неопределено, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) - напиши это в процедуре с директивой на сервере и передай туда все что нужно

Ну или вытяни весь код печати и все что он задействует, в свою обработку, как вариант
14 DirecTwiX
 
25.04.14
12:36
(13) В (8) я уже говорил, что пробовал вынести это в процедуру с директивой НаСервере. Как это можно сделать в обычном приложении? Тянуть весь код себе - не вариант
15 КнОпка
 
25.04.14
12:38
(14) создай ФормированиеПечатныхФорм_Клиент.ПредставлениеСерий(ВыборкаСтрокТовары) как вариант
16 DirecTwiX
 
25.04.14
12:42
(15) А потом ещё лезть в модуль менеджера?
А если конфа типовая? (Конфа нетиповая, но из-за такой херни обновлять её вообще нет желания)
17 rozer76
 
25.04.14
12:51
+(15) ну или запихать мутабельное значение в массив или таблицузначений - так их передавать можно с клиента на сервер
18 rozer76
 
25.04.14
12:55
(12) в обычных формах модуль менеджера все ж на клиенте а у ФормированиеПечатныхФормСервер не стоит галка "Клиент (обычное приложение)" а только сервер - отсюда и передача с клиента на сервер... кста в файловой версии все должно работать - там серверная имуляция и как таковой передачи с клиента на сервер нет
19 DirecTwiX
 
25.04.14
13:40
Всем спасибо, проблему решил.

Решение:

Функция ПечатьСчетаФактуры(Ссылка)
    ПараметрКоманды = Новый Массив;
    ПараметрКоманды.Добавить(ЭлементыФормы.ТПоле.ТекущиеДанные.СчетФактура.Ссылка);
    
    СписокПараметров = Новый СписокЗначений;
    СписокПараметров.Добавить("Документ.СчетФактураВыданный", "ИмяМенеджераПечати");
    СписокПараметров.Добавить("СчетФактура283",       "ИменаМакетов");
    СписокПараметров.Добавить(ПараметрКоманды,    "ПараметрКоманды");
    СписокПараметров.Добавить(Неопределено,    "ПараметрыПечати");
    
    ПараметрыОткрытия = Новый Структура;
    ПараметрыОткрытия.Вставить("СписокПараметров", СписокПараметров);

    
    Ф = ПолучитьФорму("ОбщаяФорма.ПечатьДокументовУправляемая", ПараметрыОткрытия, ЭтаФорма);
    Возврат Ф.Т
Независимо от того, куда вы едете — это в гору и против ветра!