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