Имя: Пароль:
1C
1С v8
Заполнение документа программно через обработку
0 Peka50
 
25.05.21
09:12
Создана обработка для программного создания и заполнения документа:

&НаКлиенте
Процедура СоздатьДокумент(Команда)
    
    СозданныйДокумент = СоздатьДокументНаСервере();
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Ключ", СозданныйДокумент);
    
    Форма = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента", ПараметрыФормы);
    Форма.ЗаполнитьТоваром();

    ЗаписатьДокументаНаСервере(СозданныйДокумент);

КонецПроцедуры

&НаСервере
Функция СоздатьДокументНаСервере()
    
    ДанныеЗаполнения = Новый Структура ("Дата", ТекущаяДата());
    Документ = Документы.РеализацияТоваровУслуг.СоздатьДокумент();

    Документ.Заполнить(ДанныеЗаполнения);
    Документ.Записать();
    
    Возврат ДокументаАванса.Ссылка;
    
КонецФункции

&НаСервере
Процедура ЗаписатьДокументаНаСервере(СозданныйДокумент)

    ОбрабатываемыйДокумента = СозданныеДокумент.ПолучитьОбъект();
    ОбрабатываемыйДокумента.Записать(РежимЗаписиДокумента.Проведение);
    
КонецПроцедуры

Табличная часть в открытой форме заполняется. но документ проводится с пустой табличной частью.
Как это исправить ?
1 ДенисЧ
 
25.05.21
09:14
Наверное, избавиться от создания нового документа в серверной процедуре?
2 2S
 
25.05.21
09:14
пиши в объект, если на сервере
3 Serg_1960
 
25.05.21
09:15
Возврат ДокументаАванса.Ссылка О_О
4 Peka50
 
25.05.21
09:27
(3) Это описка, нужно Возврат Документ;
Обработка отрабатываем. Проблема в сохраненном документе.
5 Peka50
 
25.05.21
09:28
(1) А где его создавать ?
6 Serg_1960
 
25.05.21
09:29
Если Вы используете Форма.ЗаполнитьТоваром(), то почему бы Вам не использовать ЗаписатьВФорме()?
7 Peka50
 
25.05.21
09:30
Проблема в том, что Форма.ЗаполнитьТоваром(); - это длительная операция.
И пока документ заполняется он записуется и проводится.
8 Peka50
 
25.05.21
09:31
(6) Потому что ЗаполнитьТоваром() это процедура формы.
9 Serg_1960
 
25.05.21
09:52
(7) Проблема в том, что Вы не до конца осознаёте насколько открытая Вами форма автономна и независима от Вашего алгоритма :)
10 Peka50
 
25.05.21
09:55
(9) Нет моего алгоритма, есть алгоритм формы ЗаполнитьТоваром().
В отрытой форме табличная часть заполняется.
11 Serg_1960
 
25.05.21
10:08
Ёпрст :)
Форма = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента", ПараметрыФормы);
Форма.Открыть();
Форма.ЗаполнитьТоваром();
Форма.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
Форма.Закрыть();
12 Peka50
 
25.05.21
10:16
(11) Метод объекта не обнаружен (ЗаписатьВФорме)
{ВнешняяОбработка.ПомощникРасчетаЗаработнойПлаты.Форма.Форма.Форма(83)}:    Форма.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
13 Peka50
 
26.05.21
13:37
(11) Не срабатывает так как форма открывается в обработке.
14 Serg_1960
 
26.05.21
15:44
(13) Не срабатывает так, как Вы не сообщали толстый или тонкий клиент, управляемые или обычные формы у Вас.
15 Peka50
 
27.05.21
08:51
(14) А разве по коду не видно что это тонкий клиент.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший