Имя: Пароль:
1C
1С v8
УФ: Как сформировать поступление из документа
,
0 lisicin
 
25.11.16
06:34
Здравствуйте, прошу помочь разобраться с управляемыми формами. Есть документ Закупка, по данным которого кнопкой на форме хочу создать Поступление.

&НаСервере
Процедура СформироватьПоступление(Команда)

    Если Не ЗначениеЗаполнено(Объект.Поступление) ТОГДА
        Док = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    Иначе
        Док = Объект.Поступление.ПолучитьОбъект();
        Док.Товары.Очистить();
        Док.Услуги.Очистить();
    КонецЕсли;
    
        Док.Дата = Объект.Дата;
        ОбщегоНазначения.УстановитьНомерДокумента(Док);
        Док.Организация = Объект.Организация;
        ...//указываю прочие реквизиты документа
    
        Попытка
            Док.Комментарий = "Заполнен на основании "+Объект.Ссылка;
            Док.Записать();
            Поступление = Док.Ссылка;
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
        Сообщить("Создано: "+Объект.Поступление);

        Док.Записать(РежимЗаписиДокумента.Запись);
    
КонецПроцедуры

При выполнении документ поступления не создается. Подозреваю, что возможно нужно разделить на процедуры &НаКлиенте и &НаСервере , но не могу вникнуть как именно это сделать.
1 GenAcid
 
25.11.16
06:46
Подозреваю что документ создается.
Только вот тут чего-то не хватает:

Поступление = Док.Ссылка;

А еще почитай про Заполнить и ОбработкаЗаполнения
2 lisicin
 
25.11.16
06:54
(1) Ну да, там Объект.Поступление = Док.Ссылка;
Должно быть.

Но сути не меняет - в Поступлениях нового документа не появляется.
3 Mankubus
 
25.11.16
07:00
как понял что не создается?
4 h-sp
 
25.11.16
07:05
(2) а &НаКлиенте где у тебя? Покажи.
5 h-sp
 
25.11.16
07:15
(2) в свойствах команды какая процедура указана?
6 lisicin
 
25.11.16
07:21
(3) Зашёл в Покупки->Поступление (акты, накладные) да посмотрел.

(4) Сильно не смейся, но нигде :) Я понимаю ещё, что

Сообщить("Создано: "+Объект.Поступление);

я не увижу, т.к. она не в процедуре &НаКлиенте, но в остальном, что ещё из этого надо бы перенести в процедуру на клиенте я не знаю.
7 lisicin
 
25.11.16
07:24
(5) Приведённая в первом сообщении
8 h-sp
 
25.11.16
07:24
(6) Сообщить работает на сервере, ты ее увидишь.
9 h-sp
 
25.11.16
07:25
(7) ну так она не запускается вообще. Процедуда должна быть на клиенте.
10 lisicin
 
25.11.16
07:30
(9) Я так понимаю тогда в свойствах команды надо указать процедуру типа:

&НаКлиенте

Процедура СформироватьПоступление(Команда)
     СформироватьПоступлениеНаСервере();
КонецПроцедуры

А код из первого сообщения перенести в "СформироватьПоступлениеНаСервере"?
11 h-sp
 
25.11.16
07:32
(10) ну, да. Просто надо посмотреть для примера соседние команды, там же таких кнопок и команд сотни.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший