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