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