|
1С 8.3. Можно ли на клиенте ф = ПолучитьФорму(), а потом поработать с реквизитами ф? | ☑ | ||
---|---|---|---|---|
0
1C equals C2H5OH
25.10.17
✎
20:07
|
Что делаю:
1. Написал внешнюю обработку (назовём её "ОбрабЗап") заполнения табличной части одного определённого документа (подключается в разделе Администрирование - Дополнительные отчёты и обработки, в самом документе видна по кнопке Заполнить в нём, при нажатии вызывается процедура ВыполнитьКоманду в модуле формы этой обработки, её код исполняется, тут всё хорошо) 2. В этом коде (модуля формы ОбрабЗап), в клиентской процедуре, получаю форму штатной обработки которая имеется в конфигурации: &НаКлиенте ... ф = ПолучитьФорму( "Обработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма", ПараметрыФормы, ВладелецФормы, УникальныйИдентификатор); 3. Теперь мне надо что: На этой форме (на ф), присутствует ТабличныйДокумент Я хочу, далее в коде модуля формы ОбрабЗап, поработать с этим ТабличнымДокументом формы ф - а конкретно, кодом этим проставить в этот ТабличныйДокумент определённые значения (которые я вычислил в коде ОбрабЗап, заранее) Однако: - из кода клиентской процедуры модуля формы ОбрабЗап (в котором я получил форму ф) - я эту форму ф передать на сервер (например, в серверную процедуру обработки ОбрабЗап) - не могу - нельзя передать управляемую форму на сервер - с ТабличнымДокументом, я работать на клиенте не могу (получать его области, прописывать кодом значения в их ячейки) - нельзя работать с ТабличнымДокументом на клиенте КАК БЫТЬ? (как прописать в ячейки ТД формы ф, кодом, какие-то значения) Я пробовал так: передавал в серверную процедуру модуля формы ОбрабЗап - ф.ТабличныйДокумент как параметр этой процедуры И в той серверной процедуре, заполнял этот ТД Однако, я сильно не уверен, что заполнился ТД который именно на форме ф - большое подозрение что ТД на сервер передался как значение, и там я его заполнил, а вот с ф.ТабличныйДокумент ничего и не произошло Нужны советы и помощь |
|||
1
1C equals C2H5OH
25.10.17
✎
20:10
|
P.S. Ковырять саму ту штатную форму обработки (которую я получал с помощью ф = ПолучитьФорму(...)) - очень не хочется, и нежелательно
|
|||
2
1C equals C2H5OH
25.10.17
✎
20:10
|
(т.е. брать её в конфигурации, и менять её там - это не желательно очень)
|
|||
3
AlvlSpb
26.10.17
✎
00:27
|
(0) ф = ПолучитьФорму(
"Обработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма", ПараметрыФормы, ВладелецФормы, УникальныйИдентификатор); ДанныеФормы = Форма.Объект; ЗаполнитьТЧ(ДанныеФормы); КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); ф.Открыть(); &НаСервереБезКонтекста Функция ЗаполнитьТЧ(ДанныеФормы) Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ОбработкаОбъект.ЗагрузкаДанныхИзВнешнихФайлов")); ДОкТЗ = Док.ТЧ.Выгрузить(); // получили ТЧ формы обработки в виде ТЗ // Делаем все что надо с ТЗ Док.ТЧ.Загрузить(ДокТЗ); ЗначениеВДанныеФормы(Док,ДанныеФормы); КрнецФункции; |
|||
4
1C equals C2H5OH
27.10.17
✎
10:44
|
У штатной обработки ЗагрузкаДанныхИзВнешнихФайлов - у неё реквизит её формы - не ТЧ, а ТабличныйДокумент
|
|||
5
1C equals C2H5OH
27.10.17
✎
11:43
|
Ступил я, неправильно заполняя ТД на сервере
На самом деле, можно так: //--------------------------------------------------------------------------------- &НаКлиенте ... ф = ПолучитьФорму( "Обработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма", ПараметрыФормы, ВладелецФормы, УникальныйИдентификатор); ... ЗаполнитьТД(ф.ТабличныйДокумент) &НаСервере процедура ЗаполнитьТД(т) //заполняем табличный документ т ... конецпроцедуры //--------------------------------------------------------------------------------- P.S. Скину ещё саму процедуру заполнения ТД, как пример как я заполнял этот ТД: &НаСервере процедура ЗаполнитьТД(т) оАртикул_л = т.Область("Артикул").Лево; оКоличество_л = т.Область("Количество").Лево; оЦена_л = т.Область("Цена").Лево; i = 1; для каждого стр из Табл цикл i = i + 1; т.Область(i,оАртикул_л, i, оАртикул_л).Текст = стр.Артикул; т.Область(i,оКоличество_л, i, оКоличество_л).Текст = стр.Количество; т.Область(i,оЦена_л, i, оЦена_л).Текст = стр.Цена конеццикла конецпроцедуры |
|||
6
Филиал-msk
27.10.17
✎
11:46
|
(5) > i = i + 1;
В этом месте необходимо использовать иденфтикатор "ё" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |