HelpF.pro

Восстановление партионного учета в УТ

Проблема следующая:
при выполнении стандартной обработки "проведение по партиям", непонятно почему, но граница актуальности партионного учета не сдвигается, хотя при перепроведении документов никаких ошибок не возникает.

Оказывается:
дата границы последовательности партионного учета, и документа, который установил эту границу не всега совпадают ). Ну понятно, что при перепроведении документа ГП никуда не двинеться.
Перед проведением по партиям добавил следующий код, для исправления таких ошибок, можь пригодиться кому...
Код 1C v 8.х
 Процедура ОчиститьОшибкиГраницыПоследовательности()
Запрос=Новый ЗАпрос;
Запрос.Текст=
"ВЫБРАТЬ
| ВложенныйЗапрос.Регистратор,
| ВложенныйЗапрос.Период,
| ВложенныйЗапрос.РегистраторДата,
| ВложенныйЗапрос.ЕстьДвижения
|ИЗ
| (ВЫБРАТЬ
| Последовательность.Регистратор КАК Регистратор,
| ПРЕДСТАВЛЕНИЕ(Последовательность.Регистратор) КАК РегистраторПредставление,
| Последовательность.Период КАК Период,
| ВЫБОР
| КОГДА СписанныеТоварыСрезПоследних.Регистратор ЕСТЬ NULL
| И РегистрНакопленияПартииТоваровНаСкладах.Регистратор ЕСТЬ NULL
| И РегистрНакопленияПартииТоваровПереданные.Регистратор ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьДвижения,
| Последовательность.Регистратор.Дата КАК РегистраторДата
| ИЗ
| Последовательность.ПартионныйУчет КАК Последовательность
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СписанныеТовары КАК СписанныеТоварыСрезПоследних
| ПО Последовательность.Регистратор = СписанныеТоварыСрезПоследних.Регистратор
| И (СписанныеТоварыСрезПоследних.НомерСтроки = 1)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Обороты(, , Регистратор, ) КАК РегистрНакопленияПартииТоваровНаСкладах
| ПО Последовательность.Регистратор = РегистрНакопленияПартииТоваровНаСкладах.Регистратор
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровПереданные.Обороты(, , Регистратор, ) КАК РегистрНакопленияПартииТоваровПереданные
| ПО Последовательность.Регистратор = РегистрНакопленияПартииТоваровПереданные.Регистратор) КАК ВложенныйЗапрос
|ГДЕ
| (ВложенныйЗапрос.Период <> ВложенныйЗапрос.РегистраторДата
| ИЛИ (НЕ ВложенныйЗапрос.ЕстьДвижения))";
Выборка=Запрос.Выполнить().Выбрать();
Всего=Выборка.Количество();
Тек=0;
Пока Выборка.Следующий() Цикл
Тек=Тек+1;
Состояние(""+Тек+" из "+Всего);
ОбработкаПрерыванияПользователя();
Если НЕ Выборка.Регистратор.Проведен Тогда
НаборЗаписей = Последовательности.ПартионныйУчет.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписей.Записать();
КонецЕсли;
НаборЗаписей = Последовательности.ПартионныйУчет.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписей.Прочитать();
Для Каждого СтрокаНабора Из НаборЗаписей Цикл
СтрокаНабора.Период = Выборка.Регистратор.Дата;
КонецЦикла;
Если НаборЗаписей.Модифицированность() Тогда
НаборЗаписей.Записать();
КонецЕсли;

Если (НЕ Выборка.ЕстьДвижения)Тогда
НаборЗаписей = Последовательности.ПартионныйУчет.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписей.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq8/view/871.html