#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Организация, СкладОтправитель, СкладПолучатель");
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "ХозяйственнаяОперация,Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "ОрганизацияПолучатель", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "ЗаказНаПеремещение";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Подразделение", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Организация";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "БанковскийСчетОрганизации", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Организация, ОрганизацияПолучатель";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(
ОписаниеРеквизитов, "Ответственный", Параметры);
КонецПроцедуры
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("ВнутреннееТовародвижение");
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("ОборотныеРегистрыУправленческогоУчета");
МеханизмыДокумента.Добавить("ОперативныйУчетТоваровОрганизаций");
МеханизмыДокумента.Добавить("ПриемНаОтветхранение");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СебестоимостьИПартионныйУчет");
МеханизмыДокумента.Добавить("СерийныйУчет");
МеханизмыДокумента.Добавить("АдресныйСклад");
МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
МеханизмыДокумента.Добавить("УчетНДС");
МеханизмыДокумента.Добавить("ИсправлениеДокументов");
ПеремещениеТоваровЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ПеремещениеТоваров") Тогда
ДокументОбъект = Документ;
ДокументСсылка = Документ.Ссылка;
ИначеЕсли ТипЗнч(Документ) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
ДокументОбъект = Документ.ПолучитьОбъект();
ДокументСсылка = Документ;
Иначе
ДокументОбъект = Неопределено;
ДокументСсылка = Неопределено;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолучитьДанныеДокумента(Запрос, ДокументСсылка);
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
ТекстЗапросаТаблицаЗаказыНаПеремещение(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ТекстЗапросаТаблицаТоварыОрганизацийКПередаче(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ПеремещениеТоваровЛокализация.ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ОформитьПриобретениеТоваровПоДвухходовке(Запрос, ТекстыЗапроса, Регистры);
ОформитьПоступлениеТоваровПоДвухходовке(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
ПроведениеДокументов.ДобавитьЗапросыСторноДвижений(
Запрос, ТекстыЗапроса, Регистры, Метаданные.Документы.ПеремещениеТоваров);
РасчетСебестоимостиПроведениеДокументов.ОтразитьВМеханизмеУчетаЗатратИСебестоимости(
ДокументСсылка, Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Функция ТекстЗапросаРеквизитыДоставки() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Шапка.Номер КАК Номер,
| Шапка.Проведен КАК Проведен,
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Шапка.СкладПолучатель КАК ПолучательОтправитель,
| Шапка.ПеревозчикПартнер КАК Перевозчик,
| Шапка.СпособДоставки КАК СпособДоставки,
| Шапка.ЗонаДоставки КАК Зона,
|
| ВЫБОР КОГДА СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаПоАдресу)
| ТОГДА Шапка.АдресДоставкиПеревозчика
| ИНАЧЕ Шапка.АдресДоставки
| КОНЕЦ КАК Адрес,
|
| ВЫБОР КОГДА СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаПоАдресу)
| ТОГДА Шапка.АдресДоставкиПеревозчикаЗначенияПолей
| ИНАЧЕ Шапка.АдресДоставкиЗначенияПолей
| КОНЕЦ КАК АдресЗначенияПолей,
|
| Шапка.ВремяДоставкиС КАК ВремяС,
| Шапка.ВремяДоставкиПо КАК ВремяПо,
| Шапка.ДополнительнаяИнформацияПоДоставке
| КАК ДополнительнаяИнформация,
| Шапка.СкладОтправитель КАК Склад,
| ИСТИНА КАК ДоставитьПолностью,
| Шапка.ОсобыеУсловияПеревозки КАК ОсобыеУсловияПеревозки,
| Шапка.ОсобыеУсловияПеревозкиОписание КАК ОсобыеУсловияПеревозкиОписание,
| ЛОЖЬ КАК РазбиватьРасходныеОрдераПоРаспоряжениям
|
|ИЗ
| Документ.ПеремещениеТоваров КАК Шапка
|ГДЕ
| Шапка.Ссылка В (&Ссылки)
| И (НЕ Шапка.ПеремещениеПоЗаказам
| ИЛИ Шапка.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| И НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками)";
Возврат ТекстЗапроса;
КонецФункции
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Если ПолучитьФункциональнуюОпцию("ИспользоватьАктыРасхожденийПослеПеремещения") Тогда
Документы.АктОРасхожденияхПослеПеремещения.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КонецЕсли;
Документы.ПередачаТоваровМеждуОрганизациями.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании);
Обработки.СправочноеРазмещениеНоменклатуры.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ПоручениеЭкспедитору.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.УпаковочныйЛист.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
ИсправлениеДокументов.ДобавитьКомандуИсправление(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
ИсправлениеДокументов.ДобавитьКомандуСторно(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
СервисДоставкиПереопределяемый.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, Параметры);
ПеремещениеТоваровЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ПеремещениеТоваров) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ПеремещениеТоваров.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ПеремещениеТоваров);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьПеремещениеТоваров";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ПеремещениеТоваров) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.ПеремещениеТоваровСоздатьНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ПеремещениеТоваров.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ПеремещениеТоваров);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьПеремещениеТоваров";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьНаОснованииПоГруппеСкладов(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ПеремещениеТоваров) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ПеремещениеТоваров.ПолноеИмя();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.СоздатьПеремещениеТоваровНаОснованииПоГруппеСкладов";
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ПеремещениеТоваров);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьПеремещениеТоваров";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
Отчеты.ОстаткиТоваровОрганизаций.ДобавитьКомандуОтчета(КомандыОтчетов);
КомандаОтчет = Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияВнутреннихРаспоряжений(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 1;
КонецЕсли;
ПеремещениеТоваровЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
Процедура ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(ХозяйственнаяОперация, МассивВсехРеквизитов, МассивРеквизитовОперации) Экспорт
МассивВсехРеквизитов = Новый Массив;
МассивВсехРеквизитов.Добавить("ОрганизацияПолучатель");
МассивРеквизитовОперации = Новый Массив;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами Тогда
МассивРеквизитовОперации.Добавить("ОрганизацияПолучатель");
КонецЕсли;
КонецПроцедуры
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "СкладОтправитель,СкладПолучатель,Статус,Дата";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
УстановитьПривилегированныйРежим(Истина);
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.ПеремещениеТоваров";
ПараметрыСерийСкладаОтправитель = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.СкладОтправитель, Ложь);
ПараметрыСерийСкладаПолучатель = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.СкладПолучатель, Ложь);
ИспользоватьОрдернуюСхемуПолучатель = СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.СкладПолучатель, Объект.Дата, Ложь);
ИспользоватьОрдернуюСхемуОтправитель = СкладыСервер.ИспользоватьОрдернуюСхемуПриОтгрузке(Объект.СкладОтправитель, Объект.Дата);
УстановитьПривилегированныйРежим(Ложь);
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ПараметрыСерийСкладаОтправитель.ИспользоватьСерииНоменклатуры
Или (ПараметрыСерийСкладаПолучатель.ИспользоватьСерииНоменклатуры
И Не ИспользоватьОрдернуюСхемуПолучатель)
Или ПараметрыСерийСкладаПолучатель.УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСкладаОтправитель.УчитыватьСебестоимостьПоСериям
Или ПараметрыСерийСкладаПолучатель.УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаПоПеремещению);
Если Объект.Статус = Перечисления.СтатусыПеремещенийТоваров.Принято Тогда
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаПоПеремещению);
КонецЕсли;
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Назначение");
ПараметрыУказанияСерий.ПоляСвязи.Добавить("НазначениеОтправителя");
ПараметрыУказанияСерий.ЭтоНакладная = Истина;
ПараметрыУказанияСерий.ИмяПоляСклад = "СкладОтправитель";
ПараметрыУказанияСерий.ИмяПоляСкладОтправитель = "СкладОтправитель";
ПараметрыУказанияСерий.ИмяПоляСкладПолучатель = "СкладПолучатель";
ПараметрыУказанияСерий.ПланированиеОтгрузки = Ложь;
ПараметрыУказанияСерий.ПланированиеОтбора = Ложь;
ПараметрыУказанияСерий.ФактОтбора = Объект.Статус = Перечисления.СтатусыПеремещенийТоваров.Отгружено
Или Объект.Статус = Перечисления.СтатусыПеремещенийТоваров.Принято;
ПараметрыУказанияСерий.РегистрироватьСерии = НоменклатураКлиентСервер.НеобходимоРегистрироватьСерии(ПараметрыУказанияСерий);
ПараметрыУказанияСерий.Дата = Объект.Дата;
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерий");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийОтправитель");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийПолучатель");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Товары_ЗаказНаПеремещение");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Товары_КодСтроки");
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция РаспоряжениеНаВыполнениеСкладскойОперации(ЗначенияПолейДляОпределенияРаспоряжения) Экспорт
Если ЗначенияПолейДляОпределенияРаспоряжения.Товары_КодСтроки Тогда
Возврат ЗначенияПолейДляОпределенияРаспоряжения.Товары_ЗаказНаПеремещение;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.НазначениеОтправителя,
| Товары.Серия,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.СтатусУказанияСерийОтправитель,
| Товары.СтатусУказанияСерийПолучатель,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.НазначениеОтправителя,
| СУММА(Товары.Количество) КАК Количество,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.НазначениеОтправителя,
| Товары.Серия,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.НазначениеОтправителя,
| Серии.Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.НазначениеОтправителя,
| СУММА(Серии.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК Серии
|
|СГРУППИРОВАТЬ ПО
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.НазначениеОтправителя
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА СкладОтправитель.ИспользоватьОрдернуюСхемуПриОтгрузке
| И &Дата >= СкладОтправитель.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА 0
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И (ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ИЛИ ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки)
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчетСерийПоFEFO
| ТОГДА 6
| ИНАЧЕ 8
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчетСерийПоFEFO
| ТОГДА 5
| ИНАЧЕ 7
| КОНЕЦ
| КОНЕЦ
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УказыватьПоФактуОтбора
| И ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УказыватьПриОтгрузкеПоПеремещению
| И &ФактОтбора
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И (ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ИЛИ ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки)
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 4
| ИНАЧЕ 2
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 3
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерийОтправитель,
| ВЫБОР
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА СкладПолучатель.ИспользоватьОрдернуюСхемуПриПоступлении
| И &Дата >= СкладПолучатель.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА 0
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И (ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ИЛИ ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки)
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УчетСерийПоFEFO
| ТОГДА 6
| ИНАЧЕ 8
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УчетСерийПоFEFO
| ТОГДА 5
| ИНАЧЕ 7
| КОНЕЦ
| КОНЕЦ
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УказыватьПриПриемке
| И ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УказыватьПриПриемкеПоПеремещению
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ИЛИ Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И (ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ИЛИ ПолитикиУчетаСерийОтправитель.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки)
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 4
| ИНАЧЕ 2
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ПолитикиУчетаСерийПолучатель.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА 3
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерийПолучатель,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерийСтарый,
| Товары.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерийОтправительСтарый,
| Товары.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерийПолучательСтарый
|ПОМЕСТИТЬ Статусы
|ИЗ
| ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Товары КАК Товары
| ПО ТоварыДляЗапроса.Номенклатура = Товары.Номенклатура
| И ТоварыДляЗапроса.Характеристика = Товары.Характеристика
| И ТоварыДляЗапроса.Назначение = Товары.Назначение
| И ТоварыДляЗапроса.НазначениеОтправителя = Товары.НазначениеОтправителя
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| И ТоварыДляЗапроса.НазначениеОтправителя = СерииДляЗапроса.НазначениеОтправителя
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерийОтправитель
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК СкладОтправитель
| ПО (СкладОтправитель.Ссылка = &СкладОтправитель)
| И (ПолитикиУчетаСерийОтправитель.Склад = &СкладОтправитель)
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерийОтправитель.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерийПолучатель
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК СкладПолучатель
| ПО (СкладПолучатель.Ссылка = &СкладПолучатель)
| И (ПолитикиУчетаСерийПолучатель.Склад = &СкладПолучатель)
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерийПолучатель.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки,
| Статусы.СтатусУказанияСерийОтправитель,
| ВЫБОР
| КОГДА &ПриемкаПоПеремещению
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерийПолучатель,
| ВЫБОР
| КОГДА Статусы.СтатусУказанияСерийПолучатель В (13, 14, 9, 10)
| И Статусы.СтатусУказанияСерийОтправитель <> 0
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| КОГДА Статусы.СтатусУказанияСерийОтправитель В (5, 6)
| ТОГДА Статусы.СтатусУказанияСерийОтправитель
| КОГДА Статусы.СтатусУказанияСерийОтправитель > ВЫБОР
| КОГДА &ПриемкаПоПеремещению
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ 0
| КОНЕЦ
| ТОГДА Статусы.СтатусУказанияСерийОтправитель
| ИНАЧЕ ВЫБОР
| КОГДА &ПриемкаПоПеремещению
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| (Статусы.СтатусУказанияСерийОтправитель <> Статусы.СтатусУказанияСерийОтправительСтарый
| ИЛИ ВЫБОР
| КОГДА &ПриемкаПоПеремещению
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ 0
| КОНЕЦ <> Статусы.СтатусУказанияСерийПолучательСтарый
| ИЛИ ВЫБОР
| КОГДА Статусы.СтатусУказанияСерийПолучатель В (13, 14, 9, 10)
| И Статусы.СтатусУказанияСерийОтправитель <> 0
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| КОГДА Статусы.СтатусУказанияСерийОтправитель В (5, 6)
| ТОГДА Статусы.СтатусУказанияСерийОтправитель
| КОГДА Статусы.СтатусУказанияСерийОтправитель > ВЫБОР
| КОГДА &ПриемкаПоПеремещению
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ 0
| КОНЕЦ
| ТОГДА Статусы.СтатусУказанияСерийОтправитель
| ИНАЧЕ ВЫБОР
| КОГДА &ПриемкаПоПеремещению
| ТОГДА Статусы.СтатусУказанияСерийПолучатель
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ <> Статусы.СтатусУказанияСерийСтарый)
|
|УПОРЯДОЧИТЬ ПО
| Статусы.НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗаполнитьСерииПоОтгрузке(Объект) Экспорт
УстановитьПривилегированныйРежим(Истина);
ИспользоватьОрдернуюСхемуПриОтгрузке = СкладыСервер.ИспользоватьОрдернуюСхемуПриОтгрузке(Объект.СкладОтправитель, Объект.Дата);
ИспользоватьОрдернуюСхемуПриПоступлении = СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.СкладПолучатель, Объект.Дата);
ИспользуютсяСерииОтправитель = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыСклад", Новый Структура("Склад", Объект.СкладОтправитель));
ИспользуютсяСерииПолучатель = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыСклад", Новый Структура("Склад", Объект.СкладПолучатель));
ЗаполнятьСерии = ИспользуютсяСерииПолучатель
И Не ИспользоватьОрдернуюСхемуПриПоступлении
И ИспользуютсяСерииОтправитель
И ИспользоватьОрдернуюСхемуПриОтгрузке;
Если Не ЗаполнятьСерии Тогда
Возврат;
КонецЕсли;
МассивРаспоряжений = Неопределено;
Если Объект.ПеремещениеПоЗаказам Тогда
МассивРаспоряжений = Объект.Товары.Выгрузить(, "ЗаказНаПеремещение").ВыгрузитьКолонку("ЗаказНаПеремещение");
КонецЕсли;
Запрос = Новый Запрос();
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Распоряжение", Объект.Ссылка);
Запрос.УстановитьПараметр("ПеремещениеПоЗаказам", Объект.ПеремещениеПоЗаказам);
Запрос.УстановитьПараметр("Распоряжения", МассивРаспоряжений);
Запрос.Текст =
"ВЫБРАТЬ
| РасходныйОрдер.Ссылка КАК Ссылка
|ПОМЕСТИТЬ РасходныеОрдера
|ИЗ
| Документ.РасходныйОрдерНаТовары КАК РасходныйОрдер
|ГДЕ
| РасходныйОрдер.Проведен
| И РасходныйОрдер.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыРасходныхОрдеров.Отгружен)
| И ИСТИНА В(
| ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| Документ.РасходныйОрдерНаТовары.ТоварыПоРаспоряжениям КАК Товары
| ГДЕ
| Товары.Ссылка = РасходныйОрдер.Ссылка
| И ВЫБОР КОГДА &ПеремещениеПоЗаказам ТОГДА
| Товары.Распоряжение В(&Распоряжения)
| ИНАЧЕ
| Товары.Распоряжение = &Распоряжение
| КОНЕЦ)
|;
|
|
|ВЫБРАТЬ
| Перемещение.Ссылка КАК Ссылка
|ПОМЕСТИТЬ Перемещения
|ИЗ
| Документ.ПеремещениеТоваров КАК Перемещение
|ГДЕ
| Перемещение.Ссылка <> &Распоряжение
| И Перемещение.Проведен
| И ИСТИНА В(
| ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| Документ.ПеремещениеТоваров.Товары КАК Товары
| ГДЕ
| Товары.Ссылка = Перемещение.Ссылка
| И Товары.ЗаказНаПеремещение В(&Распоряжения))
|;
|
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
|ИЗ
| РасходныеОрдера КАК РасходныеОрдера
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходныйОрдерНаТовары.ТоварыПоРаспоряжениям КАК Товары
| ПО Товары.Ссылка = РасходныеОрдера.Ссылка
| И НЕ ВЫБОР КОГДА &ПеремещениеПоЗаказам ТОГДА
| Товары.Распоряжение В(&Распоряжения)
| ИНАЧЕ
| Товары.Распоряжение = &Распоряжение
| КОНЕЦ
|ГДЕ
| НЕ Товары.Ссылка ЕСТЬ NULL
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
|ИЗ
| Перемещения КАК Перемещения
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК Товары
| ПО Товары.Ссылка = Перемещения.Ссылка
| И НЕ Товары.ЗаказНаПеремещение В(&Распоряжения)
|ГДЕ
| НЕ Товары.Ссылка ЕСТЬ NULL";
Если Не Запрос.Выполнить().Пустой() Тогда
Возврат;
КонецЕсли;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.Номенклатура КАК Номенклатура,
| Остатки.Характеристика КАК Характеристика,
| Остатки.НазначениеОтправителя КАК НазначениеОтправителя,
| Остатки.Серия КАК Серия,
| СУММА(Остатки.Количество) КАК Количество
|ИЗ(
| ВЫБРАТЬ
| ТоварыОрдера.Номенклатура КАК Номенклатура,
| ТоварыОрдера.Характеристика КАК Характеристика,
| ТоварыОрдера.Назначение КАК НазначениеОтправителя,
| ТоварыОрдера.Серия КАК Серия,
| ТоварыОрдера.Количество КАК Количество
| ИЗ
| РасходныеОрдера КАК РасходныеОрдера
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходныйОрдерНаТовары.ОтгружаемыеТовары КАК ТоварыОрдера
| ПО ТоварыОрдера.Ссылка = РасходныеОрдера.Ссылка
| И ТоварыОрдера.Действие = ЗНАЧЕНИЕ(Перечисление.ДействияСоСтрокамиОрдеровНаОтгрузку.Отгрузить)
| И ТоварыОрдера.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ГДЕ
| НЕ ТоварыОрдера.Ссылка ЕСТЬ NULL
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.НазначениеОтправителя КАК НазначениеОтправителя,
| Товары.Серия КАК Серия,
| -Товары.Количество КАК Количество
| ИЗ
| Перемещения КАК Перемещения
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК Товары
| ПО Товары.Ссылка = Перемещения.Ссылка
| И Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ГДЕ
| НЕ Товары.Ссылка ЕСТЬ NULL
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.НазначениеОтправителя КАК НазначениеОтправителя,
| Серии.Серия КАК Серия,
| -Серии.Количество КАК Количество
| ИЗ
| Перемещения КАК Перемещения
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Серии КАК Серии
| ПО Серии.Ссылка = Перемещения.Ссылка
| ГДЕ
| НЕ Серии.Ссылка ЕСТЬ NULL) КАК Остатки
|СГРУППИРОВАТЬ ПО
| Остатки.Номенклатура,
| Остатки.Характеристика,
| Остатки.НазначениеОтправителя,
| Остатки.Серия
|ИМЕЮЩИЕ
| СУММА(Остатки.Количество) <> 0
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.НазначениеОтправителя КАК НазначениеОтправителя,
| Товары.Назначение КАК Назначение,
| Товары.Количество КАК Количество
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|ГДЕ
| Товары.Количество > 0
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки
|ИЗ
| Товары КАК Товары
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ВсяНоменклатура
| ПО ВсяНоменклатура.Ссылка = Товары.Номенклатура
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикаПолучателя
| ПО ВсяНоменклатура.ВидНоменклатуры = ПолитикаПолучателя.Ссылка
| И (ПолитикаПолучателя.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ИЛИ ПолитикаПолучателя.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки)
| И ПолитикаПолучателя.Склад = &СкладПолучатель
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикаОтправителя
| ПО ВсяНоменклатура.ВидНоменклатуры = ПолитикаОтправителя.Ссылка
| И (ПолитикаОтправителя.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ИЛИ ПолитикаОтправителя.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки)
| И ПолитикаОтправителя.Склад = &СкладОтправитель
|ГДЕ
| НЕ ПолитикаПолучателя.Ссылка ЕСТЬ NULL ИЛИ НЕ ПолитикаОтправителя.Ссылка ЕСТЬ NULL
|;
|
|
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.НазначениеОтправителя КАК НазначениеОтправителя,
| Товары.Назначение КАК Назначение,
| СУММА(Товары.Количество) КАК Количество
|ИЗ
| Товары КАК Товары
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ВсяНоменклатура
| ПО ВсяНоменклатура.Ссылка = Товары.Номенклатура
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикаПолучателя
| ПО ВсяНоменклатура.ВидНоменклатуры = ПолитикаПолучателя.Ссылка
| И (ПолитикаПолучателя.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ИЛИ ПолитикаПолучателя.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки)
| И ПолитикаПолучателя.Склад = &СкладПолучатель
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикаОтправителя
| ПО ВсяНоменклатура.ВидНоменклатуры = ПолитикаОтправителя.Ссылка
| И (ПолитикаОтправителя.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ИЛИ ПолитикаОтправителя.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки)
| И ПолитикаОтправителя.Склад = &СкладОтправитель
|ГДЕ
| ПолитикаПолучателя.Ссылка ЕСТЬ NULL И ПолитикаОтправителя.Ссылка ЕСТЬ NULL
|СГРУППИРОВАТЬ ПО
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.НазначениеОтправителя";
Товары = Объект.Товары.Выгрузить(,"НомерСтроки,Номенклатура,Характеристика,Назначение,НазначениеОтправителя,Количество");
Запрос.УстановитьПараметр("Товары", Товары);
Запрос.УстановитьПараметр("СкладПолучатель", Объект.СкладПолучатель);
Запрос.УстановитьПараметр("СкладОтправитель", Объект.СкладОтправитель);
РезультатЗапроса = Запрос.ВыполнитьПакет();
ТаблицаСерийОрдера = РезультатЗапроса[0].Выгрузить();
ПоляПоискаБезСерий = "Номенклатура,Характеристика,НазначениеОтправителя";
СтруктураПоискаБезСерий = Новый Структура(ПоляПоискаБезСерий);
ТаблицаСерийОрдера.Индексы.Добавить(ПоляПоискаБезСерий);
ПоляПоискаССерией = "Номенклатура,Характеристика,НазначениеОтправителя,Серия";
СтруктураПоискаССерией = Новый Структура(ПоляПоискаССерией);
ТаблицаСерийОрдера.Индексы.Добавить(ПоляПоискаССерией);
СтруктураПоиска = Неопределено;
ДобавленныеИИзмененныеСтроки = Новый Массив();
ВыборкаНомеровСтрокССериямиВТЧТовары = РезультатЗапроса[2].Выбрать();
Пока ВыборкаНомеровСтрокССериямиВТЧТовары.Следующий() Цикл
СтрокаССериямиВТЧТовары = Объект.Товары[ВыборкаНомеровСтрокССериямиВТЧТовары.НомерСтроки - 1];
ОстатокПоТовару = СтрокаССериямиВТЧТовары.Количество;
ОстатокПоТоваруИсходный = ОстатокПоТовару;
СтруктураПоиска = ?(ЗначениеЗаполнено(СтрокаССериямиВТЧТовары.Серия), СтруктураПоискаССерией, СтруктураПоискаБезСерий);
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаССериямиВТЧТовары);
МассивСтрокТабСерий = ТаблицаСерийОрдера.НайтиСтроки(СтруктураПоиска);
Если МассивСтрокТабСерий.Количество() > 0 Тогда
ПерваяСтрока = Истина;
Для Каждого Стр Из МассивСтрокТабСерий Цикл
Если Стр.Количество = 0 Тогда
Продолжить;
КонецЕсли;
Если Не ПерваяСтрока Тогда
НоваяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаССериямиВТЧТовары);
СтрокаССериямиВТЧТовары = НоваяСтрока;
КонецЕсли;
ПерваяСтрока = Ложь;
СтрокаССериямиВТЧТовары.Серия = Стр.Серия;
КоличествоЗаполнения = Мин(ОстатокПоТовару,Стр.Количество);
СтрокаССериямиВТЧТовары.Количество = КоличествоЗаполнения;
ДобавленныеИИзмененныеСтроки.Добавить(СтрокаССериямиВТЧТовары);
Стр.Количество = Стр.Количество - КоличествоЗаполнения;
ОстатокПоТовару = ОстатокПоТовару - КоличествоЗаполнения;
Если ОстатокПоТовару = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ОстатокПоТовару > 0 Тогда
Если ОстатокПоТоваруИсходный > ОстатокПоТовару Тогда
НоваяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаССериямиВТЧТовары);
СтрокаССериямиВТЧТовары = НоваяСтрока;
СтрокаССериямиВТЧТовары.Количество = ОстатокПоТовару;
ДобавленныеИИзмененныеСтроки.Добавить(СтрокаССериямиВТЧТовары);
КонецЕсли;
СтрокаССериямиВТЧТовары.Серия = Неопределено;
КонецЕсли;
КонецЦикла;
СтруктураДействий = Новый Структура();
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ДобавленныеИИзмененныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Объект.Серии.Очистить();
СтруктураПоиска = СтруктураПоискаБезСерий;
ВыборкаТовары = РезультатЗапроса[3].Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
ОстатокПоТовару = ВыборкаТовары.Количество;
ЗаполнитьЗначенияСвойств(СтруктураПоиска, ВыборкаТовары);
МассивСтрокТабСерий = ТаблицаСерийОрдера.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаТабСерий Из МассивСтрокТабСерий Цикл
Если СтрокаТабСерий.Количество = 0 Тогда
Продолжить;
КонецЕсли;
НоваяСтрокаТЧСерии = Объект.Серии.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧСерии,ВыборкаТовары);
НоваяСтрокаТЧСерии.Серия = СтрокаТабСерий.Серия;
КоличествоЗаполнения = Мин(ОстатокПоТовару,СтрокаТабСерий.Количество);
НоваяСтрокаТЧСерии.Количество = КоличествоЗаполнения;
СтрокаТабСерий.Количество = СтрокаТабСерий.Количество - КоличествоЗаполнения;
ОстатокПоТовару = ОстатокПоТовару - КоличествоЗаполнения;
Если ОстатокПоТовару = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Функция СформироватьЗапросПроверкиПриСменеСтатуса(МассивДокументов, НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыПеремещенийТоваров[НовыйСтатус];
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР
| КОГДА ТаблицаДокументов.Статус = &Статус ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ИСТИНА КАК ЗаписьПроведением
|ИЗ
| Документ.ПеремещениеТоваров КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)
|";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Статус", ЗначениеНовогоСтатуса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Возврат Запрос;
КонецФункции
Функция ПроверкаПередСменойСтатуса(ВыборкаПроверки, НовыйСтатус, ДополнительныеПараметры) Экспорт
Возврат Истина;
КонецФункции
Функция ДанныеЗаполненияНакладной(МассивСсылок, СвойстваЗаказов = Неопределено) Экспорт
Реквизиты = Новый Структура("ХозяйственнаяОперация, Организация, ОрганизацияПолучатель, ПеремещениеПодДеятельность,
|СкладОтправитель, СкладПолучатель, Подразделение, НаправлениеДеятельности, ВариантПриемкиТоваров,
|СпособДоставки, ПеревозчикПартнер, АдресДоставки, АдресДоставкиЗначенияПолей, АдресДоставкиПеревозчика,
|АдресДоставкиПеревозчикаЗначенияПолей, ЗонаДоставки, ВремяДоставкиС, ВремяДоставкиПо, ДополнительнаяИнформацияПоДоставке");
Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(МассивСсылок[0], Реквизиты);
КонецФункции
Функция ДанныеДляПроверкиВводаНаОсновании(Распоряжения, ХозяйственнаяОперация = Неопределено) Экспорт
ДанныеДляВвода = Новый Структура("Основание, Статус, ЕстьОтгрузить, РаспоряженияКОформлению, МожноСгруппировать");
ДанныеДляВвода.ЕстьОтгрузить = Ложь;
ДанныеДляВвода.МожноСгруппировать = Ложь;
ДанныеДляВвода.Вставить("ХозяйственнаяОперация");
ТекстыЗапросов = Новый Массив;
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ
| ЗаказНаПеремещение.Ссылка КАК Основание,
| ЗаказНаПеремещение.Статус КАК Статус,
| ЗаказНаПеремещение.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ЗаказНаПеремещение КАК ЗаказНаПеремещение
|ГДЕ
| ЗаказНаПеремещение.Ссылка В(&Распоряжения)");
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Документ.ЗаказНаПеремещение.Товары КАК ТоварыЗаказа
|ГДЕ
| ТоварыЗаказа.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ТоварыЗаказа.Ссылка В(&Распоряжения)
| И НЕ ТоварыЗаказа.Отменено");
ТекстыЗапросов.Добавить(РегистрыНакопления.ЗаказыНаПеремещение.ТекстЗапросаОстатки("ВтОстаткиКОформлению"));
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОстаткиКОформлению.ЗаказНаПеремещение КАК РаспоряженияКОформлению
|ИЗ
| ВтОстаткиКОформлению КАК ОстаткиКОформлению");
Запрос = Новый Запрос(СтрСоединить(ТекстыЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов()));
Запрос.УстановитьПараметр("Распоряжения", Распоряжения);
Запрос.УстановитьПараметр("Регистратор", Неопределено);
Результат = Запрос.ВыполнитьПакет();
Выборка = Результат[0].Выбрать();
Если Выборка.Количество() = 1 И Выборка.Следующий() Тогда
ДанныеДляВвода.Основание = Выборка.Основание;
ДанныеДляВвода.Статус = Выборка.Статус;
ДанныеДляВвода.ЕстьОтгрузить = Не Результат[1].Пустой();
ДанныеДляВвода.ХозяйственнаяОперация = Выборка.ХозяйственнаяОперация;
КонецЕсли;
Если Не Результат[3].Пустой() Тогда
ДанныеДляВвода.РаспоряженияКОформлению = Результат[3].Выгрузить().ВыгрузитьКолонку("РаспоряженияКОформлению");
ДанныеДляВвода.МожноСгруппировать = Истина;
КонецЕсли;
Возврат ДанныеДляВвода;
КонецФункции
Функция ПараметрыОткрытияФормыРабочегоМеста(ХозяйственнаяОперация = Неопределено) Экспорт
ОтборХозяйственныеОперации = Новый СписокЗначений;
Если ЗначениеЗаполнено(ХозяйственнаяОперация) Тогда
ОтборХозяйственныеОперации.Добавить(ХозяйственнаяОперация);
Иначе
ОтборХозяйственныеОперации.Добавить(Перечисления.ХозяйственныеОперации.ПеремещениеТоваров);
ОтборХозяйственныеОперации.Добавить(Перечисления.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами);
КонецЕсли;
ОтборТипыДокументов = Новый СписокЗначений;
ОтборТипыДокументов.Добавить(ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.Документы.ПеремещениеТоваров));
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ОтборХозяйственныеОперации", ОтборХозяйственныеОперации);
ПараметрыОтбора.Вставить("ОтборТипыДокументов", ОтборТипыДокументов);
ПараметрыОткрытия = Новый Структура("ИмяФормы, ПараметрыФормы");
ПараметрыОткрытия.ИмяФормы = "Обработка.ЖурналДокументовВнутреннегоТовародвижения.Форма.СписокДокументовКОформлению";
ПараметрыОткрытия.ПараметрыФормы = Новый Структура;
ПараметрыОткрытия.ПараметрыФормы.Вставить("КлючНазначенияФормы", "ПеремещенияТоваров");
ПараметрыОткрытия.ПараметрыФормы.Вставить("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Возврат ПараметрыОткрытия;
КонецФункции
#Область ПроведениеПоРеглУчету
Функция ТекстОтраженияВРеглУчете() Экспорт
Возврат ПеремещениеТоваровЛокализация.ТекстОтраженияВРеглУчете();
КонецФункции
Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт
Возврат ПеремещениеТоваровЛокализация.ТекстЗапросаВТОтраженияВРеглУчете();
КонецФункции
#КонецОбласти
Функция РезультатЗапросаПоОстаткамЗаказов(ДанныеОтбора, КонтекстВызова) Экспорт
ПараметрыЗапросов = Новый Структура("ОтобратьПоЗаказу, МассивЗаказов,
|Организация, СкладОтправитель, СкладПолучатель,
|Регистратор, ТоварыНакладной");
ПараметрыЗапросов.Вставить("УчитыватьСобирается", Ложь);
ПараметрыЗапросов.Вставить("ЗаполнятьПоСобирается", Ложь);
СписокЗапросов = Новый СписокЗначений();
ИменаПодзапросов = Новый Массив();
Если КонтекстВызова = "СозданиеНаОсновании" Тогда
ПараметрыЗапросаДляСозданияНаОсновании(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
ИначеЕсли КонтекстВызова = "Подбор" Тогда
ПараметрыЗапросаДляПодбора(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
ИначеЕсли КонтекстВызова = "ПерезаполнениеПоОрдерам" Тогда
ПараметрыЗапросаДляПерезаполненияПоОрдерам(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
ИначеЕсли КонтекстВызова = "ЗаполнениеПоЗаказам" Тогда
ПараметрыЗапросаДляЗаполненияПоЗаказам(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
КонецЕсли;
ТекстыЗапросов = Новый Соответствие();
ТекстыЗапросов.Вставить("ВтЗаказыОтбор", ТекстЗапросаВременнойТаблицыРаспоряжений());
ТекстыЗапросов.Вставить("ВтНакладная", ТекстЗапросаВременнойТаблицыНакладной());
ТекстыЗапросов.Вставить("ТаблицаОтгружено", ТекстЗапросаОтгруженоПоОрдерам());
ТекстыПодзапросов = Новый Соответствие();
ТекстыПодзапросов.Вставить("БлокРегистрЗаказы", ТекстЗапросаОстаткиРегистраЗаказы());
ТекстыПодзапросов.Вставить("БлокСторноНакладная", ТекстЗапросаСторноНакладная());
ТекстыПодзапросов.Вставить("БлокНовыеДвиженияНакладная", ТекстЗапросаНовыеДвиженияНакладная());
Для Каждого Элемент Из СписокЗапросов Цикл
Элемент.Представление = ТекстыЗапросов[Элемент.Значение];
КонецЦикла;
Элемент = СписокЗапросов.НайтиПоЗначению("ТаблицаОформить");
Если Элемент <> Неопределено Тогда
Элемент.Представление = ТекстЗапросаОбъединения(ИменаПодзапросов, ТекстыПодзапросов);
КонецЕсли;
Запрос = Новый Запрос();
Для Каждого Параметр Из ПараметрыЗапросов Цикл
Запрос.УстановитьПараметр(Параметр.Ключ, Параметр.Значение);
КонецЦикла;
Для Каждого Элемент Из СписокЗапросов Цикл
Запрос.Текст = Запрос.Текст + Элемент.Представление;
КонецЦикла;
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.ВыполнитьПакет();
СтруктураРезультата = Новый Структура();
Для Каждого Элемент Из СписокЗапросов Цикл
СтруктураРезультата.Вставить(Элемент.Значение, РезультатЗапроса[СписокЗапросов.Индекс(Элемент)].Выгрузить());
КонецЦикла;
Возврат СтруктураРезультата;
КонецФункции
Функция СтруктураСостояниеВыполненияДокумента() Экспорт
СтруктураСостояние = Отчеты.СостояниеВыполненияДокументов.ИнициализироватьСтруктуруСостояниеВыполненияДокумента();
СтруктураСостояние.Вставить("ВыводитьТаблицыОтгрузка", 1);
СтруктураСостояние.Вставить("ВыводитьТаблицыПоступление", 2);
СтруктураСостояние.Вставить("ЭтоНакладная", Истина);
СтруктураСостояние.Вставить("СкладВШапке", Истина);
СтруктураСостояние.Вставить("ИмяПоляСклад", "СкладОтправитель");
СтруктураСостояние.Вставить("ИмяПоляСкладПолучатель", "СкладПолучатель");
СтруктураСостояние.Вставить("ТекстТоварУслугаОтгрузка", НСтр("ru = 'Товар'"));
СтруктураСостояние.Вставить("ТекстТоварУслугаПоступление", НСтр("ru = 'Товар'"));
СтруктураСостояние.Вставить("ИмяПоляНакладнаяПоЗаказам", "ПеремещениеПоЗаказам");
ТекстЗапросаВТТоварыПоступление = ВременнаяТаблицаТоварыПоступлениеДляОтчетаСостояниеВыполнения();
СтруктураДопЗапросов = Новый Структура();
СтруктураДопЗапросов.Вставить("ТекстЗапросаВТТоварыПоступление", ТекстЗапросаВТТоварыПоступление);
СтруктураСостояние.Вставить("СтруктураДопЗапросов", СтруктураДопЗапросов);
Возврат СтруктураСостояние;
КонецФункции
#Область Заполнение
Функция ПараметрыЗаполненияДокумента() Экспорт
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("МассивЗаказов", Неопределено);
ПараметрыЗаполнения.Вставить("ФормаОткрыта", Ложь);
ПараметрыЗаполнения.Вставить("ЗаполнятьПоОрдеру", Неопределено);
ПараметрыЗаполнения.Вставить("РеквизитыШапки", Неопределено);
ПараметрыЗаполнения.Вставить("ИмяДокумента", "ПеремещениеТоваров");
ПараметрыЗаполнения.Вставить("ИмяРегистраЗаказ", "ЗаказыНаПеремещение");
ПараметрыЗаполнения.Вставить("ИмяПоляЗаказ", "ЗаказНаПеремещение");
ПараметрыЗаполнения.Вставить("КлючевыеПоля", "Номенклатура, Характеристика, Серия, Назначение, НазначениеОтправителя");
Возврат ПараметрыЗаполнения;
КонецФункции
Процедура ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения, РеквизитыШапки, МассивЗаказов) Экспорт
ПараметрыЗаполнения.МассивЗаказов = МассивЗаказов;
ПараметрыЗаполнения.РеквизитыШапки = РеквизитыШапки;
Если ПараметрыЗаполнения.ЗаполнятьПоОрдеру = Неопределено Тогда
ПараметрыЗаполнения.ЗаполнятьПоОрдеру = НакладныеСервер.ЗаполнятьПоОрдеру(РеквизитыШапки.СкладОтправитель);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьШапкуДокументаПоЗаказу(Объект, ПараметрыЗаполнения, МассивЗаказов) Экспорт
ЗаполнитьЗначенияСвойств(Объект, ПараметрыЗаполнения.РеквизитыШапки);
Объект.ПеремещениеПоЗаказам = Истина;
Если ПолучитьФункциональнуюОпцию("ИспользоватьПеремещениеПоНесколькимЗаказам") Тогда
Сделка = Справочники.СделкиСКлиентами.ПустаяСсылка();
КонецЕсли;
Объект.Дата = ?(МассивЗаказов.Количество() = 1,
ЗаказыСервер.ПолучитьМинимальнуюДатуОтгрузкиЗаказа(МассивЗаказов, ПараметрыЗаполнения.ИмяРегистраЗаказ,
ПараметрыЗаполнения.ИмяПоляЗаказ),
ЗаказыСервер.ПолучитьМаксимальнуюДатуОтгрузкиЗаказа(МассивЗаказов, ПараметрыЗаполнения.ИмяРегистраЗаказ,
ПараметрыЗаполнения.ИмяПоляЗаказ));
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ПеремещениеТоваров);
НоменклатураСервер.ЗаполнитьСерииПоFEFO(Объект, ПараметрыУказанияСерий, Ложь);
Если МассивЗаказов.Количество() = 1 Тогда
Объект.ЗаказНаПеремещение = МассивЗаказов[0];
Иначе
ЗаказыСервер.ЗаполнитьЗаказВШапкеПоЗаказамВТабличнойЧасти(Объект.ЗаказНаПеремещение, Объект.Товары, ПараметрыЗаполнения.ИмяПоляЗаказ);
КонецЕсли;
КонецПроцедуры
Процедура ОбновитьЗависимыеРеквизитыТабличнойЧасти(Товары, ПараметрыЗаполнения) Экспорт
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Товары, СтруктураДействий);
КонецПроцедуры
Функция ДанныеТаблицыТоварыДокумента(Накладная) Экспорт
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.Упаковка КАК Упаковка,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| Таблица.Количество КАК Количество,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Таблица.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерийОтправитель,
| Таблица.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерийПолучатель,
| ВЫБОР КОГДА Таблица.Ссылка.ПеремещениеПоЗаказам
| ТОГДА Таблица.ЗаказНаПеремещение
| ИНАЧЕ Таблица.Ссылка
| КОНЕЦ КАК ЗаказНаПеремещение,
| Таблица.Сделка КАК Сделка,
| Таблица.Назначение КАК Назначение,
| Таблица.НазначениеОтправителя КАК НазначениеОтправителя,
| Таблица.Серия КАК Серия,
| Таблица.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Таблица.ИдентификаторСтроки КАК ИдентификаторСтроки
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК Таблица
|ГДЕ
| Таблица.Ссылка = &Накладная";
Запрос.УстановитьПараметр("Накладная", Накладная);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат;
КонецФункции
Процедура ЗаполнитьПоЗаказамОрдерам(Товары, Регистратор, ПараметрыЗаполнения, ШтрихкодыУпаковок) Экспорт
Если ПараметрыЗаполнения.ЗаполнятьПоОрдеру Тогда
РаспоряженияДляОрдеров = ПараметрыЗаполнения.МассивЗаказов;
РегистраторДляОрдеров = Регистратор;
Иначе
РаспоряженияДляОрдеров = Неопределено;
РегистраторДляОрдеров = Неопределено;
КонецЕсли;
ТекстЗапросаРегистраЗаказы = РегистрыНакопления.ЗаказыНаПеремещение.ТекстЗапросаОстатки("ВтДанныеУчета");
ТекстЗапросаЗаказ = Документы.ЗаказНаПеремещение.ТекстЗапросаТоварыДокумента();
ТекстЗапроса = ТекстЗапросаРегистраЗаказы
+ ОбщегоНазначения.РазделительПакетаЗапросов()
+ ТекстЗапросаЗаказ;
Запрос = Новый Запрос();
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Распоряжения", ПараметрыЗаполнения.МассивЗаказов);
Запрос.УстановитьПараметр("Регистратор", Регистратор);
ТаблицаЗаказы = Запрос.Выполнить().Выгрузить();
ТаблицаЗаказы.Колонки.КОформлению.Имя = "КоличествоВЗаказе";
Запрос = Новый Запрос();
ТекстЗапросаОсталосьОформить = РегистрыНакопления.ТоварыКОтгрузке.ТекстЗапросаОсталосьОформить();
Запрос.Текст = ТекстЗапросаОсталосьОформить;
Запрос.УстановитьПараметр("Распоряжения", РаспоряженияДляОрдеров);
Запрос.УстановитьПараметр("Регистратор", РегистраторДляОрдеров);
ТаблицаОрдера = Запрос.Выполнить().Выгрузить();
ТаблицаОрдера.Колонки.Количество.Имя = "КоличествоВОрдере";
ТаблицаОрдера.Колонки.Распоряжение.Имя = "ЗаказНаПеремещение";
ТаблицаОрдера.Колонки.Собирается.Имя = "КоличествоСобирается";
ТаблицаОрдера.Колонки.Назначение.Имя = "НазначениеОтправителя";
Товары.Индексы.Добавить("ЗаказНаПеремещение, " + ПараметрыЗаполнения.КлючевыеПоля);
Ключ = "ЗаказНаПеремещение, КодСтроки, " + ПараметрыЗаполнения.КлючевыеПоля;
Условие = "ПО [Количество]";
НакладныеСервер.РаспределитьКоличество(ТаблицаЗаказы, Товары, "КоличествоВЗаказе", Ключ, Условие, Истина);
НакладныеСервер.ДополнитьТаблицу(ТаблицаЗаказы, Товары, "КоличествоВЗаказе");
Ключ = "ЗаказНаПеремещение, " + СтрЗаменить(ПараметрыЗаполнения.КлючевыеПоля, "Назначение, НазначениеОтправителя", "НазначениеОтправителя");
Условие = "[Количество], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Истина);
Условие = "НЕ [Количество], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Истина);
Условие = "[Количество], НЕ [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Истина);
Условие = "[Количество], НЕ [СтатусУказанияСерийОтправитель]";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера.НайтиСтроки(Новый Структура("Серия", Справочники.СерииНоменклатуры.ПустаяСсылка())),
Товары, "КоличествоВОрдере", СтрЗаменить(Ключ, "Серия,", ""), Условие, Ложь);
НакладныеСервер.ДополнитьТаблицу(ТаблицаОрдера, Товары, "КоличествоВОрдере");
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоСобирается", Ключ, "", Истина);
Если РаспоряженияДляОрдеров <> Неопределено Тогда
ПеремещениеТоваровЛокализация.ЗаполнитьШтрихКодыУпаковок(РаспоряженияДляОрдеров, Товары, ШтрихкодыУпаковок);
КонецЕсли;
КонецПроцедуры
Функция РаспоряженияНакладной(Накладная, РеквизитыШапки) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Регистратор", Накладная);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", РеквизитыШапки.ХозяйственнаяОперация);
Запрос.УстановитьПараметр("Организация", РеквизитыШапки.Организация);
Запрос.УстановитьПараметр("ОрганизацияПолучатель", РеквизитыШапки.ОрганизацияПолучатель);
Запрос.УстановитьПараметр("СкладОтправитель", РеквизитыШапки.СкладОтправитель);
Запрос.УстановитьПараметр("СкладПолучатель", РеквизитыШапки.СкладПолучатель);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказНаПеремещение.Ссылка КАК Заказ
|ИЗ
| Документ.ЗаказНаПеремещение КАК ЗаказНаПеремещение
|ГДЕ
| ЗаказНаПеремещение.ХозяйственнаяОперация = &ХозяйственнаяОперация
| И ЗаказНаПеремещение.Организация = &Организация
| И ЗаказНаПеремещение.ОрганизацияПолучатель = &ОрганизацияПолучатель
| И ЗаказНаПеремещение.СкладОтправитель = &СкладОтправитель
| И ЗаказНаПеремещение.СкладПолучатель = &СкладПолучатель
| И ЗаказНаПеремещение.Проведен
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Регистратор КАК Заказ";
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Заказ");
КонецФункции
Функция КлючевыеПоляШапкиРаспоряжения() Экспорт
Если ПолучитьФункциональнуюОпцию("ИспользоватьПеремещениеПоНесколькимЗаказам") Тогда
Возврат "ХозяйственнаяОперация, Организация, ОрганизацияПолучатель, СкладОтправитель, СкладПолучатель,
|Подразделение, ВариантПриемкиТоваров";
Иначе
Возврат "Ссылка";
КонецЕсли;
КонецФункции
#КонецОбласти
Функция СтатусыДокументаИзменяемыеИзСписка() Экспорт
Таблица = ОбщегоНазначенияУТ.ТаблицаСтатусовИзменяемыхИзСписка();
Если ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыПеремещенийТоваров") Тогда
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыПеремещенийТоваров.Отгружено);
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыПеремещенийТоваров.Принято);
КонецЕсли;
Возврат Таблица
КонецФункции
Функция МакетФормыВыбораНазначений() Экспорт
МакетФормы = Справочники.Назначения.МакетФормыВыбораНазначений();
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы);
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ШаблонНазначения.ВидимыеОтборыНаФорме.Вставить("НаправлениеДеятельности", НСтр("ru='Только назначения направления деятельности ""%1""'"));
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.Товары.Назначение", "Отправитель");
ОписаниеКолонок.Колонки.НайтиПоЗначению("ВНаличии").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.СкладОтправитель";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.Товары.Назначение", "Получатель");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.СкладПолучатель";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказовВсеСклады", Истина, "Объект.Товары.Назначение", "ВсеСклады");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
Возврат МакетФормы;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И( ЗначениеРазрешено(СкладОтправитель)
| ИЛИ ЗначениеРазрешено(СкладПолучатель)
| ) ";
КонецПроцедуры
#КонецОбласти
Функция КоллекцияТабличныхЧастейТоваров() Экспорт
ТаблицыДокумента = Новый Структура("Товары");
Возврат ТаблицыДокумента;
КонецФункции
#Область Печать
Функция ПравилаПечатиЗаданияНаОтборРазмещение() Экспорт
ПравилаПечати = Новый Массив;
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
ПравилаПечатиЗадания.ОперацияПоступления = Истина;
ПравилаПечатиЗадания.ИмяПоляСклад = "СкладПолучатель";
ПравилаПечатиЗадания.ИспользуютсяИсправленияДокумента = Истина;
ПравилаПечати.Добавить(ПравилаПечатиЗадания);
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
ПравилаПечатиЗадания.ИмяПоляСклад = "СкладОтправитель";
ПравилаПечатиЗадания.ИспользуютсяИсправленияДокумента = Истина;
ПравилаПечати.Добавить(ПравилаПечатиЗадания);
Возврат ПравилаПечати;
КонецФункции
#КонецОбласти
#Область ПодакцизныеТовары
Функция ИспользуютсяПодакцизныеТовары(ДокументОбъект) Экспорт
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьПодакцизныеТовары") Тогда
Возврат Ложь;
КонецЕсли;
Возврат ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеТоваров;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Проведение
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Дата КАК Период,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.ВариантОбособленногоУчетаТоваров КАК ВариантОбособленногоУчетаТоваров,
| ДанныеДокумента.КорОрганизация КАК КорОрганизация,
| ДанныеДокумента.СкладОтправитель КАК СкладОтправитель,
| ДанныеДокумента.СкладПолучатель КАК СкладПолучатель,
| ДанныеДокумента.ЦеховаяКладоваяПолучателя КАК ЦеховаяКладоваяПолучателя,
| ПРЕДСТАВЛЕНИЕ(ДанныеДокумента.СкладОтправитель) КАК СкладОтправительПредставление,
| ПРЕДСТАВЛЕНИЕ(ДанныеДокумента.СкладПолучатель) КАК СкладПолучательПредставление,
| ДанныеДокумента.ЗаказНаПеремещение КАК ЗаказНаПеремещение,
| ДанныеДокумента.ПеремещениеПоЗаказам КАК ПеремещениеПоЗаказам,
| ДанныеДокумента.Дата КАК ДатаРаспоряжения,
| ДанныеДокумента.ДатаПоступления КАК ДатаПоступления,
| ДанныеДокумента.Статус КАК Статус,
| ДанныеДокумента.ПеремещениеПодДеятельность КАК ПеремещениеПодДеятельность,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.Ответственный КАК Менеджер,
| ДанныеДокумента.Сделка КАК Сделка,
| ДанныеДокумента.ОбособленныйУчетТоваровПоСделке КАК ОбособленныйУчетТоваровПоСделке,
| ДанныеДокумента.ОрдернаяСхемаПриОтгрузке КАК ОрдернаяСхемаПриОтгрузке,
| ДанныеДокумента.ОрдернаяСхемаПриПоступлении КАК ОрдернаяСхемаПриПоступлении,
| ДанныеДокумента.ОрганизацияПолучатель КАК ОрганизацияПолучатель,
| ДанныеДокумента.Ответственный КАК Ответственный,
| ДанныеДокумента.Автор КАК Автор,
| ДанныеДокумента.Комментарий КАК Комментарий,
| ДанныеДокумента.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеДокумента.Исправление КАК Исправление,
| ДанныеДокумента.СторнируемыйДокумент КАК СторнируемыйДокумент,
| ДанныеДокумента.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеДокумента.НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|ИЗ
| ДанныеДокументаШапка КАК ДанныеДокумента";
Результат = Запрос.Выполнить();
СтруктураПараметров = ОбщегоНазначенияУТ.ПерваяСтрокаРезультатаЗапросаВСтруктуру(Результат);
ОбщегоНазначенияУТ.УстановитьПараметрыЗапроса(Запрос, СтруктураПараметров);
НакладнаяЯвляетсяРаспоряжением = ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(СтруктураПараметров.ВариантПриемкиТоваров);
Запрос.УстановитьПараметр("ПоЗаказуНаПеремещение", СтруктураПараметров.ПеремещениеПоЗаказам);
Запрос.УстановитьПараметр("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета",
ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета"));
ПустоеЗначениеЗаказа = Новый Массив;
ПустоеЗначениеЗаказа.Добавить(Неопределено);
ПустоеЗначениеЗаказа.Добавить(Документы.ЗаказНаПеремещение.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустоеЗначениеЗаказа", ПустоеЗначениеЗаказа);
Запрос.УстановитьПараметр("НомерНаПечать", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(СтруктураПараметров.Номер));
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.ПеремещениеТоваров"));
Запрос.УстановитьПараметр("НакладнаяЯвляетсяРаспоряжением", НакладнаяЯвляетсяРаспоряжением);
ИнформацияПоСкладуОтправителю = "";
Если ЗначениеЗаполнено(СтруктураПараметров.СкладОтправитель) Тогда
ШаблонСтроки = "ru='Перемещение с ""%1""'";
ИнформацияПоСкладуОтправителю = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, СтруктураПараметров.СкладОтправительПредставление);
КонецЕсли;
Запрос.УстановитьПараметр("ИнформацияПоСкладуОтправителю", ИнформацияПоСкладуОтправителю);
ИнформацияПоСкладуПолучателю = "";
Если ЗначениеЗаполнено(СтруктураПараметров.СкладПолучатель) Тогда
ШаблонСтроки = "ru='Перемещение на ""%1""'";
ИнформацияПоСкладуПолучателю = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, СтруктураПараметров.СкладПолучательПредставление);
КонецЕсли;
Запрос.УстановитьПараметр("ИнформацияПоСкладуПолучателю", ИнформацияПоСкладуПолучателю);
РасчетСебестоимостиПрикладныеАлгоритмы.ЗаполнитьПараметрыИнициализации(Запрос, СтруктураПараметров);
КонецПроцедуры
Процедура ПолучитьДанныеДокумента(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
Если ДокументСсылка = Неопределено Тогда
Возврат;
КонецЕсли;
СписокЗапросов = Новый Массив;
ТекстЗапросаДанныеДокументаШапка(СписокЗапросов);
ТекстЗапросаДанныеДокументаТаблицаТовары(СписокЗапросов);
ТекстЗапросаДанныеДокументаТаблицаСерии(СписокЗапросов);
ТекстЗапросаДанныеДокументаТаблицаВидыЗапасов(СписокЗапросов);
ТекстЗапроса = СтрСоединить(СписокЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Выполнить();
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаШапка(СписокЗапросов)
ТекстЗапросаШапка =
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| Подразделения.ВариантОбособленногоУчетаТоваров КАК ПодразделениеВариантОбособленногоУчетаТоваров,
| ЕСТЬNULL(Подразделения.ВариантОбособленногоУчетаТоваров, ЗНАЧЕНИЕ(Перечисление.ВариантыОбособленногоУчетаТоваров.ПустаяСсылка)) КАК ВариантОбособленногоУчетаТоваров,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами)
| ТОГДА ДанныеДокумента.ОрганизацияПолучатель
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК КорОрганизация,
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами)
| ТОГДА ДанныеДокумента.ОрганизацияПолучатель
| ИНАЧЕ ДанныеДокумента.Организация
| КОНЕЦ КАК ОрганизацияПолучатель,
| ДанныеДокумента.СкладОтправитель КАК СкладОтправитель,
| ДанныеДокумента.СкладПолучатель КАК СкладПолучатель,
| СкладыПолучатели.ЦеховаяКладовая КАК ЦеховаяКладоваяПолучателя,
| СкладыПолучатели.ИспользоватьОрдернуюСхемуПриПоступлении КАК СкладПолучательИспользоватьОрдернуюСхемуПриПоступлении,
| СкладыПолучатели.ДатаНачалаОрдернойСхемыПриПоступлении КАК СкладПолучательДатаНачалаОрдернойСхемыПриПоступлении,
| СкладыОтправители.ИспользоватьОрдернуюСхемуПриОтгрузке КАК СкладОтправительИспользоватьОрдернуюСхемуПриОтгрузке,
| СкладыОтправители.ДатаНачалаОрдернойСхемыПриОтгрузке КАК СкладОтправительДатаНачалаОрдернойСхемыПриОтгрузке,
| СкладыОтправители.ИспользоватьОрдернуюСхемуПриОтгрузке
| И ДанныеДокумента.Дата >= СкладыОтправители.ДатаНачалаОрдернойСхемыПриОтгрузке КАК ОрдернаяСхемаПриОтгрузке,
| СкладыПолучатели.ИспользоватьОрдернуюСхемуПриПоступлении
| И ДанныеДокумента.Дата >= СкладыПолучатели.ДатаНачалаОрдернойСхемыПриПоступлении КАК ОрдернаяСхемаПриПоступлении,
| ДанныеДокумента.ЗаказНаПеремещение КАК ЗаказНаПеремещение,
| ДанныеДокумента.ПеремещениеПоЗаказам КАК ПеремещениеПоЗаказам,
| ДанныеДокумента.Дата КАК ДатаРаспоряжения,
| ДанныеДокумента.Статус КАК Статус,
| ДанныеДокумента.ПеремещениеПодДеятельность КАК ПеремещениеПодДеятельность,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.Ответственный КАК Менеджер,
| ДанныеДокумента.Сделка КАК Сделка,
| ЕСТЬNULL(ДанныеДокумента.Сделка.ОбособленныйУчетТоваровПоСделке, ЛОЖЬ) КАК ОбособленныйУчетТоваровПоСделке,
| ДанныеДокумента.Ответственный КАК Ответственный,
| ДанныеДокумента.Автор КАК Автор,
| ДанныеДокумента.Комментарий КАК Комментарий,
| ДанныеДокумента.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеДокумента.Исправление КАК Исправление,
| ДанныеДокумента.СторнируемыйДокумент КАК СторнируемыйДокумент,
| ДанныеДокумента.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеДокумента.ДатаПоступления КАК ДатаПоступления,
| НастройкиХозяйственныхОпераций.Ссылка КАК НастройкаХозяйственнойОперации
|ПОМЕСТИТЬ ДанныеДокументаШапка
|ИЗ
| Документ.ПеремещениеТоваров КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтруктураПредприятия КАК Подразделения
| ПО ДанныеДокумента.Подразделение = Подразделения.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК СкладыПолучатели
| ПО ДанныеДокумента.СкладПолучатель = СкладыПолучатели.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК СкладыОтправители
| ПО ДанныеДокумента.СкладОтправитель = СкладыОтправители.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НастройкиХозяйственныхОпераций КАК НастройкиХозяйственныхОпераций
| ПО ДанныеДокумента.ХозяйственнаяОперация = НастройкиХозяйственныхОпераций.ХозяйственнаяОперация
|ГДЕ
| ДанныеДокумента.Ссылка В(&Ссылка)
|
|ИНДЕКСИРОВАТЬ ПО
| ДанныеДокумента.Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаШапка);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаТаблицаТовары(СписокЗапросов)
ТекстЗапросаТаблицаТовары =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерийОтправитель,
| ТаблицаТовары.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерийПолучатель,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.ЗаказНаПеремещение КАК ЗаказНаПеремещение,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Назначение,
| ТаблицаТовары.НазначениеОтправителя КАК НазначениеОтправителя,
| Назначения.ДвиженияПоСкладскимРегистрам КАК НазначениеДвиженияПоСкладскимРегистрам,
| НазначенияОтправителя.НаправлениеДеятельности КАК НазначениеОтправителяНаправлениеДеятельности,
| НазначенияОтправителя.ДвиженияПоСкладскимРегистрам КАК НазначениеОтправителяДвиженияПоСкладскимРегистрам
|ПОМЕСТИТЬ ДанныеДокументаТаблицаТовары
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК Упаковки
| ПО (Упаковки.Ссылка = ТаблицаТовары.Упаковка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Назначения КАК НазначенияОтправителя
| ПО (НазначенияОтправителя.Ссылка = ТаблицаТовары.НазначениеОтправителя)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Назначения КАК Назначения
| ПО (Назначения.Ссылка = ТаблицаТовары.Назначение)
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| ТаблицаТовары.Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаТаблицаТовары);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаТаблицаСерии(СписокЗапросов)
ТекстЗапросаТаблицаСерии =
"ВЫБРАТЬ
| ТаблицаСерии.Ссылка КАК Ссылка,
| ТаблицаСерии.Номенклатура КАК Номенклатура,
| ТаблицаСерии.Характеристика КАК Характеристика,
| ТаблицаСерии.НазначениеОтправителя КАК НазначениеОтправителя,
| Назначения.ДвиженияПоСкладскимРегистрам КАК НазначениеОтправителяДвиженияПоСкладскимРегистрам,
| ТаблицаСерии.Серия КАК Серия,
| ТаблицаСерии.Количество КАК Количество
|ПОМЕСТИТЬ ДанныеДокументаТаблицаСерии
|ИЗ
| Документ.ПеремещениеТоваров.Серии КАК ТаблицаСерии
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Назначения КАК Назначения
| ПО Назначения.Ссылка = ТаблицаСерии.НазначениеОтправителя
|ГДЕ
| ТаблицаСерии.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| ТаблицаСерии.Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаТаблицаСерии);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаТаблицаВидыЗапасов(СписокЗапросов)
ТекстЗапросаТаблицаВидыЗапасов =
"ВЫБРАТЬ
| ТаблицаВидыЗапасов.Ссылка КАК Ссылка,
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасов.Сделка КАК Сделка,
| ТаблицаВидыЗапасов.Назначение КАК Назначение,
| Назначения.ВидДеятельностиНДС КАК НазначениеВидДеятельностиНДС,
| ТаблицаВидыЗапасов.ВидЗапасовПолучателя КАК ВидЗапасовПолучателя,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаВидыЗапасов.Серия КАК Серия
|ПОМЕСТИТЬ ДанныеДокументаТаблицаВидыЗапасов
|ИЗ
| Документ.ПеремещениеТоваров.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Назначения КАК Назначения
| ПО (Назначения.Ссылка = ТаблицаВидыЗапасов.Назначение)
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| ТаблицаВидыЗапасов.Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаТаблицаВидыЗапасов);
КонецПроцедуры
Процедура ИнициализироватьКлючиАналитикиНоменклатуры(Запрос)
Если Запрос.Параметры.Свойство("КлючиАналитикиУчетаНоменклатурыИнициализированы") Тогда
Возврат;
КонецЕсли;
ЗапросАналитик = Новый Запрос;
ЗапросАналитик.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросАналитик.УстановитьПараметр("СкладПолучатель", Запрос.Параметры.СкладПолучатель);
ЗапросАналитик.УстановитьПараметр("Статус", Запрос.Параметры.Статус);
ЗапросАналитик.УстановитьПараметр("УчитыватьСебестоимостьТоваровПоНазначениям", Запрос.Параметры.УчитыватьСебестоимостьТоваровПоНазначениям);
ЗапросАналитик.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Серия КАК Серия,
| Таблица.Назначение КАК Назначение,
| Таблица.Склад КАК Склад
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.Серия КАК Серия,
| ТаблицаВидыЗапасов.Назначение КАК Назначение,
| &СкладПолучатель КАК Склад
| ИЗ
| Документ.ПеремещениеТоваров.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК Ключи
| ПО
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = Ключи.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = Ключи.Характеристика
| И ТаблицаВидыЗапасов.Серия = Ключи.Серия
| И ТаблицаВидыЗапасов.Назначение = Ключи.Назначение
| И &СкладПолучатель = Ключи.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Ключи.СтатьяКалькуляции
|
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.Серия КАК Серия,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| &СкладПолучатель КАК Склад
| ИЗ
| Документ.ПеремещениеТоваров.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК Ключи
| ПО
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = Ключи.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = Ключи.Характеристика
| И ТаблицаВидыЗапасов.Серия = Ключи.Серия
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = Ключи.Назначение
| И &СкладПолучатель = Ключи.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Ключи.СтатьяКалькуляции
|
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия КАК Серия,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад
| ИЗ
| Документ.ПеремещениеТоваров.ВидыЗапасов КАК ТаблицаВидыЗапасов
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК Ключи
| ПО
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = Ключи.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = Ключи.Характеристика
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия = Ключи.Серия
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = Ключи.Назначение
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения = Ключи.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Ключи.СтатьяКалькуляции
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара КАК Склад
| ИЗ
| Документ.ПеремещениеТоваров.ВидыЗапасов КАК ТаблицаВидыЗапасов
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК Ключи
| ПО
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = Ключи.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = Ключи.Характеристика
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = Ключи.Назначение
| И ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) = Ключи.Серия
| И ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара = Ключи.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Ключи.СтатьяКалькуляции
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| И ТаблицаВидыЗапасов.ВидЗапасовПолучателя.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)
| ) КАК Таблица
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Ключи
| ПО Таблица.Номенклатура = Ключи.Номенклатура
| И Таблица.Характеристика = Ключи.Характеристика
| И Таблица.Серия = Ключи.Серия
| И Таблица.Назначение = Ключи.Назначение
| И Таблица.Склад = Ключи.МестоХранения
|ГДЕ
| Ключи.Номенклатура ЕСТЬ NULL
|";
Выборка = ЗапросАналитик.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
РегистрыСведений.АналитикаУчетаНоменклатуры.СоздатьКлючАналитики(Выборка);
КонецЦикла;
Запрос.УстановитьПараметр("КлючиАналитикиУчетаНоменклатурыИнициализированы", Истина);
КонецПроцедуры
Процедура ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтВидыЗапасов";
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаВидыЗапасов.Ссылка КАК Ссылка,
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| КлючиАналитикиУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| КлючиАналитикиУчетаНоменклатуры.Характеристика КАК Характеристика,
| СкладскиеТерритории.ЦеховаяКладовая КАК ЦеховаяКладоваяОтправителя,
| ДанныеШапки.ЦеховаяКладоваяПолучателя КАК ЦеховаяКладоваяПолучателя,
| КлючиАналитикиУчетаНоменклатуры.Ссылка КАК АналитикаНоменклатурыОтправитель,
| Назначения.НаправлениеДеятельности КАК НаправлениеДеятельностиОтправитель,
| АналитикаБезНазначения.КлючАналитики КАК АналитикаНоменклатурыОтправительБезНазначения,
| АналитикаНоменклатурыПолучатель.КлючАналитики КАК АналитикаНоменклатурыПолучатель,
| Назначения.НаправлениеДеятельности КАК НаправлениеДеятельностиПолучатель,
| АналитикаПолучательБезНазначения.КлючАналитики КАК АналитикаНоменклатурыПолучательБезНазначения,
| АналитикаКомитента.КлючАналитики КАК АналитикаУчетаКомитента,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаВидыЗапасов.НазначениеВидДеятельностиНДС, ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)) <> ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| ТОГДА ТаблицаВидыЗапасов.НазначениеВидДеятельностиНДС
| ИНАЧЕ ДанныеШапки.ПеремещениеПодДеятельность
| КОНЕЦ КАК ВидДеятельностиНДС,
| ВидыЗапасов.Ссылка КАК ВидЗапасов,
| ВидыЗапасов.Валюта КАК Валюта,
| ВидыЗапасов.ТипЗапасов КАК ТипЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасовПолучателя КАК ВидЗапасовОприходование,
| ВидыЗапасовПолучателя.ТипЗапасов КАК ТипЗапасовОприходование,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ВидыЗапасов.РеализацияЗапасовДругойОрганизации КАК РеализацияЗапасовДругойОрганизации,
| ВидыЗапасов.ВидЗапасовВладельца КАК ВидЗапасовВладельца,
| АналитикаРасчетов.КлючАналитики КАК АналитикаРасчетовСКомитентом,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| ДанныеДокументаТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаВидыЗапасов.Ссылка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК КлючиАналитикиУчетаНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Назначения КАК Назначения
| ПО Назначения.Ссылка = КлючиАналитикиУчетаНоменклатуры.Назначение
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК СкладскиеТерритории
| ПО СкладскиеТерритории.Ссылка = КлючиАналитикиУчетаНоменклатуры.СкладскаяТерритория
| ПО (КлючиАналитикиУчетаНоменклатуры.Ссылка = ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК ВидыЗапасов
| ПО (ВидыЗапасов.Ссылка = ТаблицаВидыЗапасов.ВидЗапасов)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК ВидыЗапасовПолучателя
| ПО (ВидыЗапасовПолучателя.Ссылка = ТаблицаВидыЗапасов.ВидЗапасовПолучателя)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаБезНазначения
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = АналитикаБезНазначения.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = АналитикаБезНазначения.Характеристика
| И (ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаБезНазначения.Назначение)
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия = АналитикаБезНазначения.Серия
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения = АналитикаБезНазначения.МестоХранения
| И (ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаБезНазначения.СтатьяКалькуляции)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаНоменклатурыПолучатель
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = АналитикаНоменклатурыПолучатель.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = АналитикаНоменклатурыПолучатель.Характеристика
| И ТаблицаВидыЗапасов.Назначение = АналитикаНоменклатурыПолучатель.Назначение
| И ТаблицаВидыЗапасов.Серия = АналитикаНоменклатурыПолучатель.Серия
| И (&СкладПолучатель = АналитикаНоменклатурыПолучатель.МестоХранения)
| И (ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаНоменклатурыПолучатель.СтатьяКалькуляции)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаПолучательБезНазначения
| ПО (АналитикаНоменклатурыПолучатель.Номенклатура = АналитикаПолучательБезНазначения.Номенклатура)
| И (АналитикаНоменклатурыПолучатель.Характеристика = АналитикаПолучательБезНазначения.Характеристика)
| И (ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаПолучательБезНазначения.Назначение)
| И (АналитикаНоменклатурыПолучатель.Серия = АналитикаПолучательБезНазначения.Серия)
| И (АналитикаНоменклатурыПолучатель.МестоХранения = АналитикаПолучательБезНазначения.МестоХранения)
| И (ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаПолучательБезНазначения.СтатьяКалькуляции)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетов
| ПО (АналитикаРасчетов.Организация = &Организация)
| И (АналитикаРасчетов.Партнер = ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара)
| И (АналитикаРасчетов.Контрагент = ТаблицаВидыЗапасов.ВидЗапасов.Контрагент)
| И (АналитикаРасчетов.Договор = ТаблицаВидыЗапасов.ВидЗапасов.Договор)
| И (АналитикаРасчетов.НаправлениеДеятельности = ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаКомитента
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = АналитикаКомитента.Номенклатура
| И ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = АналитикаКомитента.Характеристика
| И (ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаКомитента.Назначение)
| И (ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) = АналитикаКомитента.Серия)
| И ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара = АналитикаКомитента.МестоХранения
| И (ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаКомитента.СтатьяКалькуляции)
|
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка В(&Ссылка)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
КонецПроцедуры
Функция ТекстЗапросаТаблицаЗаказыНаПеремещение(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЗаказыНаПеремещение";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| ТаблицаТовары.Ссылка.Дата КАК Период,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерийОтправитель В (10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.ЗаказНаПеремещение КАК ЗаказНаПеремещение,
| ТаблицаТовары.Количество КАК Заказано,
| ТаблицаТовары.Количество КАК КОформлению
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В (&Ссылка)
| И ТаблицаТовары.КодСтроки <> 0
| И &ПоЗаказуНаПеремещение
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход),
| ТаблицаТовары.Ссылка.Дата,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерийОтправитель В (10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ,
| ТаблицаТовары.КодСтроки,
| ТаблицаТовары.ЗаказНаПеремещение,
| 0,
| ТаблицаТовары.Количество
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В (&Ссылка)
| И ТаблицаТовары.КодСтроки = 0
| И &ПоЗаказуНаПеремещение
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход),
| ТаблицаТовары.Ссылка.Дата,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерийОтправитель В (10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ,
| ТаблицаТовары.КодСтроки,
| ТаблицаТовары.ЗаказНаПеремещение,
| 0,
| ТаблицаТовары.Количество
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В (&Ссылка)
| И ТаблицаТовары.КодСтроки = 0
| И &ПоЗаказуНаПеремещение";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ОформитьПриобретениеТоваровПоДвухходовке(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.ЗаказНаПеремещение КАК Заказ,
| ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.Исправление
| ТОГДА ТаблицаТовары.Ссылка.ИсправляемыйДокумент
| ИНАЧЕ ТаблицаТовары.Ссылка
| КОНЕЦ КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеШапки.Дата КАК Дата,
| ДанныеШапки.Дата КАК ДатаПланируемогоПоступления,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ДанныеШапки.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеШапки.СкладПолучатель КАК Склад,
| ДанныеШапки.СкладОтправитель КАК Отправитель,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерий,
| ДанныеШапки.ПеремещениеПоЗаказам
| И ТаблицаТовары.КодСтроки = 0 КАК СверхЗаказа,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ДанныеШапки.ПеремещениеПоЗаказам КАК ПоступлениеПоЗаказам,
| ИСТИНА КАК ЭтоНакладная
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаТовары.Ссылка)";
СкладыСервер.ОформитьПриобретениеТоваровПоДвухходовке(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента);
КонецПроцедуры
Процедура ОформитьПоступлениеТоваровПоДвухходовке(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
Если ДокументОбъект <> Неопределено
И ДокументОбъект.Статус <> Перечисления.СтатусыПеремещенийТоваров.Принято Тогда
Возврат;
КонецЕсли;
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.ЗаказНаПеремещение КАК Заказ,
| ВЫБОР
| КОГДА ДанныеШапки.Исправление
| ТОГДА ДанныеШапки.ИсправляемыйДокумент
| ИНАЧЕ ТаблицаТовары.Ссылка
| КОНЕЦ КАК Накладная,
| ДанныеШапки.Дата КАК Дата,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ДанныеШапки.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеШапки.СкладПолучатель КАК Склад,
| ДанныеШапки.СкладОтправитель КАК Отправитель,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТовары.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерийНаСкладах,
| ТаблицаТовары.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерийТоварыУПартнеров,
| ДанныеШапки.ПеремещениеПоЗаказам
| И ТаблицаТовары.КодСтроки = 0 КАК СверхЗаказа,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ДанныеШапки.ПеремещениеПоЗаказам КАК ПоступлениеПоЗаказам,
| ИСТИНА КАК ЭтоНакладная
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаТовары.Ссылка)
|ГДЕ
| ДанныеШапки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Принято)";
ТекущийОбъектМетаданных = Метаданные.Документы.ПеремещениеТоваров;
СкладыСервер.ОформитьПоступлениеТоваровПоДвухходовке(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента,
ТекущийОбъектМетаданных,
"Серии",
"ТаблицаТовары");
КонецПроцедуры
Процедура ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.Исправление
| ТОГДА ТаблицаТовары.Ссылка.ИсправляемыйДокумент
| ИНАЧЕ ТаблицаТовары.Ссылка
| КОНЕЦ КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ТаблицаТовары.ЗаказНаПеремещение КАК Заказ,
| ВЫБОР
| КОГДА ДанныеШапки.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеШапки.ДатаПоступления
| ИНАЧЕ ДанныеШапки.Дата
| КОНЕЦ КАК Дата,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ДанныеШапки.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеШапки.СкладПолучатель КАК Склад,
| ДанныеШапки.СкладОтправитель КАК Отправитель,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.СтатусУказанияСерийПолучатель КАК СтатусУказанияСерий,
| ДанныеШапки.ПеремещениеПоЗаказам
| И ТаблицаТовары.КодСтроки = 0 КАК СверхЗаказа,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ДанныеШапки.ПеремещениеПоЗаказам КАК ПоступлениеПоЗаказам,
| ИСТИНА КАК ЭтоНакладная
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаТовары.Ссылка)";
СкладыСервер.ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДокумента, "ТаблицаТовары");
КонецПроцедуры
Процедура ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияСерийТоваров";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаСерии.Номенклатура КАК Номенклатура,
| ТаблицаСерии.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаСерии.НазначениеОтправителя <> ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| И ТаблицаСерии.НазначениеОтправителяДвиженияПоСкладскимРегистрам
| ТОГДА ТаблицаСерии.НазначениеОтправителя
| КОНЕЦ КАК Назначение,
| ТаблицаСерии.Серия КАК Серия,
| ТаблицаСерии.Количество КАК Количество,
| ДанныеШапки.СкладОтправитель КАК Отправитель,
| ДанныеШапки.СкладПолучатель КАК Получатель,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтгрузкаПоПеремещению) КАК СкладскаяОперация,
| ТаблицаСерии.Ссылка КАК Документ,
| ДанныеШапки.Дата КАК Период,
| НЕ(ДанныеШапки.ОрдернаяСхемаПриОтгрузке
| ИЛИ ДанныеШапки.ОрдернаяСхемаПриПоступлении) КАК ЭтоСкладскоеДвижение
|ИЗ
| ДанныеДокументаТаблицаСерии КАК ТаблицаСерии
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаСерии.Ссылка)
|ГДЕ
| ТаблицаСерии.Ссылка В(&Ссылка)
| И ТаблицаСерии.Количество <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаСерии.Номенклатура,
| ТаблицаСерии.Характеристика,
| ВЫБОР
| КОГДА ТаблицаСерии.НазначениеОтправителя <> ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| И ТаблицаСерии.НазначениеОтправителяДвиженияПоСкладскимРегистрам
| ТОГДА ТаблицаСерии.НазначениеОтправителя
| КОНЕЦ,
| ТаблицаСерии.Серия,
| ТаблицаСерии.Количество,
| ДанныеШапки.СкладОтправитель,
| ДанныеШапки.СкладПолучатель,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтгрузкаПоПеремещению),
| ТаблицаСерии.Ссылка,
| ДанныеШапки.Дата,
| НЕ(ДанныеШапки.ОрдернаяСхемаПриОтгрузке
| ИЛИ ДанныеШапки.ОрдернаяСхемаПриПоступлении)
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаСерии
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаСерии.Ссылка)
|ГДЕ
| ТаблицаСерии.Ссылка В(&Ссылка)
| И ТаблицаСерии.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
КонецПроцедуры
Процедура ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
ИмяРегистра = "ТоварыОрганизаций";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат;
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ЧастиТекстаЗапроса = Новый Массив;
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| 1 КАК Порядок,
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| ДанныеШапки.Дата КАК Период,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.РеализацияЗапасовДругойОрганизации
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасовВладельца.Организация
| ИНАЧЕ ДанныеШапки.Организация
| КОНЕЦ КАК Организация,
| ДанныеШапки.Организация КАК ОрганизацияОтгрузки,
| ТаблицаВидыЗапасов.АналитикаНоменклатурыОтправитель КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.РеализацияЗапасовДругойОрганизации
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасовВладельца
| ИНАЧЕ ТаблицаВидыЗапасов.ВидЗапасов
| КОНЕЦ КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ВидДеятельностиНДС КАК НалогообложениеНДС,
| ТаблицаВидыЗапасов.АналитикаНоменклатурыПолучатель КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасовОприходование КАК КорВидЗапасов
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаВидыЗапасов.Ссылка)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
Если ДокументОбъект = Неопределено
Или ДокументОбъект.Статус = Перечисления.СтатусыПеремещенийТоваров.Принято Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| 2,
| ТаблицаВидыЗапасов.НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход),
| ДанныеШапки.Дата,
| ДанныеШапки.ОрганизацияПолучатель,
| ДанныеШапки.Организация,
| ТаблицаВидыЗапасов.АналитикаНоменклатурыПолучатель,
| ТаблицаВидыЗапасов.Номенклатура,
| ТаблицаВидыЗапасов.Характеристика,
| ТаблицаВидыЗапасов.ВидЗапасовОприходование,
| ТаблицаВидыЗапасов.НомерГТД,
| ТаблицаВидыЗапасов.Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ,
| ДанныеШапки.ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО,
| НЕОПРЕДЕЛЕНО,
| ТаблицаВидыЗапасов.ВидЗапасов
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаВидыЗапасов.Ссылка)
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Принято)
|
|УПОРЯДОЧИТЬ ПО
| Порядок,
| НомерСтроки";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
ТекстЗапроса = СтрСоединить(ЧастиТекстаЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
КонецПроцедуры
Процедура ТекстЗапросаТаблицаТоварыОрганизацийКПередаче(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыОрганизацийКПередаче";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат;
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| Запасы.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| ДанныеШапки.Дата КАК Период,
| Запасы.ВидЗапасовВладельца.Организация КАК ОрганизацияВладелец,
| Запасы.АналитикаНоменклатурыОтправитель КАК АналитикаУчетаНоменклатуры,
| Запасы.Номенклатура КАК Номенклатура,
| Запасы.Характеристика КАК Характеристика,
| Запасы.ВидЗапасов КАК ВидЗапасовПродавца,
| Запасы.НомерГТД КАК НомерГТД,
| Запасы.Количество КАК Количество
|ИЗ
| ВтВидыЗапасов КАК Запасы
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = Запасы.Ссылка)
|ГДЕ
| Запасы.РеализацияЗапасовДругойОрганизации
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
КонецПроцедуры
Процедура ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
Если ДокументОбъект <> Неопределено
И ДокументОбъект.Статус <> Перечисления.СтатусыПеремещенийТоваров.Принято Тогда
Возврат;
КонецЕсли;
ИмяРегистра = "ДвиженияНоменклатураНоменклатура";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат;
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ЧастиТекстаЗапроса = Новый Массив;
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ДанныеШапки.Дата КАК Период,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеШапки.Организация КАК Организация,
| ДанныеШапки.Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаВидыЗапасов.АналитикаНоменклатурыОтправитель
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаНоменклатурыОтправительБезНазначения
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.НаправлениеДеятельностиОтправитель КАК НаправлениеДеятельности,
| ДанныеШапки.СкладОтправитель КАК Склад,
| ТаблицаВидыЗапасов.ТипЗапасов КАК ТипЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ВЫБОР
| КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаВидыЗапасов.АналитикаНоменклатурыПолучатель
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаНоменклатурыПолучательБезНазначения
| КОНЕЦ КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.НаправлениеДеятельностиПолучатель КАК КорНаправлениеДеятельности,
| ДанныеШапки.СкладПолучатель КАК КорСклад,
| ТаблицаВидыЗапасов.ВидЗапасовОприходование.ТипЗапасов КАК КорТипЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасовОприходование КАК КорВидЗапасов,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ВЫБОР
| КОГДА ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами)
| ТОГДА 0
| ИНАЧЕ ТаблицаВидыЗапасов.Количество
| КОНЕЦ КАК КорКоличество,
| 0 КАК Стоимость,
| 0 КАК СтоимостьБезНДС,
| 0 КАК СтоимостьРегл,
| ДанныеШапки.Ссылка КАК ДокументДвижения,
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасов
| ИНАЧЕ ТаблицаВидыЗапасов.Номенклатура
| КОНЕЦ КАК ИсточникГФУНоменклатуры,
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасовОприходование
| ИНАЧЕ ТаблицаВидыЗапасов.Номенклатура
| КОНЕЦ КАК КорИсточникГФУНоменклатуры,
| ДанныеШапки.КорОрганизация КАК КорОрганизация
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаВидыЗапасов.Ссылка)
|ГДЕ
| ДанныеШапки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Принято)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
Если ДокументОбъект = Неопределено
Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ДанныеШапки.Дата,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВнутреннееПоступлениеТоваров),
| ДанныеШапки.КорОрганизация,
| ДанныеШапки.Подразделение,
|
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаВидыЗапасов.АналитикаНоменклатурыОтправитель
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаНоменклатурыОтправительБезНазначения
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.НаправлениеДеятельностиОтправитель КАК НаправлениеДеятельности,
| ДанныеШапки.СкладОтправитель,
| ТаблицаВидыЗапасов.ТипЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасов,
|
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаВидыЗапасов.АналитикаНоменклатурыПолучатель
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаНоменклатурыПолучательБезНазначения
| КОНЕЦ,
| ТаблицаВидыЗапасов.НаправлениеДеятельностиПолучатель КАК КорНаправлениеДеятельности,
| ДанныеШапки.СкладПолучатель,
| ТаблицаВидыЗапасов.ТипЗапасовОприходование,
| ТаблицаВидыЗапасов.ВидЗапасовОприходование,
| 0,
| ТаблицаВидыЗапасов.Количество,
| 0,
| 0,
| 0,
| ДанныеШапки.Ссылка КАК ДокументДвижения,
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасов
| ИНАЧЕ ТаблицаВидыЗапасов.Номенклатура
| КОНЕЦ,
| ВЫБОР
| КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасовОприходование
| ИНАЧЕ ТаблицаВидыЗапасов.Номенклатура
| КОНЕЦ,
| ДанныеШапки.Организация КАК КорОрганизация
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаВидыЗапасов.Ссылка)
|ГДЕ
| ДанныеШапки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Принято)
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами)";
КонецЕсли;
ТекстЗапроса = СтрСоединить(ЧастиТекстаЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
КонецПроцедуры
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтОснований", ТекстыЗапроса) Тогда
ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.ДатаДокументаИБ КАК ДатаДокументаИБ,
| ДанныеДокумента.НомерДокументаИБ КАК НомерДокументаИБ,
| ДанныеДокумента.ТипСсылки КАК ТипСсылки,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.МестоХранения КАК МестоХранения,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.Ответственный КАК Ответственный,
| ДанныеДокумента.Автор КАК Автор,
| ДанныеДокумента.Комментарий КАК Комментарий,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Сумма КАК Сумма,
| ДанныеДокумента.Статус КАК Статус,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеДокумента.ДополнительнаяЗапись КАК ДополнительнаяЗапись,
| ДанныеДокумента.Дополнительно КАК Дополнительно,
| ДанныеДокумента.ДатаПервичногоДокумента КАК ДатаПервичногоДокумента,
| ДанныеДокумента.НомерПервичногоДокумента КАК НомерПервичногоДокумента,
| ДанныеДокумента.ДатаДокументаИБ КАК ДатаОтраженияВУчете,
| ДанныеДокумента.Исправление КАК СторноИсправление,
| ДанныеДокумента.СторнируемыйДокумент КАК СторнируемыйДокумент,
| ДанныеДокумента.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| НЕОПРЕДЕЛЕНО КАК Приоритет
|ИЗ
| ВтОснований КАК ДанныеДокумента";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеШапки.ПеремещениеПоЗаказам
| И ТоварыДокумента.ЗаказНаПеремещение <> ЗНАЧЕНИЕ(Документ.ЗаказНаПеремещение.ПустаяСсылка)
| ТОГДА ТоварыДокумента.ЗаказНаПеремещение
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ДанныеШапки.Ссылка КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеШапки.СкладПолучатель КАК Получатель,
| ДанныеШапки.СкладОтправитель КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.НазначениеОтправителя КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ДанныеШапки.ПеремещениеПоЗаказам
| И ТоварыДокумента.КодСтроки = 0 КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ДанныеШапки.ПеремещениеПоЗаказам КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ДанныеШапки.Ссылка = ТоварыДокумента.Ссылка
|ГДЕ
| ТоварыДокумента.Количество <> 0";
СкладыСервер.ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеШапки.ПеремещениеПоЗаказам
| И ТоварыДокумента.ЗаказНаПеремещение <> ЗНАЧЕНИЕ(Документ.ЗаказНаПеремещение.ПустаяСсылка)
| ТОГДА ТоварыДокумента.ЗаказНаПеремещение
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ДанныеШапки.Ссылка КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеШапки.СкладПолучатель КАК Получатель,
| ДанныеШапки.СкладОтправитель КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.НазначениеОтправителя КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерийОтправитель КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ДанныеШапки.ПеремещениеПоЗаказам
| И ТоварыДокумента.КодСтроки = 0 КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ДанныеШапки.ПеремещениеПоЗаказам КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|ГДЕ
| ТоварыДокумента.Количество <> 0
| И ТоварыДокумента.Ссылка В(&Ссылка)";
ОбъектМетаданных = Метаданные.Документы.ПеремещениеТоваров;
ИмяТЧСерии = "Серии";
СкладыСервер.ОформитьОтгрузкуТоваров(Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДанныхДокумента,
ОбъектМетаданных,
ИмяТЧСерии);
КонецПроцедуры
Функция ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтОснований";
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаРеестрДокументов.Ссылка КАК Ссылка,
| ТаблицаРеестрДокументов.ДатаДокументаИБ КАК ДатаДокументаИБ,
| МАКСИМУМ(ТаблицаРеестрДокументов.НомерДокументаИБ) КАК НомерДокументаИБ,
| ТаблицаРеестрДокументов.ТипСсылки КАК ТипСсылки,
| ТаблицаРеестрДокументов.Организация КАК Организация,
| ТаблицаРеестрДокументов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаРеестрДокументов.Партнер КАК Партнер,
| ТаблицаРеестрДокументов.Контрагент КАК Контрагент,
| ВЫБОР
| КОГДА ТаблицаРеестрДокументов.КоличествоНаправленийДеятельности = 1
| ТОГДА ТаблицаРеестрДокументов.НаправлениеДеятельности
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК НаправлениеДеятельности,
| ТаблицаРеестрДокументов.МестоХранения КАК МестоХранения,
| ТаблицаРеестрДокументов.Подразделение КАК Подразделение,
| МАКСИМУМ(ТаблицаРеестрДокументов.Ответственный) КАК Ответственный,
| МАКСИМУМ(ТаблицаРеестрДокументов.Автор) КАК Автор,
| МАКСИМУМ(ТаблицаРеестрДокументов.Комментарий) КАК Комментарий,
| МАКСИМУМ(ТаблицаРеестрДокументов.Валюта) КАК Валюта,
| МАКСИМУМ(ТаблицаРеестрДокументов.Сумма) КАК Сумма,
| МАКСИМУМ(ТаблицаРеестрДокументов.Статус) КАК Статус,
| МАКСИМУМ(ТаблицаРеестрДокументов.Проведен) КАК Проведен,
| МАКСИМУМ(ТаблицаРеестрДокументов.ПометкаУдаления) КАК ПометкаУдаления,
| МИНИМУМ(ТаблицаРеестрДокументов.ДополнительнаяЗапись) КАК ДополнительнаяЗапись,
| МАКСИМУМ(ТаблицаРеестрДокументов.Дополнительно) КАК Дополнительно,
| МАКСИМУМ(ТаблицаРеестрДокументов.ДатаПервичногоДокумента) КАК ДатаПервичногоДокумента,
| МАКСИМУМ(ТаблицаРеестрДокументов.НомерПервичногоДокумента) КАК НомерПервичногоДокумента,
| МАКСИМУМ(ТаблицаРеестрДокументов.Исправление) КАК Исправление,
| МАКСИМУМ(ТаблицаРеестрДокументов.СторнируемыйДокумент) КАК СторнируемыйДокумент,
| МАКСИМУМ(ТаблицаРеестрДокументов.ИсправляемыйДокумент) КАК ИсправляемыйДокумент
|ПОМЕСТИТЬ ВтОснований
|ИЗ
| (ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК Партнер,
| НЕОПРЕДЕЛЕНО КАК Контрагент,
| МАКСИМУМ(ЕСТЬNULL(ТаблицаТовары.НазначениеОтправителя.НаправлениеДеятельности, ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК НаправлениеДеятельности,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ТаблицаТовары.НазначениеОтправителя.НаправлениеДеятельности, ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК КоличествоНаправленийДеятельности,
| &СкладОтправитель КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Ответственный КАК Ответственный,
| &Автор КАК Автор,
| ВЫРАЗИТЬ(&Комментарий КАК СТРОКА(100)) КАК Комментарий,
| НЕОПРЕДЕЛЕНО КАК Валюта,
| 0 КАК Сумма,
| &Статус КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| &ИнформацияПоСкладуПолучателю КАК Дополнительно,
| &Исправление КАК Исправление,
| &СторнируемыйДокумент КАК СторнируемыйДокумент,
| &ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| &Период КАК ДатаПервичногоДокумента,
| &НомерНаПечать КАК НомерПервичногоДокумента
|
| ИЗ
| Документ.ПеремещениеТоваров КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ТаблицаТовары
| ПО ДанныеДокумента.Ссылка = ТаблицаТовары.Ссылка
| ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|
| СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами)
| ТОГДА &ОрганизацияПолучатель
| ИНАЧЕ &Организация
| КОНЕЦ КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК Партнер,
| НЕОПРЕДЕЛЕНО КАК Контрагент,
| МАКСИМУМ(ЕСТЬNULL(ТаблицаТовары.Назначение.НаправлениеДеятельности, ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК НаправлениеДеятельности,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ТаблицаТовары.Назначение.НаправлениеДеятельности, ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК КоличествоНаправленийДеятельности,
| &СкладПолучатель КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Ответственный КАК Ответственный,
| &Автор КАК Автор,
| ВЫРАЗИТЬ(&Комментарий КАК СТРОКА(100)) КАК Комментарий,
| НЕОПРЕДЕЛЕНО КАК Валюта,
| 0 КАК Сумма,
| &Статус КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ИСТИНА КАК ДополнительнаяЗапись,
| &ИнформацияПоСкладуОтправителю КАК Дополнительно,
| &Исправление КАК Исправление,
| &СторнируемыйДокумент КАК СторнируемыйДокумент,
| &ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| &Период КАК ДатаПервичногоДокумента,
| &НомерНаПечать КАК НомерПервичногоДокумента
| ИЗ
| Документ.ПеремещениеТоваров КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ТаблицаТовары
| ПО ДанныеДокумента.Ссылка = ТаблицаТовары.Ссылка
| ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|
| СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка) КАК ТаблицаРеестрДокументов
|
|СГРУППИРОВАТЬ ПО
| ТаблицаРеестрДокументов.ТипСсылки,
| ТаблицаРеестрДокументов.Организация,
| ТаблицаРеестрДокументов.ХозяйственнаяОперация,
| ТаблицаРеестрДокументов.Партнер,
| ТаблицаРеестрДокументов.Контрагент,
| ТаблицаРеестрДокументов.Подразделение,
| ТаблицаРеестрДокументов.МестоХранения,
| ТаблицаРеестрДокументов.ДатаДокументаИБ,
| ТаблицаРеестрДокументов.Ссылка,
| ВЫБОР
| КОГДА ТаблицаРеестрДокументов.КоличествоНаправленийДеятельности = 1
| ТОГДА ТаблицаРеестрДокументов.НаправлениеДеятельности
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыКОформлениюОтчетовКомитенту";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат;
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| ДанныеШапки.Дата КАК Период,
| &Организация КАК Организация,
| Запасы.Валюта КАК Валюта,
| Запасы.ВидЗапасов КАК ВидЗапасов,
| Запасы.Номенклатура КАК Номенклатура,
| Запасы.Характеристика КАК Характеристика,
| Запасы.НомерГТД КАК НомерГТД,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| 0 КАК Количество,
| Запасы.Количество КАК КоличествоСписано,
| 0 КАК СуммаВыручки,
| 0 КАК СуммаВыручкиРегл,
| 0 КАК СуммаВыручкиУпр,
| 0 КАК КоличествоКОформлению,
| Запасы.Количество КАК КоличествоСписаноКОформлению,
| 0 КАК СуммаВыручкиКОформлению,
| НЕОПРЕДЕЛЕНО КАК КорВидЗапасов,
| Запасы.АналитикаУчетаКомитента КАК АналитикаУчетаНоменклатуры,
| Запасы.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| ДанныеШапки.НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации,
| Запасы.ИдентификаторСтроки КАК ИдентификаторСтроки
|ИЗ
| ВтВидыЗапасов КАК Запасы
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО Запасы.Ссылка = ДанныеШапки.Ссылка
|ГДЕ
| Запасы.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| И Запасы.ТипЗапасовОприходование = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
КонецПроцедуры
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.ПеремещениеТоваров";
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ТекстыЗапросаВременныхТаблиц = Новый Соответствие();
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", """""");
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоСкладуПолучателю", """""");
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоСкладуОтправителю", """""");
ПереопределениеРасчетаПараметров.Вставить("ОрдернаяСхемаПриОтгрузке",
"ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.СкладОтправитель.ИспользоватьОрдернуюСхемуПриОтгрузке
| И ТаблицаТовары.Ссылка.Дата >= ТаблицаТовары.Ссылка.СкладОтправитель.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ");
ПереопределениеРасчетаПараметров.Вставить("ОрдернаяСхемаПриПоступлении",
"ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.СкладПолучатель.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТаблицаТовары.Ссылка.Дата >= ТаблицаТовары.Ссылка.СкладПолучатель.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ");
ПереопределениеРасчетаПараметров.Вставить("ПоЗаказуНаПеремещение", "ТаблицаТовары.Ссылка.ПеремещениеПоЗаказам");
ПереопределениеРасчетаПараметров.Вставить("НакладнаяЯвляетсяРаспоряжением",
"ТаблицаТовары.Ссылка.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)");
Если ИмяРегистра = "ЗаказыНаПеремещение" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаЗаказыНаПеремещение(Запрос, ТекстыЗапроса, ИмяРегистра);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ДанныеДокументаТаблицаТовары", ПолноеИмяДокумента + ".Товары");
СинонимТаблицыДокумента = "ТаблицаТовары";
ИначеЕсли ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
ТекстыЗапросаВременныхТаблиц.Вставить("ВтОснований", ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса));
СинонимТаблицыДокумента = "ДанныеДокумента";
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров,
ТекстыЗапросаВременныхТаблиц);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ДанныеШапки.СкладОтправитель КАК Склад,
| ТабЧасть.НазначениеОтправителя КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТабЧасть
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ДанныеШапки.Ссылка = ТабЧасть.Ссылка
|ГДЕ
| ТабЧасть.КодСтроки = 0";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
Если ДокументОбъект = Неопределено
Или ДокументОбъект.Статус = Перечисления.СтатусыПеремещенийТоваров.Принято Тогда
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ДанныеШапки.СкладПолучатель КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ДанныеШапки.ПеремещениеПоЗаказам
| И ТабЧасть.КодСтроки <> 0 КАК ПоГрафику,
| ТабЧасть.ЗаказНаПеремещение КАК РаспоряжениеВГрафике
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТабЧасть
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТабЧасть.Ссылка)
|ГДЕ
| (НЕ ДанныеШапки.ОрдернаяСхемаПриПоступлении
| ИЛИ НЕ ТабЧасть.НазначениеДвиженияПоСкладскимРегистрам)
| И ДанныеШапки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Принято)";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ДанныеШапки.СкладПолучатель КАК Склад,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| -ТабЧасть.Количество КАК Количество,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТабЧасть
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТабЧасть.Ссылка)
|ГДЕ
| ТабЧасть.НазначениеДвиженияПоСкладскимРегистрам = ЛОЖЬ
| И ДанныеШапки.ОрдернаяСхемаПриПоступлении
| И ДанныеШапки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Принято)";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Неопределено, Ложь);
КонецЕсли;
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ДанныеШапки.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ДанныеШапки.СкладПолучатель КАК Склад,
| ВЫБОР
| КОГДА ТабЧасть.НазначениеДвиженияПоСкладскимРегистрам = ЛОЖЬ
| ТОГДА ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИНАЧЕ ТабЧасть.Назначение
| КОНЕЦ КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ВЫБОР
| КОГДА ДанныеШапки.ПеремещениеПоЗаказам
| И ДанныеШапки.ВариантПриемкиТоваров <> ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)
| ТОГДА ТабЧасть.ЗаказНаПеремещение
| ИНАЧЕ
| ВЫБОР
| КОГДА ДанныеШапки.ИсправляемыйДокумент = ЗНАЧЕНИЕ(Документ.ПеремещениеТоваров.ПустаяСсылка)
| ТОГДА ДанныеШапки.Ссылка
| ИНАЧЕ ДанныеШапки.ИсправляемыйДокумент
| КОНЕЦ
| КОНЕЦ КАК Заказ,
| ВЫБОР
| КОГДА ДанныеШапки.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеШапки.ДатаПоступления
| ИНАЧЕ ДанныеШапки.Дата
| КОНЕЦ КАК ДатаПоступления,
| ИСТИНА КАК ДоступенДляРасхода,
| ДанныеШапки.ПеремещениеПоЗаказам
| И ТабЧасть.КодСтроки <> 0 КАК ПоГрафику,
| ТабЧасть.ЗаказНаПеремещение КАК РаспоряжениеВГрафике,
| ТабЧасть.Количество КАК КоличествоВГрафике
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТабЧасть
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ДанныеШапки.Ссылка = ТабЧасть.Ссылка
|ГДЕ
| (ДанныеШапки.ОрдернаяСхемаПриПоступлении
| И (ДанныеШапки.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)
| ИЛИ НЕ ДанныеШапки.ПеремещениеПоЗаказам
| ИЛИ ТабЧасть.КодСтроки = 0)
| ИЛИ ДанныеШапки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Отгружено)
| И (НЕ ДанныеШапки.ПеремещениеПоЗаказам
| ИЛИ ТабЧасть.КодСтроки = 0))";
РаспределениеЗапасовДвижения.ЗапланироватьПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецПроцедуры
#Область ПартионныйУчет
Функция ОписаниеРегистровУчетаЗатратИСебестоимости(Документ) Экспорт
ОписаниеРегистров = Новый Массив;
ОписаниеРегистров.Добавить(Метаданные.РегистрыНакопления.СебестоимостьТоваров);
Возврат ОписаниеРегистров;
КонецФункции
Функция УстановитьДополнительныеПараметрыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено) Экспорт
ДополнительныеПараметры = Новый Массив;
Если Запрос <> Неопределено Тогда
КонецЕсли;
Возврат ДополнительныеПараметры;
КонецФункции
Функция СформироватьДополнительныеТаблицыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено, ТекстыЗапроса = Неопределено) Экспорт
ДополнительныеТаблицы = Новый Массив;
ДополнительныеТаблицы.Добавить("ВтВидыЗапасов");
Если Запрос <> Неопределено Тогда
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса(ДополнительныеТаблицы[0], ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
КонецЕсли;
Возврат ДополнительныеТаблицы;
КонецФункции
Функция ОписаниеОперацийУчетаСебестоимости(Документ) Экспорт
ОписаниеОпераций = Новый Массив;
#Область Перемещение_Товар
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаНоменклатурыОтправитель КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.ВидДеятельностиНДС КАК ВидДеятельностиНДС,
| ТаблицаДокумента.ПеремещениеПодДеятельность КАК ВидДеятельностиНДСДокумента,
|
| ТаблицаДокумента.ОрганизацияПолучатель КАК КорОрганизация,
| НЕОПРЕДЕЛЕНО КАК КорПартия,
| ТаблицаВидыЗапасов.АналитикаНоменклатурыПолучатель КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасовОприходование КАК КорВидЗапасов,
|
| ТаблицаДокумента.Сделка КАК Сделка,
| ТаблицаДокумента.Подразделение КАК Подразделение,
| ТаблицаДокумента.Ответственный КАК Менеджер,
| НЕОПРЕДЕЛЕНО КАК ГруппаПродукции,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ИдентификаторСтроки,
|
| ТаблицаДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|
|ИЗ
| Документ.ПеремещениеТоваров КАК ТаблицаДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И ТаблицаДокумента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Принято)
|";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.Перемещение,
ТекстЗапроса);
#КонецОбласти
Возврат ОписаниеОпераций;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "НакладнаяНаПеремещение";
КомандаПечати.Представление = НСтр("ru = 'Накладная на перемещение'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Порядок = 3;
КомандаПечати = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати,
"ЗаданиеНаРазмещение",
8);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"Статус",
Перечисления.СтатусыПеремещенийТоваров.Принято,
ВидСравнения.Равно);
Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати, "ЗаданиеНаОтбор", 9);
Если ПравоДоступа("Чтение", Метаданные.Справочники.СертификатыНоменклатуры)
И ПолучитьФункциональнуюОпцию("ИспользоватьСертификатыНоменклатуры") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "СертификатыНоменклатурыРеестр";
КомандаПечати.Представление = НСтр("ru = 'Сертификаты (реестр)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Порядок = 10;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "СертификатыНоменклатурыИзображенияИзДокументов";
КомандаПечати.Представление = НСтр("ru = 'Сертификаты (по каждой позиции документа)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Порядок = 11;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "СертификатыНоменклатурыИзображенияИзДокументовБезДублей";
КомандаПечати.Представление = НСтр("ru = 'Сертификаты (по одному на сертификат)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Порядок = 12;
КонецЕсли;
Если ПраваПользователяПовтИсп.ПечатьЭтикетокИЦенников() Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьЭтикетокИЦенников";
КомандаПечати.МенеджерПечати = "";
КомандаПечати.Идентификатор = "Ценники";
КомандаПечати.Представление = НСтр("ru = 'Ценники'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Порядок = 15;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьЭтикетокИЦенников";
КомандаПечати.МенеджерПечати = "";
КомандаПечати.Идентификатор = "Этикетки";
КомандаПечати.Представление = НСтр("ru = 'Этикетки'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Порядок = 16;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеДоставкой") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьЭтикетокДоставки";
КомандаПечати.МенеджерПечати = "Обработка.ПечатьЭтикетокИЦенников.Печать";
КомандаПечати.Идентификатор = "ЭтикеткаДоставки";
КомандаПечати.Представление = НСтр("ru = 'Этикетки доставки'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.Порядок = 17;
КонецЕсли;
ПеремещениеТоваровЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "НакладнаяНаПеремещение") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"НакладнаяНаПеремещение",
НСтр("ru = 'Накладная на перемещение'"),
СформироватьПечатнуюФормуНакладнойНаПеремещениеТоваров(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СертификатыНоменклатурыРеестр") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СертификатыНоменклатурыРеестр",
НСтр("ru = 'Сертификаты (реестр)'"),
Справочники.СертификатыНоменклатуры.СформироватьПечатнуюФормуРеестрСертификатовНоменклатуры(МассивОбъектов, ОбъектыПечати),
,
"Справочник.СертификатыНоменклатуры.ПФ_MXL_РеестрСертификатов");
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СертификатыНоменклатурыИзображенияИзДокументов") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СертификатыНоменклатурыИзображенияИзДокументов",
НСтр("ru = 'Сертификаты (по каждой позиции документа)'"),
Справочники.СертификатыНоменклатуры.СформироватьПечатнуюФормуИзображенияСертификатовИзДокументов(МассивОбъектов, ОбъектыПечати),
,
"Справочник.СертификатыНоменклатуры.ПФ_MXL_ИзображенияСертификатов");
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СертификатыНоменклатурыИзображенияИзДокументовБезДублей") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СертификатыНоменклатурыИзображенияИзДокументовБезДублей",
НСтр("ru = 'Сертификаты (по одному на сертификат)'"),
Справочники.СертификатыНоменклатуры.СформироватьПечатнуюФормуИзображенияСертификатовИзДокументовБезДублей(МассивОбъектов, ОбъектыПечати),
,
"Справочник.СертификатыНоменклатуры.ПФ_MXL_ИзображенияСертификатов");
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "КомплектДокументов") Тогда
КоллекцияПечатныхФорм.Очистить();
СформироватьКомплектПечатныхФорм(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати);
КонецЕсли;
ПеремещениеТоваровЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
КонецПроцедуры
Функция СформироватьКомплектПечатныхФорм(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати) Экспорт
Перем АдресКомплектаПечатныхФорм;
Если ТипЗнч(ПараметрыПечати) = Тип("Структура") И ПараметрыПечати.Свойство("АдресКомплектаПечатныхФорм", АдресКомплектаПечатныхФорм) Тогда
КомплектПечатныхФорм = ПолучитьИзВременногоХранилища(АдресКомплектаПечатныхФорм);
Иначе
КомплектПечатныхФорм = РегистрыСведений.НастройкиПечатиОбъектов.КомплектПечатныхФорм(
Метаданные.Документы.ПеремещениеТоваров.ПолноеИмя(),
МассивОбъектов, Неопределено);
КонецЕсли;
Если КомплектПечатныхФорм = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"НакладнаяНаПеремещение");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
СформироватьПечатнуюФормуНакладнойНаПеремещениеТоваров(КомплектПечати.Объекты, ОбъектыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СертификатыНоменклатурыРеестр");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Справочники.СертификатыНоменклатуры.СформироватьПечатнуюФормуРеестрСертификатовНоменклатуры(КомплектПечати.Объекты, ОбъектыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СертификатыНоменклатурыИзображенияИзДокументов");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Справочники.СертификатыНоменклатуры.СформироватьПечатнуюФормуИзображенияСертификатовИзДокументов(КомплектПечати.Объекты, ОбъектыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СертификатыНоменклатурыИзображенияИзДокументовБезДублей");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Справочники.СертификатыНоменклатуры.СформироватьПечатнуюФормуИзображенияСертификатовИзДокументовБезДублей(КомплектПечати.Объекты, ОбъектыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"ЗаданиеНаОтборРазмещениеТовара");
ПараметрыПечати.Вставить("ТипЗадания", "ЗаданиеНаОтбор");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ПеремещениеТоваров", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.СформироватьЗаданиеНаОтборРазмещениеТовара(СтруктураТипов,
ОбъектыПечати,
ПараметрыПечати));
КонецЦикла;
ПеремещениеТоваровЛокализация.СформироватьКомплектПечатныхФорм(МассивОбъектов,
ПараметрыПечати,
КоллекцияПечатныхФорм,
ОбъектыПечати,
КомплектПечатныхФорм);
РегистрыСведений.НастройкиПечатиОбъектов.СформироватьКомплектВнешнихПечатныхФорм(
"Документ.ПеремещениеТоваров",
МассивОбъектов,
ПараметрыПечати,
КоллекцияПечатныхФорм,
ОбъектыПечати);
КонецФункции
Функция КомплектПечатныхФорм() Экспорт
КомплектПечатныхФорм = РегистрыСведений.НастройкиПечатиОбъектов.ПодготовитьКомплектПечатныхФорм();
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "НакладнаяНаПеремещение", НСтр("ru = 'Накладная на перемещение'"), 0);
Если ПолучитьФункциональнуюОпцию("ИспользоватьСертификатыНоменклатуры") Тогда
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"СертификатыНоменклатурыРеестр",
НСтр("ru = 'Сертификаты (реестр)'"),
0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"СертификатыНоменклатурыИзображенияИзДокументов",
НСтр("ru = 'Сертификаты (по каждой позиции документа)'"),
0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"СертификатыНоменклатурыИзображенияИзДокументовБезДублей",
НСтр("ru = 'Сертификаты (по одному на сертификат)'"),
0);
КонецЕсли;
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"ЗаданиеНаОтборРазмещениеТовара",
НСтр("ru = 'Задание на отбор товаров'"),
0);
ПеремещениеТоваровЛокализация.КомплектПечатныхФорм(КомплектПечатныхФорм);
Возврат КомплектПечатныхФорм;
КонецФункции
Функция ДанныеДляПечатиЭтикеток(МассивДокументов) Экспорт
ДатаЦенообразования = ОбщегоНазначенияУТ.ПолучитьМаксимальнуюДатуДокументов(МассивДокументов);
ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25(ДатаЦенообразования);
Запрос = Новый Запрос;
Если ИспользуетсяЦенообразование25 Тогда
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура,
| ПеремещениеТоваровТовары.Характеристика КАК Характеристика,
| ПеремещениеТоваровТовары.Упаковка КАК Упаковка,
| ПеремещениеТоваровТовары.Серия КАК Серия,
| МИНИМУМ(ПеремещениеТоваровТовары.НомерСтроки) КАК Порядок,
| СУММА(ПеремещениеТоваровТовары.Количество) КАК Количество
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
|ГДЕ
| ПеремещениеТоваровТовары.Ссылка В(&МассивДокументов)
|
|СГРУППИРОВАТЬ ПО
| ПеремещениеТоваровТовары.Номенклатура,
| ПеремещениеТоваровТовары.Характеристика,
| ПеремещениеТоваровТовары.Упаковка,
| ПеремещениеТоваровТовары.Серия
|
|УПОРЯДОЧИТЬ ПО
| Порядок
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ПеремещениеТоваров.Организация КАК Организация,
| ПеремещениеТоваров.СкладПолучатель КАК Склад,
| ПеремещениеТоваров.СкладПолучатель.РозничныйВидЦены КАК ВидЦены,
| ВЫБОР КОГДА НЕ ПеремещениеТоваров.СкладПолучатель = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| И ПеремещениеТоваров.СкладПолучатель.РозничныйВидЦены ЕСТЬ NULL
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ КАК СкладПолучательДоступенПользователю
|ИЗ
| Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
|ГДЕ
| ПеремещениеТоваров.Ссылка В(&МассивДокументов)";
Иначе
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура,
| ПеремещениеТоваровТовары.Характеристика КАК Характеристика,
| ПеремещениеТоваровТовары.Упаковка КАК Упаковка,
| МИНИМУМ(ПеремещениеТоваровТовары.НомерСтроки) КАК Порядок,
| СУММА(ПеремещениеТоваровТовары.Количество) КАК Количество
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
|ГДЕ
| ПеремещениеТоваровТовары.Ссылка В(&МассивДокументов)
|
|СГРУППИРОВАТЬ ПО
| ПеремещениеТоваровТовары.Номенклатура,
| ПеремещениеТоваровТовары.Характеристика,
| ПеремещениеТоваровТовары.Упаковка
|
|УПОРЯДОЧИТЬ ПО
| Порядок
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ПеремещениеТоваров.Организация КАК Организация,
| ПеремещениеТоваров.СкладПолучатель КАК Склад,
| ПеремещениеТоваров.СкладПолучатель.РозничныйВидЦены КАК ВидЦены,
| ВЫБОР КОГДА НЕ ПеремещениеТоваров.СкладПолучатель = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| И ПеремещениеТоваров.СкладПолучатель.РозничныйВидЦены ЕСТЬ NULL
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ КАК СкладПолучательДоступенПользователю
|ИЗ
| Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
|ГДЕ
| ПеремещениеТоваров.Ссылка В(&МассивДокументов)";
КонецЕсли;
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
МассивРезультатов = Запрос.ВыполнитьПакет();
ТаблицаРеквизитыДокументов = МассивРезультатов[1].Выгрузить();
МассивОрганизаций = ОбщегоНазначенияУТ.УникальныеЗначенияИзКолонкиТаблицы(ТаблицаРеквизитыДокументов, "Организация");
МассивСкладов = ОбщегоНазначенияУТ.УникальныеЗначенияИзКолонкиТаблицы(ТаблицаРеквизитыДокументов, "Склад");
ТаблицаВидовЦен = ТаблицаРеквизитыДокументов.Скопировать(, "ВидЦены,СкладПолучательДоступенПользователю");
ТаблицаВидовЦен.Свернуть("ВидЦены", "СкладПолучательДоступенПользователю");
ЗаполнитьВидЦены = Неопределено;
Если ТаблицаВидовЦен.Количество() = 1 Тогда
Если ТаблицаВидовЦен[0].СкладПолучательДоступенПользователю Тогда
ЗаполнитьВидЦены = ТаблицаРеквизитыДокументов[0].ВидЦены;
Иначе
ТекстСообщения = НСтр("ru = 'У пользователя нет доступа к складу-получателю. Печать этикеток невозможна.'");
ВызватьИсключение ТекстСообщения;
КонецЕсли;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьОрганизацию", ?(МассивОрганизаций.Количество() = 1, МассивОрганизаций[0], Неопределено));
СтруктураДействий.Вставить("ЗаполнитьСклад", ?(МассивСкладов.Количество() = 1, МассивСкладов[0], МассивСкладов));
СтруктураДействий.Вставить("ЗаполнитьВидЦены", ЗаполнитьВидЦены);
СтруктураДействий.Вставить("ПоказыватьКолонкуКоличествоВДокументе", Истина);
СтруктураДействий.Вставить("УстановитьРежимПечатиИзДокумента");
СтруктураДействий.Вставить("УстановитьРежим", "ПечатьЭтикеток");
СтруктураДействий.Вставить("ЗаполнитьКоличествоЭтикетокПоДокументу");
СтруктураДействий.Вставить("ЗаполнитьТаблицуТоваров");
СтруктураРезультат = Новый Структура;
СтруктураРезультат.Вставить("Товары", МассивРезультатов[0].Выгрузить());
СтруктураРезультат.Вставить("СтруктураДействий", СтруктураДействий);
СтруктураРезультат.Вставить("Дата", ДатаЦенообразования);
Возврат ПоместитьВоВременноеХранилище(СтруктураРезультат);
КонецФункции
Функция ДанныеДляПечатиЦенников(МассивДокументов) Экспорт
ДатаЦенообразования = ОбщегоНазначенияУТ.ПолучитьМаксимальнуюДатуДокументов(МассивДокументов);
ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25(ДатаЦенообразования);
Запрос = Новый Запрос;
Если ИспользуетсяЦенообразование25 Тогда
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура,
| ПеремещениеТоваровТовары.Характеристика КАК Характеристика,
| ПеремещениеТоваровТовары.Упаковка КАК Упаковка,
| ПеремещениеТоваровТовары.Серия КАК Серия,
| МИНИМУМ(ПеремещениеТоваровТовары.НомерСтроки) КАК Порядок,
| СУММА(ПеремещениеТоваровТовары.Количество) КАК Количество
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
|ГДЕ
| ПеремещениеТоваровТовары.Ссылка В(&МассивДокументов)
|
|СГРУППИРОВАТЬ ПО
| ПеремещениеТоваровТовары.Номенклатура,
| ПеремещениеТоваровТовары.Характеристика,
| ПеремещениеТоваровТовары.Упаковка,
| ПеремещениеТоваровТовары.Серия
|
|УПОРЯДОЧИТЬ ПО
| Порядок
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ПеремещениеТоваров.Организация КАК Организация,
| ПеремещениеТоваров.СкладПолучатель КАК Склад,
| ПеремещениеТоваров.СкладПолучатель.РозничныйВидЦены КАК ВидЦены,
| ВЫБОР КОГДА НЕ ПеремещениеТоваров.СкладПолучатель = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| И ПеремещениеТоваров.СкладПолучатель.РозничныйВидЦены ЕСТЬ NULL
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ КАК СкладПолучательДоступенПользователю
|ИЗ
| Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
|ГДЕ
| ПеремещениеТоваров.Ссылка В(&МассивДокументов)";
Иначе
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура,
| ПеремещениеТоваровТовары.Характеристика КАК Характеристика,
| ПеремещениеТоваровТовары.Упаковка КАК Упаковка,
| МИНИМУМ(ПеремещениеТоваровТовары.НомерСтроки) КАК Порядок,
| СУММА(ПеремещениеТоваровТовары.Количество) КАК Количество
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
|ГДЕ
| ПеремещениеТоваровТовары.Ссылка В(&МассивДокументов)
|
|СГРУППИРОВАТЬ ПО
| ПеремещениеТоваровТовары.Номенклатура,
| ПеремещениеТоваровТовары.Характеристика,
| ПеремещениеТоваровТовары.Упаковка
|
|УПОРЯДОЧИТЬ ПО
| Порядок
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ПеремещениеТоваров.Организация КАК Организация,
| ПеремещениеТоваров.СкладПолучатель КАК Склад,
| ПеремещениеТоваров.СкладПолучатель.РозничныйВидЦены КАК ВидЦены,
| ВЫБОР КОГДА НЕ ПеремещениеТоваров.СкладПолучатель = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| И ПеремещениеТоваров.СкладПолучатель.РозничныйВидЦены ЕСТЬ NULL
| ТОГДА 0
| ИНАЧЕ 1
| КОНЕЦ КАК СкладПолучательДоступенПользователю
|ИЗ
| Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
|ГДЕ
| ПеремещениеТоваров.Ссылка В(&МассивДокументов)";
КонецЕсли;
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
МассивРезультатов = Запрос.ВыполнитьПакет();
ТаблицаРеквизитыДокументов = МассивРезультатов[1].Выгрузить();
МассивОрганизаций = ОбщегоНазначенияУТ.УникальныеЗначенияИзКолонкиТаблицы(ТаблицаРеквизитыДокументов, "Организация");
МассивСкладов = ОбщегоНазначенияУТ.УникальныеЗначенияИзКолонкиТаблицы(ТаблицаРеквизитыДокументов, "Склад");
ТаблицаВидовЦен = ТаблицаРеквизитыДокументов.Скопировать(, "ВидЦены,СкладПолучательДоступенПользователю");
ТаблицаВидовЦен.Свернуть("ВидЦены", "СкладПолучательДоступенПользователю");
ЗаполнитьВидЦены = Неопределено;
Если ТаблицаВидовЦен.Количество() = 1 Тогда
Если ТаблицаВидовЦен[0].СкладПолучательДоступенПользователю Тогда
ЗаполнитьВидЦены = ТаблицаРеквизитыДокументов[0].ВидЦены;
Иначе
ТекстСообщения = НСтр("ru = 'У пользователя нет доступа к складу-получателю. Печать ценников невозможна.'");
ВызватьИсключение ТекстСообщения;
КонецЕсли;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьОрганизацию", ?(МассивОрганизаций.Количество() = 1, МассивОрганизаций[0], Неопределено));
СтруктураДействий.Вставить("ЗаполнитьСклад", ?(МассивСкладов.Количество() = 1, МассивСкладов[0], МассивСкладов));
СтруктураДействий.Вставить("ЗаполнитьВидЦены", ЗаполнитьВидЦены);
СтруктураДействий.Вставить("ПоказыватьКолонкуКоличествоВДокументе", Истина);
СтруктураДействий.Вставить("УстановитьРежимПечатиИзДокумента");
СтруктураДействий.Вставить("УстановитьРежим", "ПечатьЦенников");
СтруктураДействий.Вставить("ЗаполнитьКоличествоЦенниковПоДокументу");
СтруктураДействий.Вставить("ЗаполнитьТаблицуТоваров");
СтруктураРезультат = Новый Структура;
СтруктураРезультат.Вставить("Товары", МассивРезультатов[0].Выгрузить());
СтруктураРезультат.Вставить("СтруктураДействий", СтруктураДействий);
СтруктураРезультат.Вставить("Дата", ДатаЦенообразования);
Возврат ПоместитьВоВременноеХранилище(СтруктураРезультат);
КонецФункции
Функция СформироватьПечатнуюФормуНакладнойНаПеремещениеТоваров(МассивОбъектов, ОбъектыПечати)
УстановитьПривилегированныйРежим(Истина);
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
ИмяКолонкиКодов = КолонкаКодов.ИмяКолонки;
ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
ВыводитьКоды = ЗначениеЗаполнено(ИмяКолонкиКодов);
ИспользоватьУпаковкиНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_Накладная";
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПеремещениеТоваров.ПФ_MXL_НакладнаяНаПеремещение");
ОбластьЗаголовкаПеремещение = Макет.ПолучитьОбласть("ЗаголовокПеремещение");
ОбластьЗаголовкаВнутренняяПередача = Макет.ПолучитьОбласть("ЗаголовокВнутренняяПередача");
Если ВыводитьКоды Тогда
ОбластьКодовШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
ОбластьКодовШапка.Параметры.ИмяКолонкиКодов = ПредставлениеКолонкиКодов;
ОбластьКодовСтрока = Макет.ПолучитьОбласть("Строка|КолонкаКодов");
ОбластьКодовПодвал = Макет.ПолучитьОбласть("Подвал|КолонкаКодов");
Иначе
ОбластьТовары = Макет.Область("Товар");
ОбластьТовары.ШиринаКолонки = ОбластьТовары.ШиринаКолонки + Макет.Область("КолонкаКодов").ШиринаКолонки;
КонецЕсли;
Если ИспользоватьУпаковкиНоменклатуры Тогда
ОбластьУпаковокШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаУпаковок");
ОбластьУпаковокСтрока = Макет.ПолучитьОбласть("Строка|КолонкаУпаковок");
ОбластьУпаковокПодвал = Макет.ПолучитьОбласть("Подвал|КолонкаУпаковок");
Иначе
ОбластьТовары = Макет.Область("Товар");
ОбластьТовары.ШиринаКолонки = ОбластьТовары.ШиринаКолонки
+ Макет.Область("КолонкаУпаковокКоличество").ШиринаКолонки
+ Макет.Область("КолонкаУпаковокПредставление").ШиринаКолонки;
КонецЕсли;
ОбластьНомераШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
ОбластьДанныхШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|Товар");
ОбластьКонецСтрокиШапка = Макет.ПолучитьОбласть("ШапкаТаблицы|КонецСтроки");
ОбластьНомераСтрока = Макет.ПолучитьОбласть("Строка|НомерСтроки");
ОбластьДанныхСтрока = Макет.ПолучитьОбласть("Строка|Товар");
ОбластьКонецСтрокиСтрока = Макет.ПолучитьОбласть("Строка|КонецСтроки");
ОбластьНомераПодвал = Макет.ПолучитьОбласть("Подвал|НомерСтроки");
ОбластьДанныхПодвал = Макет.ПолучитьОбласть("Подвал|Товар");
ОбластьКонецСтрокиПодвал = Макет.ПолучитьОбласть("Подвал|КонецСтроки");
ОбластьПодписей = Макет.ПолучитьОбласть("Подписи");
ЗапросПоШапке = Новый Запрос;
ЗапросПоШапке.Текст =
"ВЫБРАТЬ
| ПеремещениеТоваров.Ссылка КАК Ссылка,
| ПеремещениеТоваров.Номер КАК Номер,
| ПеремещениеТоваров.Дата КАК Дата,
| ПеремещениеТоваров.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| ПеремещениеТоваров.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| ПеремещениеТоваров.Организация.Префикс КАК Префикс,
| ПеремещениеТоваров.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ПеремещениеТоваров.СкладОтправитель.Представление КАК ОтправительПредставление,
| ПеремещениеТоваров.СкладПолучатель.Представление КАК ПолучательПредставление,
| ПеремещениеТоваров.Организация КАК Организация,
| ПеремещениеТоваров.ОрганизацияПолучатель КАК ОрганизацияПолучатель,
| ВЫБОР КОГДА ПеремещениеТоваров.СкладОтправитель.ИспользоватьСерииНоменклатуры
| ИЛИ ПеремещениеТоваров.СкладПолучатель.ИспользоватьСерииНоменклатуры ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ИспользоватьСерииНоменклатуры
|ИЗ
| Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
|ГДЕ
| ПеремещениеТоваров.Ссылка В(&МассивДокументов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Дата
|ИТОГИ ПО
| ИспользоватьСерииНоменклатуры
|";
ЗапросПоШапке.УстановитьПараметр("МассивДокументов", МассивОбъектов);
ДеревоОбъектов = ЗапросПоШапке.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
ПерваяСтрокаОбъектов = Истина;
Для Каждого ИспользованиеСерий Из ДеревоОбъектов.Строки Цикл
ЗапросПоТоварам = Новый Запрос;
ЗапросПоТоварам.УстановитьПараметр("МассивОбъектов", ИспользованиеСерий.Строки.ВыгрузитьКолонку("Ссылка"));
Если ИспользованиеСерий.ИспользоватьСерииНоменклатуры Тогда
ТекстЗапросаПоТоварам =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерий В(10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ТаблицаТовары.Упаковка КАК Упаковка,
| ТаблицаТовары.КоличествоУпаковок КАК КоличествоУпаковок,
| ТаблицаТовары.Количество КАК Количество
|ПОМЕСТИТЬ ТаблицаТоваров
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивОбъектов)
| И НЕ ТаблицаТовары.СтатусУказанияСерий В (2, 4, 6, 8)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаСерии.Ссылка,
| МИНИМУМ(ТаблицаТовары.НомерСтроки),
| ТаблицаСерии.Номенклатура,
| ТаблицаСерии.Характеристика,
| ТаблицаСерии.Серия,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка),
| ТаблицаСерии.Количество,
| ТаблицаСерии.Количество
|ИЗ
| Документ.ПеремещениеТоваров.Серии КАК ТаблицаСерии
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ТаблицаТовары
| ПО ТаблицаСерии.Ссылка = ТаблицаТовары.Ссылка
| И ТаблицаСерии.Номенклатура = ТаблицаТовары.Номенклатура
| И ТаблицаСерии.Характеристика = ТаблицаТовары.Характеристика
|ГДЕ
| ТаблицаСерии.Ссылка В(&МассивОбъектов)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаСерии.Ссылка,
| ТаблицаСерии.Номенклатура,
| ТаблицаСерии.Характеристика,
| ТаблицаСерии.Серия,
| ТаблицаСерии.Количество,
| ТаблицаСерии.Количество
|
|ИМЕЮЩИЕ
| МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерий) В (2, 4, 6, 8)
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.Ссылка,
| МИНИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
| ТОГДА ТаблицаТоваров.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ ТаблицаТоваров.Упаковка
| КОНЕЦ КАК Упаковка,
| СУММА(ТаблицаТоваров.КоличествоУпаковок) КАК КоличествоУпаковок,
| СУММА(ТаблицаТоваров.Количество) КАК Количество,
| ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
| ТОГДА NULL
| ИНАЧЕ ТаблицаТоваров.Серия
| КОНЕЦ КАК Серия
|ПОМЕСТИТЬ СуммированнаяТаблицаТоваров
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.Ссылка,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
| ТОГДА ТаблицаТоваров.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ ТаблицаТоваров.Упаковка
| КОНЕЦ,
| ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
| ТОГДА NULL
| ИНАЧЕ ТаблицаТоваров.Серия
| КОНЕЦ
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Товар,
| ТаблицаТовары.Номенклатура.НаименованиеПолное КАК ТоварНаименование,
| ТаблицаТовары.Номенклатура.Код КАК Код,
| ТаблицаТовары.Номенклатура.Артикул КАК Артикул,
| ТаблицаТовары.Характеристика.НаименованиеПолное КАК ХарактеристикаНаименование,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ВЫБОР
| КОГДА ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Упаковка)
| КОНЕЦ КАК ПредставлениеЕдиницыИзмеренияУпаковки,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
| ТаблицаТовары.КоличествоУпаковок КАК КоличествоУпаковок,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий КАК НастройкаИспользованияСерий
|ИЗ
| СуммированнаяТаблицаТоваров КАК ТаблицаТовары
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки,
| Товар,
| Характеристика
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| МИНИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия.Наименование КАК ПредставлениеСерии
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|ГДЕ
| ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
| И НЕ ТаблицаТоваров.Серия ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.Ссылка,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ТаблицаТоваров.Серия.Наименование
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки,
| Номенклатура,
| Характеристика,
| ПредставлениеСерии";
ЗапросПоТоварам.Текст = ТекстЗапросаПоТоварам;
РезультатЗапроса = ЗапросПоТоварам.ВыполнитьПакет();
ВыборкаПоТоварам = РезультатЗапроса[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаПоСериям = РезультатЗапроса[3].Выбрать();
Иначе
ТекстЗапросаПоТоварам =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.Номенклатура КАК Товар,
| ТаблицаТовары.Номенклатура.НаименованиеПолное КАК ТоварНаименование,
| ТаблицаТовары.Номенклатура.Код КАК Код,
| ТаблицаТовары.Номенклатура.Артикул КАК Артикул,
| ТаблицаТовары.Характеристика.НаименованиеПолное КАК ХарактеристикаНаименование,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ВЫБОР
| КОГДА ТаблицаТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Упаковка)
| КОНЕЦ КАК ПредставлениеЕдиницыИзмеренияУпаковки,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
| ТаблицаТовары.КоличествоУпаковок КАК КоличествоУпаковок,
| ТаблицаТовары.Количество КАК Количество,
| ЛОЖЬ КАК НастройкаИспользованияСерий,
| ТаблицаТовары.НомерСтроки
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| ТаблицаТовары.НомерСтроки,
| Товар,
| Характеристика";
ЗапросПоТоварам.Текст = ТекстЗапросаПоТоварам;
ВыборкаПоТоварам = ЗапросПоТоварам.Выполнить().Выбрать();
КонецЕсли;
ПервыйДокумент = Истина;
Для Каждого Шапка Из ИспользованиеСерий.Строки Цикл
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
Если Не ПервыйДокумент ИЛИ (ПервыйДокумент И НЕ ПерваяСтрокаОбъектов) Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
Если Шапка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеТоваров Тогда
ОбластьЗаголовка = ОбластьЗаголовкаПеремещение;
Иначе
ОбластьЗаголовка = ОбластьЗаголовкаВнутренняяПередача;
КонецЕсли;
НазваниеДокумента = НСтр("ru = 'Накладная на перемещение'", ОбщегоНазначения.КодОсновногоЯзыка());
ОбластьЗаголовка.Параметры.Заполнить(Шапка);
ПараметрыОбласти = Новый Структура;
ПараметрыОбласти.Вставить("ТекстЗаголовка",
ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(Шапка,
НазваниеДокумента));
НаименованияНаДату = ОрганизацииПовтИсп.НаименованияНаДату(Шапка.Организация, Шапка.Дата);
ПараметрыОбласти.Вставить("ОрганизацияПредставление", НаименованияНаДату.НаименованиеСокращенное);
НаименованияНаДату = ОрганизацииПовтИсп.НаименованияНаДату(Шапка.ОрганизацияПолучатель, Шапка.Дата);
ПараметрыОбласти.Вставить("ОрганизацияПолучательПредставление", НаименованияНаДату.НаименованиеСокращенное);
ОбластьЗаголовка.Параметры.Заполнить(ПараметрыОбласти);
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьЗаголовка, Шапка.Ссылка);
ТабличныйДокумент.Вывести(ОбластьЗаголовка);
ТабличныйДокумент.Вывести(ОбластьНомераШапка);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодовШапка);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанныхШапка);
Если ИспользоватьУпаковкиНоменклатуры Тогда
ТабличныйДокумент.Присоединить(ОбластьУпаковокШапка);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьКонецСтрокиШапка);
НомерСтроки = 1;
Пока ВыборкаПоТоварам.НайтиСледующий(Новый Структура("Ссылка",Шапка.Ссылка)) Цикл
ОбластьНомераСтрока.Параметры.НомерСтроки = НомерСтроки;
ТабличныйДокумент.Вывести(ОбластьНомераСтрока);
Если ВыводитьКоды Тогда
ОбластьКодовСтрока.Параметры.Артикул = ВыборкаПоТоварам[ИмяКолонкиКодов];
ТабличныйДокумент.Присоединить(ОбластьКодовСтрока);
КонецЕсли;
Если ВыборкаПоТоварам.НастройкаИспользованияСерий = Перечисления.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара Тогда
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("Ссылка", ВыборкаПоТоварам.Ссылка);
СтруктураПоиска.Вставить("НомерСтроки", ВыборкаПоТоварам.НомерСтроки);
СтруктураПоиска.Вставить("Номенклатура", ВыборкаПоТоварам.Товар);
СтруктураПоиска.Вставить("Характеристика", ВыборкаПоТоварам.Характеристика);
СтрокаСерий = "";
Пока ВыборкаПоСериям.НайтиСледующий(СтруктураПоиска) Цикл
СтрокаСерий = СтрокаСерий + ВыборкаПоСериям.ПредставлениеСерии + ", ";
КонецЦикла;
Если СтрДлина(СтрокаСерий) <> 0 Тогда
СтрокаСерий = Лев(СтрокаСерий, СтрДлина(СтрокаСерий) - 2);
КонецЕсли;
Иначе
СтрокаСерий = ВыборкаПоТоварам.Серия;
КонецЕсли;
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
ОбластьДанныхСтрока.Параметры.Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
СокрЛП(ВыборкаПоТоварам.ТоварНаименование),
СокрЛП(ВыборкаПоТоварам.ХарактеристикаНаименование),
,
СокрЛП(СтрокаСерий),
ДопПараметрыПредставлениеНоменклатуры);
ТабличныйДокумент.Присоединить(ОбластьДанныхСтрока);
Если ИспользоватьУпаковкиНоменклатуры Тогда
ОбластьУпаковокСтрока.Параметры.Заполнить(ВыборкаПоТоварам);
ТабличныйДокумент.Присоединить(ОбластьУпаковокСтрока);
КонецЕсли;
ОбластьКонецСтрокиСтрока.Параметры.Заполнить(ВыборкаПоТоварам);
ТабличныйДокумент.Присоединить(ОбластьКонецСтрокиСтрока);
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
ТабличныйДокумент.Вывести(ОбластьНомераПодвал);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодовПодвал);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанныхПодвал);
Если ИспользоватьУпаковкиНоменклатуры Тогда
ТабличныйДокумент.Присоединить(ОбластьУпаковокПодвал);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьКонецСтрокиПодвал);
ТабличныйДокумент.Вывести(ОбластьПодписей);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
КонецЦикла;
ПерваяСтрокаОбъектов = Ложь;
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;
КонецФункции
Процедура ЗаполнитьСтруктуруПолучателейПечатныхФорм(СтруктураДанныхОбъектаПечати) Экспорт
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеДоставкой") Тогда
Возврат;
КонецЕсли;
СтруктураДанныхОбъектаПечати.ОсновнойПолучатель = "ПеревозчикПартнер";
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("ПеревозчикПартнер");
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Организации
Процедура ПроверитьИОчиститьОрганизацию(Объект, Организация) Экспорт
Если ЗначениеЗаполнено(Организация)
И Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами Тогда
Если Не Справочники.Организации.ОрганизацияВзаимосвязанаСДругимиОрганизациями(Организация) Тогда
Организация = Неопределено;
ИначеЕсли ЗначениеЗаполнено(Объект.Организация)
И ЗначениеЗаполнено(Объект.ОрганизацияПолучатель)
И Не Справочники.Организации.ОрганизацииВзаимосвязаныПоОрганизационнойСтруктуре(Объект.Организация, Объект.ОрганизацияПолучатель) Тогда
Организация = Неопределено;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ЗаполнениеДокумента
Процедура ПараметрыЗапросаДляСозданияНаОсновании(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("МассивЗаказов", ДанныеОтбора.МассивЗаказов);
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", Истина);
Если ДанныеОтбора.ЗаполнятьПоОрдеру Тогда
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ТаблицаОтгружено");
ИменаЗапросов.Добавить("ТаблицаОформить");
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
Иначе
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ТаблицаОформить");
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
КонецЕсли;
КонецПроцедуры
Процедура ПараметрыЗапросаДляПодбора(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("МассивЗаказов", ДанныеОтбора.МассивЗаказов);
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", ДанныеОтбора.МассивЗаказов.Количество() = 1);
ПараметрыЗапросов.Вставить("Регистратор", ДанныеОтбора.РеквизитыШапки.Ссылка);
ПараметрыЗапросов.Вставить("Организация", ДанныеОтбора.РеквизитыШапки.Организация);
ПараметрыЗапросов.Вставить("СкладОтправитель", ДанныеОтбора.РеквизитыШапки.СкладОтправитель);
ПараметрыЗапросов.Вставить("СкладПолучатель", ДанныеОтбора.РеквизитыШапки.СкладПолучатель);
ПараметрыЗапросов.Вставить("ТоварыНакладной", ДанныеОтбора.ТоварыНакладной);
ПараметрыЗапросов.Вставить("УчитыватьСобирается", Истина);
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ВтНакладная");
ИменаЗапросов.Добавить("ТаблицаОтгружено");
ИменаЗапросов.Добавить("ТаблицаОформить");
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
ИменаПодзапросов.Добавить("БлокСторноНакладная");
ИменаПодзапросов.Добавить("БлокНовыеДвиженияНакладная");
КонецПроцедуры
Процедура ПараметрыЗапросаДляПерезаполненияПоОрдерам(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("МассивЗаказов", ДанныеОтбора.МассивЗаказов);
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", Истина);
ПараметрыЗапросов.Вставить("Регистратор", ДанныеОтбора.РеквизитыШапки.Ссылка);
ПараметрыЗапросов.Вставить("ТоварыНакладной", ДанныеОтбора.ТоварыНакладной);
ПараметрыЗапросов.Вставить("УчитыватьСобирается", Истина);
ПараметрыЗапросов.Вставить("ЗаполнятьПоСобирается", Истина);
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ВтНакладная");
ИменаЗапросов.Добавить("ТаблицаОтгружено");
ИменаЗапросов.Добавить("ТаблицаОформить");
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
ИменаПодзапросов.Добавить("БлокСторноНакладная");
ИменаПодзапросов.Добавить("БлокНовыеДвиженияНакладная");
КонецПроцедуры
Процедура ПараметрыЗапросаДляЗаполненияПоЗаказам(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("МассивЗаказов", ДанныеОтбора.МассивЗаказов);
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", ДанныеОтбора.МассивЗаказов.Количество() = 1);
ПараметрыЗапросов.Вставить("Регистратор", ДанныеОтбора.РеквизитыШапки.Ссылка);
ПараметрыЗапросов.Вставить("Организация", ДанныеОтбора.РеквизитыШапки.Организация);
ПараметрыЗапросов.Вставить("СкладОтправитель", ДанныеОтбора.РеквизитыШапки.СкладОтправитель);
ПараметрыЗапросов.Вставить("СкладПолучатель", ДанныеОтбора.РеквизитыШапки.СкладПолучатель);
Если ДанныеОтбора.ЗаполнятьПоОрдеру Тогда
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ТаблицаОтгружено");
ИменаЗапросов.Добавить("ТаблицаОформить");
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
ИменаПодзапросов.Добавить("БлокСторноНакладная");
Иначе
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ТаблицаОформить");
ИменаПодзапросов.Добавить("БлокРегистрЗаказы");
ИменаПодзапросов.Добавить("БлокСторноНакладная");
КонецЕсли;
КонецПроцедуры
Функция ТекстЗапросаВременнойТаблицыНакладной()
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Количество КАК Количество,
|
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.НазначениеОтправителя КАК НазначениеОтправителя,
| Таблица.Назначение КАК Назначение,
| Таблица.Серия КАК Серия,
| Таблица.Сделка КАК Сделка,
|
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.Упаковка КАК Упаковка,
|
| ВЫБОР КОГДА Таблица.КодСтроки = 0 ТОГДА
| &Регистратор
| ИНАЧЕ
| Таблица.ЗаказНаПеремещение
| КОНЕЦ КАК Заказ
|
|ПОМЕСТИТЬ ВТНакладная
|ИЗ
| &ТоварыНакладной КАК Таблица
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВременнойТаблицыРаспоряжений()
ТекстЗапроса =
"ВЫБРАТЬ
| ЗаказНаПеремещение.Ссылка КАК Заказ
|ПОМЕСТИТЬ ВТЗаказыОтбор
|ИЗ
| Документ.ЗаказНаПеремещение КАК ЗаказНаПеремещение
|ГДЕ
| ВЫБОР
| КОГДА &ОтобратьПоЗаказу ТОГДА
| ЗаказНаПеремещение.Ссылка В (&МассивЗаказов)
| ИНАЧЕ ЗаказНаПеремещение.Организация = &Организация
| И ЗаказНаПеремещение.СкладОтправитель = &СкладОтправитель
| И ЗаказНаПеремещение.СкладПолучатель = &СкладПолучатель
| КОНЕЦ
| И ЗаказНаПеремещение.Проведен
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Регистратор КАК Заказ
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОбъединения(Имена, Тексты)
ТекстОбъединения = "";
ЭтоПервыйБлок = Истина;
Для Каждого Имя Из Имена Цикл
Если ЭтоПервыйБлок Тогда
ЭтоПервыйБлок = Ложь;
Иначе
ТекстОбъединения = ТекстОбъединения + "
|
| ОБЪЕДИНИТЬ ВСЕ
|
|";
КонецЕсли;
ТекстОбъединения = ТекстОбъединения + Тексты[Имя];
КонецЦикла;
ТекстЗапроса =
"ВЫБРАТЬ
| Набор.Заказ КАК ЗаказНаПеремещение,
| Набор.КодСтроки КАК КодСтроки,
|
| Набор.Номенклатура КАК Номенклатура,
| Набор.Характеристика КАК Характеристика,
| МАКСИМУМ(Набор.НазначениеОтправителя) КАК НазначениеОтправителя,
| МАКСИМУМ(Набор.Назначение) КАК Назначение,
| Набор.Серия КАК Серия,
| МАКСИМУМ(Набор.Дата) КАК Дата,
| МАКСИМУМ(Набор.НомерСтроки) КАК НомерСтроки,
| МАКСИМУМ(Набор.ДатаОтгрузки) КАК ДатаОтгрузки,
| МАКСИМУМ(Набор.Сделка) КАК Сделка,
| МАКСИМУМ(Набор.ПрисутствуетВДокументе) КАК ПрисутствуетВДокументе,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| Набор.Упаковка
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ) КАК УпаковкаНакладной,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Набор.Упаковка
| КОНЕЦ) КАК УпаковкаЗаказа,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| Набор.УпаковкаКоэффициент
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ) КАК УпаковкаНакладнойКоэффициент,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Набор.УпаковкаКоэффициент
| КОНЕЦ) КАК УпаковкаЗаказаКоэффициент,
|
|
| СУММА(Набор.КоличествоВЗаказе) КАК КоличествоВЗаказе,
| СУММА(Набор.КоличествоВНакладной) КАК КоличествоВНакладной
|
|ИЗ ТекстОбъединения КАК Набор
|
|СГРУППИРОВАТЬ ПО
| Набор.Заказ, Набор.КодСтроки,
| Набор.Номенклатура, Набор.Характеристика, Набор.Серия,
| ВЫБОР КОГДА Набор.КодСтроки <> 0 ТОГДА
| 0
| ИНАЧЕ
| Набор.НомерСтроки
| КОНЕЦ
|
|ИМЕЮЩИЕ
| СУММА(Набор.КоличествоВЗаказе) > 0 ИЛИ СУММА(Набор.КоличествоВНакладной) > 0
|
|УПОРЯДОЧИТЬ ПО
| Дата, Заказ, НомерСтроки
|;
|
|
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ТекстОбъединения", "(" + ТекстОбъединения + ")");
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОстаткиРегистраЗаказы()
ТекстЗапроса =
" ВЫБРАТЬ
| ТаблицаОстатки.ЗаказНаПеремещение КАК Заказ,
| ТаблицаОстатки.КодСтроки КАК КодСтроки,
|
| ТаблицаОстатки.КОформлениюОстаток КАК КоличествоВЗаказе,
| 0 КАК КоличествоВНакладной,
|
|
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
|
| ВЫБОР КОГДА Таблица.Обособленно ТОГДА
|
| ВЫБОР КОГДА Таблица.Назначение = ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИЛИ ДанныеДокумента.ОбосабливатьПоНазначениюЗаказа И Таблица.Назначение.ТипНазначения
| = ЗНАЧЕНИЕ(Перечисление.ТипыНазначений.Собственное) ТОГДА
| ДанныеДокумента.Назначение
| ИНАЧЕ
| Таблица.Назначение
| КОНЕЦ
|
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
|
| КОНЕЦ КАК НазначениеОтправителя,
|
| Таблица.Назначение КАК Назначение,
| Таблица.Серия КАК Серия,
| ДанныеДокумента.Дата КАК Дата,
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.НачалоОтгрузки КАК ДатаОтгрузки,
| ДанныеДокумента.Сделка КАК Сделка,
| ЛОЖЬ КАК ПрисутствуетВДокументе,
|
| Таблица.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент
| ИЗ
| РегистрНакопления.ЗаказыНаПеремещение.Остатки(,
| ЗаказНаПеремещение В(
| ВЫБРАТЬ
| Таблица.Заказ КАК Заказ
| ИЗ
| ВТЗаказыОтбор КАК Таблица)) КАК ТаблицаОстатки
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаПеремещение.Товары КАК Таблица
| ПО ТаблицаОстатки.ЗаказНаПеремещение = Таблица.Ссылка
| И ТаблицаОстатки.КодСтроки = Таблица.КодСтроки
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаПеремещение КАК ДанныеДокумента
| ПО ТаблицаОстатки.ЗаказНаПеремещение = ДанныеДокумента.Ссылка";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Таблица.Упаковка",
"Таблица.Номенклатура"));
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОтгруженоПоОрдерам()
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаОстатки.ДокументОтгрузки КАК ЗаказНаПеремещение,
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
| ТаблицаОстатки.Серия КАК Серия,
| ТаблицаОстатки.Назначение КАК НазначениеОтправителя,
| 1 КАК УпаковкаКоэффициент,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ) КАК Собирается,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
| ТаблицаОстатки.КОтгрузке
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА &ЗаполнятьПоСобирается И ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ
| + ТаблицаОстатки.Собрано) КАК Количество
|ИЗ
| ВТЗаказыОтбор КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКОтгрузке КАК ТаблицаОстатки
| ПО Таблица.Заказ = ТаблицаОстатки.ДокументОтгрузки
| И ТаблицаОстатки.Активность
|
|СГРУППИРОВАТЬ ПО
| ТаблицаОстатки.ДокументОтгрузки,
| ТаблицаОстатки.Номенклатура, ТаблицаОстатки.Характеристика, ТаблицаОстатки.Серия, ТаблицаОстатки.Назначение
|
|ИМЕЮЩИЕ
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
| ТаблицаОстатки.КОтгрузке
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА &УчитыватьСобирается И ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ
| + ТаблицаОстатки.Собрано) > 0
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаСторноНакладная()
ТекстЗапроса =
" ВЫБРАТЬ
| ТаблицаСторно.ЗаказНаПеремещение КАК Заказ,
| ТаблицаСторно.КодСтроки КАК КодСтроки,
|
| ТаблицаСторно.КОформлению КАК КоличествоВЗаказе,
| 0 КАК КоличествоВНакладной,
|
|
| ТаблицаСторно.Номенклатура КАК Номенклатура,
| ТаблицаСторно.Характеристика КАК Характеристика,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
|
| ВЫБОР КОГДА Таблица.Обособленно ТОГДА
|
| ВЫБОР КОГДА Таблица.Назначение = ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) ТОГДА
| Таблица.Ссылка.Назначение
| ИНАЧЕ
| Таблица.Назначение
| КОНЕЦ
|
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
|
| КОНЕЦ КАК НазначениеОтправителя,
|
| Таблица.Назначение КАК Назначение,
| Таблица.Серия КАК Серия,
| ДанныеДокумента.Дата КАК Дата,
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.НачалоОтгрузки КАК ДатаОтгрузки,
| ДанныеДокумента.Сделка КАК Сделка,
| ЛОЖЬ КАК ПрисутствуетВДокументе,
|
| Таблица.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент
| ИЗ
| РегистрНакопления.ЗаказыНаПеремещение КАК ТаблицаСторно
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаПеремещение.Товары КАК Таблица
| ПО Таблица.Ссылка = ТаблицаСторно.ЗаказНаПеремещение
| И Таблица.КодСтроки = ТаблицаСторно.КодСтроки
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаПеремещение КАК ДанныеДокумента
| ПО ТаблицаСторно.ЗаказНаПеремещение = ДанныеДокумента.Ссылка
| ГДЕ
| ТаблицаСторно.Регистратор = &Регистратор
| И ТаблицаСторно.ЗаказНаПеремещение В(
| ВЫБРАТЬ
| Таблица.Заказ КАК Заказ
| ИЗ
| ВТЗаказыОтбор КАК Таблица)
| И ТаблицаСторно.Активность";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Таблица.Упаковка",
"Таблица.Номенклатура"));
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаНовыеДвиженияНакладная()
ТекстЗапроса =
" ВЫБРАТЬ
| Таблица.Заказ КАК Заказ,
| Таблица.КодСтроки КАК КодСтроки,
| 0 КАК КоличествоВЗаказе,
| Таблица.Количество КАК КоличествоВНакладной,
|
|
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.НазначениеОтправителя КАК НазначениеОтправителя,
| Таблица.Назначение КАК Назначение,
| Таблица.Серия КАК Серия,
| НЕОПРЕДЕЛЕНО КАК Дата,
| Таблица.НомерСтроки КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК ДатаОтгрузки,
| Таблица.Сделка КАК Сделка,
| ИСТИНА КАК ПрисутствуетВДокументе,
|
| Таблица.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент
| ИЗ
| ВтНакладная КАК Таблица";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ВЫРАЗИТЬ(Таблица.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения)",
"ВЫРАЗИТЬ(Таблица.Номенклатура КАК Справочник.Номенклатура)"));
Возврат ТекстЗапроса;
КонецФункции
Функция ПараметрыСозданияПоГруппеСкладов(ПараметрКоманды) Экспорт
Запрос = Новый Запрос();
Если ТипЗнч(ПараметрКоманды) = Тип("ДокументСсылка.ПриобретениеТоваровУслуг") Тогда
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.Склад КАК Склад,
| Товары.Склад.Наименование КАК Наименование
|ИЗ
| Документ.ПриобретениеТоваровУслуг.Товары КАК Товары
|ГДЕ
| Товары.Ссылка = &Заказ
| И Товары.Номенклатура.ТипНоменклатуры В(
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
|УПОРЯДОЧИТЬ ПО
| Наименование";
ИначеЕсли ТипЗнч(ПараметрКоманды) = Тип("ДокументСсылка.ПриемкаТоваровНаХранение") Тогда
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.Склад КАК Склад
|ИЗ
| Документ.ПриемкаТоваровНаХранение.Товары КАК Товары
|ГДЕ
| Товары.Ссылка = &Заказ
| И Товары.Номенклатура.ТипНоменклатуры В(
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))";
КонецЕсли;
Запрос.УстановитьПараметр("Заказ", ПараметрКоманды);
Склады = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Склад");
НесколькоСкладов = Ложь;
Если Склады.Количество() > 1 Тогда
НесколькоСкладов = Истина;
ИначеЕсли Склады.Количество() = 0 Тогда
Склады.Добавить(Справочники.Склады.ПустаяСсылка());
КонецЕсли;
ПараметрыСозданияПоГруппеСкладов = Новый Структура();
ПараметрыСозданияПоГруппеСкладов.Вставить("СписокСкладов", Склады);
ПараметрыСозданияПоГруппеСкладов.Вставить("НесколькоСкладов", НесколькоСкладов);
Возврат ПараметрыСозданияПоГруппеСкладов;
КонецФункции
#КонецОбласти
Функция РеквизитыДокумента(ДокументСсылка) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Организация КАК Организация
|ИЗ
| Документ.ПеремещениеТоваров КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &ДокументСсылка
|");
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Дата = Выборка.Дата;
Организация = Выборка.Организация;
Иначе
Дата = Дата(1,1,1);
Организация = Неопределено;
КонецЕсли;
СтруктураРеквизитов = Новый Структура("Дата, Организация",
Дата,
Организация,);
Возврат СтруктураРеквизитов;
КонецФункции
#Область ТекущиеДела
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
ОбщиеПараметрыЗапросов = ТекущиеДелаСлужебный.ОбщиеПараметрыЗапросов();
Доступность =
(ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или ПравоДоступа("Просмотр", Метаданные.Документы.ПеремещениеТоваров))
И (ПравоДоступа("Добавление", Метаданные.Документы.ПеремещениеТоваров)
ИЛИ ПравоДоступа("Изменение", Метаданные.Документы.ПеремещениеТоваров))
И ПравоДоступа("Просмотр", Метаданные.Документы.ЗаказНаПеремещение)
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.ЗаказыНаПеремещение)
И ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыНаПеремещение");
Если НЕ Доступность Тогда
Возврат;
КонецЕсли;
ХозОперации = Новый Массив(2);
ХозОперации[0] = Перечисления.ХозяйственныеОперации.ПеремещениеТоваров;
ХозОперации[1] = Перечисления.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами;
ПеремещенияТоваровТоваровКОформлению = Обработки.ЖурналДокументовВнутреннегоТовародвижения.КоличествоСтрокКОформлению(
ХозОперации);
ДелоРодитель = ТекущиеДела.Найти("ВнутреннееТовародвижение", "Идентификатор");
Если ДелоРодитель = Неопределено Тогда
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = "ВнутреннееТовародвижение";
ДелоРодитель.Представление = НСтр("ru = 'Внутреннее товародвижение'");
ДелоРодитель.Владелец = Метаданные.Подсистемы.Склад;
КонецЕсли;
ДелоРодитель.ЕстьДела = ДелоРодитель.ЕстьДела Или ПеремещенияТоваровТоваровКОформлению > 0;
ПараметрыОткрытия = ПараметрыОткрытияФормыРабочегоМеста();
ПараметрыОткрытия.ПараметрыФормы.Вставить("КлючНазначенияФормы", "ТекущиеДела");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ПеремещенияТоваровКОформлению";
Дело.ЕстьДела = ПеремещенияТоваровТоваровКОформлению > 0;
Дело.Представление = НСтр("ru = 'Перемещения товаров к оформлению'");
Дело.Количество = ПеремещенияТоваровТоваровКОформлению;
Дело.Важное = Ложь;
Дело.Форма = ПараметрыОткрытия.ИмяФормы;
Дело.ПараметрыФормы = ПараметрыОткрытия.ПараметрыФормы;
Дело.Владелец = "ВнутреннееТовародвижение";
КонецПроцедуры
#КонецОбласти
#Область ЗагрузкаДанныхИзФайла
Процедура УстановитьПараметрыЗагрузкиИзФайлаВТЧ(Параметры) Экспорт
КонецПроцедуры
Процедура СопоставитьЗагружаемыеДанные(АдресЗагружаемыхДанных, АдресТаблицыСопоставления, СписокНеоднозначностей, ПолноеИмяТабличнойЧасти, ДополнительныеПараметры) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| ЗагружаемыеДанные.КодНоменклатуры КАК КодНоменклатуры,
| ЗагружаемыеДанные.Артикул КАК АртикулНоменклатуры,
| ЗагружаемыеДанные.Номенклатура КАК Номенклатура,
| ЗагружаемыеДанные.Характеристика КАК Характеристика,
| ЗагружаемыеДанные.Назначение КАК Назначение,
| ЗагружаемыеДанные.Серия КАК Серия,
| ЗагружаемыеДанные.КодУпаковки КАК КодУпаковки,
| ЗагружаемыеДанные.Упаковка КАК Упаковка,
| ЗагружаемыеДанные.КоличествоУпаковок КАК КоличествоУпаковок
|
|ПОМЕСТИТЬ втЗагружаемыеДанные
|
|ИЗ
| &ЗагружаемыеДанные КАК ЗагружаемыеДанные
|
|ИНДЕКСИРОВАТЬ ПО
| Идентификатор
|;
|
|
|ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| МАКСИМУМ(СпрНоменклатура.Ссылка) КАК Ссылка,
| КОЛИЧЕСТВО(СпрНоменклатура.Ссылка) КАК Количество
|
|ПОМЕСТИТЬ втНоменклатураПоАртикулу
|
|ИЗ
| втЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО СпрНоменклатура.Артикул = ЗагружаемыеДанные.АртикулНоменклатуры
| И НЕ СпрНоменклатура.ПометкаУдаления
| И НЕ СпрНоменклатура.ЭтоГруппа
|
|ГДЕ
| ЗагружаемыеДанные.АртикулНоменклатуры <> """"
|
|СГРУППИРОВАТЬ ПО
| ЗагружаемыеДанные.Идентификатор
|
|ИНДЕКСИРОВАТЬ ПО
| Идентификатор
|;
|
|
|ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| МАКСИМУМ(СпрНоменклатура.Ссылка) КАК Ссылка,
| КОЛИЧЕСТВО(СпрНоменклатура.Ссылка) КАК Количество
|
|ПОМЕСТИТЬ втНоменклатураПоКоду
|
|ИЗ
| втЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО СпрНоменклатура.Код = ЗагружаемыеДанные.КодНоменклатуры
| И НЕ СпрНоменклатура.ПометкаУдаления
| И НЕ СпрНоменклатура.ЭтоГруппа
|
|ГДЕ
| ЗагружаемыеДанные.КодНоменклатуры <> """"
|
|СГРУППИРОВАТЬ ПО
| ЗагружаемыеДанные.Идентификатор
|
|ИНДЕКСИРОВАТЬ ПО
| Идентификатор
|;
|
|
|ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| МАКСИМУМ(СпрНоменклатура.Ссылка) КАК Ссылка,
| КОЛИЧЕСТВО(СпрНоменклатура.Ссылка) КАК Количество
|
|ПОМЕСТИТЬ втНоменклатураПоНаименованию
|
|ИЗ
| втЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО СпрНоменклатура.Наименование = ЗагружаемыеДанные.Номенклатура
| И НЕ СпрНоменклатура.ПометкаУдаления
| И НЕ СпрНоменклатура.ЭтоГруппа
|
|ГДЕ
| ЗагружаемыеДанные.Номенклатура <> """"
|
|СГРУППИРОВАТЬ ПО
| ЗагружаемыеДанные.Идентификатор
|
|ИНДЕКСИРОВАТЬ ПО
| Идентификатор
|;
|
|
|ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| СпрХарактеристики.Владелец КАК Владелец,
| МАКСИМУМ(СпрХарактеристики.Ссылка) КАК Ссылка,
| КОЛИЧЕСТВО(СпрХарактеристики.Ссылка) КАК Количество
|
|ПОМЕСТИТЬ втХарактеристикиПоНаименованию
|
|ИЗ
| втЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
| ПО СпрХарактеристики.Наименование = ЗагружаемыеДанные.Характеристика
| И НЕ СпрХарактеристики.ПометкаУдаления
|
|ГДЕ
| ЗагружаемыеДанные.Характеристика <> """"
|
|СГРУППИРОВАТЬ ПО
| ЗагружаемыеДанные.Идентификатор,
| СпрХарактеристики.Владелец
|
|ИНДЕКСИРОВАТЬ ПО
| Идентификатор
|;
|
|
|ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| СпрСерии.ВидНоменклатуры КАК ВидНоменклатуры,
| МАКСИМУМ(СпрСерии.Ссылка) КАК Ссылка,
| КОЛИЧЕСТВО(СпрСерии.Ссылка) КАК Количество
|
|ПОМЕСТИТЬ втСерииПоНаименованию
|
|ИЗ
| втЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СпрСерии
| ПО СпрСерии.Наименование = ЗагружаемыеДанные.Серия
| И НЕ СпрСерии.ПометкаУдаления
|
|ГДЕ
| ЗагружаемыеДанные.Серия <> """"
|
|СГРУППИРОВАТЬ ПО
| ЗагружаемыеДанные.Идентификатор,
| СпрСерии.ВидНоменклатуры
|
|ИНДЕКСИРОВАТЬ ПО
| Идентификатор
|;
|
|
|ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
|
| ВЫБОР
| КОГДА НЕ втНоменклатураПоНаименованию.Идентификатор ЕСТЬ NULL
|
| ТОГДА втНоменклатураПоНаименованию.Ссылка
|
| КОГДА НЕ втНоменклатураПоАртикулу.Идентификатор ЕСТЬ NULL
|
| ТОГДА втНоменклатураПоАртикулу.Ссылка
|
| КОГДА НЕ втНоменклатураПоКоду.Идентификатор ЕСТЬ NULL
|
| ТОГДА втНоменклатураПоКоду.Ссылка
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
| КОНЕЦ КАК Ссылка
|
|ПОМЕСТИТЬ втНайденнаяНоменклатура
|
|ИЗ
| втЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ЛЕВОЕ СОЕДИНЕНИЕ втНоменклатураПоАртикулу КАК втНоменклатураПоАртикулу
| ПО втНоменклатураПоАртикулу.Идентификатор = ЗагружаемыеДанные.Идентификатор
|
| ЛЕВОЕ СОЕДИНЕНИЕ втНоменклатураПоКоду КАК втНоменклатураПоКоду
| ПО втНоменклатураПоКоду.Идентификатор = ЗагружаемыеДанные.Идентификатор
|
| ЛЕВОЕ СОЕДИНЕНИЕ втНоменклатураПоНаименованию КАК втНоменклатураПоНаименованию
| ПО втНоменклатураПоНаименованию.Идентификатор = ЗагружаемыеДанные.Идентификатор
|
|ИНДЕКСИРОВАТЬ ПО
| Идентификатор
|;
|
|
|ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| втХарактеристикиПоНаименованию.Ссылка КАК Ссылка
|
|ПОМЕСТИТЬ втНайденнаяХарактеристика
|
|ИЗ
| втЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втНайденнаяНоменклатура КАК втНайденнаяНоменклатура
| ПО втНайденнаяНоменклатура.Идентификатор = ЗагружаемыеДанные.Идентификатор
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втХарактеристикиПоНаименованию КАК втХарактеристикиПоНаименованию
| ПО втХарактеристикиПоНаименованию.Идентификатор = ЗагружаемыеДанные.Идентификатор
| И (втХарактеристикиПоНаименованию.Владелец = втНайденнаяНоменклатура.Ссылка
| ИЛИ втХарактеристикиПоНаименованию.Владелец = втНайденнаяНоменклатура.Ссылка.ВидНоменклатуры)
|
|ИНДЕКСИРОВАТЬ ПО
| Идентификатор
|;
|
|
|ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| втСерииПоНаименованию.Ссылка КАК Ссылка
|
|ПОМЕСТИТЬ втНайденнаяСерия
|
|ИЗ
| втЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втНайденнаяНоменклатура КАК втНайденнаяНоменклатура
| ПО втНайденнаяНоменклатура.Идентификатор = ЗагружаемыеДанные.Идентификатор
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втСерииПоНаименованию КАК втСерииПоНаименованию
| ПО втСерииПоНаименованию.Идентификатор = ЗагружаемыеДанные.Идентификатор
| И (втСерииПоНаименованию.ВидНоменклатуры = ВЫБОР
| КОГДА втНайденнаяНоменклатура.Ссылка.ВидНоменклатуры.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры
| ТОГДА втНайденнаяНоменклатура.Ссылка.ВидНоменклатуры.ВладелецСерий
| ИНАЧЕ втНайденнаяНоменклатура.Ссылка.ВидНоменклатуры
| КОНЕЦ)
|
|ИНДЕКСИРОВАТЬ ПО
| Идентификатор
|;
|
|
|
|ВЫБРАТЬ
| Назначения.Идентификатор КАК Идентификатор,
| МАКСИМУМ(Назначения.Назначение) КАК Назначение,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Назначения.Назначение) КАК КоличествоНазначений
|ПОМЕСТИТЬ ВтНайденноеНазначение
|ИЗ
| (ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| Назначения.Ссылка КАК Назначение
| ИЗ
| ВтЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Назначения КАК Назначения
| ПО Назначения.Наименование = ЗагружаемыеДанные.Назначение
|
| ГДЕ
| НЕ ЗагружаемыеДанные.Назначение = """"
| ) КАК Назначения
|
|СГРУППИРОВАТЬ ПО
| Назначения.Идентификатор
|
|ИНДЕКСИРОВАТЬ ПО
| Идентификатор
|;
|
|
|
|ВЫБРАТЬ
| Упаковки.Идентификатор КАК Идентификатор,
| МАКСИМУМ(Упаковки.Упаковка) КАК Упаковка,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Упаковки.Упаковка) КАК КоличествоУпаковки
|ПОМЕСТИТЬ ВтНайденныеУпаковки
|ИЗ
| (ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| Упаковки.Ссылка КАК Упаковка
| ИЗ
| ВтЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втНайденнаяНоменклатура КАК ДанныеНоменклатуры
| ПО ДанныеНоменклатуры.Идентификатор = ЗагружаемыеДанные.Идентификатор
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК Упаковки
| ПО Упаковки.Владелец = ДанныеНоменклатуры.Ссылка
| И Упаковки.Наименование = ЗагружаемыеДанные.Упаковка
|
| ГДЕ
| НЕ ЗагружаемыеДанные.Упаковка = """"
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| Упаковки.Ссылка КАК Упаковка
| ИЗ
| ВтЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втНайденнаяНоменклатура КАК ДанныеНоменклатуры
| ПО ДанныеНоменклатуры.Идентификатор = ЗагружаемыеДанные.Идентификатор
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК Упаковки
| ПО Упаковки.Владелец = ДанныеНоменклатуры.Ссылка.НаборУпаковок
| И Упаковки.Наименование = ЗагружаемыеДанные.Упаковка
|
| ГДЕ
| НЕ ЗагружаемыеДанные.Упаковка = """"
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| Упаковки.Ссылка КАК Упаковка
| ИЗ
| ВтЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втНайденнаяНоменклатура КАК ДанныеНоменклатуры
| ПО ДанныеНоменклатуры.Идентификатор = ЗагружаемыеДанные.Идентификатор
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК Упаковки
| ПО Упаковки.Владелец = ДанныеНоменклатуры.Ссылка
| И Упаковки.Код = ЗагружаемыеДанные.КодУпаковки
|
| ГДЕ
| НЕ ЗагружаемыеДанные.КодУпаковки = """"
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗагружаемыеДанные.Идентификатор КАК Идентификатор,
| Упаковки.Ссылка КАК Упаковка
| ИЗ
| ВтЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ втНайденнаяНоменклатура КАК ДанныеНоменклатуры
| ПО ДанныеНоменклатуры.Идентификатор = ЗагружаемыеДанные.Идентификатор
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК Упаковки
| ПО Упаковки.Владелец = ДанныеНоменклатуры.Ссылка.НаборУпаковок
| И Упаковки.Код = ЗагружаемыеДанные.КодУпаковки
|
| ГДЕ
| НЕ ЗагружаемыеДанные.КодУпаковки = """"
| ) КАК Упаковки
|
|СГРУППИРОВАТЬ ПО
| Упаковки.Идентификатор
|
|ИНДЕКСИРОВАТЬ ПО
| Идентификатор
|;
|
|
|
|ВЫБРАТЬ
|
| ЕСТЬNULL(втНайденнаяНоменклатура.Ссылка, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК Номенклатура,
| ЕСТЬNULL(втНайденнаяХарактеристика.Ссылка, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК Характеристика,
| ЕСТЬNULL(втНайденнаяСерия.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВтНайденноеНазначение.КоличествоНазначений, 0) = 1
| ТОГДА ВтНайденноеНазначение.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ЕСТЬNULL(ВтНайденноеНазначение.КоличествоНазначений, 0) КАК КоличествоНазначений,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВтНайденныеУпаковки.КоличествоУпаковки, 0) = 1
| ТОГДА ВтНайденныеУпаковки.Упаковка
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| КОНЕЦ КАК Упаковка,
| ЕСТЬNULL(ВтНайденныеУпаковки.КоличествоУпаковки, 0) КАК КоличествоУпаковки,
| ЗагружаемыеДанные.КоличествоУпаковок КАК КоличествоУпаковок
|
|ИЗ
| втЗагружаемыеДанные КАК ЗагружаемыеДанные
|
| ЛЕВОЕ СОЕДИНЕНИЕ втНайденнаяНоменклатура КАК втНайденнаяНоменклатура
| ПО втНайденнаяНоменклатура.Идентификатор = ЗагружаемыеДанные.Идентификатор
|
| ЛЕВОЕ СОЕДИНЕНИЕ втНайденнаяХарактеристика КАК втНайденнаяХарактеристика
| ПО втНайденнаяХарактеристика.Идентификатор = ЗагружаемыеДанные.Идентификатор
|
| ЛЕВОЕ СОЕДИНЕНИЕ втНайденнаяСерия КАК втНайденнаяСерия
| ПО втНайденнаяСерия.Идентификатор = ЗагружаемыеДанные.Идентификатор
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтНайденноеНазначение КАК ВтНайденноеНазначение
| ПО ВтНайденноеНазначение.Идентификатор = ЗагружаемыеДанные.Идентификатор
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтНайденныеУпаковки КАК ВтНайденныеУпаковки
| ПО ВтНайденныеУпаковки.Идентификатор = ЗагружаемыеДанные.Идентификатор
|";
ТаблицаТовары = ПолучитьИзВременногоХранилища(АдресТаблицыСопоставления);
ЗагружаемыеДанные = ПолучитьИзВременногоХранилища(АдресЗагружаемыхДанных);
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
Запрос.УстановитьПараметр("ЗагружаемыеДанные", ЗагружаемыеДанные);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ТаблицаТовары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
Если Выборка.КоличествоНазначений > 1 Тогда
ЗаписьОНеоднозначности = СписокНеоднозначностей.Добавить();
ЗаписьОНеоднозначности.Идентификатор = Выборка.Идентификатор;
ЗаписьОНеоднозначности.Колонка = "Назначение";
КонецЕсли;
Если Выборка.КоличествоУпаковки > 1 Тогда
ЗаписьОНеоднозначности = СписокНеоднозначностей.Добавить();
ЗаписьОНеоднозначности.Идентификатор = Выборка.Идентификатор;
ЗаписьОНеоднозначности.Колонка = "Упаковка";
КонецЕсли;
КонецЦикла;
ПоместитьВоВременноеХранилище(ТаблицаТовары, АдресТаблицыСопоставления);
КонецПроцедуры
Процедура ЗаполнитьСписокНеоднозначностей(ПолноеИмяТабличнойЧасти, СписокНеоднозначностей, ИмяКолонки, ЗагружаемыеЗначенияСтрока, ДополнительныеПараметры) Экспорт
Запрос = Новый Запрос;
Если ИмяКолонки = "Назначение" Тогда
Запрос.Текст =
"ВЫБРАТЬ
| Назначения.Ссылка КАК Ссылка
|ИЗ
| Справочник.Назначения КАК Назначения
|
|ГДЕ
| НЕ &Назначение = """"
| И Назначения.Наименование = &Назначение
|";
Запрос.УстановитьПараметр("Назначение", ЗагружаемыеЗначенияСтрока.Назначение);
КонецЕсли;
Если ИмяКолонки = "Упаковка" Тогда
Запрос.Текст =
"ВЫБРАТЬ
| Упаковки.Ссылка КАК Ссылка
|ИЗ
| (ВЫБРАТЬ
| Упаковки.Ссылка КАК Ссылка
| ИЗ
| Справочник.УпаковкиЕдиницыИзмерения КАК Упаковки
|
| ГДЕ
| НЕ &КодУпаковки = """"
| И Упаковки.Код = &КодУпаковки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Упаковки.Ссылка КАК Ссылка
| ИЗ
| Справочник.УпаковкиЕдиницыИзмерения КАК Упаковки
|
| ГДЕ
| НЕ &Упаковка = """"
| И Упаковки.Наименование = &Упаковка
| ) КАК Упаковки
|
|СГРУППИРОВАТЬ ПО
| Упаковки.Ссылка
|";
Запрос.УстановитьПараметр("КодУпаковки", ЗагружаемыеЗначенияСтрока.КодУпаковки);
Запрос.УстановитьПараметр("Упаковка", ЗагружаемыеЗначенияСтрока.Упаковка);
КонецЕсли;
Если ЗначениеЗаполнено(Запрос.Текст) Тогда
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СписокНеоднозначностей.Добавить(Выборка.Ссылка);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОтчетСостояниеВыполненияДокумента
Функция ВременнаяТаблицаТоварыПоступлениеДляОтчетаСостояниеВыполнения()
ТекстЗапроса = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Набор.ДокументПоступления КАК ДокументПоступления,
| Набор.Номенклатура КАК Номенклатура,
| Набор.Характеристика КАК Характеристика,
| Набор.Склад КАК Склад,
|
| ЛОЖЬ КАК РаздельнаяЗакупка,
|
| СУММА(Набор.Принимается) КАК Принимается,
| СУММА(Набор.Принято) КАК Принято,
| СУММА(Набор.Принять) КАК Принять,
| СУММА(Набор.Поступило) КАК Поступило,
|
| СУММА(Набор.КПоступлению) КАК КПоступлению,
| СУММА(Набор.Оформить) КАК Оформить,
| СУММА(Набор.Оформлено) КАК Оформлено,
|
| МАКСИМУМ(Набор.ОрдернаяСхемаПриПоступлении) КАК ОрдернаяСхемаПриПоступлении
|
|ПОМЕСТИТЬ ВТТоварыПоступление
|ИЗ(
| ВЫБРАТЬ
| ТоварыКПоступлению.ДокументПоступления КАК ДокументПоступления,
| ТоварыКПоступлению.Номенклатура КАК Номенклатура,
| ТоварыКПоступлению.Характеристика КАК Характеристика,
| ТоварыКПоступлению.Склад КАК Склад,
|
| ТоварыКПоступлению.ПринимаетсяКонечныйОстаток КАК Принимается,
| ТоварыКПоступлению.КОформлениюОрдеровРасход КАК Принято,
| ТоварыКПоступлению.КОформлениюОрдеровКонечныйОстаток КАК Принять,
| ТоварыКПоступлению.КОформлениюОрдеровРасход КАК Поступило,
|
| 0 КАК КПоступлению,
| 0 КАК Оформить,
| 0 КАК Оформлено,
|
| ВЫБОР КОГДА ТоварыКПоступлению.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И &ТекущаяДата >= ТоварыКПоступлению.Склад.ДатаНачалаОрдернойСхемыПриПоступлении ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПоступлении
| ИЗ
| РегистрНакопления.ТоварыКПоступлению.ОстаткиИОбороты( , , , ,
| ДокументПоступления В(
| ВЫБРАТЬ
| ВтДокументы.ДокументСсылка
| ИЗ
| ВтДокументы КАК ВтДокументы)) КАК ТоварыКПоступлению
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТоварыКОформлению.Ссылка КАК ДокументПоступления,
| ТоварыКОформлению.Номенклатура КАК Номенклатура,
| ТоварыКОформлению.Характеристика КАК Характеристика,
| ТоварыКОформлению.Ссылка.СкладПолучатель КАК Склад,
|
| 0 КАК Принимается,
| 0 КАК Принято,
| ВЫБОР КОГДА ТоварыКОформлению.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Отгружено)
| И НЕ ( ТоварыКОформлению.Ссылка.СкладПолучатель.ИспользоватьОрдернуюСхемуПриПоступлении
| И &ТекущаяДата >= ТоварыКОформлению.Ссылка.СкладПолучатель.ДатаНачалаОрдернойСхемыПриПоступлении) ТОГДА
| ТоварыКОформлению.Количество
| ИНАЧЕ
| 0
| КОНЕЦ КАК Принять,
| 0 КАК Поступило,
|
| ТоварыКОформлению.Количество КАК КПоступлению,
| 0 КАК Оформить,
| ТоварыКОформлению.Количество КАК Оформлено,
|
| ВЫБОР КОГДА ТоварыКОформлению.Ссылка.СкладПолучатель.ИспользоватьОрдернуюСхемуПриПоступлении
| И &ТекущаяДата >= ТоварыКОформлению.Ссылка.СкладПолучатель.ДатаНачалаОрдернойСхемыПриПоступлении ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПоступлении
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ТоварыКОформлению
|ГДЕ
| НЕ ТоварыКОформлению.Ссылка.ПеремещениеПоЗаказам
| И ТоварыКОформлению.Ссылка В(
| ВЫБРАТЬ
| ВтДокументы.ДокументСсылка
| ИЗ
| ВтДокументы КАК ВтДокументы)) КАК Набор
|СГРУППИРОВАТЬ ПО
| Набор.ДокументПоступления,
| Набор.Номенклатура, Набор.Характеристика, Набор.Склад
|
|;
|
|";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#КонецЕсли