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