Последовательности и РИБ

Случилась такая история, что в план обмена Полный не были включены Последовательности, в результате документы из филиала к нам приходили, но при проведении по партиям они не пересчитывались. Чтоб исправить данную проблему набросал кусочек кода, для разового выполнения. Хочу поделиться:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
|   ПартионныйУчет.Регистратор
|ИЗ
|   Последовательность.ПартионныйУчет КАК ПартионныйУчет"
;
МассивРегистратор = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Регистратор");

Для Каждого
ДокМета Из Метаданные.Последовательности.ПартионныйУчет.Документы Цикл
   
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                   |    ПартионныйУчет.Регистратор
                   |ИЗ
                   |    Последовательность.ПартионныйУчет КАК ПартионныйУчет
                   |ГДЕ
                   |    ПартионныйУчет.Регистратор ССЫЛКА Документ.ТребованиеНакладная
                   |    И ПартионныйУчет.Период >= ДАТАВРЕМЯ(2011, 1, 1)"
;
   
Запрос.Текст = СтрЗаменить(Запрос.Текст,"ТребованиеНакладная",ДокМета.Имя);
   
Выборка = Запрос.Выполнить().Выбрать();
   
КолВоУжеВПоследовательности = Выборка.Количество();
    Если
КолВоУжеВПоследовательности = 0 Тогда
       
Сообщить("Пропускаю "+ДокМета.Имя+", в последовательности ничего нет!");
        Продолжить;
    Иначе
       
Сообщить("Для "+ДокМета.Имя+", в последовательности уже "+
                
КолВоУжеВПоследовательности+" док-тов.");
    КонецЕсли;

   
Запрос.Текст = "ВЫБРАТЬ
                   |    ТребованиеНакладная.Ссылка
                   |ИЗ
                   |    Документ.ТребованиеНакладная КАК ТребованиеНакладная
                   |ГДЕ
                   |    ТребованиеНакладная.Дата >= ДАТАВРЕМЯ(2011, 1, 1)
                   |    И ТребованиеНакладная.Проведен = ИСТИНА
                   |    И (НЕ ТребованиеНакладная.Ссылка В (&МассивРегистратор))
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ТребованиеНакладная.Дата"
;
   
Запрос.Текст = СтрЗаменить(Запрос.Текст,"ТребованиеНакладная",ДокМета.Имя);
   
Запрос.УстановитьПараметр("МассивРегистратор",МассивРегистратор);
   
Выборка = Запрос.Выполнить().Выбрать();
   
ОбщееКолВо = Выборка.Количество();
   
Сообщить("Обрабатываю "+ДокМета.Имя+", найдено "+ОбщееКолВо+" не в последовательности!");
    Пока
Выборка.Следующий() Цикл
       
Док = Выборка.Ссылка;
        Попытка
           
УправлениеЗапасамиПартионныйУчет.ЗарегистрироватьДокументВПоследовательностяхПартионногоУчетаНаСервере(Док,
           
Док.Дата, Док.Организация,
            ?(
Док.Метаданные().Реквизиты.Найти("ОтражатьВУправленческомУчете")=Неопределено,
                      Истина,
Док.ОтражатьВУправленческомУчете),
            ?(
Док.Метаданные().Реквизиты.Найти("ОтражатьВБухгалтерскомУчете")=Неопределено,
                      Ложь,
Док.ОтражатьВБухгалтерскомУчете)
            );
        Исключение
           
Сообщить(ОписаниеОшибки());
            Продолжить;
        КонецПопытки;
       
ОбщееКолВо = ОбщееКолВо - 1;
       
Состояние("Осталось "+ОбщееКолВо+" ("+Док+")");
    КонецЦикла;
КонецЦикла;

Обрабатываем только документы 2011 года, нам ранее не надо.

Похожие материалы

Справочники

Документы

Отчеты

Обработки