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