Имя: Пароль:
1C
1С v8
классика жанра: внешняя обработка для УФ
0 grayshadow
 
16.10.13
00:37
Имеется типовая УТ 11.1.2.15, написана к ней внешняя обработка заполнения ТЧ для установки цен номенклатуры. Обработка должна поработать на клиенте (обязательно - юзер выбирает другой док, из которого берутся данные), а потом на сервере заполнить объект.

Т. обр. в СведенияОВнешнейОбработке у нас есть 2 варианта:

ДобавитьКоманду(ТаблицаКоманд,
    "Заполнить по перемещению",
    "КомандаЗаполнитьПоПеремещению",
    {"ВызовКлиентскогоМетода" либо "ОткрытиеФормы"}
    Истина);

Если звать клиентский метод, то управление передается во внешнюю обработку так:
ФормаВнешнегоОбъекта.ВыполнитьКоманду(ПараметрыВызоваСервера.ИдентификаторКоманды, ПараметрыВызоваСервера.ОбъектыНазначения);
(ДополнительныеОтчетыИОбработкиКлиент, строка 244)

При этом в массиве ОбъектыНазначения лежит ССЫЛКА на исходный док установки цен. Соответственно для перезаполнения объекта надо получать НОВЫЙ его экземпляр, а в исходной форме юзер ничего не увидит (пока не переоткроет ее заново; и хорошо если он после обработки ничего не поменяет).

Если делать через ОткрытиеФормы, то в параметрах формы обработки тоже передается только ссылка. У формы, конечно есть ВладелецФормы.Объект, но это ДанныеФормыСтруктура, и сам объект из них не выковыривается методом РеквизитФормыВЗначение, потому что это "чужой" реквизит, а не формы обработки...

Неужели в этой замечательной конфиге невозможно сразу показать юзеру заполненную ТЧ?:)
1 grayshadow
 
16.10.13
09:20
возьму на себя наглость апнуть тему:)
2 Defender aka LINN
 
16.10.13
09:22
РеквизитФормыВЗначение - не единственный способ преобразовать объект. Не говоря уже о том, что ДанныеФормыСтруктура и так можно менять
3 grayshadow
 
16.10.13
09:24
(2) а какие еще способы? :)
ОбъектДанныеФормыСтруктура.Товары.Очистить() - работает?!:)
4 Defender aka LINN
 
16.10.13
09:32
(3) СП какбе говорит нам:

ДанныеФормыКоллекция (FormDataCollection)
Элементы коллекции:

ДанныеФормыЭлементКоллекции
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы.

Методы:

Вставить (Insert)
Выгрузить (Unload)
Добавить (Add)
Загрузить (Load)
Индекс (IndexOf)
Итог (Total)
Количество (Count)
НайтиПоИдентификатору (FindByID)
НайтиСтроки (FindRows)
Очистить (Clear)
Получить (Get)
Сдвинуть (Move)
Сортировать (Sort)
Удалить (Delete)

Так что да, работать должно.
З.Ы. Можешь еще начать набирать в СП слово "ДанныеФормы..."
5 grayshadow
 
16.10.13
09:34
да, спасибо огромное, через ДанныеФормыСтруктура работает:)