#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция ПредставлениеГруппЗатрат() Экспорт
ПредставлениеГруппЗатрат = Новый Соответствие;
ГруппыЗатрат = Документы.ОтчетПереработчика2_5.ТаблицаГруппыЗатрат();
Документы.ОтчетПереработчика2_5.ОбновитьГруппыЗатрат(ЭтотОбъект, ГруппыЗатрат, 0);
Для Каждого ТекГруппа Из ГруппыЗатрат Цикл
ПредставлениеГруппЗатрат.Вставить(
ТекГруппа.НомерГруппыЗатрат,
ПереработкаНаСторонеКлиентСервер.ПредставлениеГруппыЗатрат(
ТекГруппа,
ПереработкаНаСторонеКлиентСервер.ПереченьПолейГруппыЗатратОтчетаПереработчика(ГруппировкаЗатрат)));
КонецЦикла;
Возврат ПредставлениеГруппЗатрат;
КонецФункции
Процедура ИнициализироватьПараметрыЗаполненияВидовЗапасовДляПроведения(ДокументОбъект, РежимЗаписи = Неопределено) Экспорт
ДокументОбъект.ДополнительныеСвойства.Вставить(
"ПараметрыЗаполненияВидовЗапасов",
ПараметрыЗаполненияВидовЗапасов("Проведение"));
КонецПроцедуры
Процедура ЗаполнитьВидыЗапасовПриОбмене(Отказ, ТаблицыДокумента) Экспорт
ЗаполнитьАналитикиУчетаНоменклатурыВТабличныхЧастяхТоваров();
Если ТаблицыДокумента <> Неопределено Тогда
ЗаполнитьАналитикиУчетаНоменклатурыВТабличныхЧастяхТоваров(ТаблицыДокумента);
ДополнительныеСвойства.Вставить("ТаблицыЗаполненияВидовЗапасовПриОбмене", ТаблицыДокумента);
Иначе
ИмяПараметра = "ТаблицыДокумента";
ТекстИсключения = НСтр("ru = 'Для заполнения видов запасов не передан параметр ""%1"".'");
ТекстИсключения = СтрШаблон(ТекстИсключения, ИмяПараметра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
ЗаполнитьВидыЗапасов(Отказ);
ДополнительныеСвойства.Удалить("ТаблицыЗаполненияВидовЗапасовПриОбмене");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытий
Процедура ПриКопировании(ОбъектКопирования)
МаксимальныйНомерГруппыЗатрат = 0;
МаксимальныйКодСтрокиПродукция = 0;
ДокументОснование = Неопределено;
ИнициализироватьДокумент();
ВзаиморасчетыСервер.ПриКопировании(ЭтотОбъект);
Если Не ПоЗаказам Тогда
Для Каждого ТекСтрока Из ВыходныеИзделия Цикл
ТекСтрока.КодСтроки = 0;
КонецЦикла;
КонецЕсли;
ОтчетПереработчика2_5Локализация.ПриКопировании(ЭтотОбъект, ОбъектКопирования);
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
ИнициализироватьДокументПередЗаполнением();
ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
Если ТипДанныхЗаполнения = Тип("Структура") Тогда
Если ДанныеЗаполнения.Свойство("МассивЗаказов") Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения.РеквизитыШапки);
Если ДанныеЗаполнения.ПоЗаказам Тогда
ЗаполнитьНаОснованииЗаказа(ДанныеЗаполнения.МассивЗаказов[0]);
Иначе
ЗаполнитьНаОснованииДоговора(ДанныеЗаполнения.РеквизитыШапки.Договор);
КонецЕсли;
КонецЕсли;
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ЗаказПереработчику2_5") Тогда
ЗаполнитьНаОснованииЗаказа(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("ДокументСсылка.ПоступлениеТоваровОтХранителя") Тогда
ЗаполнитьНаОснованииПоступленияОтПереработчика(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.ДоговорыКонтрагентов") Тогда
ЗаполнитьНаОснованииДоговора(ДанныеЗаполнения);
КонецЕсли;
ИнициализироватьДокумент(ДанныеЗаполнения);
ДополнительныеСвойства.Вставить("НеобходимостьЗаполненияСчетаПриФОИспользоватьНесколькоСчетовЛожь", Ложь);
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(ЭтотОбъект, Ложь);
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьРеквизитыОбъекта(ЭтотОбъект, ДанныеЗаполнения);
Если Не ЗначениеЗаполнено(Менеджер) Тогда
Менеджер = Пользователи.ТекущийПользователь();
КонецЕсли;
Если Не ЗначениеЗаполнено(СпособРаспределенияЗатратНаВыходныеИзделия)
И (ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям
Или ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям
Или ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки) Тогда
СпособРаспределенияЗатратНаВыходныеИзделия =
Перечисления.СпособыРаспределенияЗатратНаВыходныеИзделия.ПоДолямСтоимости;
КонецЕсли;
ПараметрыВыбораСтатейИАналитик = Документы.ОтчетПереработчика2_5.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ОбработкаЗаполнения(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ВзаиморасчетыСервер.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения);
ОтчетПереработчика2_5Локализация.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения, СтандартнаяОбработка);
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
ИсправлениеДокументов.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи, РежимПроведения);
ПроведениеДокументов.ПередЗаписьюДокумента(ЭтотОбъект, РежимЗаписи, РежимПроведения);
Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
ЕстьКорректировки = Ложь;
ЕстьСФ = Ложь;
ЗакупкиСервер.ПроверитьНаличиеКорректировокИСчетовФактур(Ссылка, Ссылка, ЕстьКорректировки, ЕстьСФ);
Если ЕстьКорректировки Тогда
ЗакупкиСервер.СообщитьОбОшибкахОтменаПроведенияЕстьКорректировки(Ссылка,Отказ);
КонецЕсли;
КонецЕсли;
ПараметрыОкругления = НоменклатураСервер.ПараметрыОкругленияКоличестваШтучныхТоваров();
ПараметрыОкругления.ИмяТЧ = "ВыходныеИзделия";
НоменклатураСервер.ОкруглитьКоличествоШтучныхТоваров(ЭтотОбъект, РежимЗаписи, ПараметрыОкругления);
ЗаказыСервер.УстановитьКлючВСтрокахТабличнойЧасти(
ЭтотОбъект, "ВыходныеИзделия", "МаксимальныйКодСтрокиПродукция", "КодСтрокиПродукция");
Для Каждого ТекСтрока Из ВыходныеИзделия Цикл
Если Не ЗначениеЗаполнено(ТекСтрока.ЗаказПереработчику) Тогда
ТекСтрока.ЗаказПереработчику = ЗаказПереработчику;
КонецЕсли;
КонецЦикла;
Для Каждого ТекСтрока Из ПобочныеИзделия Цикл
Если Не ЗначениеЗаполнено(ТекСтрока.ЗаказПереработчику) Тогда
ТекСтрока.ЗаказПереработчику = ЗаказПереработчику;
КонецЕсли;
КонецЦикла;
Для Каждого ТекСтрока Из Услуги Цикл
Если Не ЗначениеЗаполнено(ТекСтрока.ЗаказПереработчику) Тогда
ТекСтрока.ЗаказПереработчику = ЗаказПереработчику;
КонецЕсли;
КонецЦикла;
СуммаДокумента = Услуги.Итог("СуммаСНДС");
Если Не ЗначениеЗаполнено(Номер) Тогда
УстановитьНовыйНомер();
КонецЕсли;
ПараметрыУказанияСерий =
НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ОтчетПереработчика2_5);
НоменклатураСервер.ОчиститьНеиспользуемыеСерии(ЭтотОбъект, ПараметрыУказанияСерий.ВыходныеИзделия);
НоменклатураСервер.ОчиститьНеиспользуемыеСерии(ЭтотОбъект, ПараметрыУказанияСерий.ПобочныеИзделия);
НоменклатураСервер.ОчиститьНеиспользуемыеСерии(ЭтотОбъект, ПараметрыУказанияСерий.МатериалыИРаботы);
ВзаиморасчетыСервер.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи);
ПараметрыРегистрации = Документы.ОтчетПереработчика2_5.ПараметрыРегистрацииСчетовФактурПолученных(ЭтотОбъект);
УчетНДСУП.АктуализироватьСчетаФактурыПолученныеПередЗаписью(ПараметрыРегистрации, РежимЗаписи, ПометкаУдаления, Проведен);
ПараметрыВыбораСтатейИАналитик = Документы.ОтчетПереработчика2_5.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПередЗаписью(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ОбщегоНазначенияУТ.ЗаполнитьИдентификаторыДокумента(
ЭтотОбъект,
"ВыходныеИзделия,ПобочныеИзделия,МатериалыИРаботы,Услуги");
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ЗаполнитьАналитикиУчетаНоменклатурыВТабличныхЧастяхТоваров();
ЗаполнитьВидыЗапасов(Отказ);
ИначеЕсли РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
ВидыЗапасовМатериалы.Очистить();
ВидыЗапасовИзделия.Очистить();
КонецЕсли;
Если Не ЗначениеЗаполнено(Автор) И ЭтоНовый() Тогда
Автор = Пользователи.ТекущийПользователь();
КонецЕсли;
НастройкаСчетовУчетаСервер.ПередЗаписью(ЭтотОбъект, Документы.ОтчетПереработчика2_5.ПараметрыНастройкиСчетовУчета());
ОбщегоНазначенияУТ.ПодготовитьДанныеДляСинхронизацииКлючей(ЭтотОбъект, ПараметрыСинхронизацииКлючей());
ОтчетПереработчика2_5Локализация.ПередЗаписью(ЭтотОбъект, Отказ, РежимЗаписи, РежимПроведения);
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
ОбщегоНазначенияУТ.СинхронизироватьКлючи(ЭтотОбъект);
Если Не Отказ
И Не ПометкаУдаления
И Не ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
Документы.ОтчетПереработчика2_5.СформироватьПартииПроизводства(ЭтотОбъект);
КонецЕсли;
ОтчетПереработчика2_5Локализация.ПриЗаписи(ЭтотОбъект, Отказ);
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ЗатратыСервер.ПроверитьИспользованиеПартионногоУчета22(ЭтотОбъект, Дата, Отказ);
МассивНепроверяемыхРеквизитов = Новый Массив;
ИспользоватьУслуги = (УслугиПоПереработке = Перечисления.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете);
#Область СоответствиеОтчетовПереработчикаЗаказуПереработчику
ПереработкаНаСтороне.ПроверитьСоответствиеОтчетовПереработчикаЗаказуПереработчику(ЭтотОбъект, Отказ);
#КонецОбласти
#Область ТЧ_Характеристика_и_Количество
ПараметрыПроверкиКоличества = Документы.ОтчетПереработчика2_5.ПараметрыТЧДляОкругления();
НоменклатураСервер.ПроверитьЗаполнениеКоличества(
ЭтотОбъект, ПроверяемыеРеквизиты, Отказ, ПараметрыПроверкиКоличества["ВыходныеИзделия"]);
НоменклатураСервер.ПроверитьЗаполнениеКоличества(
ЭтотОбъект, ПроверяемыеРеквизиты, Отказ, ПараметрыПроверкиКоличества["ПобочныеИзделия"]);
НоменклатураСервер.ПроверитьЗаполнениеКоличества(
ЭтотОбъект, ПроверяемыеРеквизиты, Отказ, ПараметрыПроверкиКоличества["МатериалыИРаботы"]);
ПараметрыПроверки = НоменклатураСервер.ПараметрыПроверкиЗаполненияХарактеристик();
ПараметрыПроверки.ИмяТЧ = "ВыходныеИзделия";
НоменклатураСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект, МассивНепроверяемыхРеквизитов, Отказ, ПараметрыПроверки);
ПараметрыПроверки = НоменклатураСервер.ПараметрыПроверкиЗаполненияХарактеристик();
ПараметрыПроверки.ИмяТЧ = "ПобочныеИзделия";
НоменклатураСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект, МассивНепроверяемыхРеквизитов, Отказ, ПараметрыПроверки);
ПараметрыПроверки.ИмяТЧ = "МатериалыИРаботы";
НоменклатураСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект, МассивНепроверяемыхРеквизитов, Отказ, ПараметрыПроверки);
Если ИспользоватьУслуги Тогда
ПараметрыПроверки.ИмяТЧ = "Услуги";
НоменклатураСервер.ПроверитьЗаполнениеХарактеристик(ЭтотОбъект, МассивНепроверяемыхРеквизитов, Отказ, ПараметрыПроверки);
КонецЕсли;
#КонецОбласти
#Область ТЧ_Серия
ПараметрыУказанияСерий =
НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ОтчетПереработчика2_5);
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(ПараметрыУказанияСерий.ВыходныеИзделия);
МассивПараметров.Добавить(ПараметрыУказанияСерий.ПобочныеИзделия);
МассивПараметров.Добавить(ПараметрыУказанияСерий.МатериалыИРаботы);
НоменклатураСервер.ПроверитьЗаполнениеСерий(ЭтотОбъект,
МассивПараметров,
Отказ,
МассивНепроверяемыхРеквизитов);
#КонецОбласти
#Область ТЧ_ДоляСтоимости
ПроизводствоСервер.ПроверитьЗаполнениеДолейСтоимостиВТабличнойЧасти(
ЭтотОбъект, "ВыходныеИзделия", МассивНепроверяемыхРеквизитов, Отказ);
#КонецОбласти
#Область ПроверкаСтатейИАналитик
ПараметрыВыбораСтатейИАналитик = Документы.ОтчетПереработчика2_5.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты, ПараметрыВыбораСтатейИАналитик);
#КонецОбласти
#Область ТЧ_ГруппыЗатрат
ПроверитьЗаполнениеГруппЗатрат(Отказ, МассивНепроверяемыхРеквизитов);
#КонецОбласти
Если ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции
Или ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукцииИНазначениям Тогда
МассивНепроверяемыхРеквизитов.Добавить("СпособРаспределенияЗатратНаВыходныеИзделия");
КонецЕсли;
ЭтоПрослеживаемыйДокумент = УчетПрослеживаемыхТоваровЛокализация.ЭтоПрослеживаемыйДокумент(ВыходныеИзделия, Дата)
Или УчетПрослеживаемыхТоваровЛокализация.ЭтоПрослеживаемыйДокумент(ПобочныеИзделия, Дата);
Если ЭтоПрослеживаемыйДокумент Тогда
УчетПрослеживаемыхТоваровЛокализация.ПроверитьКорректностьНастроекТоваровРНПТ(ЭтотОбъект, ВыходныеИзделия, Дата);
УчетПрослеживаемыхТоваровЛокализация.ПроверитьКорректностьНастроекТоваровРНПТ(ЭтотОбъект, ПобочныеИзделия, Дата);
КонецЕсли;
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);
Если Не Отказ И ОбщегоНазначенияУТ.ПроверитьЗаполнениеРеквизитовОбъекта(ЭтотОбъект, ПроверяемыеРеквизиты) Тогда
Отказ = Истина;
КонецЕсли;
ПроизводствоСервер.ПроверитьЗаполнениеПолучателяВТабличнойЧасти(ЭтотОбъект, "ВыходныеИзделия" , Отказ);
ПроизводствоСервер.ПроверитьЗаполнениеПолучателяВТабличнойЧасти(ЭтотОбъект, "ПобочныеИзделия", Отказ);
#Область УчетНДС
ПараметрыПроверки = УчетНДСУП.ПараметрыПроверкиЗаполнениеДокументаПоНалогообложениюНДСЗакупки();
ПараметрыПроверки.ИмяТабличнойЧасти = "ВыходныеИзделия";
ПараметрыПроверки.ИмяРеквизитаСтатьяРасходов = "СтатьяРасходов";
ПараметрыПроверки.ИмяРеквизитаАналитикаРасходов = "АналитикаРасходов";
УчетНДСУП.ПроверитьЗаполнениеДокументаЗакупкиПоНалогообложениюНДС(
ЭтотОбъект,
НалогообложениеНДС,
ПараметрыПроверки,
Отказ);
ПараметрыПроверки.ИмяТабличнойЧасти = "ПобочныеИзделия";
УчетНДСУП.ПроверитьЗаполнениеДокументаЗакупкиПоНалогообложениюНДС(
ЭтотОбъект,
НалогообложениеНДС,
ПараметрыПроверки,
Отказ);
ПараметрыПроверки = УчетНДСУП.ПараметрыПроверкиЗаполненияДокументаПоВидуДеятельностиНДС();
ПараметрыПроверки.ИмяТабличнойЧасти = "ВыходныеИзделия";
ПараметрыПроверки.ИмяРеквизитаСтатьяРасходов = "СтатьяРасходов";
ПараметрыПроверки.ИмяРеквизитаАналитикаРасходов = "АналитикаРасходов";
ПараметрыПроверки.ИмяРеквизитаСтатьяАктивовПассивов = "СтатьяРасходов";
ПараметрыПроверки.ИмяРеквизитаАналитикаАктивовПассивов = "АналитикаАктивовПассивов";
УчетНДСУП.ПроверитьЗаполнениеДокументаПоВидуДеятельностиНДС(
ЭтотОбъект,
ЗакупкаПодДеятельность,
ПараметрыПроверки,
Отказ);
ПараметрыПроверки.ИмяТабличнойЧасти = "ПобочныеИзделия";
УчетНДСУП.ПроверитьЗаполнениеДокументаПоВидуДеятельностиНДС(
ЭтотОбъект,
ЗакупкаПодДеятельность,
ПараметрыПроверки,
Отказ);
#КонецОбласти
ОтчетПереработчика2_5Локализация.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ПараметрыЗаполнения = ПараметрыЗаполненияВидовЗапасов("Проведение");
ДополнительныеСвойства.Вставить("ПараметрыЗаполненияВидовЗапасов", ПараметрыЗаполнения);
ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
ПараметрыРегистрации = Документы.ОтчетПереработчика2_5.ПараметрыРегистрацииСчетовФактурПолученных(ЭтотОбъект);
УчетНДСУП.АктуализироватьСчетаФактурыПолученныеПриПроведении(ПараметрыРегистрации);
ОтчетПереработчика2_5Локализация.ОбработкаПроведения(ЭтотОбъект, Отказ, РежимПроведения);
КонецПроцедуры
Процедура ОбработкаУдаленияПроведения(Отказ)
ПараметрыЗаполнения = ПараметрыЗаполненияВидовЗапасов("Проведение");
ДополнительныеСвойства.Вставить("ПараметрыЗаполненияВидовЗапасов", ПараметрыЗаполнения);
ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
ПараметрыРегистрации = Документы.ОтчетПереработчика2_5.ПараметрыРегистрацииСчетовФактурПолученных(ЭтотОбъект);
УчетНДСУП.АктуализироватьСчетаФактурыПолученныеПриУдаленииПроведения(ПараметрыРегистрации);
ОтчетПереработчика2_5Локализация.ОбработкаУдаленияПроведения(ЭтотОбъект, Отказ);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ИнициализацияИЗаполнение
Процедура ЗаполнитьНаОснованииЗаказа(ДокументОснование) Экспорт
Документы.ОтчетПереработчика2_5.ЗаполнитьНаОснованииЗаказа(ЭтотОбъект, ДокументОснование);
КонецПроцедуры
Процедура ЗаполнитьНаОснованииДоговора(Договор)
РеквизитыОснования =
ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Договор, "Организация, Партнер");
ТекстыЗапроса = Новый Массив;
ТекстыЗапроса.Добавить("
|ВЫБРАТЬ
| РеквизитыДоговора.Организация КАК Организация,
| РеквизитыДоговора.Подразделение КАК Подразделение,
| РеквизитыДоговора.Партнер КАК Партнер,
| РеквизитыДоговора.Контрагент КАК Контрагент,
| РеквизитыДоговора.Ссылка КАК Договор,
| РеквизитыДоговора.НаправлениеДеятельности КАК НаправлениеДеятельности,
| РеквизитыДоговора.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| РеквизитыДоговора.ВалютаВзаиморасчетов КАК Валюта
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК РеквизитыДоговора
|
|ГДЕ
| РеквизитыДоговора.Ссылка = &Договор
|");
Отборы = Новый Структура;
ОтборРезервыТоваров = Новый Соответствие;
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(
ОтборРезервыТоваров,
"ОстаткиТоваров.АналитикаУчетаНоменклатуры.МестоХранения",
"&Договор",
"=");
Отборы.Вставить("ОтборРезервыТоваров", ОтборРезервыТоваров);
ТекстыЗапроса.Добавить(Документы.ОтчетПереработчика2_5.ТекстЗапросаТоварыБезЗаказаКОформлению(Отборы));
Запрос = Новый Запрос;
Если ОбщегоНазначенияУТ.РежимОтладки() Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
КонецЕсли;
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.УстановитьПараметр("Организация", РеквизитыОснования.Организация);
Запрос.УстановитьПараметр("Партнер", РеквизитыОснования.Партнер);
Запрос.УстановитьПараметр("Договор", Договор);
Результат = Запрос.ВыполнитьПакет();
ЗаполнитьНаОснованииОбъектаБезЗаказа(Результат);
КонецПроцедуры
Процедура ЗаполнитьНаОснованииПоступленияОтПереработчика(ДокументОснование)
РеквизитыОснования =
ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
ДокументОснование,
"Организация, Партнер, Договор, ПоРаспоряжениям, Распоряжение");
Если РеквизитыОснования.ПоРаспоряжениям
И Не ЗначениеЗаполнено(РеквизитыОснования.Распоряжение) Тогда
ВызватьИсключение
НСтр("ru = 'Поступление от переработчика оформлено по нескольким заказам. Ввод на основании невозможен.
|Воспользуйтесь рабочим местом ""Передача в переработку"" - ""Документы к оформлению"".'",
ОбщегоНазначения.КодОсновногоЯзыка());
ИначеЕсли РеквизитыОснования.ПоРаспоряжениям
И ЗначениеЗаполнено(РеквизитыОснования.Распоряжение) Тогда
ЗаполнитьНаОснованииЗаказа(РеквизитыОснования.Распоряжение);
Возврат;
КонецЕсли;
ТекстыЗапроса = Новый Массив;
ТекстыЗапроса.Добавить("
|ВЫБРАТЬ
| РеквизитыПоступления.Ссылка КАК ДокументОснование,
| РеквизитыПоступления.Организация КАК Организация,
| РеквизитыПоступления.Подразделение КАК Подразделение,
| РеквизитыПоступления.Сделка КАК Сделка,
| РеквизитыПоступления.Партнер КАК Партнер,
| РеквизитыПоступления.Контрагент КАК Контрагент,
| РеквизитыПоступления.Договор КАК Договор,
| РеквизитыПоступления.НаправлениеДеятельности КАК НаправлениеДеятельности,
| РеквизитыПоступления.Договор.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| РеквизитыПоступления.Валюта КАК Валюта,
| РеквизитыПоступления.ВидЦены КАК ВидЦены
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя КАК РеквизитыПоступления
|
|ГДЕ
| РеквизитыПоступления.Ссылка = &ДокументОснование
|");
ТекстыЗапроса.Добавить("
|ВЫБРАТЬ
| ТоварыОснования.Номенклатура КАК Номенклатура,
| ТоварыОснования.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТоварыОснования.СтатусУказанияСерийПереданныхТоваров В (14, 18)
| ТОГДА ТоварыОснования.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия
|ПОМЕСТИТЬ ТоварыОснования
|ИЗ
| Документ.ПоступлениеТоваровОтХранителя.Товары КАК ТоварыОснования
|ГДЕ
| ТоварыОснования.Ссылка = &ДокументОснование
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Серия
|");
Отборы = Новый Структура;
ОтборРезервыТоваров = Новый Соответствие;
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(
ОтборРезервыТоваров,
"ОстаткиТоваров.АналитикаУчетаНоменклатуры.Номенклатура,
|ОстаткиТоваров.АналитикаУчетаНоменклатуры.Характеристика,
|ОстаткиТоваров.АналитикаУчетаНоменклатуры.Серия",
"ВЫБРАТЬ
| ТоварыОснования.Номенклатура,
| ТоварыОснования.Характеристика,
| ТоварыОснования.Серия
|ИЗ
| ТоварыОснования КАК ТоварыОснования");
Отборы.Вставить("ОтборРезервыТоваров", ОтборРезервыТоваров);
ОтборЗаказыПоставщикам = Новый Соответствие;
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(
ОтборЗаказыПоставщикам,
"Номенклатура, Характеристика",
"ВЫБРАТЬ
| ТоварыОснования.Номенклатура,
| ТоварыОснования.Характеристика
|ИЗ
| ТоварыОснования КАК ТоварыОснования");
Отборы.Вставить("ОтборЗаказыПоставщикам", ОтборЗаказыПоставщикам);
ТекстыЗапроса.Добавить(Документы.ОтчетПереработчика2_5.ТекстЗапросаТоварыБезЗаказаКОформлению(Отборы));
Запрос = Новый Запрос;
Если ОбщегоНазначенияУТ.РежимОтладки() Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
КонецЕсли;
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.УстановитьПараметр("ДокументОснование", ДокументОснование);
Запрос.УстановитьПараметр("Организация", РеквизитыОснования.Организация);
Запрос.УстановитьПараметр("Партнер", РеквизитыОснования.Партнер);
Запрос.УстановитьПараметр("Договор", РеквизитыОснования.Договор);
Результат = Запрос.ВыполнитьПакет();
ЗаполнитьНаОснованииОбъектаБезЗаказа(Результат);
КонецПроцедуры
Процедура ЗаполнитьНаОснованииОбъектаБезЗаказа(Результат)
РеквизитыДокумента = Результат[0].Выбрать();
Если РеквизитыДокумента.Следующий() Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, РеквизитыДокумента);
КонецЕсли;
ВыходныеИзделия.Загрузить(Результат[Результат.ВГраница()].Выгрузить());
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(ЭтотОбъект, Документы.ОтчетПереработчика2_5);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ЭтотОбъект, ПараметрыУказанияСерий.ВыходныеИзделия);
НоменклатураСервер.ОчиститьНеиспользуемыеСерии(ЭтотОбъект, ПараметрыУказанияСерий.ВыходныеИзделия);
ПараметрыУчетнойПолитики = НастройкиНалоговУчетныхПолитик.ДействующиеПараметрыНалоговУчетныхПолитикНаДату(
"УчетнаяПолитикаФинансовогоУчета",
Организация,
Дата);
ИспользоватьПлановуюСтоимость = Ложь;
Если НЕ ПараметрыУчетнойПолитики = Неопределено Тогда
ИспользоватьПлановуюСтоимость = ПараметрыУчетнойПолитики.УчетГотовойПродукцииПоПлановойСтоимости;
КонецЕсли;
Если ИспользоватьПлановуюСтоимость Тогда
ПараметрыДействия = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(ЭтотОбъект, Истина);
ПараметрыДействия.Вставить("ВидЦены", ВидЦены);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПараметрыДействия);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(ВыходныеИзделия, СтруктураДействий, Неопределено);
КонецЕсли;
ИнициализироватьДокументПослеДобавленияПродукции();
Документы.ОтчетПереработчика2_5.ЗаполнитьПобочныеИзделияМатериалыУслугиПоСпецификации(ЭтотОбъект, ВыходныеИзделия);
КонецПроцедуры
Процедура ИнициализироватьДокументПередЗаполнением()
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика2_5;
Если Не ЗначениеЗаполнено(Дата) Тогда
Дата = ТекущаяДатаСеанса();
КонецЕсли;
УслугиПоПереработке =
?(ЗначениеЗаполнено(УслугиПоПереработке),
УслугиПоПереработке,
Перечисления.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете);
Организация = ЗначениеНастроекПовтИсп.ПолучитьОрганизациюПоУмолчанию(Организация);
Валюта = ДоходыИРасходыСервер.ПолучитьВалютуУправленческогоУчета(Валюта);
ВалютаВзаиморасчетов = ДоходыИРасходыСервер.ПолучитьВалютуУправленческогоУчета(ВалютаВзаиморасчетов);
ОтборВидаЦены = Новый Структура;
ОтборВидаЦены.Вставить("ЦенаВключаетНДС", ЦенаВключаетНДС);
ОтборВидаЦены.Вставить("ИспользоватьПриВыпускеПродукции", Истина);
ВидЦены = Справочники.ВидыЦен.ВидЦеныПоУмолчанию(ВидЦены, ОтборВидаЦены);
КонецПроцедуры
Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)
Автор = Пользователи.ТекущийПользователь();
БанковскийСчетКонтрагента = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент,,БанковскийСчетКонтрагента);
МаксимальныйКодСтрокиПродукция = 0;
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
СтруктураПараметров.БанковскийСчет = БанковскийСчетОрганизации;
БанковскийСчетОрганизации = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
ГруппировкаЗатрат =
?(ЗначениеЗаполнено(ГруппировкаЗатрат),
ГруппировкаЗатрат,
Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки);
ПараметрыЗаполнения = Документы.ОтчетПереработчика2_5.ПараметрыЗаполненияВидаДеятельностиНДС(ЭтотОбъект);
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(ЗакупкаПодДеятельность, ПараметрыЗаполнения);
ПараметрыЗаполнения = Документы.ОтчетПереработчика2_5.ПараметрыЗаполненияНалогообложенияНДСЗакупки(ЭтотОбъект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(НалогообложениеНДС, ПараметрыЗаполнения);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(ЭтотОбъект);
СтруктураЗаполненияСтавкиНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(ЭтотОбъект);
СтруктураЗаполненияСтавкиНДС.ИнициализацияВходящегоДокумента = Истина;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС", СтруктураЗаполненияСтавкиНДС);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Услуги, СтруктураДействий, КэшированныеЗначения);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначения.ОбработанныеСтроки,
СтруктураДействий,
Услуги,
КэшированныеЗначения);
РеквизитыДоговора = "ТипДоговора, ВариантОформленияЗакупок";
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Договор, РеквизитыДоговора);
ХозяйственнаяОперация = Справочники.ДоговорыКонтрагентов.ХозяйственнаяОперация(РеквизитыДоговора.ТипДоговора, РеквизитыДоговора.ВариантОформленияЗакупок);
Если Не ЗначениеЗаполнено(ХозяйственнаяОперация) Тогда
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика2_5;
КонецЕсли;
КонецПроцедуры
Процедура ИнициализироватьДокументПослеДобавленияПродукции()
Назначения = ВыходныеИзделия.НайтиСтроки(Новый Структура("Назначение", Справочники.Назначения.ПустаяСсылка()));
Если Не Назначения.Количество() = ВыходныеИзделия.Количество()
И ПолучитьФункциональнуюОпцию("ИспользоватьОбособленноеОбеспечениеЗаказов") Тогда
ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукцииИНазначениям;
Иначе
ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции;
КонецЕсли;
ПараметрыВыбораСпецификаций = УправлениеДаннымиОбИзделиях.ПараметрыВыбораСпецификаций(ЭтотОбъект, Документы.ОтчетПереработчика2_5);
ДанныеОбИзделиях = Новый Массив;
Для Каждого СтрокаВыходныеИзделия Из ВыходныеИзделия Цикл
МаксимальныйНомерГруппыЗатрат = МаксимальныйНомерГруппыЗатрат + 1;
СтрокаВыходныеИзделия.НомерГруппыЗатрат = МаксимальныйНомерГруппыЗатрат;
ДанныеОбИзделии =
УправлениеДаннымиОбИзделияхКлиентСервер.СобратьДанныеОбИзделииДляВыбораСпецификации(
ЭтотОбъект,
СтрокаВыходныеИзделия,
ПараметрыВыбораСпецификаций);
ДанныеОбИзделии.Вставить("ТекущаяСпецификация", СтрокаВыходныеИзделия.Спецификация);
ДанныеОбИзделиях.Добавить(ДанныеОбИзделии);
КонецЦикла;
УправлениеДаннымиОбИзделиях.ЗаполнитьСпецификациюВСтроках(
ВыходныеИзделия,
ДанныеОбИзделиях,
ПараметрыВыбораСпецификаций);
КонецПроцедуры
#КонецОбласти
#Область ВидыЗапасов
Процедура ЗаполнитьВидыЗапасов(Отказ)
ПерезаполнитьВидыЗапасов =
ЗапасыСервер.ПроверитьНеобходимостьПерезаполненияВидовЗапасовДокумента(ЭтотОбъект)
Или ПроверитьИзменениеРеквизитовДокумента();
РаспределитьГТД = Ложь;
#Область ВидыЗапасовИзделия
МенеджерВременныхТаблиц = ВременныеТаблицыИзделий();
Если Не Проведен
Или ПерезаполнитьВидыЗапасов
Или ПроверитьИзменениеИзделий(МенеджерВременныхТаблиц) Тогда
ТаблицаВидыЗапасовИзделий = ТаблицаДляЗаполненияВидыЗапасовИзделия(МенеджерВременныхТаблиц);
ЗапасыСервер.ЗаполнитьВидыЗапасовПоУмолчанию(МенеджерВременныхТаблиц, ТаблицаВидыЗапасовИзделий);
ВидыЗапасовИзделия.Загрузить(ТаблицаВидыЗапасовИзделий);
РаспределитьГТД = Истина;
КонецЕсли;
#КонецОбласти
#Область ВидыЗапасовМатериалы
МенеджерВременныхТаблиц = ВременныеТаблицыМатериалов();
Если Не Проведен
Или ПерезаполнитьВидыЗапасов
Или ПроверитьИзменениеМатериалов(МенеджерВременныхТаблиц) Тогда
ПараметрыЗаполнения = ПараметрыЗаполненияВидовЗапасов("Материалы");
ЗапасыСервер.ЗаполнитьВидыЗапасовПоТоварамОрганизаций(
ЭтотОбъект,
МенеджерВременныхТаблиц,
Отказ,
ПараметрыЗаполнения);
ВидыЗапасовМатериалы.Свернуть(
"АналитикаУчетаНоменклатуры, ВидЗапасов, НомерГТД",
"Количество, КоличествоПоРНПТ");
ЗаполнитьДопКолонкиВидовЗапасовМатериалов(МенеджерВременныхТаблиц);
РаспределитьГТД = Истина;
КонецЕсли;
#КонецОбласти
Если Не Отказ Тогда
Если РаспределитьГТД Тогда
РаспределитьНомераГТД(Отказ);
КонецЕсли;
ОбщегоНазначенияУТ.ЗаполнитьИдентификаторыДокумента(
ЭтотОбъект,
"ВидыЗапасовИзделия,ВидыЗапасовМатериалы");
КонецЕсли;
КонецПроцедуры
Функция ПараметрыЗаполненияВидовЗапасов(ИмяТЧ, МенеджерВременныхТаблиц = Неопределено)
ПараметрыЗаполнения = ЗапасыСервер.ПараметрыЗаполненияВидовЗапасов();
ПараметрыЗаполнения.ПодбиратьВидыЗапасовПоИнтеркампани = Ложь;
ПараметрыЗаполнения.БезОтбораПоНомерамГТД = Истина;
ОтборТипЗапасов = ПараметрыЗаполнения.ОтборыВидовЗапасов.ТипЗапасов;
ОтборТипЗапасов.Очистить();
ОтборТипЗапасов.Добавить(Перечисления.ТипыЗапасов.Товар);
ОтборТипЗапасов.Добавить(Перечисления.ТипыЗапасов.Работа);
ОтборТипЗапасов.Добавить(Перечисления.ТипыЗапасов.ПродукцияПереработчика);
ОтборТипЗапасов.Добавить(Перечисления.ТипыЗапасов.ТоварНаХраненииСПравомПродажи);
Если ИмяТЧ = "Материалы" Тогда
ПараметрыЗаполнения.ИмяТЧВидыЗапасов = "ВидыЗапасовМатериалы";
ПараметрыЗаполнения.ДокументДелаетИПриходИРасход = Истина;
ПараметрыЗаполнения.ПодбиратьВТЧТоварыПринятыеНаОтветственноеХранение.Вставить(Перечисления.ТипыЗапасов.ТоварНаХраненииСПравомПродажи, "ПоНастройкамДоговораПроизводство");
ПараметрыЗаполнения.ЕстьТаблицаПриходуемыхВидовЗапасов = Истина;
ПараметрыЗаполнения.ИмяТаблицыПриходуемыхВидовЗапасов = "ВТПриходуемыеВидыЗапасовИзделия";
ИначеЕсли Не ИмяТЧ = "Проведение" Тогда
ТекстИсключения = НСтр("ru = 'Неизвестное имя табличной части видов запасов: ""%ИмяТЧ%""'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяТЧ%", ИмяТЧ);
Возврат ТекстИсключения;
КонецЕсли;
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ВременныеТаблицыИзделий()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки + &ПорядокВыходныеИзделия КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Назначение КАК Назначение,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.Количество КАК Количество,
| 0 КАК КоличествоПоРНПТ,
| ТаблицаТоваров.СписатьНаРасходы КАК СписатьНаРасходы,
| ТаблицаТоваров.Получатель КАК Получатель,
| ТаблицаТоваров.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаТоваров.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаТоваров.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаТоваров.НастройкаСчетовУчета КАК НастройкаСчетовУчета,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаТоваров.КодСтрокиПродукция КАК КодСтрокиПродукция,
| ТаблицаТоваров.ДоляСтоимости КАК ДоляСтоимости,
| ТаблицаТоваров.Сумма КАК Сумма,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыпускПродукции) КАК ХозяйственнаяОперация,
| ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка) КАК НомерГТД
|ПОМЕСТИТЬ ВтТаблицаВыходныеИзделия
|ИЗ
| &ТаблицаВыходныеИзделия КАК ТаблицаТоваров
|;
|
|ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки + &ПорядокПобочныеИзделия КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Назначение КАК Назначение,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.Количество КАК Количество,
| 0 КАК КоличествоПоРНПТ,
| ТаблицаТоваров.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаТоваров.СписатьНаРасходы КАК СписатьНаРасходы,
| ТаблицаТоваров.Получатель КАК Получатель,
| ТаблицаТоваров.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаТоваров.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаТоваров.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаТоваров.НастройкаСчетовУчета КАК НастройкаСчетовУчета,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаТоваров.Сумма КАК Сумма,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыпускПродукцииФиксированнаяСтоимость) КАК ХозяйственнаяОперация,
| ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка) КАК НомерГТД
|ПОМЕСТИТЬ ВтТаблицаПобочныеИзделия
|ИЗ
| &ТаблицаПобочныеИзделия КАК ТаблицаТоваров
|;
|
|ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Назначение КАК Назначение,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) КАК СтатьяКалькуляции,
| ТаблицаТоваров.СписатьНаРасходы КАК СписатьНаРасходы,
| ТаблицаТоваров.Получатель КАК Получатель,
| ТаблицаТоваров.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаТоваров.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаТоваров.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаТоваров.НастройкаСчетовУчета КАК НастройкаСчетовУчета,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаТоваров.КодСтрокиПродукция КАК КодСтрокиПродукция,
| ТаблицаТоваров.ДоляСтоимости КАК ДоляСтоимости,
| ТаблицаТоваров.Сумма КАК Сумма,
| ТаблицаТоваров.НомерГТД КАК НомерГТД
|ПОМЕСТИТЬ ТаблицаТоваров
|ИЗ
| ВтТаблицаВыходныеИзделия КАК ТаблицаТоваров
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Назначение КАК Назначение,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТоваров.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаТоваров.СписатьНаРасходы КАК СписатьНаРасходы,
| ТаблицаТоваров.Получатель КАК Получатель,
| ТаблицаТоваров.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаТоваров.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаТоваров.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаТоваров.НастройкаСчетовУчета КАК НастройкаСчетовУчета,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| 0 КАК КодСтрокиПродукция,
| 0 КАК ДоляСтоимости,
| ТаблицаТоваров.Сумма КАК Сумма,
| ТаблицаТоваров.НомерГТД КАК НомерГТД
|ИЗ
| ВтТаблицаПобочныеИзделия КАК ТаблицаТоваров
|;
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ВЫБОР
| КОГДА НЕ &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| ИЛИ НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ) < &ДатаНачалаУчетаПрослеживаемыхИмпортныхТоваров
| ТОГДА 0
| ИНАЧЕ ТаблицаВидыЗапасов.КоличествоПоРНПТ
| КОНЕЦ КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаВидыЗапасов.СписатьНаРасходы КАК СписатьНаРасходы,
| ТаблицаВидыЗапасов.Получатель КАК Получатель,
| ТаблицаВидыЗапасов.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаВидыЗапасов.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаВидыЗапасов.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаВидыЗапасов.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаВидыЗапасов.КодСтрокиПродукция КАК КодСтрокиПродукция,
| ТаблицаВидыЗапасов.ДоляСтоимости КАК ДоляСтоимости,
| ТаблицаВидыЗапасов.Сумма КАК Сумма
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| &ТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов
|;
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаВидыЗапасов.СписатьНаРасходы КАК СписатьНаРасходы,
| ТаблицаВидыЗапасов.Получатель КАК Получатель,
| ТаблицаВидыЗапасов.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаВидыЗапасов.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаВидыЗапасов.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаВидыЗапасов.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаВидыЗапасов.КодСтрокиПродукция КАК КодСтрокиПродукция,
| ТаблицаВидыЗапасов.ДоляСтоимости КАК ДоляСтоимости,
| ТаблицаВидыЗапасов.Сумма КАК Сумма
|ПОМЕСТИТЬ ТаблицаВидыЗапасов
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|
|ИНДЕКСИРОВАТЬ ПО
| АналитикаУчетаНоменклатуры
|;
|
|УНИЧТОЖИТЬ ВтТаблицаВыходныеИзделия
|;
|
|УНИЧТОЖИТЬ ВтТаблицаПобочныеИзделия
|;
|
|УНИЧТОЖИТЬ ВтВидыЗапасов");
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
ТаблицыДокумента = ТаблицыДокумента();
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("ТаблицаВыходныеИзделия", ТаблицыДокумента.ВыходныеИзделия);
Запрос.УстановитьПараметр("ТаблицаПобочныеИзделия", ТаблицыДокумента.ПобочныеИзделия);
Запрос.УстановитьПараметр("ТаблицаВидыЗапасов", ВидыЗапасовИзделия);
Запрос.УстановитьПараметр("ПорядокВыходныеИзделия", ПорядокТЧ("ВыходныеИзделия"));
Запрос.УстановитьПараметр("ПорядокПобочныеИзделия", ПорядокТЧ("ПобочныеИзделия"));
УчетПрослеживаемыхТоваровЛокализация.УстановитьПараметрыИспользованияУчетаПрослеживаемыхТоваров(Запрос);
Запрос.Выполнить();
Возврат МенеджерВременныхТаблиц;
КонецФункции
Функция ВременныеТаблицыМатериалов()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| &Дата КАК Дата,
| &Организация КАК Организация,
| &Партнер КАК Партнер,
| &Контрагент КАК Контрагент,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| НЕОПРЕДЕЛЕНО КАК СоглашениеНаПередачу,
| &Договор КАК Договор,
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК Валюта,
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка) КАК НалогообложениеНДС,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЛОЖЬ КАК ЕстьСделкиВТабличнойЧасти,
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар) КАК ТипЗапасов
|ПОМЕСТИТЬ ТаблицаДанныхДокумента
|;
|
|ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия КАК Серия,
| ТаблицаТоваров.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТоваров.Назначение КАК Назначение,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.Количество КАК Количество,
| ВЫБОР
| КОГДА НЕ &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| ИЛИ НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ) < &ДатаНачалаУчетаПрослеживаемыхИмпортныхТоваров
| ТОГДА 0
| ИНАЧЕ &ТекстПоляТаблицаТоваровКоличествоПоРНПТ_
| КОНЕЦ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| &ТекстПоляТаблицаТоваровНомерГТД_ КАК НомерГТД
|ПОМЕСТИТЬ ВтТаблицаТоваров
|ИЗ
| &ТаблицаМатериалов КАК ТаблицаТоваров
|;
|
|ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия КАК Серия,
| ТаблицаТоваров.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТоваров.Назначение КАК Назначение,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| НЕОПРЕДЕЛЕНО КАК ДокументРеализации,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка) КАК СтавкаНДС,
| 0 КАК СуммаСНДС,
| 0 КАК СуммаНДС,
| 0 КАК СуммаВознаграждения,
| 0 КАК СуммаНДСВознаграждения,
| &Договор КАК Склад,
| ИСТИНА КАК ПодбиратьВидыЗапасов,
| ТаблицаТоваров.НомерГТД КАК НомерГТД
|ПОМЕСТИТЬ ТаблицаТоваров
|ИЗ
| ВтТаблицаТоваров КАК ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
| ПО ТаблицаТоваров.Номенклатура = ДанныеНоменклатуры.Ссылка
|ГДЕ
| НЕ ДанныеНоменклатуры.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия КАК Серия,
| ТаблицаТоваров.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТоваров.Назначение КАК Назначение,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаТоваров.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| НЕОПРЕДЕЛЕНО КАК ДокументРеализации,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка) КАК СтавкаНДС,
| 0 КАК СуммаСНДС,
| 0 КАК СуммаНДС,
| 0 КАК СуммаВознаграждения,
| 0 КАК СуммаНДСВознаграждения,
| Аналитика.МестоХранения КАК Склад,
| ИСТИНА КАК ПодбиратьВидыЗапасов,
| ТаблицаТоваров.НомерГТД КАК НомерГТД
|ИЗ
| ВтТаблицаТоваров КАК ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
| ПО ТаблицаТоваров.Номенклатура = СправочникНоменклатура.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаТоваров.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
|ГДЕ
| &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| И СправочникНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И СправочникНоменклатура.ПрослеживаемыйТовар
|;
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ВЫБОР
| КОГДА НЕ &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| ИЛИ НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ) < &ДатаНачалаУчетаПрослеживаемыхИмпортныхТоваров
| ТОГДА 0
| ИНАЧЕ ТаблицаВидыЗапасов.КоличествоПоРНПТ
| КОНЕЦ КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасов.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаВидыЗапасов.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| &ТаблицаВидыЗапасовМатериалы КАК ТаблицаВидыЗапасов
|;
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Аналитика.Номенклатура КАК Номенклатура,
| Аналитика.Характеристика КАК Характеристика,
| Аналитика.Серия КАК Серия,
| НЕОПРЕДЕЛЕНО КАК ДокументРеализации,
| НЕОПРЕДЕЛЕНО КАК ВидЗапасовПолучателя,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка) КАК СтавкаНДС,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасов.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаВидыЗапасов.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| 0 КАК СуммаСНДС,
| 0 КАК СуммаНДС,
| 0 КАК СуммаВознаграждения,
| 0 КАК СуммаНДСВознаграждения,
| ВЫБОР
| КОГДА ДанныеНоменклатуры.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА Аналитика.МестоХранения
| ИНАЧЕ &Договор
| КОНЕЦ КАК СкладОтгрузки,
| ВЫБОР
| КОГДА ДанныеНоменклатуры.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА Аналитика.МестоХранения
| ИНАЧЕ &Договор
| КОНЕЦ КАК Склад,
| ЛОЖЬ КАК ВидыЗапасовУказаныВручную
|ПОМЕСТИТЬ ТаблицаВидыЗапасов
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
| ПО Аналитика.Номенклатура = ДанныеНоменклатуры.Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| АналитикаУчетаНоменклатуры
|;
|
|ВЫБРАТЬ
| ВТВидыЗапасовИзделия.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ВТВидыЗапасовИзделия.ВидЗапасов КАК ВидЗапасов,
| ВТВидыЗапасовИзделия.НомерГТД КАК НомерГТД,
| ВТВидыЗапасовИзделия.Количество КАК Количество,
| ВЫБОР
| КОГДА НЕ &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| ИЛИ НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ) < &ДатаНачалаУчетаПрослеживаемыхИмпортныхТоваров
| ТОГДА 0
| ИНАЧЕ ВТВидыЗапасовИзделия.КоличествоПоРНПТ
| КОНЕЦ КАК КоличествоПоРНПТ
|ПОМЕСТИТЬ ВТВидыЗапасовИзделия
|ИЗ
| &ТаблицаВидыЗапасовИзделия КАК ВТВидыЗапасовИзделия
|;
|
|ВЫБРАТЬ
| КОНЕЦПЕРИОДА(&Дата, МЕСЯЦ) КАК Период,
| &Организация КАК Организация,
| ВТВидыЗапасовИзделия.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ВТВидыЗапасовИзделия.ВидЗапасов КАК ВидЗапасов,
| ВТВидыЗапасовИзделия.НомерГТД КАК НомерГТД,
| СУММА(ВТВидыЗапасовИзделия.Количество) КАК Количество,
| СУММА(ВТВидыЗапасовИзделия.КоличествоПоРНПТ) КАК КоличествоПоРНПТ
|ПОМЕСТИТЬ ВТПриходуемыеВидыЗапасовИзделия
|ИЗ
| ВТВидыЗапасовИзделия КАК ВТВидыЗапасовИзделия
|СГРУППИРОВАТЬ ПО
| ВТВидыЗапасовИзделия.АналитикаУчетаНоменклатуры,
| ВТВидыЗапасовИзделия.ВидЗапасов,
| ВТВидыЗапасовИзделия.НомерГТД
|;
|
|УНИЧТОЖИТЬ ВтТаблицаТоваров
|;
|
|УНИЧТОЖИТЬ ВтВидыЗапасов
|;
|
|УНИЧТОЖИТЬ ВТВидыЗапасовИзделия
|");
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
ТаблицыДокумента = ТаблицыДокумента();
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Партнер", Партнер);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("Договор", Договор);
Запрос.УстановитьПараметр("ТаблицаМатериалов", ТаблицыДокумента.МатериалыИРаботы);
Запрос.УстановитьПараметр("ТаблицаВидыЗапасовИзделия", ВидыЗапасовИзделия);
Запрос.УстановитьПараметр("ТаблицаВидыЗапасовМатериалы", ВидыЗапасовМатериалы);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", ХозяйственнаяОперация);
УчетПрослеживаемыхТоваровЛокализация.УстановитьПараметрыИспользованияУчетаПрослеживаемыхТоваров(Запрос);
ЗапасыСервер.ДополнитьВременныеТаблицыОбязательнымиКолонками(Запрос);
ОбщегоНазначенияУТ.ЗаменитьОтсутствующиеПоляТаблицыЗначенийВТекстеЗапроса(
ТаблицыДокумента.МатериалыИРаботы,
Запрос.Текст,
"&ТекстПоляТаблицаТоваровКоличествоПоРНПТ_",
"ТаблицаТоваров",
"КоличествоПоРНПТ",
"ТаблицаТоваров.КоличествоПоРНПТ",
"0");
ОбщегоНазначенияУТ.ЗаменитьОтсутствующиеПоляТаблицыЗначенийВТекстеЗапроса(
ТаблицыДокумента.МатериалыИРаботы,
Запрос.Текст,
"&ТекстПоляТаблицаТоваровНомерГТД_",
"ТаблицаТоваров",
"НомерГТД",
"ТаблицаТоваров.НомерГТД",
"ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка)");
Запрос.Выполнить();
Возврат МенеджерВременныхТаблиц;
КонецФункции
Функция ТаблицаДляЗаполненияВидыЗапасовИзделия(МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| &Организация КАК Организация,
| &Валюта КАК Валюта,
| &НалогообложениеОрганизации КАК НалогообложениеОрганизации,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка) КАК НалогообложениеНДС,
| ТаблицаТоваров.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| МАКСИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Назначение КАК Назначение,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ПродукцияПереработчика)
| КОНЕЦ КАК ТипЗапасов,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА &Организация
| КОНЕЦ КАК ВладелецТовара,
| ЕСТЬNULL(ТаблицаТоваров.Назначение.Договор.Контрагент, НЕОПРЕДЕЛЕНО) КАК Контрагент,
| ЕСТЬNULL(ТаблицаТоваров.Назначение.Договор, НЕОПРЕДЕЛЕНО) КАК Договор,
| ТаблицаТоваров.Получатель КАК Получатель,
| ТаблицаТоваров.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаТоваров.СписатьНаРасходы КАК СписатьНаРасходы,
| ТаблицаТоваров.КодСтрокиПродукция КАК КодСтрокиПродукция,
| ТаблицаТоваров.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаТоваров.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаТоваров.НастройкаСчетовУчета КАК НастройкаСчетовУчета,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка) КАК ТекущийВидЗапасов,
| ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка) КАК ВидЗапасов,
| СУММА(ТаблицаТоваров.Количество) КАК Количество,
| СУММА(ТаблицаТоваров.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
| СУММА(ТаблицаТоваров.ДоляСтоимости) КАК ДоляСтоимости,
| СУММА(ТаблицаТоваров.Сумма) КАК Сумма,
| ЛОЖЬ КАК ЭтоВозвратнаяТара
|ПОМЕСТИТЬ ИсходнаяТаблицаТоваров
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|ГДЕ
| НЕ ТаблицаТоваров.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.ХозяйственнаяОперация,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ТаблицаТоваров.Назначение,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ПродукцияПереработчика)
| КОНЕЦ,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА &Организация
| КОНЕЦ,
| ЕСТЬNULL(ТаблицаТоваров.Назначение.Договор.Контрагент, НЕОПРЕДЕЛЕНО),
| ЕСТЬNULL(ТаблицаТоваров.Назначение.Договор, НЕОПРЕДЕЛЕНО),
| ТаблицаТоваров.Получатель,
| ТаблицаТоваров.СтатьяКалькуляции,
| ТаблицаТоваров.НомерГруппыЗатрат,
| ТаблицаТоваров.СписатьНаРасходы,
| ТаблицаТоваров.КодСтрокиПродукция,
| ТаблицаТоваров.СтатьяРасходов,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.АналитикаРасходов,
| ТаблицаТоваров.АналитикаАктивовПассивов,
| ТаблицаТоваров.НастройкаСчетовУчета,
| ТаблицаТоваров.ИдентификаторСтроки,
| ТаблицаТоваров.НомерГТД
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Организация КАК Организация,
| &Валюта КАК Валюта,
| &НалогообложениеОрганизации КАК НалогообложениеОрганизации,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка) КАК НалогообложениеНДС,
| ТаблицаТоваров.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| МАКСИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Назначение КАК Назначение,
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Работа) КАК ТипЗапасов,
| НЕОПРЕДЕЛЕНО КАК ВладелецТовара,
| НЕОПРЕДЕЛЕНО КАК Контрагент,
| НЕОПРЕДЕЛЕНО КАК Договор,
| ТаблицаТоваров.Получатель КАК Получатель,
| ТаблицаТоваров.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаТоваров.СписатьНаРасходы КАК СписатьНаРасходы,
| ТаблицаТоваров.КодСтрокиПродукция КАК КодСтрокиПродукция,
| ТаблицаТоваров.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаТоваров.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаТоваров.НастройкаСчетовУчета КАК НастройкаСчетовУчета,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаТоваров.НомерГТД КАК НомерГТД,
| ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка) КАК ТекущийВидЗапасов,
| ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка) КАК ВидЗапасов,
| СУММА(ТаблицаТоваров.Количество) КАК Количество,
| СУММА(ТаблицаТоваров.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
| СУММА(ТаблицаТоваров.ДоляСтоимости) КАК ДоляСтоимости,
| СУММА(ТаблицаТоваров.Сумма) КАК Сумма,
| ЛОЖЬ КАК ЭтоВозвратнаяТара
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|ГДЕ
| &ИспользоватьУчетПрослеживаемыхИмпортныхТоваров
| И ТаблицаТоваров.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ТаблицаТоваров.Номенклатура.ПрослеживаемыйТовар
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.ХозяйственнаяОперация,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ТаблицаТоваров.Назначение,
| ТаблицаТоваров.Получатель,
| ТаблицаТоваров.СтатьяКалькуляции,
| ТаблицаТоваров.НомерГруппыЗатрат,
| ТаблицаТоваров.СписатьНаРасходы,
| ТаблицаТоваров.КодСтрокиПродукция,
| ТаблицаТоваров.СтатьяРасходов,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.АналитикаРасходов,
| ТаблицаТоваров.АналитикаАктивовПассивов,
| ТаблицаТоваров.НастройкаСчетовУчета,
| ТаблицаТоваров.ИдентификаторСтроки,
| ТаблицаТоваров.НомерГТД
|";
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Валюта", Валюта);
Запрос.УстановитьПараметр("НалогообложениеОрганизации", УчетНДСУП.ПараметрыУчетаПоОрганизации(Организация, Дата).ОсновноеНалогообложениеНДСПродажи);
УчетПрослеживаемыхТоваровЛокализация.УстановитьПараметрыИспользованияУчетаПрослеживаемыхТоваров(Запрос);
ЗапасыСервер.ДополнитьВременныеТаблицыОбязательнымиКолонками(Запрос);
Результат = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
Возврат Результат[0].Выгрузить();
КонецФункции
Функция ПроверитьИзменениеРеквизитовДокумента()
ИменаРеквизитов = "Дата, Организация, Партнер, Договор";
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
Запрос.Текст =
"ВЫБРАТЬ
| &Организация КАК Организация,
| &Дата КАК Дата,
| &Партнер КАК Партнер,
| &Договор КАК Договор
|ПОМЕСТИТЬ ТаблицаДанныхДокумента
|";
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("Партнер", Партнер);
Запрос.УстановитьПараметр("Договор", Договор);
Запрос.Выполнить();
Возврат ЗапасыСервер.ПроверитьИзменениеРеквизитовДокумента(Запрос.МенеджерВременныхТаблиц, Ссылка, ИменаРеквизитов);
КонецФункции
Функция ПроверитьИзменениеИзделий(МенеджерВременныхТаблиц)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТоваров.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаТоваров.СписатьНаРасходы КАК СписатьНаРасходы,
| ТаблицаТоваров.Получатель КАК Получатель,
| ТаблицаТоваров.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаТоваров.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаТоваров.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаТоваров.КодСтрокиПродукция КАК КодСтрокиПродукция
|ИЗ
| (ВЫБРАТЬ
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТоваров.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаТоваров.СписатьНаРасходы КАК СписатьНаРасходы,
| ТаблицаТоваров.Получатель КАК Получатель,
| ТаблицаТоваров.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаТоваров.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаТоваров.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаТоваров.КодСтрокиПродукция КАК КодСтрокиПродукция,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.ДоляСтоимости КАК ДоляСтоимости,
| ТаблицаТоваров.Сумма КАК Сумма
| ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаВидыЗапасов.СписатьНаРасходы КАК СписатьНаРасходы,
| ТаблицаВидыЗапасов.Получатель КАК Получатель,
| ТаблицаВидыЗапасов.СтатьяРасходов КАК СтатьяРасходов,
| ТаблицаВидыЗапасов.АналитикаРасходов КАК АналитикаРасходов,
| ТаблицаВидыЗапасов.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаВидыЗапасов.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаВидыЗапасов.КодСтрокиПродукция КАК КодСтрокиПродукция,
| -ТаблицаВидыЗапасов.Количество КАК Количество,
| -ТаблицаВидыЗапасов.ДоляСтоимости КАК ДоляСтоимости,
| -ТаблицаВидыЗапасов.Сумма КАК Сумма
| ИЗ
| ТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов
| ) КАК ТаблицаТоваров
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.ХозяйственнаяОперация,
| ТаблицаТоваров.СтатьяКалькуляции,
| ТаблицаТоваров.СписатьНаРасходы,
| ТаблицаТоваров.Получатель,
| ТаблицаТоваров.СтатьяРасходов,
| ТаблицаТоваров.АналитикаРасходов,
| ТаблицаТоваров.АналитикаАктивовПассивов,
| ТаблицаТоваров.ИдентификаторСтроки,
| ТаблицаТоваров.НомерГруппыЗатрат,
| ТаблицаТоваров.КодСтрокиПродукция
|
|ИМЕЮЩИЕ
| СУММА(ТаблицаТоваров.Количество) <> 0
| ИЛИ СУММА(ТаблицаТоваров.ДоляСтоимости) <> 0
| ИЛИ СУММА(ТаблицаТоваров.Сумма) <> 0
|");
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
РезультатЗапрос = Запрос.Выполнить();
Возврат Не РезультатЗапрос.Пустой();
КонецФункции
Функция ПроверитьИзменениеМатериалов(МенеджерВременныхТаблиц)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки
|ИЗ (
| ВЫБРАТЬ
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаТоваров.Количество КАК Количество
| ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаВидыЗапасов.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| -ТаблицаВидыЗапасов.Количество КАК Количество
| ИЗ
| ТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов
| ) КАК ТаблицаТоваров
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.СтатьяКалькуляции,
| ТаблицаТоваров.НомерГруппыЗатрат,
| ТаблицаТоваров.ИдентификаторСтроки
|
|ИМЕЮЩИЕ
| СУММА(ТаблицаТоваров.Количество) <> 0
|");
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
РезультатЗапрос = Запрос.Выполнить();
Возврат Не РезультатЗапрос.Пустой();
КонецФункции
Процедура ЗаполнитьДопКолонкиВидовЗапасовМатериалов(МенеджерВременныхТаблиц)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаТоваров.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ТаблицаТоваров.ИдентификаторСтроки КАК ИдентификаторСтроки,
| СУММА(ТаблицаТоваров.Количество) КАК Количество
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.АналитикаУчетаНоменклатуры,
| ТаблицаТоваров.НомерГруппыЗатрат,
| ТаблицаТоваров.СтатьяКалькуляции,
| ТаблицаТоваров.ИдентификаторСтроки
|
|УПОРЯДОЧИТЬ ПО
| АналитикаУчетаНоменклатуры
|";
ВыборкаТовары = Запрос.Выполнить().Выбрать();
ОтборТоваров = Новый Структура("АналитикаУчетаНоменклатуры");
Пока ВыборкаТовары.Следующий() Цикл
КоличествоТоваров = ВыборкаТовары.Количество;
ЗаполнитьЗначенияСвойств(ОтборТоваров, ВыборкаТовары);
Для Каждого СтрокаЗапасов Из ВидыЗапасовМатериалы.НайтиСтроки(ОтборТоваров) Цикл
Если СтрокаЗапасов.Количество = 0 Тогда
Продолжить;
КонецЕсли;
Количество = Мин(КоличествоТоваров, СтрокаЗапасов.Количество);
НоваяСтрока = ВидыЗапасовМатериалы.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаТовары);
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаЗапасов, "ВидЗапасов, НомерГТД");
НоваяСтрока.Количество = Количество;
НоваяСтрока.КоличествоПоРНПТ = Количество * СтрокаЗапасов.КоличествоПоРНПТ / СтрокаЗапасов.Количество;
СтрокаЗапасов.Количество = СтрокаЗапасов.Количество - НоваяСтрока.Количество;
СтрокаЗапасов.КоличествоПоРНПТ = СтрокаЗапасов.КоличествоПоРНПТ - НоваяСтрока.КоличествоПоРНПТ;
КоличествоТоваров = КоличествоТоваров - НоваяСтрока.Количество;
Если КоличествоТоваров = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ОтборСтрок = Новый Структура("Количество", 0);
МассивУдаляемыхСтрок = ВидыЗапасовМатериалы.НайтиСтроки(ОтборСтрок);
Для Каждого СтрокаТаблицы Из МассивУдаляемыхСтрок Цикл
ВидыЗапасовМатериалы.Удалить(СтрокаТаблицы);
КонецЦикла;
КонецПроцедуры
Процедура РаспределитьНомераГТД(Отказ)
Результат = РаспределитьНомераГТДПрослеживаемые(Отказ);
РаспределитьНомераГТДПростые(Результат.ОтработанныеГруппыЗатратИТоварыМатериалы,
Результат.ОтработанныеГруппыЗатратИТоварыИзделия, Отказ);
КонецПроцедуры
Процедура РаспределитьНомераГТДПростые(ОтработанныеГруппыЗатратИТоварыМатериалы, ОтработанныеГруппыЗатратИТоварыИзделия, Отказ)
ПоляИндекса = "НомерГруппыЗатрат,Номенклатура,Характеристика";
ТекстыЗапроса = Новый Массив;
ТекстыЗапроса.Добавить(ОбщегоНазначенияУТ.ТекстЗапросаДанныеТЧОбъекта(Ссылка, "МатериалыИРаботы", Ложь, ПоляИндекса));
ТекстыЗапроса.Добавить(ОбщегоНазначенияУТ.ТекстЗапросаДанныеТЧОбъекта(Ссылка, "ВидыЗапасовИзделия", Ложь));
ТекстыЗапроса.Добавить(ОбщегоНазначенияУТ.ТекстЗапросаДанныеТЧОбъекта(Ссылка, "ВидыЗапасовМатериалы", Ложь));
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| ОтработанныеИзделия.НомерГруппыЗатрат,
| ОтработанныеИзделия.АналитикаУчетаНоменклатуры
|ПОМЕСТИТЬ ВТИсключаемыеИзделия
|ИЗ
| &ОтработанныеИзделия КАК ОтработанныеИзделия
|ИНДЕКСИРОВАТЬ ПО
| НомерГруппыЗатрат,
| АналитикаУчетаНоменклатуры");
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| ВидыЗапасовИзделия.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ВидыЗапасовИзделия.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ВидыЗапасовИзделия.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| СУММА(ВидыЗапасовИзделия.Количество) КАК Количество
|ПОМЕСТИТЬ ВтВидыЗапасовИмпортныеИзделияСгруппированная
|ИЗ
| ВидыЗапасовИзделия КАК ВидыЗапасовИзделия
|
|ГДЕ
| ВидыЗапасовИзделия.АналитикаУчетаНоменклатуры.Номенклатура.ВестиУчетПоГТД
| И ВидыЗапасовИзделия.АналитикаУчетаНоменклатуры.Номенклатура.ТипНоменклатуры В
| (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
|
|СГРУППИРОВАТЬ ПО
| ВидыЗапасовИзделия.НомерГруппыЗатрат,
| ВидыЗапасовИзделия.АналитикаУчетаНоменклатуры.Номенклатура,
| ВидыЗапасовИзделия.АналитикаУчетаНоменклатуры.Характеристика
|
|ИНДЕКСИРОВАТЬ ПО
| НомерГруппыЗатрат,
| Номенклатура,
| Характеристика
|");
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| ВидыЗапасовМатериалы.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ВидыЗапасовМатериалы.НомерГТД КАК НомерГТД,
| СУММА(ВидыЗапасовМатериалы.Количество) КАК Количество
|ИЗ
| ВидыЗапасовМатериалы КАК ВидыЗапасовМатериалы
|
|ГДЕ
| ВидыЗапасовМатериалы.АналитикаУчетаНоменклатуры.Номенклатура.ВестиУчетПоГТД
| И НЕ ВидыЗапасовМатериалы.АналитикаУчетаНоменклатуры.Номенклатура.ПрослеживаемыйТовар
| И ВидыЗапасовМатериалы.АналитикаУчетаНоменклатуры.Номенклатура.ТипНоменклатуры В
| (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И ВидыЗапасовМатериалы.НомерГруппыЗатрат В
| (ВЫБРАТЬ
| ВидыЗапасовИзделия.НомерГруппыЗатрат КАК НомерГруппыЗатрат
| ИЗ
| ВидыЗапасовИзделия КАК ВидыЗапасовИзделия
| ГДЕ
| ВидыЗапасовИзделия.АналитикаУчетаНоменклатуры.Номенклатура.ВестиУчетПоГТД
| И НЕ ВидыЗапасовИзделия.АналитикаУчетаНоменклатуры.Номенклатура.ПрослеживаемыйТовар
| И ВидыЗапасовИзделия.АналитикаУчетаНоменклатуры.Номенклатура.ТипНоменклатуры В
| (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)))
| И ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| МатериалыИРаботы КАК МатериалыИРаботы
| ГДЕ
| МатериалыИРаботы.НомерГруппыЗатрат = ВидыЗапасовМатериалы.НомерГруппыЗатрат
| И МатериалыИРаботы.Номенклатура = ВидыЗапасовМатериалы.АналитикаУчетаНоменклатуры.Номенклатура
| И МатериалыИРаботы.Характеристика = ВидыЗапасовМатериалы.АналитикаУчетаНоменклатуры.Характеристика
| И МатериалыИРаботы.Основной
| )
|
|СГРУППИРОВАТЬ ПО
| ВидыЗапасовМатериалы.НомерГруппыЗатрат,
| ВидыЗапасовМатериалы.НомерГТД
|");
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| ВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ВидыЗапасовСгруппированные.Количество КАК КоличествоПоГруппеЗатрат,
| ВЫБОР
| КОГДА ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура.ВестиУчетПоГТД
| И НЕ ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура.ПрослеживаемыйТовар
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК УчетПоГТД,
| НЕ ИсключаемыеИзделия.НомерГруппыЗатрат ЕСТЬ NULL КАК СтрокаОбработанаРанее
|ИЗ
| ВидыЗапасовИзделия КАК ВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ ВтВидыЗапасовИмпортныеИзделияСгруппированная КАК ВидыЗапасовСгруппированные
| ПО ВидыЗапасов.НомерГруппыЗатрат = ВидыЗапасовСгруппированные.НомерГруппыЗатрат
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = ВидыЗапасовСгруппированные.Номенклатура
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = ВидыЗапасовСгруппированные.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВТИсключаемыеИзделия КАК ИсключаемыеИзделия
| ПО ВидыЗапасов.НомерГруппыЗатрат = ИсключаемыеИзделия.НомерГруппыЗатрат
| И ВидыЗапасов.АналитикаУчетаНоменклатуры = ИсключаемыеИзделия.АналитикаУчетаНоменклатуры
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки
|");
Запрос = Новый Запрос;
Если ОбщегоНазначения.РежимОтладки() Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
КонецЕсли;
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.УстановитьПараметр("МатериалыИРаботы", МатериалыИРаботы.Выгрузить());
Запрос.УстановитьПараметр("ВидыЗапасовИзделия", ВидыЗапасовИзделия.Выгрузить());
Запрос.УстановитьПараметр("ВидыЗапасовМатериалы", ВидыЗапасовМатериалы.Выгрузить());
Запрос.УстановитьПараметр("ОтработанныеИзделия", ОтработанныеГруппыЗатратИТоварыИзделия);
РезультатЗапроса = Запрос.ВыполнитьПакет();
ИмпортныеМатериалы = РезультатЗапроса[РезультатЗапроса.ВГраница() - 1].Выгрузить();
ДанныеВыходныхИзделий = РезультатЗапроса[РезультатЗапроса.ВГраница()].Выгрузить();
Индекс = ВидыЗапасовИзделия.Количество() - 1;
ЗапретитьПоступлениеТоваровБезНомеровГТД =
УчетПрослеживаемыхТоваровЛокализация.ЭтоПрослеживаемыйДокумент(ВыходныеИзделия, Дата)
Или УчетПрослеживаемыхТоваровЛокализация.ЭтоПрослеживаемыйДокумент(ПобочныеИзделия, Дата)
Или ПолучитьФункциональнуюОпцию("ЗапретитьПоступлениеТоваровБезНомеровГТД");
ИмпортныеИзделияБезНомераГТД = Новый Соответствие;
Пока Индекс >= 0 Цикл
ЗапасИзделия = ВидыЗапасовИзделия[Индекс];
ДанныеАналитики = ДанныеВыходныхИзделий[ЗапасИзделия.НомерСтроки - 1];
Если ДанныеАналитики.СтрокаОбработанаРанее Тогда
Индекс = Индекс - 1;
Продолжить;
ИначеЕсли Не ДанныеАналитики.УчетПоГТД
Или ЗапасИзделия.СписатьНаРасходы Тогда
ЗапасИзделия.НомерГТД = Неопределено;
Индекс = Индекс - 1;
Продолжить;
КонецЕсли;
ОтборСтрок = Новый Структура("НомерГруппыЗатрат", ЗапасИзделия.НомерГруппыЗатрат);
СтрокиМатериалов = ИмпортныеМатериалы.НайтиСтроки(ОтборСтрок);
ОсталосьРаспределить = ЗапасИзделия.Количество;
КоличествоИзделияПоВидуЗапасов = ЗапасИзделия.Количество;
КоличествоИзделияПоГруппеЗатрат = ДанныеАналитики.КоличествоПоГруппеЗатрат;
Для Каждого СтрокаМатериала Из СтрокиМатериалов Цикл
ЗапасИзделия.НомерГТД = СтрокаМатериала.НомерГТД;
ЗапасИзделия.Количество = СтрокаМатериала.Количество * КоличествоИзделияПоВидуЗапасов
/ КоличествоИзделияПоГруппеЗатрат;
ОсталосьРаспределить = ОсталосьРаспределить - ЗапасИзделия.Количество;
Если ОсталосьРаспределить > 0 Тогда
НоваяСтрока = ВидыЗапасовИзделия.Вставить(Индекс);
ЗаполнитьЗначенияСвойств(НоваяСтрока, ЗапасИзделия);
Иначе
Прервать;
КонецЕсли;
КонецЦикла;
Если ОсталосьРаспределить <> 0 Тогда
ЗапасИзделия.Количество = ЗапасИзделия.Количество + ОсталосьРаспределить;
КонецЕсли;
Если ЗапретитьПоступлениеТоваровБезНомеровГТД
И Не ЗначениеЗаполнено(ЗапасИзделия.НомерГТД) Тогда
ИзделиеБезНомераГТД = Новый Структура("НомерГруппыЗатрат, Номенклатура, Характеристика");
ИзделиеБезНомераГТД.НомерГруппыЗатрат = ЗапасИзделия.НомерГруппыЗатрат;
ЗаполнитьЗначенияСвойств(ИзделиеБезНомераГТД, ДанныеАналитики);
ИмпортныеИзделияБезНомераГТД.Вставить(ИзделиеБезНомераГТД);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
Если ИмпортныеИзделияБезНомераГТД.Количество() Тогда
ШаблонСообщения = НСтр("ru = 'Не удалось подобрать ""Номер ГТД"" для изделия ""%1"" группы затрат ""%2"".'");
ПредставлениеГруппЗатрат = ПредставлениеГруппЗатрат();
Для Каждого КлючИЗначение Из ИмпортныеИзделияБезНомераГТД Цикл
Ключ = КлючИЗначение.Ключ;
ПредставлениеНоменклатуры =
НоменклатураКлиентСервер.ПредставлениеНоменклатуры(
Ключ.Номенклатура,
Ключ.Характеристика);
ТекстСообщения =
СтрШаблон(
ШаблонСообщения,
ПредставлениеНоменклатуры,
ПредставлениеГруппЗатрат[Ключ.НомерГруппыЗатрат]);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Неопределено, "", "Объект", Отказ);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Функция РаспределитьНомераГТДПрослеживаемые(Отказ)
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ВЫРАЗИТЬ(ВидыЗапасовМатериалы.АналитикаУчетаНоменклатуры КАК Справочник.КлючиАналитикиУчетаНоменклатуры) КАК АналитикаУчетаНоменклатуры,
| ВЫРАЗИТЬ(ВидыЗапасовМатериалы.НомерГТД КАК Справочник.НомераГТД) КАК НомерГТД,
| ВЫРАЗИТЬ(ВидыЗапасовМатериалы.КоличествоПоРНПТ КАК ЧИСЛО(15, 11)) КАК КоличествоПоРНПТ,
| ВЫРАЗИТЬ(ВидыЗапасовМатериалы.Количество КАК ЧИСЛО(15, 3)) КАК Количество,
| ВидыЗапасовМатериалы.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ВидыЗапасовМатериалы.ИдентификаторСтроки КАК ИдентификаторСтроки
|ПОМЕСТИТЬ ВТМатериалы
|ИЗ
| &ВидыЗапасовМатериалы КАК ВидыЗапасовМатериалы
|;
|
|ВЫБРАТЬ
| ВЫРАЗИТЬ(ВидыЗапасовИзделия.АналитикаУчетаНоменклатуры КАК Справочник.КлючиАналитикиУчетаНоменклатуры) КАК АналитикаУчетаНоменклатуры,
| ВЫРАЗИТЬ(ВидыЗапасовИзделия.КоличествоПоРНПТ КАК ЧИСЛО(15, 11)) КАК КоличествоПоРНПТ,
| ВЫРАЗИТЬ(ВидыЗапасовИзделия.Количество КАК ЧИСЛО(15, 3)) КАК Количество,
| ВидыЗапасовИзделия.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ВидыЗапасовИзделия.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ВидыЗапасовИзделия.СписатьНаРасходы КАК СписатьНаРасходы
|ПОМЕСТИТЬ ВТИзделия
|ИЗ
| &ВидыЗапасовИзделия КАК ВидыЗапасовИзделия
|;
|
|ВЫБРАТЬ
| Материалы.АналитикаУчетаНоменклатуры,
| Материалы.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ВЫРАЗИТЬ(Материалы.НомерГТД КАК Справочник.НомераГТД) КАК НомерГТД,
| Материалы.НомерГруппыЗатрат,
| Материалы.ИдентификаторСтроки,
| Материалы.КоличествоПоРНПТ,
| Материалы.Количество,
| Материалы.АналитикаУчетаНоменклатуры.Номенклатура.ПрослеживаемыйТовар КАК ЭтоПрослеживаемыйТовар,
| Материалы.НомерГТД.ТипНомераГТД = ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерГТД) КАК ЭтоНомерГТД,
| Материалы.НомерГТД.ТипНомераГТД = ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерРНПТ) КАК ЭтоНомерРНПТ,
| Материалы.НомерГТД.ТипНомераГТД = ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерРНПТКомплекта) КАК ЭтоСоставнойПрослеживаемыйНомерРПНТ
|ПОМЕСТИТЬ ВТМатериалыСПризнаками
|ИЗ
| ВТМатериалы КАК Материалы
|;
|
|ВЫБРАТЬ
| Материалы.НомерГруппыЗатрат,
| СУММА(ВЫБОР КОГДА Материалы.АналитикаУчетаНоменклатуры.Номенклатура.ПрослеживаемыйТовар ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК ПрослеживаемыхТоваров
|ПОМЕСТИТЬ ВТМатериалыТоварыПризнаками
|ИЗ
| (ВЫБРАТЬ
| Материалы.НомерГруппыЗатрат,
| Материалы.АналитикаУчетаНоменклатуры
| ИЗ
| ВТМатериалы КАК Материалы
| СГРУППИРОВАТЬ ПО
| Материалы.НомерГруппыЗатрат,
| Материалы.АналитикаУчетаНоменклатуры
| ) КАК Материалы
|
|СГРУППИРОВАТЬ ПО
| Материалы.НомерГруппыЗатрат
|ИНДЕКСИРОВАТЬ ПО
| НомерГруппыЗатрат
|;
|
|ВЫБРАТЬ
| Материалы.НомерГруппыЗатрат,
| СУММА(ВЫБОР КОГДА Материалы.НомерГТД.ТипНомераГТД = ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерГТД) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК ПростыхНомеровГТД,
| СУММА(ВЫБОР КОГДА Материалы.НомерГТД.ТипНомераГТД = ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерРНПТ) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК ПростыхНомеровРНПТ,
| СУММА(ВЫБОР КОГДА Материалы.НомерГТД.ТипНомераГТД = ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерРНПТКомплекта) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК СоставныхНомеровРНПТ
|ПОМЕСТИТЬ ВТМатериалыНомераГТДСПризнаками
|ИЗ
| (ВЫБРАТЬ
| Материалы.НомерГруппыЗатрат,
| Материалы.НомерГТД
| ИЗ
| ВТМатериалы КАК Материалы
| СГРУППИРОВАТЬ ПО
| Материалы.НомерГруппыЗатрат,
| Материалы.НомерГТД
| ) КАК Материалы
|
|СГРУППИРОВАТЬ ПО
| Материалы.НомерГруппыЗатрат
|ИНДЕКСИРОВАТЬ ПО
| НомерГруппыЗатрат
|;
|
|ВЫБРАТЬ
| Материалы.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| Материалы.ПрослеживаемыхТоваров КАК ПрослеживаемыхТоваров,
| МатериалыНомераГТД.ПростыхНомеровГТД КАК ПростыхНомеровГТД,
| МатериалыНомераГТД.ПростыхНомеровРНПТ КАК ПростыхНомеровРНПТ,
| МатериалыНомераГТД.СоставныхНомеровРНПТ КАК СоставныхНомеровРНПТ
|ПОМЕСТИТЬ ВТМатериалыСводно
|ИЗ
| ВТМатериалыТоварыПризнаками КАК Материалы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТМатериалыНомераГТДСПризнаками КАК МатериалыНомераГТД
| ПО Материалы.НомерГруппыЗатрат = МатериалыНомераГТД.НомерГруппыЗатрат
|ИНДЕКСИРОВАТЬ ПО
| НомерГруппыЗатрат
|;
|
|ВЫБРАТЬ
| Изделия.АналитикаУчетаНоменклатуры,
| Изделия.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| Изделия.НомерГруппыЗатрат,
| Изделия.ИдентификаторСтроки,
| Изделия.КоличествоПоРНПТ,
| Изделия.Количество,
| Изделия.АналитикаУчетаНоменклатуры.Номенклатура.ПрослеживаемыйТовар КАК ЭтоПрослеживаемыйТовар
|ПОМЕСТИТЬ ВТИзделияСПризнаками
|ИЗ
| ВТИзделия КАК Изделия
|ГДЕ
| НЕ Изделия.СписатьНаРасходы
|;
|
|ВЫБРАТЬ
| Изделия.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| СУММА(ВЫБОР КОГДА Изделия.ЭтоПрослеживаемыйТовар ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК ПрослеживаемыхТоваров
|ПОМЕСТИТЬ ВТИзделияСводно
|ИЗ
| ВТИзделияСПризнаками КАК Изделия
|СГРУППИРОВАТЬ ПО
| Изделия.НомерГруппыЗатрат
|ИНДЕКСИРОВАТЬ ПО
| НомерГруппыЗатрат
|;
|
|ВЫБРАТЬ
| МатериалыСводно.НомерГруппыЗатрат,
| МАКСИМУМ(ИзделияСводно.ПрослеживаемыхТоваров > 1 И МатериалыСводно.ПрослеживаемыхТоваров >= 1
| И МатериалыСводно.СоставныхНомеровРНПТ = 0 И МатериалыСводно.ПростыхНомеровРНПТ >= 1) КАК ТребуетсяПереносРНПТ,
| МАКСИМУМ(ИзделияСводно.ПрослеживаемыхТоваров = 1 И МатериалыСводно.ПрослеживаемыхТоваров >= 1
| И МатериалыСводно.СоставныхНомеровРНПТ = 0 И МатериалыСводно.ПростыхНомеровРНПТ >= 1) КАК ТребуетсяСборка,
| МАКСИМУМ(ИзделияСводно.ПрослеживаемыхТоваров >= 1 И МатериалыСводно.ПрослеживаемыхТоваров >= 1
| И МатериалыСводно.СоставныхНомеровРНПТ >= 1 И МатериалыСводно.ПростыхНомеровРНПТ = 0) КАК ТребуетсяРазборка,
|
| МАКСИМУМ(ИзделияСводно.ПрослеживаемыхТоваров = 0 И МатериалыСводно.ПрослеживаемыхТоваров > 0) КАК ОшибкаНетПрослеживаемыхИзделий,
| МАКСИМУМ(ИзделияСводно.ПрослеживаемыхТоваров > 0 И МатериалыСводно.ПрослеживаемыхТоваров = 0) КАК ОшибкаНетПрослеживаемыхМатериалов,
| МАКСИМУМ(МатериалыСводно.СоставныхНомеровРНПТ > 0 И МатериалыСводно.ПростыхНомеровРНПТ > 0) КАК ОшибкаРазныеТипыРНПТМатериалов,
| МАКСИМУМ(ИзделияСводно.ПрослеживаемыхТоваров > 1 И МатериалыСводно.ПрослеживаемыхТоваров > 1
| И МатериалыСводно.СоставныхНомеровРНПТ = 0 И МатериалыСводно.ПростыхНомеровРНПТ > 1) КАК ОшибкаПопыткаСборкиСОтнесениемНаНесколькоИзделий
|ИЗ
| ВТМатериалыСводно КАК МатериалыСводно
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТИзделияСводно КАК ИзделияСводно
| ПО ИзделияСводно.НомерГруппыЗатрат = МатериалыСводно.НомерГруппыЗатрат
|СГРУППИРОВАТЬ ПО
| МатериалыСводно.НомерГруппыЗатрат
|ИМЕЮЩИЕ
| МАКСИМУМ(ИзделияСводно.ПрослеживаемыхТоваров) > 0
| ИЛИ МАКСИМУМ(МатериалыСводно.ПрослеживаемыхТоваров) > 0
|;
|
|ВЫБРАТЬ
| Материалы.НомерГруппыЗатрат,
| Материалы.ИдентификаторСтроки,
| Материалы.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Материалы.Номенклатура КАК Номенклатура,
| Материалы.НомерГТД КАК НомерГТД,
| Материалы.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| Материалы.Количество КАК Количество,
| Материалы.ЭтоСоставнойПрослеживаемыйНомерРПНТ
|ИЗ
| ВТМатериалыСПризнаками КАК Материалы
|ГДЕ
| Материалы.ЭтоПрослеживаемыйТовар
|;
|
|ВЫБРАТЬ
| Изделия.НомерГруппыЗатрат,
| Изделия.ИдентификаторСтроки,
| Изделия.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Изделия.Номенклатура КАК Номенклатура,
| Изделия.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| Изделия.Количество КАК Количество
|ИЗ
| ВТИзделияСПризнаками КАК Изделия
|ГДЕ
| Изделия.ЭтоПрослеживаемыйТовар
|";
Запрос.УстановитьПараметр("ВидыЗапасовМатериалы", ВидыЗапасовМатериалы.Выгрузить());
Запрос.УстановитьПараметр("ВидыЗапасовИзделия", ВидыЗапасовИзделия.Выгрузить());
РезультатЗапроса = Запрос.ВыполнитьПакет();
НомераГруппЗатрат = РезультатЗапроса[РезультатЗапроса.ВГраница() - 2].Выбрать();
Материалы = РезультатЗапроса[РезультатЗапроса.ВГраница() - 1].Выгрузить();
Изделия = РезультатЗапроса[РезультатЗапроса.ВГраница()].Выгрузить();
ОтработанныеГруппыЗатратИТоварыМатериалы = Новый ТаблицаЗначений();
ОтработанныеГруппыЗатратИТоварыМатериалы.Колонки.Добавить("НомерГруппыЗатрат", Новый ОписаниеТипов("Число"));
ОтработанныеГруппыЗатратИТоварыМатериалы.Колонки.Добавить("АналитикаУчетаНоменклатуры", Новый ОписаниеТипов("СправочникСсылка.КлючиАналитикиУчетаНоменклатуры"));
ОтработанныеГруппыЗатратИТоварыИзделия = ОтработанныеГруппыЗатратИТоварыМатериалы.Скопировать();
ПредставлениеГруппЗатрат = ПредставлениеГруппЗатрат();
ГруппировкаПоПродукции = ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции
Или ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукцииИНазначениям;
Пока НомераГруппЗатрат.Следующий() Цикл
ОтборСтрок = Новый Структура("НомерГруппыЗатрат", НомераГруппЗатрат.НомерГруппыЗатрат);
ДанныеДляПоискаМатериалов = Материалы.НайтиСтроки(ОтборСтрок);
ДанныеДляПоискаИзделий = Изделия.НайтиСтроки(ОтборСтрок);
НайденныеСтрокиСписания = Новый Массив();
ОтборСтрокМатериалы = Новый Структура("НомерГруппыЗатрат, ИдентификаторСтроки");
Для Каждого Строка Из ДанныеДляПоискаМатериалов Цикл
ЗаполнитьЗначенияСвойств(ОтборСтрокМатериалы, Строка);
СтрокиСписания = ВидыЗапасовМатериалы.НайтиСтроки(ОтборСтрокМатериалы);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(НайденныеСтрокиСписания, СтрокиСписания);
КонецЦикла;
НайденныеСтрокиОприходования = Новый Массив();
ОтборСтрокИзделия = Новый Структура("НомерГруппыЗатрат, ИдентификаторСтроки");
Для Каждого Строка Из ДанныеДляПоискаИзделий Цикл
ЗаполнитьЗначенияСвойств(ОтборСтрокИзделия, Строка);
СтрокиОприходования = ВидыЗапасовИзделия.НайтиСтроки(ОтборСтрокИзделия);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(НайденныеСтрокиОприходования, СтрокиОприходования);
КонецЦикла;
НайденныеСтрокиСписания = ОбщегоНазначенияКлиентСервер.СвернутьМассив(НайденныеСтрокиСписания);
НайденныеСтрокиОприходования = ОбщегоНазначенияКлиентСервер.СвернутьМассив(НайденныеСтрокиОприходования);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(НайденныеСтрокиСписания, ОтработанныеГруппыЗатратИТоварыМатериалы);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(НайденныеСтрокиОприходования, ОтработанныеГруппыЗатратИТоварыИзделия);
ШаблонСообщенияГруппировкаНеПоПродукции = НСтр("ru = 'Обнаружена некорректная комбинация материалов и изделий: затраты прослеживаемых товаров не могут быть корректно распределены.
|Укажите группировку затрат ""По продукции"" или ""По продукции и назначению"". В этом случае обеспечивается уникальность товарных позиций в разрезе групп затрат.'");
ШаблонСообщенияОшибкаПопыткаСборкиСОтнесениемНаНесколькоИзделий = НСтр("ru = 'Для группы затрат ""%1"" обнаружена некорректная комбинация материалов и изделий:
|Одновременно имеются более одного прослеживаемого изделия и более одного прослеживаемого материала (не составного комплекта).
|Требуется изменить состав группы затрат таким образом, чтобы осталось либо одно прослеживаемое изделие при одном и более прослеживаемом материале, либо один прослеживаемый материал при одном и более прослеживаемом изделии.'");
ШаблонСообщенияОшибкаРазныеТипыРНПТМатериалов = НСтр("ru = 'Для группы затрат ""%1"" обнаружена некорректная комбинация материалов:
|Для прослеживаемых материалов одновременно подобраны номера ГТД (РНПТ) двух типов - составной комплект и РНПТ.
|Требуется изменить состав группы затрат таким образом, чтобы в нее попал только один из этих типов номеров ГТД.'");
ШаблонСообщенияОшибкаНетПрослеживаемыхИзделий = НСтр("ru='Для группы затрат ""%1"" обнаружено выбытие прослеживаемых материалов:
|При использовании прослеживаемого по РНПТ материала, для сохранения РНПТ на остатках нужно указать прослеживаемое изделие.
|Это можно сделать, изменив состав группы затрат так, чтобы прослеживаемые товары были как в материалах, так и в изделиях.'");
ШаблонСообщенияОшибкаНетПрослеживаемыхМатериалов = НСтр("ru='Для группы затрат ""%1"" обнаружена некорректная комбинация материалов и изделий:
|При использовании прослеживаемого по РНПТ изделия, требуется указать прослеживаемые материалы.
|Требуется изменить состав группы затрат таким образом, чтобы прослеживаемые товары были как в материалах, так и в изделиях.
|Убедитесь, что для прослеживаемых материалов на остатках имеются номера ГТД с типом ""РНПТ"".'");
Если НомераГруппЗатрат.ОшибкаПопыткаСборкиСОтнесениемНаНесколькоИзделий Тогда
ТекстСообщения = ?(ГруппировкаПоПродукции,
СтрШаблон(ШаблонСообщенияОшибкаПопыткаСборкиСОтнесениемНаНесколькоИзделий, ПредставлениеГруппЗатрат[НомераГруппЗатрат.НомерГруппыЗатрат]),
ШаблонСообщенияГруппировкаНеПоПродукции);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Неопределено, "", "Объект", Отказ);
ИначеЕсли НомераГруппЗатрат.ОшибкаРазныеТипыРНПТМатериалов Тогда
ТекстСообщения = ?(ГруппировкаПоПродукции,
СтрШаблон(ШаблонСообщенияОшибкаРазныеТипыРНПТМатериалов, ПредставлениеГруппЗатрат[НомераГруппЗатрат.НомерГруппыЗатрат]),
ШаблонСообщенияГруппировкаНеПоПродукции);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Неопределено, "", "Объект", Отказ);
ИначеЕсли НомераГруппЗатрат.ОшибкаНетПрослеживаемыхИзделий Тогда
ТекстСообщения = ?(ГруппировкаПоПродукции,
СтрШаблон(ШаблонСообщенияОшибкаНетПрослеживаемыхИзделий, ПредставлениеГруппЗатрат[НомераГруппЗатрат.НомерГруппыЗатрат]),
ШаблонСообщенияГруппировкаНеПоПродукции);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Неопределено, "", "Объект");
ИначеЕсли НомераГруппЗатрат.ОшибкаНетПрослеживаемыхМатериалов Тогда
ТекстСообщения = ?(ГруппировкаПоПродукции,
СтрШаблон(ШаблонСообщенияОшибкаНетПрослеживаемыхМатериалов, ПредставлениеГруппЗатрат[НомераГруппЗатрат.НомерГруппыЗатрат]),
ШаблонСообщенияГруппировкаНеПоПродукции);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Неопределено, "", "Объект", Отказ);
ИначеЕсли НомераГруппЗатрат.ТребуетсяПереносРНПТ Тогда
РаспределитьНомераГТДПрослеживаемыеПеренос(НайденныеСтрокиСписания, НайденныеСтрокиОприходования);
ИначеЕсли НомераГруппЗатрат.ТребуетсяСборка Тогда
РаспределитьНомераГТДПрослеживаемыеСборка(НайденныеСтрокиСписания, НайденныеСтрокиОприходования, Отказ);
ИначеЕсли НомераГруппЗатрат.ТребуетсяРазборка Тогда
РаспределитьНомераГТДПрослеживаемыеРазборка(НайденныеСтрокиСписания, НайденныеСтрокиОприходования, Отказ);
КонецЕсли;
КонецЦикла;
ВозвращаемоеЗначение = Новый Структура("ОтработанныеГруппыЗатратИТоварыМатериалы, ОтработанныеГруппыЗатратИТоварыИзделия",
ОтработанныеГруппыЗатратИТоварыМатериалы, ОтработанныеГруппыЗатратИТоварыИзделия);
Возврат ВозвращаемоеЗначение;
КонецФункции
Процедура РаспределитьНомераГТДПрослеживаемыеПеренос(НайденныеСтрокиСписание, НайденныеСтрокиОприходование)
Если НайденныеСтрокиСписание.Количество() > 0 Тогда
Для Каждого СтрокаКОприходованию Из НайденныеСтрокиОприходование Цикл
СтрокаКОприходованию.КоличествоПоРНПТ = 0;
КонецЦикла;
КонецЕсли;
Для Каждого СтрокаКСписанию Из НайденныеСтрокиСписание Цикл
КоличествоСтрокОприходования = НайденныеСтрокиОприходование.Количество();
ДоляКРаспределению = СтрокаКСписанию.КоличествоПоРНПТ / КоличествоСтрокОприходования;
ОстатокОтРаспределения = СтрокаКСписанию.КоличествоПоРНПТ - (ДоляКРаспределению * КоличествоСтрокОприходования);
Для Каждого СтрокаКОприходованию Из НайденныеСтрокиОприходование Цикл
СтрокаКОприходованию.НомерГТД = СтрокаКСписанию.НомерГТД;
СтрокаКОприходованию.КоличествоПоРНПТ = СтрокаКОприходованию.КоличествоПоРНПТ + ДоляКРаспределению;
КонецЦикла;
СтрокаКОприходованию.КоличествоПоРНПТ = СтрокаКОприходованию.КоличествоПоРНПТ + ОстатокОтРаспределения;
КонецЦикла;
КонецПроцедуры
Процедура РаспределитьНомераГТДПрослеживаемыеСборка(НайденныеСтрокиСписание, НайденныеСтрокиОприходование, Отказ)
ВидыЗапасовДляСозданияСоставныхНомеровГТД = ВидыЗапасовМатериалы.Выгрузить(НайденныеСтрокиСписание);
ЗапасОприходование = НайденныеСтрокиОприходование[0];
АналитикаОприходования = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЗапасОприходование.АналитикаУчетаНоменклатуры, "Номенклатура, Характеристика, Серия");
ПараметрыСоздания = ЗакупкиСервер.ПараметрыПоискаИлиСозданияСоставныхПрослеживаемыхКомплектов();
ПараметрыСоздания.ИзвлечьНоменклатуруИзОбъектаВКолонке = ВидыЗапасовДляСозданияСоставныхНомеровГТД.Колонки.АналитикаУчетаНоменклатуры.Имя;
ПараметрыСоздания.ИзвлечьХарактеристикуИзОбъектаВКолонке = ВидыЗапасовДляСозданияСоставныхНомеровГТД.Колонки.АналитикаУчетаНоменклатуры.Имя;
ПараметрыСоздания.ИзвлечьСериюИзОбъектаВКолонке = ВидыЗапасовДляСозданияСоставныхНомеровГТД.Колонки.АналитикаУчетаНоменклатуры.Имя;
ПараметрыСоздания.НоменклатураШапки = АналитикаОприходования.Номенклатура;
ПараметрыСоздания.ХарактеристикаШапки = АналитикаОприходования.Характеристика;
ПараметрыСоздания.СерияШапки = АналитикаОприходования.Серия;
СоставныеПрослеживаемыеНомераГТД = ЗакупкиСервер.НайтиИлиСоздатьСоставныеПрослеживаемыеНомераГТД(ВидыЗапасовДляСозданияСоставныхНомеровГТД,
ЗапасОприходование.Количество,
Дата,
Отказ,
ПараметрыСоздания);
КоличествоПоРНПТ = ЗапасОприходование.КоличествоПоРНПТ;
Если КоличествоПоРНПТ = 0 Тогда
КоличествоПоРНПТ = ЗапасОприходование.Количество;
КонецЕсли;
Если СоставныеПрослеживаемыеНомераГТД.ОстаточныйСоставнойНомерГТД = Неопределено Тогда
ЗапасОприходование.НомерГТД = СоставныеПрослеживаемыеНомераГТД.ОсновнойСоставнойНомерГТД;
ЗапасОприходование.КоличествоПоРНПТ = КоличествоПоРНПТ;
Иначе
ЕдиницаРНПТ = ЗапасОприходование.Количество / КоличествоПоРНПТ;
ЗапасОприходование.НомерГТД = СоставныеПрослеживаемыеНомераГТД.ОсновнойСоставнойНомерГТД;
ЗапасОприходование.Количество = ЗапасОприходование.Количество - 1;
ЗапасОприходование.КоличествоПоРНПТ = КоличествоПоРНПТ - ЕдиницаРНПТ;
НоваяСтрока = ВидыЗапасовИзделия.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ЗапасОприходование);
НоваяСтрока.НомерГТД = СоставныеПрослеживаемыеНомераГТД.ОстаточныйСоставнойНомерГТД;
НоваяСтрока.Количество = 1;
НоваяСтрока.КоличествоПоРНПТ = ЕдиницаРНПТ;
КонецЕсли;
КонецПроцедуры
Процедура РаспределитьНомераГТДПрослеживаемыеРазборка(НайденныеСтрокиСписание, НайденныеСтрокиОприходование, Отказ)
ВидыЗапасовДляСозданияСоставныхНомеровГТДСписание = ВидыЗапасовМатериалы.Выгрузить(НайденныеСтрокиСписание);
ВидыЗапасовДляСозданияСоставныхНомеровГТДОприходование = ВидыЗапасовИзделия.Выгрузить(НайденныеСтрокиОприходование);
ПоляОбъектные = Новый Массив();
ПоляОбъектные.Добавить("ХозяйственнаяОперация");
ПоляОбъектные.Добавить("СтатьяКалькуляции");
ПоляОбъектные.Добавить("СписатьНаРасходы");
ПоляОбъектные.Добавить("Получатель");
ПоляОбъектные.Добавить("СтатьяРасходов");
ПоляОбъектные.Добавить("АналитикаРасходов");
ПоляОбъектные.Добавить("АналитикаАктивовПассивов");
ПоляОбъектные.Добавить("ИдентификаторСтроки");
ПоляОбъектные.Добавить("НомерГруппыЗатрат");
ПоляОбъектные.Добавить("ЭтапПроизводства");
ПоляОбъектные.Добавить("КодСтрокиПродукция");
ПоляОбъектные.Добавить("ИдентификаторФинЗаписи");
ПоляОбъектные.Добавить("НастройкаСчетовУчета");
ПоляЧисловые = Новый Массив();
ПоляЧисловые.Добавить("ДоляСтоимости");
ПоляЧисловые.Добавить("Сумма");
Результат = ЗакупкиСервер.РазобратьСоставныеПрослеживаемыеНомераГТД(
ВидыЗапасовДляСозданияСоставныхНомеровГТДСписание,
ВидыЗапасовДляСозданияСоставныхНомеровГТДОприходование,
ПоляОбъектные,
ПоляЧисловые,
Отказ);
Для Каждого СтрокаКУдалению Из НайденныеСтрокиОприходование Цикл
ВидыЗапасовИзделия.Удалить(СтрокаКУдалению);
КонецЦикла;
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Результат, ВидыЗапасовИзделия);
КонецПроцедуры
Функция ПорядокТЧ(ИмяТЧ)
ТаблицыДокумента = ТаблицыДокумента();
КоличествоСтрокВоВсехТЧ = ТаблицыДокумента.ВыходныеИзделия.Количество()
+ ТаблицыДокумента.ПобочныеИзделия.Количество();
Если ИмяТЧ = "ВыходныеИзделия" Тогда
Возврат 0;
ИначеЕсли ИмяТЧ = "ПобочныеИзделия" Тогда
Возврат КоличествоСтрокВоВсехТЧ;
Иначе
ТекстИсключения = НСтр("ru = 'Табличной части ""%ИмяТЧ%"" не поставлен порядок'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяТЧ%", ИмяТЧ);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область Проверки
Процедура ПроверитьЗаполнениеГруппЗатрат(Отказ, МассивНепроверяемыхРеквизитов)
МассивНепроверяемыхРеквизитов.Добавить("ВыходныеИзделия.НомерГруппыЗатрат");
МассивНепроверяемыхРеквизитов.Добавить("ВыходныеИзделия.Назначение");
МассивНепроверяемыхРеквизитов.Добавить("ПобочныеИзделия.НомерГруппыЗатрат");
МассивНепроверяемыхРеквизитов.Добавить("МатериалыИРаботы.НомерГруппыЗатрат");
МассивНепроверяемыхРеквизитов.Добавить("Услуги.НомерГруппыЗатрат");
МассивНепроверяемыхРеквизитов.Добавить("МатериалыИРаботы");
МассивНепроверяемыхРеквизитов.Добавить("Услуги");
ТекстыЗапроса = Новый Массив;
ТекстыЗапросаПроверок = Новый Массив;
ТекстыЗапроса.Добавить(ОбщегоНазначенияУТ.ТекстЗапросаДанныеТЧОбъекта(Ссылка, "ВыходныеИзделия", Ложь, "НомерГруппыЗатрат"));
ТекстыЗапроса.Добавить(ОбщегоНазначенияУТ.ТекстЗапросаДанныеТЧОбъекта(Ссылка, "ПобочныеИзделия", Ложь, "НомерГруппыЗатрат"));
ТекстыЗапроса.Добавить(ОбщегоНазначенияУТ.ТекстЗапросаДанныеТЧОбъекта(Ссылка, "МатериалыИРаботы", Ложь, "НомерГруппыЗатрат"));
ТекстыЗапроса.Добавить(ОбщегоНазначенияУТ.ТекстЗапросаДанныеТЧОбъекта(Ссылка, "Услуги", Ложь, "НомерГруппыЗатрат"));
ТекстыЗапроса.Добавить(Документы.ОтчетПереработчика2_5.ТекстЗапросаГруппыЗатратДокумента());
ТекстыЗапроса.Добавить(Документы.ОтчетПереработчика2_5.ТекстЗапросаВтИмпортныеИзделияДокумента());
ТекстыЗапроса.Добавить(Документы.ОтчетПереработчика2_5.ТекстЗапросаВтИмпортныеМатериалыДокумента());
Если ПоЗаказам Тогда
ТекстыЗапроса.Добавить(Документы.ЗаказПереработчику2_5.ТекстЗапросаГруппыЗатратДокумента(ЗаказПереработчику, "НомераГруппЗатратЗаказа"));
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| НомераГруппЗатрат.НомерГруппыЗатрат КАК НомерГруппыЗатрат
|ПОМЕСТИТЬ НомераГруппЗатратОтсутствующиеВЗаказе
|ИЗ
| НомераГруппЗатрат КАК НомераГруппЗатрат
|
| ЛЕВОЕ СОЕДИНЕНИЕ НомераГруппЗатратЗаказа КАК НомераГруппЗатратЗаказа
| ПО НомераГруппЗатратЗаказа.НомерГруппыЗатрат = НомераГруппЗатрат.НомерГруппыЗатрат
|
|ГДЕ
| НомераГруппЗатратЗаказа.НомерГруппыЗатрат ЕСТЬ NULL
|
|ИНДЕКСИРОВАТЬ ПО
| НомерГруппыЗатрат
|");
ТекстыЗапросаПроверок.Добавить(
ПереработкаНаСтороне.ТекстПроверкиНеСоответствуетЗаказу(
"ВыходныеИзделия",
"ИмяТаблицыВыходныеИзделия",
"СинонимТЧВыходныеИзделия"));
ТекстыЗапросаПроверок.Добавить(
ПереработкаНаСтороне.ТекстПроверкиНеСоответствуетЗаказу(
"ПобочныеИзделия",
"ИмяТаблицыПобочныеИзделия",
"СинонимТЧПобочныеИзделия"));
ТекстыЗапросаПроверок.Добавить(
ПереработкаНаСтороне.ТекстПроверкиНеСоответствуетЗаказу(
"МатериалыИРаботы",
"ИмяТаблицыМатериалыИРаботы",
"СинонимТЧМатериалыИРаботы"));
ТекстыЗапросаПроверок.Добавить(
ПереработкаНаСтороне.ТекстПроверкиНеСоответствуетЗаказу(
"Услуги",
"ИмяТаблицыУслуги",
"СинонимТЧУслуги"));
КонецЕсли;
ТекстыЗапросаПроверок.Добавить(
ПереработкаНаСтороне.ТекстПроверкиНеЗаполненаГруппыЗатратТЧДокумента(
"ВыходныеИзделия",
"ИмяТаблицыВыходныеИзделия",
"СинонимТЧВыходныеИзделия"));
ТекстыЗапросаПроверок.Добавить(
ПереработкаНаСтороне.ТекстПроверкиНеЗаполненаГруппыЗатратТЧДокумента(
"ПобочныеИзделия",
"ИмяТаблицыПобочныеИзделия",
"СинонимТЧПобочныеИзделия"));
ТекстыЗапросаПроверок.Добавить(
ПереработкаНаСтороне.ТекстПроверкиНеЗаполненаГруппыЗатратТЧДокумента(
"МатериалыИРаботы",
"ИмяТаблицыМатериалыИРаботы",
"СинонимТЧМатериалыИРаботы"));
ТекстыЗапросаПроверок.Добавить(
ПереработкаНаСтороне.ТекстПроверкиНеЗаполненаГруппыЗатратТЧДокумента(
"Услуги",
"ИмяТаблицыУслуги",
"СинонимТЧУслуги"));
ТекстыЗапросаПроверок.Добавить(
ПереработкаНаСтороне.ТекстПроверкиНесуществующаяГруппаЗатратТЧДокумента(
"ВыходныеИзделия",
"ИмяТаблицыВыходныеИзделия",
"СинонимТЧВыходныеИзделия"));
ТекстыЗапросаПроверок.Добавить(
ПереработкаНаСтороне.ТекстПроверкиНесуществующаяГруппаЗатратТЧДокумента(
"ПобочныеИзделия",
"ИмяТаблицыПобочныеИзделия",
"СинонимТЧПобочныеИзделия"));
ТекстыЗапросаПроверок.Добавить(
ПереработкаНаСтороне.ТекстПроверкиНесуществующаяГруппаЗатратТЧДокумента(
"МатериалыИРаботы",
"ИмяТаблицыМатериалыИРаботы",
"СинонимТЧМатериалыИРаботы"));
ТекстыЗапросаПроверок.Добавить(
ПереработкаНаСтороне.ТекстПроверкиНесуществующаяГруппаЗатратТЧДокумента(
"Услуги",
"ИмяТаблицыУслуги",
"СинонимТЧУслуги"));
ТекстыЗапросаПроверок.Добавить(ПереработкаНаСтороне.ТекстПроверкиНеУказаноНазначение());
ТекстыЗапросаПроверок.Добавить(
ПереработкаНаСтороне.ТекстПроверкиНеУказаныМатериалы(
"МатериалыИРаботы",
"ИмяТаблицыМатериалыИРаботы",
"СинонимТЧМатериалыИРаботы"));
ТекстыЗапросаПроверок.Добавить(ПереработкаНаСтороне.ТекстПроверкиНеУказаныУслуги());
ТекстыЗапросаПроверок.Добавить(Документы.ОтчетПереработчика2_5.ТекстПроверкиНесколькоИмпортныхИзделий());
ТекстыЗапросаПроверок.Добавить(Документы.ОтчетПереработчика2_5.ТекстПроверкиНеУказанИмпортныйМатериал());
ОтчетПереработчика2_5Локализация.ДобавитьТекстПроверкиПоРНПТ(ТекстыЗапросаПроверок, Дата);
ТекстыЗапроса.Добавить(СтрСоединить(ТекстыЗапросаПроверок, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении()));
Запрос = Новый Запрос;
Если ОбщегоНазначенияУТ.РежимОтладки() Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
КонецЕсли;
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
ТабличныеЧасти = Метаданные.Документы.ОтчетПереработчика2_5.ТабличныеЧасти;
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("ВыходныеИзделия", ВыходныеИзделия.Выгрузить());
Запрос.УстановитьПараметр("ПобочныеИзделия", ПобочныеИзделия.Выгрузить());
Запрос.УстановитьПараметр("МатериалыИРаботы", МатериалыИРаботы.Выгрузить());
Запрос.УстановитьПараметр("Услуги", Услуги.Выгрузить());
Запрос.УстановитьПараметр("ГруппировкаЗатрат", ГруппировкаЗатрат);
Запрос.УстановитьПараметр("УслугиПоПереработке", УслугиПоПереработке);
Запрос.УстановитьПараметр("ЗаказПереработчику", ЗаказПереработчику);
Запрос.УстановитьПараметр("ИмяТаблицыВыходныеИзделия", ТабличныеЧасти.ВыходныеИзделия.Имя);
Запрос.УстановитьПараметр("ИмяТаблицыПобочныеИзделия", ТабличныеЧасти.ПобочныеИзделия.Имя);
Запрос.УстановитьПараметр("ИмяТаблицыМатериалыИРаботы", ТабличныеЧасти.МатериалыИРаботы.Имя);
Запрос.УстановитьПараметр("ИмяТаблицыУслуги", ТабличныеЧасти.Услуги.Имя);
Запрос.УстановитьПараметр("СинонимТЧВыходныеИзделия", ТабличныеЧасти.ВыходныеИзделия.Синоним);
Запрос.УстановитьПараметр("СинонимТЧПобочныеИзделия", ТабличныеЧасти.ПобочныеИзделия.Синоним);
Запрос.УстановитьПараметр("СинонимТЧМатериалыИРаботы", ТабличныеЧасти.МатериалыИРаботы.Синоним);
Запрос.УстановитьПараметр("СинонимТЧУслуги", ТабличныеЧасти.Услуги.Синоним);
Запрос.УстановитьПараметр("ИспользоватьИмпортныеТовары", ПолучитьФункциональнуюОпцию("ИспользоватьИмпортныеТовары"));
УчетПрослеживаемыхТоваровЛокализация.УстановитьПараметрыИспользованияУчетаПрослеживаемыхТоваров(Запрос);
Выборка = Запрос.Выполнить().Выбрать();
Если Не Выборка.Количество() = 0 Тогда
ПредставлениеГруппЗатрат = ПредставлениеГруппЗатрат();
ПереработкаНаСтороне.СообщитьОшибкиЗаполненияГруппЗатрат(
Выборка,
ПредставлениеГруппЗатрат,
Отказ);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
Процедура ЗаполнитьАналитикиУчетаНоменклатурыВТабличныхЧастяхТоваров(ТаблицыДокумента = Неопределено)
Если ТаблицыДокумента = Неопределено Тогда
ТаблицыДокумента = Документы.ОтчетПереработчика2_5.КоллекцияТабличныхЧастейТоваров();
ЗаполнитьЗначенияСвойств(ТаблицыДокумента, ЭтотОбъект);
КонецЕсли;
#Область ЗаполнениеКлючейАналитикиУчетаНоменклатуры
МестаУчета = РегистрыСведений.АналитикаУчетаНоменклатуры.МестаУчета(ХозяйственнаяОперация,
Неопределено,
Подразделение,
Неопределено,
Договор);
ИменаПолей = РегистрыСведений.АналитикаУчетаНоменклатуры.ИменаПолейКоллекцииПоУмолчанию();
ИменаПолей.Работа = "Получатель";
РегистрыСведений.АналитикаУчетаНоменклатуры.ЗаполнитьВКоллекции(ТаблицыДокумента.ВыходныеИзделия,
МестаУчета,
ИменаПолей);
РегистрыСведений.АналитикаУчетаНоменклатуры.ЗаполнитьВКоллекции(ТаблицыДокумента.ПобочныеИзделия,
МестаУчета,
ИменаПолей);
ТекущаяТабличнаяЧасть = ТаблицыДокумента.МатериалыИРаботы;
ИменаПолей.Работа = "";
РегистрыСведений.АналитикаУчетаНоменклатуры.ЗаполнитьВКоллекции(ТекущаяТабличнаяЧасть, МестаУчета, ИменаПолей);
Если Не УслугиПоПереработке = Перечисления.ВариантыОформленияУслугДокументовПереработки.ОформляютсяОтдельно Тогда
ИменаПолей.СтатьяКалькуляции = "СтатьяКалькуляции";
ИменаПолей.СтатусУказанияСерий = 0;
ИменаПолей.Назначение = "";
МестаУчета.Удалить("Работа");
РегистрыСведений.АналитикаУчетаНоменклатуры.ЗаполнитьВКоллекции(ТаблицыДокумента.Услуги, МестаУчета, ИменаПолей);
КонецЕсли;
#КонецОбласти
КонецПроцедуры
Функция ПараметрыСинхронизацииКлючей()
Результат = Новый Соответствие;
Результат.Вставить("Справочник.ПартииПроизводства", "ПометкаУдаления");
Возврат Результат;
КонецФункции
Функция ТаблицыДокумента()
Если ДополнительныеСвойства.Свойство("ТаблицыЗаполненияВидовЗапасовПриОбмене")
И ДополнительныеСвойства.ТаблицыЗаполненияВидовЗапасовПриОбмене <> Неопределено Тогда
ТаблицыДокумента = ДополнительныеСвойства.ТаблицыЗаполненияВидовЗапасовПриОбмене;
Иначе
ТаблицыДокумента = Документы.ОтчетПереработчика2_5.КоллекцияТабличныхЧастейТоваров();
ЗаполнитьЗначенияСвойств(ТаблицыДокумента, ЭтотОбъект);
КонецЕсли;
Возврат ТаблицыДокумента;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли