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