#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("ОборотныеРегистрыУправленческогоУчета");
МеханизмыДокумента.Добавить("ОперативныйУчетТоваровОрганизаций");
МеханизмыДокумента.Добавить("ПриемНаОтветхранение");
МеханизмыДокумента.Добавить("Производство");
МеханизмыДокумента.Добавить("РегламентированныйУчет");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СебестоимостьИПартионныйУчет");
МеханизмыДокумента.Добавить("СерийныйУчет");
МеханизмыДокумента.Добавить("АдресныйСклад");
МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
МеханизмыДокумента.Добавить("УчетРабот");
МеханизмыДокумента.Добавить("УчетНДС");
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ПередачаМатериаловВПроизводство") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыОрганизацийКПередаче(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРасчетыЗатратВПроизводствеПоследовательность(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаМатериалыИРаботыВПроизводстве(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаПартииПроизводственныхЗатрат(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаЗаказыМатериаловВПроизводство(Запрос, ТекстыЗапроса, Регистры);
РасчетСебестоимостиПроведениеДокументов.ОтразитьВМеханизмеУчетаЗатратИСебестоимости(ДокументСсылка, Запрос, ТекстыЗапроса, Регистры);
РеглУчетПроведениеСервер.ТекстЗапросаТаблицаОтражениеДокументовВРеглУчете(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
#Область Заполнение
Функция ПараметрыЗаполненияДокумента() Экспорт
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("МассивЗаказов", Неопределено);
ПараметрыЗаполнения.Вставить("ФормаОткрыта", Ложь);
ПараметрыЗаполнения.Вставить("ЗаполнятьПоОрдеру", Неопределено);
ПараметрыЗаполнения.Вставить("РеквизитыШапки", Неопределено);
ПараметрыЗаполнения.Вставить("Отправитель", Справочники.Склады.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("Получатель", Справочники.СтруктураПредприятия.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("ИмяДокумента", "ПередачаМатериаловВПроизводство");
ПараметрыЗаполнения.Вставить("ИмяРегистраЗаказ", "ЗаказыМатериаловВПроизводство");
ПараметрыЗаполнения.Вставить("ИмяПоляЗаказ", "Распоряжение");
ПараметрыЗаполнения.Вставить("КлючевыеПоля", "Номенклатура, Характеристика, Серия, Назначение, НазначениеОтправителя");
Возврат ПараметрыЗаполнения;
КонецФункции
Процедура ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения, РеквизитыШапки, МассивЗаказов) Экспорт
ПараметрыЗаполнения.МассивЗаказов = МассивЗаказов;
ПараметрыЗаполнения.РеквизитыШапки = РеквизитыШапки;
Если Не ЗначениеЗаполнено(ПараметрыЗаполнения.Отправитель) Тогда
ПараметрыЗаполнения.Отправитель = РеквизитыШапки.Склад;
КонецЕсли;
Если Не ЗначениеЗаполнено(ПараметрыЗаполнения.Получатель) Тогда
ПараметрыЗаполнения.Получатель = РеквизитыШапки.Подразделение;
КонецЕсли;
Если ПараметрыЗаполнения.ЗаполнятьПоОрдеру = Неопределено Тогда
ПараметрыЗаполнения.ЗаполнятьПоОрдеру = НакладныеСервер.ЗаполнятьПоОрдеру(ПараметрыЗаполнения.Отправитель);
КонецЕсли;
КонецПроцедуры
Функция РезультатЗапросаПоОстаткамЗаказов(ДанныеОтбора, КонтекстВызова) Экспорт
ПараметрыЗапросов = Новый Структура("ОтобратьПоЗаказу, МассивЗаказов,
|Организация, Подразделение, Склад,
|Регистратор, ТоварыНакладной, НакладнаяПоЗаказам");
ПараметрыЗапросов.Вставить("УчитыватьСобирается", Ложь);
ПараметрыЗапросов.Вставить("ЗаполнятьПоСобирается", Ложь);
СписокЗапросов = Новый СписокЗначений();
ИменаПодзапросов = Новый Массив();
Если КонтекстВызова = "СозданиеНаОсновании" Тогда
ПараметрыЗапросаДляСозданияНаОсновании(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
ИначеЕсли КонтекстВызова = "ПерезаполнениеПоОрдерам" Тогда
ПараметрыЗапросаДляПерезаполненияПоОрдерам(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
ИначеЕсли КонтекстВызова = "ЗаполнениеПоЗаказам" Тогда
ПараметрыЗапросаДляЗаполненияПоЗаказам(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
КонецЕсли;
ТекстыЗапросов = Новый Соответствие();
ТекстыЗапросов.Вставить("ВтЗаказыОтбор", ТекстЗапросаВременнойТаблицыРаспоряжений());
ТекстыЗапросов.Вставить("ВтНакладная", ТекстЗапросаВременнойТаблицыНакладной());
ТекстыЗапросов.Вставить("ТаблицаОтгружено", ТекстЗапросаОтгруженоПоОрдерам());
ТекстыЗапросов.Вставить("ВтСписокМатериалов", ТекстЗапросаВременнойТаблицыСпискаМатериалов());
ТекстыПодзапросов = Новый Соответствие();
Если ДанныеОтбора.Свойство("СписокМатериалов") Тогда
ТекстыПодзапросов.Вставить("БлокРегистрЗаказы", ТекстЗапросаОстаткиРегистраЗаказыСОтборомМатериалов());
Иначе
ТекстыПодзапросов.Вставить("БлокРегистрЗаказы", ТекстЗапросаОстаткиРегистраЗаказы());
КонецЕсли;
ТекстыПодзапросов.Вставить("БлокСторноНакладная", ТекстЗапросаСторноНакладная());
ТекстыПодзапросов.Вставить("БлокНовыеДвиженияНакладная", ТекстЗапросаНовыеДвиженияНакладная());
Для Каждого Элемент Из СписокЗапросов Цикл
Элемент.Представление = ТекстыЗапросов[Элемент.Значение];
КонецЦикла;
Элемент = СписокЗапросов.НайтиПоЗначению("ТаблицаОформить");
Если Элемент <> Неопределено Тогда
Элемент.Представление = ТекстЗапросаОбъединения(ИменаПодзапросов, ТекстыПодзапросов);
КонецЕсли;
Запрос = Новый Запрос();
Для Каждого Параметр Из ПараметрыЗапросов Цикл
Запрос.УстановитьПараметр(Параметр.Ключ, Параметр.Значение);
КонецЦикла;
Для Каждого Элемент Из СписокЗапросов Цикл
Запрос.Текст = Запрос.Текст + Элемент.Представление;
КонецЦикла;
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.ВыполнитьПакет();
СтруктураРезультата = Новый Структура();
Для Каждого Элемент Из СписокЗапросов Цикл
СтруктураРезультата.Вставить(Элемент.Значение, РезультатЗапроса[СписокЗапросов.Индекс(Элемент)].Выгрузить());
КонецЦикла;
Возврат СтруктураРезультата;
КонецФункции
Функция ДанныеЗаполненияНакладной(МассивСсылок, СвойстваЗаказов = Неопределено) Экспорт
Если ЗначениеЗаполнено(СвойстваЗаказов) И ТипЗнч(СвойстваЗаказов) = Тип("Массив") Тогда
СписокРеквизитов = Новый Массив;
ПараметрыРеквизита = Новый Структура;
ПараметрыРеквизита.Вставить("ИмяРеквизита", "Организация");
ПараметрыРеквизита.Вставить("Значение", Неопределено);
ПараметрыРеквизита.Вставить("ВыбраныРазные", Ложь);
ПараметрыРеквизита.Вставить("ИмяПоляРазличных", "РазличныхОрганизаций");
ПараметрыРеквизита.Вставить("РазличныхОрганизаций", 1);
СписокРеквизитов.Добавить(ПараметрыРеквизита);
ПараметрыРеквизита = Новый Структура;
ПараметрыРеквизита.Вставить("ИмяРеквизита", "Склад");
ПараметрыРеквизита.Вставить("Значение", Неопределено);
ПараметрыРеквизита.Вставить("ВыбраныРазные", Ложь);
ПараметрыРеквизита.Вставить("ИмяПоляРазличных", "РазличныхСкладов");
ПараметрыРеквизита.Вставить("РазличныхСкладов", 1);
СписокРеквизитов.Добавить(ПараметрыРеквизита);
ПараметрыРеквизита = Новый Структура;
ПараметрыРеквизита.Вставить("ИмяРеквизита", "Подразделение");
ПараметрыРеквизита.Вставить("Значение", Неопределено);
ПараметрыРеквизита.Вставить("ВыбраныРазные", Ложь);
ПараметрыРеквизита.Вставить("ИмяПоляРазличных", "РазличныхПодразделений");
ПараметрыРеквизита.Вставить("РазличныхПодразделений", 1);
СписокРеквизитов.Добавить(ПараметрыРеквизита);
Если СвойстваЗаказов <> Неопределено Тогда
Для каждого ЗначенияСвойствЗаказа Из СвойстваЗаказов Цикл
Если МассивСсылок.Найти(ЗначенияСвойствЗаказа.Ссылка) = Неопределено Тогда
Продолжить;
КонецЕсли;
Для каждого ПараметрыРеквизита Из СписокРеквизитов Цикл
Если ПараметрыРеквизита.Значение <> Неопределено
И ЗначенияСвойствЗаказа[ПараметрыРеквизита.ИмяРеквизита] <> ПараметрыРеквизита.Значение Тогда
ПараметрыРеквизита.ВыбраныРазные = Истина;
ИмяПоляРазличных = ПараметрыРеквизита["ИмяПоляРазличных"];
ПараметрыРеквизита[ИмяПоляРазличных] = ПараметрыРеквизита[ИмяПоляРазличных] + 1;
Иначе
ПараметрыРеквизита.Значение = ЗначенияСвойствЗаказа[ПараметрыРеквизита.ИмяРеквизита];
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
РеквизитыШапки = Новый Структура;
РеквизитыШапки.Вставить("РазличныхОрганизаций", 1);
РеквизитыШапки.Вставить("РазличныхСкладов", 1);
РеквизитыШапки.Вставить("РазличныхПодразделений", 1);
Для каждого ПараметрыРеквизита Из СписокРеквизитов Цикл
РеквизитыШапки.Вставить(ПараметрыРеквизита.ИмяРеквизита, ПараметрыРеквизита.Значение);
РеквизитыШапки.Вставить(ПараметрыРеквизита.ИмяРеквизита + "ВыбраныРазные", ПараметрыРеквизита.ВыбраныРазные);
Если ПараметрыРеквизита.ВыбраныРазные Тогда
ИмяПоляРазличных = ПараметрыРеквизита["ИмяПоляРазличных"];
РеквизитыШапки.Вставить(ИмяПоляРазличных, ПараметрыРеквизита[ИмяПоляРазличных]);
КонецЕсли;
КонецЦикла;
Иначе
ТекстыЗапроса = Новый СписокЗначений();
ТекстыЗапроса.Добавить(СозданиеНаОснованииПроверкаОтгрузить(), "ТаблицаЕстьОтгрузить");
ТекстыЗапроса.Добавить(СозданиеНаОснованииПроверкаРеквизитовШапки(), "ТаблицаРеквизитыШапки");
СначалаОрдера = Константы.ПорядокОформленияНакладныхРасходныхОрдеров.Получить()
= Перечисления.ПорядокОформленияНакладныхРасходныхОрдеров.СначалаОрдера;
Если СначалаОрдера Тогда
ТекстыЗапроса.Добавить(СозданиеНаОснованииПроверкаНаличияОрдеров(), "ТаблицаЕстьОрдера");
КонецЕсли;
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.УстановитьПараметр("НачалоТекущегоДня", НачалоДня(ТекущаяДатаСеанса()));
Таблицы = ОбщегоНазначенияУТ.ВыгрузитьРезультатыЗапроса(Запрос, ТекстыЗапроса);
РеквизитыШапки = Новый Структура("ХозяйственнаяОперация, РазличныхОпераций,
|Организация, РазличныхОрганизаций,
|Склад, РазличныхСкладов,
|Подразделение, РазличныхПодразделений,
|Статус, НаправлениеДеятельности, ПотреблениеДляДеятельности");
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Таблицы.ТаблицаРеквизитыШапки[0]);
РеквизитыШапки.Вставить("ЕстьОтгрузить", Таблицы.ТаблицаЕстьОтгрузить.Количество() > 0);
РеквизитыШапки.Вставить("ЕстьОрдера", Не СначалаОрдера Или Таблицы.ТаблицаЕстьОрдера.Количество() > 0);
КонецЕсли;
Возврат РеквизитыШапки;
КонецФункции
Функция ПроверитьДанныеЗаполненияНакладной(РеквизитыШапки) Экспорт
ТекстыОшибок = Новый Массив();
Если РеквизитыШапки.РазличныхОрганизаций > 1 Тогда
ТекстыОшибок.Добавить(НСтр("ru = 'Оформление документа невозможно.
|Необходимо выбрать заказы одной организации.'"));
ИначеЕсли РеквизитыШапки.РазличныхСкладов > 1
ИЛИ РеквизитыШапки.РазличныхПодразделений > 1 Тогда
ТекстыОшибок.Добавить(НСтр("ru = 'Оформление документа невозможно.
|Необходимо выбрать заказы одного подразделения и одного склада.'"));
КонецЕсли;
Результат = Новый Структура("ЕстьОшибки, ТекстОшибки, ЕстьПредупреждения, ТекстПредупреждения",
ТекстыОшибок.Количество() > 0, ТекстыОшибок, Ложь);
Возврат Результат;
КонецФункции
Процедура ОбновитьЗависимыеРеквизитыТабличнойЧасти(Товары, ПараметрыЗаполнения) Экспорт
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
Если ПараметрыЗаполнения.ФормаОткрыта Тогда
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Товары, СтруктураДействий);
КонецПроцедуры
Функция ДанныеТаблицыТоварыДокумента(Накладная) Экспорт
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.НазначениеОтправителя КАК НазначениеОтправителя,
| Таблица.Упаковка КАК Упаковка,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| Таблица.Количество КАК Количество,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ВЫБОР КОГДА Таблица.Ссылка.ПередачаПоРаспоряжениям
| ТОГДА Таблица.Распоряжение
| ИНАЧЕ Таблица.Ссылка
| КОНЕЦ КАК Распоряжение,
| Таблица.ИдентификаторСтроки КАК ИдентификаторСтроки,
| Таблица.Серия КАК Серия,
| Таблица.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Таблица.СтатусУказанияСерийОтправитель,
| Таблица.СтатусУказанияСерийПолучатель,
| Таблица.ГруппаПродукции
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК Таблица
|ГДЕ
| Таблица.Ссылка = &Накладная";
Запрос.УстановитьПараметр("Накладная", Накладная);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат;
КонецФункции
Процедура ЗаполнитьПоЗаказамОрдерам(Товары, Регистратор, ПараметрыЗаполнения, ШтрихкодыУпаковок = Неопределено) Экспорт
Если ПараметрыЗаполнения.ЗаполнятьПоОрдеру Тогда
РаспоряженияДляОрдеров = ПараметрыЗаполнения.МассивЗаказов;
РегистраторДляОрдеров = Регистратор;
Иначе
РаспоряженияДляОрдеров = Неопределено;
РегистраторДляОрдеров = Неопределено;
КонецЕсли;
Отбор = Новый Соответствие;
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(Отбор, "Распоряжение" , "&Распоряжения");
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(Отбор, "Склад" , "&Склад");
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(Отбор, "Подразделение" , "&Подразделение");
Если ПараметрыЗаполнения.Свойство("СписокМатериалов") Тогда
ЛевоеЗначение =
"Номенклатура, Характеристика, Назначение";
ПравоеЗначение =
"ВЫБРАТЬ Таблица.Номенклатура, Таблица.Характеристика, Таблица.Назначение ИЗ ВтСписокМатериалов КАК Таблица";
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(Отбор, ЛевоеЗначение, ПравоеЗначение);
КонецЕсли;
ТекстЗапросаРегистраЗаказы = ?(ПараметрыЗаполнения.Свойство("СписокМатериалов"),
ТекстЗапросаВтСписокМатериаловЗаполнениеПоЗаказамОрдерам() + ОбщегоНазначения.РазделительПакетаЗапросов(), "");
ТекстЗапросаРегистраЗаказы = ТекстЗапросаРегистраЗаказы +
РегистрыНакопления.ЗаказыМатериаловВПроизводство.ТекстЗапросаОстатки("ВтДанныеУчета", Отбор, "КОформлению <> 0");
Отбор = Новый Структура();
Отбор.Вставить("Ссылка", "Распоряжения");
ТекстЗапросаЗаказ = Документы.ЗаказМатериаловВПроизводство.ТекстЗапросаТоварыДокумента(Отбор);
ТекстЗапроса = ТекстЗапросаРегистраЗаказы
+ ОбщегоНазначения.РазделительПакетаЗапросов()
+ ТекстЗапросаЗаказ;
Запрос = Новый Запрос();
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Распоряжения", ПараметрыЗаполнения.МассивЗаказов);
Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("Склад", ПараметрыЗаполнения.Отправитель);
Запрос.УстановитьПараметр("Подразделение", ПараметрыЗаполнения.Получатель);
Если ПараметрыЗаполнения.Свойство("СписокМатериалов") Тогда
СписокМатериалов = ?(ТипЗнч(ПараметрыЗаполнения.СписокМатериалов) = Тип("ТаблицаЗначений"),
ПараметрыЗаполнения.СписокМатериалов,
ПараметрыЗаполнения.СписокМатериалов.Выгрузить());
Запрос.УстановитьПараметр("СписокМатериалов", СписокМатериалов);
КонецЕсли;
ТаблицаЗаказы = Запрос.Выполнить().Выгрузить();
ТаблицаЗаказы.Колонки.КОформлению.Имя = "КоличествоВЗаказе";
Запрос = Новый Запрос();
ТекстЗапросаОсталосьОформить = РегистрыНакопления.ТоварыКОтгрузке.ТекстЗапросаОсталосьОформить();
Запрос.Текст = ТекстЗапросаОсталосьОформить;
Запрос.УстановитьПараметр("Распоряжения", РаспоряженияДляОрдеров);
Запрос.УстановитьПараметр("Регистратор", РегистраторДляОрдеров);
ТаблицаОрдера = Запрос.Выполнить().Выгрузить();
ТаблицаОрдера.Колонки.Количество.Имя = "КоличествоВОрдере";
ТаблицаОрдера.Колонки.Собирается.Имя = "КоличествоСобирается";
ТаблицаОрдера.Колонки.Назначение.Имя = "НазначениеОтправителя";
Товары.Индексы.Добавить("Распоряжение, " + ПараметрыЗаполнения.КлючевыеПоля);
Ключ = "Распоряжение, КодСтроки," + ПараметрыЗаполнения.КлючевыеПоля;
Условие = "ПО [Количество]";
НакладныеСервер.РаспределитьКоличество(ТаблицаЗаказы, Товары, "КоличествоВЗаказе", Ключ, Условие, Истина);
НакладныеСервер.ДополнитьТаблицу(ТаблицаЗаказы, Товары, "КоличествоВЗаказе");
Ключ = "Распоряжение, " + СтрЗаменить(ПараметрыЗаполнения.КлючевыеПоля, "Назначение, НазначениеОтправителя", "НазначениеОтправителя");
Условие = "[Количество], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Ложь);
Условие = "НЕ [Количество], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Ложь);
Условие = "[Количество], НЕ [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Истина);
НакладныеСервер.ДополнитьТаблицу(ТаблицаОрдера, Товары, "КоличествоВОрдере");
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоСобирается", Ключ, "", Истина);
КонецПроцедуры
Функция РаспоряженияНакладной(Накладная, РеквизитыШапки) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Регистратор", Накладная);
Запрос.УстановитьПараметр("Организация", РеквизитыШапки.Организация);
Запрос.УстановитьПараметр("Подразделение", РеквизитыШапки.Подразделение);
Запрос.УстановитьПараметр("Склад", РеквизитыШапки.Склад);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", РеквизитыШапки.ХозяйственнаяОперация);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказМатериаловВПроизводство.Ссылка КАК Заказ
|ИЗ
| Документ.ЗаказМатериаловВПроизводство КАК ЗаказМатериаловВПроизводство
|ГДЕ
| ЗаказМатериаловВПроизводство.Организация = &Организация
| И ЗаказМатериаловВПроизводство.Подразделение = &Подразделение
| И ЗаказМатериаловВПроизводство.Склад = &Склад
| И ЗаказМатериаловВПроизводство.ХозяйственнаяОперация = &ХозяйственнаяОперация
| И ЗаказМатериаловВПроизводство.Проведен
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Регистратор КАК Заказ";
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Заказ");
КонецФункции
Функция КлючевыеПоляШапкиРаспоряжения() Экспорт
Возврат "Организация";
КонецФункции
#КонецОбласти
#Область Серии
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "Склад,Подразделение,Статус,Дата";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.ПередачаМатериаловВПроизводство";
ПараметрыСерийОтправитель = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.Склад, Ложь);
ПараметрыСерийПолучатель = СкладыСервер.ИспользованиеСерийВПодразделении(Объект.Подразделение);
ИспользоватьОрдернуюСхемуОтправитель = СкладыСервер.ИспользоватьОрдернуюСхемуПриОтгрузке(Объект.Склад, Объект.Дата);
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ПараметрыСерийОтправитель.ИспользоватьСерииНоменклатуры
ИЛИ ПараметрыСерийПолучатель.ИспользоватьСерииНоменклатуры
ИЛИ ПараметрыСерийПолучатель.УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПараметрыСерийОтправитель.УчитыватьСебестоимостьПоСериям
ИЛИ ПараметрыСерийПолучатель.УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.ИмяПоляСклад = "Склад";
ПараметрыУказанияСерий.ИмяПоляСкладОтправитель = "Склад";
ПараметрыУказанияСерий.ИмяПоляСкладПолучатель = "Подразделение";
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПередачаВПроизводствоОтгрузка);
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПередачаВПроизводствоПриемка);
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Назначение");
ПараметрыУказанияСерий.ПоляСвязи.Добавить("НазначениеОтправителя");
ПараметрыУказанияСерий.ЭтоНакладная = Истина;
ПараметрыУказанияСерий.ПланированиеОтгрузки = Ложь;
ПараметрыУказанияСерий.ПланированиеОтбора = Ложь;
ПараметрыУказанияСерий.ФактОтбора = Истина;
ПараметрыУказанияСерий.РегистрироватьСерии = НоменклатураКлиентСервер.НеобходимоРегистрироватьСерии(ПараметрыУказанияСерий);
ПараметрыУказанияСерий.Дата = Объект.Дата;
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерий");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийОтправитель");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийПолучатель");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Товары_Распоряжение");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Товары_КодСтроки");
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.НазначениеОтправителя,
| Товары.Серия,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.СтатусУказанияСерийОтправитель,
| Товары.СтатусУказанияСерийПолучатель,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.НазначениеОтправителя,
| СУММА(Товары.Количество) КАК Количество,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.НазначениеОтправителя,
| Товары.Серия,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.НазначениеОтправителя,
| Серии.Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.НазначениеОтправителя,
| СУММА(Серии.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК Серии
|
|СГРУППИРОВАТЬ ПО
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.НазначениеОтправителя
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА СкладОтправитель.ИспользоватьОрдернуюСхемуПриОтгрузке
| И &Дата >= СкладОтправитель.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА 0
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчетСерийПоFEFO
| ТОГДА 6
| ИНАЧЕ 8
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчетСерийПоFEFO
| ТОГДА 5
| ИНАЧЕ 7
| КОНЕЦ
| КОНЕЦ
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УказыватьПоФактуОтбора
| И ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УказыватьПриОтгрузкеПоПеремещению
| И &ФактОтбора
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 4
| ИНАЧЕ 2
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 3
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерийОтправитель,
| ВЫБОР
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 8
| ИНАЧЕ 7
| КОНЕЦ
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УказыватьПриПолученииМатериалов
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 4
| ИНАЧЕ 2
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 3
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерийПолучатель,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерийСтарый,
| Товары.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерийОтправительСтарый,
| Товары.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерийПолучательСтарый
|ПОМЕСТИТЬ Статусы
|ИЗ
| ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Товары КАК Товары
| ПО ТоварыДляЗапроса.Номенклатура = Товары.Номенклатура
| И ТоварыДляЗапроса.Характеристика = Товары.Характеристика
| И ТоварыДляЗапроса.Назначение = Товары.Назначение
| И ТоварыДляЗапроса.НазначениеОтправителя = Товары.НазначениеОтправителя
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| И ТоварыДляЗапроса.НазначениеОтправителя = СерииДляЗапроса.НазначениеОтправителя
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерийОтправитель
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК СкладОтправитель
| ПО (СкладОтправитель.Ссылка = &СкладОтправитель)
| И (ПолитикиУчетаСерийОтправитель.Склад = &СкладОтправитель)
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерийОтправитель.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерийПолучатель
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерийПолучатель.Ссылка
| И ПолитикиУчетаСерийПолучатель.Склад = &СкладПолучатель
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки,
| Статусы.СтатусУказанияСерийОтправитель,
| ВЫБОР
| КОГДА &ПередачаВПроизводствоПриемка
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерийПолучатель,
| ВЫБОР
| КОГДА Статусы.СтатусУказанияСерийПолучатель В (13, 14, 9, 10)
| И Статусы.СтатусУказанияСерийОтправитель <> 0
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| КОГДА Статусы.СтатусУказанияСерийОтправитель В (5, 6)
| ТОГДА Статусы.СтатусУказанияСерийОтправитель
| КОГДА Статусы.СтатусУказанияСерийОтправитель > ВЫБОР
| КОГДА &ПередачаВПроизводствоПриемка
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ 0
| КОНЕЦ
| ТОГДА Статусы.СтатусУказанияСерийОтправитель
| ИНАЧЕ ВЫБОР
| КОГДА &ПередачаВПроизводствоПриемка
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| (Статусы.СтатусУказанияСерийОтправитель <> Статусы.СтатусУказанияСерийОтправительСтарый
| ИЛИ ВЫБОР
| КОГДА &ПередачаВПроизводствоПриемка
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ 0
| КОНЕЦ <> Статусы.СтатусУказанияСерийПолучательСтарый
| ИЛИ ВЫБОР
| КОГДА Статусы.СтатусУказанияСерийПолучатель В (13, 14, 9, 10)
| И Статусы.СтатусУказанияСерийОтправитель <> 0
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| КОГДА Статусы.СтатусУказанияСерийОтправитель В (5, 6)
| ТОГДА Статусы.СтатусУказанияСерийОтправитель
| КОГДА Статусы.СтатусУказанияСерийОтправитель > ВЫБОР
| КОГДА &ПередачаВПроизводствоПриемка
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ 0
| КОНЕЦ
| ТОГДА Статусы.СтатусУказанияСерийОтправитель
| ИНАЧЕ ВЫБОР
| КОГДА &ПередачаВПроизводствоПриемка
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ <> Статусы.СтатусУказанияСерийСтарый)
|
|УПОРЯДОЧИТЬ ПО
| Статусы.НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗаполнитьСерииПоОтгрузке(Объект) Экспорт
ИспользоватьОрдернуюСхемуПриОтгрузке = СкладыСервер.ИспользоватьОрдернуюСхемуПриОтгрузке(Объект.Склад, Объект.Дата);
ИспользуютсяСерииОтправитель = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыСклад", Новый Структура("Склад", Объект.Склад));
ИспользуютсяСерииПолучатель = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыПроизводство", Новый Структура("Подразделение", Объект.Подразделение));
Если Не ИспользоватьОрдернуюСхемуПриОтгрузке
Или Не ИспользуютсяСерииОтправитель
Или Не ИспользуютсяСерииПолучатель Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| РасходныйОрдерНаТоварыТоварыПоРаспоряжениям.Ссылка
|ПОМЕСТИТЬ РасходныеОрдера
|ИЗ
| Документ.РасходныйОрдерНаТовары.ТоварыПоРаспоряжениям КАК РасходныйОрдерНаТоварыТоварыПоРаспоряжениям
|ГДЕ
| &ПередачаПоРаспоряжениям
| И РасходныйОрдерНаТоварыТоварыПоРаспоряжениям.Распоряжение В(&Распоряжения)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| РасходныйОрдерНаТоварыТоварыПоРаспоряжениям.Ссылка
|ИЗ
| Документ.РасходныйОрдерНаТовары.ТоварыПоРаспоряжениям КАК РасходныйОрдерНаТоварыТоварыПоРаспоряжениям
|ГДЕ
| НЕ &ПередачаПоРаспоряжениям
| И РасходныйОрдерНаТоварыТоварыПоРаспоряжениям.Распоряжение = &Распоряжение
|;
|
|
|ВЫБРАТЬ
| ОстаткиСерий.Серия,
| СУММА(ОстаткиСерий.Количество) КАК Количество,
| ОстаткиСерий.Номенклатура,
| ОстаткиСерий.Характеристика,
| ОстаткиСерий.НазначениеОтправителя КАК НазначениеОтправителя
|ИЗ
| (ВЫБРАТЬ
| ОтгружаемыеТовары.Серия КАК Серия,
| ОтгружаемыеТовары.Количество КАК Количество,
| ОтгружаемыеТовары.Номенклатура КАК Номенклатура,
| ОтгружаемыеТовары.Характеристика КАК Характеристика,
| ОтгружаемыеТовары.Назначение КАК НазначениеОтправителя
| ИЗ
| РасходныеОрдера КАК РасходныеОрдера
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РасходныйОрдерНаТовары.ОтгружаемыеТовары КАК ОтгружаемыеТовары
| ПО РасходныеОрдера.Ссылка = ОтгружаемыеТовары.Ссылка
| ГДЕ
| ОтгружаемыеТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыРасходныхОрдеров.Отгружен)
| И ОтгружаемыеТовары.Ссылка.Проведен
| И ОтгружаемыеТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ДействияСоСтрокамиОрдеровНаОтгрузку.Отгрузить)
| И ОтгружаемыеТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТЧТовары.Серия,
| -ТЧТовары.Количество,
| ТЧТовары.Номенклатура,
| ТЧТовары.Характеристика,
| ТЧТовары.НазначениеОтправителя
| ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК ТЧТовары
| ГДЕ
| ТЧТовары.Ссылка.Проведен
| И ТЧТовары.Распоряжение В(&Распоряжения)
| И ТЧТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И ТЧТовары.Ссылка <> &Распоряжение
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТЧСерии.Серия,
| -ТЧСерии.Количество,
| ТЧСерии.Номенклатура,
| ТЧСерии.Характеристика,
| ТЧСерии.НазначениеОтправителя
| ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК ТЧТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПередачаМатериаловВПроизводство.Серии КАК ТЧСерии
| ПО ТЧТовары.Ссылка = ТЧСерии.Ссылка
| И ТЧТовары.Номенклатура = ТЧСерии.Номенклатура
| И ТЧТовары.Характеристика = ТЧСерии.Характеристика
| И ТЧТовары.Назначение = ТЧСерии.Назначение
| И ТЧТовары.НазначениеОтправителя = ТЧСерии.НазначениеОтправителя
| ГДЕ
| ТЧТовары.Ссылка.Проведен
| И ТЧТовары.Распоряжение В(&Распоряжения)
| И ТЧТовары.Ссылка <> &Распоряжение) КАК ОстаткиСерий
|
|СГРУППИРОВАТЬ ПО
| ОстаткиСерий.Серия,
| ОстаткиСерий.Характеристика,
| ОстаткиСерий.Номенклатура,
| ОстаткиСерий.НазначениеОтправителя
|
|ИМЕЮЩИЕ
| СУММА(ОстаткиСерий.Количество) <> 0
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.ПоляСвязи,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.НомерСтроки,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки1,
| ТаблицаТовары.Количество
|ПОМЕСТИТЬ ТаблицаТовары
|ИЗ
| &ТаблицаТовары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Количество > 0
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки
|ИЗ
| ТаблицаТовары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерийПолучатель
| ПО (ПолитикиУчетаСерийПолучатель.Склад = &СкладПолучатель)
| И (ВЫРАЗИТЬ(ТаблицаТовары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерийПолучатель.Ссылка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерийОтправитель
| ПО (ПолитикиУчетаСерийПолучатель.Склад = &СкладОтправитель)
| И (ВЫРАЗИТЬ(ТаблицаТовары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерийПолучатель.Ссылка)
|ГДЕ
| (ЕСТЬNULL(ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям, ЛОЖЬ)
| ИЛИ ЕСТЬNULL(ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям, ЛОЖЬ))
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.ПоляСвязи,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| СУММА(ТаблицаТовары.Количество) КАК Количество
|ИЗ
| ТаблицаТовары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерийПолучатель
| ПО (ПолитикиУчетаСерийПолучатель.Склад = &СкладПолучатель)
| И (ВЫРАЗИТЬ(ТаблицаТовары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерийПолучатель.Ссылка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерийОтправитель
| ПО (ПолитикиУчетаСерийПолучатель.Склад = &СкладОтправитель)
| И (ВЫРАЗИТЬ(ТаблицаТовары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерийПолучатель.Ссылка)
|ГДЕ
| (НЕ ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий ЕСТЬ NULL
| И НЕ ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ИЛИ НЕ ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий ЕСТЬ NULL
| И НЕ ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.ПоляСвязи,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика";
ПоляСвязи = "";
ПоляСвязиВЗапрос = "";
Запятая = "";
Для Каждого Поле Из ПараметрыУказанияСерий(Объект).ПоляСвязи Цикл
ПоляСвязи = Поле + Запятая + ПоляСвязи;
ПоляСвязиВЗапрос = ПоляСвязиВЗапрос + "
| ТаблицаТовары." + Поле + ",";
Запятая = ",";
КонецЦикла;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ТаблицаТовары.ПоляСвязи,", ПоляСвязиВЗапрос);
Запрос = Новый Запрос(ТекстЗапроса);
МассивРаспоряжений = Новый Массив;
Если Объект.ПередачаПоРаспоряжениям Тогда
Для Каждого СтрокаТовары Из Объект.Товары Цикл
МассивРаспоряжений.Добавить(СтрокаТовары.Распоряжение);
КонецЦикла;
КонецЕсли;
Запрос.УстановитьПараметр("Распоряжения", МассивРаспоряжений);
Запрос.УстановитьПараметр("Распоряжение", Объект.Ссылка);
Запрос.УстановитьПараметр("ТаблицаТовары", Объект.Товары.Выгрузить(,"НомерСтроки,Номенклатура,Характеристика,Количество," + ПоляСвязи));
Запрос.УстановитьПараметр("СкладПолучатель", Объект.Подразделение);
Запрос.УстановитьПараметр("СкладОтправитель", Объект.Склад);
Запрос.УстановитьПараметр("ПередачаПоРаспоряжениям", Объект.ПередачаПоРаспоряжениям);
РезультатЗапроса = Запрос.ВыполнитьПакет();
ТаблицаСерийОрдера = РезультатЗапроса[1].Выгрузить();
СтруктураПоиска= Новый Структура("Номенклатура, Характеристика, НазначениеОтправителя");
ДобавленныеИИзмененныеСтроки = Новый Массив();
ВыборкаНомеровСтрокССериямиВТЧТовары = РезультатЗапроса[3].Выбрать();
Пока ВыборкаНомеровСтрокССериямиВТЧТовары.Следующий() Цикл
СтрокаССериямиВТЧТовары = Объект.Товары[ВыборкаНомеровСтрокССериямиВТЧТовары.НомерСтроки - 1];
ОстатокПоТовару = СтрокаССериямиВТЧТовары.Количество;
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаССериямиВТЧТовары);
МассивСтрокТабСерий = ТаблицаСерийОрдера.НайтиСтроки(СтруктураПоиска);
ПерваяСтрока = Истина;
Для Каждого Стр Из МассивСтрокТабСерий Цикл
Если Не ПерваяСтрока Тогда
НоваяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаССериямиВТЧТовары);
СтрокаССериямиВТЧТовары = НоваяСтрока;
ПерваяСтрока = Ложь;
КонецЕсли;
СтрокаССериямиВТЧТовары.Серия = Стр.Серия;
КоличествоЗаполнения = Мин(ОстатокПоТовару,Стр.Количество);
СтрокаССериямиВТЧТовары.Количество = КоличествоЗаполнения;
ДобавленныеИИзмененныеСтроки.Добавить(СтрокаССериямиВТЧТовары);
Стр.Количество = Стр.Количество - КоличествоЗаполнения;
ОстатокПоТовару = ОстатокПоТовару - КоличествоЗаполнения;
Если Стр.Количество = 0 Тогда
ТаблицаСерийОрдера.Удалить(Стр);
КонецЕсли;
Если ОстатокПоТовару = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
СтруктураДействий = Новый Структура();
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ДобавленныеИИзмененныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Объект.Серии.Очистить();
ВыборкаТовары = РезультатЗапроса[4].Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
ОстатокПоТовару = ВыборкаТовары.Количество;
ЗаполнитьЗначенияСвойств(СтруктураПоиска, ВыборкаТовары);
МассивСтрокТабСерий = ТаблицаСерийОрдера.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаТабСерий Из МассивСтрокТабСерий Цикл
НоваяСтрокаТЧСерии = Объект.Серии.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧСерии,ВыборкаТовары);
НоваяСтрокаТЧСерии.Серия = СтрокаТабСерий.Серия;
КоличествоЗаполнения = Мин(ОстатокПоТовару,СтрокаТабСерий.Количество);
НоваяСтрокаТЧСерии.Количество = КоличествоЗаполнения;
СтрокаТабСерий.Количество = СтрокаТабСерий.Количество - КоличествоЗаполнения;
ОстатокПоТовару = ОстатокПоТовару - КоличествоЗаполнения;
Если СтрокаТабСерий.Количество = 0 Тогда
ТаблицаСерийОрдера.Удалить(СтрокаТабСерий);
КонецЕсли;
Если ОстатокПоТовару = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Функция РаспоряжениеНаВыполнениеСкладскойОперации(ЗначенияПолейДляОпределенияРаспоряжения) Экспорт
Если ЗначенияПолейДляОпределенияРаспоряжения.Товары_КодСтроки <> 0 Тогда
Возврат ЗначенияПолейДляОпределенияРаспоряжения.Товары_Распоряжение;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область Статус
Функция СформироватьЗапросПроверкиПриСменеСтатуса(МассивДокументов, НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыПередачМатериаловВПроизводство[НовыйСтатус];
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР
| КОГДА ТаблицаДокументов.Статус = &Статус ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ИСТИНА КАК ЗаписьПроведением
|ИЗ
| Документ.ПередачаМатериаловВПроизводство КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Статус", ЗначениеНовогоСтатуса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Возврат Запрос;
КонецФункции
Функция ПроверкаПередСменойСтатуса(ВыборкаПроверки, НовыйСтатус, ДополнительныеПараметры) Экспорт
Возврат Истина;
КонецФункции
#КонецОбласти
#Область Прочее
Функция ВыполнитьПроверкиРаспоряжения(Распоряжение, Склад) Экспорт
СтруктураВозврата = Новый Структура;
СтруктураВозврата.Вставить("Операция", "");
СтруктураВозврата.Вставить("ТекстОшибки", "");
СтруктураВозврата.Вставить("ГруппаСкладовВРаспоряжении", Ложь);
СтруктураВозврата.Вставить("ДатаОтгрузки");
СтруктураВозврата.Вставить("ИспользоватьОрдернуюСхему");
Реквизиты = Новый Структура("ДатаОтгрузки, Склад, ИспользоватьОрдернуюСхему", "Дата");
Реквизиты.Склад = "Склад";
Реквизиты.ИспользоватьОрдернуюСхему = "
|ВЫБОР
| КОГДА ЕстьNULL(Склад.ИспользоватьОрдернуюСхемуПриОтгрузке, Ложь)
| И Дата >= ЕстьNULL(Склад.ДатаНачалаОрдернойСхемыПриОтгрузке, ДАТАВРЕМЯ(1,1,1))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
|КОНЕЦ";
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Распоряжение, Реквизиты);
ИспользоватьОрдернуюСхему = ЗначенияРеквизитов.ИспользоватьОрдернуюСхему;
СтруктураВозврата.ИспользоватьОрдернуюСхему = ИспользоватьОрдернуюСхему;
Если ИспользоватьОрдернуюСхему Тогда
Склад = ЗначенияРеквизитов.Склад;
ЗаполнитьЗначенияСвойств(СтруктураВозврата, ЗначенияРеквизитов, "ДатаОтгрузки");
Иначе
ТекстОшибки = НСтр("ru = 'Для склада ""%Склад%"" оформление расходных ордеров не требуется.
|Заполнение документа не выполнено.'");
СтруктураВозврата.ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Склад%", Строка(ЗначенияРеквизитов.Склад));
СтруктураВозврата.Операция = "Отказ";
Возврат СтруктураВозврата;
КонецЕсли;
Возврат СтруктураВозврата
КонецФункции
Функция РеквизитыДокумента(ДокументСсылка) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Организация КАК Организация
|ИЗ
| Документ.ПередачаМатериаловВПроизводство КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &ДокументСсылка
|");
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Дата = Выборка.Дата;
Организация = Выборка.Организация;
Иначе
Дата = Дата(1,1,1);
Организация = Неопределено;
КонецЕсли;
СтруктураРеквизитов = Новый Структура("Дата, Организация",Дата, Организация,);
Возврат СтруктураРеквизитов;
КонецФункции
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
СписокКоманд = Новый Массив;
Команда = Документы.ВозвратМатериаловИзПроизводства.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
СписокКоманд.Добавить(Команда);
Команда = БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
СписокКоманд.Добавить(Команда);
Команда = Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании);
СписокКоманд.Добавить(Команда);
Команда = Документы.ПоручениеЭкспедитору.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
СписокКоманд.Добавить(Команда);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОснованииПередачаВПроизводство(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ПередачаМатериаловВПроизводство) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ПередачаМатериаловВПроизводство.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ПередачаМатериаловВПроизводство);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьУправлениеПроизводством";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КонецПроцедуры
Функция СтатусыДокументаИзменяемыеИзСписка() Экспорт
Таблица = ОбщегоНазначенияУТ.ТаблицаСтатусовИзменяемыхИзСписка();
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыПередачМатериаловВПроизводство.Отгружено);
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыПередачМатериаловВПроизводство.Принято);
Возврат Таблица;
КонецФункции
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Функция МакетФормыВыбораНазначений() Экспорт
МакетФормы = Справочники.Назначения.МакетФормыВыбораНазначений();
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы);
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ШаблонНазначения.ВидимыеОтборыНаФорме.Вставить("НаправлениеДеятельности", НСтр("ru='Только назначения направления деятельности ""%1""'"));
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.Товары.Назначение", "Отправитель");
ОписаниеКолонок.Колонки.НайтиПоЗначению("ВНаличии").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.Склад";
Возврат МакетФормы;
КонецФункции
Функция КоллекцияТабличныхЧастейТоваров() Экспорт
ТаблицыДокумента = Новый Структура("Товары");
Возврат ТаблицыДокумента;
КонецФункции
#КонецОбласти
#Область ПроведениеРегламентированныйУчет
Функция ТекстОтраженияВРеглУчете() Экспорт
ТекстыОтражения = Новый Массив;
ТекстыОтражения.Добавить(ТекстСписаниеКомиссионныхТоваров());
ТекстыОтражения.Добавить(ТекстСписаниеТоваровНаРасходы());
ТекстыОтражения.Добавить(ТекстСписаниеТоваровВПроизводстве());
ТекстыОтражения.Добавить(ТекстВключениеИсключениеНДСВСтоимостьТоваров());
Возврат СтрСоединить(ТекстыОтражения, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
КонецФункции
Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт
Возврат "";
КонецФункции
#КонецОбласти
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Подразделение)
| И ЗначениеРазрешено(Склад)";
КонецПроцедуры
#КонецОбласти
#Область ПечатьЗаданияНаОтборРазмещениеТоваров
Функция ПравилаПечатиЗаданияНаОтборРазмещение() Экспорт
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
Возврат ПравилаПечатиЗадания;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Проведение
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.ПередачаМатериаловВПроизводство";
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ТекстыЗапросаВременныхТаблиц = Новый Соответствие();
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", """""");
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоПодразделению", """""");
ПереопределениеРасчетаПараметров.Вставить("ОрдернаяСхемаПриОтгрузке",
"ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И ТаблицаТовары.Ссылка.Дата >= ТаблицаТовары.Ссылка.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ");
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
Если ИмяРегистра = "ЗаказыМатериаловВПроизводство" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаЗаказыМатериаловВПроизводство(Неопределено, ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "ТаблицаМатериалыИУслуги";
ИначеЕсли ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Неопределено, ТекстыЗапроса, ИмяРегистра);
ТекстыЗапросаВременныхТаблиц.Вставить("ВтОснований", ТекстЗапросаВтОснований(Неопределено, ТекстыЗапроса));
СинонимТаблицыДокумента = "ДанныеДокумента";
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.Дата КАК Период,
| Таблица.Номер КАК Номер,
| Таблица.Организация КАК Организация,
| Таблица.Склад КАК Склад,
| Таблица.Ссылка КАК Ссылка,
| Таблица.Статус КАК Статус,
| Таблица.Подразделение КАК Подразделение,
| Таблица.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Таблица.Распоряжение КАК Распоряжение,
| Таблица.ПередачаПоРаспоряжениям КАК ПередачаПоРаспоряжениям,
| Таблица.ПотреблениеДляДеятельности КАК ПотреблениеДляДеятельности,
| ВЫБОР
| КОГДА Таблица.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Таблица.Дата >= Таблица.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке,
| Таблица.Ответственный КАК Ответственный,
| Таблица.Комментарий КАК Комментарий,
| Таблица.ПометкаУдаления КАК ПометкаУдаления,
| Таблица.Проведен КАК Проведен
|ИЗ
| Документ.ПередачаМатериаловВПроизводство КАК Таблица
|ГДЕ
| Таблица.Ссылка = &Ссылка";
Реквизиты = Запрос.Выполнить().Выбрать();
Реквизиты.Следующий();
Запрос.УстановитьПараметр("Статус", Реквизиты.Статус);
Запрос.УстановитьПараметр("Склад", Реквизиты.Склад);
Запрос.УстановитьПараметр("Период", Реквизиты.Период);
Запрос.УстановитьПараметр("Организация", Реквизиты.Организация);
Запрос.УстановитьПараметр("ОрдернаяСхемаПриОтгрузке", Реквизиты.ОрдернаяСхемаПриОтгрузке);
Запрос.УстановитьПараметр("Распоряжение", Реквизиты.Распоряжение);
Запрос.УстановитьПараметр("ПередачаПоРаспоряжениям", Реквизиты.ПередачаПоРаспоряжениям);
Запрос.УстановитьПараметр("Подразделение", Реквизиты.Подразделение);
Запрос.УстановитьПараметр("ПотреблениеДляДеятельности", Реквизиты.ПотреблениеДляДеятельности);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", Реквизиты.ХозяйственнаяОперация);
Запрос.УстановитьПараметр("Валюта", Константы.ВалютаУправленческогоУчета.Получить());
Запрос.УстановитьПараметр("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета", ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета"));
Запрос.УстановитьПараметр("АналитическийУчетПоГруппамПродукции", ПолучитьФункциональнуюОпцию("АналитическийУчетПоГруппамПродукции"));
Запрос.УстановитьПараметр("СкладскаяОперация", Перечисления.СкладскиеОперации.ПередачаВПроизводствоОтгрузка);
Запрос.УстановитьПараметр("Получатель", Реквизиты.Подразделение);
Запрос.УстановитьПараметр("Номер", Реквизиты.Номер);
Запрос.УстановитьПараметр("НомерНаПечать", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер));
Запрос.УстановитьПараметр("Ответственный", Реквизиты.Ответственный);
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.ПередачаМатериаловВПроизводство"));
Запрос.УстановитьПараметр("Комментарий", Реквизиты.Комментарий);
Запрос.УстановитьПараметр("ПометкаУдаления", Реквизиты.ПометкаУдаления);
Запрос.УстановитьПараметр("Проведен", Реквизиты.Проведен);
ИнформацияПоПодразделению = "";
Если ЗначениеЗаполнено(Реквизиты.Подразделение) Тогда
ШаблонСтроки = "ru = 'Передача в ""%1""'";
ИнформацияПоПодразделению = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, Реквизиты.Подразделение);
КонецЕсли;
Запрос.УстановитьПараметр("ИнформацияПоПодразделению", ИнформацияПоПодразделению);
РасчетСебестоимостиПрикладныеАлгоритмы.ЗаполнитьПараметрыИнициализации(Запрос, Реквизиты);
КонецПроцедуры
Процедура ИнициализироватьКлючиАналитикиНоменклатуры(Запрос)
Если Запрос = Неопределено ИЛИ Запрос.Параметры.Свойство("КлючиАналитикиНоменклатурыИнициализированы") Тогда
Возврат;
КонецЕсли;
ЗапросАналитики = Новый Запрос("
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Серия КАК Серия
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия
| ИЗ
| Документ.ПередачаМатериаловВПроизводство.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия КАК Серия
| ИЗ
| Документ.ПередачаМатериаловВПроизводство.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| &Подразделение КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ТаблицаВидыЗапасов.Серия КАК Серия
| ИЗ
| Документ.ПередачаМатериаловВПроизводство.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| &Подразделение КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.Назначение КАК Назначение,
| ТаблицаВидыЗапасов.Серия КАК Серия
| ИЗ
| Документ.ПередачаМатериаловВПроизводство.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| &Подразделение,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Назначение,
| (ВЫБОР ТаблицаТовары.СтатусУказанияСерийПолучатель
| КОГДА 14 ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КОНЕЦ) КАК Серия
| ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК ТаблицаТовары
| ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| &Подразделение,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка),
| (ВЫБОР ТаблицаТовары.СтатусУказанияСерийПолучатель
| КОГДА 14 ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КОНЕЦ) КАК Серия
| ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК ТаблицаТовары
| ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
|) КАК ТаблицаТовары
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО
| ТаблицаТовары.Номенклатура = Аналитика.Номенклатура
| И ТаблицаТовары.Характеристика = Аналитика.Характеристика
| И ТаблицаТовары.Назначение = Аналитика.Назначение
| И ТаблицаТовары.Серия = Аналитика.Серия
| И ТаблицаТовары.Склад = Аналитика.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Аналитика.СтатьяКалькуляции
|ГДЕ
| Аналитика.Номенклатура ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Склад,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Назначение,
| ТаблицаТовары.Серия
|");
ЗапросАналитики.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросАналитики.УстановитьПараметр("Подразделение", Запрос.Параметры.Подразделение);
ЗапросАналитики.УстановитьПараметр("УчитыватьСебестоимостьТоваровПоНазначениям", Запрос.Параметры.УчитыватьСебестоимостьТоваровПоНазначениям);
ЗапросАналитики.УстановитьПараметр("ПустаяСерия", Справочники.СерииНоменклатуры.ПустаяСсылка());
Выборка = ЗапросАналитики.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
РегистрыСведений.АналитикаУчетаНоменклатуры.СоздатьКлючАналитики(Выборка)
КонецЦикла;
Запрос.УстановитьПараметр("КлючиАналитикиНоменклатурыИнициализированы", Истина);
КонецПроцедуры
Функция ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтВидыЗапасов";
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.ВидЗапасов.РеализацияЗапасовДругойОрганизации КАК РеализацияЗапасовДругойОрганизации,
| ТаблицаВидыЗапасов.ВидЗапасов.ВидЗапасовВладельца КАК ВидЗапасовВладельца,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение.НаправлениеДеятельности КАК НаправлениеДеятельности,
| АналитикаБезНазначения.КлючАналитики КАК АналитикаУчетаНоменклатурыБезНазначения,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.СкладскаяТерритория.ЦеховаяКладовая КАК ЦеховаяКладовая,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение.ВидДеятельностиНДС,ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)) <> ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| ТОГДА ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение.ВидДеятельностиНДС
| ИНАЧЕ &ПотреблениеДляДеятельности
| КОНЕЦ КАК НалогообложениеНДС,
| (ВЫБОР ТаблицаВидыЗапасов.ВидЗапасовПолучателя
| КОГДА ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка) ТОГДА ТаблицаВидыЗапасов.ВидЗапасов
| ИНАЧЕ ТаблицаВидыЗапасов.ВидЗапасовПолучателя КОНЕЦ) КАК КорВидЗапасов,
| КлючиКомитента.КлючАналитики КАК АналитикаКомитента,
| ВЫБОР КОГДА ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара ССЫЛКА Справочник.Организации
| ТОГДА АналитикаРасчетовИнтеркампани.КлючАналитики
| ИНАЧЕ АналитикаРасчетов.КлючАналитики
| КОНЕЦ КАК АналитикаРасчетовСКомитентом,
| КлючиКомитента.МестоХранения КАК Комитент,
| ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов КАК ТипЗапасов,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаВидыЗапасов.ГруппаПродукции КАК ГруппаПродукции,
| КлючиПроизводства.КлючАналитики КАК АналитикаПроизводства,
| КлючиПроизводства.Назначение.НаправлениеДеятельности КАК НаправлениеДеятельностиПроизводства,
| КлючиПроизводстваБезНазначения.КлючАналитики КАК АналитикаПроизводстваБезНазначения
|
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаБезНазначения
| ПО
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = АналитикаБезНазначения.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = АналитикаБезНазначения.Характеристика
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаБезНазначения.Назначение
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия = АналитикаБезНазначения.Серия
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения = АналитикаБезНазначения.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаБезНазначения.СтатьяКалькуляции
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиКомитента
| ПО
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = КлючиКомитента.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = КлючиКомитента.Характеристика
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = КлючиКомитента.Назначение
| И ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) = КлючиКомитента.Серия
| И ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара = КлючиКомитента.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = КлючиКомитента.СтатьяКалькуляции
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиПроизводства
| ПО
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = КлючиПроизводства.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = КлючиПроизводства.Характеристика
| И ТаблицаВидыЗапасов.Назначение = КлючиПроизводства.Назначение
| И ТаблицаВидыЗапасов.Серия = КлючиПроизводства.Серия
| И &Подразделение = КлючиПроизводства.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = КлючиПроизводства.СтатьяКалькуляции
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиПроизводстваБезНазначения
| ПО
| КлючиПроизводства.Номенклатура = КлючиПроизводстваБезНазначения.Номенклатура
| И КлючиПроизводства.Характеристика = КлючиПроизводстваБезНазначения.Характеристика
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = КлючиПроизводстваБезНазначения.Назначение
| И КлючиПроизводства.Серия = КлючиПроизводстваБезНазначения.Серия
| И КлючиПроизводства.МестоХранения = КлючиПроизводстваБезНазначения.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = КлючиПроизводстваБезНазначения.СтатьяКалькуляции
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетов
| ПО АналитикаРасчетов.Организация = &Организация
| И АналитикаРасчетов.Партнер = ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара
| И АналитикаРасчетов.Контрагент = ТаблицаВидыЗапасов.ВидЗапасов.Контрагент
| И АналитикаРасчетов.Договор = ТаблицаВидыЗапасов.ВидЗапасов.Договор
| И АналитикаРасчетов.НаправлениеДеятельности = ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетовИнтеркампани
| ПО АналитикаРасчетовИнтеркампани.Организация = &Организация
| И АналитикаРасчетовИнтеркампани.Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.НашеПредприятие)
| И АналитикаРасчетовИнтеркампани.Контрагент = ТаблицаВидыЗапасов.ВидЗапасов.Контрагент
| И АналитикаРасчетовИнтеркампани.Договор = ТаблицаВидыЗапасов.ВидЗапасов.Договор
| И АналитикаРасчетовИнтеркампани.НаправлениеДеятельности = ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)
|
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияСерийТоваров";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаСерии.Номенклатура КАК Номенклатура,
| ТаблицаСерии.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСерии.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаСерии.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ТаблицаСерии.Серия КАК Серия,
| ТаблицаСерии.Количество КАК Количество,
| &Склад КАК Отправитель,
| ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка) КАК ПомещениеОтправителя,
| &Получатель КАК Получатель,
| НЕОПРЕДЕЛЕНО КАК ПомещениеПолучателя,
| &СкладскаяОперация КАК СкладскаяОперация,
| &Ссылка КАК Документ,
| &Период КАК Период,
| &Ссылка КАК Регистратор,
| НЕ &ОрдернаяСхемаПриОтгрузке КАК ЭтоСкладскоеДвижение
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Серии КАК ТаблицаСерии
|ГДЕ
| ТаблицаСерии.Ссылка = &Ссылка
| И ТаблицаСерии.Количество <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаТовары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Количество,
| &Склад,
| ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка),
| &Получатель,
| НЕОПРЕДЕЛЕНО,
| &СкладскаяОперация,
| &Ссылка,
| &Период,
| &Ссылка,
| НЕ &ОрдернаяСхемаПриОтгрузке
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыОрганизаций";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| &Организация КАК ОрганизацияОтгрузки,
| ВЫБОР КОГДА ТаблицаВидыЗапасов.РеализацияЗапасовДругойОрганизации ТОГДА
| ТаблицаВидыЗапасов.ВидЗапасовВладельца.Организация
| ИНАЧЕ
| &Организация
| КОНЕЦ КАК Организация,
|
| ВЫБОР КОГДА ТаблицаВидыЗапасов.РеализацияЗапасовДругойОрганизации ТОГДА
| ТаблицаВидыЗапасов.ВидЗапасовВладельца
| ИНАЧЕ
| ТаблицаВидыЗапасов.ВидЗапасов
| КОНЕЦ КАК ВидЗапасов,
|
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК НалогообложениеНДС,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
|
| ВЫБОР КОГДА ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| ТаблицаВидыЗапасов.АналитикаКомитента
| ИНАЧЕ
| ТаблицаВидыЗапасов.АналитикаПроизводства
| КОНЕЦ КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.КорВидЗапасов КАК КорВидЗапасов
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыОрганизацийКПередаче(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыОрганизацийКПередаче";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Склад КАК Склад,
| ТаблицаВидыЗапасов.ВидЗапасовВладельца.Организация КАК ОрганизацияВладелец,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасовПродавца,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК НалогообложениеНДС
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|ГДЕ
| ТаблицаВидыЗапасов.РеализацияЗапасовДругойОрганизации
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыКОформлениюОтчетовКомитенту";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Организация КАК Организация,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.АналитикаКомитента КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов.Валюта КАК Валюта,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| 0 КАК Количество,
| 0 КАК СуммаВыручки,
| 0 КАК СуммаВыручкиРегл,
| 0 КАК СуммаВыручкиУпр,
| ТаблицаВидыЗапасов.Количество КАК КоличествоСписано,
| 0 КАК КоличествоКОформлению,
| 0 КАК КоличествоКОформлениюПоРНПТ,
| 0 КАК СуммаВыручкиКОформлению,
| ТаблицаВидыЗапасов.Количество КАК КоличествоСписаноКОформлению,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоСписаноКОформлениюПоРНПТ,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.КорВидЗапасов КАК КорВидЗапасов,
| ТаблицаВидыЗапасов.АналитикаПроизводства КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК НалогообложениеНДС,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|
|ГДЕ
| ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаМатериалыИРаботыВПроизводстве(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "МатериалыИРаботыВПроизводстве";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ
| &Организация КАК Организация,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Период КАК ДатаРегистратора,
| &Подразделение КАК Подразделение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерийПолучатель В (4, 6, 8, 10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| КлючиПроизводства.КлючАналитики КАК АналитикаУчетаНоменклатуры,
| ТаблицаТовары.Количество КАК Количество
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиПроизводства
| ПО ТаблицаТовары.Номенклатура = КлючиПроизводства.Номенклатура
| И ТаблицаТовары.Назначение = КлючиПроизводства.Назначение
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = КлючиПроизводства.СтатьяКалькуляции
| И ТаблицаТовары.Характеристика = КлючиПроизводства.Характеристика
| И ТаблицаТовары.Назначение = КлючиПроизводства.Назначение
| И (ВЫБОР ТаблицаТовары.СтатусУказанияСерийПолучатель
| КОГДА 14
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ = КлючиПроизводства.Серия)
| И (&Подразделение = КлючиПроизводства.МестоХранения)
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И (НЕ ТаблицаТовары.СтатусУказанияСерийПолучатель В (4, 6, 8, 10)
| ИЛИ ТаблицаТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Организация,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход),
| &Период,
| &Период,
| &Подразделение,
| ТаблицаСерии.Номенклатура,
| ТаблицаСерии.Характеристика,
| ТаблицаСерии.Назначение,
| ТаблицаСерии.Серия,
| КлючиПроизводства.КлючАналитики,
| ТаблицаСерии.Количество
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Серии КАК ТаблицаСерии
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПередачаМатериаловВПроизводство.Товары КАК ТаблицаТовары
| ПО ТаблицаСерии.Ссылка = ТаблицаТовары.Ссылка
| И ТаблицаСерии.Номенклатура = ТаблицаТовары.Номенклатура
| И ТаблицаСерии.Характеристика = ТаблицаТовары.Характеристика
| И ТаблицаСерии.Назначение = ТаблицаТовары.Назначение
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиПроизводства
| ПО ТаблицаСерии.Номенклатура = КлючиПроизводства.Номенклатура
| И ТаблицаСерии.Характеристика = КлючиПроизводства.Характеристика
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = КлючиПроизводства.СтатьяКалькуляции
| И ТаблицаСерии.Назначение = КлючиПроизводства.Назначение
| И (КлючиПроизводства.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка))
| И (&Подразделение = КлючиПроизводства.МестоХранения)
|ГДЕ
| ТаблицаСерии.Ссылка = &Ссылка
| И ТаблицаСерии.Количество <> 0
| И ТаблицаТовары.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаСерии.Номенклатура,
| ТаблицаСерии.Характеристика,
| КлючиПроизводства.КлючАналитики,
| ТаблицаСерии.Назначение,
| ТаблицаСерии.Серия,
| ТаблицаСерии.Количество
|
|ИМЕЮЩИЕ
| МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерийПолучатель) В (4, 6, 8, 10)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРасчетыЗатратВПроизводствеПоследовательность(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РасчетыЗатратВПроизводствеПоследовательность";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса ="
| ВЫБРАТЬ
| ТаблицаТовары.АналитикаПроизводства КАК АналитикаУчетаНоменклатуры,
| &Период КАК Период,
| &Ссылка КАК Регистратор
|ИЗ
| ВтВидыЗапасов КАК ТаблицаТовары";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаПартииПроизводственныхЗатрат(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ПартииПроизводственныхЗатрат";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаПроизводства КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.КорВидЗапасов КАК ВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК ДокументПоступления,
| НЕОПРЕДЕЛЕНО КАК АналитикаУчетаПартий,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК НалогообложениеНДС
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|
|ГДЕ
| &ПартионныйУчетНеИспользуется";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияНоменклатураНоменклатура";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Организация КАК Организация,
| &Подразделение КАК Подразделение,
|
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА Строки.АналитикаУчетаНоменклатуры
| ИНАЧЕ Строки.АналитикаУчетаНоменклатурыБезНазначения
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| Строки.НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Склад КАК Склад,
| ВЫБОР
| КОГДА Строки.РеализацияЗапасовДругойОрганизации ТОГДА
| Строки.ВидЗапасовВладельца.ТипЗапасов
| ИНАЧЕ Строки.ВидЗапасов.ТипЗапасов
| КОНЕЦ КАК ТипЗапасов,
| ВЫБОР
| КОГДА Строки.РеализацияЗапасовДругойОрганизации ТОГДА
| Строки.ВидЗапасовВладельца
| ИНАЧЕ Строки.ВидЗапасов
| КОНЕЦ КАК ВидЗапасов,
|
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА Строки.АналитикаПроизводства
| ИНАЧЕ Строки.АналитикаПроизводстваБезНазначения
| КОНЕЦ КАК КорАналитикаУчетаНоменклатуры,
| Строки.НаправлениеДеятельностиПроизводства КАК КорНаправлениеДеятельности,
| &Подразделение КАК КорСклад,
| ВЫБОР
| КОГДА Строки.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
| ИНАЧЕ Строки.ТипЗапасов
| КОНЕЦ КАК КорТипЗапасов,
| ВЫБОР
| КОГДА Строки.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ Строки.ВидЗапасов
| КОНЕЦ КАК КорВидЗапасов,
|
| Строки.Количество КАК Количество,
| Строки.Количество КАК КорКоличество,
|
| 0 КАК Стоимость,
| 0 КАК СтоимостьБезНДС,
| 0 КАК СтоимостьРегл,
|
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета ТОГДА
| Строки.ВидЗапасов
| ИНАЧЕ
| Строки.Номенклатура
| КОНЕЦ КАК ИсточникГФУНоменклатуры,
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета ТОГДА
| Строки.ВидЗапасов
| ИНАЧЕ
| Строки.Номенклатура
| КОНЕЦ КАК КорИсточникГФУНоменклатуры,
|
| НЕОПРЕДЕЛЕНО КАК ДокументДвижения,
| НЕОПРЕДЕЛЕНО КАК КорОрганизация
|ИЗ
| ВтВидыЗапасов КАК Строки
|ГДЕ
| Строки.ТипЗапасов В (ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар))";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаЗаказыМатериаловВПроизводство(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЗаказыМатериаловВПроизводство";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаМатериалыИУслуги.Распоряжение КАК Распоряжение,
| &Подразделение КАК Подразделение,
| &Подразделение КАК Получатель,
| ТаблицаМатериалыИУслуги.Номенклатура КАК Номенклатура,
| ТаблицаМатериалыИУслуги.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаМатериалыИУслуги.СтатусУказанияСерийОтправитель В (10, 14)
| ТОГДА ТаблицаМатериалыИУслуги.Серия
| КОНЕЦ КАК Серия,
| &Склад КАК Склад,
| ТаблицаМатериалыИУслуги.Назначение КАК Назначение,
| ТаблицаМатериалыИУслуги.НазначениеОтправителя КАК НазначениеОтправителя,
| ТаблицаМатериалыИУслуги.КодСтроки КАК КодСтроки,
| ТаблицаМатериалыИУслуги.Количество КАК Заказано,
| ТаблицаМатериалыИУслуги.Количество КАК КОформлению
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК ТаблицаМатериалыИУслуги
|ГДЕ
| ТаблицаМатериалыИУслуги.Ссылка = &Ссылка
| И ТаблицаМатериалыИУслуги.КодСтроки <> 0
| И &ПередачаПоРаспоряжениям";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтОснований", ТекстыЗапроса) Тогда
ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК Партнер,
| НЕОПРЕДЕЛЕНО КАК Контрагент,
| ВЫБОР
| КОГДА ДанныеДокумента.КоличествоНаправленийДеятельности = 1
| ТОГДА ДанныеДокумента.НаправлениеДеятельности
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК НаправлениеДеятельности,
| &Склад КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Ответственный КАК Ответственный,
| ВЫРАЗИТЬ(&Комментарий КАК СТРОКА(100)) КАК Комментарий,
| НЕОПРЕДЕЛЕНО КАК Валюта,
| 0 КАК Сумма,
| &Статус КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| &ИнформацияПоПодразделению КАК Дополнительно,
| &Период КАК ДатаПервичногоДокумента,
| &НомерНаПечать КАК НомерПервичногоДокумента,
| ЛОЖЬ КАК СторноИсправление,
| НЕОПРЕДЕЛЕНО КАК СторнируемыйДокумент,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| &Период КАК ДатаОтраженияВУчете,
| НЕОПРЕДЕЛЕНО КАК Приоритет
|ИЗ
| ВтОснований КАК ДанныеДокумента";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеШапки.ПередачаПоРаспоряжениям
| И НЕ ТоварыДокумента.Распоряжение В(НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Документ.ЗаказМатериаловВПроизводство.ПустаяСсылка))
| ТОГДА ТоварыДокумента.Распоряжение
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ТоварыДокумента.Ссылка КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеШапки.Подразделение КАК Получатель,
| ДанныеШапки.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.НазначениеОтправителя КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ВЫБОР
| КОГДА ДанныеШапки.ПередачаПоРаспоряжениям
| И ТоварыДокумента.КодСтроки = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ВЫБОР
| КОГДА ДанныеШапки.ПередачаПоРаспоряжениям
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПередачаМатериаловВПроизводство КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ДанныеШапки.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыРеализацийТоваровУслуг.КПредоплате)
| И ДанныеШапки.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиентуРеглУчет)
| И ТоварыДокумента.Количество <> 0";
СкладыСервер.ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеШапки.ПередачаПоРаспоряжениям
| И НЕ ТоварыДокумента.Распоряжение В(НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Документ.ЗаказМатериаловВПроизводство.ПустаяСсылка))
| ТОГДА ТоварыДокумента.Распоряжение
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ТоварыДокумента.Ссылка КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеШапки.Подразделение КАК Получатель,
| ДанныеШапки.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.НазначениеОтправителя КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ВЫБОР
| КОГДА ДанныеШапки.ПередачаПоРаспоряжениям
| И ТоварыДокумента.КодСтроки = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СверхЗаказа,
| ВЫБОР
| КОГДА ДанныеШапки.ПередачаПоРаспоряжениям
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПередачаМатериаловВПроизводство КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ДанныеШапки.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыРеализацийТоваровУслуг.КПредоплате)
| И ДанныеШапки.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиентуРеглУчет)
| И ТоварыДокумента.Количество <> 0";
ОбъектМетаданных = Метаданные.Документы.ПередачаМатериаловВПроизводство;
ИмяТЧСерии = "Серии";
СкладыСервер.ОформитьОтгрузкуТоваров(Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДанныхДокумента,
ОбъектМетаданных,
ИмяТЧСерии);
КонецПроцедуры
Функция ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтОснований";
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| МАКСИМУМ(
| ЕСТЬNULL(ТаблицаТовары.Назначение.НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК НаправлениеДеятельности,
| КОЛИЧЕСТВО(
| РАЗЛИЧНЫЕ ЕСТЬNULL(ТаблицаТовары.Назначение.НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК КоличествоНаправленийДеятельности
|ПОМЕСТИТЬ ВтОснований
|ИЗ
| Документ.ПередачаМатериаловВПроизводство КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПередачаМатериаловВПроизводство.Товары КАК ТаблицаТовары
| ПО ДанныеДокумента.Ссылка = ТаблицаТовары.Ссылка
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| &Ссылка";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Ссылка.Склад КАК Склад,
| ТабЧасть.НазначениеОтправителя КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.КодСтроки = 0";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецПроцедуры
#Область ПартионныйУчет
Функция ОписаниеРегистровУчетаЗатратИСебестоимости(Документ) Экспорт
ОписаниеРегистров = Новый Массив;
ОписаниеРегистров.Добавить(Метаданные.РегистрыНакопления.СебестоимостьТоваров);
Возврат ОписаниеРегистров;
КонецФункции
Функция УстановитьДополнительныеПараметрыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено) Экспорт
ДополнительныеПараметры = Новый Массив;
Если Запрос <> Неопределено Тогда
КонецЕсли;
Возврат ДополнительныеПараметры;
КонецФункции
Функция СформироватьДополнительныеТаблицыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено, ТекстыЗапроса = Неопределено) Экспорт
ДополнительныеТаблицы = Новый Массив;
ДополнительныеТаблицы.Добавить("ВтВидыЗапасов");
Если Запрос <> Неопределено Тогда
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса(ДополнительныеТаблицы[0], ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
КонецЕсли;
Возврат ДополнительныеТаблицы;
КонецФункции
Функция ОписаниеОперацийУчетаСебестоимости(Документ) Экспорт
ОписаниеОпераций = Новый Массив;
#Область Перемещение_Товар
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК ВидДеятельностиНДС,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК ВидДеятельностиНДСДокумента,
|
| НЕОПРЕДЕЛЕНО КАК КорОрганизация,
| НЕОПРЕДЕЛЕНО КАК КорПартия,
| ТаблицаВидыЗапасов.АналитикаПроизводства КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.КорВидЗапасов КАК КорВидЗапасов,
|
| НЕОПРЕДЕЛЕНО КАК Сделка,
| ТаблицаДокумента.Подразделение КАК Подразделение,
| ТаблицаДокумента.Ответственный КАК Менеджер,
| ТаблицаВидыЗапасов.ГруппаПродукции КАК ГруппаПродукции,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ИдентификаторСтроки,
|
| ТаблицаДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК ИдентификаторФинЗаписи,
| НЕОПРЕДЕЛЕНО КАК НастройкаХозяйственнойОперации
|
|ИЗ
| Документ.ПередачаМатериаловВПроизводство КАК ТаблицаДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И ТаблицаВидыЗапасов.ТипЗапасов В (
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар),
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.МатериалДавальца),
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ПолуфабрикатДавальца))
|";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.Перемещение,
ТекстЗапроса);
#КонецОбласти
Возврат ОписаниеОпераций;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область ПроведениеРегламентированныйУчет
Функция ТекстСписаниеКомиссионныхТоваров()
Возврат "
|ВЫБРАТЬ
| Операция.Ссылка КАК Ссылка,
| Операция.Дата КАК Период,
| Операция.Организация КАК Организация,
| НЕОПРЕДЕЛЕНО КАК ИдентификаторСтроки,
|
| ЕСТЬNULL(Стоимости.Сумма, Строки.Сумма) КАК Сумма,
| ЕСТЬNULL(Стоимости.СуммаУУ, Строки.СуммаУУ) КАК СуммаУУ,
|
| НЕОПРЕДЕЛЕНО КАК ВидСчетаДт,
| НЕОПРЕДЕЛЕНО КАК АналитикаУчетаДт,
| НЕОПРЕДЕЛЕНО КАК МестоУчетаДт,
|
| НЕОПРЕДЕЛЕНО КАК ВалютаДт,
| НЕОПРЕДЕЛЕНО КАК ПодразделениеДт,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка) КАК НаправлениеДеятельностиДт,
|
| НЕОПРЕДЕЛЕНО КАК СчетДт,
| НЕОПРЕДЕЛЕНО КАК СубконтоДт1,
| НЕОПРЕДЕЛЕНО КАК СубконтоДт2,
| НЕОПРЕДЕЛЕНО КАК СубконтоДт3,
|
| 0 КАК ВалютнаяСуммаДт,
| 0 КАК КоличествоДт,
| 0 КАК СуммаНУДт,
| 0 КАК СуммаПРДт,
| 0 КАК СуммаВРДт,
|
| ЗНАЧЕНИЕ(Перечисление.ВидыСчетовРеглУчета.ТоварыНаСкладе) КАК ВидСчетаКт,
| Строки.ГруппаФинансовогоУчета АналитикаУчетаКт,
| Строки.Склад КАК МестоУчетаКт,
|
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК ВалютаКт,
| Строки.ПодразделениеАналитики КАК ПодразделениеКт,
| Строки.НаправлениеДеятельности КАК НаправлениеДеятельностиКт,
|
| НЕОПРЕДЕЛЕНО КАК СчетКт,
| Строки.Номенклатура КАК СубконтоКт1,
| Операция.Склад КАК СубконтоКт2,
| НЕОПРЕДЕЛЕНО КАК СубконтоКт3,
|
| 0 КАК ВалютнаяСуммаКт,
| Строки.Количество КАК КоличествоКт,
| 0 КАК СуммаНУКт,
| 0 КАК СуммаПРКт,
| 0 КАК СуммаВРКт,
| ""Списание комиссионных и давальческих товаров"" КАК Содержание
|ИЗ
| ДокументыКОтражению КАК ДокументыКОтражению
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.ПередачаМатериаловВПроизводство КАК Операция
| ПО
| ДокументыКОтражению.Ссылка = Операция.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| ВтСтроки КАК Строки
| ПО
| Операция.Ссылка = Строки.Ссылка
| И Строки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| ВтСтоимости КАК Стоимости
| ПО
| Строки.Ссылка = Стоимости.Ссылка
| И Строки.Номенклатура = Стоимости.Номенклатура
| И Строки.Склад = Стоимости.Склад
| И Строки.ГруппаФинансовогоУчета = Стоимости.ГруппаФинансовогоУчета
| И Строки.НаправлениеДеятельности = Стоимости.НаправлениеДеятельности
| И Строки.РазделУчета = Стоимости.РазделУчета
| И Строки.НастройкаХозяйственнойОперации = Стоимости.НастройкаХозяйственнойОперации
| И Строки.ИдентификаторФинЗаписи = Стоимости.ИдентификаторФинЗаписи
|ГДЕ
| Строки.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыПринятыеНаКомиссию)
|";
КонецФункции
Функция ТекстСписаниеТоваровНаРасходы()
Возврат "
|ВЫБРАТЬ
| Операция.Ссылка КАК Ссылка,
| Операция.Дата КАК Период,
| Операция.Организация КАК Организация,
| НЕОПРЕДЕЛЕНО КАК ИдентификаторСтроки,
|
| ЕСТЬNULL(Стоимости.Сумма, Строки.Сумма) КАК Сумма,
| ЕСТЬNULL(Стоимости.СуммаУУ, Строки.СуммаУУ) КАК СуммаУУ,
|
| ЗНАЧЕНИЕ(Перечисление.ВидыСчетовРеглУчета.Производство) КАК ВидСчетаДт,
| Строки.КорГруппаПродукции КАК АналитикаУчетаДт,
| Операция.Подразделение КАК МестоУчетаДт,
|
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК ВалютаДт,
| Операция.Подразделение КАК ПодразделениеДт,
| ЕСТЬNULL(Стоимости.КорНаправлениеДеятельности, Строки.КорНаправлениеДеятельности) КАК НаправлениеДеятельностиДт,
|
| ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка) КАК СчетДт,
|
| Строки.Номенклатура КАК СубконтоДт1,
| Строки.КорГруппаПродукции КАК СубконтоДт2,
| ЗНАЧЕНИЕ(Перечисление.ТипыЗатратРегл.МатериальныеЗатраты) КАК СубконтоДт3,
|
| 0 КАК ВалютнаяСуммаДт,
| 0 КАК КоличествоДт,
| ЕСТЬNULL(Стоимости.СуммаНУ, Строки.СуммаНУ) КАК СуммаНУДт,
| ЕСТЬNULL(Стоимости.СуммаПР, Строки.СуммаПР) КАК СуммаПРДт,
| ЕСТЬNULL(Стоимости.СуммаВР, Строки.СуммаВР) КАК СуммаВРДт,
|
| ВЫБОР КОГДА Строки.Склад ССЫЛКА Справочник.Партнеры ИЛИ Строки.Склад ССЫЛКА Справочник.Организации ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ВидыСчетовРеглУчета.НаСкладе)
| КОНЕЦ КАК ВидСчетаКт,
|
| Строки.ГруппаФинансовогоУчета КАК АналитикаУчетаКт,
| Операция.Склад КАК МестоУчетаКт,
|
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК ВалютаКт,
| Операция.Склад.Подразделение КАК ПодразделениеКт,
| Строки.НаправлениеДеятельности КАК НаправлениеДеятельностиКт,
|
| ВЫБОР КОГДА Строки.Склад ССЫЛКА Справочник.Партнеры ИЛИ Строки.Склад ССЫЛКА Справочник.Организации ТОГДА
| ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТоварыКОформлениюОтчетовКомитенту)
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК СчетКт,
|
| ВЫБОР КОГДА Строки.Склад ССЫЛКА Справочник.Партнеры ИЛИ Строки.Склад ССЫЛКА Справочник.Организации ТОГДА
| Строки.Контрагент
| ИНАЧЕ
| Строки.Номенклатура
| КОНЕЦ КАК СубконтоКт1,
|
| ВЫБОР КОГДА Строки.Склад ССЫЛКА Справочник.Партнеры ИЛИ Строки.Склад ССЫЛКА Справочник.Организации ТОГДА
| Строки.Номенклатура
| ИНАЧЕ
| Операция.Склад
| КОНЕЦ КАК СубконтоКт2,
| НЕОПРЕДЕЛЕНО КАК СубконтоКт3,
|
| 0 КАК ВалютнаяСуммаКт,
| Строки.Количество КАК КоличествоКт,
| ЕСТЬNULL(Стоимости.СуммаНУ, Строки.СуммаНУ) КАК СуммаНУКт,
| ЕСТЬNULL(Стоимости.СуммаПР, Строки.СуммаПР) КАК СуммаПРКт,
| ЕСТЬNULL(Стоимости.СуммаВР, Строки.СуммаВР) КАК СуммаВРКт,
| ""Списание материалов в производство"" КАК Содержание
|ИЗ
| ДокументыКОтражению КАК ДокументыКОтражению
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.ПередачаМатериаловВПроизводство КАК Операция
| ПО
| ДокументыКОтражению.Ссылка = Операция.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| ВтСтроки КАК Строки
| ПО
| Операция.Ссылка = Строки.Ссылка
| И Строки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| ВтСтоимости КАК Стоимости
| ПО
| Строки.Ссылка = Стоимости.Ссылка
| И Строки.Номенклатура = Стоимости.Номенклатура
| И Строки.Склад = Стоимости.Склад
| И Строки.ГруппаФинансовогоУчета = Стоимости.ГруппаФинансовогоУчета
| И Строки.НаправлениеДеятельности = Стоимости.НаправлениеДеятельности
| И Строки.ТипЗапасов = Стоимости.ТипЗапасов
| И Строки.Контрагент = Стоимости.Контрагент
| И Строки.СтатьяРасходов = Стоимости.СтатьяРасходов
| И Строки.АналитикаРасходов = Стоимости.АналитикаРасходов
| И Строки.РазделУчета = Стоимости.РазделУчета
| И Строки.ГруппаПродукции = Стоимости.ГруппаПродукции
| И Строки.НастройкаХозяйственнойОперации = Стоимости.НастройкаХозяйственнойОперации
| И Строки.ИдентификаторФинЗаписи = Стоимости.ИдентификаторФинЗаписи
|
|ГДЕ
| Строки.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах)
|";
КонецФункции
Функция ТекстСписаниеТоваровВПроизводстве()
Возврат "
|ВЫБРАТЬ
| Операция.Ссылка КАК Ссылка,
| Операция.Дата КАК Период,
| Операция.Организация КАК Организация,
| НЕОПРЕДЕЛЕНО КАК ИдентификаторСтроки,
|
| ЕСТЬNULL(Стоимости.Сумма, Строки.Сумма) КАК Сумма,
| ЕСТЬNULL(Стоимости.СуммаУУ, Строки.СуммаУУ) КАК СуммаУУ,
|
| ЗНАЧЕНИЕ(Перечисление.ВидыСчетовРеглУчета.Производство) КАК ВидСчетаДт,
| Строки.КорГруппаПродукции КАК АналитикаУчетаДт,
| Операция.Подразделение КАК МестоУчетаДт,
|
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК ВалютаДт,
| Операция.Подразделение КАК ПодразделениеДт,
| ЕСТЬNULL(Стоимости.КорНаправлениеДеятельности, Строки.КорНаправлениеДеятельности) КАК НаправлениеДеятельностиДт,
|
| ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка) КАК СчетДт,
|
| Строки.Номенклатура КАК СубконтоДт1,
| Строки.КорГруппаПродукции КАК СубконтоДт2,
| ЗНАЧЕНИЕ(Перечисление.ТипыЗатратРегл.МатериальныеЗатраты) КАК СубконтоДт3,
|
| 0 КАК ВалютнаяСуммаДт,
| 0 КАК КоличествоДт,
| ЕСТЬNULL(Стоимости.СуммаНУ, Строки.СуммаНУ) КАК СуммаНУДт,
| ЕСТЬNULL(Стоимости.СуммаПР, Строки.СуммаПР) КАК СуммаПРДт,
| ЕСТЬNULL(Стоимости.СуммаВР, Строки.СуммаВР) КАК СуммаВРДт,
|
| ВЫБОР КОГДА Строки.Склад ССЫЛКА Справочник.Партнеры ИЛИ Строки.Склад ССЫЛКА Справочник.Организации ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ВидыСчетовРеглУчета.Производство)
| КОНЕЦ КАК ВидСчетаКт,
|
| ВЫБОР КОГДА Строки.Склад ССЫЛКА Справочник.Партнеры ИЛИ Строки.Склад ССЫЛКА Справочник.Организации ТОГДА
| ЗНАЧЕНИЕ(ПланВидовХарактеристик.СтатьиРасходов.ПустаяСсылка)
| ИНАЧЕ
| Строки.ГруппаПродукции
| КОНЕЦ КАК АналитикаУчетаКт,
| Операция.Склад.Подразделение КАК МестоУчетаКт,
|
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК ВалютаКт,
| Операция.Склад.Подразделение КАК ПодразделениеКт,
| Строки.НаправлениеДеятельности КАК НаправлениеДеятельностиКт,
|
| ВЫБОР КОГДА Строки.Склад ССЫЛКА Справочник.Партнеры ИЛИ Строки.Склад ССЫЛКА Справочник.Организации ТОГДА
| ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТоварыКОформлениюОтчетовКомитенту)
| ИНАЧЕ
| ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка)
| КОНЕЦ КАК СчетКт,
|
| ВЫБОР КОГДА Строки.Склад ССЫЛКА Справочник.Партнеры ИЛИ Строки.Склад ССЫЛКА Справочник.Организации ТОГДА
| Строки.Контрагент
| ИНАЧЕ
| Строки.Номенклатура
| КОНЕЦ КАК СубконтоКт1,
|
| ВЫБОР КОГДА Строки.Склад ССЫЛКА Справочник.Партнеры ИЛИ Строки.Склад ССЫЛКА Справочник.Организации ТОГДА
| Строки.Номенклатура
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ТипыЗатратРегл.МатериальныеЗатраты)
| КОНЕЦ КАК СубконтоКт2,
| Строки.ГруппаПродукции КАК СубконтоКт3,
|
| 0 КАК ВалютнаяСуммаКт,
| ВЫБОР КОГДА Строки.Склад ССЫЛКА Справочник.Партнеры ИЛИ Строки.Склад ССЫЛКА Справочник.Организации ТОГДА
| Строки.Количество ИНАЧЕ 0 КОНЕЦ КАК КоличествоКт,
| ВЫБОР КОГДА Строки.Склад ССЫЛКА Справочник.Партнеры ИЛИ Строки.Склад ССЫЛКА Справочник.Организации ТОГДА
| ЕСТЬNULL(Стоимости.СуммаНУ, Строки.СуммаНУ) ИНАЧЕ 0 КОНЕЦ КАК СуммаНУКт,
| ВЫБОР КОГДА Строки.Склад ССЫЛКА Справочник.Партнеры ИЛИ Строки.Склад ССЫЛКА Справочник.Организации ТОГДА
| ЕСТЬNULL(Стоимости.СуммаПР, Строки.СуммаПР) ИНАЧЕ 0 КОНЕЦ КАК СуммаПРКт,
| ВЫБОР КОГДА Строки.Склад ССЫЛКА Справочник.Партнеры ИЛИ Строки.Склад ССЫЛКА Справочник.Организации ТОГДА
| ЕСТЬNULL(Стоимости.СуммаВР, Строки.СуммаВР) ИНАЧЕ 0 КОНЕЦ КАК СуммаВРКт,
| ""Списание материалов в производство"" КАК Содержание
|ИЗ
| ДокументыКОтражению КАК ДокументыКОтражению
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.ПередачаМатериаловВПроизводство КАК Операция
| ПО
| ДокументыКОтражению.Ссылка = Операция.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| ВтСтроки КАК Строки
| ПО
| Операция.Ссылка = Строки.Ссылка
| И Строки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| ВтСтоимости КАК Стоимости
| ПО
| Строки.Ссылка = Стоимости.Ссылка
| И Строки.Номенклатура = Стоимости.Номенклатура
| И Строки.Склад = Стоимости.Склад
| И Строки.ГруппаФинансовогоУчета = Стоимости.ГруппаФинансовогоУчета
| И Строки.НаправлениеДеятельности = Стоимости.НаправлениеДеятельности
| И Строки.ТипЗапасов = Стоимости.ТипЗапасов
| И Строки.Контрагент = Стоимости.Контрагент
| И Строки.СтатьяРасходов = Стоимости.СтатьяРасходов
| И Строки.АналитикаРасходов = Стоимости.АналитикаРасходов
| И Строки.РазделУчета = Стоимости.РазделУчета
| И Строки.ГруппаПродукции = Стоимости.ГруппаПродукции
| И Строки.НастройкаХозяйственнойОперации = Стоимости.НастройкаХозяйственнойОперации
| И Строки.ИдентификаторФинЗаписи = Стоимости.ИдентификаторФинЗаписи
|
|ГДЕ
| Строки.РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ПроизводственныеЗатраты)
|";
КонецФункции
Функция ТекстВключениеИсключениеНДСВСтоимостьТоваров()
Возврат "
|ВЫБРАТЬ
| Партии.Ссылка КАК Ссылка,
| Партии.Период КАК Период,
| Партии.Организация КАК Организация,
| НЕОПРЕДЕЛЕНО КАК ИдентификаторСтроки,
|
| ВЫБОР КОГДА Партии.ВключениеНДСВСтоимость ТОГДА
| Партии.НДСРегл
| ИНАЧЕ
| -Партии.НДСРегл
| КОНЕЦ КАК Сумма,
| ВЫБОР КОГДА Партии.ВключениеНДСВСтоимость ТОГДА
| Партии.НДСУпр
| ИНАЧЕ
| -Партии.НДСУпр
| КОНЕЦ КАК СуммаУУ,
|
| ЗНАЧЕНИЕ(Перечисление.ВидыСчетовРеглУчета.Производство) КАК ВидСчетаДт,
| Партии.КорГруппаПродукции КАК АналитикаУчетаДт,
| Операция.Подразделение КАК МестоУчетаДт,
|
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК ВалютаДт,
| Операция.Подразделение КАК ПодразделениеДт,
| Партии.НаправлениеДеятельности КАК НаправлениеДеятельностиДт,
|
| ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка) КАК СчетДт,
| ЗНАЧЕНИЕ(Перечисление.ТипыЗатратРегл.МатериальныеЗатраты) КАК СубконтоДт1,
| Партии.Номенклатура КАК СубконтоДт2,
| Партии.КорГруппаПродукции КАК СубконтоДт3,
|
| 0 КАК ВалютнаяСуммаДт,
| 0 КАК КоличествоДт,
| 0 КАК СуммаНУДт,
| 0 КАК СуммаПРДт,
| 0 КАК СуммаВРДт,
|
| ЗНАЧЕНИЕ(Перечисление.ВидыСчетовРеглУчета.НДСпоПриобретеннымЦенностям) КАК ВидСчетаКт,
| Партии.ВидДеятельностиНДС КАК АналитикаУчетаКт,
| Партии.ВидЦенности КАК МестоУчетаКт,
|
| НЕОПРЕДЕЛЕНО КАК ВалютаКт,
| НЕОПРЕДЕЛЕНО КАК ПодразделениеКт,
| ЕСТЬNULL(ВводСобственныхСредств.НаправлениеДеятельности, Партии.НаправлениеДеятельности) КАК НаправлениеДеятельностиКт,
|
| ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка) КАК СчетКт,
| Партии.Контрагент КАК СубконтоКт1,
| Партии.ДокументПоступления КАК СубконтоКт2,
| НЕОПРЕДЕЛЕНО КАК СубконтоКт3,
|
| 0 КАК ВалютнаяСуммаКт,
| 0 КоличествоКт,
| 0 КАК СуммаНУКт,
| 0 КАК СуммаПРКт,
| 0 КАК СуммаВРКт,
| ""Включение/исключение НДС в стоимость товара на складе - получателе"" КАК Содержание
|ИЗ
| ДокументыКОтражению КАК ДокументыКОтражению
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Документ.ПередачаМатериаловВПроизводство КАК Операция
| ПО
| ДокументыКОтражению.Ссылка = Операция.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Партии КАК Партии
| ПО
| ДокументыКОтражению.Ссылка = Партии.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВТВводСобственныхСредств КАК ВводСобственныхСредств
| ПО Партии.Ссылка = ВводСобственныхСредств.Ссылка
| И Партии.ДокументПоступления = ВводСобственныхСредств.СчетФактура
| И Партии.НаправлениеДеятельности = ВводСобственныхСредств.ИсходноеНаправлениеДеятельности
|
|ГДЕ
| (Партии.ВключениеНДСВСтоимость ИЛИ Партии.ИсключениеНДСИзСтоимости)
|";
КонецФункции
#КонецОбласти
#Область ТекущиеДела
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
ИмяФормы = "Обработка.ПолучениеИВозвратМатериалов.Форма";
ОбщиеПараметрыЗапросов = ТекущиеДелаСервер.ОбщиеПараметрыЗапросов();
Доступность =
(ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или ПравоДоступа("Добавление", Метаданные.Документы.ПередачаМатериаловВПроизводство)
И ПравоДоступа("Просмотр", Метаданные.Обработки.ПолучениеИВозвратМатериалов))
И ПолучитьФункциональнуюОпцию("ИспользоватьПроизводство");
Если НЕ Доступность Тогда
Возврат;
КонецЕсли;
ИдентификаторДела = "ПередачиМатериаловВПроизводство21";
Если ПолучитьФункциональнуюОпцию("ИспользуетсяУправлениеПроизводством21и22") Тогда
ПредставлениеДела = НСтр("ru = 'Передачи материалов в производство 2.1'");
Иначе
ПредставлениеДела = НСтр("ru = 'Передачи материалов в производство'");
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СУММА(ОбщийЗапрос.РаспоряженийВсего) КАК ПередачиМатериаловВПроизводствоРаспоряженияНаОформлениеВсегоВРаботе,
| СУММА(ОбщийЗапрос.РаспоряженийНаСегодня) КАК ПередачиМатериаловВПроизводствоРаспоряженияНаОформлениеНаСегодня
|ИЗ
| (ВЫБРАТЬ
| СУММА(1) КАК РаспоряженийВсего,
| 0 КАК РаспоряженийНаСегодня
| ИЗ
| РегистрНакопления.ЗаказыМатериаловВПроизводство.Остатки(
| ,
| Получатель ССЫЛКА Справочник.СтруктураПредприятия
| И (Распоряжение ССЫЛКА Документ.ЗаказМатериаловВПроизводство
| )) КАК ЗапросПоРаспоряжениямВсего
| ГДЕ
| ЗапросПоРаспоряжениямВсего.КОформлениюОстаток > 0
|
| СГРУППИРОВАТЬ ПО
| ЗапросПоРаспоряжениямВсего.Распоряжение,
| ЗапросПоРаспоряжениямВсего.Склад
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| 0,
| СУММА(1)
| ИЗ
| РегистрНакопления.ЗаказыМатериаловВПроизводство.Остатки(
| &ДатаОтгрузки,
| Получатель ССЫЛКА Справочник.СтруктураПредприятия
| И (Распоряжение ССЫЛКА Документ.ЗаказМатериаловВПроизводство
| )) КАК ЗапросПоРаспоряжениямНаСегодня
| ГДЕ
| ЗапросПоРаспоряжениямНаСегодня.КОформлениюОстаток > 0
|
| СГРУППИРОВАТЬ ПО
| ЗапросПоРаспоряжениямНаСегодня.Распоряжение,
| ЗапросПоРаспоряжениямНаСегодня.Склад) КАК ОбщийЗапрос";
Запрос.УстановитьПараметр("ДатаОтгрузки", КонецДня(ОбщиеПараметрыЗапросов.ТекущаяДата) + 1);
Результат = ТекущиеДелаСлужебный.ЧисловыеПоказателиТекущихДел(Запрос, ОбщиеПараметрыЗапросов);
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = ИдентификаторДела;
ДелоРодитель.Представление = ПредставлениеДела;
ДелоРодитель.ЕстьДела = Результат.ПередачиМатериаловВПроизводствоРаспоряженияНаОформлениеВсегоВРаботе > 0;
ДелоРодитель.Владелец = Метаданные.Подсистемы.Производство;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ДатаОтгрузки", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Склад", Справочники.Склады.ПустаяСсылка());
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СтруктураБыстрогоОтбора", ПараметрыОтбора);
ПараметрыФормы.Вставить("ИмяТекущейСтраницы", "СтраницаКОформлениюНакладных");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ПередачиМатериаловВПроизводствоРаспоряженияНаОформлениеВсегоВРаботе";
Дело.ЕстьДела = Результат.ПередачиМатериаловВПроизводствоРаспоряженияНаОформлениеВсегоВРаботе > 0;
Дело.Представление = НСтр("ru = 'Распоряжения на оформление документов в работе'");
Дело.Количество = Результат.ПередачиМатериаловВПроизводствоРаспоряженияНаОформлениеВсегоВРаботе;
Дело.Важное = Ложь;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = ПараметрыФормы;
Дело.Владелец = ИдентификаторДела;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ДатаОтгрузки", ОбщиеПараметрыЗапросов.ТекущаяДата);
ПараметрыОтбора.Вставить("Склад", Справочники.Склады.ПустаяСсылка());
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СтруктураБыстрогоОтбора", ПараметрыОтбора);
ПараметрыФормы.Вставить("ИмяТекущейСтраницы", "СтраницаКОформлениюНакладных");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ПередачиМатериаловВПроизводствоРаспоряженияНаОформлениеНаСегодня";
Дело.ЕстьДела = Результат.ПередачиМатериаловВПроизводствоРаспоряженияНаОформлениеНаСегодня > 0;
Дело.Представление = НСтр("ru = 'Распоряжения на оформление документов на сегодня'");
Дело.Количество = Результат.ПередачиМатериаловВПроизводствоРаспоряженияНаОформлениеНаСегодня;
Дело.Важное = Ложь;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = ПараметрыФормы;
Дело.Владелец = ИдентификаторДела;
КонецПроцедуры
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Если ПравоДоступа("Изменение", Метаданные.Документы.ПередачаМатериаловВПроизводство) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ПередачаМатериаловВПроизводство";
КомандаПечати.Представление = НСтр("ru = 'Передача материалов в производство'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(
КомандыПечати,
"ЗаданиеНаОтбор");
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьМ11";
КомандаПечати.Идентификатор = "М11";
КомандаПечати.Представление = НСтр("ru = 'Требование-накладная (М-11)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
Если ПолучитьФункциональнуюОпцию("ИспользоватьОтветственноеХранение") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьОбщихФорм";
КомандаПечати.Идентификатор = "МХ3";
КомандаПечати.Представление = НСтр("ru = 'Акт о возврате ТМЦ, сданных на хранение (МХ-3)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПередачаМатериаловВПроизводство") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ПередачаМатериаловВПроизводство",
НСтр("ru = 'Передача материалов в производство'"),
ПечатьПередачаМатериаловВПроизводство(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры
Функция ПолучитьДанныеДляПечатнойФормыМ11(ПараметрыПечати, МассивДокументов) Экспорт
Запрос = ПолучитьЗапросПолученияДанныхДляПечатнойФормыМ11();
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки2",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Цены.Упаковка",
"Товары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаНаименованиеЕдиницыИзмерения",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
"Наименование",
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКодЕдиницыИзмерения",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
"Код",
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
РезультатПакетаЗапросов = Запрос.ВыполнитьПакет();
Возврат Новый Структура(
"РезультатПоШапке, РезультатПоТабличнойЧасти",
РезультатПакетаЗапросов[3],
РезультатПакетаЗапросов[4]);
КонецФункции
Функция ПолучитьЗапросПолученияДанныхДляПечатнойФормыМ11()
ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();
Если ИспользуетсяЦенообразование25 Тогда
ДатаПереходаНаЦенообразование25 = ЦенообразованиеВызовСервера.ДатаПереходаНаЦенообразованиеВерсии25();
КонецЕсли;
Если ИспользуетсяЦенообразование25 Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| МИНИМУМ(Товары.НомерСтроки) КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Упаковка КАК Упаковка,
| ЕСТЬNULL(ВЫБОР
| КОГДА
| ВидыНоменклатуры.НастройкиКлючаЦенПоХарактеристике = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
| ТОГДА ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка)
| ИНАЧЕ Товары.Характеристика.ХарактеристикаНоменклатурыДляЦенообразования
| КОНЕЦ, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка)) КАК ХарактеристикаЦО,
| ЕСТЬNULL(ВЫБОР
| КОГДА ВидыНоменклатуры.НастройкиКлючаЦенПоСерии = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
| ТОГДА ЗНАЧЕНИЕ(Справочник.СерииНоменклатурыДляЦенообразования.ПустаяСсылка)
| ИНАЧЕ Товары.Серия.СерияНоменклатурыДляЦенообразования
| КОНЕЦ, ЗНАЧЕНИЕ(Справочник.СерииНоменклатурыДляЦенообразования.ПустаяСсылка)) КАК СерияЦО,
| ВЫБОР
| КОГДА ВидыНоменклатуры.НастройкиКлючаЦенПоУпаковке = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
| ТОГДА ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ИНАЧЕ Товары.Упаковка
| КОНЕЦ КАК УпаковкаЦО,
| СУММА(Товары.КоличествоУпаковок) КАК КоличествоУпаковок,
| КОНЕЦПЕРИОДА(Товары.Ссылка.Дата, ДЕНЬ) КАК ДатаПолученияЦены,
| Товары.Ссылка.ВидЦены КАК ВидЦены,
| Товары.Ссылка.ВидЦены.ВалютаЦены КАК ВалютаЦены
|ПОМЕСТИТЬ Товары
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
| ПО (ВидыНоменклатуры.Ссылка = Товары.Номенклатура.ВидНоменклатуры)
|ГДЕ
| Товары.Ссылка В (&МассивДокументов)
|СГРУППИРОВАТЬ ПО
| Товары.Ссылка,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Упаковка,
| ЕСТЬNULL(ВЫБОР
| КОГДА
| ВидыНоменклатуры.НастройкиКлючаЦенПоХарактеристике = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
| ТОГДА ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка)
| ИНАЧЕ Товары.Характеристика.ХарактеристикаНоменклатурыДляЦенообразования
| КОНЕЦ, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка)),
| КОНЕЦПЕРИОДА(Товары.Ссылка.Дата, ДЕНЬ),
| ЕСТЬNULL(ВЫБОР
| КОГДА ВидыНоменклатуры.НастройкиКлючаЦенПоСерии = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
| ТОГДА ЗНАЧЕНИЕ(Справочник.СерииНоменклатурыДляЦенообразования.ПустаяСсылка)
| ИНАЧЕ Товары.Серия.СерияНоменклатурыДляЦенообразования
| КОНЕЦ, ЗНАЧЕНИЕ(Справочник.СерииНоменклатурыДляЦенообразования.ПустаяСсылка)),
| ВЫБОР
| КОГДА ВидыНоменклатуры.НастройкиКлючаЦенПоУпаковке = ЗНАЧЕНИЕ(Перечисление.ВариантОтбораДляКлючаЦен.НеИспользовать)
| ТОГДА ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ИНАЧЕ Товары.Упаковка
| КОНЕЦ,
| Товары.Ссылка.ВидЦены,
| Товары.Ссылка.ВидЦены.ВалютаЦены
|;
|
|
|ВЫБРАТЬ
| ПериодыЦенНоменклатуры.Ссылка КАК Ссылка,
| ПериодыЦенНоменклатуры.НомерСтроки КАК НомерСтроки,
| ЦеныНоменклатуры.Цена КАК Цена,
| ЦеныНоменклатуры.Упаковка КАК Упаковка
|ПОМЕСТИТЬ Цены
|ИЗ
| (ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.НомерСтроки КАК НомерСтроки,
| ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
| ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
| ЦеныНоменклатуры.Характеристика КАК Характеристика,
| МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период
| ИЗ
| Товары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ПО Товары.ВидЦены = ЦеныНоменклатуры.ВидЦены
| И Товары.Номенклатура = ЦеныНоменклатуры.Номенклатура
| И Товары.Характеристика = ЦеныНоменклатуры.Характеристика
| И Товары.ДатаПолученияЦены >= ЦеныНоменклатуры.Период
| И Товары.ВалютаЦены = ЦеныНоменклатуры.Валюта
| ГДЕ
| Товары.ДатаПолученияЦены < &ДатаПереходаНаЦенообразование25
| СГРУППИРОВАТЬ ПО
| Товары.Ссылка,
| Товары.НомерСтроки,
| ЦеныНоменклатуры.ВидЦены,
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.Характеристика) КАК ПериодыЦенНоменклатуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ПО ПериодыЦенНоменклатуры.Период = ЦеныНоменклатуры.Период
| И ПериодыЦенНоменклатуры.ВидЦены = ЦеныНоменклатуры.ВидЦены
| И ПериодыЦенНоменклатуры.Номенклатура = ЦеныНоменклатуры.Номенклатура
| И ПериодыЦенНоменклатуры.Характеристика = ЦеныНоменклатуры.Характеристика
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПериодыЦенНоменклатуры.Ссылка,
| ПериодыЦенНоменклатуры.НомерСтроки,
| ЦеныНоменклатуры.Цена,
| ЦеныНоменклатуры.Упаковка
|ИЗ
| (ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.НомерСтроки КАК НомерСтроки,
| ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
| ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
| ЦеныНоменклатуры.ХарактеристикаЦО КАК ХарактеристикаЦО,
| ЦеныНоменклатуры.СерияЦО КАК СерияЦО,
| ЦеныНоменклатуры.УпаковкаЦО КАК УпаковкаЦО,
| МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период
| ИЗ
| Товары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25 КАК ЦеныНоменклатуры
| ПО Товары.ВидЦены = ЦеныНоменклатуры.ВидЦены
| И Товары.Номенклатура = ЦеныНоменклатуры.Номенклатура
| И Товары.ХарактеристикаЦО = ЦеныНоменклатуры.ХарактеристикаЦО
| И Товары.СерияЦО = ЦеныНоменклатуры.СерияЦО
| И Товары.УпаковкаЦО = ЦеныНоменклатуры.УпаковкаЦО
| И Товары.ДатаПолученияЦены >= ЦеныНоменклатуры.Период
| И Товары.ВалютаЦены = ЦеныНоменклатуры.Валюта
| ГДЕ
| Товары.ДатаПолученияЦены >= &ДатаПереходаНаЦенообразование25
| СГРУППИРОВАТЬ ПО
| Товары.Ссылка,
| Товары.НомерСтроки,
| ЦеныНоменклатуры.ВидЦены,
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.ХарактеристикаЦО,
| ЦеныНоменклатуры.СерияЦО,
| ЦеныНоменклатуры.УпаковкаЦО) КАК ПериодыЦенНоменклатуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25 КАК ЦеныНоменклатуры
| ПО (ПериодыЦенНоменклатуры.Период = ЦеныНоменклатуры.Период)
| И (ПериодыЦенНоменклатуры.ВидЦены = ЦеныНоменклатуры.ВидЦены)
| И (ПериодыЦенНоменклатуры.Номенклатура = ЦеныНоменклатуры.Номенклатура)
| И (ПериодыЦенНоменклатуры.ХарактеристикаЦО = ЦеныНоменклатуры.ХарактеристикаЦО)
| И (ПериодыЦенНоменклатуры.СерияЦО = ЦеныНоменклатуры.СерияЦО)
| И (ПериодыЦенНоменклатуры.УпаковкаЦО = ЦеныНоменклатуры.УпаковкаЦО)
|;
|
|
|ВЫБРАТЬ
| ПериодыКурсовВалютПоДокументам.Ссылка КАК Ссылка,
| КурсыВалют.Валюта КАК Валюта,
| КурсыВалют.КурсЧислитель КАК КурсЧислитель,
| КурсыВалют.КурсЗнаменатель КАК КурсЗнаменатель
|ПОМЕСТИТЬ КурсыВалют
|ИЗ
| (ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Ссылка.Организация.ВалютаРегламентированногоУчета КАК БазоваяВалюта,
| МАКСИМУМ(КурсыВалют.Период) КАК Период,
| КурсыВалют.Валюта КАК Валюта
| ИЗ
| Документ.ПередачаМатериаловВПроизводство КАК Документы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтносительныеКурсыВалют КАК КурсыВалют
| ПО Документы.ВидЦены.ВалютаЦены = КурсыВалют.Валюта
| И Документы.Ссылка.Организация.ВалютаРегламентированногоУчета = КурсыВалют.БазоваяВалюта
| И Документы.Дата >= КурсыВалют.Период
| ГДЕ
| Документы.Ссылка В (&МассивДокументов)
| СГРУППИРОВАТЬ ПО
| Документы.Ссылка,
| Документы.Ссылка.Организация.ВалютаРегламентированногоУчета,
| КурсыВалют.Валюта) КАК ПериодыКурсовВалютПоДокументам
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтносительныеКурсыВалют КАК КурсыВалют
| ПО ПериодыКурсовВалютПоДокументам.Период = КурсыВалют.Период
| И ПериодыКурсовВалютПоДокументам.Валюта = КурсыВалют.Валюта
| И ПериодыКурсовВалютПоДокументам.БазоваяВалюта = КурсыВалют.БазоваяВалюта
|;
|
|
|ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Номер КАК Номер,
| Документы.Дата КАК ДатаДокумента,
| Документы.Дата КАК ДатаСоставления,
| Документы.Организация КАК Организация,
| Документы.Организация.Префикс КАК Префикс,
| Документы.Подразделение КАК Подразделение,
| Документы.ВидЦены КАК УчетныйВидЦены,
| Документы.ВидЦены.ВалютаЦены КАК УчетныйВидЦеныВалютаЦены
|ИЗ
| Документ.ПередачаМатериаловВПроизводство КАК Документы
|ГДЕ
| Документы.Ссылка В (&МассивДокументов)
|УПОРЯДОЧИТЬ ПО
| ДатаДокумента,
| Ссылка
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.Ссылка.Склад КАК Склад,
| ВЫРАЗИТЬ(Товары.Ссылка.Склад КАК Справочник.Склады).ТекущийОтветственный КАК КладовщикОтправитель,
| ВЫРАЗИТЬ(Товары.Ссылка.Склад КАК Справочник.Склады).ТекущаяДолжностьОтветственного КАК
| ДолжностьКладовщикаОтправителя,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Номенклатура.НаименованиеПолное КАК НоменклатураНаименование,
| Товары.Номенклатура.Код КАК НоменклатурныйНомерКод,
| Товары.Номенклатура.Артикул КАК НоменклатурныйНомерАртикул,
| Товары.Характеристика.НаименованиеПолное КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ Товары.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
| &ТекстЗапросаНаименованиеЕдиницыИзмерения КАК ЕдиницаИзмеренияНаименование,
| &ТекстЗапросаКодЕдиницыИзмерения КАК ЕдиницаИзмеренияКод,
| Товары.КоличествоУпаковок КАК Количество,
| (ВЫРАЗИТЬ(ЕСТЬNULL(Цены.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1) *
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) * ЕСТЬNULL(КурсыВалют.КурсЧислитель, 1) / ЕСТЬNULL(КурсыВалют.КурсЗнаменатель, 1)
| КАК ЧИСЛО(31, 2))) * Товары.КоличествоУпаковок КАК Сумма,
| ВЫРАЗИТЬ(ЕСТЬNULL(Цены.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1) *
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) * ЕСТЬNULL(КурсыВалют.КурсЧислитель, 1) / ЕСТЬNULL(КурсыВалют.КурсЗнаменатель, 1)
| КАК ЧИСЛО(31, 2)) КАК Цена,
| Товары.НомерСтроки КАК НомерСтроки
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалют
| ПО Товары.Ссылка = КурсыВалют.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Цены КАК Цены
| ПО Товары.Ссылка = Цены.Ссылка
| И Товары.НомерСтроки = Цены.НомерСтроки
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки
|ИТОГИ
| МАКСИМУМ(КладовщикОтправитель),
| МАКСИМУМ(ДолжностьКладовщикаОтправителя)
|ПО
| Ссылка,
| Склад");
Запрос.УстановитьПараметр("ДатаПереходаНаЦенообразование25", ДатаПереходаНаЦенообразование25);
Иначе
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| МИНИМУМ(Товары.НомерСтроки) КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Упаковка КАК Упаковка,
| СУММА(Товары.КоличествоУпаковок) КАК КоличествоУпаковок,
| КОНЕЦПЕРИОДА(Товары.Ссылка.Дата, ДЕНЬ) КАК ДатаПолученияЦены,
| Товары.Ссылка.ВидЦены КАК ВидЦены,
| Товары.Ссылка.ВидЦены.ВалютаЦены КАК ВалютаЦены
|ПОМЕСТИТЬ Товары
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК Товары
|ГДЕ
| Товары.Ссылка В(&МассивДокументов)
|
|СГРУППИРОВАТЬ ПО
| Товары.Ссылка,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Упаковка
|;
|
|
|ВЫБРАТЬ
| ПериодыЦенНоменклатуры.Ссылка,
| ПериодыЦенНоменклатуры.НомерСтроки,
| ЦеныНоменклатуры.Цена,
| ЦеныНоменклатуры.Упаковка
|ПОМЕСТИТЬ Цены
|ИЗ
| (ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.НомерСтроки КАК НомерСтроки,
| ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
| ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
| ЦеныНоменклатуры.Характеристика КАК Характеристика,
| МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период
| ИЗ
| Товары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ПО Товары.ВидЦены = ЦеныНоменклатуры.ВидЦены
| И Товары.Номенклатура = ЦеныНоменклатуры.Номенклатура
| И Товары.Характеристика = ЦеныНоменклатуры.Характеристика
| И Товары.ДатаПолученияЦены >= ЦеныНоменклатуры.Период
| И Товары.ВалютаЦены = ЦеныНоменклатуры.Валюта
|
| СГРУППИРОВАТЬ ПО
| Товары.Ссылка,
| Товары.НомерСтроки,
| ЦеныНоменклатуры.ВидЦены,
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.Характеристика) КАК ПериодыЦенНоменклатуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ПО ПериодыЦенНоменклатуры.Период = ЦеныНоменклатуры.Период
| И ПериодыЦенНоменклатуры.ВидЦены = ЦеныНоменклатуры.ВидЦены
| И ПериодыЦенНоменклатуры.Номенклатура = ЦеныНоменклатуры.Номенклатура
| И ПериодыЦенНоменклатуры.Характеристика = ЦеныНоменклатуры.Характеристика
|;
|
|
|ВЫБРАТЬ
| ПериодыКурсовВалютПоДокументам.Ссылка,
| КурсыВалют.Валюта,
| КурсыВалют.КурсЧислитель,
| КурсыВалют.КурсЗнаменатель
|ПОМЕСТИТЬ КурсыВалют
|ИЗ
| (ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Организация.ВалютаРегламентированногоУчета КАК БазоваяВалюта,
| МАКСИМУМ(КурсыВалют.Период) КАК Период,
| КурсыВалют.Валюта КАК Валюта
| ИЗ
| Документ.ПередачаМатериаловВПроизводство КАК Документы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтносительныеКурсыВалют КАК КурсыВалют
| ПО Документы.ВидЦены.ВалютаЦены = КурсыВалют.Валюта
| И Документы.Организация.ВалютаРегламентированногоУчета = КурсыВалют.БазоваяВалюта
| И Документы.Дата >= КурсыВалют.Период
| ГДЕ
| Документы.Ссылка В(&МассивДокументов)
|
| СГРУППИРОВАТЬ ПО
| Документы.Ссылка,
| Документы.Организация.ВалютаРегламентированногоУчета,
| КурсыВалют.Валюта) КАК ПериодыКурсовВалютПоДокументам
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОтносительныеКурсыВалют КАК КурсыВалют
| ПО ПериодыКурсовВалютПоДокументам.Период = КурсыВалют.Период
| И ПериодыКурсовВалютПоДокументам.Валюта = КурсыВалют.Валюта
| И ПериодыКурсовВалютПоДокументам.БазоваяВалюта = КурсыВалют.БазоваяВалюта
|;
|
|
|ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Номер КАК Номер,
| Документы.Дата КАК ДатаДокумента,
| Документы.Дата КАК ДатаСоставления,
| Документы.Организация КАК Организация,
| Документы.Организация.Префикс КАК Префикс,
| Документы.Подразделение КАК Подразделение,
| Документы.ВидЦены КАК УчетныйВидЦены,
| Документы.ВидЦены.ВалютаЦены КАК УчетныйВидЦеныВалютаЦены
|ИЗ
| Документ.ПередачаМатериаловВПроизводство КАК Документы
|ГДЕ
| Документы.Ссылка В(&МассивДокументов)
|
|УПОРЯДОЧИТЬ ПО
| ДатаДокумента,
| Ссылка
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.Ссылка.Склад КАК Склад,
| ВЫРАЗИТЬ(Товары.Ссылка.Склад КАК Справочник.Склады).ТекущийОтветственный КАК КладовщикОтправитель,
| ВЫРАЗИТЬ(Товары.Ссылка.Склад КАК Справочник.Склады).ТекущаяДолжностьОтветственного КАК ДолжностьКладовщикаОтправителя,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Номенклатура.НаименованиеПолное КАК НоменклатураНаименование,
| Товары.Номенклатура.Код КАК НоменклатурныйНомерКод,
| Товары.Номенклатура.Артикул КАК НоменклатурныйНомерАртикул,
| Товары.Характеристика.НаименованиеПолное КАК Характеристика,
| ВЫБОР КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ Товары.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
| &ТекстЗапросаНаименованиеЕдиницыИзмерения КАК ЕдиницаИзмеренияНаименование,
| &ТекстЗапросаКодЕдиницыИзмерения КАК ЕдиницаИзмеренияКод,
| Товары.КоличествоУпаковок КАК Количество,
| (ВЫРАЗИТЬ(ЕСТЬNULL(Цены.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1) * ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) * ЕСТЬNULL(КурсыВалют.КурсЧислитель, 1) / ЕСТЬNULL(КурсыВалют.КурсЗнаменатель, 1) КАК ЧИСЛО(31,2))) * Товары.КоличествоУпаковок КАК Сумма,
| ВЫРАЗИТЬ(ЕСТЬNULL(Цены.Цена, 0) / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1) * ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 1) * ЕСТЬNULL(КурсыВалют.КурсЧислитель, 1) / ЕСТЬNULL(КурсыВалют.КурсЗнаменатель, 1) КАК ЧИСЛО(31,2)) КАК Цена,
| Товары.НомерСтроки КАК НомерСтроки
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалют
| ПО Товары.Ссылка = КурсыВалют.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Цены КАК Цены
| ПО Товары.Ссылка = Цены.Ссылка
| И Товары.НомерСтроки = Цены.НомерСтроки
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки
|ИТОГИ
| МАКСИМУМ(ДолжностьКладовщикаОтправителя), МАКСИМУМ(КладовщикОтправитель)
|ПО
| Ссылка,
| Склад");
КонецЕсли;
Возврат Запрос
КонецФункции
Функция ПечатьПередачаМатериаловВПроизводство(МассивОбъектов, ОбъектыПечати)
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
ДопКолонка = КолонкаКодов.ИмяКолонки;
ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
ВыводитьДопКолонку = ЗначениеЗаполнено(ДопКолонка);
ЗапросПоДокументам = Новый Запрос;
ЗапросПоДокументам.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
ЗапросПоДокументам.Текст =
"ВЫБРАТЬ
| Документ.Ссылка КАК Ссылка,
| Документ.Номер КАК Номер,
| Документ.Дата КАК Дата,
| Документ.Организация КАК Организация,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(Документ.Склад) КАК Склад,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(Документ.Подразделение) КАК Подразделение,
| Документ.Организация.Префикс КАК Префикс
|ИЗ
| Документ.ПередачаМатериаловВПроизводство КАК Документ
|ГДЕ
| Документ.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Дата, Ссылка
|;
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| МИНИМУМ(ТаблицаТовары.НомерСтроки) КАК НомерСтроки,
| " + ?(ВыводитьДопКолонку, "ТаблицаТовары.Номенклатура." + ДопКолонка + " КАК ДопКолонка,", "") + "
| ТаблицаТовары.Номенклатура.НаименованиеПолное КАК Номенклатура,
| ТаблицаТовары.Характеристика.НаименованиеПолное КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) ТОГДА
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Упаковка)
| КОНЕЦ КАК Упаковка,
| СУММА(ТаблицаТовары.КоличествоУпаковок) КАК Количество
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивОбъектов)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Ссылка,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ВЫБОР
| КОГДА ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) ТОГДА
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Упаковка)
| КОНЕЦ
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПередачаМатериаловВПроизводство";
РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс");
СинонимДокумента = Метаданные.Документы.ПередачаМатериаловВПроизводство.Синоним;
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПередачаМатериаловВПроизводство.ПФ_MXL_ПередачаМатериаловВПроизводство");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодписи = Макет.ПолучитьОбласть("Подписи");
Если ВыводитьДопКолонку Тогда
ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаДопКолонка");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицыДопКолонка");
Иначе
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
КонецЕсли;
ПервыйДокумент = Истина;
Результат = ЗапросПоДокументам.ВыполнитьПакет();
ВыборкаДокументы = Результат[0].Выбрать();
ВыборкаСтроки = Результат[1].Выбрать();
ВыборкаСтроки.Сбросить();
Пока ВыборкаДокументы.Следующий() Цикл
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаДокументы);
ОбластьЗаголовок.Параметры.ТекстЗаголовка = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, СинонимДокумента);
ОбластьЗаголовок.Параметры.Заполнить(ВыборкаДокументы);
ПараметрыОбласти = Новый Структура;
НаименованияНаДату = ОрганизацииПовтИсп.НаименованияНаДату(ВыборкаДокументы.Организация, ВыборкаДокументы.Дата);
ПараметрыОбласти.Вставить("Организация", НаименованияНаДату.НаименованиеСокращенное);
ОбластьЗаголовок.Параметры.Заполнить(ПараметрыОбласти);
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабДокумент, Макет, ОбластьЗаголовок, ВыборкаДокументы.Ссылка);
ТабДокумент.Вывести(ОбластьЗаголовок);
Если ВыводитьДопКолонку Тогда
ОбластьШапкаТаблицы.Параметры.ДопКолонка = ПредставлениеКолонкиКодов;
КонецЕсли;
ТабДокумент.Вывести(ОбластьШапкаТаблицы);
Пока ВыборкаСтроки.НайтиСледующий(ВыборкаДокументы.Ссылка, "Ссылка") Цикл
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
ОбластьСтрока.Параметры.Заполнить(ВыборкаСтроки);
ОбластьСтрока.Параметры.Номенклатура = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаСтроки.Номенклатура,
ВыборкаСтроки.Характеристика,
,
,
ДопПараметрыПредставлениеНоменклатуры);
ТабДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
ТабДокумент.Вывести(ОбластьПодписи);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокументы.Ссылка);
КонецЦикла;
Возврат ТабДокумент;
КонецФункции
Функция ПолучитьДанныеДляПечатнойФормыМХ3(ПараметрыПечати, МассивОбъектов) Экспорт
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов().ИмяКолонки;
Если Не ЗначениеЗаполнено(КолонкаКодов) Тогда
КолонкаКодов = "Код";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Дата КАК ДатаДокумента,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Склад КАК Склад,
| ЕСТЬNULL(Склады.СкладОтветственногоХранения, ЛОЖЬ) КАК СкладОтветственногоХранения,
| ДанныеДокумента.Организация = Склады.Поклажедержатель КАК ОрганизацияПоклажедержатель,
| Склады.ИсточникИнформацииОЦенахДляПечати КАК ИсточникИнформацииОЦенахДляПечати,
| Склады.УчетныйВидЦены КАК ВидЦены,
| Склады.УчетныйВидЦены.ВалютаЦены КАК ВалютаЦены,
| РасчетСебестоимостиТоваровОрганизации.Ссылка.ПредварительныйРасчет КАК ПредварительныйРасчет,
| ДанныеДокумента.Дата КАК ДатаПолученияСебестоимости
|ПОМЕСТИТЬ ДанныеДокумента
|ИЗ
| Документ.ПередачаМатериаловВПроизводство КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасчетСебестоимостиТоваров.Организации КАК РасчетСебестоимостиТоваровОрганизации
| ПО РасчетСебестоимостиТоваровОрганизации.Ссылка.Дата МЕЖДУ НАЧАЛОПЕРИОДА(ДанныеДокумента.Дата, МЕСЯЦ) И КОНЕЦПЕРИОДА(ДанныеДокумента.Дата, МЕСЯЦ)
| И РасчетСебестоимостиТоваровОрганизации.Ссылка.Проведен
| И ДанныеДокумента.Организация = РасчетСебестоимостиТоваровОрганизации.Организация
| И РасчетСебестоимостиТоваровОрганизации.Ссылка.ТипЗаписи = ЗНАЧЕНИЕ(Перечисление.ТипыЗаписейПартий.ПустаяСсылка)
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ДанныеДокумента.Склад = Склады.Ссылка
|ГДЕ
| ДанныеДокумента.Проведен
| И ДанныеДокумента.Ссылка В(&МассивДокументов)
|;
|
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.ДатаДокумента КАК ДатаДокумента,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Склад КАК Склад,
| ДанныеДокумента.ИсточникИнформацииОЦенахДляПечати КАК ИсточникИнформацииОЦенахДляПечати,
| ДанныеДокумента.ВидЦены КАК ВидЦены,
| ДанныеДокумента.ВалютаЦены КАК ВалютаЦены,
| ДанныеДокумента.ПредварительныйРасчет КАК ПредварительныйРасчет,
| ДанныеДокумента.ДатаПолученияСебестоимости КАК ДатаПолученияСебестоимости
|ПОМЕСТИТЬ ВтШапка
|ИЗ
| ДанныеДокумента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.СкладОтветственногоХранения
| И НЕ ДанныеДокумента.ОрганизацияПоклажедержатель
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Шапка.Склад КАК Склад,
| Товары.Упаковка КАК Упаковка,
| Товары.Серия КАК Серия,
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| &ТекстЗапросаНаименованиеЕдиницыИзмерения КАК ЕдиницаИзмеренияНаименование,
| &ТекстЗапросаКодЕдиницыИзмерения КАК ЕдиницаИзмеренияКод,
| &ТекстЗапросаНаименованиеЕдиницыИзмерения КАК ВидУпаковки,
| Товары.КоличествоУпаковок КАК КоличествоУпаковок,
| Товары.Количество КАК Количество,
| КОНЕЦПЕРИОДА(Товары.Ссылка.Дата, ДЕНЬ) КАК ДатаПолученияЦены,
| Шапка.ВидЦены КАК ВидЦены,
| Шапка.ВалютаЦены КАК ВалютаЦены
|ПОМЕСТИТЬ ВтТовары
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтШапка КАК Шапка
| ПО Товары.Ссылка = Шапка.Ссылка
|ГДЕ
| Товары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И (Шапка.ИсточникИнформацииОЦенахДляПечати = ЗНАЧЕНИЕ(Перечисление.ИсточникиИнформацииОЦенахДляПечати.ПоВидуЦен)
| ИЛИ (Шапка.ИсточникИнформацииОЦенахДляПечати = ЗНАЧЕНИЕ(Перечисление.ИсточникиИнформацииОЦенахДляПечати.ПоСебестоимости)
| И Шапка.ПредварительныйРасчет ЕСТЬ NULL))
|;
|
|
|ВЫБРАТЬ
| ВидыЗапасов.Ссылка КАК Ссылка,
| ВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| Шапка.Организация КАК Организация,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура.ЕдиницаИзмерения КАК Упаковка,
| ВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура.ЕдиницаИзмерения.Представление КАК ЕдиницаИзмеренияНаименование,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура.ЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура.ЕдиницаИзмерения.Представление ВидУпаковки,
| ВидыЗапасов.Количество КАК КоличествоУпаковок,
| ВидыЗапасов.Количество КАК Количество,
| КОНЕЦПЕРИОДА(ВидыЗапасов.Ссылка.Дата, ДЕНЬ) КАК ДатаПолученияЦены,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.СкладскаяТерритория.УчетныйВидЦены КАК ВидЦены,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.СкладскаяТерритория.УчетныйВидЦены.ВалютаЦены КАК ВалютаЦены,
| Шапка.ПредварительныйРасчет КАК ПредварительныйРасчет
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.ВидыЗапасов КАК ВидыЗапасов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтШапка КАК Шапка
| ПО ВидыЗапасов.Ссылка = Шапка.Ссылка
|ГДЕ
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.СкладскаяТерритория.ИсточникИнформацииОЦенахДляПечати = ЗНАЧЕНИЕ(Перечисление.ИсточникиИнформацииОЦенахДляПечати.ПоСебестоимости)
|;
|";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаНаименованиеЕдиницыИзмерения",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
"Наименование", "Товары.Упаковка", "Товары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКодЕдиницыИзмерения",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
"Код", "Товары.Упаковка", "Товары.Номенклатура"));
СкладыСервер.ДополнитьТекстЗапросаДляПечатныхФормМХ1Х3(Запрос);
Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
Запрос.УстановитьПараметр("КолонкаКодов", КолонкаКодов);
МассивРезультатов = Запрос.ВыполнитьПакет();
РезультатПоШапке = МассивРезультатов[МассивРезультатов.ВГраница() - 3];
РезультатПоСкладам = МассивРезультатов[МассивРезультатов.ВГраница() - 2];
РезультатПоТабличнойЧасти = МассивРезультатов[МассивРезультатов.ВГраница() - 1];
РезультатПоОшибкам = МассивРезультатов[МассивРезультатов.ВГраница()];
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", РезультатПоШапке);
СтруктураДанныхДляПечати.Вставить("РезультатПоСкладам", РезультатПоСкладам);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", РезультатПоТабличнойЧасти);
СтруктураДанныхДляПечати.Вставить("РезультатПоОшибкам", РезультатПоОшибкам);
Возврат СтруктураДанныхДляПечати;
КонецФункции
Процедура ЗаполнитьШапкуДокументаПоЗаказу(Объект, ПараметрыЗаполнения, МассивЗаказов) Экспорт
ЗаполнитьЗначенияСвойств(Объект, ПараметрыЗаполнения.РеквизитыШапки);
Объект.Склад = ПараметрыЗаполнения.Отправитель;
Объект.Подразделение = ПараметрыЗаполнения.Получатель;
Объект.ПередачаПоРаспоряжениям = Истина;
Объект.Дата = ?(МассивЗаказов.Количество() = 1,
ЗаказыСервер.ПолучитьМинимальнуюДатуОтгрузкиЗаказа(МассивЗаказов, ПараметрыЗаполнения.ИмяРегистраЗаказ,
ПараметрыЗаполнения.ИмяПоляЗаказ),
ЗаказыСервер.ПолучитьМаксимальнуюДатуОтгрузкиЗаказа(МассивЗаказов, ПараметрыЗаполнения.ИмяРегистраЗаказ,
ПараметрыЗаполнения.ИмяПоляЗаказ));
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ПередачаМатериаловВПроизводство);
НоменклатураСервер.ЗаполнитьСерииПоFEFO(Объект, ПараметрыУказанияСерий, Ложь);
ЗаказыСервер.ЗаполнитьЗаказВШапкеПоЗаказамВТабличнойЧасти(Объект.Распоряжение, Объект.Товары, ПараметрыЗаполнения.ИмяПоляЗаказ);
КонецПроцедуры
Процедура ПараметрыЗапросаДляСозданияНаОсновании(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("МассивЗаказов", ДанныеОтбора.МассивЗаказов);
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", Истина);
ПараметрыЗапросов.Вставить("Склад", ДанныеОтбора.РеквизитыШапки.Склад);
ПараметрыЗапросов.Вставить("Подразделение", ДанныеОтбора.РеквизитыШапки.Подразделение);
ПараметрыЗапросов.Вставить("Организация", ДанныеОтбора.РеквизитыШапки.Организация);
Если ДанныеОтбора.Свойство("СписокМатериалов") Тогда
ПараметрыЗапросов.Вставить("СписокМатериалов", ДанныеОтбора.СписокМатериалов.Выгрузить());
КонецЕсли;
Если ДанныеОтбора.ЗаполнятьПоОрдеру Тогда
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
Если ДанныеОтбора.Свойство("СписокМатериалов") Тогда
ИменаЗапросов.Добавить("ВтСписокМатериалов");
КонецЕсли;
ИменаЗапросов.Добавить("ТаблицаОтгружено");
ИменаЗапросов.Добавить("ТаблицаОформить");
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
Иначе
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
Если ДанныеОтбора.Свойство("СписокМатериалов") Тогда
ИменаЗапросов.Добавить("ВтСписокМатериалов");
КонецЕсли;
ИменаЗапросов.Добавить("ТаблицаОформить");
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
КонецЕсли;
КонецПроцедуры
Процедура ПараметрыЗапросаДляПерезаполненияПоОрдерам(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("МассивЗаказов", ДанныеОтбора.МассивЗаказов);
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", Истина);
ПараметрыЗапросов.Вставить("Регистратор", ДанныеОтбора.РеквизитыШапки.Ссылка);
ПараметрыЗапросов.Вставить("Склад", ДанныеОтбора.РеквизитыШапки.Склад);
ПараметрыЗапросов.Вставить("Подразделение", ДанныеОтбора.РеквизитыШапки.Подразделение);
ПараметрыЗапросов.Вставить("Организация", ДанныеОтбора.РеквизитыШапки.Организация);
ПараметрыЗапросов.Вставить("ТоварыНакладной", ДанныеОтбора.ТоварыНакладной);
ПараметрыЗапросов.Вставить("НакладнаяПоЗаказам", ДанныеОтбора.НакладнаяПоЗаказам);
ПараметрыЗапросов.Вставить("УчитыватьСобирается", Истина);
ПараметрыЗапросов.Вставить("ЗаполнятьПоСобирается", Истина);
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ВтНакладная");
ИменаЗапросов.Добавить("ТаблицаОтгружено");
ИменаЗапросов.Добавить("ТаблицаОформить");
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
ИменаПодзапросов.Добавить("БлокСторноНакладная");
ИменаПодзапросов.Добавить("БлокНовыеДвиженияНакладная");
КонецПроцедуры
Процедура ПараметрыЗапросаДляЗаполненияПоЗаказам(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("МассивЗаказов", ДанныеОтбора.МассивЗаказов);
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", ДанныеОтбора.МассивЗаказов.Количество() = 1);
ПараметрыЗапросов.Вставить("Регистратор", ДанныеОтбора.РеквизитыШапки.Ссылка);
ПараметрыЗапросов.Вставить("Организация", ДанныеОтбора.РеквизитыШапки.Организация);
ПараметрыЗапросов.Вставить("Подразделение", ДанныеОтбора.РеквизитыШапки.Подразделение);
ПараметрыЗапросов.Вставить("Склад", ДанныеОтбора.РеквизитыШапки.Склад);
Если ДанныеОтбора.ЗаполнятьПоОрдеру Тогда
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ТаблицаОтгружено");
ИменаЗапросов.Добавить("ТаблицаОформить");
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
ИменаПодзапросов.Добавить("БлокСторноНакладная");
Иначе
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ТаблицаОформить");
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
ИменаПодзапросов.Добавить("БлокСторноНакладная");
КонецЕсли;
КонецПроцедуры
Функция ТекстЗапросаВременнойТаблицыНакладной()
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Количество КАК Количество,
|
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.НазначениеОтправителя КАК НазначениеОтправителя,
| Таблица.Серия КАК Серия,
| Таблица.ГруппаПродукции КАК ГруппаПродукции,
|
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.Упаковка КАК Упаковка,
|
| ВЫБОР КОГДА НЕ &НакладнаяПоЗаказам ТОГДА
| &Регистратор
| ИНАЧЕ
| Таблица.Распоряжение
| КОНЕЦ КАК Распоряжение
|
|ПОМЕСТИТЬ ВТНакладная
|ИЗ
| &ТоварыНакладной КАК Таблица
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВременнойТаблицыРаспоряжений()
ТекстЗапроса =
"ВЫБРАТЬ
| СписокДокументов.Распоряжение КАК Распоряжение
|ПОМЕСТИТЬ ВТЗаказыОтбор
|ИЗ
| РегистрНакопления.ЗаказыМатериаловСУчетомКорректировок.Обороты(
| ,
| ,
| ,
| (НЕ &ОтобратьПоЗаказу
| ИЛИ Распоряжение В (&МассивЗаказов))
| И Подразделение = &Подразделение
| И Организация = &Организация
| И Склад = &Склад) КАК СписокДокументов
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Регистратор
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВременнойТаблицыСпискаМатериалов()
ТекстЗапроса =
"ВЫБРАТЬ
| СписокМатериалов.Номенклатура КАК Номенклатура,
| СписокМатериалов.Характеристика КАК Характеристика,
| СписокМатериалов.Назначение КАК Назначение
|ПОМЕСТИТЬ ВтСписокМатериалов
|ИЗ
| &СписокМатериалов КАК СписокМатериалов
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОбъединения(Имена, Тексты)
ТекстОбъединения = "";
ЭтоПервыйБлок = Истина;
Для Каждого Имя Из Имена Цикл
Если ЭтоПервыйБлок Тогда
ЭтоПервыйБлок = Ложь;
Иначе
ТекстОбъединения = ТекстОбъединения + "
|
| ОБЪЕДИНИТЬ ВСЕ
|
|";
КонецЕсли;
ТекстОбъединения = ТекстОбъединения + Тексты[Имя];
КонецЦикла;
ТекстЗапроса =
"ВЫБРАТЬ
| Набор.Распоряжение КАК Распоряжение,
| Набор.КодСтроки КАК КодСтроки,
|
| Набор.Номенклатура КАК Номенклатура,
| Набор.Характеристика КАК Характеристика,
| МАКСИМУМ(Набор.Назначение) КАК Назначение,
| МАКСИМУМ(Набор.НазначениеОтправителя) КАК НазначениеОтправителя,
| Набор.Серия КАК Серия,
| МАКСИМУМ(Набор.Дата) КАК Дата,
| МАКСИМУМ(Набор.НомерСтроки) КАК НомерСтроки,
| МАКСИМУМ(Набор.ДатаОтгрузки) КАК ДатаОтгрузки,
| МАКСИМУМ(Набор.ГруппаПродукции) КАК ГруппаПродукции,
| МАКСИМУМ(Набор.ПрисутствуетВДокументе) КАК ПрисутствуетВДокументе,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| Набор.Упаковка
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ) КАК УпаковкаНакладной,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Набор.Упаковка
| КОНЕЦ) КАК УпаковкаЗаказа,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| Набор.УпаковкаКоэффициент
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ) КАК УпаковкаНакладнойКоэффициент,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Набор.УпаковкаКоэффициент
| КОНЕЦ) КАК УпаковкаЗаказаКоэффициент,
|
|
| СУММА(Набор.КоличествоВЗаказе) КАК КоличествоВЗаказе,
| СУММА(Набор.КоличествоВНакладной) КАК КоличествоВНакладной
|
|ИЗ ТекстОбъединения КАК Набор
|
|СГРУППИРОВАТЬ ПО
| Набор.Распоряжение, Набор.КодСтроки,
| Набор.Номенклатура, Набор.Характеристика, Набор.Серия,
| ВЫБОР КОГДА Набор.КодСтроки <> 0 ТОГДА
| 0
| ИНАЧЕ
| Набор.НомерСтроки
| КОНЕЦ
|
|ИМЕЮЩИЕ
| СУММА(Набор.КоличествоВЗаказе) > 0 ИЛИ СУММА(Набор.КоличествоВНакладной) > 0
|
|УПОРЯДОЧИТЬ ПО
| Дата, Распоряжение, НомерСтроки
|;
|
|
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ТекстОбъединения", "(" + ТекстОбъединения + ")");
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОстаткиРегистраЗаказы()
ТекстЗапроса =
" ВЫБРАТЬ
| ТаблицаОстатки.Распоряжение КАК Распоряжение,
| ТаблицаОстатки.КодСтроки КАК КодСтроки,
|
| ТаблицаОстатки.КОформлениюОстаток КАК КоличествоВЗаказе,
| 0 КАК КоличествоВНакладной,
|
|
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
|
| ТаблицаОстатки.Назначение КАК Назначение,
| ТаблицаОстатки.НазначениеОтправителя КАК НазначениеОтправителя,
| Таблица.Серия КАК Серия,
| ДанныеДокументаЗаказМатериалов.Дата КАК Дата,
| ДанныеДокументаЗаказМатериаловТовары.НомерСтроки КАК НомерСтроки,
| Таблица.ДатаПотребности КАК ДатаОтгрузки,
| ЕСТЬNULL(ДанныеДокументаЗаказМатериаловТовары.ГруппаПродукции,
| НЕОПРЕДЕЛЕНО
| ) КАК ГруппаПродукции,
| ЛОЖЬ КАК ПрисутствуетВДокументе,
|
| Таблица.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент
| ИЗ
| РегистрНакопления.ЗаказыМатериаловВПроизводство.Остатки(,
| Распоряжение В(
| ВЫБРАТЬ
| Таблица.Распоряжение КАК Распоряжение
| ИЗ
| ВТЗаказыОтбор КАК Таблица)
| И Подразделение = &Подразделение
| И Склад = &Склад) КАК ТаблицаОстатки
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыМатериаловСУчетомКорректировок.Обороты(,,,
| Распоряжение В(
| ВЫБРАТЬ
| Таблица.Распоряжение КАК Распоряжение
| ИЗ
| ВТЗаказыОтбор КАК Таблица)
| И Подразделение = &Подразделение
| И Склад = &Склад) КАК Таблица
| ПО ТаблицаОстатки.Распоряжение = Таблица.Распоряжение
| И ТаблицаОстатки.КодСтроки = Таблица.КодСтроки
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказМатериаловВПроизводство КАК ДанныеДокументаЗаказМатериалов
| ПО ТаблицаОстатки.Распоряжение = ДанныеДокументаЗаказМатериалов.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказМатериаловВПроизводство.Товары КАК ДанныеДокументаЗаказМатериаловТовары
| ПО Таблица.Распоряжение = ДанныеДокументаЗаказМатериаловТовары.Ссылка
| И Таблица.КодСтрокиРаспоряжения = ДанныеДокументаЗаказМатериаловТовары.КодСтроки
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Таблица.Упаковка",
"Таблица.Номенклатура"));
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОстаткиРегистраЗаказыСОтборомМатериалов()
ТекстЗапроса =
" ВЫБРАТЬ
| ТаблицаОстатки.Распоряжение КАК Распоряжение,
| ТаблицаОстатки.КодСтроки КАК КодСтроки,
|
| ТаблицаОстатки.КОформлениюОстаток КАК КоличествоВЗаказе,
| 0 КАК КоличествоВНакладной,
|
|
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
|
| ТаблицаОстатки.Назначение КАК Назначение,
| ТаблицаОстатки.НазначениеОтправителя КАК НазначениеОтправителя,
|
| Таблица.Серия КАК Серия,
| ДанныеДокументаЗаказМатериалов.Дата КАК Дата,
| ДанныеДокументаЗаказМатериаловТовары.НомерСтроки КАК НомерСтроки,
| Таблица.ДатаПотребности КАК ДатаОтгрузки,
| ЕСТЬNULL(ДанныеДокументаЗаказМатериаловТовары.ГруппаПродукции,
| НЕОПРЕДЕЛЕНО
| ) КАК ГруппаПродукции,
| ЛОЖЬ КАК ПрисутствуетВДокументе,
|
| Таблица.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент
| ИЗ
| РегистрНакопления.ЗаказыМатериаловВПроизводство.Остатки(,
| Распоряжение В(
| ВЫБРАТЬ
| Таблица.Распоряжение КАК Распоряжение
| ИЗ
| ВТЗаказыОтбор КАК Таблица)
| И (Номенклатура,Характеристика,Назначение) В(
| ВЫБРАТЬ
| Таблица.Номенклатура,
| Таблица.Характеристика,
| Таблица.Назначение
| ИЗ
| ВтСписокМатериалов КАК Таблица)
|
| И Подразделение = &Подразделение
| И Склад = &Склад) КАК ТаблицаОстатки
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыМатериаловСУчетомКорректировок.Обороты(,,,
| Распоряжение В(
| ВЫБРАТЬ
| Таблица.Распоряжение КАК Распоряжение
| ИЗ
| ВТЗаказыОтбор КАК Таблица)
| И Подразделение = &Подразделение
| И Склад = &Склад) КАК Таблица
| ПО ТаблицаОстатки.Распоряжение = Таблица.Распоряжение
| И ТаблицаОстатки.КодСтроки = Таблица.КодСтроки
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказМатериаловВПроизводство КАК ДанныеДокументаЗаказМатериалов
| ПО ТаблицаОстатки.Распоряжение = ДанныеДокументаЗаказМатериалов.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказМатериаловВПроизводство.Товары КАК ДанныеДокументаЗаказМатериаловТовары
| ПО Таблица.Распоряжение = ДанныеДокументаЗаказМатериаловТовары.Ссылка
| И Таблица.КодСтрокиРаспоряжения = ДанныеДокументаЗаказМатериаловТовары.КодСтроки
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОтгруженоПоОрдерам()
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаОстатки.ДокументОтгрузки КАК Распоряжение,
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
| ТаблицаОстатки.Серия КАК Серия,
| ТаблицаОстатки.Назначение КАК Назначение,
| ТаблицаОстатки.Назначение КАК НазначениеОтправителя,
| 1 КАК УпаковкаКоэффициент,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ) КАК Собирается,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
| ТаблицаОстатки.КОтгрузке
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА &ЗаполнятьПоСобирается И ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ
| + ТаблицаОстатки.Собрано) КАК Количество
|ИЗ
| ВТЗаказыОтбор КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКОтгрузке КАК ТаблицаОстатки
| ПО Таблица.Распоряжение = ТаблицаОстатки.ДокументОтгрузки
| И ТаблицаОстатки.Склад = &Склад
| И ТаблицаОстатки.Активность
|
|СГРУППИРОВАТЬ ПО
| ТаблицаОстатки.ДокументОтгрузки,
| ТаблицаОстатки.Номенклатура, ТаблицаОстатки.Характеристика, ТаблицаОстатки.Серия, ТаблицаОстатки.Назначение
|
|ИМЕЮЩИЕ
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
| ТаблицаОстатки.КОтгрузке
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА &УчитыватьСобирается И ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ + ТаблицаОстатки.Собрано) > 0
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаСторноНакладная()
ТекстЗапроса =
" ВЫБРАТЬ
| ТаблицаСторно.Распоряжение КАК Распоряжение,
| ТаблицаСторно.КодСтроки КАК КодСтроки,
|
| ТаблицаСторно.КОформлению КАК КоличествоВЗаказе,
| 0 КАК КоличествоВНакладной,
|
|
| ТаблицаСторно.Номенклатура КАК Номенклатура,
| ТаблицаСторно.Характеристика КАК Характеристика,
| ТаблицаСторно.Назначение КАК Назначение,
| ТаблицаСторно.НазначениеОтправителя КАК НазначениеОтправителя,
| ТаблицаСторно.Серия КАК Серия,
| НЕОПРЕДЕЛЕНО КАК Дата,
| НЕОПРЕДЕЛЕНО КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК ДатаОтгрузки,
| НЕОПРЕДЕЛЕНО КАК ГруппаПродукции,
| ЛОЖЬ КАК ПрисутствуетВДокументе,
|
| НЕОПРЕДЕЛЕНО КАК Упаковка,
| НЕОПРЕДЕЛЕНО КАК УпаковкаКоэффициент
| ИЗ
| РегистрНакопления.ЗаказыМатериаловВПроизводство КАК ТаблицаСторно
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыМатериаловСУчетомКорректировок.Обороты(
| ,
| ,
| ,
| Распоряжение В
| (ВЫБРАТЬ
| Таблица.Распоряжение КАК Распоряжение
| ИЗ
| ВТЗаказыОтбор КАК Таблица)) КАК Таблица
| ПО (Таблица.Распоряжение = ТаблицаСторно.Распоряжение)
| И (Таблица.КодСтроки = ТаблицаСторно.КодСтроки)
| ГДЕ
| ТаблицаСторно.Регистратор = &Регистратор
| И ТаблицаСторно.Распоряжение В(
| ВЫБРАТЬ
| Таблица.Распоряжение КАК Распоряжение
| ИЗ
| ВТЗаказыОтбор КАК Таблица)
| И ТаблицаСторно.Активность";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаНовыеДвиженияНакладная()
ТекстЗапроса =
" ВЫБРАТЬ
| Таблица.Распоряжение КАК Распоряжение,
| Таблица.КодСтроки КАК КодСтроки,
| 0 КАК КоличествоВЗаказе,
| Таблица.Количество КАК КоличествоВНакладной,
|
|
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.НазначениеОтправителя КАК НазначениеОтправителя,
| Таблица.Серия КАК Серия,
| НЕОПРЕДЕЛЕНО КАК Дата,
| Таблица.НомерСтроки КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК ДатаОтгрузки,
| Таблица.ГруппаПродукции КАК ГруппаПродукции,
| ИСТИНА КАК ПрисутствуетВДокументе,
|
| Таблица.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент
| ИЗ
| ВтНакладная КАК Таблица";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ВЫРАЗИТЬ(Таблица.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения)",
"ВЫРАЗИТЬ(Таблица.Номенклатура КАК Справочник.Номенклатура)"));
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область ВидДеятельностиНДС
Функция ПараметрыЗаполненияВидаДеятельностиНДС(Документ) Экспорт
Реквизиты = Новый Структура("Дата, Организация, НаправлениеДеятельности");
Если ТипЗнч(Документ) = Тип("ДокументСсылка.ПередачаМатериаловВПроизводство") Тогда
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Документ, Реквизиты);
Иначе
ЗаполнитьЗначенияСвойств(Реквизиты, Документ);
КонецЕсли;
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияВидаДеятельностиНДС();
ПараметрыЗаполнения.Дата = Реквизиты.Дата;
ПараметрыЗаполнения.Организация = Реквизиты.Организация;
ПараметрыЗаполнения.НаправлениеДеятельности = Реквизиты.НаправлениеДеятельности;
ПараметрыЗаполнения.ДвижениеТоваровИРаботВПроизводстве = Истина;
Возврат ПараметрыЗаполнения;
КонецФункции
#КонецОбласти
#Область Прочее
Функция ПустыеЗначенияЗаказов() Экспорт
ПустыеЗначенияЗаказов = Новый Массив;
ПустыеЗначенияЗаказов.Добавить(Неопределено);
ПустыеЗначенияЗаказов.Добавить(Документы.ЗаказМатериаловВПроизводство.ПустаяСсылка());
Возврат ПустыеЗначенияЗаказов;
КонецФункции
Функция СозданиеНаОснованииПроверкаОтгрузить()
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Документ.ПередачаМатериаловВПроизводство.Товары КАК ТоварыЗаказа
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПередачаМатериаловВПроизводство КАК ТаблицаДокумента
| ПО ТаблицаДокумента.Ссылка = ТоварыЗаказа.Ссылка
|ГДЕ
| ТаблицаДокумента.ПередачаПоРаспоряжениям = ЛОЖЬ
| И ТаблицаДокумента.Ссылка В(&МассивСсылок)
| И ТаблицаДокумента.Проведен
|
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция СозданиеНаОснованииПроверкаРеквизитовШапки()
ТекстЗапроса =
"ВЫБРАТЬ
| МИНИМУМ(Набор.Проведен) КАК Проведен,
| МИНИМУМ(Набор.Организация) КАК Организация,
| МИНИМУМ(Набор.Склад) КАК Склад,
| МИНИМУМ(Набор.Подразделение) КАК Подразделение,
| МИНИМУМ(Набор.ПотреблениеДляДеятельности) КАК ПотреблениеДляДеятельности,
| МИНИМУМ(Набор.ЭтоЗаказНаВнутреннееПотребление) КАК ЭтоЗаказНаВнутреннееПотребление,
| МИНИМУМ(Набор.НаправлениеДеятельности) КАК НаправлениеДеятельности,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.ХозяйственнаяОперация) КАК РазличныхОпераций,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.Организация) КАК РазличныхОрганизаций,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.Склад) КАК РазличныхСкладов,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.Подразделение) КАК РазличныхПодразделений
|ИЗ(
| ВЫБРАТЬ
| Заказ.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Заказ.Организация КАК Организация,
| Заказ.Склад КАК Склад,
| Заказ.Подразделение КАК Подразделение,
| Заказ.ПотреблениеДляДеятельности КАК ПотреблениеДляДеятельности,
| Заказ.Проведен КАК Проведен,
| ИСТИНА КАК ЭтоЗаказНаВнутреннееПотребление,
| Заказ.НаправлениеДеятельности КАК НаправлениеДеятельности
|ИЗ
| Документ.ЗаказМатериаловВПроизводство КАК Заказ
|ГДЕ
| Заказ.Ссылка В(&МассивСсылок)
|
|) КАК Набор
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция СозданиеНаОснованииПроверкаНаличияОрдеров()
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(,,,, ДокументОтгрузки В (&МассивСсылок)) КАК ТаблицаОбороты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК СпрСклады
| ПО СпрСклады.Ссылка = ТаблицаОбороты.Склад
|ГДЕ
| ТаблицаОбороты.КОтгрузкеПриход > 0 И(
| ТаблицаОбороты.КОтгрузкеРасход > 0
| ИЛИ НЕ СпрСклады.ИспользоватьОрдернуюСхемуПриОтгрузке
| ИЛИ СпрСклады.ДатаНачалаОрдернойСхемыПриОтгрузке > &НачалоТекущегоДня)";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтСписокМатериаловЗаполнениеПоЗаказамОрдерам()
ТекстЗапроса =
"ВЫБРАТЬ
| СписокМатериалов.Номенклатура КАК Номенклатура,
| СписокМатериалов.Характеристика КАК Характеристика,
| СписокМатериалов.Назначение КАК Назначение
|ПОМЕСТИТЬ ВтСписокМатериалов
|ИЗ
| &СписокМатериалов КАК СписокМатериалов
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли