#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("ОборотныеРегистрыУправленческогоУчета");
МеханизмыДокумента.Добавить("ОперативныйУчетТоваровОрганизаций");
МеханизмыДокумента.Добавить("ПриемНаОтветхранение");
МеханизмыДокумента.Добавить("Производство");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СебестоимостьИПартионныйУчет");
МеханизмыДокумента.Добавить("СерийныйУчет");
МеханизмыДокумента.Добавить("АдресныйСклад");
МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
МеханизмыДокумента.Добавить("УчетНДС");
МеханизмыДокумента.Добавить("ИсправлениеДокументов");
ДвижениеПродукцииИМатериаловЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ДвижениеПродукцииИМатериалов") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыОрганизацийКПередаче(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаЗаказыМатериаловВПроизводство(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
ДвижениеПродукцииИМатериаловЛокализация.ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры);
ОформитьПриобретениеТоваровПоДвухходовке(Запрос, ТекстыЗапроса, Регистры);
ОформитьПоступлениеТоваровПоДвухходовке(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
ПроведениеДокументов.ДобавитьЗапросыСторноДвижений(
Запрос, ТекстыЗапроса, Регистры, Метаданные.Документы.ДвижениеПродукцииИМатериалов);
РасчетСебестоимостиПроведениеДокументов.ОтразитьВМеханизмеУчетаЗатратИСебестоимости(
ДокументСсылка, Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
#Область Заполнение
Функция ПараметрыЗаполненияДокумента() Экспорт
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("МассивЗаказов", Неопределено);
ПараметрыЗаполнения.Вставить("ФормаОткрыта", Ложь);
ПараметрыЗаполнения.Вставить("ЗаполнятьПоОрдеру", Неопределено);
ПараметрыЗаполнения.Вставить("РеквизитыШапки", Неопределено);
ПараметрыЗаполнения.Вставить("Организация", Неопределено);
ПараметрыЗаполнения.Вставить("Отправитель", Неопределено);
ПараметрыЗаполнения.Вставить("Получатель", Неопределено);
ПараметрыЗаполнения.Вставить("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("ИмяДокумента", "ДвижениеПродукцииИМатериалов");
ПараметрыЗаполнения.Вставить("ИмяРегистраЗаказ", "ЗаказыМатериаловВПроизводство");
ПараметрыЗаполнения.Вставить("ИмяПоляЗаказ", "Распоряжение");
ПараметрыЗаполнения.Вставить("КлючевыеПоля", "Номенклатура, Характеристика, Серия, Назначение, НазначениеОтправителя");
Возврат ПараметрыЗаполнения;
КонецФункции
Процедура ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения, РеквизитыШапки, МассивЗаказов) Экспорт
ПараметрыЗаполнения.МассивЗаказов = МассивЗаказов;
ПараметрыЗаполнения.РеквизитыШапки = РеквизитыШапки;
Если Не ЗначениеЗаполнено(ПараметрыЗаполнения.Организация) Тогда
ПараметрыЗаполнения.Организация = РеквизитыШапки.Организация;
КонецЕсли;
Если Не ЗначениеЗаполнено(ПараметрыЗаполнения.Отправитель) Тогда
ПараметрыЗаполнения.Отправитель = РеквизитыШапки.Отправитель;
КонецЕсли;
Если Не ЗначениеЗаполнено(ПараметрыЗаполнения.Получатель) Тогда
ПараметрыЗаполнения.Получатель = РеквизитыШапки.Получатель;
КонецЕсли;
Если Не ЗначениеЗаполнено(ПараметрыЗаполнения.ХозяйственнаяОперация) Тогда
ПараметрыЗаполнения.ХозяйственнаяОперация = РеквизитыШапки.ХозяйственнаяОперация;
КонецЕсли;
Если ПараметрыЗаполнения.ЗаполнятьПоОрдеру = Неопределено Тогда
Если ПараметрыЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ПараметрыЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ПараметрыЗаполнения.ЗаполнятьПоОрдеру = НакладныеСервер.ЗаполнятьПоОрдеру(ПараметрыЗаполнения.Отправитель);
Иначе
ПараметрыЗаполнения.ЗаполнятьПоОрдеру = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ДанныеЗаполненияНакладной(МассивСсылок, СвойстваЗаказов = Неопределено) Экспорт
ТекстыЗапроса = Новый СписокЗначений();
ОтборСтрок = Неопределено;
Если СвойстваЗаказов = Неопределено Тогда
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую;
Иначе
ХозяйственнаяОперация = СвойстваЗаказов.ХозяйственнаяОперация;
Если ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(СвойстваЗаказов, "Отправитель")
И (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой) Тогда
ОтборСтрок = СвойстваЗаказов.Отправитель;
ИначеЕсли ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(СвойстваЗаказов, "Получатель")
И (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства) Тогда
ОтборСтрок = СвойстваЗаказов.Получатель;
КонецЕсли;
КонецЕсли;
РаспоряжениеЗаказМатериалов = ТипЗнч(МассивСсылок[0]) = Тип("ДокументСсылка.ЗаказМатериаловВПроизводство");
РаспоряжениеДвижениеПродукцииИМатериалов = ТипЗнч(МассивСсылок[0]) = Тип("ДокументСсылка.ДвижениеПродукцииИМатериалов");
ПоРаспоряжениям = ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства
И Не РаспоряжениеДвижениеПродукцииИМатериалов)
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую
И РаспоряжениеЗаказМатериалов);
Если ПоРаспоряжениям Тогда
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ТекстыЗапроса.Добавить(СозданиеНаОснованииПроверкаОтгрузить(), "ТаблицаЕстьОтгрузить");
ИначеЕсли (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой)
И РаспоряжениеДвижениеПродукцииИМатериалов Тогда
ТекстыЗапроса.Добавить(СозданиеНаОснованииПроверкаНаличияМатериаловДоступныхКВозврату(), "ТаблицаЕстьВозврат");
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства Тогда
ТекстыЗапроса.Добавить(СозданиеНаОснованииПроверкаПроизведено(ОтборСтрок), "ТаблицаЕстьПроизведено");
Иначе
ТекстИсключения = НСтр("ru = 'Ошибка вызова ""%1"". Обратитесь к администратору.'");
ВызватьИсключение СтрШаблон(ТекстИсключения, "ДвижениеПродукцииИМатериалов.ДанныеЗаполненияНакладной()");
КонецЕсли;
КонецЕсли;
ТекстыЗапроса.Добавить(СозданиеНаОснованииПроверкаРеквизитовШапки(ХозяйственнаяОперация, ОтборСтрок), "ТаблицаРеквизитыШапки");
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
СначалаОрдера = (Константы.ПорядокОформленияНакладныхРасходныхОрдеров.Получить()
= Перечисления.ПорядокОформленияНакладныхРасходныхОрдеров.СначалаОрдера);
Иначе
СначалаОрдера = Ложь;
КонецЕсли;
Если СначалаОрдера Тогда
ТекстыЗапроса.Добавить(СозданиеНаОснованииПроверкаНаличияОрдеров(), "ТаблицаЕстьОрдера");
КонецЕсли;
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
Запрос.УстановитьПараметр("НачалоТекущегоДня", НачалоДня(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("ОтборСтрок", ОтборСтрок);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", ХозяйственнаяОперация);
Таблицы = ОбщегоНазначенияУТ.ВыгрузитьРезультатыЗапроса(Запрос, ТекстыЗапроса);
РеквизитыШапки = Новый Структура("ХозяйственнаяОперация, РазличныхОпераций,
|Организация, РазличныхОрганизаций,
|Отправитель, РазличныхОтправителей,
|Получатель, РазличныхПолучателей,
|СтатусРаспоряжения, ЕстьОшибкиПроведен, ЕстьОшибкиСтатус,
|НаправлениеДеятельности, НалогообложениеНДС,
|ВариантПриемкиТоваров, РазличныхВариантовПриемкиТоваров");
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Таблицы.ТаблицаРеквизитыШапки[0]);
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство Тогда
РеквизитыШапки.Вставить("Подразделение", РеквизитыШапки.Получатель);
РеквизитыШапки.Вставить("Склад", РеквизитыШапки.Отправитель);
Иначе
РеквизитыШапки.Вставить("Склад");
КонецЕсли;
Если ПоРаспоряжениям Тогда
РеквизитыШапки.Вставить("ЕстьОрдера", Не СначалаОрдера Или Таблицы.ТаблицаЕстьОрдера.Количество() > 0);
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
РеквизитыШапки.Вставить("ЕстьОтгрузить", Таблицы.ТаблицаЕстьОтгрузить.Количество() > 0);
РеквизитыШапки.Вставить("ОтгрузкаИзКладовойВыполняетсяРаспоряжением", Ложь);
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства Тогда
РеквизитыШапки.Вставить("ЕстьВозврат", Таблицы.ТаблицаЕстьВозврат.Количество() > 0);
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства Тогда
РеквизитыШапки.Вставить("ЕстьПроизведено", Таблицы.ТаблицаЕстьПроизведено.Количество() > 0);
КонецЕсли;
КонецЕсли;
МассивДопустимыхСтатусов = Новый Массив;
Если РаспоряжениеЗаказМатериалов Тогда
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовМатериаловВПроизводство.КВыполнению);
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовМатериаловВПроизводство.Закрыт);
КонецЕсли;
Если ТипЗнч(СвойстваЗаказов) = Тип("Структура") И СвойстваЗаказов.Свойство("ОтборПоТоварам") Тогда
РеквизитыШапки.Вставить("ОтборПоТоварам", СвойстваЗаказов.ОтборПоТоварам);
КонецЕсли;
РеквизитыШапки.Вставить("МассивДопустимыхСтатусов", МассивДопустимыхСтатусов);
РеквизитыШапки.Вставить("ПоРаспоряжениям", ПоРаспоряжениям);
Возврат РеквизитыШапки;
КонецФункции
Функция ДанныеДляПроверкиВводаНаОсновании(Распоряжения, ХозяйственнаяОперация = Неопределено) Экспорт
ДанныеДляВвода = Новый Структура("Основание, Статус, ЕстьОтгрузить, РаспоряженияКОформлению, МожноСгруппировать");
ДанныеДляВвода.ЕстьОтгрузить = Ложь;
ДанныеДляВвода.МожноСгруппировать = Ложь;
ДанныеДляВвода.Вставить("Отправитель");
ДанныеДляВвода.Вставить("Получатель");
ДанныеДляВвода.Вставить("ХозяйственнаяОперация", ХозяйственнаяОперация);
ТекстыЗапросов = Новый Массив;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ
| ЗаказМатериаловВПроизводство.Ссылка КАК Основание,
| ЗаказМатериаловВПроизводство.Статус КАК Статус,
| ЗаказМатериаловВПроизводство.Склад КАК Отправитель,
| ЗаказМатериаловВПроизводство.ЦеховаяКладовая КАК Получатель
|ИЗ
| Документ.ЗаказМатериаловВПроизводство КАК ЗаказМатериаловВПроизводство
|ГДЕ
| ЗаказМатериаловВПроизводство.Ссылка В(&Распоряжения)
| И ЗаказМатериаловВПроизводство.ХозяйственнаяОперация = &Операция
|");
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Документ.ЗаказМатериаловВПроизводство.Товары КАК ТоварыЗаказа
|ГДЕ
| ТоварыЗаказа.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ТоварыЗаказа.Ссылка В(&Распоряжения)
| И НЕ ТоварыЗаказа.Отменено
|");
Отбор = Новый Соответствие;
ДобавитьЭлементОтбораРаспоряжение(Отбор, "Распоряжение", Ложь);
ТекстыЗапросов.Добавить(РегистрыНакопления.ЗаказыМатериаловВПроизводство.ТекстЗапросаОстатки(
"ВтОстаткиКОформлению", Отбор, "КОформлению <> 0"));
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОстаткиКОформлению.Распоряжение КАК РаспоряженияКОформлению
|ИЗ
| ВтОстаткиКОформлению КАК ОстаткиКОформлению");
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ
| МАКСИМУМ(ОстаткиКОформлению.Склад) КАК Отправитель,
| МАКСИМУМ(ОстаткиКОформлению.Получатель) КАК Получатель,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОстаткиКОформлению.Склад) > 1
| ИЛИ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОстаткиКОформлению.Получатель) > 1 КАК РазныеОтправителиПолучатели
|ИЗ
| ВтОстаткиКОформлению КАК ОстаткиКОформлению
|
|");
КонецЕсли;
Запрос = Новый Запрос(СтрСоединить(ТекстыЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов()));
Запрос.УстановитьПараметр("Распоряжения" , Распоряжения);
Запрос.УстановитьПараметр("Регистратор" , Неопределено);
Запрос.УстановитьПараметр("Операция" , ХозяйственнаяОперация);
Результат = Запрос.ВыполнитьПакет();
Выборка = Результат[0].Выбрать();
Если Выборка.Количество() = 1 И Выборка.Следующий() Тогда
ДанныеДляВвода.Основание = Выборка.Основание;
ДанныеДляВвода.Статус = Выборка.Статус;
ДанныеДляВвода.Естьотгрузить = Не Результат[1].Пустой();
КонецЕсли;
Если Не Результат[3].Пустой() Тогда
ДанныеДляВвода.РаспоряженияКОформлению = Результат[3].Выгрузить().ВыгрузитьКолонку("РаспоряженияКОформлению");
Выборка = Результат[4].Выбрать();
Если Выборка.Следующий() Тогда
ДанныеДляВвода.МожноСгруппировать =
Не Выборка.РазныеОтправителиПолучатели
И Истина;
ЗаполнитьЗначенияСвойств(ДанныеДляВвода, Выборка, "Отправитель, Получатель");
КонецЕсли;
КонецЕсли;
Возврат ДанныеДляВвода;
КонецФункции
Функция ПараметрыОткрытияФормыРабочегоМеста(ХозяйственнаяОперация = Неопределено) Экспорт
ОтборХозяйственныеОперации = Новый СписокЗначений;
Если ЗначениеЗаполнено(ХозяйственнаяОперация) Тогда
ОтборХозяйственныеОперации.Добавить(ХозяйственнаяОперация);
Иначе
ОтборХозяйственныеОперации = СписокОпераций();
КонецЕсли;
ОтборТипыДокументов = Новый СписокЗначений;
ОтборТипыДокументов.Добавить(ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.Документы.ДвижениеПродукцииИМатериалов));
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ОтборХозяйственныеОперации", ОтборХозяйственныеОперации);
ПараметрыОтбора.Вставить("ОтборТипыДокументов", ОтборТипыДокументов);
ПараметрыОткрытия = Новый Структура("ИмяФормы, ПараметрыФормы");
ПараметрыОткрытия.ИмяФормы = "Документ.ДвижениеПродукцииИМатериалов.Форма.РабочееМесто";
ПараметрыОткрытия.ПараметрыФормы = Новый Структура;
ПараметрыОткрытия.ПараметрыФормы.Вставить("КлючНазначенияФормы", "ДокументыПроизводства");
ПараметрыОткрытия.ПараметрыФормы.Вставить("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Возврат ПараметрыОткрытия;
КонецФункции
Функция ПроверитьДанныеЗаполненияНакладной(РеквизитыШапки) Экспорт
ТекстыОшибок = Новый Массив();
Если РеквизитыШапки.Свойство("ЕстьОтгрузить") И НЕ РеквизитыШапки.ЕстьОтгрузить Тогда
Если РеквизитыШапки.ОтгрузкаИзКладовойВыполняетсяРаспоряжением Тогда
Тексты = Новый Массив;
Тексты.Добавить(ОбеспечениеВДокументахСервер.ТекстОшибкиНетТоваровДоступныхДляОтгрузки());
Тексты.Добавить(НСтр("ru='При отгрузке из цеховой кладовой оформление накладной не требуется.'"));
ТекстОшибки = СтрСоединить(Тексты, " ");
Иначе
ТекстОшибки = ОбеспечениеВДокументахСервер.ТекстОшибкиНетТоваровДоступныхДляОтгрузки();
КонецЕсли;
ТекстыОшибок.Добавить(ТекстОшибки);
ИначеЕсли РеквизитыШапки.Свойство("ЕстьВозврат") И НЕ РеквизитыШапки.ЕстьВозврат Тогда
ТекстОшибки = НСтр("ru='Нет материалов, которые требуется передать на склад.'");
ТекстыОшибок.Добавить(ТекстОшибки);
ИначеЕсли РеквизитыШапки.Свойство("ЕстьПроизведено") И НЕ РеквизитыШапки.ЕстьПроизведено Тогда
ТекстОшибки = НСтр("ru='Нет произведенной продукции, которую требуется передать из подразделения.'");
ТекстыОшибок.Добавить(ТекстОшибки);
КонецЕсли;
Если РеквизитыШапки.РазличныхОпераций = 1 Тогда
Если РеквизитыШапки.РазличныхОрганизаций > 1 Тогда
ТекстыОшибок.Добавить(НСтр("ru='У выбранных распоряжений различные организации.'"));
КонецЕсли;
Если РеквизитыШапки.РазличныхОтправителей > 1 Тогда
ТекстыОшибок.Добавить(НСтр("ru='У выбранных распоряжений различные отправители.'"));
КонецЕсли;
Если РеквизитыШапки.РазличныхПолучателей > 1 Тогда
ТекстыОшибок.Добавить(НСтр("ru='У выбранных распоряжений различные получатели.'"));
КонецЕсли;
ТекстОшибки = НакладныеСервер.ПроверитьВозможностьВводаНаОсновании(
Неопределено,
РеквизитыШапки.СтатусРаспоряжения,
РеквизитыШапки.ЕстьОшибкиПроведен,
РеквизитыШапки.ЕстьОшибкиСтатус,
РеквизитыШапки.МассивДопустимыхСтатусов);
Если ТекстОшибки <> "" Тогда
ТекстыОшибок.Добавить(ТекстОшибки);
КонецЕсли;
ИначеЕсли РеквизитыШапки.РазличныхОпераций > 1 Тогда
ТекстыОшибок.Добавить(НСтр("ru = 'Выбранные распоряжения отражают различные операции движения материалов.'"));
КонецЕсли;
Если РеквизитыШапки.РазличныхВариантовПриемкиТоваров > 1 Тогда
ТекстПредупреждения = НСтр("ru='У выбранных распоряжений отличается поле ""Вариант приемки товаров""'");
ТекстыОшибок.Добавить(ТекстПредупреждения);
КонецЕсли;
ЕстьПредупреждения = РеквизитыШапки.Свойство("ЕстьОрдера") И Не РеквизитыШапки.ЕстьОрдера;
ТекстПредупреждения = НСтр("ru='Нет данных для заполнения документа, так как отгрузка по распоряжению еще не начата.'");
Результат = Новый Структура;
Результат.Вставить("ЕстьОшибки", ТекстыОшибок.Количество() > 0);
Результат.Вставить("ТекстОшибки", ТекстыОшибок);
Результат.Вставить("ЕстьПредупреждения", ЕстьПредупреждения);
Результат.Вставить("ТекстПредупреждения", ТекстПредупреждения);
Возврат Результат;
КонецФункции
Процедура ЗаполнитьШапкуДокументаПоЗаказу(Объект, ПараметрыЗаполнения, МассивЗаказов) Экспорт
ЗаполнитьЗначенияСвойств(Объект, ПараметрыЗаполнения.РеквизитыШапки);
Объект.Получатель = ПараметрыЗаполнения.Получатель;
Объект.Отправитель = ПараметрыЗаполнения.Отправитель;
Объект.ХозяйственнаяОперация = ПараметрыЗаполнения.ХозяйственнаяОперация;
Объект.ПоРаспоряжениям = Истина;
Если ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыДвиженийПродукцииИМатериалов") Тогда
Объект.Статус = Перечисления.СтатусыДвиженияПродукцииИМатериалов.Отгружено;
Иначе
Объект.Статус = Перечисления.СтатусыДвиженияПродукцииИМатериалов.Принято;
КонецЕсли;
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ДвижениеПродукцииИМатериалов);
НоменклатураСервер.ЗаполнитьСерииПоFEFO(Объект, ПараметрыУказанияСерий, Ложь);
ЗаказыСервер.ЗаполнитьЗаказВШапкеПоЗаказамВТабличнойЧасти(Объект.Распоряжение, Объект.Товары, ПараметрыЗаполнения.ИмяПоляЗаказ);
КонецПроцедуры
Процедура ОбновитьЗависимыеРеквизитыТабличнойЧасти(Товары, ПараметрыЗаполнения) Экспорт
СтруктураДействий = Новый Структура;
Если ПараметрыЗаполнения.ФормаОткрыта Тогда
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Товары, СтруктураДействий);
КонецПроцедуры
Процедура ЗаполнитьПоЗаказамОрдерам(Товары, Регистратор, ПараметрыЗаполнения, ШтрихкодыУпаковок = Неопределено) Экспорт
НакладнаяЯвляетсяРаспоряжением = ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(ПараметрыЗаполнения.РеквизитыШапки.ВариантПриемкиТоваров);
Если ПараметрыЗаполнения.ЗаполнятьПоОрдеру Тогда
РаспоряженияДляОрдеров = ПараметрыЗаполнения.МассивЗаказов;
РегистраторДляОрдеров = Регистратор;
Иначе
РаспоряженияДляОрдеров = Неопределено;
РегистраторДляОрдеров = Неопределено;
КонецЕсли;
ИспользоватьИсключаемыеТовары = Ложь;
НастройкиОтборов = ПолучитьНастройкиОтборов(ПараметрыЗаполнения.РеквизитыШапки);
Если ПараметрыЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой
Или ПараметрыЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой Тогда
Отбор = Новый Соответствие;
Если НастройкиОтборов <> Неопределено Тогда
ДобавитьЭлементОтбораРаспоряжение(Отбор, "ДокументПоступления");
КонецЕсли;
ТекстЗапроса = ?(НастройкиОтборов = Неопределено,
"", ТекстЗапросаТаблицаОтборов(НастройкиОтборов.ПараметрыЗамены) + ОбщегоНазначения.РазделительПакетаЗапросов())
+ РегистрыНакопления.ТоварыКПоступлению.ТекстЗапросаОсталосьОформитьПоОрдерам(, Отбор);
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Распоряжения", РаспоряженияДляОрдеров);
Запрос.УстановитьПараметр("Регистратор", РегистраторДляОрдеров);
Если НастройкиОтборов <> Неопределено Тогда
Запрос.УстановитьПараметр("ТаблицаОтборов", НастройкиОтборов.ТаблицаОтборов);
КонецЕсли;
ТаблицаОрдера = Запрос.Выполнить().Выгрузить();
КолонкаКоличество = ТаблицаОрдера.Колонки.Количество;
КолонкаКоличество.Имя = "КоличествоВОрдере";
Ключ = СтрЗаменить(ПараметрыЗаполнения.КлючевыеПоля, "НазначениеОтправителя", "");
Условие = "[Количество]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Истина);
ТаблицаОрдера.Колонки.Добавить("НазначениеОтправителя");
ТаблицаОрдера.ЗагрузитьКолонку(ТаблицаОрдера.ВыгрузитьКолонку("НазначениеОтправителя"), "НазначениеОтправителя");
НакладныеСервер.ДополнитьТаблицу(ТаблицаОрдера, Товары, "КоличествоВОрдере");
Возврат;
ИначеЕсли ПараметрыЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ПараметрыЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
Отбор = Новый Соответствие;
ДобавитьЭлементОтбораСклад(Отбор);
ДобавитьЭлементОтбораПолучатель(Отбор);
ДобавитьЭлементОтбораРаспоряжение(Отбор, "Распоряжение", НастройкиОтборов <> Неопределено);
ТекстЗапросаРегистраЗаказы = ?(НастройкиОтборов = Неопределено,
"", ТекстЗапросаТаблицаОтборов(НастройкиОтборов.ПараметрыЗамены) + ОбщегоНазначения.РазделительПакетаЗапросов());
ТекстЗапросаРегистраЗаказы = ТекстЗапросаРегистраЗаказы
+ РегистрыНакопления.ЗаказыМатериаловВПроизводство.ТекстЗапросаОстатки("ВтДанныеУчета", Отбор, "КОформлению <> 0");
Отбор = Новый Структура();
Отбор.Вставить("Ссылка", "Распоряжения");
ТекстЗапросаЗаказ = Документы.ЗаказМатериаловВПроизводство.ТекстЗапросаТоварыДокумента(Отбор);
ТекстЗапроса = ТекстЗапросаРегистраЗаказы
+ ОбщегоНазначения.РазделительПакетаЗапросов()
+ ТекстЗапросаЗаказ;
КонецЕсли;
Запрос = Новый Запрос();
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Распоряжения", ПараметрыЗаполнения.МассивЗаказов);
Запрос.УстановитьПараметр("Регистратор", Регистратор);
Запрос.УстановитьПараметр("Склад", ПараметрыЗаполнения.Отправитель);
Запрос.УстановитьПараметр("Получатель", ПараметрыЗаполнения.Получатель);
Запрос.УстановитьПараметр("Операция", ПараметрыЗаполнения.ХозяйственнаяОперация);
Запрос.УстановитьПараметр("БазоваяВалюта", ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(ПараметрыЗаполнения.Организация));
Если НастройкиОтборов <> Неопределено Тогда
Запрос.УстановитьПараметр("ТаблицаОтборов", НастройкиОтборов.ТаблицаОтборов);
КонецЕсли;
ПакетТаблицаЗаказы = Запрос.ВыполнитьПакет();
ТаблицаЗаказы = ПакетТаблицаЗаказы[ПакетТаблицаЗаказы.ВГраница() - ?(ИспользоватьИсключаемыеТовары, 1, 0)].Выгрузить();
Если ИспользоватьИсключаемыеТовары Тогда
ТаблицаИсключаемаяНоменклатура = ПакетТаблицаЗаказы[ПакетТаблицаЗаказы.ВГраница()].Выгрузить();
КонецЕсли;
КолонкаКОформлению = ТаблицаЗаказы.Колонки.КОформлению;
КолонкаКОформлению.Имя = "КоличествоВЗаказе";
ЗаполнениеПоДаннымПриемки = Не (ПараметрыЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ПараметрыЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую);
Запрос = Новый Запрос;
Отбор = Новый Соответствие;
ДобавитьЭлементОтбораСклад(Отбор);
Если НастройкиОтборов <> Неопределено Тогда
ДобавитьЭлементОтбораРаспоряжение(Отбор, ?(ЗаполнениеПоДаннымПриемки, "ДокументПоступления", "ДокументОтгрузки"));
КонецЕсли;
ТекстЗапросаОсталосьОформить = ?(ЗаполнениеПоДаннымПриемки,
РегистрыНакопления.ТоварыКПоступлению.ТекстЗапросаОсталосьОформитьПоОрдерам(, Отбор),
РегистрыНакопления.ТоварыКОтгрузке.ТекстЗапросаОсталосьОформить(Отбор));
Если НастройкиОтборов <> Неопределено Тогда
ТекстыЗапросов = Новый Массив;
ТекстыЗапросов.Добавить(ТекстЗапросаТаблицаОтборов(НастройкиОтборов.ПараметрыЗамены));
ТекстыЗапросов.Добавить(ТекстЗапросаОсталосьОформить);
ТекстЗапросаОсталосьОформить = СтрСоединить(ТекстыЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.УстановитьПараметр("ТаблицаОтборов", НастройкиОтборов.ТаблицаОтборов);
КонецЕсли;
Запрос.Текст = ТекстЗапросаОсталосьОформить;
Запрос.УстановитьПараметр("Распоряжения", РаспоряженияДляОрдеров);
Запрос.УстановитьПараметр("Регистратор", РегистраторДляОрдеров);
Запрос.УстановитьПараметр("Склад",
?(ЗаполнениеПоДаннымПриемки, ПараметрыЗаполнения.Получатель, ПараметрыЗаполнения.Отправитель));
ТаблицаОрдера = Запрос.Выполнить().Выгрузить();
КолонкаКоличество = ТаблицаОрдера.Колонки.Количество;
КолонкаКоличество.Имя = "КоличествоВОрдере";
Если ТаблицаОрдера.Колонки.Найти("Собирается") <> Неопределено Тогда
КолонкаСобирается = ТаблицаОрдера.Колонки.Собирается;
КолонкаСобирается.Имя = "КоличествоСобирается";
КонецЕсли;
Если Не ЗаполнениеПоДаннымПриемки Тогда
КолонкаНазначение = ТаблицаОрдера.Колонки.Назначение;
КолонкаНазначение.Имя = "НазначениеОтправителя";
КонецЕсли;
КлючевыеПоля = СтрЗаменить(ПараметрыЗаполнения.КлючевыеПоля,
"Назначение, НазначениеОтправителя",
?(ЗаполнениеПоДаннымПриемки, "Назначение", "НазначениеОтправителя"));
Товары.Индексы.Добавить("Распоряжение, " + ПараметрыЗаполнения.КлючевыеПоля);
Ключ = "Распоряжение, КодСтроки, " + ПараметрыЗаполнения.КлючевыеПоля;
Ключ = ?(ЗаполнениеПоДаннымПриемки, СтрЗаменить(Ключ, "Серия", ""), Ключ);
Условие = "ПО [Количество]";
НакладныеСервер.РаспределитьКоличество(ТаблицаЗаказы, Товары, "КоличествоВЗаказе", Ключ, Условие, Истина);
НакладныеСервер.ДополнитьТаблицу(ТаблицаЗаказы, Товары, "КоличествоВЗаказе");
Ключ = ?(ЗаполнениеПоДаннымПриемки И НакладнаяЯвляетсяРаспоряжением, "", "Распоряжение, ") + КлючевыеПоля;
Ключ = ?(ЗаполнениеПоДаннымПриемки, СтрЗаменить(Ключ, "Серия", ""), Ключ);
ЗаполняемыеПоля = ?(ЗаполнениеПоДаннымПриемки, "Серия", "");
Условие = "[Количество], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Ложь, ЗаполняемыеПоля);
Условие = "НЕ [Количество], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Ложь, ЗаполняемыеПоля);
Условие = "[Количество], НЕ [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Истина, ЗаполняемыеПоля);
НакладныеСервер.РаспределитьОтклонениеМерныхТоваров(ТаблицаОрдера, Товары, "КоличествоВЗаказе", "КоличествоВОрдере", Ключ);
Если ИспользоватьИсключаемыеТовары Тогда
Ключ = "Номенклатура";
Условие = "";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, ТаблицаИсключаемаяНоменклатура, "КоличествоВОрдере", Ключ, Условие, Истина);
КонецЕсли;
НакладныеСервер.ДополнитьТаблицу(ТаблицаОрдера, Товары, "КоличествоВОрдере");
Если ТаблицаОрдера.Колонки.Найти("КоличествоСобирается") <> Неопределено Тогда
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоСобирается", Ключ, "", Истина);
КонецЕсли;
Если РаспоряженияДляОрдеров <> Неопределено Тогда
ДвижениеПродукцииИМатериаловЛокализация.ЗаполнитьШтрихкодыУпаковок(РаспоряженияДляОрдеров, Товары, ШтрихкодыУпаковок);
КонецЕсли;
КонецПроцедуры
Функция ДанныеТаблицыТоварыДокумента(Накладная) Экспорт
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Серия КАК Серия,
| Таблица.Назначение КАК Назначение,
| Таблица.НазначениеОтправителя КАК НазначениеОтправителя,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Количество КАК Количество,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| Таблица.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Таблица.ИдентификаторСтроки КАК ИдентификаторСтроки,
| Таблица.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Таблица.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерийОтправитель,
| Таблица.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерийПолучатель,
| ВЫБОР
| КОГДА Таблица.Ссылка.ПоРаспоряжениям
| ТОГДА Таблица.Распоряжение
| ИНАЧЕ Таблица.Ссылка
| КОНЕЦ КАК Распоряжение,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.ГруппаПродукции КАК ГруппаПродукции,
| Таблица.Цена КАК Цена,
| Таблица.Сумма КАК Сумма
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК Таблица
|ГДЕ
| Таблица.Ссылка = &Накладная";
Запрос.УстановитьПараметр("Накладная", Накладная);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат;
КонецФункции
Функция РаспоряженияНакладной(Накладная, РеквизитыШапки) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Регистратор", Накладная);
Запрос.УстановитьПараметр("Организация", РеквизитыШапки.Организация);
Запрос.УстановитьПараметр("Отправитель", РеквизитыШапки.Отправитель);
Запрос.УстановитьПараметр("Получатель", РеквизитыШапки.Получатель);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", РеквизитыШапки.ХозяйственнаяОперация);
Если РеквизитыШапки.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаДокумента.Ссылка КАК Заказ
|ИЗ
| Документ.ЗаказМатериаловВПроизводство КАК ТаблицаДокумента
|ГДЕ
| &Отбор
| И ТаблицаДокумента.Проведен";
ТекстУсловияПоКлючевымПолям =
"ТаблицаДокумента.Организация = &Организация
|И ТаблицаДокумента.Склад = &Отправитель
|И ТаблицаДокумента.ЦеховаяКладовая = &Получатель
|И ТаблицаДокумента.ХозяйственнаяОперация = &ХозяйственнаяОперация";
КонецЕсли;
Если Не ПустаяСтрока(Запрос.Текст) Тогда
Запрос.Текст =
СтрЗаменить(
Запрос.Текст,
"&Отбор",
ТекстУсловияПоКлючевымПолям);
ВозвращаемыйМассив = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Заказ");
Иначе
ВозвращаемыйМассив = Новый Массив;
КонецЕсли;
Если ЗначениеЗаполнено(Накладная) Тогда
ВозвращаемыйМассив.Добавить(Накладная);
КонецЕсли;
Возврат ВозвращаемыйМассив;
КонецФункции
Функция КлючевыеПоляШапкиРаспоряжения() Экспорт
Возврат "Организация, Подразделение";
КонецФункции
#КонецОбласти
#Область Серии
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "Статус,Отправитель,Получатель,Дата,ХозяйственнаяОперация,ПоРаспоряжениям";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.ДвижениеПродукцииИМатериалов";
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства Тогда
ПараметрыУказанияСерий.СерииПриПланированииОтгрузкиУказываютсяВТЧСерии = Истина;
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПередачаВПроизводствоОтгрузка);
Если Объект.Статус = Перечисления.СтатусыДвиженияПродукцииИМатериалов.Принято Тогда
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПередачаВПроизводствоПриемка);
КонецЕсли;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой Тогда
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаПродукцииИзПроизводства);
Если Объект.Статус = Перечисления.СтатусыДвиженияПродукцииИМатериалов.Принято Тогда
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаПродукцииИзПроизводства);
КонецЕсли;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой Тогда
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ВозвратМатериаловИзПроизводстваОтгрузка);
Если Объект.Статус = Перечисления.СтатусыДвиженияПродукцииИМатериалов.Принято Тогда
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ВозвратМатериаловИзПроизводстваПриемка);
КонецЕсли;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами Тогда
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаПоПеремещениюВПроизводстве);
Если Объект.Статус = Перечисления.СтатусыДвиженияПродукцииИМатериалов.Принято Тогда
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаПоПеремещениюВПроизводстве);
КонецЕсли;
КонецЕсли;
Если ТипЗнч(Объект.Отправитель) = Тип("СправочникСсылка.Склады") Тогда
ПараметрыСерийОтправитель = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.Отправитель, Ложь);
Иначе
ПараметрыСерийОтправитель = ПроизводствоСервер.ИспользованиеСерийВПроизводстве22();
КонецЕсли;
Если ТипЗнч(Объект.Получатель) = Тип("СправочникСсылка.Склады") Тогда
ПараметрыСерийПолучатель = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.Получатель, Ложь);
Иначе
ПараметрыСерийПолучатель = ПроизводствоСервер.ИспользованиеСерийВПроизводстве22();
КонецЕсли;
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ПараметрыСерийОтправитель.ИспользоватьСерииНоменклатуры
ИЛИ ТипЗнч(Объект.Получатель) = Тип("СправочникСсылка.Склады")
И ПараметрыСерийПолучатель.ИспользоватьСерииНоменклатуры
И Не СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.Получатель, Объект.Дата)
ИЛИ ПараметрыСерийПолучатель.УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПараметрыСерийОтправитель.УчитыватьСебестоимостьПоСериям
ИЛИ ПараметрыСерийПолучатель.УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.Дата = Объект.Дата;
ПараметрыУказанияСерий.ИмяПоляСклад = "Отправитель";
ПараметрыУказанияСерий.ИмяПоляСкладОтправитель = "Отправитель";
ПараметрыУказанияСерий.ИмяПоляСкладПолучатель = "Получатель";
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Назначение");
ПараметрыУказанияСерий.ПоляСвязи.Добавить("НазначениеОтправителя");
ПараметрыУказанияСерий.ЭтоНакладная = Истина;
ПараметрыУказанияСерий.ПланированиеОтгрузки = Ложь;
ПараметрыУказанияСерий.ПланированиеОтбора = Ложь;
ПараметрыУказанияСерий.ФактОтбора = Истина;
ПараметрыУказанияСерий.РегистрироватьСерии = НоменклатураКлиентСервер.НеобходимоРегистрироватьСерии(ПараметрыУказанияСерий);
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерий");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийОтправитель");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийПолучатель");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Товары_Распоряжение");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Товары_КодСтроки");
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция РаспоряжениеНаВыполнениеСкладскойОперации(ЗначенияПолейДляОпределенияРаспоряжения) Экспорт
Если ЗначенияПолейДляОпределенияРаспоряжения.Товары_КодСтроки <> 0 Тогда
Возврат ЗначенияПолейДляОпределенияРаспоряжения.Товары_Распоряжение;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.НазначениеОтправителя КАК НазначениеОтправителя,
| Товары.Серия КАК Серия,
| Товары.Количество КАК Количество,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Товары.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерийОтправитель,
| Товары.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерийПолучатель,
| Товары.НомерСтроки КАК НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.НазначениеОтправителя КАК НазначениеОтправителя,
| Товары.Серия КАК Серия,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры,
| СУММА(Товары.Количество) КАК Количество
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.НазначениеОтправителя,
| Товары.Серия,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.Назначение КАК Назначение,
| Серии.НазначениеОтправителя КАК НазначениеОтправителя,
| Серии.Количество КАК Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.Назначение КАК Назначение,
| Серии.НазначениеОтправителя КАК НазначениеОтправителя,
| СУММА(Серии.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК Серии
|
|СГРУППИРОВАТЬ ПО
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.НазначениеОтправителя
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерийСтарый,
| ВЫБОР
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий ЕСТЬ NULL
| И ПолитикаУчетаСерийПроизводство.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий ЕСТЬ НЕ NULL
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА СкладОтправитель.ИспользоватьОрдернуюСхемуПриОтгрузке
| И &Дата >= СкладОтправитель.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА 0
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УчетСерийПоFEFO
| ТОГДА 6
| ИНАЧЕ 8
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УчетСерийПоFEFO
| ТОГДА 5
| ИНАЧЕ 7
| КОНЕЦ
| КОНЕЦ
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УказыватьПоФактуОтбора
| И ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УказыватьПриОтгрузкеНаВнутренниеНужды
| И &ФактОтбора
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 4
| ИНАЧЕ 2
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 3
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| КОГДА ПолитикаУчетаСерийПроизводство.ПолитикаУчетаСерий ЕСТЬ НЕ NULL
| ТОГДА ВЫБОР
| КОГДА ПолитикаУчетаСерийПроизводство.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ СтатусыОтправитель
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| И ТоварыДляЗапроса.НазначениеОтправителя = СерииДляЗапроса.НазначениеОтправителя
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерийСклад
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК СкладОтправитель
| ПО (СкладОтправитель.Ссылка = &СкладОтправитель)
| И (ПолитикиУчетаСерийСклад.Склад = &СкладОтправитель)
| ПО (ПолитикиУчетаСерийСклад.Склад = &СкладОтправитель)
| И ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерийСклад.Ссылка
| И (ТИПЗНАЧЕНИЯ(&СкладОтправитель) = ТИП(Справочник.Склады))
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ПолитикаУчетаСерийПроизводство
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикаУчетаСерийПроизводство.Ссылка
| И (ТИПЗНАЧЕНИЯ(&СкладОтправитель) = ТИП(Справочник.СтруктураПредприятия))
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.Назначение = ТоварыДляЗапроса.Назначение
| И Товары.НазначениеОтправителя = ТоварыДляЗапроса.НазначениеОтправителя
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерийСтарый,
| ВЫБОР
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий ЕСТЬ NULL
| И ПолитикаУчетаСерийПроизводство.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий ЕСТЬ НЕ NULL
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА СкладПолучатель.ИспользоватьОрдернуюСхемуПриПоступлении
| И &Дата >= СкладПолучатель.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА 0
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| КОГДА &ОтгрузкаПродукцииИзПроизводства
| ТОГДА 11
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 8
| КОГДА &ОтгрузкаПродукцииИзПроизводства
| ТОГДА 27
| ИНАЧЕ 7
| КОНЕЦ
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УказыватьПриПриемке
| И ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УказыватьПриПриемкеПоПеремещению
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 4
| ИНАЧЕ 2
| КОНЕЦ
| КОГДА &ОтгрузкаПродукцииИзПроизводства
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 23
| ИНАЧЕ 21
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ПолитикиУчетаСерийСклад.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 3
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| КОГДА ПолитикаУчетаСерийПроизводство.ПолитикаУчетаСерий ЕСТЬ НЕ NULL
| ТОГДА ВЫБОР
| КОГДА ПолитикаУчетаСерийПроизводство.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ СтатусыПолучатель
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| И ТоварыДляЗапроса.НазначениеОтправителя = СерииДляЗапроса.НазначениеОтправителя
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерийСклад
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК СкладПолучатель
| ПО (СкладПолучатель.Ссылка = &СкладПолучатель)
| И (ПолитикиУчетаСерийСклад.Склад = &СкладПолучатель)
| ПО (ПолитикиУчетаСерийСклад.Склад = &СкладПолучатель)
| И (ПолитикиУчетаСерийСклад.Ссылка = ТоварыДляЗапроса.ВидНоменклатуры)
| И (ТИПЗНАЧЕНИЯ(&СкладПолучатель) = ТИП(Справочник.Склады))
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры КАК ПолитикаУчетаСерийПроизводство
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикаУчетаСерийПроизводство.Ссылка
| И (ТИПЗНАЧЕНИЯ(&СкладПолучатель) = ТИП(Справочник.СтруктураПредприятия))
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.Назначение = ТоварыДляЗапроса.Назначение
| И Товары.НазначениеОтправителя = ТоварыДляЗапроса.НазначениеОтправителя
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| СтатусыОтправитель.СтатусУказанияСерий КАК СтатусУказанияСерийОтправитель,
| ВЫБОР
| КОГДА &ПриемкаПоПеремещениюВПроизводстве
| ИЛИ &ВозвратМатериаловИзПроизводстваПриемка
| ИЛИ &ОтгрузкаПродукцииИзПроизводства
| ИЛИ &ПриемкаПродукцииИзПроизводства
| ИЛИ &ПередачаВПроизводствоПриемка
| ТОГДА СтатусыПолучатель.СтатусУказанияСерий
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерийПолучатель,
| ВЫБОР
| КОГДА СтатусыПолучатель.СтатусУказанияСерий В (13, 14)
| И СтатусыОтправитель.СтатусУказанияСерий <> 0
| ТОГДА СтатусыПолучатель.СтатусУказанияСерий
| КОГДА СтатусыОтправитель.СтатусУказанияСерий В (5, 6)
| ТОГДА СтатусыОтправитель.СтатусУказанияСерий
| КОГДА СтатусыОтправитель.СтатусУказанияСерий > ВЫБОР
| КОГДА &ПриемкаПоПеремещениюВПроизводстве
| ИЛИ &ВозвратМатериаловИзПроизводстваПриемка
| ИЛИ &ОтгрузкаПродукцииИзПроизводства
| ИЛИ &ПриемкаПродукцииИзПроизводства
| ИЛИ &ПередачаВПроизводствоПриемка
| ТОГДА СтатусыПолучатель.СтатусУказанияСерий
| ИНАЧЕ 0
| КОНЕЦ
| ТОГДА СтатусыОтправитель.СтатусУказанияСерий
| ИНАЧЕ ВЫБОР
| КОГДА &ПриемкаПоПеремещениюВПроизводстве
| ИЛИ &ВозвратМатериаловИзПроизводстваПриемка
| ИЛИ &ОтгрузкаПродукцииИзПроизводства
| ИЛИ &ПриемкаПродукцииИзПроизводства
| ИЛИ &ПередачаВПроизводствоПриемка
| ТОГДА СтатусыПолучатель.СтатусУказанияСерий
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ КАК СтатусУказанияСерий
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ СтатусыОтправитель КАК СтатусыОтправитель
| ПО (СтатусыОтправитель.НомерСтроки = Товары.НомерСтроки)
| ЛЕВОЕ СОЕДИНЕНИЕ СтатусыПолучатель КАК СтатусыПолучатель
| ПО (СтатусыПолучатель.НомерСтроки = Товары.НомерСтроки)
|ГДЕ
| (СтатусыОтправитель.СтатусУказанияСерий <> Товары.СтатусУказанияСерийОтправитель
| ИЛИ ВЫБОР
| КОГДА &ПриемкаПоПеремещениюВПроизводстве
| ИЛИ &ВозвратМатериаловИзПроизводстваПриемка
| ИЛИ &ОтгрузкаПродукцииИзПроизводства
| ИЛИ &ПриемкаПродукцииИзПроизводства
| ИЛИ &ПередачаВПроизводствоПриемка
| ТОГДА СтатусыПолучатель.СтатусУказанияСерий
| ИНАЧЕ 0
| КОНЕЦ <> Товары.СтатусУказанияСерийПолучатель
| ИЛИ ВЫБОР
| КОГДА СтатусыПолучатель.СтатусУказанияСерий В (13, 14)
| И СтатусыОтправитель.СтатусУказанияСерий <> 0
| ТОГДА СтатусыПолучатель.СтатусУказанияСерий
| КОГДА СтатусыОтправитель.СтатусУказанияСерий В (5, 6)
| ТОГДА СтатусыОтправитель.СтатусУказанияСерий
| КОГДА СтатусыОтправитель.СтатусУказанияСерий > ВЫБОР
| КОГДА &ПриемкаПоПеремещениюВПроизводстве
| ИЛИ &ВозвратМатериаловИзПроизводстваПриемка
| ИЛИ &ОтгрузкаПродукцииИзПроизводства
| ИЛИ &ПриемкаПродукцииИзПроизводства
| ИЛИ &ПередачаВПроизводствоПриемка
| ТОГДА СтатусыПолучатель.СтатусУказанияСерий
| ИНАЧЕ 0
| КОНЕЦ
| ТОГДА СтатусыОтправитель.СтатусУказанияСерий
| ИНАЧЕ ВЫБОР
| КОГДА &ПриемкаПоПеремещениюВПроизводстве
| ИЛИ &ВозвратМатериаловИзПроизводстваПриемка
| ИЛИ &ОтгрузкаПродукцииИзПроизводства
| ИЛИ &ПриемкаПродукцииИзПроизводства
| ИЛИ &ПередачаВПроизводствоПриемка
| ТОГДА СтатусыПолучатель.СтатусУказанияСерий
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ <> Товары.СтатусУказанияСерий)
|
|УПОРЯДОЧИТЬ ПО
| Товары.НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗаполнитьСерииПоОтгрузке(Объект, Отбор = Неопределено) Экспорт
ИспользоватьОрдернуюСхемуПриОтгрузке = СкладыСервер.ИспользоватьОрдернуюСхемуПриОтгрузке(Объект.Отправитель, Объект.Дата);
ИспользуютсяСерииОтправитель = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыСклад", Новый Структура("Склад", Объект.Отправитель));
Если Не ИспользоватьОрдернуюСхемуПриОтгрузке
Или Не ИспользуютсяСерииОтправитель Тогда
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ТекстЗапроса =
"ВЫБРАТЬ
| РасходныйОрдерНаТовары.Ссылка КАК Ссылка
|ПОМЕСТИТЬ РасходныеОрдера
|ИЗ
| Документ.РасходныйОрдерНаТовары КАК РасходныйОрдерНаТовары
|ГДЕ
| РасходныйОрдерНаТовары.Проведен
| И РасходныйОрдерНаТовары.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыРасходныхОрдеров.Отгружен)
| И ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| Документ.РасходныйОрдерНаТовары.ТоварыПоРаспоряжениям КАК ТоварыПоРаспоряжениям
| ГДЕ
| ТоварыПоРаспоряжениям.Ссылка = РасходныйОрдерНаТовары.Ссылка
| И (&ПоРаспоряжениям
| И ТоварыПоРаспоряжениям.Распоряжение В (&Распоряжения)
| ИЛИ НЕ &ПоРаспоряжениям
| И ТоварыПоРаспоряжениям.Распоряжение = &Распоряжение))
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| ТЧТовары.Ссылка КАК Ссылка,
| ТЧТовары.Серия КАК Серия,
| ТЧТовары.Номенклатура КАК Номенклатура,
| ТЧТовары.Характеристика КАК Характеристика,
| ТЧТовары.Назначение КАК Назначение,
| ТЧТовары.НазначениеОтправителя КАК НазначениеОтправителя,
| ТЧТовары.Количество КАК Количество
|ПОМЕСТИТЬ ТЧТовары
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов КАК ДвижениеПродукцииИМатериалов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТЧТовары
| ПО ДвижениеПродукцииИМатериалов.Ссылка = ТЧТовары.Ссылка
|ГДЕ
| ДвижениеПродукцииИМатериалов.Проведен
| И ДвижениеПродукцииИМатериалов.Ссылка <> &Распоряжение
| И ТЧТовары.Распоряжение В(&Распоряжения)
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| Номенклатура,
| Характеристика,
| Назначение,
| НазначениеОтправителя
|;
|
|
|ВЫБРАТЬ
| ОстаткиСерий.Серия КАК Серия,
| ОстаткиСерий.Номенклатура КАК Номенклатура,
| ОстаткиСерий.Характеристика КАК Характеристика,
| ОстаткиСерий.НазначениеОтправителя КАК НазначениеОтправителя,
| СУММА(ОстаткиСерий.Количество) КАК Количество
|ИЗ
| (ВЫБРАТЬ
| ОтгружаемыеТовары.Серия КАК Серия,
| ОтгружаемыеТовары.Номенклатура КАК Номенклатура,
| ОтгружаемыеТовары.Характеристика КАК Характеристика,
| ОтгружаемыеТовары.Назначение КАК НазначениеОтправителя,
| ОтгружаемыеТовары.Количество КАК Количество
| ИЗ
| РасходныеОрдера КАК РасходныеОрдера
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РасходныйОрдерНаТовары.ОтгружаемыеТовары КАК ОтгружаемыеТовары
| ПО РасходныеОрдера.Ссылка = ОтгружаемыеТовары.Ссылка
| ГДЕ
| ОтгружаемыеТовары.Действие = ЗНАЧЕНИЕ(Перечисление.ДействияСоСтрокамиОрдеровНаОтгрузку.Отгрузить)
| И ОтгружаемыеТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТЧТовары.Серия,
| ТЧТовары.Номенклатура,
| ТЧТовары.Характеристика,
| ТЧТовары.НазначениеОтправителя,
| - ТЧТовары.Количество
| ИЗ
| ТЧТовары КАК ТЧТовары
| ГДЕ
| ТЧТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТЧСерии.Серия,
| ТЧСерии.Номенклатура,
| ТЧСерии.Характеристика,
| ТЧСерии.НазначениеОтправителя,
| - ТЧСерии.Количество
| ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Серии КАК ТЧСерии
| ГДЕ
| ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| ТЧТовары КАК ТЧТовары
| ГДЕ
| ТЧТовары.Ссылка = ТЧСерии.Ссылка
| И ТЧТовары.Номенклатура = ТЧСерии.Номенклатура
| И ТЧТовары.Характеристика = ТЧСерии.Характеристика
| И ТЧТовары.Назначение = ТЧСерии.Назначение
| И ТЧТовары.НазначениеОтправителя = ТЧСерии.НазначениеОтправителя)) КАК ОстаткиСерий
|
|СГРУППИРОВАТЬ ПО
| ОстаткиСерий.Серия,
| ОстаткиСерий.Характеристика,
| ОстаткиСерий.Номенклатура,
| ОстаткиСерий.НазначениеОтправителя
|
|ИМЕЮЩИЕ
| СУММА(ОстаткиСерий.Количество) > 0
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.ПоляСвязи,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Количество КАК Количество
|ПОМЕСТИТЬ ТаблицаТовары
|ИЗ
| &ТаблицаТовары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Количество > 0
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки
|ИЗ
| (ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки
| ИЗ
| ТаблицаТовары КАК ТаблицаТовары
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ПО (ВЫРАЗИТЬ(ТаблицаТовары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка)
| И (ПолитикиУчетаСерий.Склад В (&СкладПолучатель, &СкладОтправитель))
| ГДЕ
| ЕСТЬNULL(ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям, ЛОЖЬ)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки
| ИЗ
| ТаблицаТовары КАК ТаблицаТовары
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ПО (ВЫРАЗИТЬ(ТаблицаТовары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка)
| И (ПолитикиУчетаСерий.Склад В (&СкладПолучатель, &СкладОтправитель))
| ГДЕ
| ЕСТЬNULL(ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки, ЛОЖЬ)
| ) КАК ТаблицаТовары
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.ПоляСвязи,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| СУММА(ТаблицаТовары.Количество) КАК Количество
|ИЗ
| ТаблицаТовары КАК ТаблицаТовары
|
|ГДЕ
| ИСТИНА В(
| ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ГДЕ
| ВЫРАЗИТЬ(ТаблицаТовары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| И ПолитикиУчетаСерий.Склад В (&СкладПолучатель, &СкладОтправитель)
| И НЕ ЕСТЬNULL(ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям, ИСТИНА)
| И НЕ ЕСТЬNULL(ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки, ИСТИНА)
| )
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.ПоляСвязи,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика";
ПоляСвязи = "";
ПоляСвязиВЗапрос = "";
Запятая = "";
Для Каждого Поле Из ПараметрыУказанияСерий(Объект).ПоляСвязи Цикл
ПоляСвязи = Поле + Запятая + ПоляСвязи;
ПоляСвязиВЗапрос = ПоляСвязиВЗапрос + "
| ТаблицаТовары." + Поле + ",";
Запятая = ",";
КонецЦикла;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ТаблицаТовары.ПоляСвязи,", ПоляСвязиВЗапрос);
Запрос = Новый Запрос(ТекстЗапроса);
ТаблицаТовары = Объект.Товары.Выгрузить(,
"НомерСтроки, Номенклатура, Характеристика, Распоряжение, Количество," + ПоляСвязи);
МассивРаспоряжений = ?(Объект.ПоРаспоряжениям, ТаблицаТовары.ВыгрузитьКолонку("Распоряжение"), Новый Массив);
Если ЗначениеЗаполнено(Отбор) Тогда
СтруктураОтбора = Новый Структура("Ссылка, Номенклатура, Характеристика");
ИндексСтроки = ТаблицаТовары.Количество() - 1;
Пока ИндексСтроки > - 1 Цикл
СтрокаТаблицы = ТаблицаТовары[ИндексСтроки];
ЗаполнитьЗначенияСвойств(СтруктураОтбора, СтрокаТаблицы);
СтруктураОтбора.Ссылка = ?(ЗначениеЗаполнено(СтрокаТаблицы.Распоряжение), СтрокаТаблицы.Распоряжение, Объект.Ссылка);
МассивНайденныхСтрокОтбора = Отбор.НайтиСтроки(СтруктураОтбора);
Если МассивНайденныхСтрокОтбора.Количество() = 0 Тогда
ТаблицаТовары.Удалить(СтрокаТаблицы);
КонецЕсли;
ИндексСтроки = ИндексСтроки - 1;
КонецЦикла;
КонецЕсли;
Запрос.УстановитьПараметр("Распоряжения", МассивРаспоряжений);
Запрос.УстановитьПараметр("Распоряжение", Объект.Ссылка);
Запрос.УстановитьПараметр("ТаблицаТовары", ТаблицаТовары);
Запрос.УстановитьПараметр("СкладПолучатель", Объект.Получатель);
Запрос.УстановитьПараметр("СкладОтправитель", Объект.Отправитель);
Запрос.УстановитьПараметр("ПоРаспоряжениям", Объект.ПоРаспоряжениям);
РезультатЗапроса = Запрос.ВыполнитьПакет();
ТаблицаСерийОрдера = РезультатЗапроса[2].Выгрузить();
СтруктураПоиска = Новый Структура("Номенклатура, Характеристика, НазначениеОтправителя");
СтруктураПоискаССерией = Новый Структура("Номенклатура, Характеристика, Серия, НазначениеОтправителя");
СтруктураДействий = Новый Структура("ПересчитатьКоличествоУпаковок");
ОбрабатываемыеСтроки = Новый Массив;
ВыборкаНомеровСтрокССериямиВТЧТовары = РезультатЗапроса[4].Выбрать();
Пока ВыборкаНомеровСтрокССериямиВТЧТовары.Следующий() Цикл
СтрокаССериямиВТЧТовары = Объект.Товары[ВыборкаНомеровСтрокССериямиВТЧТовары.НомерСтроки - 1];
ОстатокПоТовару = СтрокаССериямиВТЧТовары.Количество;
ОстатокПоТоваруИсходный = ОстатокПоТовару;
ЗаполнитьЗначенияСвойств(СтруктураПоискаССерией, СтрокаССериямиВТЧТовары);
МассивСтрокТабСерий = ТаблицаСерийОрдера.НайтиСтроки(СтруктураПоискаССерией);
Если МассивСтрокТабСерий.Количество() > 0 Тогда
ПерваяСтрока = Истина;
Для Каждого Стр Из МассивСтрокТабСерий Цикл
Если Не ПерваяСтрока Тогда
НоваяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаССериямиВТЧТовары);
СтрокаССериямиВТЧТовары = НоваяСтрока;
Иначе
ПерваяСтрока = Ложь;
КонецЕсли;
КоличествоЗаполнения = Мин(ОстатокПоТовару,Стр.Количество);
СтрокаССериямиВТЧТовары.Количество = КоличествоЗаполнения;
ОбрабатываемыеСтроки.Добавить(СтрокаССериямиВТЧТовары);
Стр.Количество = Стр.Количество - КоличествоЗаполнения;
ОстатокПоТовару = ОстатокПоТовару - КоличествоЗаполнения;
Если Стр.Количество = 0 Тогда
ТаблицаСерийОрдера.Удалить(Стр);
КонецЕсли;
Если ОстатокПоТовару = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ОстатокПоТовару = 0 Тогда
Продолжить;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаССериямиВТЧТовары);
МассивСтрокТабСерий = ТаблицаСерийОрдера.НайтиСтроки(СтруктураПоиска);
Если МассивСтрокТабСерий.Количество() > 0 Тогда
ПерваяСтрока = Истина;
Для Каждого Стр Из МассивСтрокТабСерий Цикл
Если Не ПерваяСтрока Тогда
НоваяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаССериямиВТЧТовары);
СтрокаССериямиВТЧТовары = НоваяСтрока;
Иначе
ПерваяСтрока = Ложь;
КонецЕсли;
СтрокаССериямиВТЧТовары.Серия = Стр.Серия;
КоличествоЗаполнения = Мин(ОстатокПоТовару,Стр.Количество);
СтрокаССериямиВТЧТовары.Количество = КоличествоЗаполнения;
ОбрабатываемыеСтроки.Добавить(СтрокаССериямиВТЧТовары);
Стр.Количество = Стр.Количество - КоличествоЗаполнения;
ОстатокПоТовару = ОстатокПоТовару - КоличествоЗаполнения;
Если Стр.Количество = 0 Тогда
ТаблицаСерийОрдера.Удалить(Стр);
КонецЕсли;
Если ОстатокПоТовару = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ОстатокПоТовару > 0 Тогда
Если ОстатокПоТоваруИсходный > ОстатокПоТовару Тогда
НоваяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаССериямиВТЧТовары);
СтрокаССериямиВТЧТовары = НоваяСтрока;
СтрокаССериямиВТЧТовары.Количество = ОстатокПоТовару;
ОбрабатываемыеСтроки.Добавить(СтрокаССериямиВТЧТовары);
КонецЕсли;
СтрокаССериямиВТЧТовары.Серия = Неопределено;
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
Если ЗначениеЗаполнено(Отбор) Тогда
Для каждого СтрокаТТ Из ТаблицаТовары Цикл
СтруктураОтбора = Новый Структура("Номенклатура, Характеристика," + ПоляСвязи);
ЗаполнитьЗначенияСвойств(СтруктураОтбора, СтрокаТТ);
НайденныеСтроки = Объект.Серии.НайтиСтроки(СтруктураОтбора);
ИндексСтроки = НайденныеСтроки.ВГраница();
Пока ИндексСтроки > - 1 Цикл
Объект.Серии.Удалить(НайденныеСтроки[ИндексСтроки]);
ИндексСтроки = ИндексСтроки - 1;
КонецЦикла;
КонецЦикла;
Иначе
Объект.Серии.Очистить();
КонецЕсли;
ВыборкаТовары = РезультатЗапроса[5].Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
ОстатокПоТовару = ВыборкаТовары.Количество;
ЗаполнитьЗначенияСвойств(СтруктураПоиска, ВыборкаТовары);
МассивСтрокТабСерий = ТаблицаСерийОрдера.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаТабСерий Из МассивСтрокТабСерий Цикл
НоваяСтрокаТЧСерии = Объект.Серии.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧСерии,ВыборкаТовары);
НоваяСтрокаТЧСерии.Серия = СтрокаТабСерий.Серия;
КоличествоЗаполнения = Мин(ОстатокПоТовару,СтрокаТабСерий.Количество);
НоваяСтрокаТЧСерии.Количество = КоличествоЗаполнения;
СтрокаТабСерий.Количество = СтрокаТабСерий.Количество - КоличествоЗаполнения;
ОстатокПоТовару = ОстатокПоТовару - КоличествоЗаполнения;
Если СтрокаТабСерий.Количество = 0 Тогда
ТаблицаСерийОрдера.Удалить(СтрокаТабСерий);
КонецЕсли;
Если ОстатокПоТовару = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область Команды
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Команда = БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Команда = Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
СписокДляУстановкиВидимости = Новый Массив();
СписокДляУстановкиВидимости.Добавить(Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(Команда,
"ХозяйственнаяОперация",
СписокДляУстановкиВидимости,
ВидСравненияКомпоновкиДанных.ВСписке);
КонецЕсли;
Команда = Документы.УстановкаЦенНоменклатуры.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
СписокХозОпераций = Новый Массив;
СписокХозОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой);
СписокХозОпераций.Добавить(Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(Команда, "ХозяйственнаяОперация", СписокХозОпераций, ВидСравненияКомпоновкиДанных.ВСписке);
КонецЕсли;
Команда = Обработки.СправочноеРазмещениеНоменклатуры.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
СписокХозОпераций = Новый Массив();
СписокХозОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой);
СписокХозОпераций.Добавить(Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой);
СписокХозОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов);
СписокХозОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(Команда, "ХозяйственнаяОперация", СписокХозОпераций, ВидСравненияКомпоновкиДанных.ВСписке);
КонецЕсли;
ИсправлениеДокументов.ДобавитьКомандуИсправление(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
ИсправлениеДокументов.ДобавитьКомандуСторно(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
ДвижениеПродукцииИМатериаловЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
ДвижениеПродукцииИМатериаловЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
#Область ПечатьВыпускаПродукции
СписокХозяйственныхОпераций = Новый Массив();
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой);
Если ПравоДоступа("Чтение", Метаданные.Документы.ДвижениеПродукцииИМатериалов) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Накладная";
КомандаПечати.Представление = НСтр("ru = 'Выпуск продукции'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
ДобавитьУсловиеВидимостиКомандыПоХозяйственнойОперации(КомандаПечати, СписокХозяйственныхОпераций);
КонецЕсли;
#КонецОбласти
#Область ПечатьПередачиМатериалов
СписокХозяйственныхОпераций = Новый Массив();
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую);
Если ПравоДоступа("Изменение", Метаданные.Документы.ДвижениеПродукцииИМатериалов) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ПередачаМатериаловВПроизводство";
КомандаПечати.Представление = НСтр("ru = 'Передача материалов в производство'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
ДобавитьУсловиеВидимостиКомандыПоХозяйственнойОперации(КомандаПечати, СписокХозяйственныхОпераций);
КонецЕсли;
#КонецОбласти
#Область ПечатьВозвратаМатериалов
СписокХозяйственныхОпераций = Новый Массив();
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой);
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "НакладнаяНаВозврат";
КомандаПечати.Представление = НСтр("ru = 'Возврат из производства'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
ДобавитьУсловиеВидимостиКомандыПоХозяйственнойОперации(КомандаПечати, СписокХозяйственныхОпераций);
#КонецОбласти
#Область ПечатьПеремещениеПолуфабрикатов
СписокХозяйственныхОпераций = Новый Массив();
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов);
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами);
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "НакладнаяНаПеремещение";
КомандаПечати.Представление = НСтр("ru = 'Накладная на перемещение'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
ДобавитьУсловиеВидимостиКомандыПоХозяйственнойОперации(КомандаПечати, СписокХозяйственныхОпераций);
#КонецОбласти
#Область ЗаданиеНаОтборРазмещениеТовара
КомандаПечати = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(
КомандыПечати,
"ЗаданиеНаОтбор");
СписокХозяйственныхОпераций = Новый Массив();
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую);
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов);
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами);
ДобавитьУсловиеВидимостиКомандыПоХозяйственнойОперации(КомандаПечати, СписокХозяйственныхОпераций);
КомандаПечати = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(
КомандыПечати,
"ЗаданиеНаРазмещение");
СписокХозяйственныхОпераций = Новый Массив();
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой);
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой);
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов);
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами);
ДобавитьУсловиеВидимостиКомандыПоХозяйственнойОперации(КомандаПечати, СписокХозяйственныхОпераций);
#КонецОбласти
ДвижениеПродукцииИМатериаловЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьПередачуПродукцииНаСкладНаОсновании(КомандыСоздатьНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ДвижениеПродукцииИМатериалов) Тогда
СписокОпераций = СписокОпераций();
Операция = СписокОпераций.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой);
Если Операция <> Неопределено Тогда
КомандаСоздатьНаОсновании = КомандыСоздатьНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ДвижениеПродукцииИМатериалов.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Передача выпущенной продукции на склад'");
КомандаСоздатьНаОсновании.Обработчик = "ПроизводствоКлиент.СоздатьПередачуПродукцииИзКладовойНаОсновании";
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьУправлениеПроизводством2_2";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьОбеспечивающийЗаказ(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ДвижениеПродукцииИМатериалов) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ДвижениеПродукцииИМатериалов.ПолноеИмя();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.СоздатьОбеспечивающийЗаказ";
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Передача выпущенной продукции на склад'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьУправлениеПроизводством2_2";
ПараметрыСоздания = ОбеспечениеВДокументахСервер.ПараметрыСозданияОбеспечивающегоЗаказа(
КомандаСоздатьНаОсновании.ДополнительныеПараметры);
ПараметрыСоздания.ИмяМенеджераДокумента = "ДвижениеПродукцииИМатериалов";
ПараметрыСоздания.ИмяФормы = "Документ.ДвижениеПродукцииИМатериалов.ФормаОбъекта";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ПараметрыСозданияНаОснованииОбеспечивающегоЗаказа() Экспорт
ПараметрыТаблицыТовары = ОбеспечениеВДокументахСервер.ПараметрыОтбораТоваровДляСозданияОбеспечивающиегоЗаказа();
ПараметрыТаблицыТовары.ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Товар);
ПараметрыТаблицыТовары.ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ПараметрыТаблицыТовары.ОдинСклад = Истина;
Возврат ПараметрыТаблицыТовары;
КонецФункции
Функция ДобавитьКомандуСоздатьПередачуВКладовуюНаОснованииЗаказа(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ДвижениеПродукцииИМатериалов)
И СписокОпераций().НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую) <> Неопределено Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.ДвижениеПродукцииИМатериаловСоздатьПередачуВКладовуюНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ДвижениеПродукцииИМатериалов.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Передача материалов в кладовую'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьУправлениеПроизводством2_2";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьПередачуИзПроизводстваНаОснованииЗаказа(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ДвижениеПродукцииИМатериалов)
И СписокОпераций().НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства) <> Неопределено Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.ДвижениеПродукцииИМатериаловСоздатьПередачуИзПроизводстваНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ДвижениеПродукцииИМатериалов.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Передача выпущенной продукции'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьУправлениеПроизводством2_2";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьПередачуВПроизводствоНаОснованииЗаказа(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ДвижениеПродукцииИМатериалов)
И СписокОпераций().НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство) <> Неопределено Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.ДвижениеПродукцииИМатериаловСоздатьПередачуВПроизводствоНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ДвижениеПродукцииИМатериалов.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Передача материалов в производство'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьУправлениеПроизводством2_2";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьВозвратИзПроизводстваНаОснованииЗаказа(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ДвижениеПродукцииИМатериалов)
И СписокОпераций().НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства) <> Неопределено Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.ДвижениеПродукцииИМатериаловСоздатьВозвратИзПроизводстваНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ДвижениеПродукцииИМатериалов.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Возврат материалов из производства'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьУправлениеПроизводством2_2";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
#КонецОбласти
#Область Прочее
Процедура ДобавитьУсловиеВидимостиКомандыПоХозяйственнойОперации(Команда, Список) Экспорт
Если Команда <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(Команда, "ХозяйственнаяОперация",
Список, ВидСравненияКомпоновкиДанных.ВСписке);
КонецЕсли;
КонецПроцедуры
Функция СтатусыДокументаИзменяемыеИзСписка() Экспорт
Таблица = ОбщегоНазначенияУТ.ТаблицаСтатусовИзменяемыхИзСписка();
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыДвиженияПродукцииИМатериалов.Отгружено);
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыДвиженияПродукцииИМатериалов.Принято);
Возврат Таблица;
КонецФункции
Функция ТекстЗапросаДанныеВнутреннихДокументов() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Ссылка,
| ТаблицаДокумента.Номер,
| ТаблицаДокумента.Дата,
| ТаблицаДокумента.Организация,
| ВЫБОР КОГДА ТаблицаДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство)
| ИЛИ ТаблицаДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую)
| ТОГДА ТаблицаДокумента.Отправитель
| ИНАЧЕ ТаблицаДокумента.Получатель
| КОНЕЦ КАК Склад,
| ВЫБОР КОГДА ТаблицаДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство)
| ИЛИ ТаблицаДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую)
| ТОГДА ТаблицаДокумента.Получатель
| ИНАЧЕ ТаблицаДокумента.Отправитель
| КОНЕЦ КАК Подразделение,
| ТаблицаДокумента.Ответственный,
| ТаблицаДокумента.Комментарий,
| """" КАК Дополнительно,
| ТаблицаДокумента.ХозяйственнаяОперация,
| ТаблицаДокумента.Статус,
| ТаблицаДокумента.Проведен,
| ТаблицаДокумента.ПометкаУдаления
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка";
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(ХозяйственнаяОперация, МассивВсехРеквизитов, МассивРеквизитовОперации) Экспорт
МассивВсехРеквизитов = Новый Массив;
МассивВсехРеквизитов.Добавить("ОрганизацияПолучатель");
МассивВсехРеквизитов.Добавить("Товары.ГруппаПродукции");
МассивВсехРеквизитов.Добавить("Товары.Цена");
МассивВсехРеквизитов.Добавить("Товары.Сумма");
МассивРеквизитовОперации = Новый Массив;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства Тогда
МассивРеквизитовОперации.Добавить("Товары.Цена");
МассивРеквизитовОперации.Добавить("Товары.Сумма");
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство Тогда
МассивРеквизитовОперации.Добавить("Товары.ГруппаПродукции");
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
МассивРеквизитовОперации.Добавить("Товары.ГруппаПродукции");
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами Тогда
МассивРеквизитовОперации.Добавить("ОрганизацияПолучатель");
МассивРеквизитовОперации.Добавить("Товары.ГруппаПродукции");
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства Тогда
МассивРеквизитовОперации.Добавить("Товары.ГруппаПродукции");
КонецЕсли;
КонецПроцедуры
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Функция КоллекцияТабличныхЧастейТоваров() Экспорт
ТаблицыДокумента = Новый Структура("Товары");
Возврат ТаблицыДокумента;
КонецФункции
#КонецОбласти
#Область УчетНДС
Функция ПараметрыЗаполненияВидаДеятельностиНДС(Объект) Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияВидаДеятельностиНДС();
ПараметрыЗаполнения.Дата = Объект.Дата;
ПараметрыЗаполнения.Склад = Объект.Получатель;
ПараметрыЗаполнения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
ПараметрыЗаполнения.ДвижениеТоваровИРаботВПроизводстве = Истина;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами Тогда
ПараметрыЗаполнения.Организация = Объект.ОрганизацияПолучатель;
Иначе
ПараметрыЗаполнения.Организация = Объект.Организация;
КонецЕсли;
Возврат ПараметрыЗаполнения;
КонецФункции
#КонецОбласти
#Область ПечатьЗаданияНаОтборРазмещениеТоваров
Функция ПравилаПечатиЗаданияНаОтборРазмещение() Экспорт
ПравилаПечати = Новый Массив;
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
ПравилаПечатиЗадания.ИмяПоляСклад = "Отправитель";
ПравилаПечатиЗадания.ИспользуютсяИсправленияДокумента = Истина;
ПравилаПечати.Добавить(ПравилаПечатиЗадания);
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
ПравилаПечатиЗадания.ОперацияПоступления = Истина;
ПравилаПечатиЗадания.ИмяПоляСклад = "Получатель";
ПравилаПечатиЗадания.ИспользуютсяИсправленияДокумента = Истина;
ПравилаПечати.Добавить(ПравилаПечатиЗадания);
Возврат ПравилаПечати;
КонецФункции
#КонецОбласти
Функция МакетФормыВыбораНазначений() Экспорт
МакетФормы = Справочники.Назначения.МакетФормыВыбораНазначений();
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы);
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ШаблонНазначения.ТипыНазначений.Удалить(ШаблонНазначения.ТипыНазначений.Найти(Перечисления.ТипыНазначений.Давальческое21));
ШаблонНазначения.ВидимыеОтборыНаФорме.Вставить("НаправлениеДеятельности", НСтр("ru='Только назначения направления деятельности ""%1""'"));
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.Товары.Назначение", "Отправитель");
ОписаниеКолонок.Колонки.НайтиПоЗначению("ВНаличии").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "Объект.ХозяйственнаяОперация В(
|ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой),
|ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую),
|ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой),
|ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатов),
|ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами))";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.Отправитель";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.Товары.Назначение", "Получатель");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "Объект.ХозяйственнаяОперация В(
|ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой),
|ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой),
|ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатов),
|ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами))";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.Получатель";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказовВсеСклады", Истина, "Объект.Товары.Назначение", "ВсеСклады");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.УсловиеИспользования = "Объект.ХозяйственнаяОперация В(
|ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой),
|ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой),
|ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатов),
|ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами))";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
Возврат МакетФормы;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Возврат СозданиеНаОсновании.ДобавитьКомандуСозданияНаОсновании(КомандыСозданияНаОсновании, Метаданные.Документы.ДвижениеПродукцииИМатериалов);
КонецФункции
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И( ЗначениеРазрешено(Отправитель)
| ИЛИ ЗначениеРазрешено(Получатель))
| И ЗначениеРазрешено(ХозяйственнаяОперация)
| И ЗначениеРазрешено(Статус)";
КонецПроцедуры
#КонецОбласти
#Область ПодакцизныеТовары
Функция ИспользуютсяПодакцизныеТовары(ДокументОбъект) Экспорт
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьПодакцизныеТовары") Тогда
Возврат Ложь;
КонецЕсли;
Возврат ДокументОбъект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("Ссылка");
Поля.Добавить("Номер");
Поля.Добавить("Дата");
Поля.Добавить("ХозяйственнаяОперация");
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Данные.ХозяйственнаяОперация) Тогда
ПредставлениеОперации = СписокОпераций().НайтиПоЗначению(Данные.ХозяйственнаяОперация);
Если ПредставлениеОперации <> Неопределено Тогда
ПредставлениеОперации = ПредставлениеОперации.Представление;
Иначе
ПредставлениеОперации = Данные.ХозяйственнаяОперация;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 %2 от %3'"),
ПредставлениеОперации,
Данные.Номер,
Данные.Дата);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
Функция СписокОпераций() Экспорт
СписокОпераций = Новый СписокЗначений;
ПеремещениеПолуфабрикатов = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатов");
ПеремещениеПолуфабрикатовМеждуФилиалами = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами");
ПередачаПродукцииИзКладовой = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой");
ПередачаМатериаловВКладовую = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую");
ВозвратМатериаловИзКладовой = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой");
Если ПолучитьФункциональнуюОпцию("ИспользоватьОбособленныеПодразделенияВыделенныеНаБаланс") Тогда
СписокОпераций.Добавить(ПеремещениеПолуфабрикатовМеждуФилиалами, НСтр("ru = 'Перемещение полуфабрикатов между филиалами'"));
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов") Тогда
СписокОпераций.Добавить(ПередачаПродукцииИзКладовой, НСтр("ru = 'Передача продукции из кладовой'"));
СписокОпераций.Добавить(ПередачаМатериаловВКладовую, НСтр("ru = 'Передача материалов в кладовую'"));
СписокОпераций.Добавить(ВозвратМатериаловИзКладовой, НСтр("ru = 'Возврат материалов из кладовой'"));
СписокОпераций.Добавить(ПеремещениеПолуфабрикатов, НСтр("ru = 'Перемещение полуфабрикатов'"));
КонецЕсли;
ДоступныеХозяйственныеОперации = ОбщегоНазначенияУТВызовСервера.ДоступныеХозяйственныеОперации("Документ.ДвижениеПродукцииИМатериалов");
Если ДоступныеХозяйственныеОперации <> Неопределено Тогда
Индекс = СписокОпераций.Количество()-1;
Пока Индекс >= 0 Цикл
Если ДоступныеХозяйственныеОперации.Найти(СписокОпераций[Индекс].Значение) = Неопределено Тогда
СписокОпераций.Удалить(Индекс);
КонецЕсли;
Индекс = Индекс -1;
КонецЦикла;
КонецЕсли;
Возврат СписокОпераций;
КонецФункции
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область Проведение
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.ДвижениеПродукцииИМатериалов";
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ТекстыЗапросаВременныхТаблиц = Новый Соответствие;
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", """""");
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоПолучателю", """""");
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоОтправителю", """""");
ПереопределениеРасчетаПараметров.Вставить("ОрдернаяСхемаОтправитель",
" ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ТаблицаТовары.Ссылка.Отправитель) = ТИП(Справочник.Склады)
| И ВЫРАЗИТЬ(ТаблицаТовары.Ссылка.Отправитель КАК Справочник.Склады).ИспользоватьОрдернуюСхемуПриОтгрузке
| И ТаблицаТовары.Ссылка.Дата >= ВЫРАЗИТЬ(ТаблицаТовары.Ссылка.Отправитель КАК Справочник.Склады).ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ");
ПереопределениеРасчетаПараметров.Вставить("ОрдернаяСхемаПолучатель",
" ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ТаблицаТовары.Ссылка.Получатель) = ТИП(Справочник.Склады)
| И ВЫРАЗИТЬ(ТаблицаТовары.Ссылка.Получатель КАК Справочник.Склады).ИспользоватьОрдернуюСхемуПриПоступлении
| И ТаблицаТовары.Ссылка.Дата >= ВЫРАЗИТЬ(ТаблицаТовары.Ссылка.Получатель КАК Справочник.Склады).ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ");
ПереопределениеРасчетаПараметров.Вставить("СкладскаяОперация",
" ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства)
| ИЛИ ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаПродукцииИзПроизводства)
| КОГДА ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство)
| ИЛИ ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПередачаВПроизводствоОтгрузка)
| КОГДА ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатов)
| ИЛИ ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтгрузкаПоПеремещениюВПроизводстве)
| КОГДА ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства)
| ИЛИ ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ВозвратМатериаловИзПроизводстваПриемка)
| КОНЕЦ");
ПереопределениеРасчетаПараметров.Вставить("ПоступлениеВКладовую",
"ЕСТЬNULL(ВЫРАЗИТЬ(ТаблицаТовары.Ссылка.Получатель КАК Справочник.Склады).ЦеховаяКладовая, ЛОЖЬ)");
ПереопределениеРасчетаПараметров.Вставить("ПередачаИзКладовой",
"ЕСТЬNULL(ВЫРАЗИТЬ(ТаблицаТовары.Ссылка.Отправитель КАК Справочник.Склады).ЦеховаяКладовая, ЛОЖЬ)");
ПереопределениеРасчетаПараметров.Вставить("ПодразделениеПолучателя",
" ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ТаблицаТовары.Ссылка.Получатель) = ТИП(Справочник.Склады)
| ТОГДА ЕСТЬNULL(ВЫРАЗИТЬ(ТаблицаТовары.Ссылка.Получатель КАК Справочник.Склады).Подразделение, ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка))
| ИНАЧЕ ТаблицаТовары.Ссылка.Получатель
| КОНЕЦ");
ПереопределениеРасчетаПараметров.Вставить("ПодразделениеОтправителя",
" ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(ТаблицаТовары.Ссылка.Отправитель) = ТИП(Справочник.Склады)
| ТОГДА ЕСТЬNULL(ВЫРАЗИТЬ(ТаблицаТовары.Ссылка.Отправитель КАК Справочник.Склады).Подразделение, ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка))
| ИНАЧЕ ТаблицаТовары.Ссылка.Отправитель
| КОНЕЦ");
ПереопределениеРасчетаПараметров.Вставить("НакладнаяЯвляетсяРаспоряжением",
"ТаблицаТовары.Ссылка.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)");
Если ИмяРегистра = "ДвиженияСерийТоваров" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаДвиженияСерийТоваров(Неопределено, ТекстыЗапроса, Неопределено);
СинонимТаблицыДокумента = "ТаблицаТовары";
ИначеЕсли ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Неопределено, ТекстыЗапроса, Неопределено);
ТекстыЗапросаВременныхТаблиц.Вставить("ВтОснований", ТекстЗапросаВтОснований(Неопределено, ТекстыЗапроса));
СинонимТаблицыДокумента = "ДанныеДокумента";
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если СинонимТаблицыДокумента <> "ТаблицаТовары" Тогда
Для Каждого ПараметрРасчета Из ПереопределениеРасчетаПараметров Цикл
ПереопределениеРасчетаПараметров[ПараметрРасчета.Ключ] = СтрЗаменить(
ПараметрРасчета.Значение, "ТаблицаТовары", СинонимТаблицыДокумента);
КонецЦикла;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.Дата КАК Период,
| Таблица.Организация КАК Организация,
| Таблица.ОрганизацияПолучатель КАК ОрганизацияПолучатель,
| Таблица.Отправитель КАК Отправитель,
| Таблица.Получатель КАК Получатель,
| Таблица.Получатель.Представление КАК ПолучательПредставление,
| Таблица.Отправитель.Представление КАК ОтправительПредставление,
| Таблица.Ответственный КАК Ответственный,
| Таблица.Автор КАК Автор,
| Таблица.Комментарий КАК Комментарий,
| Таблица.ПометкаУдаления КАК ПометкаУдаления,
| Таблица.Исправление КАК Исправление,
| Таблица.СторнируемыйДокумент КАК СторнируемыйДокумент,
| Таблица.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| Таблица.Проведен КАК Проведен,
| Таблица.Номер КАК Номер,
| ЕСТЬNULL(ВЫРАЗИТЬ(Таблица.Получатель КАК Справочник.Склады).ЦеховаяКладовая, ЛОЖЬ) КАК ПоступлениеВКладовую,
| ЕСТЬNULL(ВЫРАЗИТЬ(Таблица.Отправитель КАК Справочник.Склады).ЦеховаяКладовая, ЛОЖЬ) КАК ПередачаИзКладовой,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(Таблица.Получатель) = ТИП(Справочник.Склады)
| ТОГДА ВЫРАЗИТЬ(Таблица.Получатель КАК Справочник.Склады).Подразделение
| ИНАЧЕ Таблица.Получатель
| КОНЕЦ КАК ПодразделениеПолучателя,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(Таблица.Отправитель) = ТИП(Справочник.Склады)
| ТОГДА ВЫРАЗИТЬ(Таблица.Отправитель КАК Справочник.Склады).Подразделение
| ИНАЧЕ Таблица.Отправитель
| КОНЕЦ КАК ПодразделениеОтправителя,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(Таблица.Отправитель) = ТИП(Справочник.Склады)
| ТОГДА ВЫРАЗИТЬ(Таблица.Отправитель КАК Справочник.Склады).Подразделение.ВариантОбособленногоУчетаТоваров
| ИНАЧЕ Таблица.Отправитель.ВариантОбособленногоУчетаТоваров
| КОНЕЦ КАК ВариантОбособленногоУчетаТоваров,
| Таблица.Ссылка КАК Ссылка,
| Таблица.Статус КАК Статус,
| Таблица.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Таблица.Распоряжение КАК Распоряжение,
| Таблица.ПоРаспоряжениям КАК ПоРаспоряжениям,
| Таблица.НалогообложениеНДС КАК НалогообложениеНДС,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(Таблица.Отправитель) = ТИП(Справочник.Склады)
| И ВЫРАЗИТЬ(Таблица.Отправитель КАК Справочник.Склады).ИспользоватьОрдернуюСхемуПриОтгрузке
| И Таблица.Дата >= ВЫРАЗИТЬ(Таблица.Отправитель КАК Справочник.Склады).ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаОтправитель,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(Таблица.Получатель) = ТИП(Справочник.Склады)
| И ВЫРАЗИТЬ(Таблица.Получатель КАК Справочник.Склады).ИспользоватьОрдернуюСхемуПриПоступлении
| И Таблица.Дата >= ВЫРАЗИТЬ(Таблица.Получатель КАК Справочник.Склады).ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПолучатель,
| ВЫБОР
| КОГДА Таблица.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства)
| ИЛИ Таблица.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаПродукцииИзПроизводства)
| КОГДА Таблица.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство)
| ИЛИ Таблица.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПередачаВПроизводствоОтгрузка)
| КОГДА Таблица.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатов)
| ИЛИ Таблица.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтгрузкаПоПеремещениюВПроизводстве)
| КОГДА Таблица.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства)
| ИЛИ Таблица.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ВозвратМатериаловИзПроизводстваПриемка)
| КОНЕЦ КАК СкладскаяОперация,
| Таблица.ПоТоварамКОформлениюОтчетовКомитенту КАК ПоТоварамКОформлениюОтчетовКомитенту,
| Таблица.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов КАК Таблица
|ГДЕ
| Таблица.Ссылка = &Ссылка";
Результат = Запрос.Выполнить();
Реквизиты = Результат.Выбрать();
Реквизиты.Следующий();
Для Каждого Колонка Из Результат.Колонки Цикл
Запрос.УстановитьПараметр(Колонка.Имя, Реквизиты[Колонка.Имя]);
КонецЦикла;
НакладнаяЯвляетсяРаспоряжением = ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(Реквизиты.ВариантПриемкиТоваров);
Запрос.УстановитьПараметр("Валюта", Константы.ВалютаУправленческогоУчета.Получить());
Запрос.УстановитьПараметр("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета", ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета"));
Запрос.УстановитьПараметр("НакладнаяЯвляетсяРаспоряжением", НакладнаяЯвляетсяРаспоряжением);
Запрос.УстановитьПараметр("АналитическийУчетПоГруппамПродукции", ПолучитьФункциональнуюОпцию("АналитическийУчетПоГруппамПродукции"));
Запрос.УстановитьПараметр("НомерНаПечать", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер));
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.ДвижениеПродукцииИМатериалов"));
РасчетСебестоимостиПрикладныеАлгоритмы.ЗаполнитьПараметрыИнициализации(Запрос, Реквизиты);
КонецПроцедуры
Процедура ИнициализироватьКлючиАналитикиНоменклатуры(Запрос)
Если Запрос = Неопределено ИЛИ Запрос.Параметры.Свойство("КлючиАналитикиНоменклатурыИнициализированы") Тогда
Возврат;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.Серия КАК Серия,
| Таблица.Склад КАК Склад
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| &Получатель КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.НазначениеПолучателя КАК Назначение,
| ТаблицаВидыЗапасов.Серия КАК Серия
| ИЗ
| Документ.ДвижениеПродукцииИМатериалов.ВидыЗапасов КАК ТаблицаВидыЗапасов
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Ключи
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = Ключи.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = Ключи.Характеристика
| И ТаблицаВидыЗапасов.Серия = Ключи.Серия
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Ключи.СтатьяКалькуляции
| И ТаблицаВидыЗапасов.НазначениеПолучателя = Ключи.Назначение
| И &Получатель = Ключи.МестоХранения
| ГДЕ
| Ключи.Номенклатура ЕСТЬ NULL
| И ТаблицаВидыЗапасов.Ссылка = &Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| &Получатель КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ТаблицаВидыЗапасов.Серия КАК Серия
| ИЗ
| Документ.ДвижениеПродукцииИМатериалов.ВидыЗапасов КАК ТаблицаВидыЗапасов
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Ключи
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = Ключи.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = Ключи.Характеристика
| И ТаблицаВидыЗапасов.Серия = Ключи.Серия
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Ключи.СтатьяКалькуляции
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = Ключи.Назначение
| И &Получатель = Ключи.МестоХранения
|
| ГДЕ
| Ключи.Номенклатура ЕСТЬ NULL
| И ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия КАК Серия
| ИЗ
| Документ.ДвижениеПродукцииИМатериалов.ВидыЗапасов КАК ТаблицаВидыЗапасов
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Ключи
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = Ключи.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = Ключи.Характеристика
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия = Ключи.Серия
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Ключи.СтатьяКалькуляции
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = Ключи.Назначение
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения = Ключи.МестоХранения
|
| ГДЕ
| Ключи.Номенклатура ЕСТЬ NULL
| И ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия
| ИЗ
| Документ.ДвижениеПродукцииИМатериалов.ВидыЗапасов КАК ТаблицаВидыЗапасов
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Ключи
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = Ключи.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = Ключи.Характеристика
| И ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) = Ключи.Серия
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Ключи.СтатьяКалькуляции
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = Ключи.Назначение
| И ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара = Ключи.МестоХранения
| ГДЕ
| Ключи.Номенклатура ЕСТЬ NULL
| И ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| ) КАК Таблица";
ЗапросАналитики = Новый Запрос(ТекстЗапроса);
ЗапросАналитики.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросАналитики.УстановитьПараметр("Получатель", Запрос.Параметры.Получатель);
ЗапросАналитики.УстановитьПараметр("Отправитель", Запрос.Параметры.Отправитель);
ЗапросАналитики.УстановитьПараметр("УчитыватьСебестоимостьТоваровПоНазначениям", Запрос.Параметры.УчитыватьСебестоимостьТоваровПоНазначениям);
Выборка = ЗапросАналитики.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
РегистрыСведений.АналитикаУчетаНоменклатуры.СоздатьКлючАналитики(Выборка)
КонецЦикла;
Запрос.УстановитьПараметр("КлючиАналитикиНоменклатурыИнициализированы", Истина);
КонецПроцедуры
Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ДанныеИсточника.Ссылка КАК Ссылка,
| ДанныеИсточника.Ссылка.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеИсточника.Распоряжение В(
| ЗНАЧЕНИЕ(Документ.ЗаказМатериаловВПроизводство.ПустаяСсылка),
| НЕОПРЕДЕЛЕНО)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ДанныеИсточника.Распоряжение
| КОНЕЦ КАК Заказ,
| ДанныеИсточника.Ссылка КАК Накладная,
| ДанныеИсточника.Ссылка.Исправление КАК Исправление,
| ДанныеИсточника.Ссылка.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеИсточника.Ссылка.Получатель КАК Получатель,
| ДанныеИсточника.Ссылка.Отправитель КАК Склад,
| ДанныеИсточника.Номенклатура КАК Номенклатура,
| ДанныеИсточника.Характеристика КАК Характеристика,
| ДанныеИсточника.НазначениеОтправителя КАК Назначение,
| ДанныеИсточника.Серия КАК Серия,
| ДанныеИсточника.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерий,
| ДанныеИсточника.Количество КАК Количество,
| ВЫБОР
| КОГДА ДанныеИсточника.Ссылка.ПоРаспоряжениям
| И ДанныеИсточника.КодСтроки = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ДанныеИсточника.Ссылка.ПоРаспоряжениям КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ДанныеИсточника
|
|ГДЕ
| ДанныеИсточника.Ссылка В(&Ссылка)
| И ТИПЗНАЧЕНИЯ(ДанныеИсточника.Ссылка.Отправитель) = ТИП(Справочник.Склады)
|";
СкладыСервер.ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ДанныеИсточника.Ссылка КАК Ссылка,
| ДанныеИсточника.Ссылка.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеИсточника.Распоряжение В(
| ЗНАЧЕНИЕ(Документ.ЗаказМатериаловВПроизводство.ПустаяСсылка),
| НЕОПРЕДЕЛЕНО)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ДанныеИсточника.Распоряжение
| КОНЕЦ КАК Заказ,
| ДанныеИсточника.Ссылка КАК Накладная,
| ДанныеИсточника.Ссылка.Исправление КАК Исправление,
| ДанныеИсточника.Ссылка.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеИсточника.Ссылка.Получатель КАК Получатель,
| ДанныеИсточника.Ссылка.Отправитель КАК Склад,
| ДанныеИсточника.Номенклатура КАК Номенклатура,
| ДанныеИсточника.Характеристика КАК Характеристика,
| ДанныеИсточника.НазначениеОтправителя КАК Назначение,
| ДанныеИсточника.Назначение КАК НазначениеДляСоединения,
| ДанныеИсточника.Серия КАК Серия,
| ДанныеИсточника.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерий,
| ДанныеИсточника.Количество КАК Количество,
| ВЫБОР
| КОГДА ДанныеИсточника.Ссылка.ПоРаспоряжениям
| И ДанныеИсточника.КодСтроки = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СверхЗаказа,
| ДанныеИсточника.Ссылка.ПоРаспоряжениям КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ДанныеИсточника
|ГДЕ
| ДанныеИсточника.Ссылка В(&Ссылка)
| И ТИПЗНАЧЕНИЯ(ДанныеИсточника.Ссылка.Отправитель) = ТИП(Справочник.Склады)
|";
ПереопределяемыеПоляСоединенияССериями = Новый Соответствие;
ПереопределяемыеПоляСоединенияССериями.Вставить("Назначение", "НазначениеДляСоединения");
ПараметрыМодульногоПроведения = СкладыСервер.ПараметрыМодульногоПроведения();
ПараметрыМодульногоПроведения.ИмяТЧСерии = "Серии";
ПараметрыМодульногоПроведения.СинонимТаблицыДокумента = "ДанныеИсточника";
ПараметрыМодульногоПроведения.ПереопределяемыеПоляСоединенияССериями = ПереопределяемыеПоляСоединенияССериями;
ПараметрыМодульногоПроведения.ОбъектМетаданных = Метаданные.Документы.ДвижениеПродукцииИМатериалов;
СкладыСервер.ОформитьОтгрузкуТоваровПоНастройкеПараметров(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДанныхДокумента,
ПараметрыМодульногоПроведения);
КонецПроцедуры
Процедура ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ИсточникДанных.Ссылка КАК Ссылка,
| ИсточникДанных.Ссылка КАК Накладная,
| ИсточникДанных.Ссылка.Исправление КАК Исправление,
| ИсточникДанных.Ссылка.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ВЫБОР
| КОГДА ИсточникДанных.Распоряжение В(
| ЗНАЧЕНИЕ(Документ.ЗаказМатериаловВПроизводство.ПустаяСсылка),
| НЕОПРЕДЕЛЕНО)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ИсточникДанных.Распоряжение
| КОНЕЦ КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ИсточникДанных.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
|
| ВЫБОР КОГДА ИсточникДанных.Ссылка.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1) ТОГДА
| ИсточникДанных.Ссылка.ДатаПоступления
| ИНАЧЕ
| ИсточникДанных.Ссылка.Дата
| КОНЕЦ КАК Дата,
|
| ИсточникДанных.Номенклатура КАК Номенклатура,
| ИсточникДанных.Характеристика КАК Характеристика,
| ИсточникДанных.Назначение КАК Назначение,
| ИсточникДанных.Серия КАК Серия,
| ИсточникДанных.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерий,
| ИсточникДанных.Ссылка.ПоРаспоряжениям
| И ИсточникДанных.КодСтроки = 0 КАК СверхЗаказа,
| ИсточникДанных.Ссылка.Получатель КАК Склад,
| ИсточникДанных.Ссылка.Отправитель КАК Отправитель,
| ВЫБОР
| КОГДА ИсточникДанных.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства)
| ИНАЧЕ ИсточникДанных.Ссылка.ХозяйственнаяОперация
| КОНЕЦ КАК ХозяйственнаяОперация,
| ИсточникДанных.Количество КАК Количество,
| ИСТИНА КАК ЭтоНакладная,
| ИсточникДанных.Ссылка.ПоРаспоряжениям КАК ПоступлениеПоЗаказам
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ИсточникДанных
|ГДЕ
| ИсточникДанных.Ссылка В(&Ссылка)
| И ИсточникДанных.Ссылка.ПоРаспоряжениям
| И ИсточникДанных.Ссылка.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую))
| И ТИПЗНАЧЕНИЯ(ИсточникДанных.Ссылка.Получатель) = ТИП(Справочник.Склады)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ИсточникДанных.Ссылка КАК Ссылка,
| ИсточникДанных.Ссылка КАК Накладная,
| ИсточникДанных.Ссылка.Исправление КАК Исправление,
| ИсточникДанных.Ссылка.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| НЕОПРЕДЕЛЕНО КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ИсточникДанных.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
|
| ВЫБОР КОГДА ИсточникДанных.Ссылка.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1) ТОГДА
| ИсточникДанных.Ссылка.ДатаПоступления
| ИНАЧЕ
| ИсточникДанных.Ссылка.Дата
| КОНЕЦ КАК Дата,
|
| ИсточникДанных.Номенклатура КАК Номенклатура,
| ИсточникДанных.Характеристика КАК Характеристика,
| ИсточникДанных.Назначение КАК Назначение,
| ИсточникДанных.Серия КАК Серия,
| ИсточникДанных.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерий,
| ИсточникДанных.Ссылка.ПоРаспоряжениям
| И ИсточникДанных.КодСтроки = 0 КАК СверхЗаказа,
| ИсточникДанных.Ссылка.Получатель КАК Склад,
| ИсточникДанных.Ссылка.Отправитель КАК Отправитель,
| ВЫБОР
| КОГДА ИсточникДанных.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства)
| ИНАЧЕ ИсточникДанных.Ссылка.ХозяйственнаяОперация
| КОНЕЦ КАК ХозяйственнаяОперация,
| ИсточникДанных.Количество КАК Количество,
| ИСТИНА КАК ЭтоНакладная,
| ИсточникДанных.Ссылка.ПоРаспоряжениям КАК ПоступлениеПоЗаказам
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ИсточникДанных
|ГДЕ
| ИсточникДанных.Ссылка В(&Ссылка)
| И НЕ ИсточникДанных.Ссылка.ПоРаспоряжениям
| И ТИПЗНАЧЕНИЯ(ИсточникДанных.Ссылка.Получатель) = ТИП(Справочник.Склады)
|";
СкладыСервер.ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДокумента);
КонецПроцедуры
Процедура ОформитьПриобретениеТоваровПоДвухходовке(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ИсточникДанных.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ИсточникДанных.Распоряжение В(
| ЗНАЧЕНИЕ(Документ.ЗаказМатериаловВПроизводство.ПустаяСсылка),
| НЕОПРЕДЕЛЕНО)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ИсточникДанных.Распоряжение
| КОНЕЦ КАК Заказ,
| ВЫБОР
| КОГДА ИсточникДанных.Ссылка.Исправление ТОГДА
| ИсточникДанных.Ссылка.ИсправляемыйДокумент
| ИНАЧЕ
| ИсточникДанных.Ссылка
| КОНЕЦ КАК Накладная,
| ИсточникДанных.Ссылка.Исправление КАК Исправление,
| ИсточникДанных.Ссылка.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ИсточникДанных.Ссылка.Дата КАК Дата,
| ИсточникДанных.Ссылка.Дата КАК ДатаПланируемогоПоступления,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ИсточникДанных.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ИсточникДанных.Ссылка.Получатель КАК Склад,
| ИсточникДанных.Ссылка.Отправитель КАК Отправитель,
| ВЫБОР
| КОГДА ИсточникДанных.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства)
| ИНАЧЕ ИсточникДанных.Ссылка.ХозяйственнаяОперация
| КОНЕЦ КАК ХозяйственнаяОперация,
| ИсточникДанных.Номенклатура КАК Номенклатура,
| ИсточникДанных.Характеристика КАК Характеристика,
| ИсточникДанных.Назначение КАК Назначение,
| ИсточникДанных.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерий,
| ИсточникДанных.Ссылка.ПоРаспоряжениям
| И ИсточникДанных.КодСтроки = 0 КАК СверхЗаказа,
| ИсточникДанных.Серия КАК Серия,
| ИсточникДанных.Количество КАК Количество,
| ИсточникДанных.Ссылка.ПоРаспоряжениям КАК ПоступлениеПоЗаказам,
| ИСТИНА КАК ЭтоНакладная
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ИсточникДанных
|ГДЕ
| ИсточникДанных.Ссылка В(&Ссылка)
| И ТИПЗНАЧЕНИЯ(ИсточникДанных.Ссылка.Получатель) = ТИП(Справочник.Склады)
|";
СкладыСервер.ОформитьПриобретениеТоваровПоДвухходовке(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента);
КонецПроцедуры
Процедура ОформитьПоступлениеТоваровПоДвухходовке(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ИсточникДанных.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ИсточникДанных.Распоряжение В(
| ЗНАЧЕНИЕ(Документ.ЗаказМатериаловВПроизводство.ПустаяСсылка),
| НЕОПРЕДЕЛЕНО)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ИсточникДанных.Распоряжение
| КОНЕЦ КАК Заказ,
| ВЫБОР
| КОГДА ИсточникДанных.Ссылка.Исправление ТОГДА
| ИсточникДанных.Ссылка.ИсправляемыйДокумент
| ИНАЧЕ
| ИсточникДанных.Ссылка
| КОНЕЦ КАК Накладная,
| ИсточникДанных.Ссылка.Дата КАК Дата,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ИсточникДанных.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ИсточникДанных.Ссылка.Получатель КАК Склад,
| ИсточникДанных.Ссылка.Отправитель КАК Отправитель,
| ВЫБОР
| КОГДА ИсточникДанных.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства)
| ИНАЧЕ ИсточникДанных.Ссылка.ХозяйственнаяОперация
| КОНЕЦ КАК ХозяйственнаяОперация,
| ИсточникДанных.Номенклатура КАК Номенклатура,
| ИсточникДанных.Характеристика КАК Характеристика,
| ИсточникДанных.Назначение КАК Назначение,
| ИсточникДанных.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ИсточникДанных.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерийНаСкладах,
| ИсточникДанных.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерийТоварыУПартнеров,
| ИсточникДанных.Ссылка.ПоРаспоряжениям
| И ИсточникДанных.КодСтроки = 0 КАК СверхЗаказа,
| ИсточникДанных.Серия КАК Серия,
| ИсточникДанных.Количество КАК Количество,
| ИсточникДанных.Ссылка.ПоРаспоряжениям КАК ПоступлениеПоЗаказам,
| ИСТИНА КАК ЭтоНакладная
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ИсточникДанных
|ГДЕ
| ИсточникДанных.Ссылка В(&Ссылка)
| И ТИПЗНАЧЕНИЯ(ИсточникДанных.Ссылка.Получатель) = ТИП(Справочник.Склады)
| И ИсточникДанных.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДвиженияПродукцииИМатериалов.Принято)
|";
ТекущийОбъектМетаданных = Метаданные.Документы.ДвижениеПродукцииИМатериалов;
СкладыСервер.ОформитьПоступлениеТоваровПоДвухходовке(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента,
ТекущийОбъектМетаданных,
"Серии");
КонецПроцедуры
Функция ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияСерийТоваров";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| &Период КАК Период,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаТовары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| &Отправитель КАК Отправитель,
| &Получатель КАК Получатель,
| &СкладскаяОперация КАК СкладскаяОперация,
| &Ссылка КАК Документ,
| НЕ &ОрдернаяСхемаОтправитель КАК ЭтоСкладскоеДвижение
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Серии КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Количество <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Период КАК Период,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаТовары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| &Отправитель КАК Отправитель,
| &Получатель КАК Получатель,
| &СкладскаяОперация КАК СкладскаяОперация,
| &Ссылка КАК Документ,
| НЕ &ОрдернаяСхемаОтправитель КАК ЭтоСкладскоеДвижение
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыОрганизаций";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| 1 КАК Порядок,
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаВидыЗапасов.Организация КАК ОрганизацияОтгрузки,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.РеализацияЗапасовДругойОрганизации
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасовВладельца.Организация
| ИНАЧЕ ТаблицаВидыЗапасов.Организация
| КОНЕЦ КАК Организация,
|
| ВЫБОР КОГДА ТаблицаВидыЗапасов.РеализацияЗапасовДругойОрганизации ТОГДА
| ТаблицаВидыЗапасов.ВидЗапасовВладельца
| ИНАЧЕ
| ТаблицаВидыЗапасов.ВидЗапасов
| КОНЕЦ КАК ВидЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасовПолучателя КАК КорВидЗапасов,
|
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК НалогообложениеНДС,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыПолучателя КАК КорАналитикаУчетаНоменклатуры,
| ЛОЖЬ КАК Первичное
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2 КАК Порядок,
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами)
| ТОГДА &Организация
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ОрганизацияОтгрузки,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами)
| ТОГДА &ОрганизацияПолучатель
| ИНАЧЕ ТаблицаВидыЗапасов.Организация
| КОНЕЦ КАК Организация,
|
| ТаблицаВидыЗапасов.ВидЗапасовПолучателя КАК ВидЗапасов,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами)
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасов
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК КорВидЗапасов,
|
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК НалогообложениеНДС,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыПолучателя КАК АналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаНоменклатуры,
| ЛОЖЬ КАК Первичное
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|
|ГДЕ
| &Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДвиженияПродукцииИМатериалов.Принято)
|
|УПОРЯДОЧИТЬ ПО
| Порядок,
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыОрганизацийКПередаче(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыОрганизацийКПередаче";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Отправитель КАК Склад,
| ТаблицаВидыЗапасов.ВидЗапасовВладельца.Организация КАК ОрганизацияВладелец,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасовПродавца,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК НалогообложениеНДС
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|ГДЕ
| ТаблицаВидыЗапасов.РеализацияЗапасовДругойОрганизации
| И &ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую))
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыКОформлениюОтчетовКомитенту";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Организация КАК Организация,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.АналитикаКомитента КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов.Валюта КАК Валюта,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| 0 КАК Количество,
| 0 КАК СуммаВыручки,
| 0 КАК СуммаВыручкиРегл,
| 0 КАК СуммаВыручкиУпр,
| ТаблицаВидыЗапасов.Количество КАК КоличествоСписано,
| 0 КАК КоличествоКОформлению,
| 0 КАК КоличествоКОформлениюПоРНПТ,
| 0 КАК СуммаВыручкиКОформлению,
| ТаблицаВидыЗапасов.Количество КАК КоличествоСписаноКОформлению,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоСписаноКОформлениюПоРНПТ,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК КорВидЗапасов,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыПолучателя КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК НалогообложениеНДС,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.СписаниеКомиссионныхТоваров) КАК НастройкаХозяйственнойОперации,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|
|ГДЕ
| ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| И ТаблицаВидыЗапасов.ТипЗапасовПолучателя = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
| И &ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую))
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияНоменклатураНоменклатура";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Строки.Организация КАК Организация,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(&Отправитель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &Отправитель
| КОГДА &ПередачаИзКладовой
| ТОГДА &ПодразделениеОтправителя
| КОГДА ТИПЗНАЧЕНИЯ(&Получатель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &Получатель
| КОГДА &ПоступлениеВКладовую
| ТОГДА &ПодразделениеПолучателя
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
| КОНЕЦ КАК Подразделение,
| Строки.АналитикаУчетаНоменклатуры.Назначение.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ВЫБОР
| КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям ТОГДА
| Строки.АналитикаУчетаНоменклатуры
| ИНАЧЕ Строки.АналитикаУчетаНоменклатурыБезНазначения
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| &Отправитель КАК Склад,
| ВЫБОР
| КОГДА Строки.РеализацияЗапасовДругойОрганизации ТОГДА
| Строки.ВидЗапасовВладельца.ТипЗапасов
| ИНАЧЕ Строки.ТипЗапасов
| КОНЕЦ КАК ТипЗапасов,
| ВЫБОР
| КОГДА Строки.РеализацияЗапасовДругойОрганизации ТОГДА
| Строки.ВидЗапасовВладельца
| ИНАЧЕ Строки.ВидЗапасов
| КОНЕЦ КАК ВидЗапасов,
| Строки.АналитикаУчетаНоменклатурыПолучателя.Назначение.НаправлениеДеятельности КАК КорНаправлениеДеятельности,
| ВЫБОР
| КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям ТОГДА
| Строки.АналитикаУчетаНоменклатурыПолучателя
| ИНАЧЕ
| Строки.АналитикаУчетаНоменклатурыПолучателяБезНазначения
| КОНЕЦ КАК КорАналитикаУчетаНоменклатуры,
| &Получатель КАК КорСклад,
| Строки.ТипЗапасовПолучателя КАК КорТипЗапасов,
| Строки.ВидЗапасовПолучателя КАК КорВидЗапасов,
|
| Строки.Количество КАК Количество,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами)
| ТОГДА 0
| ИНАЧЕ Строки.Количество
| КОНЕЦ КАК КорКоличество,
|
| 0 КАК Стоимость,
| 0 КАК СтоимостьБезНДС,
| 0 КАК СтоимостьРегл,
|
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета ТОГДА
| Строки.ВидЗапасов
| ИНАЧЕ
| Строки.Номенклатура
| КОНЕЦ КАК ИсточникГФУНоменклатуры,
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета ТОГДА
| Строки.ВидЗапасов
| ИНАЧЕ
| Строки.Номенклатура
| КОНЕЦ КАК КорИсточникГФУНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК ДокументДвижения,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами)
| ТОГДА &ОрганизацияПолучатель
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК КорОрганизация
|ИЗ
| ВтВидыЗапасов КАК Строки
|ГДЕ
| &ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами))
| И &Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДвиженияПродукцииИМатериалов.Принято)
| И Строки.ТипЗапасов В (ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Период КАК Период,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Строки.Организация КАК Организация,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(&Отправитель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &Отправитель
| КОГДА &ПередачаИзКладовой
| ТОГДА &ПодразделениеОтправителя
| КОГДА ТИПЗНАЧЕНИЯ(&Получатель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &Получатель
| КОГДА &ПоступлениеВКладовую
| ТОГДА &ПодразделениеПолучателя
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
| КОНЕЦ КАК Подразделение,
| Строки.АналитикаУчетаНоменклатуры.Назначение.НаправлениеДеятельности КАК НаправлениеДеятельности,
| Строки.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| &Отправитель КАК Склад,
| Строки.ТипЗапасов КАК ТипЗапасов,
| Строки.ВидЗапасов КАК ВидЗапасов,
| Строки.АналитикаУчетаНоменклатурыПолучателя.Назначение.НаправлениеДеятельности КАК КорНаправлениеДеятельности,
| ВЫБОР
| КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям ТОГДА
| Строки.АналитикаУчетаНоменклатурыПолучателя
| ИНАЧЕ
| Строки.АналитикаУчетаНоменклатурыПолучателяБезНазначения
| КОНЕЦ КАК КорАналитикаУчетаНоменклатуры,
| &Получатель КАК КорСклад,
| ВЫБОР
| КОГДА Строки.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| Строки.ТипЗапасовПолучателя
| ИНАЧЕ Строки.ТипЗапасов
| КОНЕЦ КАК КорТипЗапасов,
| ВЫБОР
| КОГДА Строки.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| Строки.ВидЗапасовПолучателя
| ИНАЧЕ Строки.ВидЗапасов
| КОНЕЦ КАК КорВидЗапасов,
| Строки.Количество КАК Количество,
| Строки.Количество КАК КорКоличество,
| 0 КАК Стоимость,
| 0 КАК СтоимостьБезНДС,
| 0 КАК СтоимостьРегл,
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета ТОГДА
| Строки.ВидЗапасов
| ИНАЧЕ
| Строки.Номенклатура
| КОНЕЦ КАК ИсточникГФУНоменклатуры,
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета ТОГДА
| Строки.ВидЗапасов
| ИНАЧЕ
| Строки.Номенклатура
| КОНЕЦ КАК КорИсточникГФУНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК ДокументДвижения,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами)
| ТОГДА &Организация
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК КорОрганизация
|ИЗ
| ВтВидыЗапасов КАК Строки
|ГДЕ
| &ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатов),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой))
| И &Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДвиженияПродукцииИМатериалов.Принято)
| И Строки.ТипЗапасов В (ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Период КАК Период,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВнутреннееПоступлениеТоваров) КАК ХозяйственнаяОперация,
| &ОрганизацияПолучатель КАК Организация,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(&Отправитель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &Отправитель
| КОГДА &ПередачаИзКладовой
| ТОГДА &ПодразделениеОтправителя
| КОГДА ТИПЗНАЧЕНИЯ(&Получатель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &Получатель
| КОГДА &ПоступлениеВКладовую
| ТОГДА &ПодразделениеПолучателя
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
| КОНЕЦ КАК Подразделение,
| Строки.АналитикаУчетаНоменклатуры.Назначение.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ВЫБОР
| КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям ТОГДА
| Строки.АналитикаУчетаНоменклатуры
| ИНАЧЕ Строки.АналитикаУчетаНоменклатурыБезНазначения
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| &Отправитель КАК Склад,
| ВЫБОР
| КОГДА Строки.РеализацияЗапасовДругойОрганизации ТОГДА
| Строки.ВидЗапасовВладельца.ТипЗапасов
| ИНАЧЕ Строки.ВидЗапасов.ТипЗапасов
| КОНЕЦ КАК ТипЗапасов,
| ВЫБОР
| КОГДА Строки.РеализацияЗапасовДругойОрганизации ТОГДА
| Строки.ВидЗапасовВладельца
| ИНАЧЕ Строки.ВидЗапасов
| КОНЕЦ КАК ВидЗапасов,
| Строки.АналитикаУчетаНоменклатурыПолучателя.Назначение.НаправлениеДеятельности КАК КорНаправлениеДеятельности,
| ВЫБОР
| КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям ТОГДА
| Строки.АналитикаУчетаНоменклатурыПолучателя
| ИНАЧЕ
| Строки.АналитикаУчетаНоменклатурыПолучателяБезНазначения
| КОНЕЦ КАК КорАналитикаУчетаНоменклатуры,
| &Получатель КАК КорСклад,
| Строки.ВидЗапасовПолучателя.ТипЗапасов КАК КорТипЗапасов,
| Строки.ВидЗапасовПолучателя КАК КорВидЗапасов,
|
| 0 КАК Количество,
| Строки.Количество КАК КорКоличество,
|
| 0 КАК Стоимость,
| 0 КАК СтоимостьБезНДС,
| 0 КАК СтоимостьРегл,
|
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета ТОГДА
| Строки.ВидЗапасов
| ИНАЧЕ
| Строки.Номенклатура
| КОНЕЦ КАК ИсточникГФУНоменклатуры,
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета ТОГДА
| Строки.ВидЗапасов
| ИНАЧЕ
| Строки.Номенклатура
| КОНЕЦ КАК КорИсточникГФУНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК ДокументДвижения,
| &Организация КАК КорОрганизация
|ИЗ
| ВтВидыЗапасов КАК Строки
|ГДЕ
| &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами)
| И Строки.ТипЗапасов В (ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар))";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаЗаказыМатериаловВПроизводство(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЗаказыМатериаловВПроизводство";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"
|ВЫБРАТЬ
| ТаблицаМатериалыИУслуги.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаМатериалыИУслуги.Распоряжение КАК Распоряжение,
| &ПодразделениеПолучателя КАК Подразделение,
| &Получатель КАК Получатель,
| ТаблицаМатериалыИУслуги.Номенклатура КАК Номенклатура,
| ТаблицаМатериалыИУслуги.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаМатериалыИУслуги.СтатусУказанияСерийОтправитель В (10, 14)
| ТОГДА ТаблицаМатериалыИУслуги.Серия
| КОНЕЦ КАК Серия,
| &Отправитель КАК Склад,
| ТаблицаМатериалыИУслуги.Назначение КАК Назначение,
| ТаблицаМатериалыИУслуги.НазначениеОтправителя КАК НазначениеОтправителя,
| ТаблицаМатериалыИУслуги.КодСтроки КАК КодСтроки,
| ТаблицаМатериалыИУслуги.Количество КАК Заказано,
| ТаблицаМатериалыИУслуги.Количество КАК КОформлению,
| 0 КАК ОтгруженоНеПринято
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТаблицаМатериалыИУслуги
|ГДЕ
| ТаблицаМатериалыИУслуги.Ссылка = &Ссылка
| И &ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую))
| И ТаблицаМатериалыИУслуги.КодСтроки <> 0
| И &ПоРаспоряжениям
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаМатериалыИУслуги.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаМатериалыИУслуги.Распоряжение КАК Распоряжение,
| &ПодразделениеПолучателя КАК Подразделение,
| &Получатель КАК Получатель,
| ТаблицаМатериалыИУслуги.Номенклатура КАК Номенклатура,
| ТаблицаМатериалыИУслуги.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаМатериалыИУслуги.СтатусУказанияСерийОтправитель В (10, 14)
| ТОГДА ТаблицаМатериалыИУслуги.Серия
| КОНЕЦ КАК Серия,
| &Отправитель КАК Склад,
| ТаблицаМатериалыИУслуги.Назначение КАК Назначение,
| ТаблицаМатериалыИУслуги.НазначениеОтправителя КАК НазначениеОтправителя,
| ТаблицаМатериалыИУслуги.КодСтроки КАК КодСтроки,
| 0 КАК Заказано,
| 0 КАК КОформлению,
| ТаблицаМатериалыИУслуги.Количество КАК ОтгруженоНеПринято
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТаблицаМатериалыИУслуги
|ГДЕ
| ТаблицаМатериалыИУслуги.Ссылка = &Ссылка
| И &ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую))
| И ТаблицаМатериалыИУслуги.КодСтроки <> 0
| И &ПоРаспоряжениям
| И &Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыДвиженияПродукцииИМатериалов.Принято)
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтОснований", ТекстыЗапроса) Тогда
ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса);
КонецЕсли;
УстановитьПараметрыЗапросаИнформацияПоОтправителюИПолучателю(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ
| ДанныеДокумента.ТипСсылки КАК ТипСсылки,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.ДополнительнаяЗапись КАК ДополнительнаяЗапись,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.МестоХранения КАК МестоХранения,
| ДанныеДокумента.ДатаДокументаИБ КАК ДатаДокументаИБ,
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.НомерДокументаИБ КАК НомерДокументаИБ,
| ДанныеДокумента.Ответственный КАК Ответственный,
| ДанныеДокумента.Автор КАК Автор,
| ДанныеДокумента.Комментарий КАК Комментарий,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Сумма КАК Сумма,
| ДанныеДокумента.Статус КАК Статус,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеДокумента.Дополнительно КАК Дополнительно,
| ДанныеДокумента.ДатаПервичногоДокумента КАК ДатаПервичногоДокумента,
| ДанныеДокумента.НомерПервичногоДокумента КАК НомерПервичногоДокумента,
| ДанныеДокумента.ДатаДокументаИБ КАК ДатаОтраженияВУчете,
| ДанныеДокумента.СторноИсправление КАК СторноИсправление,
| ДанныеДокумента.СторнируемыйДокумент КАК СторнируемыйДокумент,
| ДанныеДокумента.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| НЕОПРЕДЕЛЕНО КАК Приоритет
|ИЗ
| ВтОснований КАК ДанныеДокумента";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтОснований";
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаРеестрДокументов.ТипСсылки КАК ТипСсылки,
| ТаблицаРеестрДокументов.Организация КАК Организация,
| ТаблицаРеестрДокументов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаРеестрДокументов.Партнер КАК Партнер,
| ТаблицаРеестрДокументов.Контрагент КАК Контрагент,
| ВЫБОР
| КОГДА ТаблицаРеестрДокументов.КоличествоНаправленийДеятельности = 1
| ТОГДА ТаблицаРеестрДокументов.НаправлениеДеятельности
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК НаправлениеДеятельности,
| МИНИМУМ(ТаблицаРеестрДокументов.ДополнительнаяЗапись) КАК ДополнительнаяЗапись,
| ТаблицаРеестрДокументов.Подразделение КАК Подразделение,
| ТаблицаРеестрДокументов.МестоХранения КАК МестоХранения,
| ТаблицаРеестрДокументов.ДатаДокументаИБ КАК ДатаДокументаИБ,
| ТаблицаРеестрДокументов.Ссылка КАК Ссылка,
| МАКСИМУМ(ТаблицаРеестрДокументов.НомерДокументаИБ) КАК НомерДокументаИБ,
| МАКСИМУМ(ТаблицаРеестрДокументов.Ответственный) КАК Ответственный,
| МАКСИМУМ(ТаблицаРеестрДокументов.Автор) КАК Автор,
| МАКСИМУМ(ТаблицаРеестрДокументов.Комментарий) КАК Комментарий,
| МАКСИМУМ(ТаблицаРеестрДокументов.Валюта) КАК Валюта,
| МАКСИМУМ(ТаблицаРеестрДокументов.Сумма) КАК Сумма,
| МАКСИМУМ(ТаблицаРеестрДокументов.Статус) КАК Статус,
| МАКСИМУМ(ТаблицаРеестрДокументов.Проведен) КАК Проведен,
| МАКСИМУМ(ТаблицаРеестрДокументов.ПометкаУдаления) КАК ПометкаУдаления,
| МАКСИМУМ(ТаблицаРеестрДокументов.Дополнительно) КАК Дополнительно,
| МАКСИМУМ(ТаблицаРеестрДокументов.ДатаПервичногоДокумента) КАК ДатаПервичногоДокумента,
| МАКСИМУМ(ТаблицаРеестрДокументов.НомерПервичногоДокумента) КАК НомерПервичногоДокумента,
| МАКСИМУМ(ТаблицаРеестрДокументов.СторноИсправление) КАК СторноИсправление,
| МАКСИМУМ(ТаблицаРеестрДокументов.СторнируемыйДокумент) КАК СторнируемыйДокумент,
| МАКСИМУМ(ТаблицаРеестрДокументов.ИсправляемыйДокумент) КАК ИсправляемыйДокумент
|ПОМЕСТИТЬ ВтОснований
| ИЗ
| (ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка) КАК Партнер,
| ЗНАЧЕНИЕ(Справочник.КлючиРеестраДокументов.ПустаяСсылка) КАК Контрагент,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(&Отправитель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &Получатель
| ИНАЧЕ &Отправитель
| КОНЕЦ КАК МестоХранения,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(&Отправитель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &Отправитель
| КОГДА &ПередачаИзКладовой
| ТОГДА &ПодразделениеОтправителя
| КОГДА ТИПЗНАЧЕНИЯ(&Получатель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &Получатель
| КОГДА &ПоступлениеВКладовую
| ТОГДА &ПодразделениеПолучателя
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
| КОНЕЦ КАК Подразделение,
| &Ответственный КАК Ответственный,
| &Автор КАК Автор,
| ВЫРАЗИТЬ(&Комментарий КАК Строка(100)) КАК Комментарий,
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК Валюта,
| 0 КАК Сумма,
| &Статус КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(&Отправитель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &ИнформацияПоОтправителю
| ИНАЧЕ &ИнформацияПоПолучателю
| КОНЕЦ КАК Дополнительно,
| &Период КАК ДатаПервичногоДокумента,
| &НомерНаПечать КАК НомерПервичногоДокумента,
| &Исправление КАК СторноИсправление,
| &СторнируемыйДокумент КАК СторнируемыйДокумент,
| &ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| МАКСИМУМ(
| ЕСТЬNULL(ТаблицаТовары.АналитикаУчетаНоменклатуры.Назначение.НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)))
| КАК НаправлениеДеятельности,
| КОЛИЧЕСТВО(
| РАЗЛИЧНЫЕ ЕСТЬNULL(ТаблицаТовары.АналитикаУчетаНоменклатуры.Назначение.НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)))
| КАК КоличествоНаправленийДеятельности
| ИЗ
| Документ.ДвижениеПродукцииИМатериалов КАК ДанныеДокумента
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТаблицаТовары
| ПО ДанныеДокумента.Ссылка = ТаблицаТовары.Ссылка
| ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|
| СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами)
| ТОГДА &ОрганизацияПолучатель
| ИНАЧЕ ЕСТЬNULL(ТаблицаТовары.ВидЗапасов.Организация, &Организация)
| КОНЕЦ КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка) КАК Партнер,
| ЗНАЧЕНИЕ(Справочник.КлючиРеестраДокументов.ПустаяСсылка) КАК Контрагент,
| ВЫБОР
| КОГДА НЕ ТИПЗНАЧЕНИЯ(&Отправитель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &Получатель
| ИНАЧЕ &Отправитель
| КОНЕЦ КАК МестоХранения,
| ВЫБОР
| КОГДА ТИПЗНАЧЕНИЯ(&Получатель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &Получатель
| КОГДА &ПоступлениеВКладовую
| ТОГДА &ПодразделениеПолучателя
| КОГДА ТИПЗНАЧЕНИЯ(&Отправитель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &Отправитель
| КОГДА &ПередачаИзКладовой
| ТОГДА &ПодразделениеОтправителя
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
| КОНЕЦ КАК Подразделение,
| &Ответственный КАК Ответственный,
| &Автор КАК Автор,
| ВЫРАЗИТЬ(&Комментарий КАК Строка(100)) КАК Комментарий,
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК Валюта,
| 0 КАК Сумма,
| &Статус КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ИСТИНА КАК ДополнительнаяЗапись,
| ВЫБОР
| КОГДА НЕ ТИПЗНАЧЕНИЯ(&Отправитель) = ТИП(Справочник.СтруктураПредприятия)
| ТОГДА &ИнформацияПоОтправителю
| ИНАЧЕ &ИнформацияПоПолучателю
| КОНЕЦ КАК Дополнительно,
| &Период КАК ДатаПервичногоДокумента,
| &НомерНаПечать КАК НомерПервичногоДокумента,
| &Исправление КАК СторноИсправление,
| &СторнируемыйДокумент КАК СторнируемыйДокумент,
| &ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| МАКСИМУМ(
| ЕСТЬNULL(ТаблицаТовары.НазначениеПолучателя.НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)))
| КАК НаправлениеДеятельности,
| КОЛИЧЕСТВО(
| РАЗЛИЧНЫЕ ЕСТЬNULL(ТаблицаТовары.НазначениеПолучателя.НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)))
| КАК КоличествоНаправленийДеятельности
| ИЗ
| Документ.ДвижениеПродукцииИМатериалов КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДвижениеПродукцииИМатериалов.ВидыЗапасов КАК ТаблицаТовары
| ПО ДанныеДокумента.Ссылка = ТаблицаТовары.Ссылка
| ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|
| СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами)
| ТОГДА &ОрганизацияПолучатель
| ИНАЧЕ ЕСТЬNULL(ТаблицаТовары.ВидЗапасов.Организация, &Организация)
| КОНЕЦ
| ) КАК ТаблицаРеестрДокументов
|
|СГРУППИРОВАТЬ ПО
| ТаблицаРеестрДокументов.ТипСсылки,
| ТаблицаРеестрДокументов.Организация,
| ТаблицаРеестрДокументов.ХозяйственнаяОперация,
| ТаблицаРеестрДокументов.Партнер,
| ТаблицаРеестрДокументов.Контрагент,
| ВЫБОР
| КОГДА ТаблицаРеестрДокументов.КоличествоНаправленийДеятельности = 1
| ТОГДА ТаблицаРеестрДокументов.НаправлениеДеятельности
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ,
| ТаблицаРеестрДокументов.Подразделение,
| ТаблицаРеестрДокументов.МестоХранения,
| ТаблицаРеестрДокументов.ДатаДокументаИБ,
| ТаблицаРеестрДокументов.Ссылка";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтВидыЗапасов";
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
УстановитьПараметрыЗапросаКоэффициентыВалют(Запрос);
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.ВидЗапасов.Организация КАК Организация,
| СпрВидыЗапасов.РеализацияЗапасовДругойОрганизации КАК РеализацияЗапасовДругойОрганизации,
| СпрВидыЗапасов.ВидЗапасовВладельца КАК ВидЗапасовВладельца,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасовПолучателя КАК ВидЗапасовПолучателя,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| АналитикаБезНазначения.КлючАналитики КАК АналитикаУчетаНоменклатурыБезНазначения,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ВЫБОР
| КОГДА &АналитическийУчетПоГруппамПродукции
| ТОГДА ТаблицаВидыЗапасов.ГруппаПродукции
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ГруппыАналитическогоУчетаНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК ГруппаПродукции,
| ВЫБОР
| КОГДА &АналитическийУчетПоГруппамПродукции
| ТОГДА ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура.ГруппаАналитическогоУчета
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ГруппыАналитическогоУчетаНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК ГруппаПродукцииПолуфабриката,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаВидыЗапасов.НазначениеПолучателя.ВидДеятельностиНДС,ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)) <> ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| ТОГДА ВЫБОР КОГДА ТаблицаВидыЗапасов.НазначениеПолучателя.ВидДеятельностиНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт) ТОГДА
| ВЫБОР КОГДА ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура.КодТНВЭД.СырьевойТовар
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров)
| КОНЕЦ
| ИНАЧЕ ТаблицаВидыЗапасов.НазначениеПолучателя.ВидДеятельностиНДС КОНЕЦ
| ИНАЧЕ &НалогообложениеНДС
| КОНЕЦ КАК НалогообложениеНДС,
| АналитикаКомитента.КлючАналитики КАК АналитикаКомитента,
| ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(СпрВидыЗапасов.ВладелецТовара) = ТИП(Справочник.Организации)
| ТОГДА АналитикаРасчетовИнтеркампани.КлючАналитики
| ИНАЧЕ АналитикаРасчетовСКомитентом.КлючАналитики
| КОНЕЦ КАК АналитикаУчетаПоПартнерам,
| ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов КАК ТипЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасовПолучателя.ТипЗапасов КАК ТипЗапасовПолучателя,
| КлючиПолучателя.КлючАналитики КАК АналитикаУчетаНоменклатурыПолучателя,
| КлючиПолучателяБезНазначения.КлючАналитики КАК АналитикаУчетаНоменклатурыПолучателяБезНазначения,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.МатериалДавальца) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.МатериалыПринятыеВПереработку)
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ПолуфабрикатДавальца) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыПринятыеНаОтветхранение)
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыПринятыеНаКомиссию)
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ТоварНаХраненииСПравомПродажи) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаХраненииСПравомПродажи)
| КОГДА НЕ ЕСТЬNULL(ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.СкладскаяТерритория.ЦеховаяКладовая, ИСТИНА) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ПроизводственныеЗатраты)
| КОНЕЦ КАК РазделУчета,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.МатериалДавальца) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.МатериалыПринятыеВПереработку)
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ПолуфабрикатДавальца) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыПринятыеНаОтветхранение)
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыПринятыеНаКомиссию)
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.ТоварНаХраненииСПравомПродажи) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаХраненииСПравомПродажи)
| КОГДА НЕ ЕСТЬNULL(КлючиПолучателя.МестоХранения.ЦеховаяКладовая, ИСТИНА) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ПроизводственныеЗатраты)
| КОНЕЦ КАК РазделУчетаПолучателя,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА 0
| КОНЕЦ КАК Стоимость,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА 0
| КОНЕЦ КАК СтоимостьБезНДС,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА 0
| КОНЕЦ КАК СтоимостьРегл,
| ВЫБОР
| КОГДА &УправленческийУчетОрганизаций
| ТОГДА ЕСТЬNULL(ТаблицаВидыЗапасов.Сумма, 0) * &КоэффициентПересчетаВВалютуУпр
| ИНАЧЕ
| 0
| КОНЕЦ КАК СтоимостьУпр,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| НастройкиХозяйственныхОпераций.Ссылка КАК НастройкаХозяйственнойОперации
|
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.ВидыЗапасов КАК ТаблицаВидыЗапасов
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Справочник.ВидыЗапасов КАК СпрВидыЗапасов
| ПО
| ТаблицаВидыЗапасов.ВидЗапасов = СпрВидыЗапасов.Ссылка
|
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаБезНазначения
| ПО
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = АналитикаБезНазначения.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = АналитикаБезНазначения.Характеристика
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаБезНазначения.СтатьяКалькуляции
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаБезНазначения.Назначение
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия = АналитикаБезНазначения.Серия
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения = АналитикаБезНазначения.МестоХранения
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаКомитента
| ПО
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = АналитикаКомитента.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = АналитикаКомитента.Характеристика
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаКомитента.СтатьяКалькуляции
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаКомитента.Назначение
| И ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) = АналитикаКомитента.Серия
| И ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара = АналитикаКомитента.МестоХранения
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиПолучателя
| ПО
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = КлючиПолучателя.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = КлючиПолучателя.Характеристика
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = КлючиПолучателя.СтатьяКалькуляции
| И ТаблицаВидыЗапасов.НазначениеПолучателя = КлючиПолучателя.Назначение
| И ТаблицаВидыЗапасов.Серия = КлючиПолучателя.Серия
| И &Получатель = КлючиПолучателя.МестоХранения
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиПолучателяБезНазначения
| ПО
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = КлючиПолучателяБезНазначения.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = КлючиПолучателяБезНазначения.Характеристика
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = КлючиПолучателяБезНазначения.СтатьяКалькуляции
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = КлючиПолучателяБезНазначения.Назначение
| И ТаблицаВидыЗапасов.Серия = КлючиПолучателяБезНазначения.Серия
| И &Получатель = КлючиПолучателяБезНазначения.МестоХранения
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетовСКомитентом
| ПО АналитикаРасчетовСКомитентом.Организация = СпрВидыЗапасов.Организация
| И АналитикаРасчетовСКомитентом.Партнер = СпрВидыЗапасов.ВладелецТовара
| И АналитикаРасчетовСКомитентом.Контрагент = СпрВидыЗапасов.Контрагент
| И АналитикаРасчетовСКомитентом.Договор = СпрВидыЗапасов.Договор
| И АналитикаРасчетовСКомитентом.НаправлениеДеятельности = ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетовИнтеркампани
| ПО АналитикаРасчетовИнтеркампани.Организация = СпрВидыЗапасов.Организация
| И АналитикаРасчетовИнтеркампани.Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.НашеПредприятие)
| И АналитикаРасчетовИнтеркампани.Контрагент = СпрВидыЗапасов.Контрагент
| И АналитикаРасчетовИнтеркампани.Договор = СпрВидыЗапасов.Договор
| И АналитикаРасчетовИнтеркампани.НаправлениеДеятельности = ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НастройкиХозяйственныхОпераций КАК НастройкиХозяйственныхОпераций
| ПО &ХозяйственнаяОперация = НастройкиХозяйственныхОпераций.ХозяйственнаяОперация
|
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура УстановитьПараметрыЗапросаИнформацияПоОтправителюИПолучателю(Запрос)
Если Запрос = Неопределено
Или (Запрос.Параметры.Свойство("ИнформацияПоОтправителю")
И Запрос.Параметры.Свойство("ИнформацияПоПолучателю")) Тогда
Возврат;
КонецЕсли;
Если Запрос.Параметры.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или Запрос.Параметры.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой Тогда
ИнформацияПоОтправителю = ?(ТипЗнч( Запрос.Параметры.Отправитель) = Тип("СправочникСсылка.СтруктураПредприятия"),
"ru = 'Передача продукции из подразделения ""%1""'",
"ru = 'Передача продукции из кладовой ""%1""'");
ИнформацияПоПолучателю = "ru = 'Передача продукции на склад ""%1""'";
ИначеЕсли Запрос.Параметры.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Запрос.Параметры.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ИнформацияПоОтправителю = "ru = 'Передача материалов со склада ""%1""'";
ИнформацияПоПолучателю = ?(ТипЗнч( Запрос.Параметры.Получатель) = Тип("СправочникСсылка.СтруктураПредприятия"),
"ru = 'Передача материалов в подразделение ""%1""'",
"ru = 'Передача материалов в кладовую ""%1""'");
ИначеЕсли Запрос.Параметры.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства
Или Запрос.Параметры.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой Тогда
ИнформацияПоОтправителю = ?(ТипЗнч( Запрос.Параметры.Отправитель) = Тип("СправочникСсылка.СтруктураПредприятия"),
"ru = 'Возврат материалов из подразделения ""%1""'",
"ru = 'Возврат материалов из кладовой ""%1""'");
ИнформацияПоПолучателю = "ru = 'Возврат материалов на склад ""%1""'";
ИначеЕсли Запрос.Параметры.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов
Или Запрос.Параметры.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами Тогда
ИнформацияПоОтправителю = "ru = 'Передача из кладовой ""%1""'";
ИнформацияПоПолучателю = "ru = 'Передача в кладовую ""%1""'";
Иначе
ИнформацияПоОтправителю = "%1";
ИнформацияПоПолучателю = "%1";
КонецЕсли;
ИнформацияПоОтправителю = СтрШаблон(ИнформацияПоОтправителю, Запрос.Параметры.ОтправительПредставление);
ИнформацияПоПолучателю = СтрШаблон(ИнформацияПоПолучателю, Запрос.Параметры.ПолучательПредставление);
Запрос.УстановитьПараметр("ИнформацияПоОтправителю", ИнформацияПоОтправителю);
Запрос.УстановитьПараметр("ИнформацияПоПолучателю", ИнформацияПоПолучателю);
КонецПроцедуры
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Ссылка.Отправитель КАК Склад,
| ТабЧасть.НазначениеОтправителя КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.КодСтроки = 0
| И ТИПЗНАЧЕНИЯ(ТабЧасть.Ссылка.Отправитель) = ТИП(Справочник.Склады)";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Ссылка.Получатель КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.Ссылка.ПоРаспоряжениям И ТабЧасть.КодСтроки <> 0 КАК ПоГрафику,
| ТабЧасть.Распоряжение КАК РаспоряжениеВГрафике
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатов),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами))
| И ТабЧасть.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДвиженияПродукцииИМатериалов.Принято)
|
| И (НЕ ТабЧасть.Ссылка.Получатель.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ ТабЧасть.Ссылка.Получатель.ДатаНачалаОрдернойСхемыПриПоступлении > ТабЧасть.Ссылка.Дата
| ИЛИ ТабЧасть.Назначение.ДвиженияПоСкладскимРегистрам = ЛОЖЬ)";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Ссылка.Получатель КАК Склад,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| -ТабЧасть.Количество КАК Количество,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатов),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами))
| И ТабЧасть.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДвиженияПродукцииИМатериалов.Принято)
| И ТабЧасть.Назначение.ДвиженияПоСкладскимРегистрам = ЛОЖЬ
| И ТабЧасть.Ссылка.Ссылка.Получатель.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Ссылка.Ссылка.Получатель.ДатаНачалаОрдернойСхемыПриПоступлении <= ТабЧасть.Ссылка.Дата";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Неопределено, Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Ссылка.Получатель КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Назначение.ДвиженияПоСкладскимРегистрам = ЛОЖЬ ТОГДА
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИНАЧЕ
| ТабЧасть.Назначение
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
|
| ВЫБОР КОГДА ТабЧасть.Ссылка.ПоРаспоряжениям
| И ТабЧасть.Ссылка.ВариантПриемкиТоваров
| <> ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным) ТОГДА
| ТабЧасть.Распоряжение
| ИНАЧЕ
| ВЫБОР
| КОГДА ТабЧасть.Ссылка.ИсправляемыйДокумент = ЗНАЧЕНИЕ(Документ.ДвижениеПродукцииИМатериалов.ПустаяСсылка)
| ТОГДА ТабЧасть.Ссылка
| ИНАЧЕ ТабЧасть.Ссылка.ИсправляемыйДокумент
| КОНЕЦ
| КОНЕЦ КАК Заказ,
|
| ВЫБОР КОГДА ТабЧасть.Ссылка.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1) ТОГДА
| ТабЧасть.Ссылка.ДатаПоступления
| ИНАЧЕ
| ТабЧасть.Ссылка.Дата
| КОНЕЦ КАК ДатаПоступления,
|
| ИСТИНА КАК ДоступенДляРасхода,
| ТабЧасть.Ссылка.ПоРаспоряжениям И ТабЧасть.КодСтроки <> 0 КАК ПоГрафику,
| ТабЧасть.Распоряжение КАК РаспоряжениеВГрафике,
| ТабЧасть.Количество КАК КоличествоВГрафике
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатов),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами))
| И (ТабЧасть.Ссылка.Получатель.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТабЧасть.Ссылка.Получатель.ДатаНачалаОрдернойСхемыПриПоступлении <= ТабЧасть.Ссылка.Дата
| И (ТабЧасть.Ссылка.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)
| ИЛИ НЕ ТабЧасть.Ссылка.ПоРаспоряжениям
| ИЛИ ТабЧасть.КодСтроки = 0)
| ИЛИ ТабЧасть.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДвиженияПродукцииИМатериалов.Отгружено)
| И(НЕ ТабЧасть.Ссылка.ПоРаспоряжениям
| ИЛИ ТабЧасть.КодСтроки = 0))";
РаспределениеЗапасовДвижения.ЗапланироватьПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецПроцедуры
#Область ПартионныйУчет
Функция ОписаниеРегистровУчетаЗатратИСебестоимости(Документ) Экспорт
ОписаниеРегистров = Новый Массив;
ОписаниеРегистров.Добавить(Метаданные.РегистрыНакопления.СебестоимостьТоваров);
Возврат ОписаниеРегистров;
КонецФункции
Функция УстановитьДополнительныеПараметрыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено) Экспорт
ДополнительныеПараметры = Новый Массив;
Если Запрос <> Неопределено Тогда
КонецЕсли;
Возврат ДополнительныеПараметры;
КонецФункции
Функция СформироватьДополнительныеТаблицыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено, ТекстыЗапроса = Неопределено) Экспорт
ДополнительныеТаблицы = Новый Массив;
ДополнительныеТаблицы.Добавить("ВтВидыЗапасов");
Если Запрос <> Неопределено Тогда
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса(ДополнительныеТаблицы[0], ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
КонецЕсли;
Возврат ДополнительныеТаблицы;
КонецФункции
Функция ОписаниеОперацийУчетаСебестоимости(Документ) Экспорт
ОписаниеОпераций = Новый Массив;
#Область Перемещение_Товар
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ТаблицаВидыЗапасов.Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК ВидДеятельностиНДС,
| ТаблицаДокумента.НалогообложениеНДС КАК ВидДеятельностиНДСДокумента,
|
| ВЫБОР
| КОГДА ТаблицаДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами)
| ТОГДА ТаблицаДокумента.ОрганизацияПолучатель
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК КорОрганизация,
| НЕОПРЕДЕЛЕНО КАК КорПартия,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыПолучателя КАК КорАналитикаУчетаНоменклатуры,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| И ТаблицаВидыЗапасов.ТипЗапасовПолучателя = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
| ИЛИ ТаблицаДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами)
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасовПолучателя
| ИНАЧЕ ТаблицаВидыЗапасов.ВидЗапасов
| КОНЕЦ КАК КорВидЗапасов,
|
| НЕОПРЕДЕЛЕНО КАК Сделка,
| &ПодразделениеОтправителя КАК Подразделение,
| ТаблицаДокумента.Ответственный КАК Менеджер,
| ВЫБОР
| КОГДА НЕ ТаблицаВидыЗапасов.ГруппаПродукции = ЗНАЧЕНИЕ(Справочник.ГруппыАналитическогоУчетаНоменклатуры.ПустаяСсылка)
| И ТаблицаДокумента.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатов),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами))
| ТОГДА ТаблицаВидыЗапасов.ГруппаПродукции
| КОГДА НЕ ТаблицаВидыЗапасов.ГруппаПродукцииПолуфабриката = ЗНАЧЕНИЕ(Справочник.ГруппыАналитическогоУчетаНоменклатуры.ПустаяСсылка)
| И ТаблицаДокумента.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой))
| ТОГДА ТаблицаВидыЗапасов.ГруппаПродукцииПолуфабриката
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ГруппаПродукции,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.Стоимость КАК Стоимость,
| ТаблицаВидыЗапасов.СтоимостьБезНДС КАК СтоимостьБезНДС,
| ТаблицаВидыЗапасов.СтоимостьРегл КАК СтоимостьРегл,
| ТаблицаВидыЗапасов.СтоимостьУпр КАК СтоимостьУпр,
| НЕОПРЕДЕЛЕНО КАК ИдентификаторСтроки,
|
| ТаблицаДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| ТаблицаВидыЗапасов.НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов КАК ТаблицаДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И ТаблицаДокумента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДвиженияПродукцииИМатериалов.Принято)
|";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.Перемещение,
ТекстЗапроса);
#КонецОбласти
Возврат ОписаниеОпераций;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область ПроведениеРегламентированныйУчет
Функция ТекстОтраженияВРеглУчете() Экспорт
Возврат ДвижениеПродукцииИМатериаловЛокализация.ТекстОтраженияВРеглУчете();
КонецФункции
Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт
Возврат ДвижениеПродукцииИМатериаловЛокализация.ТекстЗапросаВТОтраженияВРеглУчете();
КонецФункции
#КонецОбласти
#Область Печать
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Накладная") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"Накладная",
НСтр("ru = 'Выпуск продукции'"),
СформироватьПечатнуюФормуНакладной(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПередачаМатериаловВПроизводство") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ПередачаМатериаловВПроизводство",
НСтр("ru = 'Передача материалов в производство'"),
ПечатьПередачаМатериаловВПроизводство(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "НакладнаяНаВозврат") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"НакладнаяНаВозврат",
НСтр("ru = 'Оприходование товаров'"),
СформироватьПечатнуюФормуВозврат(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "НакладнаяНаПеремещение") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"НакладнаяНаПеремещение",
НСтр("ru = 'Накладная на перемещение'"),
СформироватьПечатнуюФормуНакладнойНаПеремещениеПолуфабрикатов(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
ДвижениеПродукцииИМатериаловЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры
Функция СформироватьПечатнуюФормуНакладной(МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ДвижениеПродукцииИМатериалов.ПФ_MXL_Накладная");
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
ИмяКолонкиКодов = КолонкаКодов.ИмяКолонки;
ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка,
| ДанныеДокумента.Номер,
| ДанныеДокумента.Дата,
| ДанныеДокумента.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| ДанныеДокумента.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| ДанныеДокумента.Исправление КАК Исправление,
| ДанныеДокумента.Организация,
| ДанныеДокумента.Организация.Префикс КАК Префикс,
| ДанныеДокумента.Отправитель.Представление КАК ПредставлениеПодразделения
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка В(&МассивДокументов)
| И ДанныеДокумента.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой))
|
|УПОРЯДОЧИТЬ ПО
| ДанныеДокумента.Ссылка
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаТовары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ТаблицаТовары.Ссылка.Получатель КАК Склад,
| ТаблицаТовары.Ссылка.Отправитель КАК Подразделение,
| ТаблицаТовары.Упаковка КАК Упаковка,
| ТаблицаТовары.КоличествоУпаковок КАК Количество,
| ТаблицаТовары.Серия КАК Серия
|
|ПОМЕСТИТЬ ВтТовары
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТаблицаТовары
|
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивДокументов)
| И ТаблицаТовары.Ссылка.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой))
| И НЕ ТаблицаТовары.СтатусУказанияСерий В (4, 6, 8)
| И ТаблицаТовары.Номенклатура.ТипНоменклатуры В (
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаСерии.Ссылка,
| МАКСИМУМ(ТаблицаТовары.НомерСтроки),
| ТаблицаСерии.Номенклатура,
| ТаблицаСерии.Характеристика,
| ТаблицаСерии.Назначение,
| ТаблицаСерии.Ссылка.Получатель,
| ТаблицаСерии.Ссылка.Отправитель,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка),
| ТаблицаСерии.Количество,
| ТаблицаСерии.Серия
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Серии КАК ТаблицаСерии
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТаблицаТовары
| ПО ТаблицаСерии.Ссылка = ТаблицаТовары.Ссылка
| И ТаблицаСерии.Номенклатура = ТаблицаТовары.Номенклатура
| И ТаблицаСерии.Характеристика = ТаблицаТовары.Характеристика
| И ТаблицаСерии.Назначение = ТаблицаТовары.Назначение
|ГДЕ
| ТаблицаСерии.Ссылка В(&МассивДокументов)
| И ТаблицаСерии.Ссылка.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой))
| И ТаблицаСерии.Количество <> 0
| И ТаблицаТовары.Номенклатура.ТипНоменклатуры В (
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
|
|СГРУППИРОВАТЬ ПО
| ТаблицаСерии.Ссылка,
| ТаблицаСерии.Номенклатура,
| ТаблицаСерии.Характеристика,
| ТаблицаСерии.Назначение,
| ТаблицаСерии.Серия,
| ТаблицаСерии.Количество
|
|ИМЕЮЩИЕ
| МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) В (4, 6, 8)
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Номенклатура." + ?(ИмяКолонкиКодов = "", "Код", ИмяКолонкиКодов) + " КАК КодАртикул,
| ТаблицаТовары.Номенклатура.НаименованиеПолное КАК Номенклатура,
| ТаблицаТовары.Номенклатура.НаименованиеПолное КАК ТоварНаименование,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Характеристика.Наименование КАК ХарактеристикаНаименование,
| ТаблицаТовары.Серия.Наименование КАК СерияНаименование,
| ВЫБОР
| КОГДА ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ТаблицаТовары.Номенклатура.ЕдиницаИзмерения.Наименование
| ИНАЧЕ ТаблицаТовары.Упаковка.Наименование
| КОНЕЦ КАК ЕдиницаИзмерения,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Ссылка.ХозяйственнаяОперация КАК НаправлениеВыпуска,
| ТаблицаТовары.Ссылка.Получатель.Представление КАК ПредставлениеПолучателя,
| ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПродукцииИзКладовой))
| ТОГДА &ТипПолучателяСклад
| ИНАЧЕ &ТипПолучателяПодразделение
| КОНЕЦ КАК ТипПолучателя
|ИЗ
| ВтТовары КАК ТаблицаТовары
|
|УПОРЯДОЧИТЬ ПО
| ТаблицаТовары.Ссылка,
| ТаблицаТовары.НомерСтроки
|ИТОГИ
| МАКСИМУМ(ТипПолучателя)
|ПО
| Ссылка,
| ПредставлениеПолучателя";
Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
Запрос.УстановитьПараметр("ТипПолучателяСклад", НСтр("ru = 'Склад'", ОбщегоНазначения.КодОсновногоЯзыка()));
Запрос.УстановитьПараметр("ТипПолучателяПодразделение", НСтр("ru = 'Подразделение'", ОбщегоНазначения.КодОсновногоЯзыка()));
Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ПолеСлева = 5;
ТабличныйДокумент.ПолеСправа = 5;
ТабличныйДокумент.РазмерКолонтитулаСверху = 0;
ТабличныйДокумент.РазмерКолонтитулаСнизу = 0;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВыпускПродукции_Накладная";
МассивРезультатов = Запрос.ВыполнитьПакет();
ДанныеПечати = МассивРезультатов[0].Выбрать();
ВыборкаПоДокументам = МассивРезультатов[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ПервыйДокумент = Истина;
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Пока ДанныеПечати.Следующий() Цикл
СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
ВыборкаПоПолучателям = ВыборкаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Если ВыборкаПоПолучателям.Количество() = 0 Тогда
ТекстСообщения = НСтр("ru = 'В документе ""%1"" отсутствуют данные о выпускаемой продукции.'");
ТекстСообщения = СтрШаблон(ТекстСообщения, ДанныеПечати.Ссылка);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
Пока ВыборкаПоПолучателям.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
НомерСтраницы = 1;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, ДанныеПечати.Ссылка);
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ОбластьМакета.Параметры.ПредставлениеПолучателя = ВыборкаПоПолучателям.ПредставлениеПолучателя;
ОбластьМакета.Параметры.ТипПолучателя = ВыборкаПоПолучателям.ТипПолучателя;
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить(
"ТекстЗаголовка",
ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(
ДанныеПечати,
НСтр("ru='Выпуск продукции'", ОбщегоНазначения.КодОсновногоЯзыка())));
ОбластьМакета.Параметры.Заполнить(ПараметрыОбласти);
СведенияОбОрганизации = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ?(ДанныеПечати.Исправление, ДанныеПечати.ДатаИсправляемогоДокумента, ДанныеПечати.Дата));
ОбластьМакета.Параметры.ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации);
ТабличныйДокумент.Вывести(ОбластьМакета);
МассивВыводимыхОбластей = Новый Массив;
ВыводитьДопКолонку = ИмяКолонкиКодов <> "";
ОбластьЗаголовокТаблицы = Макет.ПолучитьОбласть(?(ВыводитьДопКолонку, "ЗаголовокТабСКодом", "ЗаголовокТаб"));
ОбластьМакета = Макет.ПолучитьОбласть(?(ВыводитьДопКолонку, "СтрокаСКодом", "Строка"));
ОбластьПодвала = Макет.ПолучитьОбласть("Подвал");
Если ВыводитьДопКолонку Тогда
ОбластьЗаголовокТаблицы.Параметры.Колонка = ПредставлениеКолонкиКодов;
КонецЕсли;
СтрокаТовары = ВыборкаПоПолучателям.Выбрать();
КоличествоСтрок = СтрокаТовары.Количество();
НомерСтроки = 0;
ПараметрыСтрокиТовары = Новый Структура("НомерСтроки,ТоварНаименование");
Пока СтрокаТовары.Следующий() Цикл
НомерСтроки = НомерСтроки + 1;
ПараметрыСтрокиТовары.НомерСтроки = НомерСтроки;
ПараметрыСтрокиТовары.ТоварНаименование = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
СтрокаТовары.ТоварНаименование,
СтрокаТовары.ХарактеристикаНаименование,,
СтрокаТовары.СерияНаименование,
ДопПараметрыПредставлениеНоменклатуры);
ОбластьМакета.Параметры.Заполнить(СтрокаТовары);
ОбластьМакета.Параметры.Заполнить(ПараметрыСтрокиТовары);
Если НомерСтроки = 1 Тогда
ОбластьЗаголовокТаблицы.Параметры.НомерСтраницы = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Страница %1'", ОбщегоНазначения.КодОсновногоЯзыка()), НомерСтраницы);
ТабличныйДокумент.Вывести(ОбластьЗаголовокТаблицы);
Иначе
МассивВыводимыхОбластей.Очистить();
МассивВыводимыхОбластей.Добавить(ОбластьМакета);
Если НомерСтроки = КоличествоСтрок Тогда
МассивВыводимыхОбластей.Добавить(ОбластьПодвала);
КонецЕсли;
Если НомерСтроки <> 1 И Не ТабличныйДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
НомерСтраницы = НомерСтраницы + 1;
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ОбластьЗаголовокТаблицы.Параметры.НомерСтраницы = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Страница %1'", ОбщегоНазначения.КодОсновногоЯзыка()), НомерСтраницы);
ТабличныйДокумент.Вывести(ОбластьЗаголовокТаблицы);
КонецЕсли;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЦикла;
ОбластьПодвала.Параметры.ИтоговаяСтрока = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Всего наименований %1'", ОбщегоНазначения.КодОсновногоЯзыка()), СтрокаТовары.Количество());
ТабличныйДокумент.Вывести(ОбластьПодвала);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
КонецЦикла;
КонецЦикла;
Возврат ТабличныйДокумент;
КонецФункции
Функция СформироватьПечатнуюФормуВозврат(МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
ДопКолонка = КолонкаКодов.ИмяКолонки;
ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
Если ЗначениеЗаполнено(ДопКолонка) Тогда
ВыводитьДопКолонку = Истина;
Иначе
ВыводитьДопКолонку = Ложь;
ДопКолонка = "Код";
КонецЕсли;
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Номер КАК Номер,
| ТаблицаДокумента.Дата КАК Дата,
| ТаблицаДокумента.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| ТаблицаДокумента.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| ТаблицаДокумента.Получатель КАК Склад,
| ТаблицаДокумента.Отправитель КАК Подразделение,
| ТаблицаДокумента.Организация КАК Организация,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокумента.Получатель) КАК СкладПредставление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокумента.Отправитель) КАК ПодразделениеПредставление
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка В(&МассивОбъектов)
| И ТаблицаДокумента.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой))
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Номенклатура.Код КАК ДопКолонка,
| ТаблицаТовары.Номенклатура.НаименованиеПолное КАК НоменклатураПредставление,
| ТаблицаТовары.Характеристика.НаименованиеПолное КАК ХарактеристикаПредставление,
| &ТекстЗапросаЕдиницаИзмеренияПредставление КАК ЕдиницаИзмеренияПредставление,
| ТаблицаТовары.КоличествоУпаковок КАК КоличествоУпаковок,
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.Количество КАК Количество,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерий = 14
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ТаблицаТовары.Серия.Представление
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивОбъектов)
| И ТаблицаТовары.Ссылка.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой))
| И НЕ ТаблицаТовары.СтатусУказанияСерий В (4, 6, 8)
| И ТаблицаТовары.Ссылка В(&МассивОбъектов)
| И ТаблицаТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Номенклатура.Код,
| ТаблицаТовары.Номенклатура.НаименованиеПолное,
| ТаблицаТовары.Характеристика.НаименованиеПолное,
| ПРЕДСТАВЛЕНИЕ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения),
| МАКСИМУМ(ТаблицаСерии.Количество),
| ТаблицаТовары.Ссылка,
| МАКСИМУМ(ТаблицаСерии.Количество),
| ТаблицаСерии.Серия,
| ТаблицаСерии.Серия.Представление
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ДвижениеПродукцииИМатериалов.Серии КАК ТаблицаСерии
| ПО ТаблицаТовары.Номенклатура = ТаблицаСерии.Номенклатура
| И ТаблицаТовары.Характеристика = ТаблицаСерии.Характеристика
| И ТаблицаТовары.Назначение = ТаблицаСерии.Назначение
| И ТаблицаТовары.Ссылка = ТаблицаСерии.Ссылка
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивОбъектов)
| И ТаблицаТовары.Ссылка.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратМатериаловИзКладовой))
| И ТаблицаТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар), ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Номенклатура.Код,
| ТаблицаТовары.Номенклатура.НаименованиеПолное,
| ТаблицаТовары.Характеристика.НаименованиеПолное,
| ТаблицаСерии.НомерСтроки,
| ТаблицаТовары.Ссылка,
| ТаблицаСерии.Серия,
| ТаблицаСерии.Серия.Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения)
|
|ИМЕЮЩИЕ
| МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) В (4, 6, 8)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|ИТОГИ ПО
| Ссылка";
Если ВыводитьДопКолонку И ДопКолонка <> "Код" Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Номенклатура.Код", "Номенклатура." + ДопКолонка);
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаЕдиницаИзмеренияПредставление",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
"Наименование", "ТаблицаТовары.Упаковка", "ТаблицаТовары.Номенклатура"));
Запрос.Текст = ТекстЗапроса;
РеквизитыДокумента = Новый Структура("Номер, Дата, НомерИсправляемогоДокумента, ДатаИсправляемогоДокумента");
СинонимДокумента = НСтр("ru='Возврат из производства'", ОбщегоНазначения.КодОсновногоЯзыка());
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВозвратМатериаловИзПроизводства_ВозвратИзПроизводства";
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ДвижениеПродукцииИМатериалов.ПФ_MXL_ВозвратМатериаловИзПроизводства");
Если ПолучитьФункциональнуюОпцию("ИспользоватьПодразделения") Тогда
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Иначе
ОбластьЗаголовок = Макет.ПолучитьОбласть("ЗаголовокБезПодразделения");
КонецЕсли;
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Если ВыводитьДопКолонку Тогда
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьШапкаТаблицы.Параметры.ДопКолонка = ПредставлениеКолонкиКодов;
Иначе
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицыБезДопКолонки");
ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаБезДопКолонки");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицыБезДопКолонки");
КонецЕсли;
ОбластьПодписи = Макет.ПолучитьОбласть("Подписи");
ОбластьИтоги = Макет.ПолучитьОбласть("Итоги");
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
РезультатыЗапроса = Запрос.ВыполнитьПакет();
ВыборкаДокументы = РезультатыЗапроса[0].Выбрать();
ВыборкаПоТабличнымЧастям = РезультатыЗапроса[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ПервыйДокумент = Истина;
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Пока ВыборкаДокументы.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаДокументы);
ОбластьЗаголовок.Параметры.Заполнить(ВыборкаДокументы);
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить(
"ТекстЗаголовка",
ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(
РеквизитыДокумента,
СинонимДокумента));
НаименованияНаДату = ОрганизацииПовтИсп.НаименованияНаДату(ВыборкаДокументы.Организация, ВыборкаДокументы.Дата);
ПараметрыОбласти.Вставить("ОрганизацияПредставление", НаименованияНаДату.НаименованиеСокращенное);
ОбластьЗаголовок.Параметры.Заполнить(ПараметрыОбласти);
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабДокумент, Макет, ОбластьЗаголовок, ВыборкаДокументы.Ссылка);
ТабДокумент.Вывести(ОбластьЗаголовок);
ТабДокумент.Вывести(ОбластьШапкаТаблицы);
ВсегоНаименований = 0;
ВыборкаПоТабличнымЧастям.НайтиСледующий(Новый Структура("Ссылка",ВыборкаДокументы.Ссылка));
ВыборкаПоСтрокам = ВыборкаПоТабличнымЧастям.Выбрать();
Пока ВыборкаПоСтрокам.Следующий() Цикл
ОбластьСтрока.Параметры.ТоварПредставление = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаПоСтрокам.НоменклатураПредставление,
ВыборкаПоСтрокам.ХарактеристикаПредставление,
,
ВыборкаПоСтрокам.СерияПредставление,
ДопПараметрыПредставлениеНоменклатуры);
ОбластьСтрока.Параметры.Заполнить(ВыборкаПоСтрокам);
ВсегоНаименований = ВсегоНаименований + 1;
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить("НомерСтроки", ВсегоНаименований);
ОбластьСтрока.Параметры.Заполнить(ПараметрыОбласти);
ТабДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
ТабДокумент.Вывести(ОбластьПодвалТаблицы);
ТекстИтоговойСтроки = НСтр("ru = 'Всего наименований %ВсегоНаименований%'", ОбщегоНазначения.КодОсновногоЯзыка());
ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%ВсегоНаименований%", ВсегоНаименований);
ОбластьИтоги.Параметры.ИтоговаяСтрока = ТекстИтоговойСтроки;
ТабДокумент.Вывести(ОбластьИтоги);
ТабДокумент.Вывести(ОбластьПодписи);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокументы.Ссылка);
КонецЦикла;
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабДокумент;
КонецФункции
Функция СформироватьПечатнуюФормуНакладнойНаПеремещениеПолуфабрикатов(МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
Колонка = КолонкаКодов.ИмяКолонки;
ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
ВыводитьКоды = ЗначениеЗаполнено(Колонка);
ИспользоватьУпаковкиНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеПолуфабрикатов_Накладная";
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ДвижениеПродукцииИМатериалов.ПФ_MXL_НакладнаяНаПеремещение");
ОбластьЗаголовкаПеремещение = Макет.ПолучитьОбласть("ЗаголовокПеремещение");
ОбластьЗаголовкаВнутренняяПередача = Макет.ПолучитьОбласть("ЗаголовокВнутренняяПередача");
Если ВыводитьКоды Тогда
ОбластьКодовШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
ОбластьКодовШапка.Параметры.ИмяКолонкиКодов = ПредставлениеКолонкиКодов;
ОбластьКодовСтрока = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
ОбластьКодовПодвал = Макет.ПолучитьОбласть("Подвал|КолонкаКодов");
Иначе
ОбластьТовары = Макет.Область("Товар");
ОбластьТовары.ШиринаКолонки = ОбластьТовары.ШиринаКолонки + Макет.Область("КолонкаКодов").ШиринаКолонки;
КонецЕсли;
Если ИспользоватьУпаковкиНоменклатуры Тогда
ОбластьУпаковокШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаУпаковок");
ОбластьУпаковокСтрока = Макет.ПолучитьОбласть("Строка|КолонкаУпаковок");
ОбластьУпаковокПодвал = Макет.ПолучитьОбласть("Подвал|КолонкаУпаковок");
Иначе
ОбластьТовары = Макет.Область("Товар");
ОбластьТовары.ШиринаКолонки = ОбластьТовары.ШиринаКолонки
+ Макет.Область("КолонкаУпаковокКоличество").ШиринаКолонки
+ Макет.Область("КолонкаУпаковокПредставление").ШиринаКолонки;
КонецЕсли;
ОбластьНомераШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьДанныхШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|Товар");
ОбластьКонецСтрокиШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|КонецСтроки");
ОбластьНомераСтрока = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьДанныхСтрока = Макет.ПолучитьОбласть("Строка|Товар");
ОбластьКонецСтрокиСтрока = Макет.ПолучитьОбласть("Строка|КонецСтроки");
ОбластьНомераПодвал = Макет.ПолучитьОбласть("Подвал|НомерСтроки");
ОбластьДанныхПодвал = Макет.ПолучитьОбласть("Подвал|Товар");
ОбластьКонецСтрокиПодвал = Макет.ПолучитьОбласть("Подвал|КонецСтроки");
ОбластьПодписей = Макет.ПолучитьОбласть("Подписи");
ЗапросПоШапке = Новый Запрос;
ЗапросПоШапке.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Номер КАК Номер,
| ТаблицаДокумента.Дата КАК Дата,
| ТаблицаДокумента.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| ТаблицаДокумента.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| ТаблицаДокумента.Организация.Префикс КАК Префикс,
| ТаблицаДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаДокумента.Отправитель.Представление КАК ОтправительПредставление,
| ТаблицаДокумента.Получатель.Представление КАК ПолучательПредставление,
| ВЫБОР КОГДА ТаблицаДокумента.Организация.НаименованиеСокращенное = """" ТОГДА
| ТаблицаДокумента.Организация.Наименование
| ИНАЧЕ
| ТаблицаДокумента.Организация.НаименованиеСокращенное
| КОНЕЦ КАК ОрганизацияПредставление,
| ВЫБОР КОГДА ТаблицаДокумента.ОрганизацияПолучатель.НаименованиеСокращенное = """" ТОГДА
| ТаблицаДокумента.ОрганизацияПолучатель.Наименование
| ИНАЧЕ
| ТаблицаДокумента.ОрганизацияПолучатель.НаименованиеСокращенное
| КОНЕЦ КАК ОрганизацияПолучательПредставление,
| ВЫБОР КОГДА ТаблицаДокумента.Отправитель.ИспользоватьСерииНоменклатуры
| ИЛИ ТаблицаДокумента.Получатель.ИспользоватьСерииНоменклатуры ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ИспользоватьСерииНоменклатуры
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов КАК ТаблицаДокумента
|ГДЕ
| ТаблицаДокумента.Ссылка В(&МассивДокументов)
| И ТаблицаДокумента.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатов),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами))
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Дата
|ИТОГИ ПО
| ИспользоватьСерииНоменклатуры
|";
ЗапросПоШапке.УстановитьПараметр("МассивДокументов", МассивОбъектов);
ДеревоОбъектов = ЗапросПоШапке.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
ПерваяСтрокаОбъектов = Истина;
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Для Каждого ИспользованиеСерий Из ДеревоОбъектов.Строки Цикл
ЗапросПоТоварам = Новый Запрос;
ЗапросПоТоварам.УстановитьПараметр("МассивОбъектов", ИспользованиеСерий.Строки.ВыгрузитьКолонку("Ссылка"));
Если ИспользованиеСерий.ИспользоватьСерииНоменклатуры Тогда
ТекстЗапросаПоТоварам =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерий В(10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ТаблицаТовары.Упаковка КАК Упаковка,
| ТаблицаТовары.КоличествоУпаковок КАК КоличествоУпаковок,
| ТаблицаТовары.Количество КАК Количество
|ПОМЕСТИТЬ ТаблицаТоваров
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивОбъектов)
| И НЕ ТаблицаТовары.СтатусУказанияСерий В (2, 4, 6, 8)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаСерии.Ссылка,
| МИНИМУМ(ТаблицаТовары.НомерСтроки),
| ТаблицаСерии.Номенклатура,
| ТаблицаСерии.Характеристика,
| ТаблицаСерии.Серия,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка),
| ТаблицаСерии.Количество,
| ТаблицаСерии.Количество
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Серии КАК ТаблицаСерии
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТаблицаТовары
| ПО ТаблицаСерии.Ссылка = ТаблицаТовары.Ссылка
| И ТаблицаСерии.Номенклатура = ТаблицаТовары.Номенклатура
| И ТаблицаСерии.Характеристика = ТаблицаТовары.Характеристика
|ГДЕ
| ТаблицаСерии.Ссылка В(&МассивОбъектов)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаСерии.Ссылка,
| ТаблицаСерии.Номенклатура,
| ТаблицаСерии.Характеристика,
| ТаблицаСерии.Серия,
| ТаблицаСерии.Количество,
| ТаблицаСерии.Количество
|
|ИМЕЮЩИЕ
| МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) В (2, 4, 6, 8)
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.Ссылка,
| МИНИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
| ТОГДА ТаблицаТоваров.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ ТаблицаТоваров.Упаковка
| КОНЕЦ КАК Упаковка,
| СУММА(ТаблицаТоваров.КоличествоУпаковок) КАК КоличествоУпаковок,
| СУММА(ТаблицаТоваров.Количество) КАК Количество,
| ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
| ТОГДА NULL
| ИНАЧЕ ТаблицаТоваров.Серия
| КОНЕЦ КАК Серия
|ПОМЕСТИТЬ СуммированнаяТаблицаТоваров
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.Ссылка,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
| ТОГДА ТаблицаТоваров.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ ТаблицаТоваров.Упаковка
| КОНЕЦ,
| ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
| ТОГДА NULL
| ИНАЧЕ ТаблицаТоваров.Серия
| КОНЕЦ
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Товар,
| ТаблицаТовары.Номенклатура.НаименованиеПолное КАК ТоварНаименование,
| ТаблицаТовары.Номенклатура.Код КАК Код,
| ТаблицаТовары.Номенклатура.Артикул КАК Артикул,
| ТаблицаТовары.Характеристика.НаименованиеПолное КАК ХарактеристикаНаименование,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ВЫБОР
| КОГДА ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Упаковка)
| КОНЕЦ КАК ПредставлениеЕдиницыИзмеренияУпаковки,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
| ТаблицаТовары.КоличествоУпаковок КАК КоличествоУпаковок,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий КАК НастройкаИспользованияСерий
|ИЗ
| СуммированнаяТаблицаТоваров КАК ТаблицаТовары
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки,
| Товар,
| Характеристика
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| МИНИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия.Наименование КАК ПредставлениеСерии
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|ГДЕ
| ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
| И НЕ ТаблицаТоваров.Серия ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.Ссылка,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ТаблицаТоваров.Серия.Наименование
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки,
| Номенклатура,
| Характеристика,
| ПредставлениеСерии";
ЗапросПоТоварам.Текст = ТекстЗапросаПоТоварам;
РезультатЗапроса = ЗапросПоТоварам.ВыполнитьПакет();
ВыборкаПоТоварам = РезультатЗапроса[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаПоСериям = РезультатЗапроса[3].Выбрать();
Иначе
ТекстЗапросаПоТоварам =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.Номенклатура КАК Товар,
| ТаблицаТовары.Номенклатура.НаименованиеПолное КАК ТоварНаименование,
| ТаблицаТовары.Номенклатура.Код КАК Код,
| ТаблицаТовары.Номенклатура.Артикул КАК Артикул,
| ТаблицаТовары.Характеристика.НаименованиеПолное КАК ХарактеристикаНаименование,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ВЫБОР
| КОГДА ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Упаковка)
| КОНЕЦ КАК ПредставлениеЕдиницыИзмеренияУпаковки,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
| ТаблицаТовары.КоличествоУпаковок КАК КоличествоУпаковок,
| ТаблицаТовары.Количество КАК Количество,
| ЛОЖЬ КАК НастройкаИспользованияСерий,
| ТаблицаТовары.НомерСтроки
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| ТаблицаТовары.НомерСтроки,
| Товар,
| Характеристика";
ЗапросПоТоварам.Текст = ТекстЗапросаПоТоварам;
ВыборкаПоТоварам = ЗапросПоТоварам.Выполнить().Выбрать();
КонецЕсли;
ПервыйДокумент = Истина;
Для Каждого Шапка Из ИспользованиеСерий.Строки Цикл
ОписаниеДокумента = Новый Структура("Ссылка");
ЗаполнитьЗначенияСвойств(ОписаниеДокумента, Шапка);
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
Если Не ПервыйДокумент ИЛИ (ПервыйДокумент И НЕ ПерваяСтрокаОбъектов) Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
Если Шапка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов Тогда
ОбластьЗаголовка = ОбластьЗаголовкаПеремещение;
Иначе
ОбластьЗаголовка = ОбластьЗаголовкаВнутренняяПередача;
КонецЕсли;
ОбластьЗаголовка.Параметры.Заполнить(Шапка);
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить(
"ТекстЗаголовка",
ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(
Шапка,
НСтр("ru = 'Накладная на перемещение'", ОбщегоНазначения.КодОсновногоЯзыка())));
ОбластьЗаголовка.Параметры.Заполнить(ПараметрыОбласти);
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьЗаголовка, ОписаниеДокумента.Ссылка);
ТабличныйДокумент.Вывести(ОбластьЗаголовка);
ТабличныйДокумент.Вывести(ОбластьНомераШапка);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодовШапка);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанныхШапка);
Если ИспользоватьУпаковкиНоменклатуры Тогда
ТабличныйДокумент.Присоединить(ОбластьУпаковокШапка);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьКонецСтрокиШапка);
НомерСтроки = 1;
Пока ВыборкаПоТоварам.НайтиСледующий(Новый Структура("Ссылка", ОписаниеДокумента.Ссылка)) Цикл
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить("НомерСтроки", НомерСтроки);
ОбластьНомераСтрока.Параметры.Заполнить(ПараметрыОбласти);
ТабличныйДокумент.Вывести(ОбластьНомераСтрока);
Если ВыводитьКоды Тогда
ОбластьКодовСтрока.Параметры.Артикул = ВыборкаПоТоварам[Колонка];
ТабличныйДокумент.Присоединить(ОбластьКодовСтрока);
КонецЕсли;
Если ВыборкаПоТоварам.НастройкаИспользованияСерий = Перечисления.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара Тогда
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("Ссылка", ВыборкаПоТоварам.Ссылка);
СтруктураПоиска.Вставить("НомерСтроки", ВыборкаПоТоварам.НомерСтроки);
СтруктураПоиска.Вставить("Номенклатура", ВыборкаПоТоварам.Товар);
СтруктураПоиска.Вставить("Характеристика", ВыборкаПоТоварам.Характеристика);
СтрокаСерий = "";
Пока ВыборкаПоСериям.НайтиСледующий(СтруктураПоиска) Цикл
СтрокаСерий = СтрокаСерий + ВыборкаПоСериям.ПредставлениеСерии + ", ";
КонецЦикла;
Если СтрДлина(СтрокаСерий) <> 0 Тогда
СтрокаСерий = Лев(СтрокаСерий, СтрДлина(СтрокаСерий) - 2);
КонецЕсли;
Иначе
СтрокаСерий = ВыборкаПоТоварам.Серия;
КонецЕсли;
ОбластьДанныхСтрока.Параметры.Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
СокрЛП(ВыборкаПоТоварам.ТоварНаименование),
СокрЛП(ВыборкаПоТоварам.ХарактеристикаНаименование),
,
СокрЛП(СтрокаСерий),
ДопПараметрыПредставлениеНоменклатуры);
ТабличныйДокумент.Присоединить(ОбластьДанныхСтрока);
Если ИспользоватьУпаковкиНоменклатуры Тогда
ОбластьУпаковокСтрока.Параметры.Заполнить(ВыборкаПоТоварам);
ТабличныйДокумент.Присоединить(ОбластьУпаковокСтрока);
КонецЕсли;
ОбластьКонецСтрокиСтрока.Параметры.Заполнить(ВыборкаПоТоварам);
ТабличныйДокумент.Присоединить(ОбластьКонецСтрокиСтрока);
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
ТабличныйДокумент.Вывести(ОбластьНомераПодвал);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодовПодвал);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанныхПодвал);
Если ИспользоватьУпаковкиНоменклатуры Тогда
ТабличныйДокумент.Присоединить(ОбластьУпаковокПодвал);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьКонецСтрокиПодвал);
ТабличныйДокумент.Вывести(ОбластьПодписей);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ОписаниеДокумента.Ссылка);
КонецЦикла;
ПерваяСтрокаОбъектов = Ложь;
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;
КонецФункции
Функция ПечатьПередачаМатериаловВПроизводство(МассивОбъектов, ОбъектыПечати)
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
ДопКолонка = КолонкаКодов.ИмяКолонки;
ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
ВыводитьДопКолонку = ЗначениеЗаполнено(ДопКолонка);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Номер КАК Номер,
| ТаблицаДокумента.Дата КАК Дата,
| ТаблицаДокумента.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| ТаблицаДокумента.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаДокумента.Отправитель) КАК Склад,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаДокумента.Получатель) КАК Подразделение
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов КАК ТаблицаДокумента
|
|ГДЕ
| ТаблицаДокумента.Ссылка В(&МассивОбъектов)
| И ТаблицаДокумента.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую))
|
|СГРУППИРОВАТЬ ПО
| ТаблицаДокумента.Ссылка,
| ТаблицаДокумента.Номер,
| ТаблицаДокумента.Дата,
| ТаблицаДокумента.Отправитель,
| ТаблицаДокумента.Получатель,
| ТаблицаДокумента.ИсправляемыйДокумент
|
|УПОРЯДОЧИТЬ ПО
| Дата,
| Ссылка
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаТовары.Упаковка КАК Упаковка,
| МИНИМУМ(ТаблицаТовары.НомерСтроки) КАК НомерСтроки
|ПОМЕСТИТЬ ВтНомераСтрок
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивОбъектов)
| И ТаблицаТовары.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую))
| И ТаблицаТовары.Ссылка.УпаковкиВВидахЗапасов
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Ссылка,
| ТаблицаТовары.АналитикаУчетаНоменклатуры,
| ТаблицаТовары.Упаковка
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| АналитикаУчетаНоменклатуры,
| Упаковка
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка.Дата КАК Дата,
| ТаблицаТовары.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.ВидЗапасов.Организация) КАК Организация,
| ТаблицаТовары.ВидЗапасов.Организация.Префикс КАК Префикс,
| ЕСТЬNULL(ВтНомераСтрок.НомерСтроки, ТаблицаТовары.НомерСтроки) КАК НомерСтроки,
| &ДопКолонкаКлюч,
| ТаблицаТовары.АналитикаУчетаНоменклатуры.Номенклатура.НаименованиеПолное КАК Номенклатура,
| ТаблицаТовары.АналитикаУчетаНоменклатуры.Характеристика.НаименованиеПолное КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) ТОГДА
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.АналитикаУчетаНоменклатуры.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Упаковка)
| КОНЕЦ КАК Упаковка,
| ТаблицаТовары.КоличествоУпаковок КАК Количество
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.ВидыЗапасов КАК ТаблицаТовары
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтНомераСтрок КАК ВтНомераСтрок
| ПО ВтНомераСтрок.Ссылка = ТаблицаТовары.Ссылка
| И ВтНомераСтрок.АналитикаУчетаНоменклатуры = ТаблицаТовары.АналитикаУчетаНоменклатуры
| И ВтНомераСтрок.Упаковка = ТаблицаТовары.Упаковка
|
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивОбъектов)
| И ТаблицаТовары.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую))
| И ТаблицаТовары.Ссылка.УпаковкиВВидахЗапасов
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка.Дата КАК Дата,
| ТаблицаТовары.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Ссылка.Организация) КАК Организация,
| ТаблицаТовары.Ссылка.Организация.Префикс КАК Префикс,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| &ДопКолонкаНоменклатура,
| ТаблицаТовары.Номенклатура.НаименованиеПолное КАК Номенклатура,
| ТаблицаТовары.Характеристика.НаименованиеПолное КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) ТОГДА
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Упаковка)
| КОНЕЦ КАК Упаковка,
| ТаблицаТовары.КоличествоУпаковок КАК Количество
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивОбъектов)
| И ТаблицаТовары.Ссылка.ХозяйственнаяОперация В(
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую))
| И (НЕ ТаблицаТовары.Ссылка.УпаковкиВВидахЗапасов
| ИЛИ ЛОЖЬ)
|
|УПОРЯДОЧИТЬ ПО
| Дата,
| Ссылка,
| НомерСтроки
|
|ИТОГИ
| МАКСИМУМ(Префикс)
|ПО
| Ссылка,
| Организация
|";
Если ВыводитьДопКолонку Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ДопКолонкаКлюч,", "ТаблицаТовары.АналитикаУчетаНоменклатуры.Номенклатура." + ДопКолонка +" КАК ДопКолонка,");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ДопКолонкаНоменклатура,", "ТаблицаТовары.Номенклатура." + ДопКолонка +" КАК ДопКолонка,");
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ДопКолонкаКлюч,", "");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ДопКолонкаНоменклатура,", "");
КонецЕсли;
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПередачаМатериаловВПроизводство";
РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс, Склад, Подразделение, ДатаИсправляемогоДокумента, НомерИсправляемогоДокумента");
СинонимДокумента = Строка(Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство);
Макет =
УправлениеПечатью.МакетПечатнойФормы("Документ.ДвижениеПродукцииИМатериалов.ПФ_MXL_ПередачаМатериаловВПроизводство");
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодписи = Макет.ПолучитьОбласть("Подписи");
Если ВыводитьДопКолонку Тогда
ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаДопКолонка");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицыДопКолонка");
Иначе
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
КонецЕсли;
МассивРезультатов = Запрос.ВыполнитьПакет();
ДанныеПечати = МассивРезультатов[0].Выбрать();
ВыборкаПоДокументам = МассивРезультатов[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ПервыйДокумент = Истина;
Пока ДанныеПечати.Следующий() Цикл
СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
ВыборкаПоОрганизациям = ВыборкаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоОрганизациям.Следующий() Цикл
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ДанныеПечати);
ОбластьЗаголовок.Параметры.Заполнить(РеквизитыДокумента);
ОбластьЗаголовок.Параметры.Заполнить(ВыборкаПоОрганизациям);
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить(
"ТекстЗаголовка",
ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(
РеквизитыДокумента,
СинонимДокумента));
ПараметрыОбласти.Вставить("Организация", ВыборкаПоОрганизациям.Организация);
ОбластьЗаголовок.Параметры.Заполнить(ПараметрыОбласти);
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(
ТабДокумент,
Макет,
ОбластьЗаголовок,
ВыборкаПоДокументам.Ссылка);
ТабДокумент.Вывести(ОбластьЗаголовок);
Если ВыводитьДопКолонку Тогда
ОбластьШапкаТаблицы.Параметры.ДопКолонка = ПредставлениеКолонкиКодов;
КонецЕсли;
ТабДокумент.Вывести(ОбластьШапкаТаблицы);
ИндексСтроки = 1;
ВыборкаСтроки = ВыборкаПоОрганизациям.Выбрать();
Пока ВыборкаСтроки.Следующий() Цикл
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
ОбластьСтрока.Параметры.Заполнить(ВыборкаСтроки);
ОбластьСтрока.Параметры.Номенклатура = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаСтроки.Номенклатура,
ВыборкаСтроки.Характеристика,
,
,
ДопПараметрыПредставлениеНоменклатуры);
ОбластьСтрока.Параметры.НомерСтроки = ИндексСтроки;
ТабДокумент.Вывести(ОбластьСтрока);
ИндексСтроки = ИндексСтроки + 1;
КонецЦикла;
ТабДокумент.Вывести(ОбластьПодписи);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(
ТабДокумент,
НомерСтрокиНачало,
ОбъектыПечати,
ВыборкаПоДокументам.Ссылка);
КонецЦикла;
КонецЦикла;
Возврат ТабДокумент;
КонецФункции
#КонецОбласти
#Область ТекущиеДела
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
ИмяФормы = "Документ.ДвижениеПродукцииИМатериалов.Форма.РабочееМесто";
ОбщиеПараметрыЗапросов = ТекущиеДелаСервер.ОбщиеПараметрыЗапросов();
Доступность =
(ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или ПравоДоступа("Добавление", Метаданные.Документы.ДвижениеПродукцииИМатериалов))
И ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеПроизводством2_2");
Если НЕ Доступность Тогда
Возврат;
КонецЕсли;
ОтборХозяйственныеОперации = Новый СписокЗначений;
ОтборХозяйственныеОперации.Добавить(Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую);
ОтборТипыДокументов = Новый СписокЗначений;
ПолныеИмена = Новый Массив;
ПолныеИмена.Добавить(Метаданные.Документы.ДвижениеПродукцииИМатериалов.ПолноеИмя());
ОтборТипыДокументов.Добавить(ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ПолныеИмена)[ПолныеИмена[0]]);
ПередачиМатериаловКОформлению = КоличествоСтрокКОформлению(ОтборХозяйственныеОперации.ВыгрузитьЗначения());
ИдентификаторДела = "ПередачиМатериаловВПроизводство22";
Если ПолучитьФункциональнуюОпцию("ИспользуетсяУправлениеПроизводством21и22") Тогда
ПредставлениеДела = НСтр("ru = 'Передачи материалов в производство 2.2'");
Иначе
ПредставлениеДела = НСтр("ru = 'Передачи материалов в производство'");
КонецЕсли;
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = ИдентификаторДела;
ДелоРодитель.Представление = ПредставлениеДела;
ДелоРодитель.ЕстьДела = ПередачиМатериаловКОформлению > 0;
ДелоРодитель.Владелец = Метаданные.Подсистемы.Производство;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ОтборХозяйственныеОперации", ОтборХозяйственныеОперации);
ПараметрыОтбора.Вставить("ОтборТипыДокументов", ОтборТипыДокументов);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СтруктураБыстрогоОтбора", ПараметрыОтбора);
ПараметрыФормы.Вставить("КлючНазначенияФормы", "ТекущиеДела");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ПередачиМатериаловВПроизводство2_2КОформлению";
Дело.ЕстьДела = ПередачиМатериаловКОформлению > 0;
Дело.Представление = НСтр("ru = 'Передачи материалов к оформлению'");
Дело.Количество = ПередачиМатериаловКОформлению;
Дело.Важное = Ложь;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = ПараметрыФормы;
Дело.Владелец = ИдентификаторДела;
КонецПроцедуры
Функция КоличествоСтрокКОформлению(ХозОперации)
ПараметрыОтбора = НакладныеСервер.ПараметрыОтбораРаспоряжений(,,, ХозОперации);
Пакет = Новый Массив;
Выборка = Новый Массив;
Состояния = НакладныеСервер.СостоянияПоХозоперациям(ХозОперации);
Для каждого КЗ Из Состояния Цикл
Пакет.Добавить(НакладныеСервер.ТекстЗапросаСостояний(КЗ.Ключ, ПараметрыОтбора, КЗ.Значение));
Если КЗ.Ключ = "СостоянияРасходныхОрдеров" Тогда
Выборка.Добавить(
"ВЫБРАТЬ
| СостоянияРасходныхОрдеров.Распоряжение КАК Распоряжение,
| СостоянияРасходныхОрдеров.Склад КАК Отправитель,
| СостоянияРасходныхОрдеров.Получатель КАК Получатель,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА NULL
| КОНЕЦ КАК ХозОперация
|ИЗ
| ВТСостоянияРасходныхОрдеров КАК СостоянияРасходныхОрдеров");
ИначеЕсли КЗ.Ключ = "СостоянияПриходныхОрдеров" Тогда
Выборка.Добавить(
"ВЫБРАТЬ
| СостоянияПриходныхОрдеров.Распоряжение КАК Распоряжение,
| СостоянияПриходныхОрдеров.Отправитель КАК Отправитель,
| СостоянияПриходныхОрдеров.Склад КАК Получатель,
| СостоянияПриходныхОрдеров.ХозОперация КАК ХозОперация
|ИЗ
| ВтСостоянияПриходныхОрдеров КАК СостоянияПриходныхОрдеров");
ИначеЕсли КЗ.Ключ = "СостоянияПередачВПроизводство" Тогда
Выборка.Добавить(
"ВЫБРАТЬ
| СостоянияПередачВПроизводство.Распоряжение КАК Распоряжение,
| СостоянияПередачВПроизводство.Склад КАК Отправитель,
| СостоянияПередачВПроизводство.Получатель КАК Получатель,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА NULL
| КОНЕЦ КАК ХозОперация
|ИЗ
| ВтСостоянияПередачВПроизводство КАК СостоянияПередачВПроизводство");
КонецЕсли;
КонецЦикла;
Пакет.Добавить(
СтрЗаменить(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВложенныйЗапрос.Распоряжение КАК Распоряжение,
| ВложенныйЗапрос.Отправитель КАК Отправитель,
| ВложенныйЗапрос.Получатель КАК Получатель,
| ВложенныйЗапрос.ХозОперация КАК ХозОперация
|ИЗ
| ТекстЗапросаВложенный КАК ВложенныйЗапрос",
"ТекстЗапросаВложенный", "(" + СтрСоединить(Выборка, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении()) + ")"));
Запрос = Новый Запрос(СтрСоединить(Пакет, ОбщегоНазначения.РазделительПакетаЗапросов()));
НакладныеСервер.ДобавитьПараметрыОтбораПоРееструДокументов(Запрос, ПараметрыОтбора);
Запрос.УстановитьПараметр("НачалоТекущегоДня", НачалоДня(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("ХозОперация", ХозОперации);
Возврат Запрос.Выполнить().Выбрать().Количество();
КонецФункции
#КонецОбласти
#Область Прочее
Функция ПредставлениеПолей(Объект) Экспорт
ХозяйственнаяОперация = Объект.ХозяйственнаяОперация;
ПредставлениеПолей = Новый Структура;
ПредставлениеПолей.Вставить("Организация", НСтр("ru = 'Организация'"));
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой Тогда
ПредставлениеПолей.Вставить("Товары", НСтр("ru = 'Продукция'"));
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами Тогда
ПредставлениеПолей.Вставить("Товары", НСтр("ru = 'Товары'"));
ПредставлениеПолей.Вставить("Организация", НСтр("ru = 'Организация-отправитель'"));
Иначе
ПредставлениеПолей.Вставить("Товары", НСтр("ru = 'Материалы'"));
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой Тогда
ТипПолучателя = "Склад";
ТипОтправителя = "Кладовая";
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства Тогда
ТипПолучателя = "Склад";
ТипОтправителя = "Подразделение";
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства Тогда
ТипПолучателя = "Склад";
ТипОтправителя = "Подразделение";
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой Тогда
ТипПолучателя = "Склад";
ТипОтправителя = "Кладовая";
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство Тогда
ТипОтправителя = "Склад";
ТипПолучателя = "Подразделение";
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ТипОтправителя = "Склад";
ТипПолучателя = "Кладовая";
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами Тогда
ТипОтправителя = "Кладовая";
ТипПолучателя = "Кладовая";
КонецЕсли;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой Тогда
ПолучательЗаголовок = НСтр("ru = 'Склад'");
Если ТипОтправителя = "Кладовая" Тогда
ОтправительЗаголовок = НСтр("ru = 'Цеховая кладовая'");
Иначе
ОтправительЗаголовок = НСтр("ru = 'Подразделение'");
КонецЕсли;
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ОтправительЗаголовок = НСтр("ru = 'Склад'");
Если ТипПолучателя = "Кладовая" Тогда
ПолучательЗаголовок = НСтр("ru = 'Цеховая кладовая'");
Иначе
ПолучательЗаголовок = НСтр("ru = 'Подразделение'");
КонецЕсли;
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ОтправительЗаголовок = НСтр("ru = 'Отправитель'");
ПолучательЗаголовок = НСтр("ru = 'Получатель'");
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами Тогда
ОтправительЗаголовок = НСтр("ru = 'Отправитель'");
ПолучательЗаголовок = НСтр("ru = 'Получатель'");
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой Тогда
Если ТипОтправителя = "Кладовая" Тогда
ОтправительПодсказка = НСтр("ru = 'Цеховая кладовая, из которой передается продукция.'");
Иначе
ОтправительПодсказка = НСтр("ru = 'Подразделение, которое выпустило продукцию.'");
КонецЕсли;
ПолучательПодсказка = НСтр("ru = 'Склад, на который передается выпущенная продукция.'");
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзПроизводства
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратМатериаловИзКладовой Тогда
Если ТипОтправителя = "Кладовая" Тогда
ОтправительПодсказка = НСтр("ru = 'Цеховая кладовая, из которой возвращаются материалы.'");
Иначе
ОтправительПодсказка = НСтр("ru = 'Подразделение, с которого возвращаются материалы.'");
КонецЕсли;
ПолучательПодсказка = НСтр("ru = 'Склад, который получает материалы.'");
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ОтправительПодсказка = НСтр("ru = 'Склад, с которого передаются материалы.'");
Если ТипПолучателя = "Кладовая" Тогда
ПолучательПодсказка = НСтр("ru = 'Цеховая кладовая, в которую передаются материалы.'");
Иначе
ПолучательПодсказка = НСтр("ru = 'Подразделение, которое получает материалы.'");
КонецЕсли;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатов Тогда
ОтправительПодсказка = НСтр("ru = 'Цеховая кладовая, из которой передаются материалы.'");
ПолучательПодсказка = НСтр("ru = 'Цеховая кладовая, в которую передаются материалы.'");
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеПолуфабрикатовМеждуФилиалами Тогда
ОтправительПодсказка = НСтр("ru = 'Цеховая кладовая, из которой передаются продукция/материалы.'");
ПолучательПодсказка = НСтр("ru = 'Цеховая кладовая, в которую передаются продукция/материалы.'");
КонецЕсли;
ПредставлениеПолей.Вставить("Отправитель", ОтправительЗаголовок);
ПредставлениеПолей.Вставить("Получатель", ПолучательЗаголовок);
ПредставлениеПолей.Вставить("ОтправительПодсказка", ОтправительПодсказка);
ПредставлениеПолей.Вставить("ПолучательПодсказка", ПолучательПодсказка);
ПредставлениеПолей.Вставить("ТипОтправителя", ТипОтправителя);
ПредставлениеПолей.Вставить("ТипПолучателя", ТипПолучателя);
Возврат ПредставлениеПолей;
КонецФункции
Функция ПустыеЗначенияЗаказов() Экспорт
ПустыеЗначенияЗаказов = Новый Массив;
ПустыеЗначенияЗаказов.Добавить(Неопределено);
ПустыеЗначенияЗаказов.Добавить(Документы.ЗаказМатериаловВПроизводство.ПустаяСсылка());
Возврат ПустыеЗначенияЗаказов;
КонецФункции
Процедура ОтвязатьОтРаспоряжений(Объект) Экспорт
Объект.Распоряжение = Неопределено;
Для Каждого ТекСтрока Из Объект.Товары Цикл
ТекСтрока.КодСтроки = 0;
ТекСтрока.Распоряжение = Неопределено;
ТекСтрока.Назначение = Неопределено;
ТекСтрока.НазначениеОтправителя = Неопределено;
КонецЦикла;
Для Каждого ТекСтрока Из Объект.Серии Цикл
ТекСтрока.Назначение = Неопределено;
ТекСтрока.НазначениеОтправителя = Неопределено;
КонецЦикла;
КонецПроцедуры
Процедура УстановитьУсловноеОформлениеОперации(УсловноеОформление, ИмяПоляОперация = "ХозяйственнаяОперация", ПутьКРеквизитуОперация = "ХозяйственнаяОперация") Экспорт
СписокОпераций = СписокОпераций();
Для каждого ИмяИПредставление Из СписокОпераций Цикл
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ИмяПоляОперация);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПутьКРеквизитуОперация);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = ИмяИПредставление.Значение;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", ИмяИПредставление.Представление);
КонецЦикла;
КонецПроцедуры
Функция СформироватьЗапросПроверкиПриСменеСтатуса(МассивДокументов, НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыДвиженияПродукцииИМатериалов[НовыйСтатус];
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ТаблицаДокументов.Статус КАК ТекущийСтатус,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР
| КОГДА ТаблицаДокументов.Статус = &Статус
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ИСТИНА КАК ЗаписьПроведением
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Статус", ЗначениеНовогоСтатуса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Возврат Запрос;
КонецФункции
Функция ПроверкаПередСменойСтатуса(ВыборкаПроверки, НовыйСтатус, ДополнительныеПараметры) Экспорт
Возврат Истина;
КонецФункции
Функция СозданиеНаОснованииПроверкаОтгрузить()
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТоварыЗаказа
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ДвижениеПродукцииИМатериалов КАК ТаблицаДокумента
| ПО ТаблицаДокумента.Ссылка = ТоварыЗаказа.Ссылка
|ГДЕ
| ТаблицаДокумента.ПоРаспоряжениям = ЛОЖЬ
| И ТаблицаДокумента.Ссылка В(&МассивСсылок)
| И ТаблицаДокумента.Проведен
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Документ.ЗаказМатериаловВПроизводство.Товары КАК ТоварыЗаказа
|ГДЕ
| ТоварыЗаказа.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ТоварыЗаказа.Ссылка В(&МассивСсылок)
| И НЕ ТоварыЗаказа.Отменено
| И ТоварыЗаказа.Ссылка.Проведен
|
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция СозданиеНаОснованииПроверкаПроизведено(СвойстваРаспоряжений)
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТоварыЗаказа
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ДвижениеПродукцииИМатериалов КАК ТаблицаДокумента
| ПО ТаблицаДокумента.Ссылка = ТоварыЗаказа.Ссылка
|ГДЕ
| ТаблицаДокумента.ПоРаспоряжениям = ЛОЖЬ
| И ТаблицаДокумента.Ссылка В(&МассивСсылок)
| И ТаблицаДокумента.Проведен
|;
|
|
|";
ТекстЗапроса =
СтрЗаменить(
ТекстЗапроса,
"&ОтборСтрок",
?(СвойстваРаспоряжений <> Неопределено,
"ТоварыЗаказа.Получатель В (&ОтборСтрок)",
"ИСТИНА"));
Возврат ТекстЗапроса;
КонецФункции
Функция СозданиеНаОснованииПроверкаРеквизитовШапки(ХозяйственнаяОперация, СвойстваРаспоряжений)
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВПроизводство
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаМатериаловВКладовую Тогда
ТекстыЗапроса = Новый Массив;
Если ПравоДоступа("Чтение", Метаданные.Документы.ЗаказМатериаловВПроизводство) Тогда
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| Заказ.Статус КАК Статус,
| Заказ.Организация КАК Организация,
| Заказ.Склад КАК Склад,
| ВЫБОР
| КОГДА Заказ.УправлениеПроизводством2_2
| ТОГДА Заказ.ЦеховаяКладовая
| ИНАЧЕ Заказ.Подразделение
| КОНЕЦ КАК Получатель,
| Заказ.Проведен КАК Проведен,
| Заказ.ПотреблениеДляДеятельности КАК НалогообложениеНДС,
| Заказ.НаправлениеДеятельности КАК НаправлениеДеятельности,
| НЕОПРЕДЕЛЕНО КАК ВариантПриемкиТоваров,
| ВЫБОР
| КОГДА НЕ Заказ.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовМатериаловВПроизводство.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовМатериаловВПроизводство.Закрыт))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЕстьОшибкиСтатус
|ИЗ
| Документ.ЗаказМатериаловВПроизводство КАК Заказ
|ГДЕ
| Заказ.Ссылка В(&МассивСсылок)");
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЕСТЬNULL(МАКСИМУМ(НЕ Набор.Проведен), ЛОЖЬ) КАК ЕстьОшибкиПроведен,
| ЕСТЬNULL(МАКСИМУМ(Набор.ЕстьОшибкиСтатус), ЛОЖЬ) КАК ЕстьОшибкиСтатус,
| ВЫБОР КОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.Статус) = 1
| ТОГДА МИНИМУМ(Набор.Статус)
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК СтатусРаспоряжения,
| МИНИМУМ(Набор.Организация) КАК Организация,
| МИНИМУМ(Набор.Склад) КАК Отправитель,
| МИНИМУМ(Набор.Получатель) КАК Получатель,
| МИНИМУМ(Набор.НалогообложениеНДС) КАК НалогообложениеНДС,
| МИНИМУМ(Набор.НаправлениеДеятельности) КАК НаправлениеДеятельности,
| МИНИМУМ(Набор.ВариантПриемкиТоваров) КАК ВариантПриемкиТоваров,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| 1 КАК РазличныхОпераций,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.Организация) КАК РазличныхОрганизаций,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.Склад) КАК РазличныхОтправителей,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.Получатель) КАК РазличныхПолучателей,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.ВариантПриемкиТоваров) КАК РазличныхВариантовПриемкиТоваров
|ИЗ
| &Набор КАК Набор
|;
|
|
|";
ТекстЗапроса =
СтрЗаменить(
ТекстЗапроса,
"&Набор",
"(" + СтрСоединить(ТекстыЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении()) + ")");
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой Тогда
ТекстыЗапроса = Новый Массив;
Если ПравоДоступа("Чтение", Метаданные.Документы.ЗаказКлиента) Тогда
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| Набор.Ссылка.Проведен КАК Проведен,
| Набор.Ссылка.Статус КАК Статус,
| Набор.Ссылка.Организация КАК Организация,
| Набор.Ссылка.НаправлениеДеятельности КАК НаправлениеДеятельности,
| Набор.Ссылка.НалогообложениеНДС КАК НалогообложениеНДС,
| Набор.Ссылка.Подразделение КАК Отправитель,
| НЕОПРЕДЕЛЕНО КАК ВариантПриемкиТоваров,
| Набор.Склад КАК Получатель
|ИЗ
| Документ.ЗаказКлиента.Товары КАК Набор
|ГДЕ
| Набор.Ссылка В(&МассивСсылок)
| И НЕ Набор.Отменено
| И НЕ Набор.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| И &ОтборСтрок");
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЕСТЬNULL(МАКСИМУМ(НЕ Набор.Проведен), ЛОЖЬ) КАК ЕстьОшибкиПроведен,
| ЛОЖЬ КАК ЕстьОшибкиСтатус,
| ИСТИНА КАК СтатусРаспоряжения,
| МИНИМУМ(Набор.Организация) КАК Организация,
| МИНИМУМ(Набор.НаправлениеДеятельности) КАК НаправлениеДеятельности,
| МИНИМУМ(Набор.Отправитель) КАК Отправитель,
| МИНИМУМ(Набор.Получатель) КАК Получатель,
| МИНИМУМ(Набор.НалогообложениеНДС) КАК НалогообложениеНДС,
| МИНИМУМ(Набор.ВариантПриемкиТоваров) КАК ВариантПриемкиТоваров,
|
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
|
| 1 КАК РазличныхОпераций,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.Организация) КАК РазличныхОрганизаций,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.Отправитель) КАК РазличныхОтправителей,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.Получатель) КАК РазличныхПолучателей,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Набор.ВариантПриемкиТоваров) КАК РазличныхВариантовПриемкиТоваров
|ИЗ
| &Набор КАК Набор
|
|;
|
|
|";
ТекстЗапроса =
СтрЗаменить(
ТекстЗапроса,
"&Набор",
"(" + СтрСоединить(ТекстыЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении()) + ")");
ТекстЗапроса =
СтрЗаменить(
ТекстЗапроса,
"&ОтборСтрок",
?(СвойстваРаспоряжений <> Неопределено,
"Набор.Склад В (&ОтборСтрок)",
"ИСТИНА"));
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
Функция СозданиеНаОснованииПроверкаНаличияОрдеров()
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(,,,, ДокументОтгрузки В (&МассивСсылок)) КАК ТаблицаОбороты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК СпрСклады
| ПО СпрСклады.Ссылка = ТаблицаОбороты.Склад
|ГДЕ
| ТаблицаОбороты.КОтгрузкеПриход > 0 И(
| ТаблицаОбороты.КОтгрузкеРасход > 0
| ИЛИ НЕ СпрСклады.ИспользоватьОрдернуюСхемуПриОтгрузке
| ИЛИ СпрСклады.ДатаНачалаОрдернойСхемыПриОтгрузке > &НачалоТекущегоДня)";
Возврат ТекстЗапроса;
КонецФункции
Функция ПолучитьНастройкиОтборов(ПараметрыОтборов) Экспорт
ТаблицаОтборов = Новый ТаблицаЗначений;
ПараметрыЗамены = Новый Структура;
ОтборПоТоварам = Неопределено;
ПараметрыОтборов.Свойство("ОтборПоТоварам", ОтборПоТоварам);
Если ЗначениеЗаполнено(ОтборПоТоварам) Тогда
ТипыСсылок = Метаданные.Документы.ДвижениеПродукцииИМатериалов.ТабличныеЧасти.Товары.Реквизиты.Распоряжение.Тип.Типы();
ТипыСсылок.Добавить(Тип("ДокументСсылка.ДвижениеПродукцииИМатериалов"));
ТаблицаОтборов.Колонки.Добавить("Ссылка",
Документы.ТипВсеСсылки());
ТаблицаОтборов.Колонки.Добавить("Номенклатура" ,
Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТаблицаОтборов.Колонки.Добавить("Характеристика" ,
Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
Для каждого ЭлементОтбора Из ОтборПоТоварам Цикл
ДокументИсточник = ЭлементОтбора.Ключ;
ЗначенияОтбора = ЭлементОтбора.Значение;
Для каждого ЗначениеОтбора Из ЗначенияОтбора Цикл
СтрокаТаблицыОтбора = ТаблицаОтборов.Добавить();
СтрокаТаблицыОтбора.Ссылка = ДокументИсточник;
ЗаполнитьЗначенияСвойств(СтрокаТаблицыОтбора, ЗначениеОтбора.Значение);
КонецЦикла;
КонецЦикла;
ПараметрыЗамены.Вставить("ПолеНоменклатура");
КонецЕсли;
НастройкаОтборов = ?(ТаблицаОтборов.Колонки.Количество() = 0,
Неопределено, Новый Структура("ТаблицаОтборов, ПараметрыЗамены", ТаблицаОтборов, ПараметрыЗамены));
Возврат НастройкаОтборов;
КонецФункции
Функция ТекстЗапросаТаблицаОтборов(ПараметрыЗамены = Неопределено)
ТекстЗапроса =
"ВЫБРАТЬ
| &Поля КАК Поля,
| ТаблицаОтборов.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ТаблицаОтборов
|ИЗ
| &ТаблицаОтборов КАК ТаблицаОтборов
|
|ИНДЕКСИРОВАТЬ ПО
| Поля,
| Ссылка
|";
Если ПараметрыЗамены <> Неопределено Тогда
Для каждого ПараметрЗамены Из ПараметрыЗамены Цикл
Если ПараметрЗамены.Ключ = "ПолеНоменклатура" Тогда
Продолжить;
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ПараметрЗамены.Ключ, ПараметрЗамены.Значение);
КонецЦикла;
КонецЕсли;
НакладныеСервер.НастроитьПолеНоменклатуры(
ТекстЗапроса, ПараметрыЗамены, "&Поля КАК Поля,", "ТаблицаОтборов",,, "Поля,");
Возврат ТекстЗапроса;
КонецФункции
Процедура ДобавитьЭлементОтбораСклад(Отбор)
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(Отбор, "Склад", "&Склад");
КонецПроцедуры
Процедура ДобавитьЭлементОтбораПолучатель(Отбор)
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(Отбор, "Получатель", "&Получатель");
КонецПроцедуры
Процедура ДобавитьЭлементОтбораРаспоряжение(Отбор, ИмяПолеРаспоряжение, ПоНоменклатуре = Истина)
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(
Отбор,
?(Не ПоНоменклатуре, ИмяПолеРаспоряжение ,
ИмяПолеРаспоряжение + ", Номенклатура, Характеристика"
),
?(Не ПоНоменклатуре, "&Распоряжения",
"ВЫБРАТЬ
| ТаблицаОтборов.Ссылка КАК Ссылка,
| ТаблицаОтборов.Номенклатура КАК Номенклатура,
| ТаблицаОтборов.Характеристика КАК Характеристика
|ИЗ
| ТаблицаОтборов КАК ТаблицаОтборов"
)
);
КонецПроцедуры
Процедура УстановитьПараметрыЗапросаКоэффициентыВалют(Запрос)
Если Запрос.Параметры.Свойство("КоэффициентПересчетаВВалютуУпр")
И Запрос.Параметры.Свойство("КоэффициентПересчетаВВалютуРегл") Тогда
Возврат;
КонецЕсли;
Коэффициенты = РаботаСКурсамивалютУТ.ПолучитьКоэффициентыПересчетаВалюты(
Запрос.Параметры.Валюта,
Неопределено,
Запрос.Параметры.Период,
Запрос.Параметры.Организация);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуРегл", Коэффициенты.КоэффициентПересчетаВВалютуРегл);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуУпр", Коэффициенты.КоэффициентПересчетаВВалютуУпр);
КонецПроцедуры
#КонецОбласти
#Область ФормированиеГиперссылкиВЖурналеДокументовПроизводства
Функция ЕстьДокументыКОформлению(Параметры)
ПараметрыОтбора = НакладныеСервер.ПараметрыОтбораРаспоряжений(Параметры.Организация, Параметры.Подразделение,,
Параметры.ОтборХозяйственныеОперации, Параметры.Менеджер);
Состояния = НакладныеСервер.СостоянияПоХозоперациям(Параметры.ОтборХозяйственныеОперации.ВыгрузитьЗначения());
ИменаТаблиц = НакладныеСервер.ИменаВременныхТаблицПоСостояниям();
Если Не ЗначениеЗаполнено(Состояния) Тогда
Возврат Ложь;
КонецЕсли;
Пакет = Новый Массив;
Выборка = Новый Массив;
Текст = "ВЫБРАТЬ
| КОформлению
|ИЗ &ИмяТаблицы";
Для каждого КЗ Из Состояния Цикл
Пакет.Добавить(НакладныеСервер.ТекстЗапросаСостояний(КЗ.Ключ, ПараметрыОтбора, КЗ.Значение, Истина));
Выборка.Добавить(СтрЗаменить(Текст, "&ИмяТаблицы", ИменаТаблиц[КЗ.Ключ]));
КонецЦикла;
Пакет.Добавить(СтрСоединить(Выборка, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении()));
Если ЗначениеЗаполнено(Параметры.Организация) Тогда
СписокОрганизаций = Справочники.Организации.ФилиалыСРасчетамиЧерезГоловнуюОрганизацию(Параметры.Организация);
СписокОрганизаций.Добавить(Параметры.Организация);
Иначе
СписокОрганизаций = Новый Массив;
КонецЕсли;
Запрос = Новый Запрос(СтрСоединить(Пакет, ОбщегоНазначения.РазделительПакетаЗапросов()));
НакладныеСервер.ДобавитьПараметрыОтбораПоРееструДокументов(Запрос, ПараметрыОтбора);
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("НачалоТекущегоДня", НачалоДня(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("Организация", СписокОрганизаций);
Запрос.УстановитьПараметр("Подразделение", Параметры.Подразделение);
Запрос.УстановитьПараметр("Менеджер", Параметры.Менеджер);
Запрос.УстановитьПараметр("ХозОперация", Параметры.ОтборХозяйственныеОперации.ВыгрузитьЗначения());
Возврат Не Запрос.Выполнить().Пустой();
КонецФункции
Функция СформироватьГиперссылкуКОформлению(Параметры) Экспорт
ЕстьПраваНаЧтение = ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.ЗаказыМатериаловВПроизводство)
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.ТоварыКОтгрузке)
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.ТоварыКПоступлению);
Если Не ЕстьПраваНаЧтение Тогда
Возврат Неопределено;
КонецЕсли;
ТекстГиперссылки = НСтр("ru = 'Накладные'");
ТекстСсылки = "Документ.ДвижениеПродукцииИМатериалов.Форма.РабочееМесто";
Если ЕстьДокументыКОформлению(Параметры) Тогда
Возврат Новый ФорматированнаяСтрока(ТекстГиперссылки,,,, ТекстСсылки);
Иначе
Возврат Новый ФорматированнаяСтрока(ТекстГиперссылки,, ЦветаСтиля.НезаполненноеПолеТаблицы,, ТекстСсылки);
КонецЕсли;
КонецФункции
#КонецОбласти
#Область ОбновлениеИнформационнойБазы
Функция СозданиеНаОснованииПроверкаНаличияМатериаловДоступныхКВозврату()
ТекстЗапроса =
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Документ.ДвижениеПродукцииИМатериалов.Товары КАК ТоварыЗаказа
|ГДЕ
| ТоварыЗаказа.Ссылка В(&МассивСсылок)
| И ТоварыЗаказа.Ссылка.Проведен
| И ТоварыЗаказа.Ссылка.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВПроизводство),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаМатериаловВКладовую))
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ДокументыПоПараметрам(Параметры) Экспорт
МассивДокументов = Новый Массив;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ОбъектыОснований", Параметры.ОбъектыОснований);
ТекстыЗапроса = Новый Массив;
Если ПравоДоступа("Чтение", Метаданные.Документы.ПроизводствоБезЗаказа) Тогда
ТекстыЗапроса.Добавить("
|ВЫБРАТЬ
| ПроизводствоБезЗаказа.Ссылка КАК ДокументОснование,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ПроизводствоБезЗаказа.Организация
| КОНЕЦ КАК Организация,
| ТаблицаТовары.Получатель КАК Отправитель,
| ПроизводствоБезЗаказа.ВыпускПодДеятельность КАК НалогообложениеНДС,
| ПроизводствоБезЗаказа.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Назначение КАК НазначениеОтправителя,
| ТаблицаТовары.Упаковка КАК Упаковка,
| СУММА(ТаблицаТовары.Количество) КАК Количество,
| СУММА(ТаблицаТовары.КоличествоУпаковок) КАК КоличествоУпаковок,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерийОтправитель
|ИЗ
| Документ.ПроизводствоБезЗаказа КАК ПроизводствоБезЗаказа
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа.ВыходныеИзделия КАК ТаблицаТовары
| ПО ТаблицаТовары.Ссылка = ПроизводствоБезЗаказа.Ссылка
|
|ГДЕ
| ПроизводствоБезЗаказа.Ссылка В(&ОбъектыОснований)
| И ТаблицаТовары.НаправлениеВыпуска = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыпускПродукцииНаСклад)
| И НЕ ТаблицаТовары.СтатусУказанияСерий В (4, 6, 8, 10)
| И ТаблицаТовары.Получатель.ЦеховаяКладовая
|
|СГРУППИРОВАТЬ ПО
| ПроизводствоБезЗаказа.Ссылка,
| ТаблицаТовары.Упаковка,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ПроизводствоБезЗаказа.Организация
| КОНЕЦ,
| ТаблицаТовары.Получатель,
| ПроизводствоБезЗаказа.ВыпускПодДеятельность,
| ПроизводствоБезЗаказа.НаправлениеДеятельности,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Назначение,
| ТаблицаТовары.СтатусУказанияСерий
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПроизводствоБезЗаказа.Ссылка КАК ДокументОснование,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ПроизводствоБезЗаказа.Организация
| КОНЕЦ КАК Организация,
| ТаблицаСерий.Получатель КАК Отправитель,
| ПроизводствоБезЗаказа.ВыпускПодДеятельность КАК НалогообложениеНДС,
| ПроизводствоБезЗаказа.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ТаблицаСерий.Номенклатура КАК Номенклатура,
| ТаблицаСерий.Характеристика КАК Характеристика,
| ТаблицаСерий.Серия КАК Серия,
| ТаблицаСерий.Назначение КАК Назначение,
| ТаблицаСерий.Назначение КАК НазначениеОтправителя,
| ТаблицаСерий.Номенклатура.ЕдиницаИзмерения КАК Упаковка,
| ТаблицаСерий.Количество КАК Количество,
| ТаблицаСерий.Количество КАК КоличествоУпаковок,
| МИНИМУМ(ТаблицаТовары.СтатусУказанияСерий) КАК СтатусУказанияСерий,
| МИНИМУМ(ТаблицаТовары.СтатусУказанияСерий) КАК СтатусУказанияСерийОтправитель
|ИЗ
| Документ.ПроизводствоБезЗаказа КАК ПроизводствоБезЗаказа
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа.ВыходныеИзделияСерии КАК ТаблицаСерий
| ПО (ТаблицаСерий.Ссылка = ПроизводствоБезЗаказа.Ссылка)
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа.ВыходныеИзделия КАК ТаблицаТовары
| ПО ТаблицаСерий.Ссылка = ТаблицаТовары.Ссылка
| И ТаблицаСерий.Номенклатура = ТаблицаТовары.Номенклатура
| И ТаблицаСерий.Характеристика = ТаблицаТовары.Характеристика
| И ТаблицаСерий.Назначение = ТаблицаТовары.Назначение
| И ТаблицаСерий.Получатель = ТаблицаТовары.Получатель
| И ТаблицаСерий.НомерГруппыЗатрат = ТаблицаТовары.НомерГруппыЗатрат
|
|ГДЕ
| ПроизводствоБезЗаказа.Ссылка В(&ОбъектыОснований)
| И ТаблицаТовары.НаправлениеВыпуска = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыпускПродукцииНаСклад)
| И ТаблицаТовары.СтатусУказанияСерий В (4, 6, 8, 10)
| И ТаблицаТовары.Получатель.ЦеховаяКладовая
|
|СГРУППИРОВАТЬ ПО
| ПроизводствоБезЗаказа.Ссылка,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ПроизводствоБезЗаказа.Организация
| КОНЕЦ,
| ТаблицаСерий.Получатель,
| ПроизводствоБезЗаказа.ВыпускПодДеятельность,
| ПроизводствоБезЗаказа.НаправлениеДеятельности,
| ТаблицаСерий.Номенклатура,
| ТаблицаСерий.Характеристика,
| ТаблицаСерий.Серия,
| ТаблицаСерий.Назначение,
| ТаблицаСерий.Количество
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПроизводствоБезЗаказа.Ссылка КАК ДокументОснование,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ПроизводствоБезЗаказа.Организация
| КОНЕЦ КАК Организация,
| ТаблицаТовары.Получатель КАК Отправитель,
| ПроизводствоБезЗаказа.ВыпускПодДеятельность КАК НалогообложениеНДС,
| ПроизводствоБезЗаказа.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Назначение КАК НазначениеОтправителя,
| ТаблицаТовары.Упаковка КАК Упаковка,
| СУММА(ТаблицаТовары.Количество) КАК Количество,
| СУММА(ТаблицаТовары.КоличествоУпаковок) КАК КоличествоУпаковок,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерийОтправитель
|ИЗ
| Документ.ПроизводствоБезЗаказа КАК ПроизводствоБезЗаказа
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа.ПобочныеИзделия КАК ТаблицаТовары
| ПО ТаблицаТовары.Ссылка = ПроизводствоБезЗаказа.Ссылка
|
|ГДЕ
| ПроизводствоБезЗаказа.Ссылка В(&ОбъектыОснований)
| И ТаблицаТовары.НаправлениеВыпуска = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыпускПродукцииНаСклад)
| И НЕ ТаблицаТовары.СтатусУказанияСерий В (4, 6, 8, 10)
| И ТаблицаТовары.Получатель.ЦеховаяКладовая
|
|СГРУППИРОВАТЬ ПО
| ПроизводствоБезЗаказа.Ссылка,
| ПроизводствоБезЗаказа.ВыпускПодДеятельность,
| ТаблицаТовары.Характеристика,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ПроизводствоБезЗаказа.Организация
| КОНЕЦ,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Упаковка,
| ПроизводствоБезЗаказа.НаправлениеДеятельности,
| ТаблицаТовары.Получатель,
| ТаблицаТовары.Назначение,
| ТаблицаТовары.СтатусУказанияСерий
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПроизводствоБезЗаказа.Ссылка КАК ДокументОснование,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ПроизводствоБезЗаказа.Организация
| КОНЕЦ КАК Организация,
| ТаблицаСерий.Получатель КАК Отправитель,
| ПроизводствоБезЗаказа.ВыпускПодДеятельность КАК НалогообложениеНДС,
| ПроизводствоБезЗаказа.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ТаблицаСерий.Номенклатура КАК Номенклатура,
| ТаблицаСерий.Характеристика КАК Характеристика,
| ТаблицаСерий.Серия КАК Серия,
| ТаблицаСерий.Назначение КАК Назначение,
| ТаблицаСерий.Назначение КАК НазначениеОтправителя,
| ТаблицаСерий.Номенклатура.ЕдиницаИзмерения КАК Упаковка,
| ТаблицаСерий.Количество КАК Количество,
| ТаблицаСерий.Количество КАК КоличествоУпаковок,
| МИНИМУМ(ТаблицаТовары.СтатусУказанияСерий) КАК СтатусУказанияСерий,
| МИНИМУМ(ТаблицаТовары.СтатусУказанияСерий) КАК СтатусУказанияСерийОтправитель
|ИЗ
| Документ.ПроизводствоБезЗаказа КАК ПроизводствоБезЗаказа
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа.ПобочныеИзделияСерии КАК ТаблицаСерий
| ПО (ТаблицаСерий.Ссылка = ПроизводствоБезЗаказа.Ссылка)
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПроизводствоБезЗаказа.ПобочныеИзделия КАК ТаблицаТовары
| ПО ТаблицаСерий.Ссылка = ТаблицаТовары.Ссылка
| И ТаблицаСерий.Номенклатура = ТаблицаТовары.Номенклатура
| И ТаблицаСерий.Характеристика = ТаблицаТовары.Характеристика
| И ТаблицаСерий.Назначение = ТаблицаТовары.Назначение
| И ТаблицаСерий.Получатель = ТаблицаТовары.Получатель
| И ТаблицаСерий.НомерГруппыЗатрат = ТаблицаТовары.НомерГруппыЗатрат
|
|ГДЕ
| ПроизводствоБезЗаказа.Ссылка В(&ОбъектыОснований)
| И ТаблицаТовары.НаправлениеВыпуска = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыпускПродукцииНаСклад)
| И ТаблицаТовары.СтатусУказанияСерий В (4, 6, 8, 10)
| И ТаблицаТовары.Получатель.ЦеховаяКладовая
|
|СГРУППИРОВАТЬ ПО
| ПроизводствоБезЗаказа.Ссылка,
| ПроизводствоБезЗаказа.ВыпускПодДеятельность,
| ТаблицаСерий.Характеристика,
| ВЫБОР
| КОГДА ИСТИНА
| ТОГДА ПроизводствоБезЗаказа.Организация
| КОНЕЦ,
| ТаблицаСерий.Номенклатура,
| ТаблицаСерий.Серия,
| ПроизводствоБезЗаказа.НаправлениеДеятельности,
| ТаблицаСерий.Получатель,
| ТаблицаСерий.Назначение,
| ТаблицаСерий.Количество
|");
КонецЕсли;
Если ПравоДоступа("Чтение", Метаданные.Документы.РаспределениеВозвратныхОтходов) Тогда
ТекстыЗапроса.Добавить(
"ВЫБРАТЬ
| РаспределениеВозвратныхОтходов.Ссылка КАК ДокументОснование,
| РаспределениеВозвратныхОтходов.Организация КАК Организация,
| РаспределениеВозвратныхОтходов.Получатель КАК Отправитель,
| РаспределениеВозвратныхОтходов.ВыпускПодДеятельность КАК НалогообложениеНДС,
| РаспределениеВозвратныхОтходов.НаправлениеДеятельности КАК НаправлениеДеятельности,
| РаспределениеВозвратныхОтходов.Номенклатура КАК Номенклатура,
| РаспределениеВозвратныхОтходов.Характеристика КАК Характеристика,
| РаспределениеВозвратныхОтходов.Серия КАК Серия,
| РаспределениеВозвратныхОтходов.Назначение КАК Назначение,
| РаспределениеВозвратныхОтходов.Назначение КАК НазначениеОтправителя,
| РаспределениеВозвратныхОтходов.Номенклатура.ЕдиницаИзмерения КАК Упаковка,
| СУММА(РаспределениеВозвратныхОтходов.Количество) КАК Количество,
| СУММА(РаспределениеВозвратныхОтходов.Количество) КАК КоличествоУпаковок,
| РаспределениеВозвратныхОтходов.СтатусУказанияСерий КАК СтатусУказанияСерий,
| РаспределениеВозвратныхОтходов.СтатусУказанияСерий КАК СтатусУказанияСерийОтправитель
|ИЗ
| Документ.РаспределениеВозвратныхОтходов КАК РаспределениеВозвратныхОтходов
|ГДЕ
| РаспределениеВозвратныхОтходов.Ссылка В(&ОбъектыОснований)
| И ТИПЗНАЧЕНИЯ(РаспределениеВозвратныхОтходов.Получатель) = ТИП(Справочник.Склады)
| И НЕ РаспределениеВозвратныхОтходов.СтатусУказанияСерий В (4, 6, 8, 10)
| И РаспределениеВозвратныхОтходов.Получатель.ЦеховаяКладовая
|
|СГРУППИРОВАТЬ ПО
| РаспределениеВозвратныхОтходов.Ссылка,
| РаспределениеВозвратныхОтходов.Серия,
| РаспределениеВозвратныхОтходов.Организация,
| РаспределениеВозвратныхОтходов.ВыпускПодДеятельность,
| РаспределениеВозвратныхОтходов.Получатель,
| РаспределениеВозвратныхОтходов.НаправлениеДеятельности,
| РаспределениеВозвратныхОтходов.Номенклатура,
| РаспределениеВозвратныхОтходов.Характеристика,
| РаспределениеВозвратныхОтходов.Назначение,
| РаспределениеВозвратныхОтходов.Номенклатура.ЕдиницаИзмерения,
| РаспределениеВозвратныхОтходов.СтатусУказанияСерий
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РаспределениеВозвратныхОтходов.Ссылка КАК ДокументОснование,
| РаспределениеВозвратныхОтходов.Организация КАК Организация,
| РаспределениеВозвратныхОтходов.Получатель КАК Отправитель,
| РаспределениеВозвратныхОтходов.ВыпускПодДеятельность КАК НалогообложениеНДС,
| РаспределениеВозвратныхОтходов.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ТаблицаСерий.Номенклатура КАК Номенклатура,
| ТаблицаСерий.Характеристика КАК Характеристика,
| ТаблицаСерий.Серия КАК Серия,
| ТаблицаСерий.Назначение КАК Назначение,
| ТаблицаСерий.Назначение КАК НазначениеОтправителя,
| ТаблицаСерий.Номенклатура.ЕдиницаИзмерения КАК Упаковка,
| ТаблицаСерий.Количество КАК Количество,
| ТаблицаСерий.Количество КАК КоличествоУпаковок,
| РаспределениеВозвратныхОтходов.СтатусУказанияСерий КАК СтатусУказанияСерий,
| РаспределениеВозвратныхОтходов.СтатусУказанияСерий КАК СтатусУказанияСерийОтправитель
|ИЗ
| Документ.РаспределениеВозвратныхОтходов КАК РаспределениеВозвратныхОтходов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РаспределениеВозвратныхОтходов.Серии КАК ТаблицаСерий
| ПО ТаблицаСерий.Ссылка = РаспределениеВозвратныхОтходов.Ссылка
|ГДЕ
| РаспределениеВозвратныхОтходов.Ссылка В(&ОбъектыОснований)
| И ТИПЗНАЧЕНИЯ(РаспределениеВозвратныхОтходов.Получатель) = ТИП(Справочник.Склады)
| И РаспределениеВозвратныхОтходов.СтатусУказанияСерий В (4, 6, 8, 10)
| И РаспределениеВозвратныхОтходов.Получатель.ЦеховаяКладовая
|
|СГРУППИРОВАТЬ ПО
| РаспределениеВозвратныхОтходов.Ссылка,
| ТаблицаСерий.Серия,
| РаспределениеВозвратныхОтходов.Организация,
| РаспределениеВозвратныхОтходов.ВыпускПодДеятельность,
| РаспределениеВозвратныхОтходов.Получатель,
| РаспределениеВозвратныхОтходов.НаправлениеДеятельности,
| ТаблицаСерий.Номенклатура,
| ТаблицаСерий.Характеристика,
| ТаблицаСерий.Назначение,
| ТаблицаСерий.Номенклатура.ЕдиницаИзмерения,
| РаспределениеВозвратныхОтходов.СтатусУказанияСерий,
| ТаблицаСерий.Количество
|");
КонецЕсли;
ТекстЗапроса = СтрСоединить(ТекстыЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ТекстЗапроса = СхемыЗапросов.УстановитьВыборкуРазрешенныхЗаписей(ТекстЗапроса, Истина);
ТекстЗапроса = ТекстЗапроса + "
|УПОРЯДОЧИТЬ ПО
| ДокументОснование,
| Организация,
| Отправитель,
| Номенклатура,
| Характеристика,
| Серия,
| Назначение,
| НазначениеОтправителя,
| Упаковка
|";
ТекстЗапроса = ТекстЗапроса + "
|ИТОГИ ПО
| ДокументОснование,
| Организация,
| НалогообложениеНДС,
| НаправлениеДеятельности,
| Отправитель
|";
Запрос.Текст = ТекстЗапроса;
ВыборкаДокументыОснования = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ДатаНовыхДокументов = ТекущаяДатаСеанса();
Пока ВыборкаДокументыОснования.Следующий() Цикл
ВыборкаОрганизации = ВыборкаДокументыОснования.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаОрганизации.Следующий() Цикл
ВыборкаНалогообложение = ВыборкаОрганизации.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНалогообложение.Следующий() Цикл
ВыборкаНаправлениеДеятельности = ВыборкаНалогообложение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНаправлениеДеятельности.Следующий() Цикл
ВыборкаОтправитель = ВыборкаНаправлениеДеятельности.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаОтправитель.Следующий() Цикл
ТекДокумент = Документы.ДвижениеПродукцииИМатериалов.СоздатьДокумент();
ТекДокумент.ПолучитьСсылкуНового();
МассивДокументов.Добавить(ТекДокумент);
ЗаполнитьЗначенияСвойств(ТекДокумент, ВыборкаОтправитель);
ТекДокумент.Дата = ДатаНовыхДокументов;
ТекДокумент.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПродукцииИзКладовой;
ТекДокумент.Заполнить(Неопределено);
ДетальныеЗаписи = ВыборкаОтправитель.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ДетальныеЗаписи.Следующий() Цикл
НоваяСтрока = ТекДокумент.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ДетальныеЗаписи);
Если ДетальныеЗаписи.СтатусУказанияСерий = 4
ИЛИ ДетальныеЗаписи.СтатусУказанияСерий = 6
ИЛИ ДетальныеЗаписи.СтатусУказанияСерий = 8
ИЛИ ДетальныеЗаписи.СтатусУказанияСерий = 10 Тогда
НоваяСтрока = ТекДокумент.Серии.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ДетальныеЗаписи);
КонецЕсли;
КонецЦикла;
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(ТекДокумент, Документы.ДвижениеПродукцииИМатериалов);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ТекДокумент, ПараметрыУказанияСерий);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Возврат МассивДокументов;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли