7.7 Проблема с открытием формы и записью в другой документ

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем CyberNut, 17 авг 2007.

  1. TopicStarter Overlay
    CyberNut
    Offline

    CyberNut

    Регистрация:
    17 авг 2007
    Сообщения:
    14
    Симпатии:
    0
    Баллы:
    1
    Такая проблема:
    Есть Документы "Заказ" и "Накладная".
    Документ "Заказ" имеет реквизит СтатусЗаказа, который может принимать значения Заявка, Выдан, Выполнен и Отказ.
    Когда Заказ становится Выполнен, то нужно создать документ "Накладную" (для каждого выполненного заказа должна существовать одна Накладная). Т.е. получается что документ Накладная как бы подчинен документу Заявка, но подчиненных документов в 1С как я понимаю не бывает.. поэтому я решил в документе "Заявка" хранить номер соответствующей ему накладной (НомерНакладной), а в документе Накладная приходится хранить номер соовтетсвующего Заказа.
    Теперь мне нужно чтобы при выборе в "СтатусеЗаявки" значения "Выполнен" открывался документ "Накладная" и потом номер этой созданной накладной сохранялся в документе с этим заказом.
    При выборе так же надо обработать ситуацию, "вдруг Накладная уже создавалась для данного заказа", и если она была уже создана, то открыть эту существующую накладную.

    Делаю я это так :
    Код:
    //Документ Заказ
    Процедура ПриЗаписи()
    
    перем НомерДокумента;    
    НомерДокумента = НомерДок;
    
    ...................
    
    Если (СтатусЗаказа = Перечисление.СтатусЗаказа.СтатусЗаказаВыполнен ) Тогда
    
    Если НомерНакладной <> 0 Тогда
    
    ДокНакладная = СоздатьОбъект("Документ.Накладная");
    
    флаг = ДокНакладная.НайтиПоНомеру(НомерНакладной,Дата(0));
    
    Если флаг = 1 Тогда
    Сигнал();
    Предупреждение("Для этого заказа уже создавалась накладная №" + НомерНакладной + " .");
    флаг  = ОткрытьФорму(ДокНакладная, НомерДокумента,0);
    Иначе
    НомерНакладной = 0;
    флаг = ОткрытьФорму("Документ.Накладная", НомерДокумента,0);
    
    КонецЕсли;
    КонецЕсли;
    
    КонецЕсли;
    
    КонецПроцедуры
    
    тут:
    флаг = ОткрытьФорму(ДокНакладная, НомерДокумента,0);
    когда я пытаюсь открыть существующую накладную, то ничего не появляется :(

    А тут :
    флаг = ОткрытьФорму("Документ.Накладная", НомерДокумента,0);
    когда открываю для первого ввода накладную, то форма открывается через раз :(

    И еще когда накладная все же открылась, мне нужно при ее сохранении записать ее номер в документ Заказ, но т.к. документ Заказ еще открыт, пишет что документ Заблокирован
    Делаю это так :
    Код:
    //Документ Накладная
    Процедура ВводНового()
    
    Если (Форма.Параметр <> 0) Тогда
    НомерДокументаЗаказа = Форма.Параметр;
    КонецЕсли;    
    
    КонецПроцедуры
    
    Процедура ПриЗаписи()
    
    ДокЗаказ = СоздатьОбъект("Документ.Заказ");
    
    флаг = ДокЗаказ.НайтиПоНомеру(НомерДокументаЗаказа,Дата(0));
    Если флаг = 1 Тогда
    
    ДокЗаказ.НомерНакладной = НомерДок;
    ДокЗаказ.Записать();
    
    КонецЕсли;
    
    КонецПроцедуры
    
    
    В общем подскажите новичку как это грамотней реализовать .
  2. Tiger
    Offline

    Tiger Опытный в 1С

    Регистрация:
    12 июл 2006
    Сообщения:
    489
    Симпатии:
    0
    Баллы:
    26
    Это почему Вы так решили?
    А что же тогда делать с пунктом меню "Действия - Подчиненные документы"?
    Возьмите типовую конфигурацию, (хотя бы "Торговля и склад") и посмотрите как там реализована связка документов Заявка покупателя и Реализация. Обратите внимание на реквизит ДокОснование.

Поделиться этой страницей