Имя: Пароль:
1C
 
Заполнение документа на основании другого документа через внешние обработки
,
0 sbabay
 
24.10.14
10:58
Как правильно делать заполнение открытого документа на основании другого ,выбираемого интерактивно, документа? Конфигурация "Бухгалтерия 3.0".

Как я понял, если в ф-ии "СведенияОВнешнейОбработке" использование команды поставить ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыЗаполнениеФормы();
то вызывается код, расположенный в модуле внешней обработки ("ВыполнитьКоманду"), т.е. не будет возможности выбрать документ-основание.
Открывать форму внешней обработки, где будет один реквизит с документом-основанием и кнопкой "заполнить" - тоже не хочется.
Остается один вариант: поставить "использование" = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода()
и уже в модуле формы обработки на клиенте писать все в "ВыполнитьКоманду".
Так? Или я не до конца понял механизмы БСП?
1 sbabay
 
24.10.14
11:53
Неужели никто такое не делал?
2 sbabay
 
24.10.14
15:14
эх
3 ssh2QQ6
 
24.10.14
15:16
Метод Заполнить(Основание) есть
4 sbabay
 
24.10.14
15:32
Я встраиваюсь через механизм внешних отчетов и обработок.
Для пользователя все выглядит примерно так:
1. Жмакает "Заполнить" и там выбирает нужный пункт
2. Далее открывается форма выбора документа-основания. Выбирает
3. Заполняется тч приемника по тч основания. Желательно без сохранения результата.

Почему сделано так, а не через обработку заполнения - не спрашивайте
5 sbabay
 
24.10.14
15:35
Я вообще хочу понять как надо заполнять форму. Передавать ее с сервера на клиент нельзя. Но выбрать источник мне надо до заполнения, поэтому вызов методов модуля обработки сразу из документа-приемника не катит.
6 Жан Пердежон
 
24.10.14
15:37
надо "Открывать форму внешней обработки"
и в ПриОткрытии() писать код
7 sbabay
 
24.10.14
15:38
Но реквизиты источника мне доступны только на сервере, поэтому его надо будет вызывать, но туда я уже не передам форму владельца (форму документа)
8 sbabay
 
24.10.14
15:39
(6) ну и как бы писать в ПриОткрытии не надо. Надо в "ВыполнитьКоманду"
9 Жан Пердежон
 
24.10.14
15:41
(8) да, по сути тоже самое
10 sbabay
 
24.10.14
15:48
(9) по БСП не тоже самое.
Ну и самое главное - не прокатит
11 sbabay
 
24.10.14
16:27
В общем нашел способ, который мне кажется должен называться "через одно место", но как сделать по-ругому я пока не знаю. Оставлю здесь для потомков. А вдруг и гуру какие прибегут и поправят

В модуле формы обработки пишем так:

&НаКлиенте
Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения) Экспорт
    
    ВыбранныйДокументОснование = ОткрытьФормуМодально("Документ.ПередачаОС.ФормаВыбора",,ЭтаФорма);
    Если не ЗначениеЗаполнено(ВыбранныйДокументОснование) Тогда Возврат;    КонецЕсли;
    
    ОбъектВладельца = ВладелецФормы.Объект;
    ЗаполнитьТЧ(ОбъектВладельца, ВыбранныйДокументОснование);
    
    Для каждого СтрокаОбъекта Из ОбъектВладельца.ТабЧасть Цикл
        НоваяСтрока = ВладелецФормы.Объект.ТабЧасть.добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаОбъекта);    
    КонецЦикла;    
    
    ВладелецФормы.Модифицированность = Истина;
КонецПроцедуры

&НаСервере
Функция ЗаполнитьТЧОС(ПриемникДанныеФормы, ИсточникСсылка)
    Основание = ИсточникСсылка;
    Для Каждого СтрокаОснования Из Основание.ОС Цикл
        НоваяСтрока              = ПриемникДанныеФормы.ТабЧасть.добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаОснования);
    КонецЦикла;
КонецФункции