Имя: Пароль:
1C
 
Не получается записать документ при ВводеНаОсновании
, ,
0 Absurdus
 
16.03.15
11:34
Из ЗаказаПоставщику делаю "Ввод на основании..." ПоступлениеТМЦ. Одновременно с этим на основании Поступления должна создасться Реализация, чтобы ее номер отображался в Поступлении.

Процедура ВводНаОсновании(ДокументОснование)  
    Записать();  
        
    ЕстьРеал = 0;
    Д = СоздатьОбъект("Документ");
    Д.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент());
    Пока Д.ПолучитьДокумент() = 1 Цикл  
        Если Д.Вид() = "РеализацияРозница" Тогда    
        ЕстьРеал = 1;
        прервать;
        КонецЕсли;
    КонецЦикла;  
        
    Если ЕстьРеал = 0 Тогда
        Р = СоздатьОбъект("Документ.РеализацияРозница");
            Р.Новый();    
        Р.УстановитьНовыйНомер(СокрЛП(Константа.ПрефиксИБ) + СокрЛП(Фирма.Префикс));  
        Р.ДокОснование = ТекущийДокумент();
        Р.Записать();
    КонецЕсли;
    
        ПоказатьНомерРеализации();
КонецПроцедуры

Записать();  
{Документ.ПоступлениеТМЦ.Форма.Модуль(2421)}: Данная команда не может выполняться в формуле элемента диалога!

Как обойти?
1 asady
 
16.03.15
11:36
(0) этот код у тебя в формуле элемента диалога записан?
2 Absurdus
 
16.03.15
11:38
(1) В форме документа
3 asady
 
16.03.15
11:47
(2) заполнять реализацию надо
4 Absurdus
 
16.03.15
11:49
(3) Не надо
5 Absurdus
 
16.03.15
11:50
(3) Не работает только в ВводеНаОсновании()
    В процедуре ПриИзмененииОпреации() отрабатывается четко
6 Absurdus
 
16.03.15
12:15
Up
7 Fedor-1971
 
16.03.15
12:48
Записать() - что?
В предопределённой процедуре ты пытаешься нечто записать первой строкой, что должно быть записано в твоём понимании?

Раздели на 2:
ВводНаОсновании - проверка твоих условий и заполнение вводимого документа (всё, что хочешь сделать). Работает как и положено вводу на основании.
РеакцияНаКнопкуФормы() - Записать+ВвестиНаОсновании - работает только в твоей форме.
8 Absurdus
 
16.03.15
12:59
Записать() записывает документ очевидно.
Я так понимаю, что при ВВодНаОсновании форма еще не открыта, поэтому ругается
9 Absurdus
 
16.03.15
13:04
Всё, понял. Надо сунуть создание реализации не в ВводНаОсновании, а в ПриОткрытии().
10 Absurdus
 
16.03.15
13:05
Всем спасибо, живите счастливо, до свидания
11 kudlach
 
16.03.15
13:35
7-рочка )))
У тебя текущий документ еще не записан, а ты его уже присваиваешь. ВводНаОсновании - процедура формирования НОВОГО документа.

Сделай "Записать();"  2 раза - не страшно.

Записать();
Р.ДокОснование = ТекущийДокумент();
Р.Записать();
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой