8.х Не очищаются движения документа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем php5, 15 июн 2009.

  1. TopicStarter Overlay
    php5
    Offline

    php5

    Регистрация:
    20 фев 2007
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Код:
     
    Процедура ОбработкаПроведения(Отказ, Режим)
    
    // проведем по регистру заказов
    НаборЗаписейЗаказы = Движения.Заказы;
    ...
    Отказ = НаборЗаписейЗаказы.КорректировкаЗаказа();
    
    // проведем по регистру остатков
    НаборЗаписейОстатки=Движения.Остатки;
    ...
    Отказ = НаборЗаписейОстатки.Приход();
    
    // выведем сообщения об ошибках и предупреждениях
    дкВыводРезультатовОбработки(ЭтотОбъект,Отказ);
    
    КонецПроцедуры
    
    
    При проведении документа, если по регистру остатков Отказ = Истина, то при следующей попытке провести документ 'Движения.Заказы' уже не пустая а с записями из предыдущей попытки. Почему? :unsure:
  2. DmitryS
    Offline

    DmitryS Опытный в 1С

    Регистрация:
    20 июл 2007
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    1. Не вижу где используется флаг "Отказ", исли это флаг.
    2. Покажите функцию "КорректировкаЗаказа()".
    3. Установлено ли в свойствах документа автоматическое удаление движений?

    и кстати было бы не плохо взглянуть на "архитектуру" регистров "Заказы" и "Остатки".
  3. TopicStarter Overlay
    php5
    Offline

    php5

    Регистрация:
    20 фев 2007
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    1,2. Отказ - Булево, флаг. Вот пример использования:
    Код:
    Отказ = НаборЗаписейЗаказы.КорректировкаЗаказа();
    
    .
    Если все нормально по регистру Заказы, то функция "КорректировкаЗаказа()" возвращает "Истина", иначе "Ложь".
    3. Установлено.
  4. DmitryS
    Offline

    DmitryS Опытный в 1С

    Регистрация:
    20 июл 2007
    Сообщения:
    119
    Симпатии:
    0
    Баллы:
    26
    Вчитался в Ваш вопрос, думаю нужно попробовать проверять флаг "Отказ", например:

    Код:
    Если НЕ Отказ Тогда
    НаборЗаписейОстатки=Движения.Остатки;
    ...
    Отказ = НаборЗаписейОстатки.Приход();   
    КонецЕсли;
    
    
  5. TopicStarter Overlay
    php5
    Offline

    php5

    Регистрация:
    20 фев 2007
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    В общем решение такое:
    Код:
    Процедура ОбработкаПроведения(Отказ, Режим)
    
    // проведем по регистру остатков
    НаборЗаписейОстатки=Движения.Остатки;
    ...
    Отказ = НаборЗаписейОстатки.Приход();
    
    Если Отказ Тогда
    дкВыводРезультатовОбработки(ЭтотОбъект,Отказ);
    // дальше смысла не имеет
    Возврат;
    КонецЕсли;
    
    // проведем по регистру заказов
    НаборЗаписейЗаказы = Движения.Заказы;
    ...
    Отказ = НаборЗаписейЗаказы.КорректировкаЗаказа();
    
    // выведем сообщения об ошибках и предупреждениях
    дкВыводРезультатовОбработки(ЭтотОбъект,Отказ);
    
    КонецПроцедуры
    

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