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