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