#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Организация", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Менеджер", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор, Распоряжение, Менеджер";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Подразделение", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Организация";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Договор, Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"БанковскийСчет", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор, Организация";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор, Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Касса", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"ВернутьМногооборотнуюТару", Параметры);
КонецПроцедуры
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("Взаиморасчеты");
МеханизмыДокумента.Добавить("Закупки");
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("ПередачаВПереработку");
МеханизмыДокумента.Добавить("Продажи");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СуммыДокументовВВалютахУчета");
МеханизмыДокумента.Добавить("АдресныйСклад");
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ЗаказПереработчику") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаЗаказыПоставщикам(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаУслугиПереработчиковКОформлению(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры);
ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
#Область Заполнение
Процедура ЗаполнитьУсловияЗакупок(Объект, Знач УсловияЗакупок) Экспорт
Если УсловияЗакупок = Неопределено Тогда
Возврат;
КонецЕсли;
Объект.Валюта = УсловияЗакупок.Валюта;
Объект.НаправлениеДеятельности = УсловияЗакупок.НаправлениеДеятельности;
Если ЗначениеЗаполнено(УсловияЗакупок.ФормаОплаты) Тогда
Объект.ФормаОплаты = УсловияЗакупок.ФормаОплаты;
КонецЕсли;
Если ЗначениеЗаполнено(УсловияЗакупок.Организация) И УсловияЗакупок.Организация <> Объект.Организация Тогда
Объект.Организация = УсловияЗакупок.Организация;
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Объект.Организация;
СтруктураПараметров.ФормаОплаты = Объект.ФормаОплаты;
СтруктураПараметров.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
Объект.БанковскийСчет = ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияКассыОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Объект.Организация;
СтруктураПараметров.ФормаОплаты = Объект.ФормаОплаты;
СтруктураПараметров.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
Объект.Касса = ЗначениеНастроекПовтИсп.ПолучитьКассуОрганизацииПоУмолчанию(СтруктураПараметров);
КонецЕсли;
Если ЗначениеЗаполнено(УсловияЗакупок.Контрагент) Тогда
Объект.Контрагент = УсловияЗакупок.Контрагент;
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
Если УсловияЗакупок.ИспользуютсяДоговорыКонтрагентов <> Неопределено И УсловияЗакупок.ИспользуютсяДоговорыКонтрагентов Тогда
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.Валюта;
Объект.Договор =
ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(
ПараметрыОбъектаССоглашением(Объект),
Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика,
ДопПараметры);
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчет);
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьУчетРасчетовСПоставщикамиПоНаправлениямДеятельности") Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности,, Объект.Договор);
КонецЕсли;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(УсловияЗакупок.ИспользуютсяДоговорыКонтрагентов)
ИЛИ НЕ УсловияЗакупок.ИспользуютсяДоговорыКонтрагентов Тогда
Объект.ОплатаВВалюте = УсловияЗакупок.ОплатаВВалюте;
Иначе
Объект.ОплатаВВалюте = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ОплатаВВалюте");
КонецЕсли;
Если ЗначениеЗаполнено(УсловияЗакупок.ГруппаФинансовогоУчета) Тогда
Объект.ГруппаФинансовогоУчета = УсловияЗакупок.ГруппаФинансовогоУчета;
КонецЕсли;
Если ЗначениеЗаполнено(УсловияЗакупок.СрокПоставки) Тогда
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
Объект.ЖелаемаяДатаПоступления =
ОбщегоНазначенияУТКлиентСервер.РассчитатьДатуОкончанияПериода(
ДатаДокумента,
Перечисления.Периодичность.День,
УсловияЗакупок.СрокПоставки) + 1;
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьУсловияЗакупокПоУмолчанию(Объект) Экспорт
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
ПараметрыОтбора = Новый Структура("УчитыватьГруппыСкладов", Истина);
УсловияЗакупокПоУмолчанию = ЗакупкиСервер.ПолучитьУсловияЗакупокПоУмолчанию(Объект.Партнер, ПараметрыОтбора);
Если УсловияЗакупокПоУмолчанию <> Неопределено Тогда
ЗаполнитьУсловияЗакупок(Объект, УсловияЗакупокПоУмолчанию);
Иначе
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
КонецЕсли;
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтактноеЛицоПартнераПоУмолчанию(Объект.Партнер, Объект.КонтактноеЛицо);
КонецПроцедуры
Функция ПараметрыОбъектаССоглашением(Объект, ИменаРеквизитов = "")
Если ПустаяСтрока(ИменаРеквизитов) Тогда
ИменаРеквизитов = "Партнер, Договор, Контрагент, Организация, ПорядокРасчетов";
КонецЕсли;
ПараметрыОбъекта = Новый Структура(ИменаРеквизитов);
ЗаполнитьЗначенияСвойств(ПараметрыОбъекта, Объект);
ПараметрыОбъекта.Вставить("Соглашение", Справочники.СоглашенияСПоставщиками.ПустаяСсылка());
Возврат ПараметрыОбъекта;
КонецФункции
Функция ДопустимыеСтатусыВводаНаОсновании(ИмяДокумента) Экспорт
МассивДопустимыхСтатусов = Новый Массив;
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовПереработчикам.КИсполнению);
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовПереработчикам.Закрыт);
Возврат МассивДопустимыхСтатусов;
КонецФункции
Процедура ЗаполнитьВозвратныеОтходыИМатериалыПоСпецификации(СписокПродукции, Объект) Экспорт
СписокНоменклатуры = Справочники.РесурсныеСпецификации.СписокНоменклатуры();
СписокНоменклатуры.Колонки.Добавить("НомерГруппыЗатрат");
Для каждого ТекущиеДанные Из СписокПродукции Цикл
Если НЕ ЗначениеЗаполнено(ТекущиеДанные.Спецификация) ИЛИ ТекущиеДанные.Количество = 0 Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = СписокНоменклатуры.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекущиеДанные,
"Номенклатура,Характеристика,Спецификация,Количество,НомерГруппыЗатрат");
НоваяСтрока.НачалоПроизводства = Объект.Дата;
НоваяСтрока.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЦикла;
ПараметрыВыборки = Справочники.РесурсныеСпецификации.ПараметрыВыборкиДанных(
,
,
ОбеспечениеПроизводства.ВариантЗаполненияОбеспеченияПоВерсииПроизводства());
ПараметрыВыборки.ПолучитьСведенияАвтовыбора = Ложь;
ПараметрыВыборки.ПолучитьПредставления = Ложь;
ПараметрыВыборки.ДоступныРаботы = Ложь;
ДанныеСпецификаций = Справочники.РесурсныеСпецификации.ДанныеСпецификацииПоСпискуНоменклатуры(
СписокНоменклатуры,
ПараметрыВыборки,
Истина,
"НомерГруппыЗатрат");
ИмяПоляГруппаЗатрат = ПереработкаНаСторонеКлиентСервер.ИмяПоляГруппаЗатратВЗаказеПереработчику(Объект);
ТаблицаВозвратныеОтходы = Объект.ВозвратныеОтходы.Выгрузить();
ТаблицаМатериалы = Объект.Материалы.Выгрузить();
ОбрабатываемыеСтроки = Новый Массив;
Для каждого СтруктураДанных Из ДанныеСпецификаций Цикл
Если СтруктураДанных = Неопределено Тогда
Продолжить;
КонецЕсли;
Справочники.РесурсныеСпецификации.ИсключитьПроизводимыеНаЭтапеПолуфабрикаты(СтруктураДанных.МатериалыИУслуги, СтруктураДанных.ВозвратныеОтходы);
ЗаполнитьПоНормативам(
ТаблицаВозвратныеОтходы,
СтруктураДанных.ВозвратныеОтходы,
1,
СтруктураДанных.НомерГруппыЗатрат,
ИмяПоляГруппаЗатрат);
ЗаполнитьПоНормативам(
ТаблицаМатериалы,
СтруктураДанных.МатериалыИУслуги,
1,
СтруктураДанных.НомерГруппыЗатрат,
ИмяПоляГруппаЗатрат);
Если НЕ СтруктураДанных.МногоэтапныйПроизводственныйПроцесс И СтруктураДанных.Этапы[0].ПроизводствоНаСтороне Тогда
ДаннныеЭтапа = СтруктураДанных.Этапы[0];
Номенклатура = Неопределено;
Характеристика = Неопределено;
СтатьяКалькуляции = Неопределено;
Если Не ДаннныеЭтапа.УслугиПереработчика.Количество() = 0 Тогда
Номенклатура = ДаннныеЭтапа.УслугиПереработчика[0].Номенклатура;
Характеристика = ДаннныеЭтапа.УслугиПереработчика[0].Характеристика;
СтатьяКалькуляции = ДаннныеЭтапа.УслугиПереработчика[0].СтатьяКалькуляции;
КонецЕсли;
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки Тогда
Объект.Номенклатура = Номенклатура;
Объект.Характеристика = Характеристика;
Объект.СтатьяКалькуляции = СтатьяКалькуляции;
Иначе
СтруктураПоиска = Новый Структура("НомерГруппыЗатрат", СтруктураДанных.НомерГруппыЗатрат);
СписокСтрок = Объект.Услуги.НайтиСтроки(СтруктураПоиска);
Если СписокСтрок.Количество() <> 0 Тогда
СтрокаУслуга = СписокСтрок[0];
СтрокаУслуга.Номенклатура = Номенклатура;
СтрокаУслуга.Характеристика = Характеристика;
СтрокаУслуга.СтатьяКалькуляции = СтатьяКалькуляции;
Если ЗначениеЗаполнено(СтрокаУслуга.Номенклатура) Тогда
ОбрабатываемыеСтроки.Добавить(СтрокаУслуга);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураПересчетаСуммы = Новый Структура("ЦенаВключаетНДС", Ложь);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураПараметровДействия = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураПараметровДействия.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", СтруктураПараметровДействия);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Услуги,
КэшированныеЗначения);
КолонкиСуммированияВозвратныеОтходы = КолонкиСуммирования(Объект , "ВозвратныеОтходы");
КолонкиСуммированияМатериалы = КолонкиСуммирования(Объект , "Материалы");
КолонкиГруппировокВозвратныеОтходы = КолонкиГруппировок(ТаблицаВозвратныеОтходы.Колонки , КолонкиСуммированияВозвратныеОтходы);
КолонкиГруппировокМатериалы = КолонкиГруппировок(ТаблицаМатериалы.Колонки , КолонкиСуммированияМатериалы);
ПроизводствоСервер.СвернутьТаблицуЗначений(
ТаблицаВозвратныеОтходы, КолонкиГруппировокВозвратныеОтходы, КолонкиСуммированияВозвратныеОтходы, Истина);
ПроизводствоСервер.СвернутьТаблицуЗначений(
ТаблицаМатериалы, КолонкиГруппировокМатериалы, КолонкиСуммированияМатериалы, Истина);
Объект.ВозвратныеОтходы.Загрузить(ТаблицаВозвратныеОтходы);
Объект.Материалы.Загрузить(ТаблицаМатериалы);
КонецПроцедуры
#КонецОбласти
#Область Статус
Функция СформироватьЗапросПроверкиПриСменеСтатуса(МассивДокументов, НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаказовПереработчикам[НовыйСтатус];
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР КОГДА ТаблицаДокументов.Статус = &Статус ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ВЫБОР КОГДА НЕ &ИспользоватьСтатусы
| И НЕ ТаблицаДокументов.ПереработкаПоЗаказу
| ТОГДА ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЗапрещеноМенятьСтатус,
| ИСТИНА КАК ЗаписьПроведением
|ИЗ
| Документ.ЗаказПереработчику КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)
|";
ИспользоватьСтатусы = ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПереработчикам");
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Статус", ЗначениеНовогоСтатуса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Запрос.УстановитьПараметр("ИспользоватьСтатусы", ИспользоватьСтатусы);
Возврат Запрос;
КонецФункции
Функция СформироватьЗапросПроверкиПриАвтоматическомРасчетеСтатуса(МассивДокументов, ДополнительныеПараметры) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ВЫБОР КОГДА НЕ &ИспользоватьСтатусы
| И НЕ ТаблицаДокументов.ПереработкаПоЗаказу
| ТОГДА ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЗапрещеноМенятьСтатус,
| ИСТИНА КАК ЗаписьПроведением
|ИЗ
| Документ.ЗаказПереработчику КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)
|";
ИспользоватьСтатусы = ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПереработчикам");
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Запрос.УстановитьПараметр("ИспользоватьСтатусы", ИспользоватьСтатусы);
Возврат Запрос;
КонецФункции
Функция ПроверкаПередСменойСтатуса(ВыборкаПроверки, НовыйСтатус, ДополнительныеПараметры) Экспорт
Отказ = Ложь;
Если ВыборкаПроверки.ЗапрещеноМенятьСтатус Тогда
ТекстОшибки = НСтр("ru = 'У документа %Документ% статус ""%Статус%"" не установлен, т.к. заказ переработчику создан не на основании заказа на производство.'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Документ%", ВыборкаПроверки.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Статус%", ВыборкаПроверки.ПредставлениеНовогоСтатуса);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ВыборкаПроверки.Ссылка);
Отказ = Истина;
КонецЕсли;
Возврат Не Отказ;
КонецФункции
#КонецОбласти
#Область Серии
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
Возврат "Дата";
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыУказанияСерий.ПолноеИмяОбъекта = ПолноеИмяОбъекта();
ПараметрыУказанияСерий.ИмяТЧТовары = "Материалы";
ПараметрыУказанияСерий.ИмяТЧСерии = "Материалы";
ПараметрыУказанияСерий.ИменаПолейДополнительные.Добавить("Склад");
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыСклад", Новый Структура());
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПолучитьФункциональнуюОпцию("УчитыватьСебестоимостьПоСериямСклад", Новый Структура());
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаКлиенту);
ПараметрыУказанияСерий.ЭтоЗаказ = Истина;
ПараметрыУказанияСерий.ПланированиеОтгрузки = Истина;
ПараметрыУказанияСерий.РегистрироватьСерии = Ложь;
ПараметрыУказанияСерий.Дата = Объект.Дата;
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Серия,
| Товары.Отменено,
| Товары.ВариантОбеспечения,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА Товары.Отменено
| ИЛИ ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ИЛИ НЕ Товары.ВариантОбеспечения В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| КОГДА Товары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ТОГДА 15
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| КОГДА Товары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ТОГДА 11
| ИНАЧЕ 9
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ПолитикиУчетаСерий.Склад = Склады.Ссылка
| ПО (ПолитикиУчетаСерий.Склад = Товары.Склад)
| И ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область Прочее
Функция ПредставлениеОбъектаНаОсновномЯзыке() Экспорт
КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
ПредставлениеОбъекта = НСтр(
"ru = 'Заказ переработчику (2.4)'",
КодОсновногоЯзыка);
Возврат ПредставлениеОбъекта;
КонецФункции
Функция ТекстЗапросаРеквизитыДоставки() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Шапка.Номер КАК Номер,
| Шапка.Проведен КАК Проведен,
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Шапка.Партнер КАК ПолучательОтправитель,
| Шапка.ПеревозчикПартнер КАК Перевозчик,
| ВЫБОР КОГДА Шапка.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| И НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.Самовывоз)
| ИНАЧЕ Шапка.СпособДоставки
| КОНЕЦ КАК СпособДоставки,
| Шапка.ЗонаДоставки КАК Зона,
| Шапка.АдресДоставки КАК Адрес,
| Шапка.АдресДоставкиЗначенияПолей
| КАК АдресЗначенияПолей,
| Шапка.ВремяДоставкиС КАК ВремяС,
| Шапка.ВремяДоставкиПо КАК ВремяПо,
| Шапка.ДополнительнаяИнформацияПоДоставке
| КАК ДополнительнаяИнформация,
| Т.Склад КАК Склад,
| Т.ДоставитьПолностью КАК ДоставитьПолностью,
| Шапка.ОсобыеУсловияПеревозки КАК ОсобыеУсловияПеревозки,
| Шапка.ОсобыеУсловияПеревозкиОписание КАК ОсобыеУсловияПеревозкиОписание,
| ЛОЖЬ КАК РазбиватьРасходныеОрдераПоРаспоряжениям
|
|ИЗ
| (ВЫБРАТЬ
| Т.Ссылка КАК Ссылка,
| Т.Склад КАК Склад,
| МИНИМУМ(ВЫБОР
| КОГДА Т.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ДоставитьПолностью
| ИЗ
| Документ.ЗаказПереработчику.Материалы КАК Т
| ГДЕ
| Т.Ссылка В (&Ссылки)
|
| СГРУППИРОВАТЬ ПО
| Т.Ссылка,
| Т.Склад
|
| ИМЕЮЩИЕ
| МАКСИМУМ(ВЫБОР
| КОГДА Т.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| ТОГДА ИСТИНА
| КОНЕЦ) = ИСТИНА
| ) КАК Т
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику КАК Шапка
| ПО (Шапка.Ссылка = Т.Ссылка)";
Возврат ТекстЗапроса;
КонецФункции
Функция РеквизитыДокумента(ДокументСсылка) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокумента.СуммаДокумента КАК СуммаВзаиморасчетов
|
|ИЗ
| Документ.ЗаказПереработчику КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &ДокументСсылка
|");
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Дата = Выборка.Дата;
Организация = Выборка.Организация;
Партнер = Выборка.Партнер;
Контрагент = Выборка.Контрагент;
Договор = Выборка.Договор;
ПорядокРасчетов = Выборка.ПорядокРасчетов;
Валюта = Выборка.Валюта;
ВалютаВзаиморасчетов = Выборка.ВалютаВзаиморасчетов;
ХозяйственнаяОперация = ?(ЗначениеЗаполнено(Выборка.ХозяйственнаяОперация),
Выборка.ХозяйственнаяОперация,
Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика);
СуммаДокумента = Выборка.СуммаДокумента;
СуммаВзаиморасчетов = Выборка.СуммаВзаиморасчетов;
Иначе
Дата = Дата(1,1,1);
Организация = Справочники.Организации.ПустаяСсылка();
Партнер = Справочники.Партнеры.ПустаяСсылка();
Контрагент = Справочники.Контрагенты.ПустаяСсылка();
Договор = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПустаяСсылка();
Валюта = Справочники.Валюты.ПустаяСсылка();
ВалютаВзаиморасчетов = Справочники.Валюты.ПустаяСсылка();
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика;
СуммаДокумента = 0;
СуммаВзаиморасчетов = 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 ТОГДА
| ВЫРАЗИТЬ (ЕСТЬNULL(ВтДанныеПоРасчетамСПоставщиками.ОплатаФакт, 0) КАК ЧИСЛО(31,2))
| ИНАЧЕ
| 0
| КОНЕЦ КАК СуммаОплаты,
| ВЫБОР КОГДА Заказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам)
| И Заказ.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПриемНаКомиссию)
| И Заказ.Проведен
| И Заказ.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован)
| И Заказ.СуммаДокумента > 0 ТОГДА
| ВЫРАЗИТЬ (ЕСТЬNULL(РасчетыСПоставщикамиОстатки.КОплатеПриход, 0) * 100 / Заказ.СуммаДокумента КАК ЧИСЛО(15, 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
|КОНЕЦ КАК СуммаКОплате
|ИЗ
| Документ.ЗаказПереработчику КАК Заказ
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.РасчетыСПоставщиками.ОстаткиИОбороты(,,,,ОбъектРасчетов = &ОбъектРасчетов) КАК РасчетыСПоставщикамиОстатки
| ПО
| ИСТИНА
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.РасчетыСПоставщиками.Остатки(КОНЕЦПЕРИОДА(&ТекущаяДата, ДЕНЬ), ОбъектРасчетов = &ОбъектРасчетов) КАК РасчетыСПоставщикамиОстаткиНаДатуАктуальности
| ПО
| ИСТИНА
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДанныеПоРасчетамСПоставщиками КАК ВтДанныеПоРасчетамСПоставщиками
| ПО Заказ.ОбъектРасчетов = ВтДанныеПоРасчетамСПоставщиками.ОбъектРасчетов
|
|ГДЕ
| Заказ.Ссылка = &ЗаказПереработчику
|
|");
ОбъектРасчетов = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗаказПереработчику, "ОбъектРасчетов");
Запрос.УстановитьПараметр("ЗаказПереработчику", ЗаказПереработчику);
Запрос.УстановитьПараметр("ОбъектРасчетов", ОбъектРасчетов);
Запрос.УстановитьПараметр("ТекущаяДата", НачалоДня(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("НеИспользоватьСтатусыЗаказов", НЕ ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПереработчикам"));
УстановитьПривилегированныйРежим(Истина);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ЗаполнитьЗначенияСвойств(СостояниеРасчетов, Выборка);
КонецЕсли;
КонецПроцедуры
Функция СтруктураСостояниеВыполненияДокумента() Экспорт
СтруктураСостояние = Отчеты.СостояниеВыполненияДокументов.ИнициализироватьСтруктуруСостояниеВыполненияДокумента();
СтруктураСостояние.Вставить("ВыводитьТаблицуРасчетыСПоставщиками", 1);
СтруктураСостояние.Вставить("ВыводитьТаблицыОбеспечение", 2);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтгрузка", 3);
СтруктураСостояние.Вставить("ВыводитьТаблицыПоступление", 4);
СтруктураСостояние.Вставить("ВыводитьТаблицуПродукцияКОформлениюВОтчетеПереработчику", 5);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтмененоОтгрузка", 6);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтмененоПоступление", 7);
СтруктураСостояние.Вставить("ВыводитьТаблицуСырьеУПереработчика", 8);
СтруктураСостояние.Вставить("ЭтоЗаказ", Истина);
СтруктураСостояние.Вставить("ЕстьСуммовыеПоказателиОтгрузки", Истина);
СтруктураСостояние.Вставить("ЕстьПричиныОтменыПоступления", ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовПоставщикам"));
СтруктураСостояние.Вставить("ИмяТЧТоварыОтгрузка", "Материалы");
СтруктураСостояние.Вставить("ИмяТЧТоварыПоступление", "Продукция");
СтруктураСостояние.Вставить("ИмяПоляСумма", "Сумма");
СтруктураСостояние.Вставить("ТекстТоварУслугаОтгрузка", НСтр("ru = 'Сырье и материалы'"));
СтруктураСостояние.Вставить("ТекстТоварУслугаПоступление", НСтр("ru = 'Продукция и возвратные отходы'"));
СтруктураСостояние.Вставить("ТекстОтмененоОтгрузка", НСтр("ru = 'Отменена отгрузка сырья и материалов (%1%)'"));
СтруктураСостояние.Вставить("ТекстОтмененоПоступление", НСтр("ru = 'Отменен выпуск (%1%)'"));
СтруктураДопЗапросов = Новый Структура;
СтруктураДопЗапросов.Вставить("ТекстЗапросаВТТоварыРаспоряженияПоступлениеЗаказ", ТекстЗапросаВТТоварыРаспоряженияПоступлениеЗаказ());
СтруктураДопЗапросов.Вставить("ТекстЗапросаТаблицаОтмененоПоступление", ТекстЗапросаТаблицаОтмененоПоступление());
СтруктураСостояние.Вставить("СтруктураДопЗапросов", СтруктураДопЗапросов);
СтруктураСостояние.Вставить("ДействиеРасшифровкаКоличествоОтгружено", "ПоказатьДокументыПередачиСырьяПереработчику");
СтруктураСостояние.Вставить("ДействиеРасшифровкаКоличествоПоступило", "ПоказатьДокументыПоступленияОтПереработчика");
Возврат СтруктураСостояние
КонецФункции
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Документы.ВозвратСырьяОтПереработчика.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ДоверенностьВыданная.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЗаказПоставщику.ДобавитьКомандуСоздатьОбеспечивающийЗаказ(КомандыСозданияНаОсновании);
Документы.КорректировкаНазначенияТоваров.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЗаявкаНаРасходованиеДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ОтчетПереработчика.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ПередачаСырьяПереработчику.ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании);
Документы.ПоступлениеОтПереработчика.ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании);
Документы.РасходныйКассовыйОрдер.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.СписаниеБезналичныхДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании);
Документы.ПоручениеЭкспедитору.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ПриобретениеУслугПрочихАктивов.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Справочники.Претензии.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаказПереработчику) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ЗаказПереработчику.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ЗаказПереработчику);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользуетсяТолькоПередачаВПереработку2_4";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьОбеспечивающийЗаказ(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаказПереработчику) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ЗаказПереработчику.ПолноеИмя();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.СоздатьОбеспечивающийЗаказ";
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(
Метаданные.Документы.ЗаказПереработчику);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользуетсяТолькоПередачаВПереработку2_4";
ПараметрыСоздания = ОбеспечениеВДокументахСервер.ПараметрыСозданияОбеспечивающегоЗаказа(
КомандаСоздатьНаОсновании.ДополнительныеПараметры);
ПараметрыСоздания.ИмяМенеджераДокумента = "ЗаказПереработчику";
ПараметрыСоздания.ИмяФормы = "Документ.ЗаказПереработчику.ФормаОбъекта";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ПараметрыСозданияНаОснованииОбеспечивающегоЗаказа() Экспорт
ПараметрыТаблицыТовары = ОбеспечениеВДокументахСервер.ПараметрыОтбораТоваровДляСозданияОбеспечивающиегоЗаказа();
ПараметрыТаблицыТовары.ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Товар);
ПараметрыТаблицыТовары.ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ПараметрыТаблицыТовары.ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Работа);
ПараметрыТаблицыТовары.ОдинСклад = Истина;
Возврат ПараметрыТаблицыТовары;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КомандаОтчет = ВзаиморасчетыСервер.КарточкаРасчетовСПоставщиком_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента,ФормаСписка";
КонецЕсли;
Отчеты.КонтрольПередачиСырьяИМатериаловПереработчику.ДобавитьКомандуОтчета(КомандыОтчетов);
Отчеты.КонтрольПоставкиПродукцииПереработчиком.ДобавитьКомандуОтчета(КомандыОтчетов);
КомандаОтчет = ВзаиморасчетыСервер.ЗадолженностьПоставщикам_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента,ФормаСписка";
КонецЕсли;
КомандаОтчет = Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияЗаказПереработчику(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 1;
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.ЗадолженностьПоставщикам_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "РабочееМесто";
КомандаОтчет.Важность = "Обычное";
КомандаОтчет.Порядок = 1;
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.КарточкаРасчетовСПоставщиком_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "РабочееМесто";
КомандаОтчет.Важность = "Обычное";
КомандаОтчет.Порядок = 2;
КонецЕсли;
КонецПроцедуры
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Функция МакетФормыВыбораНазначений() Экспорт
МакетФормы = Справочники.Назначения.МакетФормыВыбораНазначений();
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы);
ШаблонНазначения.УсловиеИспользования = "&Объект.ГруппировкаЗатрат <> ЗНАЧЕНИЕ(Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства)";
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.Продукция.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "&Объект.Продукция.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Продукция.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Продукция.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.Продукция.Получатель";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказовРаботами", Истина, "Объект.Продукция.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "&Объект.Продукция.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Продукция.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Продукция.Характеристика";
ОписаниеКолонок.ПутиКДанным.Подразделение = "Объект.Продукция.Получатель";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.ВозвратныеОтходы.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "&Объект.ВозвратныеОтходы.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.ВозвратныеОтходы.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.ВозвратныеОтходы.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.ВозвратныеОтходы.Получатель";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказовРаботами", Истина, "Объект.ВозвратныеОтходы.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "&Объект.ВозвратныеОтходы.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.ВозвратныеОтходы.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.ВозвратныеОтходы.Характеристика";
ОписаниеКолонок.ПутиКДанным.Подразделение = "Объект.ВозвратныеОтходы.Получатель";
Возврат МакетФормы;
КонецФункции
Функция ПараметрыВыбораСпецификаций(Объект) Экспорт
ПараметрыВыбораСпецификаций = УправлениеДаннымиОбИзделияхКлиентСервер.ПараметрыВыбораСпецификаций();
ПараметрыВыбораСпецификаций.ДоступныеТипы.Добавить(Перечисления.ТипыПроизводственныхПроцессов.Сборка);
ПараметрыВыбораСпецификаций.ДоступныеСтатусы.Добавить(Перечисления.СтатусыСпецификаций.Действует);
СвязиПараметровВыбора = Новый Структура(УправлениеДаннымиОбИзделияхКлиентСервер.ПоляСтруктурыДанныхОбИзделииДляВыбораСпецификации());
СвязиПараметровВыбора.Номенклатура = "Объект.Продукция.Номенклатура";
СвязиПараметровВыбора.Характеристика = "Объект.Продукция.Характеристика";
СвязиПараметровВыбора.НачалоПроизводства = "Объект.Дата";
СвязиПараметровВыбора.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ПараметрыВыбораСпецификаций.СвязиПараметровВыбора.Вставить("Объект.Продукция.Спецификация", СвязиПараметровВыбора);
ПараметрыВыбораСпецификаций.Вставить("ИгнорируемыеПараметрыНазначения",
ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Перечисления.ВидыПараметровНазначенияСпецификаций.ПодразделениеДиспетчер));
Возврат ПараметрыВыбораСпецификаций;
КонецФункции
Функция ИменаРеквизитовДляЗаполненияПараметровВыбораСпецификаций() Экспорт
ИменаРеквизитов = "";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыРаспределенияЗатрат(Объект) Экспорт
ПараметрыРаспределенияЗатрат = ПроизводствоКлиентСервер.ПараметрыРаспределенияЗатратНаВыходныеИзделия(
"Продукция",
Объект.СпособРаспределенияЗатратНаВыходныеИзделия);
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
ПараметрыРаспределенияЗатрат.ЕстьПолеОтменено = Истина;
ПараметрыРаспределенияЗатрат.РассчитыватьПолеДоляСтоимостиПроцент = Истина;
ПараметрыРаспределенияЗатрат.РассчитыватьПризнакЕстьОшибкиЗаполнения = Истина;
ПараметрыРаспределенияЗатрат.РассчитыватьПризнакДоляСтоимостиОбязательна = Истина;
ПараметрыРаспределенияЗатрат.ПараметрыЗаполненияДолейСтоимости.Дата =
?(ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Объект, "Дата"),
Объект.Дата,
Дата("00010101"));
ПараметрыРаспределенияЗатрат.ПараметрыЗаполненияДолейСтоимости.Валюта =
?(ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Объект, "Валюта"),
Объект.Валюта,
Справочники.Валюты.ПустаяСсылка());
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство
Тогда
ПараметрыРаспределенияЗатрат.ПолеГруппировкиЗатрат = "НомерГруппыЗатрат";
ПараметрыРаспределенияЗатрат.ПолеПредставленияГруппировкиЗатрат = "ГруппаЗатрат";
ИначеЕсли Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
ПараметрыРаспределенияЗатрат.ИмяТЧ = "ВыходныеИзделия";
ПараметрыРаспределенияЗатрат.ИмяПоляСпособРаспределенияЗатратНаВыходныеИзделия = "СпособРаспределенияЗатратНаВыходныеИзделия";
ПараметрыРаспределенияЗатрат.ПолеГруппировкиЗатрат = "Распоряжение";
ПараметрыРаспределенияЗатрат.ПолеПредставленияГруппировкиЗатрат = "Распоряжение";
КонецЕсли;
КонецЕсли;
Возврат ПараметрыРаспределенияЗатрат;
КонецФункции
Функция КолонкиГруппировок(КоллекцияКолонок, КолонкиСуммирования)
МассивИсключаемыхКолонок = СтрРазделить(КолонкиСуммирования, ",");
МассивИсключаемыхКолонок.Добавить("НомерСтроки");
КолонкиГруппировок = "";
Для каждого Колонка Из КоллекцияКолонок Цикл
Если МассивИсключаемыхКолонок.Найти(Колонка.Имя) = Неопределено Тогда
КолонкиГруппировок = КолонкиГруппировок + Колонка.Имя + ",";
КонецЕсли;
КонецЦикла;
КолонкиГруппировок = Лев(КолонкиГруппировок, СтрДлина(КолонкиГруппировок) - 1);
Возврат КолонкиГруппировок;
КонецФункции
Функция КолонкиСуммирования(Объект, ИмяТаблицы)
КолонкиСуммирования = "КоличествоУпаковок,Количество,Сумма";
Если ТипЗнч(Объект) = Тип("ДанныеФормыСтруктура") Тогда
КолонкиСуммирования = КолонкиСуммирования + ",СуммаОтменено"
+ ?(ИмяТаблицы = "ВозвратныеОтходы", ",СуммаСНДСОтменено,СуммаНДСОтменено", "");
КонецЕсли;
Возврат КолонкиСуммирования;
КонецФункции
Функция ДанныеДокументаДляСозданияКорректировкиНазначения(Ссылка, ДополнительныеПараметры) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("ЭтоСнятиеРезерва", ДополнительныеПараметры.ЭтоСнятиеРезерва);
Запрос.Текст =
"ВЫБРАТЬ
| РеквизитыДокумента.Проведен КАК Проведен
|ИЗ
| Документ.ЗаказПереработчику КАК РеквизитыДокумента
|ГДЕ
| РеквизитыДокумента.Ссылка = &Ссылка
|;
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| МатериалыЗаказа.Назначение КАК Ссылка
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК МатериалыЗаказа
|ГДЕ
| МатериалыЗаказа.Ссылка = &Ссылка
| И МатериалыЗаказа.Ссылка.ГруппировкаЗатрат <> ЗНАЧЕНИЕ(Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства)
| И МатериалыЗаказа.Назначение <> ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| И (&ЭтоСнятиеРезерва ИЛИ НЕ МатериалыЗаказа.Отменено)
|;
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| МатериалыЗаказа.Номенклатура КАК Номенклатура,
| МатериалыЗаказа.Характеристика КАК Характеристика,
| МатериалыЗаказа.Назначение КАК Назначение
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК МатериалыЗаказа
|ГДЕ
| МатериалыЗаказа.Ссылка = &Ссылка
| И МатериалыЗаказа.Ссылка.ГруппировкаЗатрат <> ЗНАЧЕНИЕ(Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства)
| И (&ЭтоСнятиеРезерва ИЛИ НЕ МатериалыЗаказа.Отменено)";
ПакетРезультатовЗапоса = Запрос.ВыполнитьПакет();
Выборка = ПакетРезультатовЗапоса[0].Выбрать();
Выборка.Следующий();
Проведен = Выборка.Проведен;
Назначения = ПакетРезультатовЗапоса[1].Выгрузить().ВыгрузитьКолонку("Ссылка");
ПакетРезультатовЗапоса[2].Выгрузить();
Товары = ПакетРезультатовЗапоса[2].Выгрузить();
АдресТоваров = ПоместитьВоВременноеХранилище(Товары, ДополнительныеПараметры.ИдентификаторВХранилище);
ЕстьТоварыКОбособленномуОбеспечению = Документы.КорректировкаНазначенияТоваров.ЕстьТоварыКОбособленномуОбеспечению(
Назначения, АдресТоваров);
ЕстьТоварыКСнятиюРезерва = Документы.КорректировкаНазначенияТоваров.ЕстьТоварыКСнятиюРезерва(
Назначения, АдресТоваров);
ДанныеДокумента = Новый Структура();
ДанныеДокумента.Вставить("Проведен", Проведен);
ДанныеДокумента.Вставить("Назначения", Назначения);
ДанныеДокумента.Вставить("АдресТоваров", АдресТоваров);
ДанныеДокумента.Вставить("ЕстьТоварыКОбособленномуОбеспечению", ЕстьТоварыКОбособленномуОбеспечению);
ДанныеДокумента.Вставить("ЕстьТоварыКСнятиюРезерва", ЕстьТоварыКСнятиюРезерва);
Возврат ДанныеДокумента;
КонецФункции
Функция ДоступныеОстаткиПараметрыВстраивания(ДокументОбъект = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
Если ДополнительныеПараметры <> Неопределено Тогда
ВернутьПараметрыРедактированияЭтапов = ДополнительныеПараметры.ВернутьПараметрыРедактированияЭтапов;
Иначе
ВернутьПараметрыРедактированияЭтапов = ДокументОбъект.ГруппировкаЗатрат
= Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства;
КонецЕсли;
Если ВернутьПараметрыРедактированияЭтапов Тогда
ПараметрыВстраивания = Неопределено;
Возврат ПараметрыВстраивания;
КонецЕсли;
ПараметрыВстраивания = ОбеспечениеВДокументахСервер.ДоступныеОстаткиПараметрыВстраивания();
ПараметрыВстраивания.ОчищаемыеРеквизиты = "КодСтроки";
ПараметрыВстраивания.ИмяТаблицыФормы = "Материалы";
ЭлементыФормы = ПараметрыВстраивания.УсловноеОформление.ЭлементыФормы;
ЭлементыФормы.ВариантОбеспечения = "МатериалыВариантОбеспечения";
ЭлементыФормы.Доступно = "МатериалыДоступно";
ЭлементыФормы.Серия = "МатериалыСерия";
ЭлементыФормы.Обособленно = "МатериалыОбособленно";
ЭлементыФормы.Склад = "МатериалыСклад";
ПутиКДанным = ПараметрыВстраивания.УсловноеОформление.ПутиКДанным;
ПутиКДанным.ПерераспределятьЗапасы = "Объект.Материалы.ПерераспределятьЗапасы";
ПутиКДанным.ЗапретРедактирования = "Объект.Материалы.Отменено";
ПутиКДанным.ТипНоменклатуры = "Объект.Материалы.ТипНоменклатуры";
Связи = ПараметрыВстраивания.СвязиПараметровВыбораВариантаОбеспечения;
Связи.Доступно = "Элементы.Материалы.ТекущиеДанные.Доступно";
Связи.КоличествоУпаковок = "Элементы.Материалы.ТекущиеДанные.КоличествоУпаковок";
Связи.Количество = "Элементы.Материалы.ТекущиеДанные.Количество";
Связи.ОтгружатьЕслиДоступно = "Элементы.Материалы.ТекущиеДанные.ОтгружатьЕслиДоступно";
Связи.Обособленно = "Элементы.Материалы.ТекущиеДанные.Обособленно";
Связи.ТипНоменклатуры = "Элементы.Материалы.ТекущиеДанные.ТипНоменклатуры";
Связи.Упаковка = "Элементы.Материалы.ТекущиеДанные.Упаковка";
Связи.Номенклатура = "Элементы.Материалы.ТекущиеДанные.Номенклатура";
Связи.ВариантОбеспечения = "Элементы.Материалы.ТекущиеДанные.ВариантОбеспечения";
Связи.Склад = "Элементы.Материалы.ТекущиеДанные.Склад";
Связи.НесколькоСкладов = Истина;
ПараметрыВстраивания.ИмяРегистраОформленияОтгрузки = "РаспоряженияНаОтгрузкуИВозврат";
ПараметрыВстраивания.ИмяОбъекта = "Документ.ЗаказПереработчику";
ПараметрыВстраивания.ИмяТаблицы = "Документ.ЗаказПереработчику.Материалы";
ТестЗапроса =
"ВЫБРАТЬ
| ТаблицаПродукция.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| МАКСИМУМ(ТаблицаПродукция.Назначение) КАК Назначение
|ПОМЕСТИТЬ ВременнаяТаблицаПродукция
|ИЗ
| Документ.ЗаказПереработчику.Продукция КАК ТаблицаПродукция
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику КАК Реквизиты
| ПО ИСТИНА
|ГДЕ
| Реквизиты.ОбосабливатьПоНазначениюПродукции
| И ТаблицаПродукция.Назначение <> ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
|СГРУППИРОВАТЬ ПО
| ТаблицаПродукция.НомерГруппыЗатрат
|ИНДЕКСИРОВАТЬ ПО
| НомерГруппыЗатрат
|;
|
|
|ВЫБРАТЬ
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| Реквизиты.Подразделение КАК Подразделение,
| ТабЧасть.Склад КАК Склад,
| &ТекстПоляНазначение КАК Назначение,
| ВЫБОР
| КОГДА ИСТИНА ТОГДА
| Реквизиты.Ссылка
| КОНЕЦ КАК ЗаказНаОтгрузку,
| ТабЧасть.ВариантОбеспечения КАК ВариантОбеспечения,
| ТабЧасть.Обособленно КАК Обособленно,
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.КоличествоУпаковок КАК КоличествоУпаковок,
| ТабЧасть.Упаковка КАК Упаковка,
| Реквизиты.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт)
| ) КАК ГотовКОбеспечению,
| Реквизиты.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт)
| ) КАК ГотовКОтгрузке,
| ВЫБОР КОГДА Реквизиты.НеОтгружатьЧастями ТОГДА
| Реквизиты.ДатаОтгрузки
| ИНАЧЕ
| ТабЧасть.ДатаОтгрузки
| КОНЕЦ КАК ЖелаемаяДатаОтгрузки,
| ТабЧасть.Серия КАК Серия,
| ТабЧасть.КодСтроки КАК КодСтроки,
| ТабЧасть.Отменено КАК Отменено,
| ТабЧасть.НомерСтроки КАК НомерСтроки,
| Реквизиты.Ссылка КАК Регистратор,
| Реквизиты.Дата КАК ДатаДокумента,
| НЕОПРЕДЕЛЕНО КАК ГруппаСкладов,
| Реквизиты.Приоритет КАК Приоритет,
| ВЫБОР КОГДА Реквизиты.НеОтгружатьЧастями ТОГДА
| Реквизиты.ДатаОтгрузки
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ДатаОтгрузкиВсехСтрокОднойДатой
|ПОМЕСТИТЬ ВременнаяТаблицаДанныхДокумента
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК ТабЧасть
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику КАК Реквизиты
| ПО ИСТИНА
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаПродукция КАК ТаблицаПродукция
| ПО ТаблицаПродукция.НомерГруппыЗатрат = ТабЧасть.НомерГруппыЗатрат
|
|";
ТекстПоляНазначение =
"ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ЕСТЬNULL(ТаблицаПродукция.Назначение, Реквизиты.Назначение)
|КОНЕЦ";
Если Не ПравоДоступа("Изменение", Метаданные.Документы.ЗаказПереработчику) Тогда
ТекстПоляНазначение = "ТабЧасть.Назначение";
КонецЕсли;
ПараметрыВстраивания.ОписаниеПолученияДанныхДокумента = СтрЗаменить(ТестЗапроса, "&ТекстПоляНазначение", ТекстПоляНазначение);
Материалы = Новый Структура();
Материалы.Вставить("НомерСтроки", Новый ОписаниеТипов("Число"));
Материалы.Вставить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Материалы.Вставить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
Материалы.Вставить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
Материалы.Вставить("ВариантОбеспечения", Новый ОписаниеТипов("ПеречислениеСсылка.ВариантыОбеспечения"));
Материалы.Вставить("Обособленно", Новый ОписаниеТипов("Булево"));
Материалы.Вставить("Количество", Новый ОписаниеТипов("Число"));
Материалы.Вставить("КоличествоУпаковок", Новый ОписаниеТипов("Число"));
Материалы.Вставить("Упаковка", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
Материалы.Вставить("ДатаОтгрузки", Новый ОписаниеТипов("Дата"));
Материалы.Вставить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
Материалы.Вставить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
Материалы.Вставить("Отменено", Новый ОписаниеТипов("Булево"));
Материалы.Вставить("КодСтроки", Новый ОписаниеТипов("Число"));
Материалы.Вставить("НомерГруппыЗатрат", Новый ОписаниеТипов("Число"));
Продукция = Новый Структура();
Продукция.Вставить("НомерГруппыЗатрат", Новый ОписаниеТипов("Число"));
Продукция.Вставить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
Объект = Новый Структура();
Объект.Вставить("ПереработкаПоЗаказу", Новый ОписаниеТипов("Булево"));
Объект.Вставить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
Объект.Вставить("ОбосабливатьПоНазначениюПродукции", Новый ОписаниеТипов("Булево"));
Объект.Вставить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
Объект.Вставить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.ЗаказПереработчику"));
Объект.Вставить("Статус", Новый ОписаниеТипов("ПеречислениеСсылка.СтатусыЗаказовПереработчикам"));
Объект.Вставить("НеОтгружатьЧастями", Новый ОписаниеТипов("Булево"));
Объект.Вставить("ДатаОтгрузки", Новый ОписаниеТипов("Дата"));
Объект.Вставить("Дата", Новый ОписаниеТипов("Дата"));
Объект.Вставить("Приоритет", Новый ОписаниеТипов("СправочникСсылка.Приоритеты"));
Объект.Вставить("Материалы", Материалы);
Объект.Вставить("Продукция", Продукция);
ПараметрыВстраивания.ШаблонСериализацииДанныхФормы.Вставить("Объект", Объект);
ПараметрыВстраивания.ПоляСвязиТабличныхЧастей.Вставить("Продукция", Новый Структура("НомерГруппыЗатрат", "НомерГруппыЗатрат"));
ПараметрыВстраивания.ПоляСвязиТабличныхЧастей.Вставить("Услуги", Новый Структура("НомерГруппыЗатрат", "НомерГруппыЗатрат"));
ИменаЭлементов = ПараметрыВстраивания.ИменаЭлементов;
ИменаЭлементов.СтраницыГиперссылкаСостояниеОбеспечения = "МатериалыСтраницыГиперссылкаСостояниеОбеспечения";
ИменаЭлементов.СтраницаГиперссылкаСостояниеОбеспечения = "МатериалыСтраницаГиперссылкаСостояниеОбеспечения";
ИменаЭлементов.ГиперссылкаСостояниеОбеспечения = "МатериалыГиперссылкаСостояниеОбеспечения";
ИменаЭлементов.СтраницаГиперссылкаСостояниеОбеспеченияОтгружается = "МатериалыСтраницаГиперссылкаСостояниеОбеспеченияОтгружается";
ИменаЭлементов.ГиперссылкаСостояниеОбеспеченияОтгружается = "МатериалыГиперссылкаСостояниеОбеспеченияОтгружается";
ИменаЭлементов.СтраницаГиперссылкаСостояниеОбеспеченияПроблема = "МатериалыСтраницаГиперссылкаСостояниеОбеспеченияПроблема";
ИменаЭлементов.ГиперссылкаСостояниеОбеспеченияПроблема = "МатериалыГиперссылкаСостояниеОбеспеченияПроблема";
ИменаЭлементов.СтраницаГиперссылкаСостояниеОбеспеченияСЗаголовком = "МатериалыСтраницаГиперссылкаСостояниеОбеспеченияСЗаголовком";
ИменаЭлементов.ГиперссылкаСостояниеОбеспеченияСЗаголовком = "МатериалыГиперссылкаСостояниеОбеспеченияСЗаголовком";
Возврат ПараметрыВстраивания;
КонецФункции
#КонецОбласти
#Область ВыборСтатейИАналитик
Функция ПараметрыВыбораСтатейИАналитик() Экспорт
ПараметрыВыбораСтатей = Новый Массив;
ПараметрыВыбора = ДоходыИРасходыСервер.ПараметрыВыбораСтатьиИАналитики();
ПараметрыВыбора.ПутьКДанным = "Объект.Продукция";
ПараметрыВыбора.Статья = "СтатьяРасходов";
ПараметрыВыбора.ТипСтатьи = "ТипСтатьи";
ПараметрыВыбора.ВыборСтатьиРасходов = Истина;
ПараметрыВыбора.АналитикаРасходов = "АналитикаРасходов";
ПараметрыВыбора.ВыборСтатьиАктивовПассивов = Истина;
ПараметрыВыбора.АналитикаАктивовПассивов = "АналитикаАктивовПассивов";
ЭлементыФормы = ПараметрыВыбора.ЭлементыФормы;
ЭлементыФормы.Статья.Добавить("ПродукцияСтатьяРасходов");
ЭлементыФормы.АналитикаРасходов.Добавить("ПродукцияАналитикаРасходов");
ЭлементыФормы.АналитикаАктивовПассивов.Добавить("ПродукцияАналитикаАктивовПассивов");
ПараметрыВыбора.УсловияДоступностиСтатьиВСтроках.Вставить("СписатьНаРасходы", Истина);
ПараметрыВыбораСтатей.Добавить(ПараметрыВыбора);
ПараметрыВыбора = ДоходыИРасходыСервер.ПараметрыВыбораСтатьиИАналитики();
ПараметрыВыбора.ПутьКДанным = "Объект.ВозвратныеОтходы";
ПараметрыВыбора.Статья = "СтатьяРасходов";
ПараметрыВыбора.ТипСтатьи = "ТипСтатьи";
ПараметрыВыбора.ВыборСтатьиРасходов = Истина;
ПараметрыВыбора.АналитикаРасходов = "АналитикаРасходов";
ПараметрыВыбора.ВыборСтатьиАктивовПассивов = Истина;
ПараметрыВыбора.АналитикаАктивовПассивов = "АналитикаАктивовПассивов";
ЭлементыФормы = ПараметрыВыбора.ЭлементыФормы;
ЭлементыФормы.Статья.Добавить("ВозвратныеОтходыСтатьяРасходов");
ЭлементыФормы.АналитикаРасходов.Добавить("ВозвратныеОтходыАналитикаРасходов");
ЭлементыФормы.АналитикаАктивовПассивов.Добавить("ВозвратныеОтходыАналитикаАктивовПассивов");
ПараметрыВыбора.УсловияДоступностиСтатьиВСтроках.Вставить("СписатьНаРасходы", Истина);
ПараметрыВыбораСтатей.Добавить(ПараметрыВыбора);
Возврат ПараметрыВыбораСтатей;
КонецФункции
#КонецОбласти
#Область УчетНДС
Функция ПараметрыЗаполненияВидаДеятельностиНДС(Объект) Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияВидаДеятельностиНДС();
ПараметрыЗаполнения.Организация = Объект.Организация;
ПараметрыЗаполнения.Дата = Объект.Дата;
ПараметрыЗаполнения.Договор = Объект.Договор;
ПараметрыЗаполнения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
ПараметрыЗаполнения.ВыпускПродукцииИРабот = Истина;
Возврат ПараметрыЗаполнения;
КонецФункции
#КонецОбласти
#Область Взаиморасчеты
Функция ПараметрыВзаиморасчеты(ДанныеЗаполнения = Неопределено) Экспорт
СтруктураПараметров = ВзаиморасчетыСервер.ПараметрыМеханизма();
СтруктураПараметров.ЭтоЗаказ = Истина;
СтруктураПараметров.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСПоставщиком;
СтруктураПараметров.КурсЧислитель = "";
СтруктураПараметров.КурсЗнаменатель = "";
СтруктураПараметров.ПутьКДаннымТЧ = "Объект.Услуги";
СтруктураПараметров.ПутьКДаннымТЧЭтапыОплаты = "Объект.ЭтапыГрафикаОплаты";
СтруктураПараметров.ДатаОтгрузки = "Объект.ДатаОтгрузки";
СтруктураПараметров.Соглашение = "";
СтруктураПараметров.ОтгружатьОднойДатой = "Объект.НеОтгружатьЧастями";
СтруктураПараметров.БанковскийСчетОрганизации = "Объект.БанковскийСчет";
СтруктураПараметров.БанковскийСчетКонтрагента = "";
СтруктураПараметров.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПустаяСсылка();
СтруктураПараметров.Менеджер = "Объект.Менеджер";
СтруктураПараметров.СуммаДокументаФорма = "";
СтруктураПараметров.ИсточникСуммТабличнаяЧасть = Истина;
СтруктураПараметров.ЭлементыФормы.НадписьЭтапы = "ДекорацияЭтапыОплаты";
СтруктураПараметров.НадписьЭтапыОплаты = "Форма.НадписьЭтапыОплаты";
СтруктураПараметров.ЭлементыФормы.НадписьРасчеты = "ДекорацияСостояниеРасчетов";
СтруктураПараметров.ЭлементыФормы.ЗачетОплаты = "ЗачетОплатыФорма";
СтруктураПараметров.ЭлементыФормы.ГруппаФинансовогоУчета = "ГруппаФинансовогоУчета";
СтруктураПараметров.ЭлементыФормы.НаправлениеДеятельности = "НаправлениеДеятельности";
СтруктураПараметров.ОбъектРасчетов = "Объект.ОбъектРасчетов";
Возврат СтруктураПараметров;
КонецФункции
#КонецОбласти
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Партнер)
| И ЗначениеРазрешено(Подразделение)
| И (ЗначениеРазрешено(Продукция.Получатель)
| ИЛИ ЗначениеРазрешено(ВозвратныеОтходы.Получатель)
| ИЛИ Продукция.Получатель ЕСТЬ NULL
| И ВозвратныеОтходы.Получатель ЕСТЬ NULL)";
КонецПроцедуры
#КонецОбласти
#Область Округление
Функция ПараметрыТЧДляОкругления() Экспорт
ПараметрыТЧ = Новый Структура;
ИмяТЧ = "Продукция";
ИмяПоляСклад = "Получатель";
ПараметрыТЧ.Вставить(ИмяТЧ, НоменклатураСервер.ПараметрыПроверкиЗаполненияКоличества());
ПараметрыТЧ[ИмяТЧ].ИмяТЧ = ИмяТЧ;
ПараметрыТЧ[ИмяТЧ].ДополнительныеПоля.Вставить(ИмяПоляСклад, ИмяТЧ + "." + ИмяПоляСклад);
ПараметрыТЧ[ИмяТЧ].УсловиеОтбораСтрокПоДополнительнымПолям =
ПроизводствоСервер.УсловиеОтбораСтрокДляОкругления(ИмяТЧ, ИмяПоляСклад);
ИмяТЧ = "ВозвратныеОтходы";
ИмяПоляСклад = "Получатель";
ПараметрыТЧ.Вставить(ИмяТЧ, НоменклатураСервер.ПараметрыПроверкиЗаполненияКоличества());
ПараметрыТЧ[ИмяТЧ].ИмяТЧ = ИмяТЧ;
ПараметрыТЧ[ИмяТЧ].ДополнительныеПоля.Вставить(ИмяПоляСклад, ИмяТЧ + "." + ИмяПоляСклад);
ПараметрыТЧ[ИмяТЧ].УсловиеОтбораСтрокПоДополнительнымПолям =
ПроизводствоСервер.УсловиеОтбораСтрокДляОкругления(ИмяТЧ, ИмяПоляСклад);
ИмяТЧ = "Материалы";
ИмяПоляСклад = "Склад";
ПараметрыТЧ.Вставить(ИмяТЧ, НоменклатураСервер.ПараметрыПроверкиЗаполненияКоличества());
ПараметрыТЧ[ИмяТЧ].ИмяТЧ = ИмяТЧ;
ПараметрыТЧ[ИмяТЧ].ДополнительныеПоля.Вставить(ИмяПоляСклад, ИмяТЧ + "." + ИмяПоляСклад);
ПараметрыТЧ[ИмяТЧ].УсловиеОтбораСтрокПоДополнительнымПолям =
ПроизводствоСервер.УсловиеОтбораСтрокДляОкругления(ИмяТЧ, ИмяПоляСклад);
Возврат ПараметрыТЧ;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область СлужебныйПрограммныйИнтерфейс
Функция ВыполнитьДействиеДляЗаказовПослеВопроса(ПараметрыПроцедуры) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Заказы", ПараметрыПроцедуры.Заказы);
Запрос.Текст =
"ВЫБРАТЬ
| Заказы.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказПереработчику КАК Заказы
|ГДЕ
| Заказы.Ссылка В(&Заказы)
| И Заказы.ГруппировкаЗатрат
| <> ЗНАЧЕНИЕ(Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства)
|";
РезультатЗапроса = Запрос.ВыполнитьПакет();
ДополнительныеПараметры = Новый Структура("ВернутьПараметрыРедактированияЭтапов", Ложь);
ПараметрыПроцедуры.ПараметрыВстраивания = Документы.ЗаказПереработчику.ДоступныеОстаткиПараметрыВстраивания(
Неопределено,
ДополнительныеПараметры);
ПараметрыПроцедуры.Заказы = РезультатЗапроса[0].Выгрузить().ВыгрузитьКолонку("Ссылка");
РезультатВыполненияПолный = ОбеспечениеВДокументахСервер.ВыполнитьДействиеДляЗаказовПослеВопроса(ПараметрыПроцедуры);
Возврат РезультатВыполненияПолный;
КонецФункции
Функция ТекстЗапросаТоварыДокумента(Отбор, Ресурс) Экспорт
Если Ресурс = "Продукция" Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Ссылка КАК ЗаказПереработчику,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА Таблица.Ссылка.ПереработкаПоЗаказу
| ТОГДА ЗаказУслуги.Распоряжение
| ИНАЧЕ Таблица.Ссылка
| КОНЕЦ КАК Распоряжение,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| Таблица.Количество КАК Количество,
| 0 КАК Цена,
| 0 КАК Сумма,
| Таблица.Упаковка КАК Упаковка,
| Таблица.ДатаПоступления КАК ДатаПоступления,
| 0 КАК СтатусУказанияСерий,
| Таблица.Получатель КАК Склад,
| Таблица.Ссылка.Сделка КАК Сделка,
| ЕСТЬNULL(ДанныеУчета.КОформлению, 0) КАК КОформлению,
| ЕСТЬNULL(ДанныеУчета.Заказано, 0) КАК Заказано,
| ИСТИНА КАК ЭтоПродукция
|ИЗ
| Документ.ЗаказПереработчику.Продукция КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО Таблица.Ссылка = ДанныеУчета.ЗаказПоставщику
| И Таблица.КодСтроки = ДанныеУчета.КодСтроки
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Услуги КАК ЗаказУслуги
| ПО ЗаказУслуги.Ссылка = Таблица.Ссылка
| И ЗаказУслуги.НомерГруппыЗатрат = Таблица.НомерГруппыЗатрат
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
| ПО Таблица.Номенклатура = ДанныеНоменклатуры.Ссылка
|ГДЕ
| НЕ ДанныеУчета.ЗаказПоставщику ЕСТЬ NULL
| И &Отбор
|
|";
ИначеЕсли Ресурс = "ВозвратныеОтходы" Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Ссылка КАК ЗаказПереработчику,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА Таблица.Ссылка.ПереработкаПоЗаказу
| ТОГДА ЗаказУслуги.Распоряжение
| ИНАЧЕ Таблица.Ссылка
| КОНЕЦ КАК Распоряжение,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| Таблица.Количество КАК Количество,
| Таблица.Цена КАК Цена,
| Таблица.Сумма КАК Сумма,
| Таблица.Упаковка КАК Упаковка,
| Таблица.ДатаПоступления КАК ДатаПоступления,
| 0 КАК СтатусУказанияСерий,
| Таблица.Получатель КАК Склад,
| Таблица.Ссылка.Сделка КАК Сделка,
| ЕСТЬNULL(ДанныеУчета.КОформлению, 0) КАК КОформлению,
| ЕСТЬNULL(ДанныеУчета.Заказано, 0) КАК Заказано,
| ЛОЖЬ КАК ЭтоПродукция
|ИЗ
| Документ.ЗаказПереработчику.ВозвратныеОтходы КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО Таблица.Ссылка = ДанныеУчета.ЗаказПоставщику
| И Таблица.КодСтроки = ДанныеУчета.КодСтроки
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Услуги КАК ЗаказУслуги
| ПО ЗаказУслуги.Ссылка = Таблица.Ссылка
| И ЗаказУслуги.НомерГруппыЗатрат = Таблица.НомерГруппыЗатрат
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
| ПО Таблица.Номенклатура = ДанныеНоменклатуры.Ссылка
|ГДЕ
| НЕ ДанныеУчета.ЗаказПоставщику ЕСТЬ NULL
| И &Отбор
|
|";
Иначе
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Ссылка КАК ЗаказПереработчику,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| ВЫБОР КОГДА Таблица.Обособленно ТОГДА
| Таблица.Назначение
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.Серия КАК Серия,
| Таблица.Количество КАК Количество,
| Таблица.Цена КАК Цена,
| Таблица.Сумма КАК Сумма,
| Таблица.Упаковка КАК Упаковка,
| Таблица.ДатаОтгрузки КАК ДатаОтгрузки,
| Таблица.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Таблица.Склад КАК Склад,
| ЕСТЬNULL(ДанныеУчета.КОформлению, 0) КАК КОформлению,
| ЕСТЬNULL(ДанныеУчета.Заказано, 0) КАК Заказано
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО Таблица.Ссылка = ДанныеУчета.Распоряжение
| И Таблица.КодСтроки = ДанныеУчета.КодСтроки
|ГДЕ
| НЕ ДанныеУчета.Распоряжение ЕСТЬ NULL
| И &Отбор
|
|";
КонецЕсли;
ТекстОтбора = "ИСТИНА";
Если ЗначениеЗаполнено(Отбор) Тогда
Для Каждого КлючЗначение Из Отбор Цикл
Ключ = КлючЗначение.Ключ;
Если Ключ = "Ссылка" Тогда
Ключ = "Таблица.Ссылка";
КонецЕсли;
ТекстОтбора =
ТекстОтбора
+ " И "
+ Ключ
+ " В(&"
+ КлючЗначение.Значение
+ ")";
КонецЦикла;
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Отбор", ТекстОтбора);
Возврат ТекстЗапроса;
КонецФункции
#Область Обеспечение
Функция ПараметрыВыполненияКомандУстановкиДействий(ВсеЗаказы, КодДействия) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Заказы", ВсеЗаказы);
Запрос.УстановитьПараметр("ЭтоРезервироватьПоМереПоступления",
КодДействия = "ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬПОМЕРЕПОСТУПЛЕНИЯ");
Запрос.Текст =
"ВЫБРАТЬ
| Заказы.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказПереработчику КАК Заказы
|ГДЕ
| Заказы.Ссылка В(&Заказы)
| И Заказы.ГруппировкаЗатрат
| <> ЗНАЧЕНИЕ(Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства)
|";
РезультатЗапроса = Запрос.ВыполнитьПакет();
Результаты = Новый Массив();
ДополнительныеПараметры = Новый Структура("ВернутьПараметрыРедактированияЭтапов", Ложь);
Результат = ОбеспечениеВДокументахСервер.СтруктураЗаказыИПараметрыВстраивания();
Результат.Заказы = РезультатЗапроса[0].Выгрузить().ВыгрузитьКолонку("Ссылка");
Результат.ПараметрыВстраивания = ДоступныеОстаткиПараметрыВстраивания(Неопределено, ДополнительныеПараметры);
Результаты.Добавить(Результат);
ТекстыЗапроса = Новый Массив();
Если КодДействия = "ДЕЙСТВИЕ_ОТГРУЗИТЬ" Тогда
Для Каждого ТекущиеПараметры Из Результаты Цикл
Заказы = ТекущиеПараметры.Заказы;
ПараметрыВстраивания = ТекущиеПараметры.ПараметрыВстраивания;
Если Заказы.Количество() > 0 Тогда
Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА КАК НуженВопрос
|ИЗ
| РегистрНакопления.ЗапасыИПотребности.Остатки(,
| Заказ В(
| ВЫБРАТЬ
| &ИмяПоляЗаказ КАК Заказ
| ИЗ
| &ТаблицаПереопределяемый КАК Таблица
| ГДЕ
| Таблица.Ссылка В(&Заказы)
| И Таблица.Проведен
| И &УсловиеПереопределяемый <> НЕОПРЕДЕЛЕНО
| И &УсловиеПереопределяемый < &ДатаОтгрузкиНовыхСтрок)) КАК Потребности
|ГДЕ
| Потребности.РезервироватьНаСкладеОстаток > 0
| ИЛИ Потребности.РезервироватьПоМереПоступленияОстаток > 0
| ИЛИ Потребности.ОтложитьРезервированиеОстаток > 0
| ИЛИ Потребности.КОбеспечениюОстаток > 0
| ИЛИ Потребности.НеОбеспечиватьОстаток > 0";
ИмяПоляЗаказ = "Таблица.Ссылка";
Текст = СтрЗаменить(Текст, "&ТаблицаПереопределяемый", ПараметрыВстраивания.ИмяОбъекта);
Текст = СтрЗаменить(Текст, "&УсловиеПереопределяемый",
ПараметрыВстраивания.ВыражениеДляВопросаПриВыполненииДействияВСпискеЗаказов);
Текст = СтрЗаменить(Текст, "&ИмяПоляЗаказ", ИмяПоляЗаказ);
ТекстыЗапроса.Добавить(Текст);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Результат = ОбеспечениеВДокументахСервер.НовыеПараметрыВыполненияКомандУстановкиДействий();
Результат.КодДействия = КодДействия;
Результат.ПараметрыВыполнения = Результаты;
Если ТекстыЗапроса.Количество() > 0 Тогда
Запрос = Новый Запрос();
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ДатаОтгрузкиНовыхСтрок = НачалоДня(ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("ДатаОтгрузкиНовыхСтрок", ДатаОтгрузкиНовыхСтрок);
Запрос.УстановитьПараметр("Заказы", ВсеЗаказы);
Результат.НуженВопрос = Не Запрос.Выполнить().Пустой();
Результат.ДатаОтгрузкиНовыхСтрок = ДатаОтгрузкиНовыхСтрок;
КонецЕсли;
Возврат Результат;
КонецФункции
Процедура ТоварыДокументаДляСозданияОбеспечивающегоЗаказа(Ссылка, ПараметрыСоздания, МенеджерВременныхТаблиц) Экспорт
Запрос = Новый Запрос();
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ТипыНоменклатуры", ПараметрыСоздания.ТипыНоменклатуры);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Упаковка КАК Упаковка,
| Товары.Склад КАК Склад,
| Товары.Ссылка.Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА Товары.Обособленно
| ТОГДА
| Товары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| Товары.ВариантОбеспечения КАК ВариантОбеспечения,
| Товары.Обособленно КАК Обособленно,
| Товары.ДатаОтгрузки КАК ДатаОтгрузки,
| Товары.Количество КАК КоличествоЕдиницПоДокументу,
| Товары.КоличествоУпаковок КАК КоличествоПоДокументу
|ПОМЕСТИТЬ ТоварыДокумента
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК Товары
|ГДЕ
| Товары.Ссылка = &Ссылка
| И НЕ Товары.Отменено
| И Товары.Номенклатура.ТипНоменклатуры В(&ТипыНоменклатуры)
|";
Запрос.Выполнить();
КонецПроцедуры
Процедура ПослеЗаполненияОбеспечения(Объект, Изменения, Режим, ПараметрыЗаполнения) Экспорт
ОбеспечениеВДокументахСервер.АктуализироватьДатуОтгрузки(
ПараметрыЗаполнения,
Объект.НеОтгружатьЧастями,
Объект.ДатаОтгрузки,
Объект.Материалы,
"ДатаОтгрузки");
Если ОбеспечениеВДокументахКлиентСервер.НужноПроверитьЗаполнитьДатуОтгрузкиДляСтрокОтгрузить(Режим) Тогда
ОбеспечениеВДокументахСервер.ПроверитьЗаполнитьДатуОтгрузкиДляСтрокОтгрузить(
Изменения.ВыгрузитьКолонку("Строка"),
"ДатаОтгрузки",
Объект.НеОтгружатьЧастями,
Объект.ДатаОтгрузки);
КонецЕсли;
ОбеспечениеВДокументахСервер.ПересчитатьКоличествоЕдиниц(Изменения, Объект.Материалы);
Реквизиты = "Сумма";
ЗаказыСервер.ПересчитатьЗависимыеРеквизитыПослеРазбиенияСтрок(Изменения, Реквизиты);
ПараметрыУказанияСерий = ПараметрыУказанияСерий(Объект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
#КонецОбласти
#Область НаправленияДеятельности
Функция ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности(Форма) Экспорт
ПорядокОбработкиДокумента = НаправленияДеятельностиСервер.ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности();
ПорядокОбработкиДокумента.ЗаполнятьНазначениеВШапке = Истина;
ПорядокОбработкиДокумента.ИменаТабличныхЧастейДляОчисткиНекорректныхНазначений = "Продукция,ВозвратныеОтходы";
ТаблицаУсловий = НаправленияДеятельностиСервер.УсловияОбработкиНазначенийВСтроках("ТипНоменклатуры");
ПорядокОбработкиДокумента.УсловияОбработкиСтрок.Вставить("Продукция", ТаблицаУсловий);
ПорядокОбработкиДокумента.УсловияОбработкиСтрок.Вставить("ВозвратныеОтходы", ТаблицаУсловий);
Возврат ПорядокОбработкиДокумента;
КонецФункции
#КонецОбласти
Функция ТабличныеЧастиДляОформленияОтчетаПереработчика() Экспорт
Результат = Новый Структура("Продукция,ВозвратныеОтходы,Услуги,Материалы");
Результат.Продукция =
"ВЫБРАТЬ
| ПродукцияЗаказа.НомерСтроки КАК НомерСтроки,
| ПродукцияЗаказа.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ПродукцияЗаказа.КодСтроки КАК КодСтроки,
| ПродукцияЗаказа.Номенклатура КАК Номенклатура,
| ПродукцияЗаказа.Характеристика КАК Характеристика,
| ПродукцияЗаказа.Назначение КАК Назначение,
| ПродукцияЗаказа.Получатель КАК Получатель,
| ПродукцияЗаказа.СписатьНаРасходы КАК СписатьНаРасходы,
| ПродукцияЗаказа.СтатьяРасходов КАК СтатьяРасходов,
| ПродукцияЗаказа.АналитикаРасходов КАК АналитикаРасходов,
| ПродукцияЗаказа.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ПродукцияЗаказа.Упаковка КАК Упаковка,
| ПродукцияЗаказа.Спецификация КАК Спецификация,
| ПродукцияЗаказа.ДоляСтоимости КАК ДоляСтоимости,
| ПродукцияЗаказа.ДоляСтоимостиНаЕдиницу КАК ДоляСтоимостиНаЕдиницу,
| ПродукцияЗаказа.Количество КАК Количество,
| ПродукцияЗаказа.КоличествоУпаковок КАК КоличествоУпаковок
|ИЗ
| Документ.ЗаказПереработчику.Продукция КАК ПродукцияЗаказа
|ГДЕ
| ПродукцияЗаказа.Ссылка = &Заказ";
ТекстИсходнаяТаблица = "Документ.ЗаказПереработчику.Продукция КАК ПродукцияЗаказа";
ТекстСоединениеШтучныйТоварВМернойЕдинице = ТекстИсходнаяТаблица + "
| //&СоединениеШтучныйТоварВМернойЕдинице";
Результат.Продукция =
СтрЗаменить(Результат.Продукция, ТекстИсходнаяТаблица, ТекстСоединениеШтучныйТоварВМернойЕдинице);
ПараметрыПрименения = ПроизводствоСервер.ПараметрыПримененияШтучногоТовараВМернойЕдинице();
ПараметрыПрименения.ШтучныйТоварВМерныхЕдиницах = Ложь;;
ПроизводствоСервер.ПрименитьНастройкиШтучногоТовараВМернойЕдинице(Результат.Продукция, "ПродукцияЗаказа", ПараметрыПрименения);
Результат.ВозвратныеОтходы =
"ВЫБРАТЬ
| ВозвратныеОтходыЗаказа.НомерСтроки КАК НомерСтроки,
| ВозвратныеОтходыЗаказа.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| ВозвратныеОтходыЗаказа.КодСтроки КАК КодСтроки,
| ВозвратныеОтходыЗаказа.Номенклатура КАК Номенклатура,
| ВозвратныеОтходыЗаказа.Характеристика КАК Характеристика,
| ВозвратныеОтходыЗаказа.Назначение КАК Назначение,
| ВозвратныеОтходыЗаказа.Получатель КАК Получатель,
| ВозвратныеОтходыЗаказа.СписатьНаРасходы КАК СписатьНаРасходы,
| ВозвратныеОтходыЗаказа.СтатьяРасходов КАК СтатьяРасходов,
| ВозвратныеОтходыЗаказа.АналитикаРасходов КАК АналитикаРасходов,
| ВозвратныеОтходыЗаказа.АналитикаАктивовПассивов КАК АналитикаАктивовПассивов,
| ВозвратныеОтходыЗаказа.Упаковка КАК Упаковка,
| ВозвратныеОтходыЗаказа.СтатьяКалькуляции КАК СтатьяКалькуляции,
| ВозвратныеОтходыЗаказа.ВидЦены КАК ВидЦены,
| ВозвратныеОтходыЗаказа.Цена КАК Цена,
| ВозвратныеОтходыЗаказа.Количество КАК Количество,
| ВозвратныеОтходыЗаказа.КоличествоУпаковок КАК КоличествоУпаковок
|ИЗ
| Документ.ЗаказПереработчику.ВозвратныеОтходы КАК ВозвратныеОтходыЗаказа
|ГДЕ
| ВозвратныеОтходыЗаказа.Ссылка = &Заказ";
ТекстИсходнаяТаблица = "Документ.ЗаказПереработчику.ВозвратныеОтходы КАК ВозвратныеОтходыЗаказа";
ТекстСоединениеШтучныйТоварВМернойЕдинице = ТекстИсходнаяТаблица + "
| //&СоединениеШтучныйТоварВМернойЕдинице";
Результат.ВозвратныеОтходы =
СтрЗаменить(Результат.ВозвратныеОтходы, ТекстИсходнаяТаблица, ТекстСоединениеШтучныйТоварВМернойЕдинице);
ПараметрыПрименения = ПроизводствоСервер.ПараметрыПримененияШтучногоТовараВМернойЕдинице();
ПараметрыПрименения.ШтучныйТоварВМерныхЕдиницах = Ложь;;
ПроизводствоСервер.ПрименитьНастройкиШтучногоТовараВМернойЕдинице(Результат.ВозвратныеОтходы, "ВозвратныеОтходыЗаказа", ПараметрыПрименения);
Результат.Услуги =
"ВЫБРАТЬ
| Услуги.НомерСтроки КАК НомерСтроки,
| Услуги.Номенклатура КАК Номенклатура,
| Услуги.Характеристика КАК Характеристика,
| Услуги.Спецификация КАК Спецификация,
| Услуги.Сумма КАК Сумма,
| Услуги.СуммаНДС КАК СуммаНДС,
| Услуги.СтавкаНДС КАК СтавкаНДС,
| Услуги.СтатьяКалькуляции КАК СтатьяКалькуляции,
| Услуги.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| Услуги.Распоряжение КАК Распоряжение
|ИЗ
| Документ.ЗаказПереработчику.Услуги КАК Услуги
|ГДЕ
| Услуги.Ссылка = &Заказ";
Результат.Материалы =
"ВЫБРАТЬ
| Материалы.НомерСтроки КАК НомерСтроки,
| Материалы.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| Материалы.Номенклатура КАК Номенклатура,
| Материалы.Характеристика КАК Характеристика,
| Материалы.Назначение КАК Назначение,
| Материалы.Упаковка КАК Упаковка,
| Материалы.СтатьяКалькуляции КАК СтатьяКалькуляции,
| Материалы.Количество КАК Количество,
| Материалы.КоличествоУпаковок КАК КоличествоУпаковок
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК Материалы
|ГДЕ
| (Материалы.Ссылка = &Заказ И НЕ Материалы.Отменено)";
ТекстИсходнаяТаблица = "Документ.ЗаказПереработчику.Материалы КАК Материалы";
ТекстСоединениеШтучныйТоварВМернойЕдинице = ТекстИсходнаяТаблица + "
| //&СоединениеШтучныйТоварВМернойЕдинице";
Результат.Материалы =
СтрЗаменить(Результат.Материалы, ТекстИсходнаяТаблица, ТекстСоединениеШтучныйТоварВМернойЕдинице);
ПараметрыПрименения = ПроизводствоСервер.ПараметрыПримененияШтучногоТовараВМернойЕдинице();
ПараметрыПрименения.ШтучныйТоварВМерныхЕдиницах = Ложь;;
ПроизводствоСервер.ПрименитьНастройкиШтучногоТовараВМернойЕдинице(Результат.Материалы, "Материалы", ПараметрыПрименения);
Возврат Результат;
КонецФункции
#КонецОбласти
#Область Проведение
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = ПолноеИмяОбъекта();
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("ГруппировкаЗатрат", "ТабличнаяЧасть.Ссылка.ГруппировкаЗатрат");
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоДоговору", """""");
ПереопределениеРасчетаПараметров.Вставить("НомерПоДаннымПартнера", """""");
ПереопределениеРасчетаПараметров.Вставить("ПодразделениеЭтапа", "ТабличнаяЧасть.Ссылка.Подразделение");
ПереопределениеРасчетаПараметров.Вставить("СрокПоставки", "ТабличнаяЧасть.Ссылка.Начало");
ПереопределениеРасчетаПараметров.Вставить("НалогообложениеНДС",
"ТабличнаяЧасть.Ссылка.Распоряжение.ЗаказПодДеятельность");
ПереопределениеРасчетаПараметров.Вставить("ДвиженияПоСкладскимРегистрам",
"ТабличнаяЧасть.Ссылка.Назначение.ДвиженияПоСкладскимРегистрам");
ПереопределениеРасчетаПараметров.Вставить("НакладнаяЯвляетсяРаспоряжением",
"ТаблицаТовары.Ссылка.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)");
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
Если ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "ТаблицаТовары";
ИначеЕсли ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
ВЗапросеЕстьИсточник = Ложь;
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПереработчику.Ссылка КАК ЗаказПереработчику,
| ЗаказПереработчику.Дата КАК Период,
| ЗаказПереработчику.Валюта КАК Валюта,
| ЛОЖЬ КАК ЦенаВключаетНДС,
| ЗаказПереработчику.Статус КАК Статус,
| ЗаказПереработчику.Партнер КАК Партнер,
| ЗаказПереработчику.Контрагент КАК Контрагент,
| ЗаказПереработчику.Организация КАК Организация,
| ЗаказПереработчику.Подразделение КАК Подразделение,
| ЗаказПереработчику.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЗаказПереработчику.Договор КАК Договор,
| ПРЕДСТАВЛЕНИЕ(ЗаказПереработчику.Договор) КАК ДоговорПредставление,
| ЗаказПереработчику.ГруппировкаЗатрат КАК ГруппировкаЗатрат,
| ЗаказПереработчику.Назначение КАК Назначение,
| ЗаказПереработчику.Приоритет КАК Приоритет,
| ЗаказПереработчику.ПереработкаПоЗаказу КАК ПереработкаПоЗаказу,
| ЗаказПереработчику.Менеджер КАК Менеджер,
| ЗаказПереработчику.Номер КАК Номер,
| ЗаказПереработчику.Комментарий КАК Комментарий,
| ЗаказПереработчику.СуммаДокумента КАК СуммаДокумента,
| ЗаказПереработчику.Проведен КАК Проведен,
| ЗаказПереработчику.ПометкаУдаления КАК ПометкаУдаления,
| ЗаказПереработчику.ДатаПоДаннымПартнера КАК ДатаПоДаннымПартнера,
| ЗаказПереработчику.НомерПоДаннымПартнера КАК НомерПоДаннымПартнера,
|
| ЗаказПереработчику.НаправлениеДеятельности КАК НаправлениеДеятельности,
|
| ЕСТЬNULL(ЗаказПереработчику.Договор.ЗаданГрафикИсполнения, ЛОЖЬ) КАК ГрафикИсполненияВДоговоре,
| ЗаказПереработчику.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров
|ИЗ
| Документ.ЗаказПереработчику КАК ЗаказПереработчику
|ГДЕ
| ЗаказПереработчику.Ссылка = &Ссылка
|";
Результат = Запрос.Выполнить();
Реквизиты = Результат.Выбрать();
Реквизиты.Следующий();
Для Каждого Колонка Из Результат.Колонки Цикл
Запрос.УстановитьПараметр(Колонка.Имя, Реквизиты[Колонка.Имя]);
КонецЦикла;
НакладнаяЯвляетсяРаспоряжением = ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(Реквизиты.ВариантПриемкиТоваров);
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ТипЗнч(ДокументСсылка)));
Запрос.УстановитьПараметр("НакладнаяЯвляетсяРаспоряжением", НакладнаяЯвляетсяРаспоряжением);
Если ЗначениеЗаполнено(Реквизиты.Договор) Тогда
ШаблонСтроки = НСтр("ru = 'По договору ""%1""'", ОбщегоНазначения.КодОсновногоЯзыка());
ИнформацияПоДоговору = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, Реквизиты.ДоговорПредставление);
КонецЕсли;
Запрос.УстановитьПараметр("ИнформацияПоДоговору", ИнформацияПоДоговору);
КонецПроцедуры
#Область ВременныеТаблицы
Функция ТекстЗапросаВтДатыПоступленияПродукции(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтДатыПоступленияПродукции";
ТекстЗапроса =
"ВЫБРАТЬ
| ДатыПоступления.Ссылка КАК Ссылка,
| ДатыПоступления.НомерГруппыЗатрат КАК НомерГруппыЗатрат,
| МАКСИМУМ(ДатыПоступления.ДатаПоступления) КАК ДатаПоступления
|ПОМЕСТИТЬ ВтДатыПоступленияПродукции
|ИЗ
| Документ.ЗаказПереработчику.Продукция КАК ДатыПоступления
|ГДЕ
| ДатыПоступления.Ссылка В (&Ссылка)
|
|СГРУППИРОВАТЬ ПО
| ДатыПоступления.Ссылка,
| ДатыПоступления.НомерГруппыЗатрат
| ";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
Процедура СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры = Неопределено) Экспорт
ТекстЗапросаДанных =
"ВЫБРАТЬ
| ""Услуги"" КАК ИсточникДанных,
| ЛОЖЬ КАК РаспределятьОбщуюСумму,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Ссылка.Дата КАК Дата,
| ТаблицаДокумента.Ссылка.Организация КАК Организация,
| ТаблицаДокумента.Ссылка.Валюта КАК ВалютаДокумента,
| НЕОПРЕДЕЛЕНО КАК ВалютаВзаиморасчетов,
| ДАТАВРЕМЯ(1,1,1) КАК ПериодБазыНДС,
| ТаблицаДокумента.Ссылка.Дата КАК ДатаКурса,
|
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| ТаблицаДокумента.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаДокумента.СуммаСНДС - ТаблицаДокумента.СуммаНДС КАК СуммаБезНДС,
| ТаблицаДокумента.СтавкаНДС КАК СтавкаНДС,
| ТаблицаДокумента.СуммаНДС КАК СуммаНДС,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК СуммаНДСВзаиморасчетов,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК СуммаБезНДСУпр,
|
| ИСТИНА КАК ОтражаетсяВРасчетах,
| ТаблицаДокумента.Ссылка.ОбъектРасчетов КАК ОбъектРасчетов,
| ЛОЖЬ КАК ПересчитыватьПоДаннымРасчетов
|ИЗ
| Документ.ЗаказПереработчику.Услуги КАК ТаблицаДокумента
|
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И ТаблицаДокумента.Ссылка.УслугиПоПереработке = ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете)
|";
РегистрыСведений.СуммыДокументовВВалютахУчета.СформироватьПоДаннымДокумента(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанных);
КонецПроцедуры
Функция ТекстЗапросаТаблицаЗаказыПоставщикам(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЗаказыПоставщикам";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| 1 КАК Порядок,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В
| (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| ТОГДА ТаблицаТовары.Получатель
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Склад,
| ВЫБОР КОГДА (НЕ ТаблицаТовары.Отменено)
| И &Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт)) ТОГДА
| ТаблицаТовары.Количество
| ИНАЧЕ
| 0
| КОНЕЦ КАК КОформлению,
| ТаблицаТовары.Количество КАК Заказано,
| НЕОПРЕДЕЛЕНО КАК ПричинаОтмены
|ИЗ
| Документ.ЗаказПереработчику.Продукция КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2 КАК Порядок,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В
| (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| ТОГДА ТаблицаТовары.Получатель
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Склад,
| 0 КАК КОформлению,
| -ТаблицаТовары.Количество КАК Заказано,
| ТаблицаТовары.ПричинаОтмены КАК ПричинаОтмены
|ИЗ
| Документ.ЗаказПереработчику.Продукция КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Отменено
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 3 КАК Порядок,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В
| (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| ТОГДА ТаблицаТовары.Получатель
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Склад,
| ВЫБОР КОГДА (НЕ ТаблицаТовары.Отменено)
| И &Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт)) ТОГДА
| ТаблицаТовары.Количество
| ИНАЧЕ
| 0
| КОНЕЦ КАК КОформлению,
| ТаблицаТовары.Количество КАК Заказано,
| НЕОПРЕДЕЛЕНО КАК ПричинаОтмены
|ИЗ
| Документ.ЗаказПереработчику.ВозвратныеОтходы КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 4 КАК Порядок,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказПоставщику,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В
| (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| ТОГДА ТаблицаТовары.Получатель
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Склад,
| 0 КАК КОформлению,
| -ТаблицаТовары.Количество КАК Заказано,
| ТаблицаТовары.ПричинаОтмены КАК ПричинаОтмены
|ИЗ
| Документ.ЗаказПереработчику.ВозвратныеОтходы КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Отменено
|
|УПОРЯДОЧИТЬ ПО
| Порядок,
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры)
#Область НаправленияДеятельности
ИмяРегистра = "ВременнаяТаблицаНаправленияДеятельности";
ТекстЗапросаНаправленияДеятельности =
"ВЫБРАТЬ
| ДанныеДокументаШапка.ОбъектРасчетов КАК ОбъектРасчетов
|ИЗ
| Документ.ЗаказПереработчику КАК ДанныеДокументаШапка
|ГДЕ
| ДанныеДокументаШапка.Ссылка В (&Ссылка)";
ТекстЗапросаНаправленияДеятельности = ВзаиморасчетыСервер.ПолучитьТаблицуНаправленийДеятельности(ТекстЗапросаНаправленияДеятельности);
ТекстыЗапроса.Добавить(ТекстЗапросаНаправленияДеятельности, ИмяРегистра);
#КонецОбласти
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтДатыПоступленияПродукции", ТекстыЗапроса) Тогда
ТекстЗапросаВтДатыПоступленияПродукции(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстПланыОплат =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Ссылка.Организация КАК Организация,
| Таблица.Ссылка.Партнер КАК Партнер,
|
| Таблица.Ссылка.ОбъектРасчетов КАК ОбъектРасчетов,
| Таблица.Ссылка.Дата КАК ДатаРегистратора,
| Таблица.Ссылка.Номер КАК НомерРегистратора,
| Таблица.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаВзаиморасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаДокумента,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПланированиеПоЗаказуПоставщику) КАК ХозяйственнаяОперация,
| Таблица.Ссылка.ФормаОплаты КАК ФормаОплаты,
|
| Таблица.ДатаПлатежа КАК ДатаПлатежа,
| Таблица.ВариантОплаты КАК ВариантОплаты,
| Таблица.СуммаПлатежа КАК КОплате
|
|ИЗ
| Документ.ЗаказПереработчику.ЭтапыГрафикаОплаты КАК Таблица
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
| И НЕ Таблица.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован)
|";
ТекстПланыПоставок =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Ссылка.Организация КАК Организация,
| Таблица.Ссылка.Партнер КАК Партнер,
|
| Таблица.Ссылка.ОбъектРасчетов КАК ОбъектРасчетов,
| Таблица.Ссылка.Дата КАК ДатаРегистратора,
| Таблица.Ссылка.Номер КАК НомерРегистратора,
| Таблица.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаВзаиморасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаДокумента,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПланированиеПоЗаказуПоставщику) КАК ХозяйственнаяОперация,
|
| ДатыПоступления.ДатаПоступления КАК ДатаПоступления,
| Таблица.СуммаСНДС КАК УвеличитьКПоступлению
|ИЗ
| Документ.ЗаказПереработчику.Услуги КАК Таблица
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДатыПоступленияПродукции КАК ДатыПоступления
| ПО ДатыПоступления.Ссылка = Таблица.Ссылка
| И ДатыПоступления.НомерГруппыЗатрат = Таблица.НомерГруппыЗатрат
|
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
| И Таблица.Ссылка.Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
|";
ВзаиморасчетыСервер.ПроведениеЗаказаПоставщику(Запрос, ТекстыЗапроса, Регистры, ТекстПланыОплат, ТекстПланыПоставок);
ВзаиморасчетыСервер.ПроведениеРасчетыСПоставщикамиПланОплат(Запрос, ТекстыЗапроса, Регистры, ТекстПланыОплат);
ВзаиморасчетыСервер.ПроведениеРасчетыСПоставщикамиПланПоставок(Запрос, ТекстыЗапроса, Регистры, ТекстПланыПоставок);
КонецПроцедуры
Процедура ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ИсточникДанных.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ВЫБОР
| КОГДА ИсточникДанных.Ссылка.ПереработкаПоЗаказу
| ТОГДА ТаблицаУслуги.Распоряжение
| ИНАЧЕ ИсточникДанных.Ссылка
| КОНЕЦ КАК Заказ,
| ИсточникДанных.Ссылка.Договор КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ИсточникДанных.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ИсточникДанных.ДатаПоступления КАК Дата,
| ИсточникДанных.Номенклатура КАК Номенклатура,
| ИсточникДанных.Характеристика КАК Характеристика,
| ИсточникДанных.Назначение КАК Назначение,
| 0 КАК СтатусУказанияСерий,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ЛОЖЬ КАК СверхЗаказа,
| ИсточникДанных.Получатель КАК Склад,
| ИсточникДанных.Ссылка.Партнер КАК Отправитель,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика) КАК ХозяйственнаяОперация,
| ИсточникДанных.Количество КАК Количество,
| ЛОЖЬ КАК ЭтоНакладная,
| ЛОЖЬ КАК ПоступлениеПоЗаказам
|ИЗ
| Документ.ЗаказПереработчику.Продукция КАК ИсточникДанных
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Услуги КАК ТаблицаУслуги
| ПО ТаблицаУслуги.Ссылка = ИсточникДанных.Ссылка
| И ТаблицаУслуги.НомерГруппыЗатрат = ИсточникДанных.НомерГруппыЗатрат
|
|ГДЕ
| ИсточникДанных.Ссылка В (&Ссылка)
| И НЕ ИсточникДанных.Отменено
| И НЕ ИсточникДанных.СписатьНаРасходы
| И НЕ ИсточникДанных.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ИсточникДанных.Ссылка.Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ИсточникДанных.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ВЫБОР
| КОГДА ИсточникДанных.Ссылка.ПереработкаПоЗаказу
| ТОГДА ТаблицаУслуги.Распоряжение
| ИНАЧЕ ИсточникДанных.Ссылка
| КОНЕЦ КАК Заказ,
| ИсточникДанных.Ссылка.Договор КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ИсточникДанных.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ИсточникДанных.ДатаПоступления КАК Дата,
| ИсточникДанных.Номенклатура КАК Номенклатура,
| ИсточникДанных.Характеристика КАК Характеристика,
| ИсточникДанных.Назначение КАК Назначение,
| 0 КАК СтатусУказанияСерий,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ЛОЖЬ КАК СверхЗаказа,
| ИсточникДанных.Получатель КАК Склад,
| ИсточникДанных.Ссылка.Партнер КАК Отправитель,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика) КАК ХозяйственнаяОперация,
| ИсточникДанных.Количество КАК Количество,
| ЛОЖЬ КАК ЭтоНакладная,
| ЛОЖЬ КАК ПоступлениеПоЗаказам
|ИЗ
| Документ.ЗаказПереработчику.ВозвратныеОтходы КАК ИсточникДанных
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Услуги КАК ТаблицаУслуги
| ПО ТаблицаУслуги.Ссылка = ИсточникДанных.Ссылка
| И ТаблицаУслуги.НомерГруппыЗатрат = ИсточникДанных.НомерГруппыЗатрат
|
|ГДЕ
| ИсточникДанных.Ссылка В (&Ссылка)
| И НЕ ИсточникДанных.Отменено
| И НЕ ИсточникДанных.СписатьНаРасходы
| И НЕ ИсточникДанных.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И ИсточникДанных.Ссылка.Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
|";
СкладыСервер.ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДокумента);
КонецПроцедуры
Функция ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| НАЧАЛОПЕРИОДА(&Период, День) КАК Период,
| ТаблицаТовары.Ссылка КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Склад КАК Склад,
| ВЫБОР
| КОГДА ТаблицаТовары.Отменено
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отменено)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Заказано)
| КОНЕЦ КАК Показатель,
| ТаблицаТовары.Количество КАК Количество,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.ДатаОтгрузки КАК Период,
| ТаблицаТовары.Ссылка КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаПоказателей.Ссылка КАК Показатель,
| ТаблицаТовары.Количество КАК Количество,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат КАК ТаблицаПоказателей
| ПО ТаблицаПоказателей.Ссылка В (ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОформлению),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке))
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И НЕ ТаблицаТовары.Отменено
| И &Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И ТаблицаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки,
| Показатель";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаУслугиПереработчиковКОформлению(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "УслугиПереработчиковКОформлению";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| Заказ.Ссылка КАК ЗаказПереработчику,
| Заказ.СуммаДокумента КАК Сумма
|ИЗ
| Документ.ЗаказПереработчику КАК Заказ
|ГДЕ
| Заказ.Ссылка = &Ссылка
| И Заказ.СуммаДокумента <> 0
| И &Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ДанныеИсточника.Ссылка КАК Ссылка,
| ВЫБОР КОГДА ДанныеИсточника.ДатаОтгрузки <> ДАТАВРЕМЯ(1, 1, 1) ТОГДА
| ДанныеИсточника.ДатаОтгрузки
| ИНАЧЕ
| ДанныеИсточника.Ссылка.Дата
| КОНЕЦ КАК Период,
| ДанныеИсточника.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеИсточника.Ссылка.Партнер КАК Получатель,
| ДанныеИсточника.Склад КАК Склад,
| ДанныеИсточника.Номенклатура КАК Номенклатура,
| ДанныеИсточника.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ДанныеИсточника.Обособленно
| ТОГДА ДанныеИсточника.Назначение
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ДанныеИсточника.Серия КАК Серия,
| ДанныеИсточника.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ДанныеИсточника.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ДанныеИсточника.Отменено КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ИСТИНА КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК ДанныеИсточника
|ГДЕ
| ДанныеИсточника.Ссылка В(&Ссылка)
| И НЕ ДанныеИсточника.Отменено
| И (ДанныеИсточника.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ИЛИ ДанныеИсточника.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ДанныеИсточника.Ссылка.Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КОбеспечению))
| )
|";
СкладыСервер.ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ДанныеИсточника.Ссылка КАК Ссылка,
| ДанныеИсточника.ДатаОтгрузки КАК Период,
| ДанныеИсточника.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеИсточника.Ссылка.Партнер КАК Получатель,
| ДанныеИсточника.Склад КАК Склад,
| ДанныеИсточника.Номенклатура КАК Номенклатура,
| ДанныеИсточника.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ДанныеИсточника.Обособленно
| ТОГДА ДанныеИсточника.Назначение
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ДанныеИсточника.Серия КАК Серия,
| ДанныеИсточника.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ДанныеИсточника.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ДанныеИсточника.Отменено КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ИСТИНА КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК ДанныеИсточника
|
|ГДЕ
| ДанныеИсточника.Ссылка В(&Ссылка)
| И ДанныеИсточника.Ссылка.Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И НЕ ДанныеИсточника.Отменено
| И ДанныеИсточника.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
|";
СкладыСервер.ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Обособленно ТОГДА
|
| ТабЧасть.Назначение
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
|
| ВЫБОР КОГДА НЕ ТабЧасть.Ссылка.ПереработкаПоЗаказу ТОГДА
| ТабЧасть.Ссылка
| КОНЕЦ КАК ЗапланированныйРасходРаспределенногоЗапаса,
|
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК ТабЧасть
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Услуги КАК ТаблицаУслуги
| ПО ТаблицаУслуги.НомерГруппыЗатрат = ТабЧасть.НомерГруппыЗатрат
| И ТаблицаУслуги.Ссылка = ТабЧасть.Ссылка
| И ТабЧасть.Ссылка.ПереработкаПоЗаказу
|ГДЕ
| НЕ ТабЧасть.Отменено
| И ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))
| И ТабЧасть.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Обособленно ТОГДА
|
| ТабЧасть.Назначение
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.ВариантОбеспечения КАК ВариантОбеспечения,
|
| ВЫБОР КОГДА НЕ ТабЧасть.Ссылка.ПереработкаПоЗаказу ТОГДА
| ТабЧасть.Ссылка
| КОНЕЦ КАК Заказ,
|
| ВЫБОР КОГДА ТабЧасть.Ссылка.НеОтгружатьЧастями ТОГДА
| ТабЧасть.Ссылка.ДатаОтгрузки
| ИНАЧЕ
| ТабЧасть.ДатаОтгрузки
| КОНЕЦ КАК ЖелаемаяДатаОтгрузки,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК ТабЧасть
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Услуги КАК ТаблицаУслуги
| ПО ТаблицаУслуги.НомерГруппыЗатрат = ТабЧасть.НомерГруппыЗатрат
| И ТаблицаУслуги.Ссылка = ТабЧасть.Ссылка
| И ТабЧасть.Ссылка.ПереработкаПоЗаказу
|ГДЕ
| (НЕ ТабЧасть.Отменено
| И ТабЧасть.Ссылка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован)
| И ТабЧасть.ВариантОбеспечения <> ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))";
РаспределениеЗапасовДвижения.ЗапланироватьРасходЗапаса(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаТабЧасть,
Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Обособленно ТОГДА
|
| ТабЧасть.Назначение
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада) КАК ВариантОбеспечения,
|
| ВЫБОР КОГДА НЕ ТабЧасть.Ссылка.ПереработкаПоЗаказу ТОГДА
| ТабЧасть.Ссылка
| КОНЕЦ КАК Заказ,
|
| ВЫБОР КОГДА ТабЧасть.Ссылка.НеОтгружатьЧастями ТОГДА
| ТабЧасть.Ссылка.ДатаОтгрузки
| ИНАЧЕ
| ТабЧасть.ДатаОтгрузки
| КОНЕЦ КАК ЖелаемаяДатаОтгрузки,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК ТабЧасть
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Услуги КАК ТаблицаУслуги
| ПО ТаблицаУслуги.НомерГруппыЗатрат = ТабЧасть.НомерГруппыЗатрат
| И ТаблицаУслуги.Ссылка = ТабЧасть.Ссылка
| И ТабЧасть.Ссылка.ПереработкаПоЗаказу
|ГДЕ
| НЕ ТабЧасть.Отменено
| И (ТабЧасть.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.НеСогласован)
| И ТабЧасть.ВариантОбеспечения В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
| ИЛИ ТабЧасть.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КОбеспечению)
| И ТабЧасть.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))";
РаспределениеЗапасовДвижения.ЗапланироватьРасходЗапаса(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаТабЧасть,
Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Получатель КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
|
| ВЫБОР КОГДА НЕ ТабЧасть.Ссылка.ПереработкаПоЗаказу ТОГДА
| ТабЧасть.Ссылка
| КОНЕЦ КАК Заказ,
|
| ТабЧасть.ДатаПоступления КАК ДатаПоступления,
| ИСТИНА КАК ДоступенДляРасхода,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказПереработчику.Продукция КАК ТабЧасть
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Услуги КАК ТаблицаУслуги
| ПО ТаблицаУслуги.НомерГруппыЗатрат = ТабЧасть.НомерГруппыЗатрат
| И ТаблицаУслуги.Ссылка = ТабЧасть.Ссылка
| И ТабЧасть.Ссылка.ПереработкаПоЗаказу
|ГДЕ
| НЕ ТабЧасть.Отменено
| И НЕ ТабЧасть.СписатьНаРасходы
| И ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))";
РаспределениеЗапасовДвижения.ЗапланироватьПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Получатель КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
|
| ВЫБОР КОГДА НЕ ТабЧасть.Ссылка.ПереработкаПоЗаказу ТОГДА
| ТабЧасть.Ссылка
| КОНЕЦ КАК Заказ,
|
| ТабЧасть.ДатаПоступления КАК ДатаПоступления,
| ИСТИНА КАК ДоступенДляРасхода,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказПереработчику.ВозвратныеОтходы КАК ТабЧасть
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Услуги КАК ТаблицаУслуги
| ПО ТаблицаУслуги.НомерГруппыЗатрат = ТабЧасть.НомерГруппыЗатрат
| И ТаблицаУслуги.Ссылка = ТабЧасть.Ссылка
| И ТабЧасть.Ссылка.ПереработкаПоЗаказу
|ГДЕ
| НЕ ТабЧасть.Отменено
| И НЕ ТабЧасть.СписатьНаРасходы
| И ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.КИсполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовПереработчикам.Закрыт))";
РаспределениеЗапасовДвижения.ЗапланироватьПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Ложь);
КонецПроцедуры
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Если ПравоДоступа("Изменение", Метаданные.Документы.ЗаказПереработчику) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьЗаказовНаТоварыУслуги";
КомандаПечати.Идентификатор = "ЗаказПереработчикуНаУслуги";
КомандаПечати.Представление = НСтр("ru = 'Заказ переработчику на услуги по выпуску продукции'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьЗаказовНаТоварыУслуги";
КомандаПечати.Идентификатор = "ЗаказПереработчикаНаСырье";
КомандаПечати.Представление = НСтр("ru = 'Заказ переработчика на сырье и материалы'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
КонецПроцедуры
Функция ПолучитьДанныеДляПечатнойФормыЗаказаНаСырьеИМатериалы(МассивОбъектов, ПараметрыПечати, КодЯзыка = Неопределено) Экспорт
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Номер КАК Номер,
| Документы.Дата КАК Дата,
| Документы.Организация КАК Организация,
| Документы.Организация КАК Исполнитель,
|
| ЛОЖЬ КАК УчитыватьНДС,
| ЛОЖЬ КАК ЦенаВключаетНДС,
| ЛОЖЬ КАК ОперацияОблагаетсяНДСУПокупателя,
|
| Документы.Организация.Префикс КАК Префикс,
| Документы.Контрагент КАК Контрагент,
| Документы.Контрагент КАК Заказчик,
| Документы.БанковскийСчет КАК БанковскийСчет,
| Документы.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| Документы.Валюта КАК Валюта,
| Документы.Менеджер.ФизическоеЛицо.Наименование КАК Менеджер,
| Документы.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
|
| Документы.АдресДоставки КАК АдресДоставки,
| НЕОПРЕДЕЛЕНО КАК Грузоотправитель,
| НЕОПРЕДЕЛЕНО КАК Грузополучатель,
| ЛОЖЬ КАК ПоказыватьНДСВСтроках,
| ЛОЖЬ КАК ИспользоватьАвтоСкидки,
| """" КАК Тип,
| &ПредставлениеДокумента КАК ПредставлениеДокумента,
| &ПредставлениеВОшибке КАК ПредставлениеВОшибке
|
|ИЗ
| Документ.ЗаказПереработчику КАК Документы
|
|ГДЕ
| Документы.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Документы.МоментВремени
|;
|
|
|ВЫБРАТЬ
| НЕОПРЕДЕЛЕНО КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК ДатаПлатежа,
| НЕОПРЕДЕЛЕНО КАК ВариантОплаты,
| НЕОПРЕДЕЛЕНО КАК ПроцентПлатежа,
| НЕОПРЕДЕЛЕНО КАК СуммаПлатежа
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.НомерСтроки КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК ВидЦеныИсполнителя,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Номенклатура.Код КАК Код,
| Товары.Номенклатура.Артикул КАК Артикул,
| ЕСТЬNULL(НоменклатураПредставления.НаименованиеПолное, Товары.Номенклатура.НаименованиеПолное) КАК НаименованиеПолное,
| Товары.ДатаОтгрузки КАК ДатаОтгрузки,
| ЕСТЬNULL(ХарактеристикиНоменклатурыПредставления.НаименованиеПолное, ЕСТЬNULL(Товары.Характеристика.НаименованиеПолное, """")) КАК Характеристика,
| """" КАК Содержание,
|
| Товары.КоличествоУпаковок КАК Количество,
|
| Товары.Цена КАК Цена,
| 0 КАК СуммаСкидки,
| Товары.Сумма КАК СуммаБезСкидки,
| Товары.Сумма КАК Сумма,
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
| 0 КАК СуммаНДС,
|
| ВЫБОР
| КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзыкСистемы ТОГДА
| ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ Товары.Номенклатура.ЕдиницаИзмерения.МеждународноеСокращение
| КОНЕЦ
| ИНАЧЕ
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзыкСистемы ТОГДА
| ПРЕДСТАВЛЕНИЕ(Товары.Упаковка)
| ИНАЧЕ Товары.Упаковка.МеждународноеСокращение
| КОНЕЦ
| КОНЕЦ КАК ЕдиницаИзмерения,
|
| ВЫБОР КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1 ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Товары.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
|
| ВЫБОР КОГДА Товары.Ссылка.ВернутьМногооборотнуюТару
| И Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара
|
|ИЗ
| Документ.ЗаказПереработчику.Материалы КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураПредставления
| ПО (Товары.Номенклатура = НоменклатураПредставления.Ссылка
| И НоменклатураПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыПредставления
| ПО (Товары.Характеристика = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
|
|ГДЕ
| Товары.Ссылка В(&МассивОбъектов)
| И Товары.Отменено = ЛОЖЬ
|
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ПредставлениеДокумента", НСтр("ru = 'Заказ переработчика на сырье и материалы'", ОбщегоНазначения.КодОсновногоЯзыка()));
Запрос.УстановитьПараметр("ПредставлениеВОшибке", НСтр("ru = 'заказа переработчика'"));
Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка);
Запрос.УстановитьПараметр("ЭтоОсновнойЯзыкСистемы", КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка() Или КодЯзыка = Неопределено);
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[0]);
СтруктураДанныхДляПечати.Вставить("РезультатПоЭтапамОплаты", ПакетРезультатовЗапроса[1]);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", ПакетРезультатовЗапроса[ПакетРезультатовЗапроса.ВГраница()]);
Возврат СтруктураДанныхДляПечати;
КонецФункции
Функция ПолучитьДанныеДляПечатнойФормыЗаказаНаУслуги(МассивОбъектов, ПараметрыПечати, КодЯзыка = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Номер КАК Номер,
| Документы.Дата КАК Дата,
| Документы.Организация КАК Организация,
| Документы.Организация КАК Заказчик,
|
| ЛОЖЬ КАК УчитыватьНДС,
| ЛОЖЬ КАК ЦенаВключаетНДС,
| ЛОЖЬ КАК ОперацияОблагаетсяНДСУПокупателя,
|
| Документы.Организация.Префикс КАК Префикс,
| Документы.Контрагент КАК Контрагент,
| Документы.Контрагент КАК Исполнитель,
| Документы.БанковскийСчет КАК БанковскийСчет,
| Документы.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| Документы.Валюта КАК Валюта,
| Документы.Менеджер.ФизическоеЛицо.Наименование КАК Менеджер,
| Документы.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
|
| """" КАК АдресДоставки,
| НЕОПРЕДЕЛЕНО КАК Грузоотправитель,
| НЕОПРЕДЕЛЕНО КАК Грузополучатель,
| ЛОЖЬ КАК ПоказыватьНДСВСтроках,
| ЛОЖЬ КАК ИспользоватьАвтоСкидки,
| ""ЗаказПереработчикуНаУслуги"" КАК Тип,
| &ПредставлениеДокумента КАК ПредставлениеДокумента,
| &ПредставлениеВОшибке КАК ПредставлениеВОшибке
|
|ИЗ
| Документ.ЗаказПереработчику КАК Документы
|ГДЕ
| Документы.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Документы.МоментВремени
|;
|
|
|ВЫБРАТЬ
| НЕОПРЕДЕЛЕНО КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК ДатаПлатежа,
| НЕОПРЕДЕЛЕНО КАК ВариантОплаты,
| НЕОПРЕДЕЛЕНО КАК ПроцентПлатежа,
| НЕОПРЕДЕЛЕНО КАК СуммаПлатежа
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Номенклатура.Код КАК Код,
| Товары.Номенклатура.Артикул КАК Артикул,
| ЕСТЬNULL(НоменклатураПредставления.НаименованиеПолное, Товары.Номенклатура.НаименованиеПолное) КАК НаименованиеПолное,
| Товары.ДатаПоступления КАК ДатаПоступления,
| ЕСТЬNULL(ХарактеристикиНоменклатурыПредставления.НаименованиеПолное, ЕСТЬNULL(Товары.Характеристика.НаименованиеПолное, """")) КАК Характеристика,
| """" КАК Содержание,
|
| НЕОПРЕДЕЛЕНО КАК ВидЦеныИсполнителя,
|
| ВЫБОР
| КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзыкСистемы ТОГДА
| ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ Товары.Номенклатура.ЕдиницаИзмерения.МеждународноеСокращение
| КОНЕЦ
| ИНАЧЕ
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзыкСистемы ТОГДА
| ПРЕДСТАВЛЕНИЕ(Товары.Упаковка)
| ИНАЧЕ Товары.Упаковка.МеждународноеСокращение
| КОНЕЦ
| КОНЕЦ КАК ЕдиницаИзмерения,
|
| Товары.КоличествоУпаковок КАК Количество,
|
| 0 КАК Цена,
| 0 КАК Сумма,
| 0 КАК СуммаНДС,
| 0 КАК СуммаСкидки,
| 0 КАК СуммаБезСкидки,
|
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
|
| ВЫБОР КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1 ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Товары.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
|
| ЛОЖЬ КАК ЭтоВозвратнаяТара
|
|ИЗ
| Документ.ЗаказПереработчику КАК Заказ
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.ЗаказПереработчику.Продукция КАК Товары
| ПО
| Заказ.Ссылка В(&МассивОбъектов)
| И Заказ.Ссылка = Товары.Ссылка
| И Товары.Отменено = ЛОЖЬ
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураПредставления
| ПО (Товары.Номенклатура = НоменклатураПредставления.Ссылка
| И НоменклатураПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыПредставления
| ПО (Товары.Характеристика = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Номенклатура.Код КАК Код,
| Товары.Номенклатура.Артикул КАК Артикул,
| ЕСТЬNULL(НоменклатураПредставления.НаименованиеПолное, Товары.Номенклатура.НаименованиеПолное) КАК НаименованиеПолное,
| Товары.ДатаПоступления КАК ДатаПоступления,
| ЕСТЬNULL(ХарактеристикиНоменклатурыПредставления.НаименованиеПолное, ЕСТЬNULL(Товары.Характеристика.НаименованиеПолное, """")) КАК Характеристика,
| """" КАК Содержание,
|
| НЕОПРЕДЕЛЕНО КАК ВидЦеныИсполнителя,
|
| ВЫБОР
| КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзыкСистемы ТОГДА
| ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ Товары.Номенклатура.ЕдиницаИзмерения.МеждународноеСокращение
| КОНЕЦ
| ИНАЧЕ
| ВЫБОР
| КОГДА &ЭтоОсновнойЯзыкСистемы ТОГДА
| ПРЕДСТАВЛЕНИЕ(Товары.Упаковка)
| ИНАЧЕ Товары.Упаковка.МеждународноеСокращение
| КОНЕЦ
| КОНЕЦ КАК ЕдиницаИзмерения,
|
| Товары.КоличествоУпаковок КАК Количество,
|
| Товары.Цена КАК Цена,
| Товары.Сумма КАК Сумма,
| 0 КАК СуммаНДС,
| 0 КАК СуммаСкидки,
| Товары.Сумма КАК СуммаБезСкидки,
|
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
|
| ВЫБОР КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1 ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Товары.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
|
| ЛОЖЬ КАК ЭтоВозвратнаяТара
|
|ИЗ
| Документ.ЗаказПереработчику КАК Заказ
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.ЗаказПереработчику.ВозвратныеОтходы КАК Товары
| ПО
| Заказ.Ссылка В(&МассивОбъектов)
| И Заказ.Ссылка = Товары.Ссылка
| И Товары.Отменено = ЛОЖЬ
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураПредставления
| ПО (Товары.Номенклатура = НоменклатураПредставления.Ссылка
| И НоменклатураПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыПредставления
| ПО (Товары.Характеристика = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
|
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ПредставлениеДокумента", НСтр("ru = 'Заказ переработчику на услуги по выпуску продукции'"));
Запрос.УстановитьПараметр("ПредставлениеВОшибке", НСтр("ru = 'заказа переработчику'"));
Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка);
Запрос.УстановитьПараметр("ЭтоОсновнойЯзыкСистемы", КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка() Или КодЯзыка = Неопределено);
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[0]);
СтруктураДанныхДляПечати.Вставить("РезультатПоЭтапамОплаты", ПакетРезультатовЗапроса[1]);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", ПакетРезультатовЗапроса[2]);
Возврат СтруктураДанныхДляПечати;
КонецФункции
#КонецОбласти
#Область Прочее
Функция ТекстЗапросаВТТоварыРаспоряженияПоступлениеЗаказ()
ТекстЗапроса = "
|
|////////////////////////////////////////////////////////////////////////////////
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВложенныйЗапросДанные.Номенклатура КАК Номенклатура,
| ВложенныйЗапросДанные.Характеристика КАК Характеристика,
| ВложенныйЗапросДанные.Упаковка КАК Упаковка,
| СУММА(ВложенныйЗапросДанные.Количество) КАК Количество,
| СУММА(ВложенныйЗапросДанные.КоличествоУпаковок) КАК КоличествоУпаковок,
| СУММА(ВложенныйЗапросДанные.СуммаСНДС) КАК СуммаСНДС,
| ВложенныйЗапросДанные.Склад КАК Склад,
| ВложенныйЗапросДанные.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТТоварыРаспоряженияПоступление
|ИЗ
| (ВЫБРАТЬ
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| СУММА(ДокументТовары.Количество) КАК Количество,
| СУММА(ДокументТовары.КоличествоУпаковок) КАК КоличествоУпаковок,
| 0 КАК СуммаСНДС,
| ВЫБОР
| КОГДА ДокументТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ ДокументТовары.Получатель
| КОНЕЦ КАК Склад,
| ВтДокументы.ДокументСсылка КАК Ссылка
| ИЗ
| Документ.ЗаказПереработчику.Продукция КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО (ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка)
| ГДЕ
| НЕ ДокументТовары.Отменено
| И ВтДокументы.Проведен
|
| СГРУППИРОВАТЬ ПО
| ДокументТовары.Номенклатура,
| ДокументТовары.Характеристика,
| ДокументТовары.Упаковка,
| ВЫБОР
| КОГДА ДокументТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ ДокументТовары.Получатель
| КОНЕЦ,
| ВтДокументы.ДокументСсылка,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ ДокументТовары.Упаковка
| КОНЕЦ
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ДокументТовары.Номенклатура,
| ДокументТовары.Характеристика,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ ДокументТовары.Упаковка
| КОНЕЦ,
| СУММА(ДокументТовары.Количество),
| СУММА(ДокументТовары.КоличествоУпаковок),
| СУММА(ДокументТовары.Сумма),
| ВЫБОР
| КОГДА ДокументТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ ДокументТовары.Получатель
| КОНЕЦ КАК Склад,
| ВтДокументы.ДокументСсылка
| ИЗ
| Документ.ЗаказПереработчику.ВозвратныеОтходы КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО (ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка)
| ГДЕ
| НЕ ДокументТовары.Отменено
| И ВтДокументы.Проведен
|
| СГРУППИРОВАТЬ ПО
| ДокументТовары.Номенклатура,
| ДокументТовары.Характеристика,
| ДокументТовары.Упаковка,
| ВЫБОР
| КОГДА ДокументТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ ДокументТовары.Получатель
| КОНЕЦ,
| ВтДокументы.ДокументСсылка,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ ДокументТовары.Упаковка
| КОНЕЦ
|
|) КАК ВложенныйЗапросДанные
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапросДанные.Номенклатура,
| ВложенныйЗапросДанные.Характеристика,
| ВложенныйЗапросДанные.Упаковка,
| ВложенныйЗапросДанные.Склад,
| ВложенныйЗапросДанные.Ссылка
|
|;";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаОтмененоПоступление()
ТекстЗапроса = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВтДокументы.ДокументСсылка КАК Документ,
| ДокументТовары.НомерСтроки КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.КоличествоУпаковок КАК Количество,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| ДокументТовары.ПричинаОтмены КАК ПричинаОтмены,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказПереработчику.Продукция КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка
|ГДЕ
| ДокументТовары.Отменено
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК Документ,
| ДокументТовары.НомерСтроки КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.КоличествоУпаковок КАК Количество,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| ДокументТовары.ПричинаОтмены КАК ПричинаОтмены,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказПереработчику.ВозвратныеОтходы КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка
|ГДЕ
| ДокументТовары.Отменено
|
|ИТОГИ ПО
| Документ
|;";
Возврат ТекстЗапроса;
КонецФункции
Функция КоэффициентНормативов(ФактическаяПродукция, НормативнаяПродукция, Наибольший = Истина) Экспорт
Коэффициент = Неопределено;
СтруктураПоиска = Новый Структура("Номенклатура,Характеристика");
Для каждого СтрокаФакт Из ФактическаяПродукция Цикл
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаФакт);
СписокСтрок = НормативнаяПродукция.НайтиСтроки(СтруктураПоиска);
Для каждого СтрокаНорматив Из СписокСтрок Цикл
НовыйКоэффициент = СтрокаФакт.Количество / СтрокаНорматив.Количество;
Если Наибольший Тогда
Коэффициент = ?(Коэффициент <> Неопределено, Макс(НовыйКоэффициент, Коэффициент), НовыйКоэффициент);
Иначе
Коэффициент = ?(Коэффициент <> Неопределено, Мин(НовыйКоэффициент, Коэффициент), НовыйКоэффициент);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Возврат ?(Коэффициент = Неопределено, 0, Коэффициент);
КонецФункции
Процедура ЗаполнитьПоНормативам(Приемник, Нормативы, КоэффициентНормативов, НомерГруппыЗатрат, ИмяПоляГруппаЗатрат, ДопЗначения = Неопределено, ПроверитьОкруглениеНормативов = Ложь) Экспорт
ЕстьКоэффициентУпаковки = Нормативы.Количество()
И ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(Нормативы[0], "КоэффициентУпаковки");
Для каждого СтрокаЗаказа Из Нормативы Цикл
СтрокаДокумента = Приемник.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДокумента, СтрокаЗаказа);
Если ПроверитьОкруглениеНормативов И СтрокаЗаказа.КоличествоОкруглено Тогда
СтрокаДокумента.КоличествоУпаковок = СтрокаДокумента.КоличествоУпаковок * КоэффициентНормативов;
СтрокаДокумента.Количество = ?(ЕстьКоэффициентУпаковки,
Окр(СтрокаЗаказа.КоличествоУпаковок * СтрокаЗаказа.КоэффициентУпаковки, 0),
Окр(СтрокаЗаказа.КоличествоУпаковок * СтрокаЗаказа.ДанныеУпаковки.Числитель / СтрокаЗаказа.ДанныеУпаковки.Знаменатель, 0));
Иначе
СтрокаДокумента.Количество = СтрокаЗаказа.Количество * КоэффициентНормативов;
СтрокаДокумента.КоличествоУпаковок = ?(ЕстьКоэффициентУпаковки,
СтрокаДокумента.Количество / СтрокаЗаказа.КоэффициентУпаковки,
СтрокаДокумента.Количество * СтрокаЗаказа.ДанныеУпаковки.Знаменатель / СтрокаЗаказа.ДанныеУпаковки.Числитель);
КонецЕсли;
СтрокаДокумента[ИмяПоляГруппаЗатрат] = НомерГруппыЗатрат;
Если ДопЗначения <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтрокаДокумента, ДопЗначения);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура УстановитьУсловноеОформлениеСписка(Список) Экспорт
СписокУсловноеОформление = Список.КомпоновщикНастроек.Настройки.УсловноеОформление;
СписокУсловноеОформление.Элементы.Очистить();
Элемент = СписокУсловноеОформление.Элементы.Добавить();
Элемент.Представление = НСтр("ru = 'Документ имеет высокий приоритет'");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Приоритет");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Справочники.Приоритеты.ПолучитьВысшийПриоритет();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаУдаления");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ВысокийПриоритетДокумента);
Элемент = СписокУсловноеОформление.Элементы.Добавить();
Элемент.Представление = НСтр("ru = 'Документ имеет низкий приоритет'");
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Приоритет");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Справочники.Приоритеты.ПолучитьНизшийПриоритет();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПометкаУдаления");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.НизкийПриоритетДокумента);
КонецПроцедуры
Функция ПолноеИмяОбъекта()
Возврат "Документ.ЗаказПереработчику";
КонецФункции
Функция СуммыПоЗаказам(СсылкаОбъект, ЗначенияРеквизитов = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| Услуги.СуммаСНДС КАК Сумма
|ПОМЕСТИТЬ ВТТовары
|ИЗ &ТаблицаЗначений КАК Услуги
|ГДЕ &УсловиеСсылка
|;
|ВЫБРАТЬ
| &Ссылка КАК Заказ,
| &Дата КАК Дата,
| &ДатаСогласования КАК ДатаСогласования,
| &Дата КАК ДатаОтгрузки,
| СУММА(Товары.Сумма) КАК СуммаПлатежа,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК СуммаЗалогаЗаТару,
| 0 КАК СуммаВзаиморасчетовПоТаре
|ИЗ ВТТовары КАК Товары
|;";
Если ЗначенияРеквизитов = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТаблицаЗначений", "Документ.ЗаказПереработчику.Услуги");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Дата", "Услуги.Ссылка.Дата");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ДатаСогласования", "Услуги.Ссылка.ДатаСогласования");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеСсылка", "Услуги.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка",СсылкаОбъект);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеСсылка", "ИСТИНА");
Для Каждого КлючЗначение Из ЗначенияРеквизитов Цикл
Запрос.УстановитьПараметр(КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;
КонецЕсли;
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
Функция СтруктураСостоянияРасчетов()
СтруктураСостоянияРасчетов = Новый Структура;
СтруктураСостоянияРасчетов.Вставить("Состояние", Перечисления.СостоянияЗаказовПереработчикам.ПустаяСсылка());
СтруктураСостоянияРасчетов.Вставить("СостояниеПросрочено", Ложь);
СтруктураСостоянияРасчетов.Вставить("СуммаОплаты", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентОплаты", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаПоступления", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентПоступления", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаПросроченнойОплаты", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаДолга", 0);
СтруктураСостоянияРасчетов.Вставить("ПроцентДолга", 0);
СтруктураСостоянияРасчетов.Вставить("СуммаКОплате", 0);
Возврат СтруктураСостоянияРасчетов
КонецФункции
#КонецОбласти
#Область КорректировкаЗаказа
Функция ДопустимыеОтклоненияМерныхТоваров(СписокРаспоряжений, ТипДвиженияЗапасов) Экспорт
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров = Константы.ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров.Получить();
Если Не ЗначениеЗаполнено(СписокРаспоряжений) Или ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров = 0 Тогда
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Заказ");
Таблица.Колонки.Добавить("Номенклатура");
Таблица.Колонки.Добавить("Характеристика");
Таблица.Колонки.Добавить("Склад");
Если ТипДвиженияЗапасов = Перечисления.ТипыДвиженияЗапасов.Отгрузка Тогда
Таблица.Колонки.Добавить("Серия");
КонецЕсли;
Таблица.Колонки.Добавить("ДопустимоеОтклонение");
Возврат Таблица;
КонецЕсли;
Если ТипЗнч(СписокРаспоряжений) = Тип("ДокументСсылка.ЗаказПереработчику") Тогда
МассивРаспоряжений = Новый Массив();
МассивРаспоряжений.Добавить(СписокРаспоряжений);
Иначе
МассивРаспоряжений = СписокРаспоряжений;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивРаспоряжений", МассивРаспоряжений);
Если ТипДвиженияЗапасов = Перечисления.ТипыДвиженияЗапасов.Поступление Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыКПоступлению.ЗаказПоставщику КАК Заказ,
| ТоварыКПоступлению.Номенклатура КАК Номенклатура,
| ТоварыКПоступлению.Характеристика КАК Характеристика,
| ТоварыКПоступлению.Склад КАК Склад,
| СУММА(ТоварыКПоступлению.КОформлениюПриход
| * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК ДопустимоеОтклонение
|ИЗ
| РегистрНакопления.ЗаказыПоставщикам.Обороты(&НачПериод, &КонПериод,
| , ЗаказПоставщику В (&МассивРаспоряжений)) КАК ТоварыКПоступлению
|ГДЕ
| ТоварыКПоступлению.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)
|СГРУППИРОВАТЬ ПО
| ТоварыКПоступлению.Номенклатура,
| ТоварыКПоступлению.Характеристика,
| ТоварыКПоступлению.ЗаказПоставщику,
| ТоварыКПоступлению.Склад";
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ЗаказыПоставщикам",
"ЗаказПоставщику В (&МассивРаспоряжений)", Запрос.Параметры);
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыКОтгрузке.Распоряжение КАК Заказ,
| ТоварыКОтгрузке.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузке.Характеристика КАК Характеристика,
| ТоварыКОтгрузке.Серия КАК Серия,
| ТоварыКОтгрузке.Склад КАК Склад,
| СУММА(ТоварыКОтгрузке.КОформлениюКоличествоОборот * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК
| ДопустимоеОтклонение
|ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая КАК ТоварыКОтгрузке
|СГРУППИРОВАТЬ ПО
| ТоварыКОтгрузке.Распоряжение,
| ТоварыКОтгрузке.Номенклатура,
| ТоварыКОтгрузке.Характеристика,
| ТоварыКОтгрузке.Серия,
| ТоварыКОтгрузке.Склад";
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.НачалоПериода = "&НачПериод";
ПараметрыФормированияТаблицы.КонецПериода = "&КонПериод";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В (&МассивРаспоряжений)
| И Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, Склад, Серия";
ПараметрыФормированияТаблицы.Показатели = "КОформлению";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
РаспоряженияНаОтгрузкуОборотыРазвернутая =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая",
РаспоряженияНаОтгрузкуОборотыРазвернутая);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра(
"РаспоряженияНаОтгрузкуИВозврат",
"Распоряжение В (&МассивРаспоряжений)",
Запрос.Параметры);
КонецЕсли;
Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
Запрос.УстановитьПараметр("НачПериод", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериод", ГраницыОборотов.МаксимальнаяДата);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#КонецОбласти
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Партнер КАК Партнер,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Подразделение КАК Подразделение,
| &Менеджер КАК Ответственный,
| &Комментарий КАК Комментарий,
| &Валюта КАК Валюта,
| &СуммаДокумента КАК Сумма,
| &Статус КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| &ИнформацияПоДоговору КАК Дополнительно,
| &ДатаПоДаннымПартнера КАК ДатаПервичногоДокумента,
| &НомерПоДаннымПартнера КАК НомерПервичногоДокумента,
| ЛОЖЬ КАК СторноИсправление,
| НЕОПРЕДЕЛЕНО КАК СторнируемыйДокумент,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| &Период КАК ДатаОтраженияВУчете,
| &Приоритет КАК Приоритет";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
#Область ФормированиеГиперссылкиВЖурналеДокументыПродажи
Функция СформироватьГиперссылкуСмТакжеВРаботе(Параметры) Экспорт
Если Не (ПравоДоступа("Изменение", Метаданные.Документы.ЗаказПереработчику)
И ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне")) Тогда
Возврат Неопределено;
КонецЕсли;
ТекстГиперссылки = НСтр("ru = 'Заказы переработчикам'");
Возврат Новый ФорматированнаяСтрока(ТекстГиперссылки,,,, ИмяФормыРабочееМесто());
КонецФункции
Функция ИмяФормыРабочееМесто() Экспорт
Возврат "Документ.ЗаказПереработчику.Форма.РабочееМесто";
КонецФункции
#КонецОбласти
#Область Назначения
Функция ШаблонНазначения(Объект) Экспорт
ШаблонНазначения = Справочники.Назначения.ШаблонНового();
Если НаправленияДеятельностиСервер.ЭтоНаправлениеДеятельностиСОбособлениемТоваровИРабот(Объект.НаправлениеДеятельности) Тогда
ШаблонНазначения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЕсли;
ВариантОбособления = Константы.ВариантОбособленияМатериаловВПереработке.Получить();
Если ВариантОбособления = Перечисления.ВариантыОбособленияПриПередачеВПереработку.ДоговорСПереработчиком Тогда
ШаблонНазначения.Партнер = Объект.Партнер;
ШаблонНазначения.Договор = Объект.Договор;
ИначеЕсли ВариантОбособления <> Перечисления.ВариантыОбособленияПриПередачеВПереработку.НаправлениеДеятельности
Или Не ЗначениеЗаполнено(ШаблонНазначения.НаправлениеДеятельности) Тогда
ШаблонНазначения.Заказ = Объект.Ссылка;
КонецЕсли;
Возврат ШаблонНазначения;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли