#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Организация", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Менеджер", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор, Распоряжение, Менеджер";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Подразделение", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Организация";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Договор, Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"БанковскийСчет", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор, Организация";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор, Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Касса", Параметры);
КонецПроцедуры
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("АдресныйСклад");
МеханизмыДокумента.Добавить("Взаиморасчеты");
МеханизмыДокумента.Добавить("Закупки");
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("ПередачаВПереработку");
МеханизмыДокумента.Добавить("Продажи");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СуммыДокументовВВалютахУчета");
МеханизмыДокумента.Добавить("ЦеныИСкидки");
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ЗаказПереработчику2_5") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаЗаказыПоставщикам(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаЦеныНоменклатурыПоставщиков(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры);
ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
#Область Заполнение
Процедура ПроверитьВозможностьВводаНаОсновании(Заказ, Статус = Неопределено, ЕстьОшибкиПроведен = Ложь, КВыполнению = Ложь) Экспорт
МассивДопустимыхСтатусов = ДопустимыеСтатусыВводаНаОсновании();
ЕстьОшибкиСтатус = МассивДопустимыхСтатусов.Найти(Статус) = Неопределено;
ПараметрыПроверки = ОбщегоНазначенияУТ.ПараметрыПроверкиВозможностиВводаНаОсновании();
ПараметрыПроверки.Статус = Статус;
ПараметрыПроверки.ЕстьОшибкиПроведен = ЕстьОшибкиПроведен;
ПараметрыПроверки.ЕстьОшибкиСтатус = ЕстьОшибкиСтатус;
ПараметрыПроверки.МассивДопустимыхСтатусов = МассивДопустимыхСтатусов;
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОснованииСПараметрами(Заказ, ПараметрыПроверки);
КонецПроцедуры
Функция ДопустимыеСтатусыВводаНаОсновании(ИмяДокумента = Неопределено) Экспорт
МассивДопустимыхСтатусов = Новый Массив;
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовПереработчикам.КИсполнению);
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовПереработчикам.Закрыт);
Возврат МассивДопустимыхСтатусов;
КонецФункции
Процедура ЗаполнитьПобочныеИзделияМатериалыУслугиПоСпецификации(СписокПродукции, Объект, СписокТЧ = "") Экспорт
ИменаТЧ = Новый Структура(СписокТЧ);
ЗаполнитьВсе = ИменаТЧ.Количество() = 0;
ПоляИсключения = Неопределено;
ГруппыЗатрат = Новый Массив;
СписокНоменклатуры = Справочники.РесурсныеСпецификации.СписокНоменклатуры();
СписокНоменклатуры.Колонки.Добавить("НомерГруппыЗатрат");
СписокНоменклатуры.Колонки.Добавить("Этап");
Для Каждого ТекущиеДанные Из СписокПродукции Цикл
ГруппыЗатрат.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
Если НЕ ЗначениеЗаполнено(ТекущиеДанные.Спецификация)
Или ТекущиеДанные.Количество = 0 Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = СписокНоменклатуры.Добавить();
ЗаполнитьЗначенияСвойств(
НоваяСтрока,
ТекущиеДанные,,
ПоляИсключения);
НоваяСтрока.НачалоПроизводства = Объект.Дата;
НоваяСтрока.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЦикла;
ОбщегоНазначенияКлиентСервер.СвернутьМассив(ГруппыЗатрат);
#Область СтруктураДействийИзделияИМатериалы
СтруктураДействийИзделия = Новый Структура;
СтруктураДействийМатериалы = Новый Структура;
#Область ПроверитьЗаполнитьСклад
ПараметрыДействия =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(
Объект,
Справочники.Склады.ЭтоГруппа(Объект.СкладПродукции),
"СкладПродукции",
"Получатель");
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов") Тогда
ПараметрыДействия.СкладПоУмолчанию = ОбщегоНазначенияУТ.ПолучитьПроверитьСкладПоУмолчанию();
КонецЕсли;
СтруктураДействийИзделия.Вставить("ПроверитьЗаполнитьСклад" , ПараметрыДействия);
ПараметрыДействия =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(
Объект,
Справочники.Склады.ЭтоГруппа(Объект.СкладМатериалов),
"СкладМатериалов",
"Склад");
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов") Тогда
ПараметрыДействия.СкладПоУмолчанию = ОбщегоНазначенияУТ.ПолучитьПроверитьСкладПоУмолчанию();
КонецЕсли;
СтруктураДействийМатериалы.Вставить("ПроверитьЗаполнитьСклад" , ПараметрыДействия);
#КонецОбласти
#Область ЗаполнитьЦенуПродажи
ПараметрыДействия = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект, Истина);
ПараметрыДействия.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействийИзделия.Вставить("ЗаполнитьЦенуПродажи", ПараметрыДействия);
СтруктураДействийМатериалы.Вставить("ЗаполнитьЦенуПродажи", ПараметрыДействия);
#КонецОбласти
#Область ПересчитатьСумму
СтруктураДействийИзделия.Вставить("ПересчитатьСумму");
СтруктураДействийМатериалы.Вставить("ПересчитатьСумму");
#КонецОбласти
#КонецОбласти
#Область СтруктураДействийУслуги
Если Объект.УслугиПоПереработке = Перечисления.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете Тогда
СтруктураДействийУслуги = Новый Структура;
ПараметрыДействия = Новый Структура;
ОтборВидаЦен = Новый Структура("Владелец, ЦенаВключаетНДС", Объект.Партнер, Объект.ЦенаВключаетНДС);
ВидЦеныПоставщикаПоУмолчанию = Справочники.ВидыЦенПоставщиков.ВидЦеныПоУмолчанию(Неопределено, ОтборВидаЦен);
ПараметрыДействия.Вставить("ИмяПоляВидЦены", "ВидЦеныПоставщика");
ПараметрыДействия.Вставить("ВидЦены", ВидЦеныПоставщикаПоУмолчанию);
СтруктураДействийУслуги.Вставить("ЗаполнитьВидЦены", ПараметрыДействия);
ПараметрыДействия = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияЦеныЗакупкиВСтрокеТЧ(Объект);
ПараметрыДействия.Вставить("Упаковка", ПредопределенноеЗначение("Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка"));
СтруктураДействийУслуги.Вставить("ЗаполнитьЦенуЗакупки", ПараметрыДействия);
ПараметрыДействия = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействийУслуги.Вставить("ЗаполнитьСтавкуНДС", ПараметрыДействия);
СтруктураДействийУслуги.Вставить("ПересчитатьСумму", "Количество");
ПараметрыДействия = Новый Структура;
ПараметрыДействия.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыДействия.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
СтруктураДействийУслуги.Вставить("ПересчитатьСуммуНДС", ПараметрыДействия);
СтруктураДействийУслуги.Вставить("ПересчитатьСуммуСНДС", ПараметрыДействия);
КонецЕсли;
#КонецОбласти
ПереченьДанных = Новый Массив;
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("ПобочныеИзделия")
Или ИменаТЧ.Свойство("ОбеспечениеМатериаламиИРаботами") Тогда
ПереченьДанных.Добавить("ВозвратныеОтходы");
КонецЕсли;
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("ПобочныеИзделия")
Или ИменаТЧ.Свойство("ОбеспечениеМатериаламиИРаботами") Тогда
ПереченьДанных.Добавить("МатериалыИУслуги");
КонецЕсли;
Если Объект.УслугиПоПереработке = Перечисления.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете
И (ЗаполнитьВсе
Или ИменаТЧ.Свойство("Услуги")) Тогда
ПереченьДанных.Добавить("Этапы");
КонецЕсли;
ПараметрыВыборки = Справочники.РесурсныеСпецификации.ПараметрыВыборкиДанных(ПереченьДанных);
ПараметрыВыборки.ПолучитьСведенияАвтовыбора = Ложь;
ПараметрыВыборки.ПолучитьПредставления = Ложь;
ПараметрыВыборки.ПереопределениеНастройкиПартииВыпуска.Использовать = Истина;
ПараметрыВыборки.ПереопределениеНастройкиПартииВыпуска.ВыпускПроизвольнымиПорциями = Истина;
ДанныеСпецификаций = Справочники.РесурсныеСпецификации.ДанныеСпецификацииПоСпискуНоменклатуры(
СписокНоменклатуры,
ПараметрыВыборки,
Истина,
"НомерГруппыЗатрат, Этап");
Если Не ТипЗнч(Объект) = Тип("ДанныеФормыСтруктура")
И Не ПереченьДанных.Найти("ВозвратныеОтходы") = Неопределено Тогда
ИсключитьПобочныеИзделияИзВыходных(Объект, СписокПродукции, ДанныеСпецификаций);
КонецЕсли;
Для Каждого СтруктураДанных Из ДанныеСпецификаций Цикл
Если СтруктураДанных = Неопределено Тогда
Продолжить;
КонецЕсли;
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("ПобочныеИзделия")
Или ИменаТЧ.Свойство("ОбеспечениеМатериаламиИРаботами") Тогда
Справочники.РесурсныеСпецификации.ИсключитьПроизводимыеНаЭтапеПолуфабрикаты(
СтруктураДанных.МатериалыИУслуги,
СтруктураДанных.ВозвратныеОтходы);
КонецЕсли;
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("ПобочныеИзделия") Тогда
ПараметрыДатыОперации = Новый Структура;
ПараметрыДатыОперации.Вставить("ИмяПоля", "ДатаПоступления");
ПараметрыДатыОперации.Вставить("Дата", ?(Объект.ПоступлениеОднойДатой, Объект.ДатаПоступления, Неопределено));
ЗаполнитьПоНормативам(
Объект.ПобочныеИзделия,
СтруктураДанных.ВозвратныеОтходы,
СтруктураДанных.НомерГруппыЗатрат,
СтруктураДействийИзделия,
ПараметрыДатыОперации);
КонецЕсли;
Если ЗаполнитьВсе
Или ИменаТЧ.Свойство("ОбеспечениеМатериаламиИРаботами") Тогда
ПараметрыДатыОперации = Новый Структура;
ПараметрыДатыОперации.Вставить("ИмяПоля", "ДатаОтгрузки");
ПараметрыДатыОперации.Вставить("Дата", ?(Объект.НеОтгружатьЧастями, Объект.ДатаОтгрузки, Неопределено));
ЗаполнитьПоНормативам(
Объект.ОбеспечениеМатериаламиИРаботами,
СтруктураДанных.МатериалыИУслуги,
СтруктураДанных.НомерГруппыЗатрат,
СтруктураДействийМатериалы,
ПараметрыДатыОперации);
Если Не Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства
И Не Объект.ОбеспечениеМатериаламиИРаботами.Количество() = 0
И ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Объект.ОбеспечениеМатериаламиИРаботами[0], "Производится") Тогда
Для Каждого ТекущиеДанные Из Объект.ОбеспечениеМатериаламиИРаботами Цикл
ТекущиеДанные.Производится = Ложь;
КонецЦикла;
КонецЕсли;
ЗаполнитьНазначенияВМатериалах(Объект, СтруктураДанных.НомерГруппыЗатрат);
КонецЕсли;
Если Объект.УслугиПоПереработке = Перечисления.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете
И (ЗаполнитьВсе
Или ИменаТЧ.Свойство("Услуги")) Тогда
ПараметрыДатыОперации = Новый Структура;
ПараметрыДатыОперации.Вставить("ИмяПоля", "ДатаВыполнения");
ПараметрыДатыОперации.Вставить("Дата", ?(Объект.ВыполнениеРаботОднойДатой, Объект.ДатаВыполнения, Неопределено));
Для Каждого ТекЭтап Из СтруктураДанных.Этапы Цикл
Если Не ТекЭтап.Этап = СтруктураДанных.Этап
И ЗначениеЗаполнено(СтруктураДанных.Этап)
Или Не ТекЭтап.ПроизводствоНаСтороне
Или ТекЭтап.УслугиПереработчика.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
ЗаполнитьПоНормативам(
Объект.Услуги,
ТекЭтап.УслугиПереработчика,
СтруктураДанных.НомерГруппыЗатрат,
СтруктураДействийУслуги,
ПараметрыДатыОперации);
КонецЦикла;
КонецЕсли;
КонецЦикла;
Если Объект.УслугиПоПереработке = Перечисления.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете
И (ЗаполнитьВсе
Или ИменаТЧ.Свойство("Услуги")) Тогда
ОбрабатываемыеСтроки = Новый Массив;
Отбор = Новый Структура("НомерГруппыЗатрат");
Для Каждого ТекущиеДанные Из ГруппыЗатрат Цикл
Отбор.НомерГруппыЗатрат = ТекущиеДанные;
Если Объект.Услуги.НайтиСтроки(Отбор).Количество() = 0 Тогда
НоваяСтрока = Объект.Услуги.Добавить();
НоваяСтрока.НомерГруппыЗатрат = ТекущиеДанные;
ОбрабатываемыеСтроки.Добавить(НоваяСтрока);
КонецЕсли;
КонецЦикла;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПараметрыДействия = Новый Структура;
ПараметрыДействия.Вставить("ИмяПоляВидЦены", "ВидЦеныПоставщика");
ПараметрыДействия.Вставить("ВидЦены", ВидЦеныПоставщикаПоУмолчанию);
СтруктураДействийУслуги = Новый Структура;
СтруктураДействийУслуги.Вставить("ЗаполнитьВидЦены", ПараметрыДействия);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействийУслуги,
Объект.Услуги,
КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьНазначенияВМатериалах(Объект, НомерГруппыЗатрат = 0) Экспорт
СоответствиеНазначений = Новый Соответствие;
Если Объект.ОбособлениеМатериаловПоНазначениюПродукции
Или Ложь Тогда
Для Каждого Строка Из Объект.ВыходныеИзделия Цикл
Если Не НомерГруппыЗатрат = 0
И Не Строка.НомерГруппыЗатрат = НомерГруппыЗатрат Тогда
Продолжить;
КонецЕсли;
Если Объект.ОбособлениеМатериаловПоНазначениюПродукции
И ЗначениеЗаполнено(Строка.Назначение)
И (Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукцииИНазначениям
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям) Тогда
СоответствиеНазначений.Вставить(Строка.НомерГруппыЗатрат, Строка.Назначение);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Для Каждого Строка Из Объект.ОбеспечениеМатериаламиИРаботами Цикл
Если Не НомерГруппыЗатрат = 0
И Не Строка.НомерГруппыЗатрат = НомерГруппыЗатрат Тогда
Продолжить;
КонецЕсли;
Если Строка.Обособленно Тогда
НайденноеНазначение = СоответствиеНазначений.Получить(Строка.НомерГруппыЗатрат);
Строка.Назначение = ?(ЗначениеЗаполнено(НайденноеНазначение), НайденноеНазначение, Объект.Назначение);
Иначе
Строка.Назначение = Неопределено;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#Область ТекстыЗапросаРаспоряженияНакладных
Процедура ДобавитьОтборПоКлючевымРеквизитамРаспоряжения(Отбор) Экспорт
КлючевыеРеквизиты = Новый Массив;
КлючевыеРеквизиты.Добавить("Организация");
КлючевыеРеквизиты.Добавить("Партнер");
КлючевыеРеквизиты.Добавить("Контрагент");
КлючевыеРеквизиты.Добавить("Договор");
КлючевыеРеквизиты.Добавить("Сделка");
КлючевыеРеквизиты.Добавить("Валюта");
КлючевыеРеквизиты.Добавить("НаправлениеДеятельности");
ОбщегоНазначенияУТ.ДобавитьОтборПоКлючевымРеквизитамРаспоряжения(КлючевыеРеквизиты, Отбор);
КонецПроцедуры
Функция ТекстЗапросаРаспоряженийНакладных(Параметры) Экспорт
ДобавитьОтборПоКлючевымРеквизитамРаспоряжения(Параметры.Отбор);
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаРаспоряжений.Ссылка КАК Распоряжение
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК ТаблицаРаспоряжений
|ГДЕ
| ТаблицаРаспоряжений.Проведен
| И &ТекстОтбора
|";
Если Параметры.СформироватьВТ Тогда
ТекстЗапроса = СхемыЗапросов.УстановитьВыборкуРазрешенныхЗаписей(ТекстЗапроса, Истина);
ТекстЗапроса = СхемыЗапросов.УстановитьПомещениеВоВременнуюТаблицу(ТекстЗапроса, Параметры.ИмяВТ);
ТекстЗапроса = СхемыЗапросов.УстановитьИндексациюПолейЗапроса(ТекстЗапроса, "Распоряжение");
КонецЕсли;
ТекстЗапроса =
СтрЗаменить(ТекстЗапроса, "&ТекстОтбора", ОбщегоНазначенияУТ.ТекстОтбораПоКоллекцииОтборов(Параметры.Отбор));
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Статус
Функция СформироватьЗапросПроверкиПриСменеСтатуса(МассивДокументов, НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаказовПереработчикам[НовыйСтатус];
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР КОГДА ТаблицаДокументов.Статус = &Статус ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ВЫБОР КОГДА НЕ &ИспользоватьСтатусы
| И НЕ ТаблицаДокументов.ГруппировкаЗатрат = ЗНАЧЕНИЕ(Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства)
| ТОГДА ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЗапрещеноМенятьСтатус,
| ИСТИНА КАК ЗаписьПроведением
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)
|";
ИспользоватьСтатусы = ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПереработчикам2_5");
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Статус", ЗначениеНовогоСтатуса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Запрос.УстановитьПараметр("ИспользоватьСтатусы", ИспользоватьСтатусы);
Возврат Запрос;
КонецФункции
Функция СформироватьЗапросПроверкиПриАвтоматическомРасчетеСтатуса(МассивДокументов, ДополнительныеПараметры) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ВЫБОР КОГДА НЕ &ИспользоватьСтатусы
| И НЕ ТаблицаДокументов.ГруппировкаЗатрат = ЗНАЧЕНИЕ(Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства)
| ТОГДА ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЗапрещеноМенятьСтатус,
| ИСТИНА КАК ЗаписьПроведением
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)
|";
ИспользоватьСтатусы = ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПереработчикам2_5");
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Запрос.УстановитьПараметр("ИспользоватьСтатусы", ИспользоватьСтатусы);
Возврат Запрос;
КонецФункции
Функция ПроверкаПередСменойСтатуса(ВыборкаПроверки, НовыйСтатус, ДополнительныеПараметры) Экспорт
Отказ = Ложь;
Если ВыборкаПроверки.ЗапрещеноМенятьСтатус Тогда
ТекстОшибки = НСтр("ru = 'У документа %Документ% статус ""%Статус%"" не установлен, т.к. заказ переработчику создан не на основании заказа на производство.'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Документ%", ВыборкаПроверки.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Статус%", ВыборкаПроверки.ПредставлениеНовогоСтатуса);
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ВыборкаПроверки.Ссылка);
Отказ = Истина;
КонецЕсли;
Возврат Не Отказ;
КонецФункции
Функция СкорректироватьСтрокиЗаказа(Объект, СтруктураПараметров) Экспорт
Если Не СтруктураПараметров.ОтменитьНеотработанныеСтроки
И Не (СтруктураПараметров.СкорректироватьМерныеТовары Или СтруктураПараметров.СкорректироватьМерныеТоварыПоПриемке) Тогда
Возврат ЗаказыСервер.РезультатОтменыНеотработанныхСтрок(Неопределено)
КонецЕсли;
ИмяПоляПричина = "ПричинаОтмены";
КоличествоСкорректированныхСтрок = 0;
КорректироватьПродукцию =
(СтруктураПараметров.ОтменитьНеотработанныеСтроки
Или СтруктураПараметров.СкорректироватьМерныеТоварыПоПриемке)
И (СтруктураПараметров.ИмяТабличнойЧасти = "Товары"
Или СтруктураПараметров.ИмяТабличнойЧасти = "ВыходныеИзделия");
КорректироватьВозОтходы =
(СтруктураПараметров.ОтменитьНеотработанныеСтроки
Или СтруктураПараметров.СкорректироватьМерныеТоварыПоПриемке)
И (СтруктураПараметров.ИмяТабличнойЧасти = "Товары"
Или СтруктураПараметров.ИмяТабличнойЧасти = "ПобочныеИзделия");
КорректироватьМатериалы =
(СтруктураПараметров.ОтменитьНеотработанныеСтроки
Или СтруктураПараметров.СкорректироватьМерныеТовары)
И (СтруктураПараметров.ИмяТабличнойЧасти = "Товары"
Или СтруктураПараметров.ИмяТабличнойЧасти = "ОбеспечениеМатериаламиИРаботами");
КорректироватьУслуги =
СтруктураПараметров.ОтменитьНеотработанныеСтроки
И (СтруктураПараметров.ИмяТабличнойЧасти = "Товары"
Или СтруктураПараметров.ИмяТабличнойЧасти = "Услуги");
Если Не СтруктураПараметров.ПроверятьОстатки Тогда
СвойстваОтмененнойСтроки = Новый Структура;
СвойстваОтмененнойСтроки.Вставить("Отменено", Истина);
СвойстваОтмененнойСтроки.Вставить("СтатусУказанияСерий", 0);
СвойстваОтмененнойСтроки.Вставить(ИмяПоляПричина, СтруктураПараметров.ПричинаОтмены);
Если КорректироватьПродукцию Тогда
Для Каждого СтрокаТовары Из Объект.ВыходныеИзделия Цикл
Если Не СтрокаТовары.Отменено Тогда
ЗаполнитьЗначенияСвойств(СтрокаТовары, СвойстваОтмененнойСтроки);
КоличествоСкорректированныхСтрок = КоличествоСкорректированныхСтрок + 1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если КорректироватьВозОтходы Тогда
Для каждого СтрокаТовары Из Объект.ПобочныеИзделия Цикл
Если Не СтрокаТовары.Отменено Тогда
ЗаполнитьЗначенияСвойств(СтрокаТовары, СвойстваОтмененнойСтроки);
КоличествоСкорректированныхСтрок = КоличествоСкорректированныхСтрок + 1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если КорректироватьМатериалы Тогда
Для каждого СтрокаТовары Из Объект.ОбеспечениеМатериаламиИРаботами Цикл
Если Не СтрокаТовары.Отменено Тогда
ЗаполнитьЗначенияСвойств(СтрокаТовары, СвойстваОтмененнойСтроки);
КоличествоСкорректированныхСтрок = КоличествоСкорректированныхСтрок + 1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если КорректироватьУслуги Тогда
Для каждого СтрокаТовары Из Объект.Услуги Цикл
Если Не СтрокаТовары.Отменено Тогда
ЗаполнитьЗначенияСвойств(СтрокаТовары, СвойстваОтмененнойСтроки);
КоличествоСкорректированныхСтрок = КоличествоСкорректированныхСтрок + 1;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат ЗаказыСервер.РезультатОтменыНеотработанныхСтрок(КоличествоСкорректированныхСтрок);
КонецЕсли;
ПричинаОтмены = ?(СтруктураПараметров.ОтменитьНеотработанныеСтроки, СтруктураПараметров.ПричинаОтмены,
Справочники.ПричиныОтменыЗаказовПоставщикам.ОтклонениеПриПриемкеМерныхТоваров);
ПараметрыЗаполнения = ЗаказыСервер.ПараметрыЗаполненияДляОтменыСтрок();
ПараметрыЗаполнения.МенеджерРегистра = РегистрыНакопления.ЗаказыПоставщикам;
ПараметрыОтмены = ЗаказыСервер.ПараметрыОтменыСтрокЗаказов();
ПараметрыОтмены.ПричинаОтмены = ПричинаОтмены;
ПараметрыОтмены.ОтменятьТолькоМерныеТовары =
НЕ СтруктураПараметров.ОтменитьНеотработанныеСтроки
И СтруктураПараметров.СкорректироватьМерныеТоварыПоПриемке;
ПараметрыОтмены.СкорректироватьМерныеТовары = СтруктураПараметров.СкорректироватьМерныеТоварыПоПриемке;
Если КорректироватьПродукцию Тогда
ПараметрыЗаполнения.ИмяТабличнойЧасти = "ВыходныеИзделия";
КоличествоСкорректированныхСтрок =
КоличествоСкорректированныхСтрок
+ ЗаказыСервер.ОтменитьНеотработанныеСтрокиПоПриемке(Объект, ПараметрыЗаполнения, ПараметрыОтмены).КоличествоСтрок;
КонецЕсли;
Если КорректироватьУслуги Тогда
ПараметрыЗаполнения.ИмяТабличнойЧасти = "Услуги";
КоличествоСкорректированныхСтрок =
КоличествоСкорректированныхСтрок
+ ЗаказыСервер.ОтменитьНеотработанныеСтрокиПоПриемке(Объект, ПараметрыЗаполнения, ПараметрыОтмены).КоличествоСтрок;
КонецЕсли;
Если КорректироватьВозОтходы Тогда
ПараметрыЗаполнения.ИмяТабличнойЧасти = "ПобочныеИзделия";
ПараметрыОтмены.КорректироватьСумму = Истина;
КоличествоСкорректированныхСтрок =
КоличествоСкорректированныхСтрок
+ ЗаказыСервер.ОтменитьНеотработанныеСтрокиПоПриемке(Объект, ПараметрыЗаполнения, ПараметрыОтмены).КоличествоСтрок;
КонецЕсли;
Если КорректироватьМатериалы Тогда
ПараметрыЗаполнения.МенеджерРегистра = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат;
ПараметрыЗаполнения.ИмяТабличнойЧасти = "ОбеспечениеМатериаламиИРаботами";
КоличествоСкорректированныхСтрок =
КоличествоСкорректированныхСтрок
+ ЗаказыСервер.ОтменитьНеотработанныеСтрокиПоОтгрузке(Объект, ПараметрыЗаполнения, ПараметрыОтмены).КоличествоСтрок;
КоличествоСкорректированныхСтрок =
КоличествоСкорректированныхСтрок
+ ОтменитьНеизрасходованныеСтрокиПереданныеРанее(Объект);
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаказПереработчику2_5));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами);
КонецЕсли;
Возврат ЗаказыСервер.РезультатОтменыНеотработанныхСтрок(КоличествоСкорректированныхСтрок);
КонецФункции
Функция ОтменитьНеизрасходованныеСтрокиПереданныеРанее(Объект)
ТаблицаВыбранныхСтрок = Новый ТаблицаЗначений();
ТаблицаВыбранныхСтрок.Колонки.Добавить("НомерГруппыЗатрат", Новый ОписаниеТипов("Число"));
ТаблицаВыбранныхСтрок.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТаблицаВыбранныхСтрок.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
ТаблицаВыбранныхСтрок.Колонки.Добавить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
ТаблицаВыбранныхСтрок.Колонки.Добавить("ВариантОбеспечения", Новый ОписаниеТипов("ПеречислениеСсылка.ВариантыОбеспечения"));
ТаблицаВыбранныхСтрок.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Число"));
ТаблицаВыбранныхСтрок.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
ТаблицаВыбранныхСтрок.Колонки.Добавить("КоличествоПереданРанее", Новый ОписаниеТипов("Число"));
Для Каждого ТекущиеДанные Из Объект.ОбеспечениеМатериаламиИРаботами Цикл
Если ТекущиеДанные.Отменено
Или (Не ТекущиеДанные.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Отгрузить
И Не ТекущиеДанные.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.ПереданРанее) Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = ТаблицаВыбранныхСтрок.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекущиеДанные);
НоваяСтрока.Идентификатор = ТекущиеДанные.НомерСтроки - 1;
КонецЦикла;
Запрос = Новый Запрос;
Если ОбщегоНазначения.РежимОтладки() Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
КонецЕсли;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаМатериалы.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаМатериалы.Номенклатура КАК Номенклатура,
| ТаблицаМатериалы.Характеристика КАК Характеристика,
| ТаблицаМатериалы.Серия КАК Серия,
| ТаблицаМатериалы.Количество КАК Количество
|ПОМЕСТИТЬ ОтгруженныеМатериалы
|ИЗ
| &ТаблицаВыбранныхСтрок КАК ТаблицаМатериалы
|ГДЕ
| ТаблицаМатериалы.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТаблицаИзделия.Ссылка КАК Ссылка,
| ТаблицаИзделия.НомерГруппыЗатрат КАК НомерГруппыЗатрат
|ПОМЕСТИТЬ ТаблицаИзделия
|ИЗ
| (ВЫБРАТЬ
| ТаблицаИзделия.Ссылка КАК Ссылка,
| ТаблицаИзделия.НомерГруппыЗатрат КАК НомерГруппыЗатрат
| ИЗ
| Документ.ОтчетПереработчика2_5.ВыходныеИзделия КАК ТаблицаИзделия
| ГДЕ
| ТаблицаИзделия.ЗаказПереработчику = &ЗаказПереработчику
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаИзделия.Ссылка КАК Ссылка,
| ТаблицаИзделия.НомерГруппыЗатрат КАК НомерГруппыЗатрат
| ИЗ
| Документ.ОтчетПереработчика2_5.ПобочныеИзделия КАК ТаблицаИзделия
| ГДЕ
| ТаблицаИзделия.ЗаказПереработчику = &ЗаказПереработчику
| ) КАК ТаблицаИзделия
|
|СГРУППИРОВАТЬ ПО
| ТаблицаИзделия.Ссылка,
| ТаблицаИзделия.НомерГруппыЗатрат
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| НомерГруппыЗатрат
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТаблицаМатериалы.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаМатериалы.Номенклатура КАК Номенклатура,
| ТаблицаМатериалы.Характеристика КАК Характеристика,
| ТаблицаМатериалы.Серия КАК Серия,
| СУММА(ТаблицаМатериалы.Количество) КАК Количество
|ИЗ
| (ВЫБРАТЬ
| ТаблицаМатериалы.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаМатериалы.Номенклатура КАК Номенклатура,
| ТаблицаМатериалы.Характеристика КАК Характеристика,
| ТаблицаМатериалы.Серия КАК Серия,
| ТаблицаМатериалы.Количество КАК Количество
| ИЗ
| ТаблицаИзделия КАК ТаблицаИзделия
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетПереработчика2_5.МатериалыИРаботы КАК ТаблицаМатериалы
| ПО ТаблицаМатериалы.Ссылка = ТаблицаИзделия.Ссылка
| И ТаблицаМатериалы.НомерГруппыЗатрат = ТаблицаИзделия.НомерГруппыЗатрат
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаМатериалы.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ТаблицаМатериалы.Номенклатура КАК Номенклатура,
| ТаблицаМатериалы.Характеристика КАК Характеристика,
| ТаблицаМатериалы.Серия КАК Серия,
| -ТаблицаМатериалы.Количество КАК Количество
| ИЗ
| ОтгруженныеМатериалы КАК ТаблицаМатериалы
| ) КАК ТаблицаМатериалы
|
|СГРУППИРОВАТЬ ПО
| ТаблицаМатериалы.НомерГруппыЗатрат,
| ТаблицаМатериалы.Номенклатура,
| ТаблицаМатериалы.Характеристика,
| ТаблицаМатериалы.Серия
|
|ИМЕЮЩИЕ
| СУММА(ТаблицаМатериалы.Количество) > 0
|";
Запрос.УстановитьПараметр("ЗаказПереработчику", Объект.Ссылка);
Запрос.УстановитьПараметр("ТаблицаВыбранныхСтрок", ТаблицаВыбранныхСтрок);
Ключ = "НомерГруппыЗатрат, Номенклатура, Характеристика, Серия";
ИзрасходованныеМатериалы = Запрос.Выполнить().Выгрузить();
ИзрасходованныеМатериалы.Индексы.Добавить(Ключ);
ОтмененоСтрок = 0;
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого ТекущиеДанные Из ТаблицаВыбранныхСтрок Цикл
Если Не ТекущиеДанные.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.ПереданРанее Тогда
Продолжить;
КонецЕсли;
Отбор = Новый Структура(Ключ);
ЗаполнитьЗначенияСвойств(Отбор, ТекущиеДанные);
Для Каждого НайденнаяСтрока Из ИзрасходованныеМатериалы.НайтиСтроки(Отбор) Цикл
Если НайденнаяСтрока.Количество = 0 Тогда
Продолжить;
КонецЕсли;
КоличествоИзрасходованно = Мин(ТекущиеДанные.Количество, НайденнаяСтрока.Количество);
ТекущиеДанные.КоличествоПереданРанее = ТекущиеДанные.КоличествоПереданРанее + КоличествоИзрасходованно;
ТекущиеДанные.Количество = ТекущиеДанные.Количество - КоличествоИзрасходованно;
НайденнаяСтрока.Количество = НайденнаяСтрока.Количество - КоличествоИзрасходованно;
Если ТекущиеДанные.Количество = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если Не ТекущиеДанные.КоличествоПереданРанее = 0
И Не Объект.ОбеспечениеМатериаламиИРаботами[ТекущиеДанные.Идентификатор].Количество = ТекущиеДанные.КоличествоПереданРанее Тогда
Объект.ОбеспечениеМатериаламиИРаботами[ТекущиеДанные.Идентификатор].Количество = ТекущиеДанные.КоличествоПереданРанее;
ОбрабатываемыеСтроки.Добавить(Объект.ОбеспечениеМатериаламиИРаботами[ТекущиеДанные.Идентификатор]);
КонецЕсли;
Если Не ТекущиеДанные.Количество = 0 Тогда
Если Не Объект.ОбеспечениеМатериаламиИРаботами[ТекущиеДанные.Идентификатор].Количество = ТекущиеДанные.Количество Тогда
НоваяСтрока = Объект.ОбеспечениеМатериаламиИРаботами.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Объект.ОбеспечениеМатериаламиИРаботами[ТекущиеДанные.Идентификатор]);
НоваяСтрока.Количество = ТекущиеДанные.Количество;
ОбрабатываемыеСтроки.Добавить(НоваяСтрока);
Иначе
НоваяСтрока = Объект.ОбеспечениеМатериаламиИРаботами[ТекущиеДанные.Идентификатор];
КонецЕсли;
НоваяСтрока.Отменено = Истина;
ОтмененоСтрок = ОтмененоСтрок + 1;
КонецЕсли;
КонецЦикла;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.ОбеспечениеМатериаламиИРаботами,
КэшированныеЗначения);
Возврат ОтмененоСтрок;
КонецФункции
#КонецОбласти
#Область ГруппыЗатрат
Процедура ОбновитьГруппыЗатрат(Объект, ГруппыЗатрат, КоличествоГруппЗатрат) Экспорт
СписокПолей =
ПереработкаНаСторонеКлиентСервер.ПереченьПолейГруппыЗатратЗаказаПереработчику(Объект.ГруппировкаЗатрат);
ТекстПоляВыбора = ПереработкаНаСторонеКлиентСервер.ТекстЗапросаПоПолямГруппыЗатрат("ТаблицаДанных", СписокПолей);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаДанных.НомерГруппыЗатрат
| ,&ТекстПоляВыбора
|ПОМЕСТИТЬ ВТ_ГруппыЗатрат
|ИЗ
| &ТаблицаДанных КАК ТаблицаДанных
|;
|
|
|ВЫБРАТЬ
| ТаблицаДанных.НомерГруппыЗатрат
| ,&ТекстПоляВыбора
|ИЗ
| ВТ_ГруппыЗатрат КАК ТаблицаДанных
|;
|
|
|ВЫБРАТЬ
| МАКСИМУМ(ВТ_ГруппыЗатрат.НомерГруппыЗатрат) КАК НомерГруппыЗатрат
|ИЗ
| ВТ_ГруппыЗатрат КАК ВТ_ГруппыЗатрат";
Запрос.Текст = СтрЗаменить(Запрос.Текст, ",&ТекстПоляВыбора", ТекстПоляВыбора);
Запрос.УстановитьПараметр("ТаблицаДанных", Объект.ВыходныеИзделия.Выгрузить());
Результат = Запрос.ВыполнитьПакет();
Если ТипЗнч(ГруппыЗатрат) = Тип("ТаблицаЗначений") Тогда
Для Каждого ТекСтрока Из Результат[1].Выгрузить() Цикл
ЗаполнитьЗначенияСвойств(ГруппыЗатрат.Добавить(), ТекСтрока);
КонецЦикла;
Иначе
ГруппыЗатрат.Загрузить(Результат[1].Выгрузить());
КонецЕсли;
КоличествоГруппЗатрат = ГруппыЗатрат.Количество();
Если Не Результат[2].Пустой() Тогда
Выборка = Результат[2].Выбрать();
Выборка.Следующий();
Объект.МаксимальныйНомерГруппыЗатрат = Выборка.НомерГруппыЗатрат;
КонецЕсли;
Для Каждого ТекГруппа Из ГруппыЗатрат Цикл
ЗаполнитьСлужебныеРеквизитыГруппыЗатрат(Объект, ГруппыЗатрат, ТекГруппа);
ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(Объект, ГруппыЗатрат, ТекГруппа);
КонецЦикла;
КонецПроцедуры
Процедура ОбновитьПредставлениеГруппЗатрат(Объект, ГруппыЗатрат) Экспорт
Для Каждого ТекГруппа Из ГруппыЗатрат Цикл
ТекГруппа.ГруппаЗатрат = ПредставлениеГруппыЗатрат(ТекГруппа, Объект.ГруппировкаЗатрат);
КонецЦикла;
КонецПроцедуры
Процедура ЗаполнитьСлужебныеРеквизитыГруппыЗатрат(Объект, ГруппыЗатрат, ОписаниеГруппыЗатрат) Экспорт
ОписаниеГруппыЗатратДоИзменения = ОбщегоНазначения.СкопироватьРекурсивно(ОписаниеГруппыЗатрат);
ОписаниеГруппыЗатрат.ИмяТаблицыИзделий = "ВыходныеИзделия";
Если Объект.ОбособлениеМатериаловПоНазначениюПродукции
И ЗначениеЗаполнено(ОписаниеГруппыЗатрат.Назначение) Тогда
ОписаниеГруппыЗатрат.НазначениеОбеспечения = ОписаниеГруппыЗатрат.Назначение;
Иначе
ОписаниеГруппыЗатрат.НазначениеОбеспечения = Объект.Назначение;
КонецЕсли;
Если ТипЗнч(ОписаниеГруппыЗатрат) = Тип("Структура")
И Не ОбщегоНазначенияУТКлиентСервер.СтруктурыРавны(ОписаниеГруппыЗатратДоИзменения, ОписаниеГруппыЗатрат) Тогда
ОбновитьГруппуЗатрат(ГруппыЗатрат, ОписаниеГруппыЗатрат);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьЗависимыеСлужебныеРеквизитыГруппыЗатрат(Объект, ГруппыЗатрат, ОписаниеГруппыЗатрат) Экспорт
Если ОписаниеГруппыЗатрат.НомерГруппыЗатрат = 0 Тогда
Возврат;
КонецЕсли;
ОписаниеГруппыЗатратДоИзменения = ОбщегоНазначения.СкопироватьРекурсивно(ОписаниеГруппыЗатрат);
ОписаниеГруппыЗатрат.ВсеСтрокиИзделийОтменены = ВсеСтрокиИзделийГруппыЗатратОтменены(Объект, ОписаниеГруппыЗатрат);
Если ТипЗнч(ОписаниеГруппыЗатрат) = Тип("Структура")
И Не ОбщегоНазначенияУТКлиентСервер.СтруктурыРавны(ОписаниеГруппыЗатратДоИзменения, ОписаниеГруппыЗатрат) Тогда
ОбновитьГруппуЗатрат(ГруппыЗатрат, ОписаниеГруппыЗатрат);
КонецЕсли;
КонецПроцедуры
Функция ПредставлениеГруппыЗатрат(Группа, ГруппировкаЗатрат) Экспорт
Возврат ПереработкаНаСторонеКлиентСервер.ПредставлениеГруппыЗатрат(
Группа,
ПереработкаНаСторонеКлиентСервер.ПереченьПолейГруппыЗатратЗаказаПереработчику(ГруппировкаЗатрат));
КонецФункции
Функция ТаблицаГруппыЗатрат() Экспорт
ГруппыЗатрат = Новый ТаблицаЗначений;
ГруппыЗатрат.Колонки.Добавить("НомерГруппыЗатрат", Новый ОписаниеТипов("Число"));
ГруппыЗатрат.Колонки.Добавить("ГруппаЗатрат", Новый ОписаниеТипов("Строка"));
ГруппыЗатрат.Колонки.Добавить("Спецификация", Новый ОписаниеТипов("СправочникСсылка.РесурсныеСпецификации"));
ГруппыЗатрат.Колонки.Добавить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
ГруппыЗатрат.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ГруппыЗатрат.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
ГруппыЗатрат.Колонки.Добавить(
"СпособРаспределенияЗатратНаВыходныеИзделия",
Новый ОписаниеТипов("ПеречислениеСсылка.СпособыРаспределенияЗатратНаВыходныеИзделия"));
ГруппыЗатрат.Колонки.Добавить("Заказ", Новый ОписаниеТипов("ДокументСсылка.ЗаказПереработчику2_5"));
ГруппыЗатрат.Колонки.Добавить("НазначениеОбеспечения", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
ГруппыЗатрат.Колонки.Добавить("ИмяТаблицыИзделий", Новый ОписаниеТипов("Строка"));
ГруппыЗатрат.Колонки.Добавить("ВсеСтрокиИзделийОтменены", Новый ОписаниеТипов("Булево"));
Возврат ГруппыЗатрат;
КонецФункции
#КонецОбласти
#Область Серии
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
Возврат "Дата";
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ПараметрыУказанияСерий = Новый Структура;
#Область ОбеспечениеМатериаламиИРаботами
ПараметрыУказанияСерийТЧ = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыУказанияСерийТЧ.ПолноеИмяОбъекта = ПолноеИмяОбъекта();
ПараметрыУказанияСерийТЧ.ИмяТЧТовары = "ОбеспечениеМатериаламиИРаботами";
ПараметрыУказанияСерийТЧ.ИмяТЧСерии = "ОбеспечениеМатериаламиИРаботами";
ПараметрыУказанияСерийТЧ.ИменаПолейДополнительные.Добавить("Склад");
ПараметрыУказанияСерийТЧ.ИспользоватьСерииНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыСклад", Новый Структура());
ПараметрыУказанияСерийТЧ.УчитыватьСебестоимостьПоСериям = ПолучитьФункциональнуюОпцию("УчитыватьСебестоимостьПоСериямСклад", Новый Структура());
ПараметрыУказанияСерийТЧ.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаКлиенту);
ПараметрыУказанияСерийТЧ.ЭтоЗаказ = Истина;
ПараметрыУказанияСерийТЧ.ПланированиеОтгрузки = Истина;
ПараметрыУказанияСерийТЧ.РегистрироватьСерии = Ложь;
ПараметрыУказанияСерийТЧ.Дата = Объект.Дата;
ПараметрыУказанияСерий.Вставить("ОбеспечениеМатериаламиИРаботами", ПараметрыУказанияСерийТЧ);
#КонецОбласти
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Серия,
| Товары.Отменено,
| Товары.ВариантОбеспечения,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА Товары.Отменено
| ИЛИ ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ИЛИ НЕ Товары.ВариантОбеспечения В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| КОГДА Товары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ТОГДА 15
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| КОГДА Товары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ТОГДА 11
| ИНАЧЕ 9
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ПолитикиУчетаСерий.Склад = Склады.Ссылка
| ПО (ПолитикиУчетаСерий.Склад = Товары.Склад)
| И ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область Прочее
Функция ПредставлениеОбъектаНаОсновномЯзыке() Экспорт
КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
ПредставлениеОбъекта = НСтр(
"ru = 'Заказ переработчику'",
КодОсновногоЯзыка);
Возврат ПредставлениеОбъекта;
КонецФункции
Функция ТекстЗапросаРеквизитыДоставки() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Шапка.Номер КАК Номер,
| Шапка.Проведен КАК Проведен,
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Шапка.Партнер КАК ПолучательОтправитель,
| Шапка.ПеревозчикПартнер КАК Перевозчик,
| ВЫБОР КОГДА Шапка.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| И НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.Самовывоз)
| ИНАЧЕ Шапка.СпособДоставки
| КОНЕЦ КАК СпособДоставки,
| Шапка.ЗонаДоставки КАК Зона,
| Шапка.АдресДоставки КАК Адрес,
| Шапка.АдресДоставкиЗначенияПолей
| КАК АдресЗначенияПолей,
| Шапка.ВремяДоставкиС КАК ВремяС,
| Шапка.ВремяДоставкиПо КАК ВремяПо,
| Шапка.ДополнительнаяИнформацияПоДоставке
| КАК ДополнительнаяИнформация,
| Т.Склад КАК Склад,
| Т.ДоставитьПолностью КАК ДоставитьПолностью,
| Шапка.ОсобыеУсловияПеревозки КАК ОсобыеУсловияПеревозки,
| Шапка.ОсобыеУсловияПеревозкиОписание КАК ОсобыеУсловияПеревозкиОписание,
| ЛОЖЬ КАК РазбиватьРасходныеОрдераПоРаспоряжениям
|
|ИЗ
| (ВЫБРАТЬ
| Т.Ссылка КАК Ссылка,
| Т.Склад КАК Склад,
| МИНИМУМ(ВЫБОР
| КОГДА Т.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ДоставитьПолностью
| ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК Т
| ГДЕ
| Т.Ссылка В (&Ссылки)
|
| СГРУППИРОВАТЬ ПО
| Т.Ссылка,
| Т.Склад
|
| ИМЕЮЩИЕ
| МАКСИМУМ(ВЫБОР
| КОГДА Т.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| ТОГДА ИСТИНА
| КОНЕЦ) = ИСТИНА
| ) КАК Т
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику2_5 КАК Шапка
| ПО (Шапка.Ссылка = Т.Ссылка)";
Возврат ТекстЗапроса;
КонецФункции
Функция РеквизитыДокумента(ДокументСсылка) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокумента.СуммаДокумента КАК СуммаВзаиморасчетов
|
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &ДокументСсылка
|");
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Дата = Выборка.Дата;
Организация = Выборка.Организация;
Партнер = Выборка.Партнер;
Контрагент = Выборка.Контрагент;
Договор = Выборка.Договор;
ПорядокРасчетов = Выборка.ПорядокРасчетов;
Валюта = Выборка.Валюта;
ВалютаВзаиморасчетов = Выборка.ВалютаВзаиморасчетов;
ХозяйственнаяОперация = ?(ЗначениеЗаполнено(Выборка.ХозяйственнаяОперация),
Выборка.ХозяйственнаяОперация,
Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика2_5);
СуммаДокумента = Выборка.СуммаДокумента;
СуммаВзаиморасчетов = Выборка.СуммаВзаиморасчетов;
Иначе
Дата = Дата(1,1,1);
Организация = Справочники.Организации.ПустаяСсылка();
Партнер = Справочники.Партнеры.ПустаяСсылка();
Контрагент = Справочники.Контрагенты.ПустаяСсылка();
Договор = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПустаяСсылка();
Валюта = Справочники.Валюты.ПустаяСсылка();
ВалютаВзаиморасчетов = Справочники.Валюты.ПустаяСсылка();
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика2_5;
СуммаДокумента = 0;
СуммаВзаиморасчетов = 0;
КонецЕсли;
СтруктураРеквизитов = Новый Структура;
СтруктураРеквизитов.Вставить("Дата", Дата);
СтруктураРеквизитов.Вставить("Организация", Организация);
СтруктураРеквизитов.Вставить("Партнер", Партнер);
СтруктураРеквизитов.Вставить("Контрагент", Контрагент);
СтруктураРеквизитов.Вставить("Договор", Договор);
СтруктураРеквизитов.Вставить("ПорядокРасчетов", ПорядокРасчетов);
СтруктураРеквизитов.Вставить("Валюта", Валюта);
СтруктураРеквизитов.Вставить("ВалютаВзаиморасчетов", ВалютаВзаиморасчетов);
СтруктураРеквизитов.Вставить("ХозяйственнаяОперация", ХозяйственнаяОперация);
СтруктураРеквизитов.Вставить("СуммаДокумента", СуммаДокумента);
СтруктураРеквизитов.Вставить("СуммаВзаиморасчетов", СуммаВзаиморасчетов);
Возврат СтруктураРеквизитов;
КонецФункции
Процедура РассчитатьСостояние(Знач ЗаказПереработчику,
Знач Договор,
СостояниеРасчетов) Экспорт
ЗаполнитьЗначенияСвойств(СостояниеРасчетов, СтруктураСостоянияРасчетов());
Если ЗначениеЗаполнено(ЗаказПереработчику) И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.РасчетыСПоставщиками) Тогда
ТекстЗапроса = ТекстЗапросаДляРасчетаСостоянийЗаказов();
ТекстЗапроса = СтрЗаменить(
ТекстЗапроса,
"ОбъектРасчетов В (ВЫБРАТЬ ОбъектРасчетов ИЗ ОбъектыРасчетов)",
"ОбъектРасчетов = &ОбъектРасчетов");
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
МассивЗаказов = Новый Массив;
МассивЗаказов.Добавить(ЗаказПереработчику);
ОбъектРасчетов = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗаказПереработчику, "ОбъектРасчетов");
Запрос.УстановитьПараметр("МассивЗаказов" , МассивЗаказов);
Запрос.УстановитьПараметр("ОбъектРасчетов", ОбъектРасчетов);
Запрос.УстановитьПараметр("ТекущаяДата", НачалоДня(ТекущаяДатаСеанса()));
УстановитьПривилегированныйРежим(Истина);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ЗаполнитьЗначенияСвойств(СостояниеРасчетов, Выборка);
КонецЕсли;
КонецПроцедуры
Функция ТекстЗапросаДляРасчетаСостоянийЗаказов() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| ВЫБОР КОГДА НЕ Заказ.Проведен ТОГДА
| НЕОПРЕДЕЛЕНО
| КОГДА Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовПоставщикам.ОжидаетсяСогласование)
| КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И (Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован) ИЛИ &НеИспользоватьСтатусыЗаказов)
| И Заказ.СуммаАвансаДоПодтверждения > 0
| И ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеПриход, 0) < Заказ.СуммаАвансаДоПодтверждения ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовПоставщикам.ОжидаетсяАвансДоПодтверждения)
| КОГДА Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован)
| И Заказ.СуммаДокумента > 0
| И (ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеПриход, 0) >= Заказ.СуммаАвансаДоПодтверждения
| ИЛИ Заказ.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовПоставщикам.ОжидаетсяПодтверждение)
| КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И (&НеИспользоватьСтатусыЗаказов
| ИЛИ Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению))
| И Заказ.СуммаПредоплатыДоПоступления > 0
| И ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеПриход, 0) < Заказ.СуммаПредоплатыДоПоступления + Заказ.СуммаАвансаДоПодтверждения ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовПоставщикам.ОжидаетсяПредоплатаДоПоступления)
| КОГДА Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению)
| И Заказ.СуммаДокумента > 0
| И (ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеПриход, 0) >= Заказ.СуммаПредоплатыДоПоступления + Заказ.СуммаАвансаДоПодтверждения
| ИЛИ Заказ.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовПоставщикам.ГотовКПоступлению)
| КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И (Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению) ИЛИ &НеИспользоватьСтатусыЗаказов)
| И Заказ.СуммаДокумента > 0
| И ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеПриход, 0) >= Заказ.СуммаПредоплатыДоПоступления + Заказ.СуммаАвансаДоПодтверждения
| И ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КПоступлениюКонечныйОстаток, 0) > 0 ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовПоставщикам.ОжидаетсяПоступление)
| КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И (Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению) ИЛИ &НеИспользоватьСтатусыЗаказов)
| И Заказ.СуммаДокумента - Заказ.СуммаАвансаДоПодтверждения - Заказ.СуммаПредоплатыДоПоступления > 0
| И ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеКонечныйОстаток, 0) < 0 ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовПоставщикам.ОжидаетсяОплатаПослеПоступления)
| КОГДА Заказ.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовПоставщикам.ГотовКЗакрытию)
| КОГДА Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт) ИЛИ &НеИспользоватьСтатусыЗаказов ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовПоставщикам.Закрыт)
| КОНЕЦ КАК Состояние,
| ВЫБОР КОГДА НЕ Заказ.Проведен ТОГДА
| ЛОЖЬ
| КОГДА Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт) И НЕ &НеИспользоватьСтатусыЗаказов ТОГДА
| ЛОЖЬ
| КОГДА Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован) ТОГДА
| ЛОЖЬ
| КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И (Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован) ИЛИ &НеИспользоватьСтатусыЗаказов)
| И Заказ.СуммаАвансаДоПодтверждения > 0
| И ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеПриход, 0) < Заказ.СуммаАвансаДоПодтверждения
| И РасчетыСПоставщикамиОстаткиНаДатуАктуальности.КОплатеОстаток < 0 ТОГДА
| ИСТИНА
| КОГДА Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован)
| И Заказ.СуммаДокумента > 0
| И Заказ.ДатаПервогоПоступления <> ДАТАВРЕМЯ(1,1,1)
| И Заказ.ДатаПервогоПоступления < &ТекущаяДата
| И (ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеПриход, 0) >= Заказ.СуммаАвансаДоПодтверждения
| ИЛИ Заказ.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)) ТОГДА
| ИСТИНА
| КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И (&НеИспользоватьСтатусыЗаказов
| ИЛИ Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению))
| И Заказ.СуммаПредоплатыДоПоступления > 0
| И ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеПриход, 0) < Заказ.СуммаПредоплатыДоПоступления + Заказ.СуммаАвансаДоПодтверждения
| И РасчетыСПоставщикамиОстаткиНаДатуАктуальности.КОплатеОстаток < 0 ТОГДА
| ИСТИНА
| КОГДА Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению)
| И Заказ.ДатаПервогоПоступления <> ДАТАВРЕМЯ(1,1,1)
| И Заказ.ДатаПервогоПоступления < &ТекущаяДата
| И (ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеПриход, 0) >= Заказ.СуммаПредоплатыДоПоступления + Заказ.СуммаАвансаДоПодтверждения
| ИЛИ Заказ.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)) ТОГДА
| ИСТИНА
| КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И (Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению) ИЛИ &НеИспользоватьСтатусыЗаказов)
| И ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеПриход, 0) >= Заказ.СуммаПредоплатыДоПоступления + Заказ.СуммаАвансаДоПодтверждения
| И ЕСТЬNULL(РасчетыСПоставщикамиОстаткиНаДатуАктуальности.КПоступлениюОстаток, 0) > 0 ТОГДА
| ИСТИНА
| КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И (Заказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению) ИЛИ &НеИспользоватьСтатусыЗаказов)
| И Заказ.СуммаДокумента - Заказ.СуммаАвансаДоПодтверждения - Заказ.СуммаПредоплатыДоПоступления > 0
| И ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеКонечныйОстаток, 0) < 0
| И РасчетыСПоставщикамиОстаткиНаДатуАктуальности.КОплатеОстаток < 0 ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК СостояниеПросрочено,
| ВЫБОР КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И Заказ.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию)
| И Заказ.Проведен
| И Заказ.СуммаДокумента > 0 ТОГДА
| ВЫРАЗИТЬ (ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеПриход, 0) КАК ЧИСЛО(31,2))
| ИНАЧЕ
| 0
| КОНЕЦ КАК СуммаОплаты,
| ВЫБОР КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И Заказ.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию)
| И Заказ.Проведен
| И Заказ.СуммаДокумента > 0 ТОГДА
| ВЫРАЗИТЬ (ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеПриход, 0) * 100 / Заказ.СуммаДокумента КАК ЧИСЛО(15, 0))
| ИНАЧЕ
| 0
| КОНЕЦ КАК ПроцентОплаты,
| ВЫБОР КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И Заказ.Проведен
| И Заказ.СуммаДокумента > 0
| И ЕСТЬNULL(РасчетыСПоставщикамиОстаткиНаДатуАктуальности.КОплатеОстаток, 0) < 0 ТОГДА
| ВЫРАЗИТЬ (-ЕСТЬNULL(РасчетыСПоставщикамиОстаткиНаДатуАктуальности.КОплатеОстаток, 0) КАК ЧИСЛО(31,2))
| ИНАЧЕ
| 0
| КОНЕЦ КАК СуммаПросроченнойОплаты,
| ВЫБОР КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И Заказ.Проведен
| И Заказ.СуммаДокумента > 0 ТОГДА
| ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КПоступлениюРасход, 0)
| ИНАЧЕ
| 0
| КОНЕЦ КАК СуммаПоступления,
| ВЫБОР КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И Заказ.Проведен
| И Заказ.СуммаДокумента > 0 ТОГДА
| ВЫРАЗИТЬ(ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КПоступлениюРасход, 0) * 100 / Заказ.СуммаДокумента КАК ЧИСЛО(15, 0))
| ИНАЧЕ
| 0
| КОНЕЦ КАК ПроцентПоступления,
| ВЫБОР КОГДА Заказ.Проведен
| И (Заказ.СуммаДокумента > 0
| ИЛИ Заказ.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)) ТОГДА
| ВЫРАЗИТЬ (ЕСТЬNULL(РасчетыСПоставщикамиОстатки.СуммаКонечныйОстаток, 0) КАК ЧИСЛО(31,2))
| ИНАЧЕ
| 0
| КОНЕЦ КАК СуммаДолга,
| ВЫБОР КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)
| И Заказ.Проведен
| И Заказ.СуммаДокумента > 0 ТОГДА
| ВЫРАЗИТЬ( ( ВЫБОР КОГДА ЕСТЬNULL(РасчетыСПоставщикамиОстатки.СуммаКонечныйОстаток, 0) > 0 ТОГДА
| ЕСТЬNULL(РасчетыСПоставщикамиОстатки.СуммаКонечныйОстаток, 0)
| ИНАЧЕ
| ЕСТЬNULL(-РасчетыСПоставщикамиОстатки.СуммаКонечныйОстаток, 0)
| КОНЕЦ * 100 / Заказ.СуммаДокумента ) КАК ЧИСЛО(15, 0))
| ИНАЧЕ
| 0
| КОНЕЦ КАК ПроцентДолга,
|ВЫБОР
| КОГДА
| Заказ.Проведен И
| Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов)
| ТОГДА
| -РасчетыСПоставщикамиОстатки.КОплатеКонечныйОстаток
| ИНАЧЕ
| 0
|КОНЕЦ КАК СуммаКОплате,
|Заказ.Ссылка КАК Заказ
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК Заказ
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.РасчетыСПоставщиками.ОстаткиИОбороты(,,,,&ОтборОбъектРасчетов) КАК РасчетыСПоставщикамиОстатки
| ПО
| ИСТИНА
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.РасчетыСПоставщиками.Остатки(КОНЕЦПЕРИОДА(&ТекущаяДата, ДЕНЬ), &ОтборОбъектРасчетов) КАК РасчетыСПоставщикамиОстаткиНаДатуАктуальности
| ПО
| ИСТИНА
|ГДЕ
| Заказ.Ссылка В(&МассивЗаказов)
|";
ТекстЗапроса = СтрЗаменить(
ТекстЗапроса,
"&НеИспользоватьСтатусыЗаказов",
?(ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПереработчикам2_5"), "ЛОЖЬ", "ИСТИНА"));
ТекстЗапроса = СтрЗаменить(
ТекстЗапроса,
"&ОтборОбъектРасчетов",
"ОбъектРасчетов В (ВЫБРАТЬ ОбъектРасчетов ИЗ ОбъектыРасчетов)");
Возврат ТекстЗапроса
КонецФункции
Функция СтруктураСостояниеВыполненияДокумента() Экспорт
СтруктураСостояние = Отчеты.СостояниеВыполненияДокументов.ИнициализироватьСтруктуруСостояниеВыполненияДокумента();
СтруктураСостояние.Вставить("ВыводитьТаблицуРасчетыСПоставщиками", 1);
СтруктураСостояние.Вставить("ВыводитьТаблицыОбеспечение", 2);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтгрузка", 3);
СтруктураСостояние.Вставить("ВыводитьТаблицыПоступление", 4);
СтруктураСостояние.Вставить("ВыводитьТаблицуПродукцияКОформлениюВОтчетеПереработчику", 5);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтмененоОтгрузка", 6);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтмененоПоступление", 7);
СтруктураСостояние.Вставить("ВыводитьТаблицуСырьеУПереработчика", 8);
СтруктураСостояние.Вставить("ЭтоЗаказ", Истина);
СтруктураСостояние.Вставить("ЕстьПричиныОтменыПоступления", ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовПоставщикам"));
СтруктураСостояние.Вставить("ИмяТЧТоварыОтгрузка", "ОбеспечениеМатериаламиИРаботами");
СтруктураСостояние.Вставить("ИмяТЧТоварыПоступление", "ВыходныеИзделия");
СтруктураСостояние.Вставить("ЕстьСуммовыеПоказателиОтгрузки", Ложь);
СтруктураСостояние.Вставить("ТекстТоварУслугаОтгрузка", НСтр("ru = 'Материалы и работы'"));
СтруктураСостояние.Вставить("ТекстТоварУслугаПоступление", НСтр("ru = 'Продукция и возвратные отходы'"));
СтруктураСостояние.Вставить("ТекстОтмененоОтгрузка", НСтр("ru = 'Отменена отгрузка сырья и материалов (%1%)'"));
СтруктураСостояние.Вставить("ТекстОтмененоПоступление", НСтр("ru = 'Отменен выпуск (%1%)'"));
СтруктураСостояние.Вставить("СуффиксМакетаТаблицыПродукцияКОформлениюВОтчетеПереработчику", "2_5");
СтруктураСостояние.Вставить("СуффиксМакетаТаблицыСырьеУПереработчика", "2_5");
СтруктураДопЗапросов = Новый Структура;
СтруктураДопЗапросов.Вставить("ТекстЗапросаВТТоварыРаспоряженияПоступлениеЗаказ", ТекстЗапросаВТТоварыРаспоряженияПоступлениеЗаказ());
СтруктураДопЗапросов.Вставить("ТекстЗапросаТаблицаОтмененоПоступление", ТекстЗапросаТаблицаОтмененоПоступление());
СтруктураДопЗапросов.Вставить("ТекстЗапросаТаблицаПродукцияКОформлениюВОтчетеПереработчику", ТекстЗапросаТаблицаПродукцияКОформлениюВОтчетеПереработчику());
СтруктураДопЗапросов.Вставить("ТаблицаСырьеУПереработчика", ТаблицаСырьеУПереработчика());
СтруктураДопЗапросов.Вставить("ТекстЗапросаТаблицаСостояниеОбеспечения", ТекстЗапросаТаблицаСостояниеОбеспечения());
СтруктураСостояние.Вставить("СтруктураДопЗапросов", СтруктураДопЗапросов);
СтруктураСостояние.Вставить("ДействиеРасшифровкаКоличествоОтгружено", "ПоказатьДокументыПередачиСырьяПереработчику2_5");
СтруктураСостояние.Вставить("ДействиеРасшифровкаКоличествоПоступило", "ПоказатьДокументыПоступленияОтПереработчика2_5");
Возврат СтруктураСостояние;
КонецФункции
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Документы.ПередачаТоваровХранителю.ДобавитьКомандуСоздатьНаОснованииЗаказаПереработчику(КомандыСозданияНаОсновании);
Команда = Документы.ПоступлениеТоваровОтХранителя.ДобавитьКомандуСоздатьНаОснованииПоступлениеОтПереработчика(КомандыСозданияНаОсновании);
Если Не Команда = Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"ОставитьИзделияУПереработчика",
Ложь);
КонецЕсли;
Документы.ОтчетПереработчика2_5.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ПоступлениеТоваровОтХранителя.ДобавитьКомандуСоздатьНаОснованииВозвратОтПереработчика(КомандыСозданияНаОсновании);
Документы.ДоверенностьВыданная.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЗаказПоставщику.ДобавитьКомандуСоздатьОбеспечивающийЗаказ(КомандыСозданияНаОсновании);
Команда = Документы.КорректировкаНазначенияТоваров.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если Не Команда = Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"ГруппировкаЗатрат",
Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства,
ВидСравненияКомпоновкиДанных.НеРавно);
КонецЕсли;
Команда = Документы.ЗаявкаНаРасходованиеДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если Не Команда = Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"УслугиПоПереработке",
Перечисления.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете);
КонецЕсли;
Команда = Документы.РасходныйКассовыйОрдер.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если Не Команда = Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"УслугиПоПереработке",
Перечисления.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете);
КонецЕсли;
Команда = Документы.СписаниеБезналичныхДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если Не Команда = Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"УслугиПоПереработке",
Перечисления.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете);
КонецЕсли;
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании);
Документы.ПоручениеЭкспедитору.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Справочники.Претензии.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Команда = Документы.ПриобретениеУслугПрочихАктивов.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если Не Команда = Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"УслугиПоПереработке",
Перечисления.ВариантыОформленияУслугДокументовПереработки.ОформляютсяОтдельно);
КонецЕсли;
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаказПереработчику2_5) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ЗаказПереработчику2_5.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ЗаказПереработчику2_5);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьЗаказыПереработчикам2_5";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьОбеспечивающийЗаказ(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаказПереработчику2_5) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ЗаказПереработчику2_5.ПолноеИмя();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.СоздатьОбеспечивающийЗаказ";
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ЗаказПереработчику2_5);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьЗаказыПереработчикам2_5";
ПараметрыСоздания = ОбеспечениеВДокументахСервер.ПараметрыСозданияОбеспечивающегоЗаказа(КомандаСоздатьНаОсновании.ДополнительныеПараметры);
ПараметрыСоздания.ИмяМенеджераДокумента = "ЗаказПереработчику2_5";
ПараметрыСоздания.ИмяФормы = "Документ.ЗаказПереработчику2_5.ФормаОбъекта";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ПараметрыСозданияНаОснованииОбеспечивающегоЗаказа() Экспорт
ПараметрыТаблицыТовары = ОбеспечениеВДокументахСервер.ПараметрыОтбораТоваровДляСозданияОбеспечивающиегоЗаказа();
ПараметрыТаблицыТовары.ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Товар);
ПараметрыТаблицыТовары.ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ПараметрыТаблицыТовары.ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Работа);
ПараметрыТаблицыТовары.ОдинСклад = Истина;
Возврат ПараметрыТаблицыТовары;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КомандаОтчет = ВзаиморасчетыСервер.КарточкаРасчетовСПоставщиком_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента,ФормаСписка";
КонецЕсли;
Отчеты.КонтрольПередачиСырьяИМатериаловПереработчику2_5.ДобавитьКомандуОтчета(КомандыОтчетов);
Отчеты.КонтрольПоставкиПродукцииПереработчиком2_5.ДобавитьКомандуОтчета(КомандыОтчетов);
КомандаОтчет = ВзаиморасчетыСервер.ЗадолженностьПоставщикам_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента,ФормаСписка";
КонецЕсли;
КомандаОтчет = Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияЗаказПереработчику(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 1;
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.ЗадолженностьПоставщикам_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "РабочееМесто";
КомандаОтчет.Важность = "Обычное";
КомандаОтчет.Порядок = 1;
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.КарточкаРасчетовСПоставщиком_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "РабочееМесто";
КомандаОтчет.Важность = "Обычное";
КомандаОтчет.Порядок = 2;
КонецЕсли;
КонецПроцедуры
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Функция МакетФормыВыбораНазначений() Экспорт
#Область БезРаспоряжений
МакетФормы = Справочники.Назначения.МакетФормыВыбораНазначений();
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы, "Объект.ОбеспечениеМатериаламиИРаботами.Назначение");
ШаблонНазначения.УсловиеИспользования = "Объект.ГруппировкаЗатрат <> ЗНАЧЕНИЕ(Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства)";
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
#Область ВыходныеИзделия
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы, "Объект.ВыходныеИзделия.Назначение");
ШаблонНазначения.УсловиеИспользования = "Объект.ГруппировкаЗатрат <> ЗНАЧЕНИЕ(Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства)";
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.ВыходныеИзделия.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "Объект.ВыходныеИзделия.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
|";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.ВыходныеИзделия.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.ВыходныеИзделия.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.ВыходныеИзделия.Получатель";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказовРаботами", Истина, "Объект.ВыходныеИзделия.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "Объект.ВыходныеИзделия.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
|";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.ВыходныеИзделия.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.ВыходныеИзделия.Характеристика";
ОписаниеКолонок.ПутиКДанным.Подразделение = "Объект.ВыходныеИзделия.Получатель";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказовВсеСклады", Истина, "Объект.ВыходныеИзделия.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "Объект.ВыходныеИзделия.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
|";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.ВыходныеИзделия.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.ВыходныеИзделия.Характеристика";
#КонецОбласти
#Область ПобочныеИзделия
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы, "Объект.ПобочныеИзделия.Назначение");
ШаблонНазначения.УсловиеИспользования = "Объект.ГруппировкаЗатрат <> ЗНАЧЕНИЕ(Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства)";
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.ПобочныеИзделия.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "Объект.ПобочныеИзделия.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
|";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.ПобочныеИзделия.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.ПобочныеИзделия.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.ПобочныеИзделия.Получатель";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказовРаботами", Истина, "Объект.ПобочныеИзделия.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "Объект.ПобочныеИзделия.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
|";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.ПобочныеИзделия.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.ПобочныеИзделия.Характеристика";
ОписаниеКолонок.ПутиКДанным.Подразделение = "Объект.ПобочныеИзделия.Получатель";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказовВсеСклады", Истина, "Объект.ПобочныеИзделия.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "Объект.ПобочныеИзделия.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
|";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.ПобочныеИзделия.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.ПобочныеИзделия.Характеристика";
#КонецОбласти
#КонецОбласти
Возврат МакетФормы;
КонецФункции
Функция ПараметрыВыбораСпецификаций(Объект) Экспорт
Параметры = Новый Структура;
#Область ВыходныеИзделия
ПараметрыВыбораСпецификаций = УправлениеДаннымиОбИзделияхКлиентСервер.ПараметрыВыбораСпецификаций();
ПараметрыВыбораСпецификаций.ДоступныеТипы.Добавить(Перечисления.ТипыПроизводственныхПроцессов.Сборка);
ПараметрыВыбораСпецификаций.ДоступныеСтатусы.Добавить(Перечисления.СтатусыСпецификаций.Действует);
СвязиПараметровВыбора = Новый Структура(УправлениеДаннымиОбИзделияхКлиентСервер.ПоляСтруктурыДанныхОбИзделииДляВыбораСпецификации());
СвязиПараметровВыбора.Номенклатура = "Объект.ВыходныеИзделия.Номенклатура";
СвязиПараметровВыбора.Характеристика = "Объект.ВыходныеИзделия.Характеристика";
СвязиПараметровВыбора.НачалоПроизводства = "Объект.Дата";
СвязиПараметровВыбора.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ПараметрыВыбораСпецификаций.СвязиПараметровВыбора.Вставить("Объект.ВыходныеИзделия.Спецификация", СвязиПараметровВыбора);
ПараметрыВыбораСпецификаций.Вставить("ИгнорируемыеПараметрыНазначения",
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Перечисления.ВидыПараметровНазначенияСпецификаций.ПодразделениеДиспетчер));
Параметры.Вставить("ВыходныеИзделия", ПараметрыВыбораСпецификаций);
#КонецОбласти
#Область ОбеспечениеМатериаламиИРаботами
ПараметрыВыбораСпецификаций = УправлениеДаннымиОбИзделияхКлиентСервер.ПараметрыВыбораСпецификаций();
ПараметрыВыбораСпецификаций.ДоступныеТипы.Добавить(Перечисления.ТипыПроизводственныхПроцессов.Сборка);
ПараметрыВыбораСпецификаций.ДоступныеТипы.Добавить(Перечисления.ТипыПроизводственныхПроцессов.Ремонт);
ПараметрыВыбораСпецификаций.ДоступныеСтатусы.Добавить(Перечисления.СтатусыСпецификаций.Действует);
СвязиПараметровВыбора = Новый Структура(УправлениеДаннымиОбИзделияхКлиентСервер.ПоляСтруктурыДанныхОбИзделииДляВыбораСпецификации());
СвязиПараметровВыбора.Номенклатура = "Объект.ОбеспечениеМатериаламиИРаботами.Номенклатура";
СвязиПараметровВыбора.Характеристика = "Объект.ОбеспечениеМатериаламиИРаботами.Характеристика";
СвязиПараметровВыбора.НачалоПроизводства = "Объект.Дата";
СвязиПараметровВыбора.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ПараметрыВыбораСпецификаций.СвязиПараметровВыбора.Вставить("Объект.ОбеспечениеМатериаламиИРаботами.Спецификация", СвязиПараметровВыбора);
ПараметрыВыбораСпецификаций.Вставить("ИгнорируемыеПараметрыНазначения",
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Перечисления.ВидыПараметровНазначенияСпецификаций.ПодразделениеДиспетчер));
Параметры.Вставить("ОбеспечениеМатериаламиИРаботами", ПараметрыВыбораСпецификаций);
#КонецОбласти
Возврат Параметры;
КонецФункции
Функция ИменаРеквизитовДляЗаполненияПараметровВыбораСпецификаций() Экспорт
ИменаРеквизитов = "";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыРаспределенияЗатрат(Объект) Экспорт
ПараметрыРаспределенияЗатрат = ПроизводствоКлиентСервер.ПараметрыРаспределенияЗатратНаВыходныеИзделия(
"ВыходныеИзделия",
Объект.СпособРаспределенияЗатратНаВыходныеИзделия);
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям Тогда
ПараметрыРаспределенияЗатрат.ЕстьПолеОтменено = Истина;
ПараметрыРаспределенияЗатрат.РассчитыватьПолеДоляСтоимостиПроцент = Истина;
ПараметрыРаспределенияЗатрат.РассчитыватьПризнакЕстьОшибкиЗаполнения = Истина;
ПараметрыРаспределенияЗатрат.РассчитыватьПризнакДоляСтоимостиОбязательна = Истина;
ПараметрыРаспределенияЗатрат.ПараметрыЗаполненияДолейСтоимости.Дата =
?(ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Объект, "Дата"),
Объект.Дата,
Дата("00010101"));
ПараметрыРаспределенияЗатрат.ПараметрыЗаполненияДолейСтоимости.Валюта =
?(ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Объект, "Валюта"),
Объект.Валюта,
Справочники.Валюты.ПустаяСсылка());
ПараметрыРаспределенияЗатрат.ПолеГруппировкиЗатрат = "НомерГруппыЗатрат";
ПараметрыРаспределенияЗатрат.ПолеПредставленияГруппировкиЗатрат = "ГруппаЗатрат";
КонецЕсли;
Возврат ПараметрыРаспределенияЗатрат;
КонецФункции
#КонецОбласти
#Область ВыборСтатейИАналитик
Функция ПараметрыВыбораСтатейИАналитик() Экспорт
ПараметрыВыбораСтатей = Новый Массив;
ПараметрыВыбора = ДоходыИРасходыСервер.ПараметрыВыбораСтатьиИАналитики();
ПараметрыВыбора.ПутьКДанным = "Объект.ВыходныеИзделия";
ПараметрыВыбора.Статья = "СтатьяРасходов";
ПараметрыВыбора.ТипСтатьи = "ТипСтатьи";
ПараметрыВыбора.ВыборСтатьиРасходов = Истина;
ПараметрыВыбора.АналитикаРасходов = "АналитикаРасходов";
ПараметрыВыбора.ВыборСтатьиАктивовПассивов = Истина;
ПараметрыВыбора.АналитикаАктивовПассивов = "АналитикаАктивовПассивов";
ЭлементыФормы = ПараметрыВыбора.ЭлементыФормы;
ЭлементыФормы.Статья.Добавить("ВыходныеИзделияСтатьяРасходов");
ЭлементыФормы.АналитикаРасходов.Добавить("ВыходныеИзделияАналитикаРасходов");
ЭлементыФормы.АналитикаАктивовПассивов.Добавить("ВыходныеИзделияАналитикаАктивовПассивов");
ПараметрыВыбора.УсловияДоступностиСтатьиВСтроках.Вставить("СписатьНаРасходы", Истина);
ПараметрыВыбораСтатей.Добавить(ПараметрыВыбора);
ПараметрыВыбора = ДоходыИРасходыСервер.ПараметрыВыбораСтатьиИАналитики();
ПараметрыВыбора.ПутьКДанным = "Объект.ПобочныеИзделия";
ПараметрыВыбора.Статья = "СтатьяРасходов";
ПараметрыВыбора.ТипСтатьи = "ТипСтатьи";
ПараметрыВыбора.ВыборСтатьиРасходов = Истина;
ПараметрыВыбора.АналитикаРасходов = "АналитикаРасходов";
ПараметрыВыбора.ВыборСтатьиАктивовПассивов = Истина;
ПараметрыВыбора.АналитикаАктивовПассивов = "АналитикаАктивовПассивов";
ЭлементыФормы = ПараметрыВыбора.ЭлементыФормы;
ЭлементыФормы.Статья.Добавить("ПобочныеИзделияСтатьяРасходов");
ЭлементыФормы.АналитикаРасходов.Добавить("ПобочныеИзделияАналитикаРасходов");
ЭлементыФормы.АналитикаАктивовПассивов.Добавить("ПобочныеИзделияАналитикаАктивовПассивов");
ПараметрыВыбора.УсловияДоступностиСтатьиВСтроках.Вставить("СписатьНаРасходы", Истина);
ПараметрыВыбораСтатей.Добавить(ПараметрыВыбора);
Возврат ПараметрыВыбораСтатей;
КонецФункции
#КонецОбласти
#Область УчетНДС
Функция ПараметрыЗаполненияВидаДеятельностиНДС(Объект) Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияВидаДеятельностиНДС();
ПараметрыЗаполнения.Организация = Объект.Организация;
ПараметрыЗаполнения.Дата = Объект.Дата;
ПараметрыЗаполнения.Договор = Объект.Договор;
ПараметрыЗаполнения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
ПараметрыЗаполнения.ВыпускПродукцииИРабот = Истина;
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект) Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСЗакупки();
Если ТипЗнч(Объект) = Тип("ДокументОбъект.ЗаказПереработчику2_5")
Или ТипЗнч(Объект) = Тип("ДанныеФормыСтруктура") Тогда
ДанныеОбъекта = Объект;
ИначеЕсли ТипЗнч(Объект) = Тип("ДокументСсылка.ЗаказПереработчику2_5") Тогда
ДанныеОбъекта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект, "Контрагент,Договор,Дата");
КонецЕсли;
ПараметрыЗаполнения.Контрагент = ДанныеОбъекта.Контрагент;
ПараметрыЗаполнения.Договор = ДанныеОбъекта.Договор;
ПараметрыЗаполнения.Период = ДанныеОбъекта.Дата;
ПараметрыЗаполнения.ПриобретениеРабот = Истина;
ПараметрыЗаполнения.ПриобретениеНаСтатьи = Истина;
ПараметрыЗаполнения.ПоступлениеИзПереработки = Истина;
ПараметрыЗаполнения.ВвозТоваровИзТаможенногоСоюза = (ДанныеОбъекта.ХозяйственнаяОперация =
Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчикаВСтранахЕАЭС2_5);
Возврат ПараметрыЗаполнения;
КонецФункции
#КонецОбласти
#Область Взаиморасчеты
Функция ПараметрыВзаиморасчеты(ДанныеЗаполнения = Неопределено) Экспорт
СтруктураПараметров = ВзаиморасчетыСервер.ПараметрыМеханизма();
СтруктураПараметров.ЭтоЗаказ = Истина;
СтруктураПараметров.ИсточникСуммТабличнаяЧасть = Истина;
СтруктураПараметров.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСПоставщиком;
СтруктураПараметров.КурсЧислитель = "";
СтруктураПараметров.КурсЗнаменатель = "";
СтруктураПараметров.ПутьКДаннымТЧ = "Объект.Услуги";
СтруктураПараметров.ПутьКДаннымТЧЭтапыОплаты = "Объект.ЭтапыГрафикаОплаты";
СтруктураПараметров.Соглашение = "";
СтруктураПараметров.ОтгружатьОднойДатой = "Объект.НеОтгружатьЧастями";
СтруктураПараметров.БанковскийСчетОрганизации = "Объект.БанковскийСчет";
СтруктураПараметров.БанковскийСчетКонтрагента = "";
СтруктураПараметров.Менеджер = "Объект.Менеджер";
СтруктураПараметров.СуммаДокументаФорма = "Форма.Объект.СуммаДокумента";
СтруктураПараметров.ЭлементыФормы.НадписьЭтапы = "ДекорацияЭтапыОплаты";
СтруктураПараметров.ЭлементыФормы.НадписьРасчеты = "ДекорацияСостояниеРасчетов";
СтруктураПараметров.ЭлементыФормы.ЗачетОплаты = "ЗачетОплатыФорма";
СтруктураПараметров.НадписьЭтапыОплаты = "Форма.НадписьЭтапыОплаты";
СтруктураПараметров.ЭлементыФормы.ГруппаФинансовогоУчета = "ГруппаФинансовогоУчета";
СтруктураПараметров.ЭлементыФормы.НаправлениеДеятельности = "НаправлениеДеятельности";
СтруктураПараметров.ДатаСогласования = "Объект.ДатаСогласования";
СтруктураПараметров.ДатаОтгрузки = "Объект.Услуги.ДатаВыполнения";
СтруктураПараметров.ОбъектРасчетов = "Объект.ОбъектРасчетов";
Возврат СтруктураПараметров;
КонецФункции
#КонецОбласти
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Партнер)
| И ЗначениеРазрешено(Подразделение)
| И (ЗначениеРазрешено(ВыходныеИзделия.Получатель)
| ИЛИ ЗначениеРазрешено(ПобочныеИзделия.Получатель)
| ИЛИ ВыходныеИзделия.Получатель ЕСТЬ NULL
| И ПобочныеИзделия.Получатель ЕСТЬ NULL)";
КонецПроцедуры
#КонецОбласти
#Область Округление
Функция ПараметрыТЧДляОкругления() Экспорт
ПараметрыТЧ = Новый Структура;
ИмяТЧ = "ВыходныеИзделия";
ИмяПоляСклад = "Получатель";
ПараметрыТЧ.Вставить(ИмяТЧ, НоменклатураСервер.ПараметрыПроверкиЗаполненияКоличества());
ПараметрыТЧ[ИмяТЧ].ИмяТЧ = ИмяТЧ;
ПараметрыТЧ[ИмяТЧ].ДополнительныеПоля.Вставить(ИмяПоляСклад, ИмяТЧ + "." + ИмяПоляСклад);
ПараметрыТЧ[ИмяТЧ].УсловиеОтбораСтрокПоДополнительнымПолям =
ПроизводствоСервер.УсловиеОтбораСтрокДляОкругления(ИмяТЧ, ИмяПоляСклад);
ИмяТЧ = "ПобочныеИзделия";
ИмяПоляСклад = "Получатель";
ПараметрыТЧ.Вставить(ИмяТЧ, НоменклатураСервер.ПараметрыПроверкиЗаполненияКоличества());
ПараметрыТЧ[ИмяТЧ].ИмяТЧ = ИмяТЧ;
ПараметрыТЧ[ИмяТЧ].ДополнительныеПоля.Вставить(ИмяПоляСклад, ИмяТЧ + "." + ИмяПоляСклад);
ПараметрыТЧ[ИмяТЧ].УсловиеОтбораСтрокПоДополнительнымПолям =
ПроизводствоСервер.УсловиеОтбораСтрокДляОкругления(ИмяТЧ, ИмяПоляСклад);
ИмяТЧ = "ОбеспечениеМатериаламиИРаботами";
ИмяПоляСклад = "Склад";
ПараметрыТЧ.Вставить(ИмяТЧ, НоменклатураСервер.ПараметрыПроверкиЗаполненияКоличества());
ПараметрыТЧ[ИмяТЧ].ИмяТЧ = ИмяТЧ;
ПараметрыТЧ[ИмяТЧ].ДополнительныеПоля.Вставить(ИмяПоляСклад, ИмяТЧ + "." + ИмяПоляСклад);
ПараметрыТЧ[ИмяТЧ].УсловиеОтбораСтрокПоДополнительнымПолям =
ПроизводствоСервер.УсловиеОтбораСтрокДляОкругления(ИмяТЧ, ИмяПоляСклад);
Возврат ПараметрыТЧ;
КонецФункции
#КонецОбласти
#Область Обеспечение
Функция ДоступныеОстаткиПараметрыВстраивания(ДокументОбъект = Неопределено) Экспорт
ПараметрыВстраивания = ОбеспечениеВДокументахСервер.ДоступныеОстаткиПараметрыВстраивания();
ПараметрыВстраивания.ОчищаемыеРеквизиты = "КодСтроки";
ПараметрыВстраивания.ИмяТаблицыФормы = "ОбеспечениеМатериаламиИРаботами";
ЭлементыФормы = ПараметрыВстраивания.УсловноеОформление.ЭлементыФормы;
ЭлементыФормы.ВариантОбеспечения = "ОбеспечениеМатериаламиИРаботамиВариантОбеспечения";
ЭлементыФормы.Доступно = "ОбеспечениеМатериаламиИРаботамиДоступно";
ЭлементыФормы.Серия = "ОбеспечениеМатериаламиИРаботамиСерия";
ЭлементыФормы.Обособленно = "ОбеспечениеМатериаламиИРаботамиОбособленно";
ЭлементыФормы.Склад = "ОбеспечениеМатериаламиИРаботамиСклад";
ПутиКДанным = ПараметрыВстраивания.УсловноеОформление.ПутиКДанным;
ПутиКДанным.ПерераспределятьЗапасы = "Объект.ОбеспечениеМатериаламиИРаботами.ПерераспределятьЗапасы";
ПутиКДанным.ЗапретРедактирования = "Объект.ОбеспечениеМатериаламиИРаботами.Отменено";
Связи = ПараметрыВстраивания.СвязиПараметровВыбораВариантаОбеспечения;
Связи.Доступно = "Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные.Доступно";
Связи.КоличествоУпаковок = "Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные.КоличествоУпаковок";
Связи.Количество = "Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные.Количество";
Связи.ОтгружатьЕслиДоступно = "Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные.ОтгружатьЕслиДоступно";
Связи.Обособленно = "Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные.Обособленно";
Связи.ТипНоменклатуры = "Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные.ТипНоменклатуры";
Связи.Упаковка = "Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные.Упаковка";
Связи.Номенклатура = "Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные.Номенклатура";
Связи.ВариантОбеспечения = "Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные.ВариантОбеспечения";
Связи.Склад = "Элементы.ОбеспечениеМатериаламиИРаботами.ТекущиеДанные.Склад";
Связи.НесколькоСкладов = "СкладМатериалыВТЧ";
ПараметрыВстраивания.ИмяРегистраОформленияОтгрузки = "РаспоряженияНаОтгрузкуИВозврат";
ПараметрыВстраивания.ИмяОбъекта = "Документ.ЗаказПереработчику2_5";
ПараметрыВстраивания.ИмяТаблицы = "Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами";
ПараметрыВстраивания.ОписаниеПолученияДанныхДокумента =
"ВЫБРАТЬ
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| Реквизиты.Подразделение КАК Подразделение,
| ТабЧасть.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| Реквизиты.Ссылка КАК ЗаказНаОтгрузку,
| ТабЧасть.ВариантОбеспечения КАК ВариантОбеспечения,
| ТабЧасть.Обособленно КАК Обособленно,
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.КоличествоУпаковок КАК КоличествоУпаковок,
| ТабЧасть.Упаковка КАК Упаковка,
| Реквизиты.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт)) КАК ГотовКОбеспечению,
| Реквизиты.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт)) КАК ГотовКОтгрузке,
| ВЫБОР
| КОГДА Реквизиты.НеОтгружатьЧастями
| ТОГДА Реквизиты.ДатаОтгрузки
| ИНАЧЕ ТабЧасть.ДатаОтгрузки
| КОНЕЦ КАК ЖелаемаяДатаОтгрузки,
| ТабЧасть.Серия КАК Серия,
| ТабЧасть.КодСтроки КАК КодСтроки,
| ТабЧасть.Отменено КАК Отменено,
| ТабЧасть.НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА Реквизиты.Ссылка
| КОНЕЦ КАК Регистратор,
| Реквизиты.Дата КАК ДатаДокумента,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА Реквизиты.СкладМатериалов
| КОНЕЦ КАК ГруппаСкладов,
| Реквизиты.Приоритет КАК Приоритет,
| ВЫБОР
| КОГДА Реквизиты.НеОтгружатьЧастями
| ТОГДА Реквизиты.ДатаОтгрузки
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ДатаОтгрузкиВсехСтрокОднойДатой
|ПОМЕСТИТЬ ВременнаяТаблицаДанныхДокумента
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ТабЧасть
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику2_5 КАК Реквизиты
| ПО ИСТИНА
|";
ОбеспечениеМатериаламиИРаботами = Новый Структура();
ОбеспечениеМатериаламиИРаботами.Вставить("НомерСтроки", Новый ОписаниеТипов("Число"));
ОбеспечениеМатериаламиИРаботами.Вставить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ОбеспечениеМатериаламиИРаботами.Вставить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
ОбеспечениеМатериаламиИРаботами.Вставить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
ОбеспечениеМатериаламиИРаботами.Вставить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
ОбеспечениеМатериаламиИРаботами.Вставить("ВариантОбеспечения", Новый ОписаниеТипов("ПеречислениеСсылка.ВариантыОбеспечения"));
ОбеспечениеМатериаламиИРаботами.Вставить("Обособленно", Новый ОписаниеТипов("Булево"));
ОбеспечениеМатериаламиИРаботами.Вставить("Производится", Новый ОписаниеТипов("Булево"));
ОбеспечениеМатериаламиИРаботами.Вставить("Количество", Новый ОписаниеТипов("Число"));
ОбеспечениеМатериаламиИРаботами.Вставить("КоличествоУпаковок", Новый ОписаниеТипов("Число"));
ОбеспечениеМатериаламиИРаботами.Вставить("Упаковка", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
ОбеспечениеМатериаламиИРаботами.Вставить("ДатаОтгрузки", Новый ОписаниеТипов("Дата"));
ОбеспечениеМатериаламиИРаботами.Вставить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
ОбеспечениеМатериаламиИРаботами.Вставить("Отменено", Новый ОписаниеТипов("Булево"));
ОбеспечениеМатериаламиИРаботами.Вставить("КодСтроки", Новый ОписаниеТипов("Число"));
ОбеспечениеМатериаламиИРаботами.Вставить("НомерГруппыЗатрат", Новый ОписаниеТипов("Число"));
Объект = Новый Структура();
Объект.Вставить("ГруппировкаЗатрат", Новый ОписаниеТипов("ПеречислениеСсылка.ГруппировкиЗатратВЗаказеПереработчику"));
Объект.Вставить("ПереработкаПоЗаказу", Новый ОписаниеТипов("Булево"));
Объект.Вставить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
Объект.Вставить("СкладМатериалов", Новый ОписаниеТипов("СправочникСсылка.Склады"));
Объект.Вставить("ОбособлениеМатериаловПоНазначениюПродукции", Новый ОписаниеТипов("Булево"));
Объект.Вставить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
Объект.Вставить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.ЗаказПереработчику2_5"));
Объект.Вставить("Статус", Новый ОписаниеТипов("ПеречислениеСсылка.СтатусыЗаказовПереработчикам"));
Объект.Вставить("НеОтгружатьЧастями", Новый ОписаниеТипов("Булево"));
Объект.Вставить("ДатаОтгрузки", Новый ОписаниеТипов("Дата"));
Объект.Вставить("Дата", Новый ОписаниеТипов("Дата"));
Объект.Вставить("Приоритет", Новый ОписаниеТипов("СправочникСсылка.Приоритеты"));
Объект.Вставить("ОбеспечениеМатериаламиИРаботами", ОбеспечениеМатериаламиИРаботами);
ПараметрыВстраивания.ШаблонСериализацииДанныхФормы.Вставить("Объект", Объект);
ПараметрыВстраивания.ПоляСвязиТабличныхЧастей.Вставить("ВыходныеИзделия", Новый Структура("НомерГруппыЗатрат", "НомерГруппыЗатрат"));
ИменаЭлементов = ПараметрыВстраивания.ИменаЭлементов;
ИменаЭлементов.СтраницыГиперссылкаСостояниеОбеспечения = "СтраницыГиперссылкаСостояниеОбеспечения";
ИменаЭлементов.ГиперссылкаСостояниеОбеспечения = "ГиперссылкаСостояниеОбеспечения";
ИменаЭлементов.СтраницаГиперссылкаСостояниеОбеспеченияОтгружается = "СтраницаГиперссылкаСостояниеОбеспеченияОтгружается";
ИменаЭлементов.ГиперссылкаСостояниеОбеспеченияОтгружается = "ГиперссылкаСостояниеОбеспеченияОтгружается";
ИменаЭлементов.СтраницаГиперссылкаСостояниеОбеспеченияПроблема = "СтраницаГиперссылкаСостояниеОбеспеченияПроблема";
ИменаЭлементов.ГиперссылкаСостояниеОбеспеченияПроблема = "ГиперссылкаСостояниеОбеспеченияПроблема";
ИменаЭлементов.СтраницаГиперссылкаСостояниеОбеспеченияСЗаголовком = "СтраницаГиперссылкаСостояниеОбеспеченияСЗаголовком";
ИменаЭлементов.ГиперссылкаСостояниеОбеспеченияСЗаголовком = "ГиперссылкаСостояниеОбеспеченияСЗаголовком";
Возврат ПараметрыВстраивания;
КонецФункции
Функция ДанныеДокументаДляСозданияКорректировкиНазначения(Ссылка, ДополнительныеПараметры) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("ЭтоСнятиеРезерва", ДополнительныеПараметры.ЭтоСнятиеРезерва);
Запрос.Текст =
"ВЫБРАТЬ
| РеквизитыДокумента.Проведен КАК Проведен
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК РеквизитыДокумента
|ГДЕ
| РеквизитыДокумента.Ссылка = &Ссылка
|;
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| МатериалыЗаказа.Назначение КАК Ссылка
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК МатериалыЗаказа
|ГДЕ
| МатериалыЗаказа.Ссылка = &Ссылка
| И МатериалыЗаказа.Ссылка.ГруппировкаЗатрат <> ЗНАЧЕНИЕ(Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства)
| И МатериалыЗаказа.Назначение <> ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| И (&ЭтоСнятиеРезерва ИЛИ НЕ МатериалыЗаказа.Отменено)
|;
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| МатериалыЗаказа.Номенклатура КАК Номенклатура,
| МатериалыЗаказа.Характеристика КАК Характеристика,
| МатериалыЗаказа.Назначение КАК Назначение
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК МатериалыЗаказа
|ГДЕ
| МатериалыЗаказа.Ссылка = &Ссылка
| И МатериалыЗаказа.Ссылка.ГруппировкаЗатрат <> ЗНАЧЕНИЕ(Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства)
| И (&ЭтоСнятиеРезерва ИЛИ НЕ МатериалыЗаказа.Отменено)
|";
ПакетРезультатовЗапоса = Запрос.ВыполнитьПакет();
Выборка = ПакетРезультатовЗапоса[0].Выбрать();
Выборка.Следующий();
Проведен = Выборка.Проведен;
Назначения = ПакетРезультатовЗапоса[1].Выгрузить().ВыгрузитьКолонку("Ссылка");
ПакетРезультатовЗапоса[2].Выгрузить();
Товары = ПакетРезультатовЗапоса[2].Выгрузить();
АдресТоваров = ПоместитьВоВременноеХранилище(Товары, ДополнительныеПараметры.ИдентификаторВХранилище);
ЕстьТоварыКОбособленномуОбеспечению = Документы.КорректировкаНазначенияТоваров.ЕстьТоварыКОбособленномуОбеспечению(
Назначения, АдресТоваров);
ЕстьТоварыКСнятиюРезерва = Документы.КорректировкаНазначенияТоваров.ЕстьТоварыКСнятиюРезерва(
Назначения, АдресТоваров);
ДанныеДокумента = Новый Структура();
ДанныеДокумента.Вставить("Проведен", Проведен);
ДанныеДокумента.Вставить("Назначения", Назначения);
ДанныеДокумента.Вставить("АдресТоваров", АдресТоваров);
ДанныеДокумента.Вставить("ЕстьТоварыКОбособленномуОбеспечению", ЕстьТоварыКОбособленномуОбеспечению);
ДанныеДокумента.Вставить("ЕстьТоварыКСнятиюРезерва", ЕстьТоварыКСнятиюРезерва);
Возврат ДанныеДокумента;
КонецФункции
#КонецОбласти
#Область Назначения
Функция ШаблонНазначения(Объект) Экспорт
ШаблонНазначения = Справочники.Назначения.ШаблонНового();
Если НаправленияДеятельностиСервер.ЭтоНаправлениеДеятельностиСОбособлениемТоваровИРабот(Объект.НаправлениеДеятельности) Тогда
ШаблонНазначения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЕсли;
ВариантОбособления = Константы.ВариантОбособленияВПередачеПереработчику2_5.Получить();
Если ВариантОбособления = Перечисления.ВариантыОбособленияПриПередачеВПереработку.ДоговорСПереработчиком Тогда
ШаблонНазначения.Партнер = Объект.Партнер;
ШаблонНазначения.Договор = Объект.Договор;
ИначеЕсли ВариантОбособления = Перечисления.ВариантыОбособленияПриПередачеВПереработку.ЗаказПереработчику
Или Не ЗначениеЗаполнено(ШаблонНазначения.НаправлениеДеятельности) Тогда
ШаблонНазначения.Заказ = Объект.Ссылка;
КонецЕсли;
Возврат ШаблонНазначения;
КонецФункции
Функция ШаблонНазначенияПередачи(Объект) Экспорт
ШаблонНазначения = Справочники.Назначения.ШаблонНового();
Если НаправленияДеятельностиСервер.ЭтоНаправлениеДеятельностиСОбособлениемТоваровИРабот(Объект.НаправлениеДеятельности) Тогда
ШаблонНазначения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЕсли;
ШаблонНазначения.Заказ = Объект.Ссылка;
Возврат ШаблонНазначения;
КонецФункции
#КонецОбласти
#Область ШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныйПрограммныйИнтерфейс
Функция ВыполнитьДействиеДляЗаказовПослеВопроса(ПараметрыПроцедуры) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Заказы", ПараметрыПроцедуры.Заказы);
Запрос.Текст =
"ВЫБРАТЬ
| Заказы.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК Заказы
|ГДЕ
| Заказы.Ссылка В(&Заказы)
| И Заказы.ГруппировкаЗатрат
| <> ЗНАЧЕНИЕ(Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства)
|";
РезультатЗапроса = Запрос.ВыполнитьПакет();
ПараметрыПроцедуры.ПараметрыВстраивания = Документы.ЗаказПереработчику2_5.ДоступныеОстаткиПараметрыВстраивания();
ПараметрыПроцедуры.Заказы = РезультатЗапроса[0].Выгрузить().ВыгрузитьКолонку("Ссылка");
РезультатВыполненияПолный = ОбеспечениеВДокументахСервер.ВыполнитьДействиеДляЗаказовПослеВопроса(ПараметрыПроцедуры);
Возврат РезультатВыполненияПолный;
КонецФункции
Функция ТекстЗапросаТоварыДокумента(Отбор, Ресурс) Экспорт
Если Ресурс = "ВыходныеИзделия" Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Ссылка КАК ЗаказПоставщику,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.ДатаПоступления КАК ДатаПоступления,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| Таблица.Количество КАК Количество,
| 0 КАК Цена,
| 0 КАК Сумма,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Получатель КАК Склад,
| ЕСТЬNULL(ДанныеУчета.КОформлению, 0) КАК КОформлению
|ИЗ
| Документ.ЗаказПереработчику2_5.ВыходныеИзделия КАК Таблица
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО Таблица.Ссылка = ДанныеУчета.Распоряжение
| И Таблица.КодСтроки = ДанныеУчета.КодСтроки
|
|ГДЕ
| НЕ Таблица.СписатьНаРасходы
| И &ТекстОтбора
|
|";
ИначеЕсли Ресурс = "ПобочныеИзделия" Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Ссылка КАК ЗаказПоставщику,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.ДатаПоступления КАК ДатаПоступления,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| Таблица.Количество КАК Количество,
| 0 КАК Цена,
| 0 КАК Сумма,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Получатель КАК Склад,
| ЕСТЬNULL(ДанныеУчета.КОформлению, 0) КАК КОформлению
|ИЗ
| Документ.ЗаказПереработчику2_5.ПобочныеИзделия КАК Таблица
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО Таблица.Ссылка = ДанныеУчета.Распоряжение
| И Таблица.КодСтроки = ДанныеУчета.КодСтроки
|
|ГДЕ
| НЕ Таблица.СписатьНаРасходы
| И &ТекстОтбора
|";
Иначе
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Ссылка КАК ЗаказПоставщику,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.ДатаОтгрузки КАК ДатаОтгрузки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА Таблица.Обособленно
| ТОГДА Таблица.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| Таблица.Серия КАК Серия,
| Таблица.Количество КАК Количество,
| 0 КАК Цена,
| 0 КАК Сумма,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Склад КАК Склад,
| ЕСТЬNULL(ДанныеУчета.КОформлению, 0) КАК КОформлению
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК Таблица
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО Таблица.Ссылка = ДанныеУчета.Распоряжение
| И Таблица.КодСтроки = ДанныеУчета.КодСтроки
|
|ГДЕ
| &ТекстОтбора
|";
КонецЕсли;
ТекстОтбора = ОбщегоНазначенияУТ.ТекстОтбораПоКоллекцииОтборов(Отбор);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстОтбора", ТекстОтбора);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВыходныеИзделияДокумента(Отбор = Неопределено) Экспорт
ТекстыЗапроса = Новый Массив;
ТекстЗапроса =
"ВЫБРАТЬ
| ИзделияЗаказа.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ИзделияЗаказа.КодСтроки КАК КодСтроки,
| ИСТИНА КАК ЭтоВыпускающийЭтап,
| ИзделияЗаказа.Номенклатура КАК Номенклатура,
| ИзделияЗаказа.Характеристика КАК Характеристика,
| ИзделияЗаказа.Назначение КАК Назначение,
| ИзделияЗаказа.Получатель КАК Получатель,
| ИзделияЗаказа.СписатьНаРасходы КАК СписатьНаРасходы,
| ИзделияЗаказа.СтатьяРасходов КАК СтатьяРасходов,
| ИзделияЗаказа.АналитикаРасходов КАК АналитикаРасходов,
| ИзделияЗаказа.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| НЕОПРЕДЕЛЕНО КАК НастройкаСчетовУчета,
| ИзделияЗаказа.Упаковка КАК Упаковка,
| ИзделияЗаказа.Спецификация КАК Спецификация,
| ИзделияЗаказа.ДоляСтоимости КАК ДоляСтоимости,
| ИзделияЗаказа.ДоляСтоимостиНаЕдиницу КАК ДоляСтоимостиНаЕдиницу,
| ИзделияЗаказа.Количество КАК Количество
|ПОМЕСТИТЬ ВыходныеИзделия
|ИЗ
| Документ.ЗаказПереработчику2_5.ВыходныеИзделия КАК ИзделияЗаказа
|
|ГДЕ
| ИзделияЗаказа.Ссылка = &ЗаказПереработчику
| И НЕ ИзделияЗаказа.Отменено
| И &ТекстОтбора
|";
ТекстыЗапроса.Добавить(ТекстЗапроса);
ТекстЗапроса = СтрСоединить(ТекстыЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ПараметрыПрименения = ПроизводствоСервер.ПараметрыПримененияШтучногоТовараВМернойЕдинице();
ПараметрыПрименения.ШтучныйТоварВМерныхЕдиницах = Ложь;
ПроизводствоСервер.ПрименитьНастройкиШтучногоТовараВМернойЕдинице(ТекстЗапроса, "ИзделияЗаказа", ПараметрыПрименения);
ТекстЗапроса = ТекстЗапроса + Символы.ПС +
"ИНДЕКСИРОВАТЬ ПО
| КодСтроки
|";
ТекстОтбора = ОбщегоНазначенияУТ.ТекстОтбораПоКоллекцииОтборов(Отбор);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстОтбора", ТекстОтбора);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаПобочныеИзделияДокумента(Отбор = Неопределено) Экспорт
ТекстыЗапроса = Новый Массив;
ТекстЗапроса =
"ВЫБРАТЬ
| ИзделияЗаказа.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ИзделияЗаказа.КодСтроки КАК КодСтроки,
| ИСТИНА КАК ЭтоВыпускающийЭтап,
| ИзделияЗаказа.Номенклатура КАК Номенклатура,
| ИзделияЗаказа.Характеристика КАК Характеристика,
| ИзделияЗаказа.Назначение КАК Назначение,
| ИзделияЗаказа.Получатель КАК Получатель,
| ИзделияЗаказа.СписатьНаРасходы КАК СписатьНаРасходы,
| ИзделияЗаказа.СтатьяРасходов КАК СтатьяРасходов,
| ИзделияЗаказа.АналитикаРасходов КАК АналитикаРасходов,
| ИзделияЗаказа.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| НЕОПРЕДЕЛЕНО КАК НастройкаСчетовУчета,
| ИзделияЗаказа.Упаковка КАК Упаковка,
| ИзделияЗаказа.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ИзделияЗаказа.Цена КАК Цена,
| ИзделияЗаказа.Количество КАК Количество
|ПОМЕСТИТЬ ПобочныеИзделия
|ИЗ
| Документ.ЗаказПереработчику2_5.ПобочныеИзделия КАК ИзделияЗаказа
|
|
|
|ГДЕ
| ИзделияЗаказа.Ссылка = &ЗаказПереработчику
| И НЕ ИзделияЗаказа.Отменено
| И &ТекстОтбора
|";
ТекстыЗапроса.Добавить(ТекстЗапроса);
ТекстЗапроса = СтрСоединить(ТекстыЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ПараметрыПрименения = ПроизводствоСервер.ПараметрыПримененияШтучногоТовараВМернойЕдинице();
ПараметрыПрименения.ШтучныйТоварВМерныхЕдиницах = Ложь;
ПроизводствоСервер.ПрименитьНастройкиШтучногоТовараВМернойЕдинице(ТекстЗапроса, "ИзделияЗаказа", ПараметрыПрименения);
ТекстЗапроса = ТекстЗапроса + "
|ИНДЕКСИРОВАТЬ ПО
| КодСтроки
|";
ТекстОтбора = ОбщегоНазначенияУТ.ТекстОтбораПоКоллекцииОтборов(Отбор);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстОтбора", ТекстОтбора);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОбеспечениеМатериаламиИРаботамиДокумента(Отбор = Неопределено) Экспорт
ТекстыЗапроса = Новый Массив;
ТекстЗапроса =
"ВЫБРАТЬ
| ОбеспечениеМатериаламиИРаботами.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ОбеспечениеМатериаламиИРаботами.Номенклатура КАК Номенклатура,
| ОбеспечениеМатериаламиИРаботами.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ОбеспечениеМатериаламиИРаботами.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОГДА НЕ ОбеспечениеМатериаламиИРаботами.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.ПереданРанее)
| И НЕ ОбеспечениеМатериаламиИРаботами.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ОбеспечениеМатериаламиИРаботами.Назначение.ТипНазначения = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.Давальческое2_5)
| ТОГДА ОбеспечениеМатериаламиИРаботами.Назначение
| КОГДА ОбеспечениеМатериаламиИРаботами.Ссылка.ПередачаПереработчикуПоНазначениюЗаказа
| И НЕ ОбеспечениеМатериаламиИРаботами.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.ПереданРанее)
| И НЕ ОбеспечениеМатериаламиИРаботами.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ОбеспечениеМатериаламиИРаботами.Ссылка.НазначениеПередачи
| КОГДА ОбеспечениеМатериаламиИРаботами.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ИЛИ ОбеспечениеМатериаламиИРаботами.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.ПереданРанее)
| И ОбеспечениеМатериаламиИРаботами.Обособленно
| ТОГДА ОбеспечениеМатериаламиИРаботами.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ОбеспечениеМатериаламиИРаботами.Серия КАК Серия,
| ОбеспечениеМатериаламиИРаботами.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ОбеспечениеМатериаламиИРаботами.Упаковка КАК Упаковка,
| ОбеспечениеМатериаламиИРаботами.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ОбеспечениеМатериаламиИРаботами.ВариантОбеспечения КАК ВариантОбеспечения,
| ОбеспечениеМатериаламиИРаботами.Количество КАК Количество
|ПОМЕСТИТЬ МатериалыИРаботы
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ОбеспечениеМатериаламиИРаботами
|
|
|
|ГДЕ
| ОбеспечениеМатериаламиИРаботами.Ссылка = &ЗаказПереработчику
| И НЕ ОбеспечениеМатериаламиИРаботами.Отменено
| И &ТекстОтбора
|";
ТекстыЗапроса.Добавить(ТекстЗапроса);
ТекстЗапроса = СтрСоединить(ТекстыЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ПараметрыПрименения = ПроизводствоСервер.ПараметрыПримененияШтучногоТовараВМернойЕдинице();
ПараметрыПрименения.ШтучныйТоварВМерныхЕдиницах = Ложь;
ПроизводствоСервер.ПрименитьНастройкиШтучногоТовараВМернойЕдинице(ТекстЗапроса, "ОбеспечениеМатериаламиИРаботами", ПараметрыПрименения);
ТекстОтбора = ОбщегоНазначенияУТ.ТекстОтбораПоКоллекцииОтборов(Отбор);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстОтбора", ТекстОтбора);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаУслугиДокумента(Отбор = Неопределено) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Услуги.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| Услуги.КодСтроки КАК КодСтроки,
| Услуги.Номенклатура КАК Номенклатура,
| Услуги.Характеристика КАК Характеристика,
| Услуги.Количество КАК Количество,
| Услуги.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| Услуги.СтавкаНДС КАК СтавкаНДС,
| Услуги.Цена КАК Цена,
| Услуги.СтатьяКалькуляции КАК СтатьяКалькуляции
|ПОМЕСТИТЬ УслугиЗаказа
|ИЗ
| Документ.ЗаказПереработчику2_5.Услуги КАК Услуги
|
|
|ГДЕ
| Услуги.Ссылка = &ЗаказПереработчику
| И НЕ Услуги.Отменено
| И &ТекстОтбора
|
|ИНДЕКСИРОВАТЬ ПО
| КодСтроки
|";
ТекстОтбора = ОбщегоНазначенияУТ.ТекстОтбораПоКоллекцииОтборов(Отбор);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстОтбора", ТекстОтбора);
Возврат ТекстЗапроса;
КонецФункции
#Область ГруппыЗатрат
Функция ТекстЗапросаГруппыЗатратДокумента(Ссылка = Неопределено, ИмяВТ = Неопределено) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТабличнаяЧасть.НомерГруппыЗатрат КАК НомерГруппыЗатрат
|ПОМЕСТИТЬ НомераГруппЗатрат
|ИЗ
| (ВЫБРАТЬ
| ТабличнаяЧасть.НомерГруппыЗатрат КАК НомерГруппыЗатрат
| ИЗ
| ВыходныеИзделия КАК ТабличнаяЧасть
| ГДЕ
| &ОтборПоСсылке
| И НЕ ТабличнаяЧасть.НомерГруппыЗатрат = 0
| ) КАК ТабличнаяЧасть
|
|ИНДЕКСИРОВАТЬ ПО
| НомерГруппыЗатрат
|";
ОтборПоСсылке = "ИСТИНА";
Если Не Ссылка = Неопределено Тогда
ОтборПоСсылке = "ТабличнаяЧасть.Ссылка = &ЗаказПереработчику";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВыходныеИзделия", "Документ.ЗаказПереработчику2_5.ВыходныеИзделия");
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ОтборПоСсылке", ОтборПоСсылке);
Если ЗначениеЗаполнено(ИмяВТ) Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ПОМЕСТИТЬ НомераГруппЗатрат", "ПОМЕСТИТЬ " + ИмяВТ);
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область Обеспечение
Функция ПараметрыВыполненияКомандУстановкиДействий(ВсеЗаказы, КодДействия) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Заказы", ВсеЗаказы);
Запрос.УстановитьПараметр("ЭтоПереданРанее", КодДействия = "ДЕЙСТВИЕ_ПЕРЕДАНРАНЕЕ");
Запрос.УстановитьПараметр("ЭтоРезервироватьПоМереПоступления",
КодДействия = "ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬПОМЕРЕПОСТУПЛЕНИЯ");
Запрос.Текст =
"ВЫБРАТЬ
| Заказы.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК Заказы
|ГДЕ
| Заказы.Ссылка В(&Заказы)
|";
РезультатЗапроса = Запрос.ВыполнитьПакет();
Результаты = Новый Массив();
Результат = ОбеспечениеВДокументахСервер.СтруктураЗаказыИПараметрыВстраивания();
Результат.Заказы = РезультатЗапроса[0].Выгрузить().ВыгрузитьКолонку("Ссылка");
Результат.ПараметрыВстраивания = ДоступныеОстаткиПараметрыВстраивания();
Результаты.Добавить(Результат);
ТекстыЗапроса = Новый Массив();
Если КодДействия = "ДЕЙСТВИЕ_ОТГРУЗИТЬ" Тогда
Для Каждого ТекущиеПараметры Из Результаты Цикл
Заказы = ТекущиеПараметры.Заказы;
ПараметрыВстраивания = ТекущиеПараметры.ПараметрыВстраивания;
Если Заказы.Количество() > 0 Тогда
Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА КАК НуженВопрос
|ИЗ
| РегистрНакопления.ЗапасыИПотребности.Остатки(,
| Заказ В(
| ВЫБРАТЬ
| &ИмяПоляЗаказ КАК Заказ
| ИЗ
| &ТаблицаПереопределяемый КАК Таблица
| ГДЕ
| Таблица.Ссылка В(&Заказы)
| И Таблица.Проведен
| И &УсловиеПереопределяемый <> НЕОПРЕДЕЛЕНО
| И &УсловиеПереопределяемый < &ДатаОтгрузкиНовыхСтрок)) КАК Потребности
|ГДЕ
| Потребности.РезервироватьНаСкладеОстаток > 0
| ИЛИ Потребности.РезервироватьПоМереПоступленияОстаток > 0
| ИЛИ Потребности.ОтложитьРезервированиеОстаток > 0
| ИЛИ Потребности.КОбеспечениюОстаток > 0
| ИЛИ Потребности.НеОбеспечиватьОстаток > 0";
ИмяПоляЗаказ = "Таблица.Ссылка";
Текст = СтрЗаменить(
Текст,
"&ТаблицаПереопределяемый",
ПараметрыВстраивания.ИмяОбъекта);
Текст = СтрЗаменить(
Текст,
"&УсловиеПереопределяемый",
ПараметрыВстраивания.ВыражениеДляВопросаПриВыполненииДействияВСпискеЗаказов);
Текст = СтрЗаменить(
Текст,
"&ИмяПоляЗаказ",
ИмяПоляЗаказ);
ТекстыЗапроса.Добавить(Текст);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Результат = ОбеспечениеВДокументахСервер.НовыеПараметрыВыполненияКомандУстановкиДействий();
Результат.КодДействия = КодДействия;
Результат.ПараметрыВыполнения = Результаты;
Если ТекстыЗапроса.Количество() > 0 Тогда
Запрос = Новый Запрос();
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ДатаОтгрузкиНовыхСтрок = НачалоДня(ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("ДатаОтгрузкиНовыхСтрок", ДатаОтгрузкиНовыхСтрок);
Запрос.УстановитьПараметр("Заказы", ВсеЗаказы);
Результат.НуженВопрос = Не Запрос.Выполнить().Пустой();
Результат.ДатаОтгрузкиНовыхСтрок = ДатаОтгрузкиНовыхСтрок;
КонецЕсли;
Возврат Результат;
КонецФункции
Процедура ТоварыДокументаДляСозданияОбеспечивающегоЗаказа(Ссылка, ПараметрыСоздания, МенеджерВременныхТаблиц) Экспорт
Запрос = Новый Запрос();
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ТипыНоменклатуры", ПараметрыСоздания.ТипыНоменклатуры);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Упаковка КАК Упаковка,
| Товары.Склад КАК Склад,
| Товары.Ссылка.Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА Товары.Обособленно
| ТОГДА
| Товары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| Товары.ВариантОбеспечения КАК ВариантОбеспечения,
| Товары.Обособленно КАК Обособленно,
| Товары.ДатаОтгрузки КАК ДатаОтгрузки,
| Товары.Количество КАК КоличествоЕдиницПоДокументу,
| Товары.КоличествоУпаковок КАК КоличествоПоДокументу
|ПОМЕСТИТЬ ТоварыДокумента
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК Товары
|ГДЕ
| Товары.Ссылка = &Ссылка
| И НЕ Товары.Отменено
| И Товары.Номенклатура.ТипНоменклатуры В(&ТипыНоменклатуры)
|";
Запрос.Выполнить();
КонецПроцедуры
Процедура ПослеЗаполненияОбеспечения(Объект, Изменения, Режим, ПараметрыЗаполнения) Экспорт
СтруктураДействий = Новый Структура();
Если Объект.ГруппировкаЗатрат =
ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства") Тогда
ПараметрыДействия = Новый Структура("Подразделение, ИмяПоляСклад", Объект.Подразделение, "Склад");
СтруктураДействий.Вставить("ПроверитьЗаполнитьСкладПроизводства" , ПараметрыДействия);
Иначе
СкладМатериалыГруппа = Справочники.Склады.ЭтоГруппа(Объект.СкладМатериалов);
ПараметрыДействия =
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(
Объект,
СкладМатериалыГруппа,
"СкладМатериалов",
"Склад");
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов") Тогда
ПараметрыДействия.СкладПоУмолчанию = ОбщегоНазначенияУТ.ПолучитьПроверитьСкладПоУмолчанию();
КонецЕсли;
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад" , ПараметрыДействия);
КонецЕсли;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого Изменение Из Изменения Цикл
Строка = Изменение.Строка;
Если Строка.ВариантОбеспечения <> Перечисления.ВариантыОбеспечения.ПереданРанее Тогда
Если Не ЗначениеЗаполнено(Строка.Склад) Тогда
ОбрабатываемыеСтроки.Добавить(Строка);
КонецЕсли;
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.ОбеспечениеМатериаламиИРаботами,
КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиентСервер.ЭтоРежимИзмененияВариантаОбеспечения(Режим) Тогда
ОбеспечениеВДокументахСервер.ЗаполнитьСкладИДатуОтгрузкиПриИзмененииПереданРанее(Изменения);
КонецЕсли;
ОбеспечениеВДокументахСервер.АктуализироватьДатуОтгрузки(
ПараметрыЗаполнения,
Объект.НеОтгружатьЧастями,
Объект.ДатаОтгрузки,
Объект.ОбеспечениеМатериаламиИРаботами,
"ДатаОтгрузки",
Истина);
Если ОбеспечениеВДокументахКлиентСервер.НужноПроверитьЗаполнитьДатуОтгрузкиДляСтрокОтгрузить(Режим) Тогда
ОбеспечениеВДокументахСервер.ПроверитьЗаполнитьДатуОтгрузкиДляСтрокОтгрузить(
Изменения.ВыгрузитьКолонку("Строка"),
"ДатаОтгрузки",
Объект.НеОтгружатьЧастями,
Объект.ДатаОтгрузки);
КонецЕсли;
ОбеспечениеВДокументахСервер.ПересчитатьКоличествоЕдиниц(Изменения, Объект.ОбеспечениеМатериаламиИРаботами);
Реквизиты = "Сумма";
ЗаказыСервер.ПересчитатьЗависимыеРеквизитыПослеРазбиенияСтрок(Изменения, Реквизиты);
ПараметрыУказанияСерий = ПараметрыУказанияСерий(Объект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.ОбеспечениеМатериаламиИРаботами);
ЕстьОтгрузить = Ложь;
Если ОбеспечениеВДокументахКлиентСервер.ЭтоРежимИзмененияВариантаОбеспечения(Режим) Тогда
Для Каждого ТекущиеДанные Из Изменения Цикл
Если ТекущиеДанные.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Отгрузить Тогда
ЕстьОтгрузить = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ЕстьОтгрузить
И Объект.Статус = Перечисления.СтатусыЗаказовПереработчикам.НеСогласован Тогда
Объект.Статус = Перечисления.СтатусыЗаказовПереработчикам.КИсполнению;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область НаправленияДеятельности
Функция ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности(Форма) Экспорт
ПорядокОбработкиДокумента = НаправленияДеятельностиСервер.ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности();
ПорядокОбработкиДокумента.ЗаполнятьНазначениеВШапке = Истина;
ПорядокОбработкиДокумента.ИменаТабличныхЧастейДляОчисткиНекорректныхНазначений = "ВыходныеИзделия,ПобочныеИзделия";
ТаблицаУсловий = НаправленияДеятельностиСервер.УсловияОбработкиНазначенийВСтроках("ТипНоменклатуры");
ПорядокОбработкиДокумента.УсловияОбработкиСтрок.Вставить("ВыходныеИзделия", ТаблицаУсловий);
ПорядокОбработкиДокумента.УсловияОбработкиСтрок.Вставить("ПобочныеИзделия", ТаблицаУсловий);
Возврат ПорядокОбработкиДокумента;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Проведение
#Область ИнициализацияПроведения
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПереработчику.Ссылка КАК ЗаказПереработчику,
| ЗаказПереработчику.Дата КАК Период,
| ЗаказПереработчику.Валюта КАК Валюта,
| ЗаказПереработчику.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ЗаказПереработчику.Статус КАК Статус,
| ЗаказПереработчику.Партнер КАК Партнер,
| ЗаказПереработчику.Контрагент КАК Контрагент,
| ЗаказПереработчику.Организация КАК Организация,
| ЗаказПереработчику.Подразделение КАК Подразделение,
| ЗаказПереработчику.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЗаказПереработчику.Договор КАК Договор,
| ПРЕДСТАВЛЕНИЕ(ЗаказПереработчику.Договор) КАК ДоговорПредставление,
| ЗаказПереработчику.ГруппировкаЗатрат КАК ГруппировкаЗатрат,
| ЗаказПереработчику.ОставитьИзделияУПереработчика КАК ОставитьИзделияУПереработчика,
| ЗаказПереработчику.Назначение КАК Назначение,
| ЗаказПереработчику.Приоритет КАК Приоритет,
| ЗаказПереработчику.ПереработкаПоЗаказу КАК ПереработкаПоЗаказу,
| ЗаказПереработчику.Менеджер КАК Менеджер,
| ЗаказПереработчику.Автор КАК Автор,
| ЗаказПереработчику.Номер КАК Номер,
| ЗаказПереработчику.Комментарий КАК Комментарий,
| ЗаказПереработчику.СуммаДокумента КАК СуммаДокумента,
| ЗаказПереработчику.Проведен КАК Проведен,
| ЗаказПереработчику.ПометкаУдаления КАК ПометкаУдаления,
| ЗаказПереработчику.ДатаПоДаннымПартнера КАК ДатаПоДаннымПартнера,
| ЗаказПереработчику.НомерПоДаннымПартнера КАК НомерПоДаннымПартнера,
|
| ВЫБОР
| КОГДА ЗаказПереработчику.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК РасчетыПоДоговорам,
|
| ВЫБОР
| КОГДА ЗаказПереработчику.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК РасчетыПоНакладным,
| ЗаказПереработчику.НаправлениеДеятельности КАК НаправлениеДеятельности,
|
| ЕСТЬNULL(ЗаказПереработчику.Договор.ЗаданГрафикИсполнения, ЛОЖЬ) КАК ГрафикИсполненияВДоговоре,
| ЗаказПереработчику.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК ЗаказПереработчику
|ГДЕ
| ЗаказПереработчику.Ссылка = &Ссылка
|";
Результат = Запрос.Выполнить();
Реквизиты = Результат.Выбрать();
Реквизиты.Следующий();
Для Каждого Колонка Из Результат.Колонки Цикл
Запрос.УстановитьПараметр(Колонка.Имя, Реквизиты[Колонка.Имя]);
КонецЦикла;
НакладнаяЯвляетсяРаспоряжением = ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(Реквизиты.ВариантПриемкиТоваров);
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ТипЗнч(ДокументСсылка)));
Запрос.УстановитьПараметр("НакладнаяЯвляетсяРаспоряжением", НакладнаяЯвляетсяРаспоряжением);
Если ЗначениеЗаполнено(Реквизиты.Договор) Тогда
ШаблонСтроки = "ru = 'По договору ""%1""'";
ИнформацияПоДоговору = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, Реквизиты.ДоговорПредставление);
КонецЕсли;
Запрос.УстановитьПараметр("ИнформацияПоДоговору", ИнформацияПоДоговору);
КонецПроцедуры
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = ПолноеИмяОбъекта();
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ТекстыЗапросаВременныхТаблиц = Новый Соответствие();
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоДоговору", """""");
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "ТаблицаДокумента";
ТекстыЗапросаВременныхТаблиц.Вставить(
"ВтЗаписиРеестраДокументов",
ТекстЗапросаВтЗаписиРеестраДокументов(Неопределено, ТекстыЗапроса));
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
#КонецОбласти
#Область ТекстыЗапросовПроведения
#Область ВременныеТаблицы
Функция ТекстЗапросаВтДатыПоступленияПродукции(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтДатыПоступленияПродукции";
ТекстЗапроса =
"ВЫБРАТЬ
| ДатыПоступления.Ссылка КАК Ссылка,
| ДатыПоступления.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| МАКСИМУМ(ДатыПоступления.ДатаПоступления) КАК ДатаПоступления
|ПОМЕСТИТЬ ВтДатыПоступленияПродукции
|ИЗ
| Документ.ЗаказПереработчику2_5.ВыходныеИзделия КАК ДатыПоступления
|ГДЕ
| ДатыПоступления.Ссылка В (&Ссылка)
|
|СГРУППИРОВАТЬ ПО
| ДатыПоступления.Ссылка,
| ДатыПоступления.НомерГруппыЗатрат
| ";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВременнаяТаблицаКурсыВалют(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВременнаяТаблицаКурсыВалют";
ТекстЗапроса = "
|ВЫБРАТЬ
| ОтносительныеКурсыВалютСрезПоследних.Валюта КАК Валюта,
| ОтносительныеКурсыВалютСрезПоследних.КурсЧислитель КАК КурсЧислитель,
| ОтносительныеКурсыВалютСрезПоследних.КурсЗнаменатель КАК КурсЗнаменатель
|ПОМЕСТИТЬ ВременнаяТаблицаКурсыВалют
|ИЗ
| РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(
| &Период,
| БазоваяВалюта В
| (ВЫБРАТЬ
| БазоваяВалютаПоУмолчанию.Значение КАК Значение
| ИЗ
| Константа.БазоваяВалютаПоУмолчанию КАК БазоваяВалютаПоУмолчанию)
| ) КАК ОтносительныеКурсыВалютСрезПоследних
|
|ИНДЕКСИРОВАТЬ ПО
| Валюта
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтЗаписиРеестраДокументов(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтЗаписиРеестраДокументов";
ТекстЗапроса = "
|ВЫБРАТЬ
| ВложенныйЗапрос.Ссылка КАК Ссылка,
| ВложенныйЗапрос.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ВложенныйЗапрос.МестоХранения КАК МестоХранения,
| МИНИМУМ(ВложенныйЗапрос.ДополнительнаяЗапись) КАК ДополнительнаяЗапись
|ПОМЕСТИТЬ ВтЗаписиРеестраДокументов
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК МестоХранения,
| ЛОЖЬ КАК ДополнительнаяЗапись
| ИЗ
| Документ.ЗаказПереработчику2_5 КАК ТаблицаДокумента
| ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5) КАК ХозяйственнаяОперация,
| ТаблицаДокумента.Получатель КАК МестоХранения,
| ИСТИНА КАК ДополнительнаяЗапись
| ИЗ
| Документ.ЗаказПереработчику2_5.ВыходныеИзделия КАК ТаблицаДокумента
| ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка
| И НЕ ТаблицаДокумента.Отменено
| И НЕ ТаблицаДокумента.СписатьНаРасходы
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5) КАК ХозяйственнаяОперация,
| ТаблицаДокумента.Получатель КАК МестоХранения,
| ИСТИНА КАК ДополнительнаяЗапись
| ИЗ
| Документ.ЗаказПереработчику2_5.ПобочныеИзделия КАК ТаблицаДокумента
| ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка
| И НЕ ТаблицаДокумента.Отменено
| И НЕ ТаблицаДокумента.СписатьНаРасходы
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПереработчику2_5) КАК ХозяйственнаяОперация,
| ВЫБОР
| КОГДА ТаблицаДокумента.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ТаблицаДокумента.Ссылка.Подразделение
| ИНАЧЕ ТаблицаДокумента.Склад
| КОНЕЦ КАК МестоХранения,
| ИСТИНА КАК ДополнительнаяЗапись
| ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ТаблицаДокумента
| ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка
| И НЕ ТаблицаДокумента.Отменено
| ) КАК ВложенныйЗапрос
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Ссылка,
| ВложенныйЗапрос.ХозяйственнаяОперация,
| ВложенныйЗапрос.МестоХранения
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
Функция ТекстЗапросаТаблицаЗаказыПоставщикам(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЗаказыПоставщикам";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| НЕОПРЕДЕЛЕНО КАК Склад,
| ВЫБОР
| КОГДА &Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И НЕ ТаблицаТовары.Отменено
| ТОГДА ТаблицаТовары.Количество
| ИНАЧЕ 0
| КОНЕЦ КАК КОформлению,
| 0 КАК КПоступлению,
| ТаблицаТовары.Количество КАК Заказано,
| 0 КАК Сумма,
| НЕОПРЕДЕЛЕНО КАК ПричинаОтмены
|ИЗ
| Документ.ЗаказПереработчику2_5.ВыходныеИзделия КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| НЕОПРЕДЕЛЕНО КАК Склад,
| 0 КАК КОформлению,
| 0 КАК КПоступлению,
| -ТаблицаТовары.Количество КАК Заказано,
| 0 КАК Сумма,
| ТаблицаТовары.ПричинаОтмены КАК ПричинаОтмены
|ИЗ
| Документ.ЗаказПереработчику2_5.ВыходныеИзделия КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Отменено
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Получатель КАК Склад,
| 0 КАК КОформлению,
| ТаблицаТовары.Количество КАК КПоступлению,
| 0 КАК Заказано,
| 0 КАК Сумма,
| НЕОПРЕДЕЛЕНО КАК ПричинаОтмены
|ИЗ
| Документ.ЗаказПереработчику2_5.ВыходныеИзделия КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И НЕ ТаблицаТовары.Отменено
| И НЕ ТаблицаТовары.СписатьНаРасходы
| И ТаблицаТовары.Номенклатура.ТипНоменклатуры В (
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И &Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И НЕ &ОставитьИзделияУПереработчика
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| НЕОПРЕДЕЛЕНО КАК Склад,
| ВЫБОР
| КОГДА &Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И НЕ ТаблицаТовары.Отменено
| ТОГДА ТаблицаТовары.Количество
| ИНАЧЕ 0
| КОНЕЦ КАК КОформлению,
| 0 КАК КПоступлению,
| ТаблицаТовары.Количество КАК Заказано,
| 0 КАК Сумма,
| НЕОПРЕДЕЛЕНО КАК ПричинаОтмены
|ИЗ
| Документ.ЗаказПереработчику2_5.ПобочныеИзделия КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| НЕОПРЕДЕЛЕНО КАК Склад,
| 0 КАК КОформлению,
| 0 КАК КПоступлению,
| -ТаблицаТовары.Количество КАК Заказано,
| 0 КАК Сумма,
| ТаблицаТовары.ПричинаОтмены КАК ПричинаОтмены
|ИЗ
| Документ.ЗаказПереработчику2_5.ПобочныеИзделия КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Отменено
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Получатель КАК Склад,
| 0 КАК КОформлению,
| ТаблицаТовары.Количество КАК КПоступлению,
| 0 КАК Заказано,
| 0 КАК Сумма,
| НЕОПРЕДЕЛЕНО КАК ПричинаОтмены
|ИЗ
| Документ.ЗаказПереработчику2_5.ПобочныеИзделия КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И НЕ ТаблицаТовары.Отменено
| И НЕ ТаблицаТовары.СписатьНаРасходы
| И ТаблицаТовары.Номенклатура.ТипНоменклатуры В (
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И &Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И НЕ &ОставитьИзделияУПереработчика
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| НЕОПРЕДЕЛЕНО КАК Склад,
| ТаблицаТовары.Количество КАК КОформлению,
| 0 КАК КПоступлению,
| 0 КАК Заказано,
| ТаблицаТовары.Сумма КАК Сумма,
| НЕОПРЕДЕЛЕНО КАК ПричинаОтмены
|ИЗ
| Документ.ЗаказПереработчику2_5.Услуги КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| НЕОПРЕДЕЛЕНО КАК Склад,
| -ТаблицаТовары.Количество КАК КОформлению,
| 0 КАК КПоступлению,
| 0 КАК Заказано,
| -ТаблицаТовары.Сумма КАК Сумма,
| ТаблицаТовары.ПричинаОтмены КАК ПричинаОтмены
|ИЗ
| Документ.ЗаказПереработчику2_5.Услуги КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И ТаблицаТовары.Отменено
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| НачалоПериода(&Период, День) КАК Период,
| ТаблицаТовары.Ссылка КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Склад КАК Склад,
| ВЫБОР
| КОГДА ТаблицаТовары.Отменено
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отменено)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Заказано)
| КОНЕЦ КАК Показатель,
| ТаблицаТовары.Количество КАК Количество,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И НЕ ТаблицаТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И НЕ ТаблицаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.ПереданРанее)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.ДатаОтгрузки КАК Период,
| ТаблицаТовары.Ссылка КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаПоказателей.Ссылка КАК Показатель,
| ТаблицаТовары.Количество КАК Количество,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат КАК ТаблицаПоказателей
| ПО ТаблицаПоказателей.Ссылка В (ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОформлению),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке))
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &Статус В
| (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И НЕ ТаблицаТовары.Отменено
| И НЕ ТаблицаТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ТаблицаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки,
| Показатель";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтЗаписиРеестраДокументов", ТекстыЗапроса) Тогда
ТекстЗапросаВтЗаписиРеестраДокументов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| ЗаписиРеестраДокументов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Партнер КАК Партнер,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор,
| ЗаписиРеестраДокументов.МестоХранения КАК МестоХранения,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Подразделение КАК Подразделение,
| &Менеджер КАК Ответственный,
| &Автор КАК Автор,
| &Комментарий КАК Комментарий,
| &Валюта КАК Валюта,
| &СуммаДокумента КАК Сумма,
| &Статус КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЗаписиРеестраДокументов.ДополнительнаяЗапись КАК ДополнительнаяЗапись,
| &ИнформацияПоДоговору КАК Дополнительно,
| &ДатаПоДаннымПартнера КАК ДатаПервичногоДокумента,
| &НомерПоДаннымПартнера КАК НомерПервичногоДокумента,
| &Период КАК ДатаОтраженияВУчете,
| &Приоритет КАК Приоритет
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК ТаблицаДокумента
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтЗаписиРеестраДокументов КАК ЗаписиРеестраДокументов
| ПО ЗаписиРеестраДокументов.Ссылка = ТаблицаДокумента.Ссылка
|
|ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаЦеныНоменклатурыПоставщиков(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЦеныНоменклатурыПоставщиков";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВременнаяТаблицаКурсыВалют", ТекстыЗапроса) Тогда
ТекстЗапросаВременнаяТаблицаКурсыВалют(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| &Период КАК Период,
| Услуги.Номенклатура КАК Номенклатура,
| Услуги.Характеристика КАК Характеристика,
| Услуги.ВидЦеныПоставщика КАК ВидЦеныПоставщика,
| Услуги.ВидЦеныПоставщика.Валюта КАК Валюта,
| &Партнер КАК Партнер,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка,
| ВЫРАЗИТЬ(
| СРЕДНЕЕ(
| Услуги.Цена
| * ВЫБОР
| КОГДА
| &Валюта <> Услуги.ВидЦеныПоставщика.Валюта
| ТОГДА
| ВЫБОР
| КОГДА ЕСТЬNULL(КурсыВалютыЦены.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалютыЦены.КурсЧислитель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалюты.КурсЧислитель, 0) > 0
| ТОГДА
| (КурсыВалюты.КурсЧислитель * КурсыВалютыЦены.КурсЗнаменатель)
| / (КурсыВалютыЦены.КурсЧислитель * КурсыВалюты.КурсЗнаменатель)
| ИНАЧЕ
| 0
| КОНЕЦ
| ИНАЧЕ
| 1
| КОНЕЦ
| ) КАК ЧИСЛО(31,2)) КАК Цена
|ИЗ
| Документ.ЗаказПереработчику2_5.Услуги КАК Услуги
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаКурсыВалют КАК КурсыВалюты
| ПО КурсыВалюты.Валюта = &Валюта
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаКурсыВалют КАК КурсыВалютыЦены
| ПО КурсыВалютыЦены.Валюта = Услуги.ВидЦеныПоставщика.Валюта
|
|ГДЕ
| Услуги.Ссылка = &Ссылка
| И НЕ Услуги.ВидЦеныПоставщика = ЗНАЧЕНИЕ(Справочник.ВидыЦенПоставщиков.ПустаяСсылка)
| И Услуги.Ссылка.РегистрироватьЦеныПоставщика
| И НЕ Услуги.Отменено
|
|СГРУППИРОВАТЬ ПО
| Услуги.Номенклатура,
| Услуги.Характеристика,
| Услуги.ВидЦеныПоставщика
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры)
#Область НаправленияДеятельности
ИмяРегистра = "ВременнаяТаблицаНаправленияДеятельности";
ТекстЗапросаНаправленияДеятельности =
"ВЫБРАТЬ
| ДанныеДокументаШапка.ОбъектРасчетов КАК ОбъектРасчетов
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК ДанныеДокументаШапка
|ГДЕ
| ДанныеДокументаШапка.Ссылка В (&Ссылка)";
ТекстЗапросаНаправленияДеятельности = ВзаиморасчетыСервер.ПолучитьТаблицуНаправленийДеятельности(ТекстЗапросаНаправленияДеятельности);
ТекстыЗапроса.Добавить(ТекстЗапросаНаправленияДеятельности, ИмяРегистра);
#КонецОбласти
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтДатыПоступленияПродукции", ТекстыЗапроса) Тогда
ТекстЗапросаВтДатыПоступленияПродукции(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстПланыОплат =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Ссылка.Организация КАК Организация,
| Таблица.Ссылка.Партнер КАК Партнер,
|
| Таблица.Ссылка.ОбъектРасчетов КАК ОбъектРасчетов,
| Таблица.Ссылка.Дата КАК ДатаРегистратора,
| Таблица.Ссылка.Номер КАК НомерРегистратора,
| Таблица.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаВзаиморасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаДокумента,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПланированиеПоЗаказуПоставщику) КАК ХозяйственнаяОперация,
| Таблица.Ссылка.ФормаОплаты КАК ФормаОплаты,
|
| Таблица.ДатаПлатежа КАК ДатаПлатежа,
| Таблица.ВариантОплаты КАК ВариантОплаты,
| Таблица.СуммаПлатежа КАК КОплате
|
|ИЗ
| Документ.ЗаказПереработчику2_5.ЭтапыГрафикаОплаты КАК Таблица
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
| И Таблица.Ссылка.Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
|";
ТекстПланыПоставок =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Ссылка.Организация КАК Организация,
| Таблица.Ссылка.Партнер КАК Партнер,
|
| Таблица.Ссылка.ОбъектРасчетов КАК ОбъектРасчетов,
| Таблица.Ссылка.Дата КАК ДатаРегистратора,
| Таблица.Ссылка.Номер КАК НомерРегистратора,
| Таблица.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаВзаиморасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаДокумента,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПланированиеПоЗаказуПоставщику) КАК ХозяйственнаяОперация,
|
| ДатыПоступления.ДатаПоступления КАК ДатаПоступления,
| Таблица.СуммаСНДС КАК УвеличитьКПоступлению
|ИЗ
| Документ.ЗаказПереработчику2_5.Услуги КАК Таблица
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДатыПоступленияПродукции КАК ДатыПоступления
| ПО ДатыПоступления.Ссылка = Таблица.Ссылка
| И ДатыПоступления.НомерГруппыЗатрат = Таблица.НомерГруппыЗатрат
|
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
| И Таблица.Ссылка.Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И НЕ Таблица.Отменено
|";
ВзаиморасчетыСервер.ПроведениеЗаказаПоставщику(Запрос, ТекстыЗапроса, Регистры, ТекстПланыОплат, ТекстПланыПоставок);
ВзаиморасчетыСервер.ПроведениеРасчетыСПоставщикамиПланОплат(Запрос, ТекстыЗапроса, Регистры, ТекстПланыОплат);
ВзаиморасчетыСервер.ПроведениеРасчетыСПоставщикамиПланПоставок(Запрос, ТекстыЗапроса, Регистры, ТекстПланыПоставок);
КонецПроцедуры
Процедура ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ИсточникДанных.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ИсточникДанных.Ссылка
| КОНЕЦ КАК Заказ,
| ИсточникДанных.Ссылка.Договор КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ИсточникДанных.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ИсточникДанных.ДатаПоступления КАК Дата,
| ИсточникДанных.Номенклатура КАК Номенклатура,
| ИсточникДанных.Характеристика КАК Характеристика,
| ИсточникДанных.Назначение КАК Назначение,
| 0 КАК СтатусУказанияСерий,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ЛОЖЬ КАК СверхЗаказа,
| ИсточникДанных.Получатель КАК Склад,
| ИсточникДанных.Ссылка.Партнер КАК Отправитель,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5) КАК ХозяйственнаяОперация,
| ИсточникДанных.Количество КАК Количество,
| ЛОЖЬ КАК ЭтоНакладная,
| ЛОЖЬ КАК ПоступлениеПоЗаказам
|ИЗ
| Документ.ЗаказПереработчику2_5.ВыходныеИзделия КАК ИсточникДанных
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику2_5.Распоряжения КАК ТаблицаРаспоряжения
| ПО ТаблицаРаспоряжения.Ссылка = ИсточникДанных.Ссылка
| И ТаблицаРаспоряжения.НомерГруппыЗатрат = ИсточникДанных.НомерГруппыЗатрат
|
|ГДЕ
| ИсточникДанных.Ссылка В (&Ссылка)
| И НЕ ИсточникДанных.Отменено
| И НЕ ИсточникДанных.СписатьНаРасходы
| И НЕ ИсточникДанных.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ИсточникДанных.Ссылка.Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И НЕ ИсточникДанных.Ссылка.ОставитьИзделияУПереработчика
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ИсточникДанных.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ИсточникДанных.Ссылка
| КОНЕЦ КАК Заказ,
| ИсточникДанных.Ссылка.Договор КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ИсточникДанных.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ИсточникДанных.ДатаПоступления КАК Дата,
| ИсточникДанных.Номенклатура КАК Номенклатура,
| ИсточникДанных.Характеристика КАК Характеристика,
| ИсточникДанных.Назначение КАК Назначение,
| 0 КАК СтатусУказанияСерий,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ЛОЖЬ КАК СверхЗаказа,
| ИсточникДанных.Получатель КАК Склад,
| ИсточникДанных.Ссылка.Партнер КАК Отправитель,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5) КАК ХозяйственнаяОперация,
| ИсточникДанных.Количество КАК Количество,
| ЛОЖЬ КАК ЭтоНакладная,
| ЛОЖЬ КАК ПоступлениеПоЗаказам
|ИЗ
| Документ.ЗаказПереработчику2_5.ПобочныеИзделия КАК ИсточникДанных
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику2_5.Распоряжения КАК ТаблицаРаспоряжения
| ПО ТаблицаРаспоряжения.Ссылка = ИсточникДанных.Ссылка
| И ТаблицаРаспоряжения.НомерГруппыЗатрат = ИсточникДанных.НомерГруппыЗатрат
|
|ГДЕ
| ИсточникДанных.Ссылка В (&Ссылка)
| И НЕ ИсточникДанных.Отменено
| И НЕ ИсточникДанных.СписатьНаРасходы
| И НЕ ИсточникДанных.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ИсточникДанных.Ссылка.Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И НЕ ИсточникДанных.Ссылка.ОставитьИзделияУПереработчика
|";
СкладыСервер.ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДокумента);
КонецПроцедуры
Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ДанныеИсточника.Ссылка КАК Ссылка,
| ДанныеИсточника.ДатаОтгрузки КАК Период,
| ДанныеИсточника.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеИсточника.Ссылка.Партнер КАК Получатель,
| ДанныеИсточника.Склад КАК Склад,
| ДанныеИсточника.Номенклатура КАК Номенклатура,
| ДанныеИсточника.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ДанныеИсточника.Обособленно
| ТОГДА ДанныеИсточника.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ДанныеИсточника.Серия КАК Серия,
| ДанныеИсточника.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ДанныеИсточника.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ДанныеИсточника.Отменено КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ИСТИНА КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ДанныеИсточника
|
|ГДЕ
| ДанныеИсточника.Ссылка В(&Ссылка)
| И НЕ ДанныеИсточника.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ДанныеИсточника.Ссылка.Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И НЕ ДанныеИсточника.Отменено
| И ДанныеИсточника.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
|";
СкладыСервер.ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ДанныеИсточника.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ДанныеИсточника.ДатаОтгрузки <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеИсточника.ДатаОтгрузки
| ИНАЧЕ ДанныеИсточника.Ссылка.Дата
| КОНЕЦ КАК Период,
| ДанныеИсточника.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеИсточника.Ссылка.Партнер КАК Получатель,
| ДанныеИсточника.Склад КАК Склад,
| ДанныеИсточника.Номенклатура КАК Номенклатура,
| ДанныеИсточника.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ДанныеИсточника.Обособленно
| ТОГДА ДанныеИсточника.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ДанныеИсточника.Серия КАК Серия,
| ДанныеИсточника.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ДанныеИсточника.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ДанныеИсточника.Отменено КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ИСТИНА КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ДанныеИсточника
|ГДЕ
| ДанныеИсточника.Ссылка В(&Ссылка)
| И НЕ ДанныеИсточника.Отменено
| И НЕ ДанныеИсточника.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И (ДанныеИсточника.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ИЛИ ДанныеИсточника.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ДанныеИсточника.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован))
|";
СкладыСервер.ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
#Область ОбеспечениеМатериаламиИРаботами
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ТабЧасть.Ссылка.Подразделение
| ИНАЧЕ ТабЧасть.Склад
| КОНЕЦ КАК Склад,
|
| ВЫБОР
| КОГДА ТабЧасть.Обособленно
| ТОГДА ТабЧасть.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
|
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ТабЧасть.Ссылка
| КОНЕЦ КАК ЗапланированныйРасходРаспределенногоЗапаса,
|
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ТабЧасть
|
|ГДЕ
| НЕ ТабЧасть.Отменено
| И ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И ТабЧасть.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
|";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ТабЧасть.Ссылка.Подразделение
| ИНАЧЕ ТабЧасть.Склад
| КОНЕЦ КАК Склад,
|
| ВЫБОР
| КОГДА ТабЧасть.Обособленно
| ТОГДА ТабЧасть.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.ВариантОбеспечения КАК ВариантОбеспечения,
|
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ТабЧасть.Ссылка
| КОНЕЦ КАК Заказ,
|
| ВЫБОР
| КОГДА ТабЧасть.Ссылка.НеОтгружатьЧастями
| ТОГДА ТабЧасть.Ссылка.ДатаОтгрузки
| ИНАЧЕ ТабЧасть.ДатаОтгрузки
| КОНЕЦ КАК ЖелаемаяДатаОтгрузки,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ТабЧасть
|
|ГДЕ
| НЕ ТабЧасть.Отменено
| И НЕ ТабЧасть.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован)
| И НЕ ТабЧасть.ВариантОбеспечения В
| (ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.ПереданРанее))
|";
РаспределениеЗапасовДвижения.ЗапланироватьРасходЗапаса(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаТабЧасть,
Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ТабЧасть.Ссылка.Подразделение
| ИНАЧЕ ТабЧасть.Склад
| КОНЕЦ КАК Склад,
|
| ВЫБОР
| КОГДА ТабЧасть.Обособленно
| ТОГДА ТабЧасть.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
|
| ВЫБОР
| КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) И ТабЧасть.Обособленно
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.КОбеспечению)
| КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) И НЕ ТабЧасть.Обособленно
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.НеТребуется)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| КОНЕЦ КАК ВариантОбеспечения,
|
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ТабЧасть.Ссылка
| КОНЕЦ КАК Заказ,
|
| ВЫБОР
| КОГДА ТабЧасть.Ссылка.НеОтгружатьЧастями
| ТОГДА ТабЧасть.Ссылка.ДатаОтгрузки
| ИНАЧЕ ТабЧасть.ДатаОтгрузки
| КОНЕЦ КАК ЖелаемаяДатаОтгрузки,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ТабЧасть
|
|ГДЕ
| НЕ ТабЧасть.Отменено
| И ТабЧасть.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован)
| И ТабЧасть.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
|";
РаспределениеЗапасовДвижения.ЗапланироватьРасходЗапаса(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаТабЧасть,
Ложь);
#КонецОбласти
#Область ВыходныеИзделия
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Получатель КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
|
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ТабЧасть.Ссылка
| КОНЕЦ КАК Заказ,
|
| ТабЧасть.ДатаПоступления КАК ДатаПоступления,
| ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт)) КАК ДоступенДляРасхода,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказПереработчику2_5.ВыходныеИзделия КАК ТабЧасть
|
|ГДЕ
| НЕ ТабЧасть.СписатьНаРасходы
| И НЕ ТабЧасть.Отменено
| И (НЕ ТабЧасть.Ссылка.ОставитьИзделияУПереработчика
| ИЛИ ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))
|";
РаспределениеЗапасовДвижения.ЗапланироватьПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Ложь);
#КонецОбласти
#Область ПобочныеИзделия
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Получатель КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
|
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ТабЧасть.Ссылка
| КОНЕЦ КАК Заказ,
|
| ТабЧасть.ДатаПоступления КАК ДатаПоступления,
| ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт)) КАК ДоступенДляРасхода,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказПереработчику2_5.ПобочныеИзделия КАК ТабЧасть
|
|ГДЕ
| НЕ ТабЧасть.СписатьНаРасходы
| И НЕ ТабЧасть.Отменено
| И (НЕ ТабЧасть.Ссылка.ОставитьИзделияУПереработчика
| ИЛИ ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))
|";
РаспределениеЗапасовДвижения.ЗапланироватьПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Ложь);
#КонецОбласти
КонецПроцедуры
Процедура СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры = Неопределено) Экспорт
ТекстЗапросаДанных =
"ВЫБРАТЬ
| ""Услуги"" КАК ИсточникДанных,
| ЛОЖЬ КАК РаспределятьОбщуюСумму,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Ссылка.Дата КАК Дата,
| ТаблицаДокумента.Ссылка.Организация КАК Организация,
| ТаблицаДокумента.Ссылка.Валюта КАК ВалютаДокумента,
| НЕОПРЕДЕЛЕНО КАК ВалютаВзаиморасчетов,
| ДАТАВРЕМЯ(1,1,1) КАК ПериодБазыНДС,
| ТаблицаДокумента.Ссылка.Дата КАК ДатаКурса,
|
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| ТаблицаДокумента.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаДокумента.СуммаСНДС - ТаблицаДокумента.СуммаНДС КАК СуммаБезНДС,
| ТаблицаДокумента.СтавкаНДС КАК СтавкаНДС,
| ТаблицаДокумента.СуммаНДС КАК СуммаНДС,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК СуммаНДСВзаиморасчетов,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК СуммаБезНДСУпр,
|
| ИСТИНА КАК ОтражаетсяВРасчетах,
| ТаблицаДокумента.Ссылка.ОбъектРасчетов КАК ОбъектРасчетов,
| ЛОЖЬ КАК ПересчитыватьПоДаннымРасчетов
|ИЗ
| Документ.ЗаказПереработчику2_5.Услуги КАК ТаблицаДокумента
|
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И ТаблицаДокумента.Ссылка.УслугиПоПереработке =
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете)
|";
РегистрыСведений.СуммыДокументовВВалютахУчета.СформироватьПоДаннымДокумента(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанных);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Если ПравоДоступа("Изменение", Метаданные.Документы.ЗаказПереработчику2_5) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьЗаказовНаТоварыУслуги";
КомандаПечати.Идентификатор = "ЗаказПереработчикуНаУслуги2_5";
КомандаПечати.Представление = НСтр("ru = 'Заказ переработчику на услуги по выпуску продукции'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьЗаказовНаТоварыУслуги";
КомандаПечати.Идентификатор = "ЗаказПереработчикаНаСырье2_5";
КомандаПечати.Представление = НСтр("ru = 'Заказ переработчика на материалы и работы'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
КонецПроцедуры
Функция ПолучитьДанныеДляПечатнойФормыЗаказаНаСырьеИМатериалы(МассивОбъектов, ПараметрыПечати, КодЯзыка = Неопределено) Экспорт
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Номер КАК Номер,
| Документы.Дата КАК Дата,
| Документы.Организация КАК Организация,
| Документы.Организация КАК Исполнитель,
|
| ЛОЖЬ КАК УчитыватьНДС,
| Документы.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ЛОЖЬ КАК ОперацияОблагаетсяНДСУПокупателя,
|
| Документы.Организация.Префикс КАК Префикс,
| Документы.Контрагент КАК Контрагент,
| Документы.Контрагент КАК Заказчик,
| Документы.БанковскийСчет КАК БанковскийСчет,
| Документы.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| Документы.Валюта КАК Валюта,
| Документы.Менеджер.ФизическоеЛицо.Наименование КАК Менеджер,
| Документы.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
|
| Документы.АдресДоставки КАК АдресДоставки,
| НЕОПРЕДЕЛЕНО КАК Грузоотправитель,
| НЕОПРЕДЕЛЕНО КАК Грузополучатель,
| ЛОЖЬ КАК ПоказыватьНДСВСтроках,
| ЛОЖЬ КАК ИспользоватьАвтоСкидки,
| """" КАК Тип,
| &ПредставлениеДокумента КАК ПредставлениеДокумента,
| &ПредставлениеВОшибке КАК ПредставлениеВОшибке
|
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК Документы
|
|ГДЕ
| Документы.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Документы.МоментВремени
|;
|
|
|ВЫБРАТЬ
| НЕОПРЕДЕЛЕНО КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК ДатаПлатежа,
| НЕОПРЕДЕЛЕНО КАК ВариантОплаты,
| НЕОПРЕДЕЛЕНО КАК ПроцентПлатежа,
| НЕОПРЕДЕЛЕНО КАК СуммаПлатежа
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.НомерСтроки КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК ВидЦеныИсполнителя,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Номенклатура.Код КАК Код,
| Товары.Номенклатура.Артикул КАК Артикул,
| ЕСТЬNULL(НоменклатураПредставления.НаименованиеПолное, Товары.Номенклатура.НаименованиеПолное) КАК НаименованиеПолное,
| Товары.ДатаОтгрузки КАК ДатаОтгрузки,
| ЕСТЬNULL(ХарактеристикиНоменклатурыПредставления.НаименованиеПолное, ЕСТЬNULL(Товары.Характеристика.НаименованиеПолное, """")) КАК Характеристика,
| """" КАК Содержание,
|
| Товары.КоличествоУпаковок КАК Количество,
|
| Товары.Цена КАК Цена,
| 0 КАК СуммаСкидки,
| Товары.Сумма КАК СуммаБезСкидки,
| Товары.Сумма КАК Сумма,
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
| 0 КАК СуммаНДС,
|
| ВЫБОР
| КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзыкСистемы ТОГДА
| ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ Товары.Номенклатура.ЕдиницаИзмерения.МеждународноеСокращение
| КОНЕЦ
| ИНАЧЕ
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзыкСистемы ТОГДА
| ПРЕДСТАВЛЕНИЕ(Товары.Упаковка)
| ИНАЧЕ Товары.Упаковка.МеждународноеСокращение
| КОНЕЦ
| КОНЕЦ КАК ЕдиницаИзмерения,
|
| ВЫБОР КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1 ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Товары.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
| ЛОЖЬ КАК ЭтоВозвратнаяТара
|
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураПредставления
| ПО (Товары.Номенклатура = НоменклатураПредставления.Ссылка
| И НоменклатураПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыПредставления
| ПО (Товары.Характеристика = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
|
|ГДЕ
| Товары.Ссылка В(&МассивОбъектов)
| И Товары.Отменено = ЛОЖЬ
|
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ПредставлениеДокумента", НСтр("ru = 'Заказ переработчика на сырье и материалы'", ОбщегоНазначения.КодОсновногоЯзыка()));
Запрос.УстановитьПараметр("ПредставлениеВОшибке", НСтр("ru = 'заказа переработчика'", ОбщегоНазначения.КодОсновногоЯзыка()));
Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка);
Запрос.УстановитьПараметр("ЭтоОсновнойЯзыкСистемы", КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка() Или КодЯзыка = Неопределено);
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[0]);
СтруктураДанныхДляПечати.Вставить("РезультатПоЭтапамОплаты", ПакетРезультатовЗапроса[1]);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", ПакетРезультатовЗапроса[ПакетРезультатовЗапроса.ВГраница()]);
Возврат СтруктураДанныхДляПечати;
КонецФункции
Функция ПолучитьДанныеДляПечатнойФормыЗаказаНаУслуги(МассивОбъектов, ПараметрыПечати, КодЯзыка = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Номер КАК Номер,
| Документы.Дата КАК Дата,
| Документы.Организация КАК Организация,
| Документы.Организация КАК Заказчик,
|
| ЛОЖЬ КАК УчитыватьНДС,
| Документы.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ЛОЖЬ КАК ОперацияОблагаетсяНДСУПокупателя,
|
| Документы.Организация.Префикс КАК Префикс,
| Документы.Контрагент КАК Контрагент,
| Документы.Контрагент КАК Исполнитель,
| Документы.БанковскийСчет КАК БанковскийСчет,
| Документы.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| Документы.Валюта КАК Валюта,
| Документы.Менеджер.ФизическоеЛицо.Наименование КАК Менеджер,
| Документы.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
|
| """" КАК АдресДоставки,
| НЕОПРЕДЕЛЕНО КАК Грузоотправитель,
| НЕОПРЕДЕЛЕНО КАК Грузополучатель,
| ЛОЖЬ КАК ПоказыватьНДСВСтроках,
| ЛОЖЬ КАК ИспользоватьАвтоСкидки,
| ""ЗаказПереработчикуНаУслуги"" КАК Тип,
| &ПредставлениеДокумента КАК ПредставлениеДокумента,
| &ПредставлениеВОшибке КАК ПредставлениеВОшибке
|
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК Документы
|ГДЕ
| Документы.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Документы.МоментВремени
|;
|
|
|ВЫБРАТЬ
| НЕОПРЕДЕЛЕНО КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК ДатаПлатежа,
| НЕОПРЕДЕЛЕНО КАК ВариантОплаты,
| НЕОПРЕДЕЛЕНО КАК ПроцентПлатежа,
| НЕОПРЕДЕЛЕНО КАК СуммаПлатежа
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Номенклатура.Код КАК Код,
| Товары.Номенклатура.Артикул КАК Артикул,
| ЕСТЬNULL(НоменклатураПредставления.НаименованиеПолное, Товары.Номенклатура.НаименованиеПолное) КАК НаименованиеПолное,
| Товары.ДатаПоступления КАК ДатаПоступления,
| ЕСТЬNULL(ХарактеристикиНоменклатурыПредставления.НаименованиеПолное, ЕСТЬNULL(Товары.Характеристика.НаименованиеПолное, """")) КАК Характеристика,
| """" КАК Содержание,
|
| НЕОПРЕДЕЛЕНО КАК ВидЦеныИсполнителя,
|
| ВЫБОР
| КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзыкСистемы ТОГДА
| ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ Товары.Номенклатура.ЕдиницаИзмерения.МеждународноеСокращение
| КОНЕЦ
| ИНАЧЕ
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзыкСистемы ТОГДА
| ПРЕДСТАВЛЕНИЕ(Товары.Упаковка)
| ИНАЧЕ Товары.Упаковка.МеждународноеСокращение
| КОНЕЦ
| КОНЕЦ КАК ЕдиницаИзмерения,
|
| Товары.КоличествоУпаковок КАК Количество,
|
| 0 КАК Цена,
| 0 КАК Сумма,
| 0 КАК СуммаНДС,
| 0 КАК СуммаСкидки,
| 0 КАК СуммаБезСкидки,
|
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
|
| ВЫБОР КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1 ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Товары.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
|
| ЛОЖЬ КАК ЭтоВозвратнаяТара
|
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК Заказ
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.ЗаказПереработчику2_5.ВыходныеИзделия КАК Товары
| ПО
| Заказ.Ссылка В(&МассивОбъектов)
| И Заказ.Ссылка = Товары.Ссылка
| И Товары.Отменено = ЛОЖЬ
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураПредставления
| ПО (Товары.Номенклатура = НоменклатураПредставления.Ссылка
| И НоменклатураПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыПредставления
| ПО (Товары.Характеристика = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Номенклатура.Код КАК Код,
| Товары.Номенклатура.Артикул КАК Артикул,
| ЕСТЬNULL(НоменклатураПредставления.НаименованиеПолное, Товары.Номенклатура.НаименованиеПолное) КАК НаименованиеПолное,
| Товары.ДатаПоступления КАК ДатаПоступления,
| ЕСТЬNULL(ХарактеристикиНоменклатурыПредставления.НаименованиеПолное, ЕСТЬNULL(Товары.Характеристика.НаименованиеПолное, """")) КАК Характеристика,
| """" КАК Содержание,
|
| НЕОПРЕДЕЛЕНО КАК ВидЦеныИсполнителя,
|
| ВЫБОР
| КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзыкСистемы ТОГДА
| ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ Товары.Номенклатура.ЕдиницаИзмерения.МеждународноеСокращение
| КОНЕЦ
| ИНАЧЕ
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзыкСистемы ТОГДА
| ПРЕДСТАВЛЕНИЕ(Товары.Упаковка)
| ИНАЧЕ Товары.Упаковка.МеждународноеСокращение
| КОНЕЦ
| КОНЕЦ КАК ЕдиницаИзмерения,
|
| Товары.КоличествоУпаковок КАК Количество,
|
| Товары.Цена КАК Цена,
| Товары.Сумма КАК Сумма,
| 0 КАК СуммаНДС,
| 0 КАК СуммаСкидки,
| Товары.Сумма КАК СуммаБезСкидки,
|
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
|
| ВЫБОР КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1 ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Товары.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
|
| ЛОЖЬ КАК ЭтоВозвратнаяТара
|
|ИЗ
| Документ.ЗаказПереработчику2_5 КАК Заказ
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.ЗаказПереработчику2_5.ПобочныеИзделия КАК Товары
| ПО
| Заказ.Ссылка В(&МассивОбъектов)
| И Заказ.Ссылка = Товары.Ссылка
| И Товары.Отменено = ЛОЖЬ
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураПредставления
| ПО (Товары.Номенклатура = НоменклатураПредставления.Ссылка
| И НоменклатураПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыПредставления
| ПО (Товары.Характеристика = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
|
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ПредставлениеДокумента", НСтр("ru = 'Заказ переработчику на услуги по выпуску продукции'"));
Запрос.УстановитьПараметр("ПредставлениеВОшибке", НСтр("ru = 'заказа переработчику'"));
Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка);
Запрос.УстановитьПараметр("ЭтоОсновнойЯзыкСистемы", КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка() Или КодЯзыка = Неопределено);
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[0]);
СтруктураДанныхДляПечати.Вставить("РезультатПоЭтапамОплаты", ПакетРезультатовЗапроса[1]);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", ПакетРезультатовЗапроса[2]);
Возврат СтруктураДанныхДляПечати;
КонецФункции
Процедура ЗаполнитьСтруктуруПолучателейПечатныхФорм(СтруктураДанныхОбъектаПечати) Экспорт
СтруктураДанныхОбъектаПечати.ОсновнойПолучатель = "Партнер";
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Партнер");
Если ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов") Тогда
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Контрагент");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ГруппыЗатрат
Процедура ОбновитьГруппуЗатрат(ГруппыЗатрат, ОписаниеГруппыЗатрат)
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат", ОписаниеГруппыЗатрат.НомерГруппыЗатрат);
НайденныеСтроки = ГруппыЗатрат.НайтиСтроки(СтруктураОтбора);
Если Не НайденныеСтроки.Количество() = 0 Тогда
ЗаполнитьЗначенияСвойств(НайденныеСтроки[0], ОписаниеГруппыЗатрат);
КонецЕсли;
КонецПроцедуры
Функция ВсеСтрокиИзделийГруппыЗатратОтменены(Объект, ОписаниеГруппыЗатрат)
СтруктураОтбора = Новый Структура("НомерГруппыЗатрат, Отменено", ОписаниеГруппыЗатрат.НомерГруппыЗатрат, Ложь);
Если ТипЗнч(Объект) = Тип("Структура") Тогда
Возврат Объект[ОписаниеГруппыЗатрат.ИмяТаблицыИзделий].Выгрузить().НайтиСтроки(СтруктураОтбора).Количество() = 0;
Иначе
Возврат Объект[ОписаниеГруппыЗатрат.ИмяТаблицыИзделий].НайтиСтроки(СтруктураОтбора).Количество() = 0;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область Прочее
Функция ТекстЗапросаВТТоварыРаспоряженияПоступлениеЗаказ()
ТекстЗапроса = "
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаказыПоставщикам.ДокументПоступления КАК Ссылка,
| ЗаказыПоставщикам.Номенклатура КАК Номенклатура,
| ЗаказыПоставщикам.Характеристика КАК Характеристика,
| ЗаказыПоставщикам.Склад КАК Склад,
| ЗаказыПоставщикам.КОформлениюНакладныхПоРаспоряжениюПриход КАК Количество,
| 0 КАК СуммаСНДС
|ПОМЕСТИТЬ ВТТоварыРаспоряженияПоступление
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Обороты(,,, ДокументПоступления В
| (ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК ДокументСсылка
| ИЗ
| ВтДокументы КАК ВтДокументы)) КАК ЗаказыПоставщикам
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| Номенклатура,
| Характеристика,
| Склад
|;";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаОтмененоПоступление()
ТекстЗапроса = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВтДокументы.ДокументСсылка КАК Документ,
| ДокументТовары.НомерСтроки КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.КоличествоУпаковок КАК Количество,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| ДокументТовары.ПричинаОтмены КАК ПричинаОтмены,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказПереработчику2_5.ВыходныеИзделия КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка
|ГДЕ
| ДокументТовары.Отменено
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК Документ,
| ДокументТовары.НомерСтроки КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.КоличествоУпаковок КАК Количество,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| ДокументТовары.ПричинаОтмены КАК ПричинаОтмены,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказПереработчику2_5.ПобочныеИзделия КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка
|ГДЕ
| ДокументТовары.Отменено
|
|ИТОГИ ПО
| Документ
|;";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаПродукцияКОформлениюВОтчетеПереработчику()
ТекстЗапроса =
"ВЫБРАТЬ
| ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику КАК Документ,
| ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.Представление КАК НоменклатураПредставление,
| ЗаказыПоставщикамОстаткиИОбороты.Характеристика.Представление КАК ХарактеристикаПредставление,
| """" КАК СерияПредставление,
| ЗаказыПоставщикамОстаткиИОбороты.КОформлениюПриход КАК КОформлению,
| ЗаказыПоставщикамОстаткиИОбороты.КОформлениюКонечныйОстаток КАК Оформить,
| ЗаказыПоставщикамОстаткиИОбороты.КОформлениюРасход КАК Оформлено
|ИЗ
| РегистрНакопления.ЗаказыПоставщикам.ОстаткиИОбороты(,,,, ЗаказПоставщику В
| (ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК ДокументСсылка
| ИЗ
| ВтДокументы КАК ВтДокументы)
| И Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)) КАК ЗаказыПоставщикамОстаткиИОбороты
|ИТОГИ ПО
| Документ
|;
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТаблицаСырьеУПереработчика()
ТекстЗапроса =
"ВЫБРАТЬ
| РаспоряженияОбороты.Распоряжение КАК Документ,
| РаспоряженияОбороты.Номенклатура КАК Номенклатура,
| РаспоряженияОбороты.Характеристика КАК Характеристика,
| РаспоряженияОбороты.Номенклатура.ЕдиницаИзмерения КАК Упаковка,
| РаспоряженияОбороты.Номенклатура.Представление КАК НоменклатураПредставление,
| РаспоряженияОбороты.Характеристика.Представление КАК ХарактеристикаПредставление,
| РаспоряженияОбороты.КОформлениюКоличествоОборот КАК КПередаче,
| (РаспоряженияОбороты.КОформлениюКоличествоОборот -
| РаспоряженияОбороты.ОформленоКоличествоОборот) КАК Передать,
| РаспоряженияОбороты.ОформленоКоличествоОборот КАК Передано
|ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая КАК РаспоряженияОбороты
|ГДЕ
| РаспоряженияОбороты.КОформлениюКоличествоОборот <> 0
| ИЛИ (РаспоряженияОбороты.КОформлениюКоличествоОборот -
| РаспоряженияОбороты.ОформленоКоличествоОборот) <> 0
| ИЛИ РаспоряженияОбороты.ОформленоКоличествоОборот <> 0
|ИТОГИ
|ПО
| Документ
|;
|
|";
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В
| (ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК ДокументСсылка
| ИЗ
| ВтДокументы КАК ВтДокументы)";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика";
ПараметрыФормированияТаблицы.Показатели = "КОформлению, Оформлено";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
РаспоряженияНаОтгрузкуОборотыРазвернутая =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая",
РаспоряженияНаОтгрузкуОборотыРазвернутая);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаСостояниеОбеспечения()
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВтДокументы.ДокументСсылка КАК Документ,
| ДокументТовары.НомерСтроки КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.Серия КАК Серия,
| ДокументТовары.КоличествоУпаковок КАК Количество,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| ДокументТовары.ДатаОтгрузки КАК ДатаОтгрузки,
| ДокументТовары.ВариантОбеспечения КАК Действие,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ДокументТовары
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка
|
|ГДЕ
| (ДокументТовары.ВариантОбеспечения В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Кобеспечению),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.РезервироватьПоМереПоступления),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада))
| ИЛИ ВЫБОР КОГДА ДокументТовары.Ссылка.Статус В (&МассивСтатусовБезОтгрузки) ТОГДА
| ДокументТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| КОНЕЦ)
| И НЕ ДокументТовары.Отменено
|
|ИТОГИ ПО
| Документ;
|";
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗаполнитьПоНормативам(ТаблицаДокумента, Нормативы, НомерГруппыЗатрат, СтруктураДействий, ПараметрыДатыОперации = Неопределено) Экспорт
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого ТекСтрока Из Нормативы Цикл
НоваяСтрока = ТаблицаДокумента.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрока);
НоваяСтрока.НомерГруппыЗатрат = НомерГруппыЗатрат;
Если Не ПараметрыДатыОперации = Неопределено Тогда
НоваяСтрока[ПараметрыДатыОперации.ИмяПоля]= ПараметрыДатыОперации.Дата;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(НоваяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТаблицаДокумента,
КэшированныеЗначения);
КонецПроцедуры
Процедура ИсключитьПобочныеИзделияИзВыходных(Объект, СписокПродукции, ДанныеСпецификаций)
СоответствиеНазначений = Новый Соответствие;
Если (Объект.ОбособлениеМатериаловПоНазначениюПродукции
Или Ложь)
И (Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукцииИНазначениям
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациямИНазначениям) Тогда
Для Каждого Строка Из Объект.ВыходныеИзделия Цикл
Если ЗначениеЗаполнено(Строка.Назначение) Тогда
СоответствиеНазначений.Вставить(Строка.НомерГруппыЗатрат, Строка.Назначение);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Отборы = Новый Структура("НомерГруппыЗатрат, Номенклатура, Характеристика");
Для Каждого ТекСтруктура Из ДанныеСпецификаций Цикл
Если ТекСтруктура = Неопределено Тогда
Продолжить;
КонецЕсли;
Отборы.НомерГруппыЗатрат = ТекСтруктура.НомерГруппыЗатрат;
ВозвратныеОтходы = ТекСтруктура.ВозвратныеОтходы.СкопироватьКолонки();
ВозвратныеОтходы.Колонки.Добавить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
Для Каждого ТекущийОтход Из ТекСтруктура.ВозвратныеОтходы Цикл
ЗаполнитьЗначенияСвойств(Отборы, ТекущийОтход, "Номенклатура, Характеристика");
СтрокиПродукции = СписокПродукции.НайтиСтроки(Отборы);
Для Каждого ТекущаяПродукция Из СтрокиПродукции Цикл
Если ТекущаяПродукция.Количество = 0 Тогда
Продолжить;
КонецЕсли;
Количество = Мин(ТекущаяПродукция.Количество, ТекущийОтход.Количество);
НоваяСтрока = ВозвратныеОтходы.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекущийОтход);
НоваяСтрока.Назначение = ТекущаяПродукция.Назначение;
НоваяСтрока.Количество = Количество;
НоваяСтрока.КоличествоУпаковок =
НоваяСтрока.Количество
* НоваяСтрока.ДанныеУпаковки.Знаменатель
/ НоваяСтрока.ДанныеУпаковки.Числитель;
ТекущаяПродукция.Количество = ТекущаяПродукция.Количество - Количество;
ТекущийОтход.Количество = ТекущийОтход.Количество - Количество;
КонецЦикла;
Если Не ТекущийОтход.Количество = 0 Тогда
НоваяСтрока = ВозвратныеОтходы.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекущийОтход);
НоваяСтрока.Назначение = СоответствиеНазначений.Получить(ТекСтруктура.НомерГруппыЗатрат);
НоваяСтрока.КоличествоУпаковок =
НоваяСтрока.Количество
* НоваяСтрока.ДанныеУпаковки.Знаменатель
/ НоваяСтрока.ДанныеУпаковки.Числитель;
КонецЕсли;
КонецЦикла;
ТекСтруктура.ВозвратныеОтходы = ВозвратныеОтходы;
КонецЦикла;
Для Каждого СтрокаТаблицы Из СписокПродукции.НайтиСтроки(Новый Структура("Количество", 0)) Цикл
СписокПродукции.Удалить(СтрокаТаблицы);
КонецЦикла;
КонецПроцедуры
Процедура УстановитьУсловноеОформлениеСписка(Список) Экспорт
СписокУсловноеОформление = Список.КомпоновщикНастроек.Настройки.УсловноеОформление;
СписокУсловноеОформление.Элементы.Очистить();
Элемент = СписокУсловноеОформление.Элементы.Добавить();
Элемент.Представление = НСтр("ru = 'Документ имеет высокий приоритет'");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Приоритет");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Справочники.Приоритеты.ПолучитьВысшийПриоритет();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаУдаления");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ВысокийПриоритетДокумента);
Элемент = СписокУсловноеОформление.Элементы.Добавить();
Элемент.Представление = НСтр("ru = 'Документ имеет низкий приоритет'");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Приоритет");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Справочники.Приоритеты.ПолучитьНизшийПриоритет();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаУдаления");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.НизкийПриоритетДокумента);
КонецПроцедуры
Функция ПолноеИмяОбъекта()
Возврат "Документ.ЗаказПереработчику2_5";
КонецФункции
Функция СтруктураСостоянияРасчетов()
СтруктураСостоянияРасчетов = Новый Структура;
СтруктураСостоянияРасчетов.Вставить("Состояние", Перечисления.СостоянияЗаказовПереработчикам.ПустаяСсылка());
СтруктураСостоянияРасчетов.Вставить("СостояниеПросрочено", Ложь);
СтруктураСостоянияРасчетов.Вставить("СуммаОплаты", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентОплаты", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаПоступления", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентПоступления", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаПросроченнойОплаты", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаДолга", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентДолга", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаКОплате", 0);
Возврат СтруктураСостоянияРасчетов
КонецФункции
Функция СуммыПоЗаказам(СсылкаОбъект, ЗначенияРеквизитов = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| &ДатаСогласования КАК ДатаСогласования,
| Услуги.ДатаВыполнения КАК ДатаОтгрузки,
| Услуги.СуммаСНДС КАК СуммаПлатежа
|ПОМЕСТИТЬ ВтУслуги
|ИЗ
| &ТаблицаЗначений КАК Услуги
|ГДЕ
| НЕ Услуги.Отменено
| И &УсловиеСсылка
|;
|
|
|ВЫБРАТЬ
| НЕОПРЕДЕЛЕНО КАК Заказ,
| &Дата КАК Дата,
| Услуги.ДатаСогласования КАК ДатаСогласования,
| Услуги.ДатаОтгрузки КАК ДатаОтгрузки,
| ЛОЖЬ КАК СверхЗаказа,
| СУММА(Услуги.СуммаПлатежа) КАК СуммаПлатежа,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК СуммаЗалогаЗаТару,
| 0 КАК СуммаВзаиморасчетовПоТаре
|ИЗ
| ВтУслуги КАК Услуги
|
|СГРУППИРОВАТЬ ПО
| Услуги.ДатаСогласования,
| Услуги.ДатаОтгрузки
|";
Если ЗначенияРеквизитов = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТаблицаЗначений", "Документ.ЗаказПереработчику2_5.Услуги");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Дата", "Услуги.Ссылка.Дата");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ДатаСогласования", "Услуги.Ссылка.ДатаСогласования");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеСсылка", "Услуги.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка",СсылкаОбъект);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеСсылка", "ИСТИНА");
Для Каждого КлючЗначение Из ЗначенияРеквизитов Цикл
Запрос.УстановитьПараметр(КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;
КонецЕсли;
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#КонецОбласти
#Область КорректировкаЗаказа
Функция ДопустимыеОтклоненияМерныхТоваров(СписокРаспоряжений, ТипДвиженияЗапасов) Экспорт
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров = Константы.ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров.Получить();
Если Не ЗначениеЗаполнено(СписокРаспоряжений) Или ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров = 0 Тогда
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Заказ");
Таблица.Колонки.Добавить("Номенклатура");
Таблица.Колонки.Добавить("Характеристика");
Таблица.Колонки.Добавить("Склад");
Если ТипДвиженияЗапасов = Перечисления.ТипыДвиженияЗапасов.Отгрузка Тогда
Таблица.Колонки.Добавить("Серия");
КонецЕсли;
Таблица.Колонки.Добавить("ДопустимоеОтклонение");
Возврат Таблица;
КонецЕсли;
Если ТипЗнч(СписокРаспоряжений) = Тип("ДокументСсылка.ЗаказПереработчику2_5") Тогда
МассивРаспоряжений = Новый Массив();
МассивРаспоряжений.Добавить(СписокРаспоряжений);
Иначе
МассивРаспоряжений = СписокРаспоряжений;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивРаспоряжений", МассивРаспоряжений);
Если ТипДвиженияЗапасов = Перечисления.ТипыДвиженияЗапасов.Поступление Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыКПоступлению.ЗаказПоставщику КАК Заказ,
| ТоварыКПоступлению.Номенклатура КАК Номенклатура,
| ТоварыКПоступлению.Характеристика КАК Характеристика,
| ТоварыКПоступлению.Склад КАК Склад,
| СУММА(ТоварыКПоступлению.КОформлениюПриход
| * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК ДопустимоеОтклонение
|ИЗ
| РегистрНакопления.ЗаказыПоставщикам.Обороты(&НачПериод, &КонПериод,
| , ЗаказПоставщику В (&МассивРаспоряжений)) КАК ТоварыКПоступлению
|ГДЕ
| ТоварыКПоступлению.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)
|СГРУППИРОВАТЬ ПО
| ТоварыКПоступлению.Номенклатура,
| ТоварыКПоступлению.Характеристика,
| ТоварыКПоступлению.ЗаказПоставщику,
| ТоварыКПоступлению.Склад";
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ЗаказыПоставщикам",
"ЗаказПоставщику В (&МассивРаспоряжений)", Запрос.Параметры);
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыКОтгрузке.Распоряжение КАК Заказ,
| ТоварыКОтгрузке.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузке.Характеристика КАК Характеристика,
| ТоварыКОтгрузке.Серия КАК Серия,
| ТоварыКОтгрузке.Склад КАК Склад,
| СУММА(ТоварыКОтгрузке.КОформлениюКоличествоОборот * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК
| ДопустимоеОтклонение
|ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая КАК ТоварыКОтгрузке
|СГРУППИРОВАТЬ ПО
| ТоварыКОтгрузке.Распоряжение,
| ТоварыКОтгрузке.Номенклатура,
| ТоварыКОтгрузке.Характеристика,
| ТоварыКОтгрузке.Серия,
| ТоварыКОтгрузке.Склад";
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериод";
ПараметрыФормированияТаблицы.КонецПериода = "&КонПериод";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В (&МассивРаспоряжений)
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад, Серия";
ПараметрыФормированияТаблицы.Показатели = "КОформлению";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
РаспоряженияНаОтгрузкуОборотыРазвернутая =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая",
РаспоряженияНаОтгрузкуОборотыРазвернутая);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("РаспоряженияНаОтгрузкуИВозврат",
"Распоряжение В (&МассивРаспоряжений)", Запрос.Параметры);
КонецЕсли;
Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
Запрос.УстановитьПараметр("НачПериод", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериод", ГраницыОборотов.МаксимальнаяДата);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#КонецОбласти
#Область ФормированиеГиперссылкиВЖурналеДокументыПродажи
Функция СформироватьГиперссылкуСмТакжеВРаботе(Параметры) Экспорт
Если Не (ПравоДоступа("Изменение", Метаданные.Документы.ЗаказПереработчику2_5)
И ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне2_5")) Тогда
Возврат Неопределено;
КонецЕсли;
ТекстГиперссылки = НСтр("ru = 'Заказы переработчикам'");
Возврат Новый ФорматированнаяСтрока(ТекстГиперссылки,,,, ИмяФормыРабочееМесто());
КонецФункции
Функция ИмяФормыРабочееМесто() Экспорт
Возврат "Документ.ЗаказПереработчику2_5.Форма.РабочееМесто";
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли