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