v8: мутабельное значение и толстый клиент #695325


#0 by EvgeniuXP
Сделал кнопку во внешней обработке (конфигурация УПП) и написал вызов функции УправлениеПечатью.СформироватьПечатныеФормы, где пятым параметром передается обычная переменная, в которую должна вернуться коллекция макетов... но в итоге платформа пишет ошибку: Попытка передачи с сервера клиенту мутабельного значения... Работаю в толстом режиме, обычные формы (не управляемые)...
#0 by EvgeniuXP
Сделал кнопку во внешней обработке (конфигурация УПП) и написал вызов функции УправлениеПечатью.СформироватьПечатныеФормы, где пятым параметром передается обычная переменная, в которую должна вернуться коллекция макетов... но в итоге платформа пишет ошибку: Попытка передачи с сервера клиенту мутабельного значения... Работаю в толстом режиме, обычные формы (не управляемые)...
#1 by shuhard
зря ты на сервер объект передаешь
#2 by EvgeniuXP
пятым параметром я передают переменную Коллекция, которая перед этой функции:
#3 by EvgeniuXP
ошибка выдается при окончании вызова процедуры СформироватьПечатныеФормы
#4 by EvgeniuXP
платформа 8.2.19.76.
#5 by EvgeniuXP
еще советы?
#6 by ОбычныйЧеловек
в тебе и совет и вариант исправления.
#7 by К_Дач
где модуль компилируешь? флаги компиляции посмотри
#8 by ОбычныйЧеловек
так из и так понятно,что флаг там один "Сервер".
#9 by EvgeniuXP
вопрос отпадает, дома во внешней обработке сделал - всё работает... на работе тоже самое - нифига... буду завтра разбираться...
#10 by К_Дач
дома у тебя и сервер и клиент на одной локальной машине)))
#11 by ОбычныйЧеловек
у тебя дома скл стоит?
#12 by EvgeniuXP
так толстый клиент - че ему не нравится-то..., там да - SQL-сервер...
#13 by EvgeniuXP
на файловой проверил...
#14 by ОбычныйЧеловек
юморист )))
#15 by EvgeniuXP
мне пятый параметр нужен, там макеты формируются - их и возвращает - на них и ошибка
#16 by EvgeniuXP
точнее возвращает таблицу значений, в строках которых хранятся табличные документы... как тогда печатные формы получить? может другая функция есть?
#17 by К_Дач
я сразу понял, что на файловой)))
#18 by EvgeniuXP
#19 by EvgeniuXP
как тогда табличные документы получить?
#20 by К_Дач
с уважением, Ваш гууууугл )))
#21 by EvgeniuXP
временное понятно, мне из типового решения надо взять... не меняя кода.
#22 by EvgeniuXP
т.к. там различные формы макетов могут создаваться и эта функция их - отчеты и формирует по имени... не буду же я весь их модуль копировать к себе и потом еще во временные пихать... это ж, убиться можно...
#23 by К_Дач
Ну сделай ТЧ у своей обработки и заполняй ее на сервере
#24 by EvgeniuXP
и переносить весь модуль по формированию макета по имени (имена разные)?... обновлять потом плохо такое типовое решение... потом сравнивай всё это хозяйство...
#25 by zladenuw
создай реквизит с произвольным значением. заполняешь на сервере. поидее должно проконать
#26 by EvgeniuXP
а взять сформированный макет ни как нельзя? выводить мне его на форму не надо в универсальном форме "Печать документов"...
#27 by EvgeniuXP
просто хочу взять и отправить на емайл по всем документам (типы документов разные)
#28 by К_Дач
УправлениеПечатью.СформироватьПечатныеФормы("Документ.РеализацияТоваровУслуг", "ТОРГ12", МассивОбъектов, ПараметрыПечати, Обработка.ТЧКоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
#29 by EvgeniuXP
понял :) СПС!!!
#30 by EvgeniuXP
ошибка та же самая... перенес вызов процедуры УправлениеПечатью.СформироватьПечатныеФормы в модуль обработки - всё равно ругается на пятый параметр :(((
#31 by Feunoir
Может ты полный текст ошибки приведёшь? Таблицу значений между сервером и толстым клиентом передавать можно.
#32 by EvgeniuXP
{Форма.Форма.Форма}: Ошибка при вызове метода контекста (СформироватьПечатныеФормы)     УправлениеПечатью.СформироватьПечатныеФормы("Документ.РеализацияТоваровУслуг", "ТОРГ12", МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);     по причине: Попытка передачи с сервера клиенту мутабельного значения 5-го параметра метода СформироватьПечатныеФормы .
#33 by EvgeniuXP
{Форма.Форма.Форма}: Ошибка при вызове метода контекста (СформироватьПечатныеФормы)     УправлениеПечатью.СформироватьПечатныеФормы("Документ.РеализацияТоваровУслуг", "ТОРГ12", МассивОбъектов, ПараметрыПечати, ЭтотОбъект.КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);     по причине: Попытка передачи с сервера клиенту мутабельного значения 5-го параметра метода СформироватьПечатныеФормы .
#34 by Feunoir
Ок. А скриншот с содержимым КоллекцииПечатныхФорм с сервера можно?
#35 by EvgeniuXP
Поставил код:                 #Если ТолстыйКлиентОбычноеПриложение Тогда                 #Если ТолстыйКлиентУправляемоеПриложение Тогда Отрабатывает первое условие.
#36 by EvgeniuXP
что у типовой возвращает? у меня не возвращает, при этом даже
#37 by Infsams654
При чем тут это ? В этом, просто видишь как оно работает в клиент-сервер. Зачем передаешь мутабельные значения ?
#38 by Feunoir
В УправлениеПечатью.СформироватьПечатныеФормы поставь точку останова в конце процедуры и посмотри что в каком параметре у тебя возвращается с сервера.
#39 by EvgeniuXP
ИменаМакетов: строка МассивОбъектов: массив, количество элементов 1, содержит ссылку на документ. ПараметрыПечати: Неопределено КоллекцияПечатныхФорм: таблица значений, количество строк 1, содержит табличный документ, остальные примитивные колонки у строки, типа Неопределено, Строка, Число. ОбъектыПечати: список значений, количество 1, в качестве значения ДокументСсылка. ПараметрыВывода - структура, три ключа значения которых: Ложь, Неопределено, Неопределено.
#40 by EvgeniuXP
тыкни пальцем, где я передаю мутабельное значение:
#41 by Infsams654
ЭтотОбъект.КоллекцияПечатныхФорм - это что такое ?
#42 by EvgeniuXP
ОбщийМодуль.УправлениеПечатью - галки: Сервер, ВызовСервера.
#43 by Feunoir
Непонятная хреновина. Всё должно работать нормально. Форму ТОРГ12 не меняли? Может где в расшифровку засунули какой левый объект? Но тогда оно бы и из документа не печаталось бы. Попробуй другой макет сформировать.
#44 by EvgeniuXP
вторым способом пробовал, это у обработки Реквизит с типом "ТаблицаЗначений". в инициализирую в неопределено и называю по-другому, чтобы не пересекалось с именем реквизита.
#45 by EvgeniuXP
в типовой печатается, из моей функции тоже печатается (отображается форма с документом), если идти от Объект.Печать. Но мне форма не нужна, мне макет нужно получить, поэтому пытаюсь взять напрямую из УправлениеПечатью.СформироватьПечатныеФормы.
#46 by wPa
хард-код детектед. да еще кривой. фу таким быть
#47 by х86
>>Но мне форма не нужна, мне макет нужно что есть в твоем понимании макет? и зачем он тебе?
#48 by EvgeniuXP
М15 - тоже самое...
#49 by EvgeniuXP
табличный документ, чтобы его передать на емайл.
#50 by х86
возьми с формы
#51 by EvgeniuXP
сформировать нужно несколько табличных документов отфильтрованных по периоду и сотруднику: РеализацияТоваровИУслуг и СчетФактураВыданная и отправить контрагенту на емайл, при этом еще отправить по каждому документу на отдельный адрес, который указан в документе - добавлен реквизит свой.
#52 by EvgeniuXP
это ж тупо... в цикле документов формировать форму и вытаскивать табличный документ, при этом форму не отображать...
#53 by EvgeniuXP
ДокументСсылка.ПолучитьОбъект.Печать("ТОРГ12", 0, Ложь) - форму выводит с документом.
#54 by EvgeniuXP
и как с формы взять?
#55 by EvgeniuXP
там общая форма, а в нее параметры нельзя передавать, имя макета по котору формируется отчет...
#56 by EvgeniuXP
со внешними обработками нет проблем - там как-раз табличный документ и возвращается...
#57 by EvgeniuXP
ладно, сделаю отдельный модуль для обычного приложения... может он вернет коллекцию, опишу также как управляемый по получению стандартных форм по двум документам - выхода нет...
#58 by EvgeniuXP
ппц, обработу сделал на управляемой форме - пошло :) не фиг в обычной было делать :)))
#59 by EvgeniuXP
в управляемой форме другие проблемы.... криворукие какие-то типовые пишут... как можно писать .ПолучитьОбъект.ПроцедураВызова, а он исполняется на сервере писать "ПроцедураВызова" в директиве препроцессора Клиент... - слов нет...
#60 by EvgeniuXP
т.е. всю структуру макета получить не могу... точнее получил, но форму по умолчанию не могу получить, т.к. она берется из ВосстановитьПоУмолчанию, а эта процедура работает только в толстом клиенте в обычных формах...
#61 by EvgeniuXP
имя макета, которое является по умолчанию хранится в самой форме толстого клиента...
#62 by EvgeniuXP
жесть... как всё-таки получить макеты в толстом клиенте...
#63 by EvgeniuXP
сформированные (табличные документы)
#64 by EvgeniuXP
В обработке (обычная форма) необходимо, чтобы отработал код в клиент-сервером варианте (на файловой работает), которая вернет коллекцию печатных форм (сформированных табличных документов):
#65 by EvgeniuXP
УправлениеПечатью.СформироватьПечатныеФормы("Документ.РеализацияТоваровУслуг", "ТОРГ12", МассивОбъектов, Неопределено, КоллекцияПечатныхФорм, ОбъектыПечати, Неопределено); - является стандартной типовой функцией. (ПС_ - ошибся).
#66 by H A D G E H O G s
А ты - упорный парень.
#67 by H A D G E H O G s
По ощущениям - уже можно было бы написать годный код методом тыка, навреное.
#68 by Ярус
это если чем тыкать есть
#69 by EvgeniuXP
так написал бы, просто тут другая форма, из которую нужно показать на форме какие макеты и там некоторые макеты выделены по умолчанию, а эта запись берется уже из настроек сохраненных пользователем, которые хранятся в формах обычных... так бы уже давно двинулся дальше... а через управляемые формы я получил все сформированные отчеты...
#70 by H A D G E H O G s
Вот так я примерно воспринимаю автора. Короче, что не получается?
#71 by EvgeniuXP
нафиг, проще настройки сохранять в регистре по каждому пользователю и брать от туда какой отчет по умолчанию является, буду дальше на управляемых формах делать :)
#72 by zladenuw
шутник однако
#73 by EvgeniuXP
спасибо, сделаю регистр сведений по сохранению отчетов по умолчанию для каждого пользовователя, в глобальнике поменяю в пару местах и всё. все модули тянуть в обычные формы по формированию отчетов - не выход и не есть гуд.
#74 by H A D G E H O G s
Автор скорее всего в шоке от типовой подсистемы печати в УПП, и пытается прикрутить к ней сохранение выбранных пользователем галочками нужных печатных форм, количества копий, вывода сразу на принтер с учетом внешних обработок печати, и как в толстом, так и в тонком. Удачи.
#75 by zladenuw
а если на сервере Коллекцию конвертиш в массив или структуру и передаешь на клиент. не ?
#76 by H A D G E H O G s
Только мне непонятно мутабельное значение причем тут.
#77 by zladenuw
типа обвернуть так ПС_УправлениеПечатью.СформироватьПечатныеФормы("Документ.РеализацияТоваровУслуг", "ТОРГ12", МассивОбъектов, Неопределено, ТабЗначВМассив(КоллекцияПечатныхФорм), ОбъектыПечати, Неопределено);
#78 by К_Дач
ну ииии??? &наклиенте КоллекцияПечатныхФорм - сделай ее ТЧ, а не реквизитом, добавь реквизиты ТЧ "Макет", какие там еще нужны.
#79 by EvgeniuXP
зачем обертывать? В процедуру передается нормально (можно вообще передать с типом Неопределено, там функция сама сделать ТЗ с макетами), вернуть процедура не может значение (тз) через параметр КоллекцияПечатныхФорм, в строках которых хранится табличные документы. при возврате ругается на мутабельное значение - вот тоже понять не могу, работаю в толстом клиенте в обычных формах. в файловой работает код, а в клиент-сервере нет.
#80 by EvgeniuXP
шок только от одного: ДокументСсылка.ПолучитьОбъект.ВызватьКлиентскуюПроцедуру - вот это точно шок, так извращаться :) , где ВызватьКлиентскуюПроцедуру в модуле объекта описана как: #Если НаКлиенте Тогда Процедура ВызватьКлиентскуюПроцедуру    ... КонецПроцедуры #КонецЕсли
#81 by К_Дач
тебе возвращать надо не сами макеты, а ссылки на них, как ты не поймешь то
#82 by EvgeniuXP
я это понимаю, только надо править типовые модули, что не хотелось бы...
#83 by EvgeniuXP
просто думал, может Клиент-Сервер расставить как-то в своей обработке по-умному и получу коллекцию без правки типового общего модуля - ведь по факту я работаю в толстом клиенте, и коллекция заполняется...
#84 by EvgeniuXP
я одно понять не могу, почему возникает эта ошибка "мутабельное значение", работаю в толстом на обычных формах - разделение на клиент-сервер же нет...
#85 by ОбычныйЧеловек
разделение на клиент-сервер же нет... Когда разделения нет (а нет его в твоей файловой версии) то и ошибки нет, а когда разделение есть (а есть оно у тебя на работе) то ошибка есть... обычные формы и клиент сервер не являются взаимоисключающим понятиями как ты почему-то решил.
#86 by EvgeniuXP
проверить очень просто, открываем типовую УПП 1.3, создаем внешнюю обработку обычная форма, на кнопку выполнить вешаем код , документ только подравьте Номер и дату, чтоб нашел документ, и запускаем - в клиент-сервере не выполнится, ошибка.
#87 by EvgeniuXP
тогда еще один добавить параметр МассивТабличныхДокументов в процедуру УправлениеПечатью.СформироватьПечатныеФормы, массивТабличныхДокументов и возвращать для "особых" случаев... тогда еще так попробую завтра... а то уже на управляемые пошел...
#88 by К_Дач
я тебе написал выше, как расставить клиент сервер. С клиента вызываешь серверную процедуру, из серверной процедуры вызываешь свой общий модуль, который компилируется на сервере, макеты пихаешь в табличную часть, при возврате в обработку получишь ссылки. Ну или скопируй весь требуемый код из общего модуля к себе в модуль объекта обработки. По нажатию кнопки на форме создавай экземпляр объекта обработки и вызывай нужную процедуру.
#89 by EvgeniuXP
&НаСервере - не прокатит, там ошибка вылетает прямо при открытии формы внешней обработки, а препроцессорную не пробовал
#90 by EvgeniuXP
хорошо, попробую и этот способ.
#91 by К_Дач
Обычная форма, обычное приложение. Ничего не ругается.
#92 by EvgeniuXP
Новую обработку сделал, в ней только этот код: &НаСервере Ошибка: {Форма.Форма.Форма(4,5)}: Процедура или функция с указанным именем не определена (КнопкаВыполнитьНажатиеСервер)     <<?>>КнопкаВыполнитьНажатиеСервер;
#93 by EvgeniuXP
&НаСервере Так тоже ошибка: {Форма.Форма.Форма(17,5)}: Процедура или функция с указанным именем не определена (КнопкаВыполнитьНажатиеСервер)     <<?>>КнопкаВыполнитьНажатиеСервер;
#94 by EvgeniuXP
тоже отлетает, добавил новый параметр массив, добавил туда ТабличныеДокументы - при возвращении ругается на этот параметр - содержит мутабельные значения.
#95 by EvgeniuXP
в модуле объекта обработки прописал: в модуле формы обработки написал: При нажатии на кнопку "Выполнить" появляется ошибка: "Метод объекта не обнаружен (ТТТ)".
#96 by EvgeniuXP
все остальнце параметры перед возвратом в Неопределено поставил, чтоб явно видно было, что ошибка именно на 8-ом параметре. Пустой массив (или забитый примитивными типами) возвращает через параметр...
#97 by Serg_1960
Ммм... а чего автор зациклился на "УправлениеПечатью.СформироватьПечатныеФормы"? В УПП есть и другие функции :))
#98 by К_Дач
Создай экземпляр объекта с помощью менеджера внешних обработок. Потом обращайся к методу
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С