Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Заполнение документа программно через обработку

Заполнение документа программно через обработку
Я
   Peka50
 
25.05.21 - 09:12
Создана обработка для программного создания и заполнения документа:

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

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

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

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

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

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

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

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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.