|
ОткрытьФорму("Документ.") и Таблица Значений | ☑ | ||
---|---|---|---|---|
0
Pro1001C
13.08.18
✎
20:21
|
Подскажите такой момент.
Есть конструкция вида: ПараметрыЗаполнения=ПолучитьИзВременногоХранилища(Объект.АдресХранилища); //ПараметрыЗаполнения.Вставить("Товары",ВремТЗ); ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ПараметрыЗаполнения); ОткрытьФорму("Документ.ПеремещениеТоваров.ФормаОбъекта", ПараметрыФормы,,Объект.АдресХранилища); В обработке при сробатывании соответственно открывает форма документа перемещения, не записанная. Но, в типовой в процедура ОбработкаЗаполнения добавили код с обращение к колонкам таблицы Товары. ВремТЗ имеет тип ДанныеФормыКоллекция и соответственно начинает ругаться на отсутствие колонок. Вопрос как с клиента передать на сервер именно таблицу значений, но без правки типовой, соответственно без правки в процедуре ОбработкаЗаполнения модуля документа? |
|||
1
Cyberhawk
13.08.18
✎
20:24
|
Раб
|
|||
2
Cyberhawk
13.08.18
✎
20:25
|
Что за типовая?
|
|||
3
polosov
13.08.18
✎
20:28
|
(0) ТЗ можно преобразовать в массив структур.
|
|||
4
Pro1001C
13.08.18
✎
20:32
|
(2) ут11.4
(3) можно, но идет проверка именно для таблицы, если туда массив отправлю работать не будет |
|||
5
Cyberhawk
13.08.18
✎
20:34
|
(4) Покажи код этой проверки
|
|||
6
Cyberhawk
13.08.18
✎
20:34
|
Он типовой или кто-то дописал?
|
|||
7
Pro1001C
13.08.18
✎
20:38
|
код типовой
Функция ДокументОснованиеПриЗаполнении(ДанныеЗаполнения) Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") И ДанныеЗаполнения.Свойство("Основание") Тогда Возврат ДанныеЗаполнения.Основание; ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") И ДанныеЗаполнения.Свойство("МассивЗаказов") Тогда Возврат ДанныеЗаполнения.МассивЗаказов[0]; ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") И ДанныеЗаполнения.Свойство("АктОРасхождениях") И ДанныеЗаполнения.Свойство("ПеремещениеТоваров") Тогда Возврат ДанныеЗаполнения.ПеремещениеТоваров; ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") И ДанныеЗаполнения.Свойство("Товары") И ДанныеЗаполнения.Товары.Колонки.Найти("ЗаказНаПеремещение") <> Неопределено Тогда Возврат ДанныеЗаполнения.Товары[0].ЗаказНаПеремещение; ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПоступлениеТоваров") Тогда Возврат ДанныеЗаполнения; КонецЕсли; Возврат Неопределено; КонецФункции срабатывает соответственно: ДанныеЗаполнения.Товары.Колонки.Найти("ЗаказНаПеремещение") <> Неопределено |
|||
8
Cyberhawk
13.08.18
✎
20:40
|
Ну так ты или не передавай свойство "Товары" в данных заполнения, или передавай там то, что будет иметь колонки
|
|||
9
Pro1001C
13.08.18
✎
20:43
|
(8) в этом то и дело.
Код: ОткрытьФорму("Документ.ПеремещениеТоваров.ФормаОбъекта", ПараметрыФормы,,Объект.АдресХранилища); отрабатывает на клиенте. Как мне в товары засунуть что-то, что имеет колонки? В клиенте ТЗ нет, через ПолучитьИзВременногоХранилища ТЗ не передать, а то, что ТЗ передается с сервера на клиент имеет тип ДанныеФормыКоллекция |
|||
10
Cyberhawk
13.08.18
✎
20:44
|
У меня там "или". Значит придется тебе воспользоваться первым.
|
|||
11
Pro1001C
13.08.18
✎
20:52
|
жаль, придется расширение подключать и преобразовывать сперва данныеформыколлекция и тз
|
|||
12
Cyberhawk
13.08.18
✎
21:05
|
А на клиенте "ПараметрыЗаполнения" какой тип имеют?
|
|||
13
palsergeich
13.08.18
✎
21:10
|
(0) Если на клиенте можно через ВК создать ТЗ (тут в одном из соседних топиков умелец показывал), то с клиента на сервер - ни как. Есть вариант - на вызывающей форме создать программно добавить реквизит типа таблица значений, заполнить ее и передать, но это, простите меня, треш
|
|||
14
Cyberhawk
13.08.18
✎
21:14
|
"реквизит типа таблица значений, заполнить ее и передать" // Так он с клиента вызывает ОткрытьФорму, то что придет в обработку заполнения все равно будет иметь тип "ДанныеФормыКоллекция"
|
|||
15
palsergeich
13.08.18
✎
21:14
|
А не проще сделать по другому:
1) На сервере вызываюзщзей формы создаем ТЗ и помещаем во Временное хранилище и передаем адрес на клиент 2) Открываем форму и в структуру ПараметрыЗаполнения вставляем какой нибудь уникальный ключ, типо КостыльДляТЗ, а значение - адрес ВХ. 3) Делается подписка на событие ОбработкаЗаполнения, где смотрится. Если ДанныеЗапонения.Свойство("КостыльДляТЗ") Тогда Искомый код КонецЕсли + не поганится типовой модуль + Не самый плохой костыль - Это Костыль |
|||
16
palsergeich
13.08.18
✎
21:17
|
(14) Дык ТС страдает, что нужно передать что то что имеет колонки. ТЗ - не может. то что он передает не имеет нужных колонок- так пусть создаст ДФК нужжной структуры. Но это лютейший костыль, лучше вариант предложенный мной выше.
|
|||
17
Pro1001C
13.08.18
✎
21:28
|
(15) пока так и сделал, в расширении перед обработкойзаполнения преобразую ДФК в ТЗ
(12) структура |
|||
18
Cyberhawk
13.08.18
✎
21:34
|
(17) Вставь в эту структуру ключ "Товары" со значением типа "Структура", в которой будет ключ "Колонки" со значением типа "Массив", в котором есть строка "ЗаказНаПеремещение" :)
Правда непонятно, что ты хочешь добиться от типового метода |
|||
19
Cyberhawk
13.08.18
✎
21:35
|
(16) "то что он передает не имеет нужных колонок" // Неправильно. У того, что он передает, нет свойства "Колонки". Создание нужной ТЗ не спасет по озвученной мною выше причине
|
|||
20
palsergeich
13.08.18
✎
21:36
|
(19) Согласен, неверно прочитал.
|
|||
21
palsergeich
13.08.18
✎
21:38
|
(17) Тоже вариант.
|
|||
22
Pro1001C
13.08.18
✎
21:39
|
(18) нет, так не пойдет. Форма открывается с заполненной табличной частью товары, которая как раз и идет из "Товары"
|
|||
23
Cyberhawk
13.08.18
✎
21:46
|
(22) Ну тогда сделай так, чтобы до этой ветки проверка условий не доходила. Например, в структуру на клиенте вставить свойство "Основание"
|
|||
24
palsergeich
13.08.18
✎
22:10
|
Может кому пригодится:
Как создать таблицу значений на клиенте: ОписаниеТЗ = Новый ОписаниеТипов("ТаблицаЗначений"); ТабЗначений = ОписаниеТЗ.ПривестиЗначение(); |
|||
25
Pro1001C
13.08.18
✎
22:32
|
(24) спасибо, не знал
|
|||
26
polosov
14.08.18
✎
10:32
|
(24) От жеж овнокодер ))
Что только люди не придумают лишь бы свою любимую ТЗ везде запихать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |