7.7 Условие

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

  1. TopicStarter Overlay
    Kugelfangg
    Offline

    Kugelfangg Опытный в 1С

    Регистрация:
    13 фев 2008
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    подскажите пожалуйста,подскажите:
    как в обработке, которая для документа РасходнаяНакладная создает подчиненный документ СчетФактура задать условие:если есть проведенный подчиненный документ тогда прервать иначе создать и провести.
    Код:
    ДокС=СоздатьОбъект("Документ.СчетФактура"); 
    Док=СоздатьОбъект("Документ.РасходнаяНакладная");
    фак=создатьобъект("документ");
    
    док1=док.текущийдокумент(); 
    
    Если ((фак.ВыбратьПодчиненныеДокументы(,,док1))и(фак.проведен))=1 Тогда
    продолжить 
    иначе    Докс.Записать(); 
    //сообщить("!!ПОДЧИНЕННЫЙ ДОКУМЕНТ УЖЕ СУЩЕСТВУЕТ "+док1.номердок+"!!")
    КонецЕсли; 
    
    
    ошибка:Если ((фак.ВыбратьПодчиненныеДокументы(,,док1))и(фак.проведен)<<?>>)=1 Тогда
    Неправильное использование арифметической или строковой операции
    p.s заранее спасибо=)
  2. Akulina
    Offline

    Akulina Опытный в 1С

    Регистрация:
    30 авг 2007
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Ну, во-первых ошибка здесь: фак.проведен. Должно быть фак.проведен() - со скобками, это же метод.
    Второе. Почему применен метод Продолжить? Это все у тебя в цикле?
  3. TopicStarter Overlay
    Kugelfangg
    Offline

    Kugelfangg Опытный в 1С

    Регистрация:
    13 фев 2008
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    1.фак.проведен() эту ошибку я уже исправил
    2.да все это в цикле

    проблема в том, что с таким кодом(см.ниже) создается подчиненный документ, хотя уже есть подчиненный документ(и причем проведенний) =(
    Код:
    док1=док.текущийдокумент(); 
    Если ((фак.ВыбратьПодчиненныеДокументы(,,док1)=1)и(фак.проведен()=1)) Тогда  
    продолжить
    иначе    Докс.Записать();    
    КонецЕсли;
    
    
    
    
    а нужно чтобы условие было такое:если есть проведенный подчиненный документ тогда продолжить, иначе записать новый подчиненный документ
  4. Kaboom
    Offline

    Kaboom Опытный в 1С

    Регистрация:
    2 июл 2007
    Сообщения:
    158
    Симпатии:
    0
    Баллы:
    26
    Условие
    Код:
    ((фак.ВыбратьПодчиненныеДокументы(,,док1)=1)и(фак.проведен()=1))
    
    всегда будет ложным, потому что фак - пустое значение, а так как пустое значение не может быть проведенным то ... имеем то что имеем. Тоесть ты открываешь выборку документов, но не получаешь ни одного из них.
    Попробуй так:
    Код:
    док1=док.текущийдокумент(); 
    ЕстьПроведенныеДокументы = 0;
    Фак.ВыбратьПодчиненныеДокументы(,,док1);
    Пока Фак.ПолучитьДокумент() = 1 Цикл
    Если (Фак.Проведен() = 1) Тогда
    ЕстьПроведенныеДокументы = 1;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    Если ЕстьПроведенныеДокументы = 0 Тогда
    ДокС.Записать();
    Иначе
    Предупреждение("Расходная имеет проведенные подчиненные документы. Не возможно ввести счет-фактуру");
    КонецЕсли;
    
    
  5. Akulina
    Offline

    Akulina Опытный в 1С

    Регистрация:
    30 авг 2007
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Kaboom совершенно прав(а).
    Нельзя в даннм случае в одно ЕСЛИ вставлять два условия.
  6. TopicStarter Overlay
    Kugelfangg
    Offline

    Kugelfangg Опытный в 1С

    Регистрация:
    13 фев 2008
    Сообщения:
    71
    Симпатии:
    0
    Баллы:
    26
    СПасибо огромное!заработало и спасло мой мозг!=)
    тольно вместо предупреждения нужно написать продолжть.
Похожие темы
  1. Dmitrij
    Ответов:
    3
    Просмотров:
    690
  2. andryscha92
    Ответов:
    7
    Просмотров:
    1.506
Загрузка...

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