Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

1С 8.3. Можно ли на клиенте ф = ПолучитьФорму(), а потом поработать с реквизитами ф?

1С 8.3. Можно ли на клиенте ф = ПолучитьФорму(), а потом поработать с реквизитами ф?
Я
   1C equals C2H5OH
 
25.10.17 - 20:07
Что делаю:

1. Написал внешнюю обработку (назовём её "ОбрабЗап") заполнения табличной части одного определённого документа
(подключается в разделе Администрирование - Дополнительные отчёты и обработки, в самом документе видна по кнопке Заполнить в нём, при нажатии вызывается процедура ВыполнитьКоманду в модуле формы этой обработки, её код исполняется, тут всё хорошо)

2. В этом коде (модуля формы ОбрабЗап), в клиентской процедуре, получаю форму штатной обработки которая имеется в конфигурации:

&НаКлиенте

...

ф = ПолучитьФорму(
    "Обработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма",
        ПараметрыФормы,
        ВладелецФормы,
        УникальныйИдентификатор);

3. Теперь мне надо что:
На этой форме (на ф), присутствует ТабличныйДокумент
Я хочу, далее в коде модуля формы ОбрабЗап, поработать с этим ТабличнымДокументом формы ф - а конкретно, кодом этим проставить в этот ТабличныйДокумент определённые значения (которые я вычислил в коде ОбрабЗап, заранее)

Однако:

- из кода клиентской процедуры модуля формы ОбрабЗап (в котором я получил форму ф) - я эту форму ф передать на сервер (например, в серверную процедуру обработки ОбрабЗап) - не могу - нельзя передать управляемую форму на сервер

- с ТабличнымДокументом, я работать на клиенте не могу (получать его области, прописывать кодом значения в их ячейки) - нельзя работать с ТабличнымДокументом на клиенте

КАК БЫТЬ? (как прописать в ячейки ТД формы ф, кодом, какие-то значения)

Я пробовал так: передавал в серверную процедуру модуля формы ОбрабЗап - ф.ТабличныйДокумент как параметр этой процедуры
И в той серверной процедуре, заполнял этот ТД
Однако, я сильно не уверен, что заполнился ТД который именно на форме ф - большое подозрение что ТД на сервер передался как значение, и там я его заполнил, а вот с ф.ТабличныйДокумент ничего и не произошло

Нужны советы и помощь
 
 
   1C equals C2H5OH
 
1 - 25.10.17 - 20:10
P.S. Ковырять саму ту штатную форму обработки (которую я получал с помощью ф = ПолучитьФорму(...)) - очень не хочется, и нежелательно
   1C equals C2H5OH
 
2 - 25.10.17 - 20:10
(т.е. брать её в конфигурации, и менять её там - это не желательно очень)
   AlvlSpb
 
3 - 26.10.17 - 00:27
(0) ф = ПолучитьФорму(
    "Обработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма", 
        ПараметрыФормы,
        ВладелецФормы,
        УникальныйИдентификатор);
ДанныеФормы = Форма.Объект;
ЗаполнитьТЧ(ДанныеФормы);
КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); 
ф.Открыть();

&НаСервереБезКонтекста
Функция ЗаполнитьТЧ(ДанныеФормы)

Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ОбработкаОбъект.ЗагрузкаДанныхИзВнешнихФайлов"));
ДОкТЗ = Док.ТЧ.Выгрузить();// получили ТЧ формы обработки в виде ТЗ

// Делаем все что надо с ТЗ
Док.ТЧ.Загрузить(ДокТЗ);
ЗначениеВДанныеФормы(Док,ДанныеФормы);

КрнецФункции;
   1C equals C2H5OH
 
4 - 27.10.17 - 10:44
У штатной обработки ЗагрузкаДанныхИзВнешнихФайлов - у неё реквизит её формы - не ТЧ, а ТабличныйДокумент
   1C equals C2H5OH
 
5 - 27.10.17 - 11:43
Ступил я, неправильно заполняя ТД на сервере
На самом деле, можно так:

//---------------------------------------------------------------------------------


&НаКлиенте
...
    ф = ПолучитьФорму(
    "Обработка.ЗагрузкаДанныхИзВнешнихФайлов.Форма.Форма",
        ПараметрыФормы,
        ВладелецФормы,
        УникальныйИдентификатор);
...
    ЗаполнитьТД(ф.ТабличныйДокумент)
    
&НаСервере
процедура ЗаполнитьТД(т)
//заполняем табличный документ т
...
конецпроцедуры
//---------------------------------------------------------------------------------


P.S. Скину ещё саму процедуру заполнения ТД, как пример как я заполнял этот ТД:

&НаСервере
процедура ЗаполнитьТД(т)
    
    оАртикул_л = т.Область("Артикул").Лево;
    оКоличество_л = т.Область("Количество").Лево;
    оЦена_л = т.Область("Цена").Лево;
    
    i = 1;
    для каждого стр из Табл цикл
        i = i + 1;
        т.Область(i,оАртикул_л, i, оАртикул_л).Текст = стр.Артикул;
        т.Область(i,оКоличество_л, i, оКоличество_л).Текст = стр.Количество;
        т.Область(i,оЦена_л, i, оЦена_л).Текст = стр.Цена
    конеццикла
    
конецпроцедуры
   Филиал-msk
 
6 - 27.10.17 - 11:46
(5) > i = i + 1;
В этом месте необходимо использовать иденфтикатор "ё"

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует