#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция ПредставлениеОбъектаНаОсновномЯзыке() Экспорт
КодОсновногоЯзыка = ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка();
ПредставлениеОбъекта = НСтр(
"ru = 'Заказ на сборку (разборку)'",
КодОсновногоЯзыка);
Возврат ПредставлениеОбъекта;
КонецФункции
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Организация, Склад");
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "ДокументОснование";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Подразделение", Параметры);
КонецПроцедуры
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("ВнутреннееТовародвижение");
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("АдресныйСклад");
ЗаказНаСборкуЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ЗаказНаСборку") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
ТекстЗапросаТаблицаЗаказыНаСборку(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
ЗаказНаСборкуЛокализация.ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры);
ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Функция ДопустимыеСтатусыВводаНаОсновании(ИмяДокумента) Экспорт
ДопустимыеСтатусы = Новый Массив;
ДопустимыеСтатусы.Добавить(Перечисления.СтатусыВнутреннихЗаказов.КВыполнению);
ДопустимыеСтатусы.Добавить(Перечисления.СтатусыВнутреннихЗаказов.Закрыт);
Возврат ДопустимыеСтатусы;
КонецФункции
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Документы.ЗаказНаПеремещение.ДобавитьКомандуСоздатьОбеспечивающийЗаказ(КомандыСозданияНаОсновании);
Документы.ЗаказПоставщику.ДобавитьКомандуСоздатьОбеспечивающийЗаказ(КомандыСозданияНаОсновании);
Документы.КорректировкаНазначенияТоваров.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.СборкаТоваров.ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании);
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании);
Документы.ПоручениеЭкспедитору.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
ЗаказНаСборкуЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьОбеспечивающийЗаказ(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаказНаСборку) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ЗаказНаСборку.ПолноеИмя();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.СоздатьОбеспечивающийЗаказ";
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(
Метаданные.Документы.ЗаказНаСборку);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьЗаказыНаСборку";
ПараметрыСоздания = ОбеспечениеВДокументахСервер.ПараметрыСозданияОбеспечивающегоЗаказа(
КомандаСоздатьНаОсновании.ДополнительныеПараметры);
ПараметрыСоздания.ИмяМенеджераДокумента = "ЗаказНаСборку";
ПараметрыСоздания.ИмяФормы = "Документ.ЗаказНаСборку.ФормаОбъекта";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ПараметрыСозданияНаОснованииОбеспечивающегоЗаказа() Экспорт
ПараметрыТаблицыТовары = ОбеспечениеВДокументахСервер.ПараметрыОтбораТоваровДляСозданияОбеспечивающиегоЗаказа();
ПараметрыТаблицыТовары.ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.Товар);
ПараметрыТаблицыТовары.ТипыНоменклатуры.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ПараметрыТаблицыТовары.ОдинСклад = Истина;
Возврат ПараметрыТаблицыТовары;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КомандаОтчет = Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияВнутреннихРаспоряжений(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 1;
КонецЕсли;
ЗаказНаСборкуЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
Функция ДопустимыеОтклоненияМерныхТоваров(СписокРаспоряжений, ТипДвиженияЗапасов) Экспорт
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров = Константы.ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров.Получить();
Если Не ЗначениеЗаполнено(СписокРаспоряжений) Или ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров = 0 Тогда
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Заказ");
Таблица.Колонки.Добавить("Номенклатура");
Таблица.Колонки.Добавить("Характеристика");
Таблица.Колонки.Добавить("Серия");
Таблица.Колонки.Добавить("ДопустимоеОтклонение");
Возврат Таблица;
КонецЕсли;
Если ТипЗнч(СписокРаспоряжений) = Тип("ДокументСсылка.ЗаказНаСборку") Тогда
МассивРаспоряжений = Новый Массив();
МассивРаспоряжений.Добавить(СписокРаспоряжений);
Иначе
МассивРаспоряжений = СписокРаспоряжений;
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ТоварыКПоступлению.ЗаказНаСборку КАК Заказ,
| ТоварыКПоступлению.Номенклатура КАК Номенклатура,
| ТоварыКПоступлению.Характеристика КАК Характеристика,
| ТоварыКПоступлению.Серия КАК Серия,
| СУММА(ТоварыКПоступлению.КОформлениюПриход
| * (&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100)) КАК ДопустимоеОтклонение
|ИЗ
| РегистрНакопления.ЗаказыНаСборку.Обороты(&НачПериод, &КонПериод,,
| ЗаказНаСборку В (&МассивРаспоряжений) И ТипСборки = &ТипСборки) КАК ТоварыКПоступлению
|ГДЕ
| ТоварыКПоступлению.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В (&МерныеТипыЕдиницИзмерений)
|СГРУППИРОВАТЬ ПО
| ТоварыКПоступлению.ЗаказНаСборку,
| ТоварыКПоступлению.Номенклатура,
| ТоварыКПоступлению.Характеристика,
| ТоварыКПоступлению.ТипСборки,
| ТоварыКПоступлению.Серия");
Запрос.УстановитьПараметр("МассивРаспоряжений", МассивРаспоряжений);
Запрос.УстановитьПараметр("ТипСборки", ТипДвиженияЗапасов);
Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
ГраницыОборотов = ОбщегоНазначенияУТ.ГраницыОборотовРегистра("ЗаказыНаСборку",
"ЗаказНаСборку В (&МассивРаспоряжений)", Запрос.Параметры);
Запрос.УстановитьПараметр("НачПериод", ГраницыОборотов.МинимальнаяДата);
Запрос.УстановитьПараметр("КонПериод", ГраницыОборотов.МаксимальнаяДата);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#Область РасчетСостояний
Функция ПараметрыДляРасчетаСостояний() Экспорт
Структура = Новый Структура();
Структура.Вставить("МодульОстаткиЗаказов", РегистрыНакопления.ЗаказыНаСборку);
Структура.Вставить("КонтролироватьЗакрытиеЗаказа",
ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыНаСборкуБезПолнойОтгрузки"));
Структура.Вставить("СтатусВПроцессеПоступления", Перечисления.СостоянияВнутреннихЗаказов.ВПроцессеСборки);
Структура.Вставить("СтатусВПроцессеОтгрузки", Перечисления.СостоянияВнутреннихЗаказов.ВПроцессеСборки);
Структура.Вставить("СтатусГотовКОтгрузке", Перечисления.СостоянияВнутреннихЗаказов.ГотовКСборке);
Возврат Структура;
КонецФункции
Функция ВременныеТаблицыДокументаДляРасчетаСостояний() Экспорт
ТекстЗапросаТовары =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.ВариантОбеспечения КАК ВариантОбеспечения,
| ИСТИНА КАК ЭтоТовар
|
|ПОМЕСТИТЬ ВтТоварыДокумента
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК Таблица
|ГДЕ
| Таблица.Ссылка В(&МассивЗаказов)
| И НЕ Таблица.Отменено
| И Таблица.Ссылка.Проведен
| И Таблица.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
|
| ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.ВариантОбеспечения КАК ВариантОбеспечения,
| ИСТИНА КАК ЭтоТовар
|ИЗ
| Документ.ЗаказНаСборку КАК Таблица
|ГДЕ
| Таблица.Ссылка В(&МассивЗаказов)
| И Таблица.Количество <> 0
| И Таблица.Проведен
| И Таблица.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)";
ТекстЗапросаРеквизиты =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Проведен КАК Проведен,
|
| ИСТИНА КАК СтатусКОтгрузке,
|
| ВЫБОР КОГДА Таблица.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК СтатусЗакрыт,
| ЛОЖЬ КАК СтатусНаСогласовании
|
|ПОМЕСТИТЬ ВтРеквизитыДокумента
|ИЗ
| Документ.ЗаказНаСборку КАК Таблица
|ГДЕ
| Таблица.Ссылка В(&МассивЗаказов)";
Результат = Новый Структура("ТоварыДокумента, РеквизитыДокумента", ТекстЗапросаТовары, ТекстЗапросаРеквизиты);
Возврат Результат;
КонецФункции
#КонецОбласти
Функция СформироватьЗапросПроверкиПриСменеСтатуса(МассивДокументов, НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыВнутреннихЗаказов[НовыйСтатус];
Если ДополнительныеПараметры <> Неопределено И ДополнительныеПараметры.Свойство("КонтрольВыполненияЗаказа") Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Остатки.ЗаказНаСборку КАК ЗаказНаСборку
|ПОМЕСТИТЬ втОстаткиПоЗаказам
|ИЗ
| РегистрНакопления.ЗаказыНаСборку.Остатки(, ЗаказНаСборку В (&МассивДокументов)) КАК Остатки
|
|ИНДЕКСИРОВАТЬ ПО
| Остатки.ЗаказНаСборку
|;
|
|
|ВЫБРАТЬ
| ТоварыКОтгрузкеОстатки.ДокументОтгрузки
|ПОМЕСТИТЬ втОстаткиПоОтгрузке
|ИЗ
| РегистрНакопления.ТоварыКОтгрузке.Остатки(, ДокументОтгрузки В (&МассивДокументов)) КАК ТоварыКОтгрузкеОстатки
|ГДЕ
| ТоварыКОтгрузкеОстатки.КОтгрузкеОстаток + ТоварыКОтгрузкеОстатки.СобраноОстаток > 0
|
|ИНДЕКСИРОВАТЬ ПО
| ТоварыКОтгрузкеОстатки.ДокументОтгрузки
|;
|
|
|ВЫБРАТЬ
| ТоварыКПоступлениюОстатки.ДокументПоступления
|ПОМЕСТИТЬ втОстаткиПоПоступлению
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Остатки(, ДокументПоступления В (&МассивДокументов)) КАК ТоварыКПоступлениюОстатки
|
|ИНДЕКСИРОВАТЬ ПО
| ТоварыКПоступлениюОстатки.ДокументПоступления
|;
|
|
|ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ТаблицаДокументов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР
| КОГДА ТаблицаДокументов.Статус = &Статус
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ИСТИНА КАК ЗаписьПроведением,
| ВЫБОР
| КОГДА втОстаткиПоЗаказам.ЗаказНаСборку ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| ИЛИ ВЫБОР
| КОГДА втОстаткиПоОтгрузке.ДокументОтгрузки ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| ИЛИ ВЫБОР
| КОГДА втОстаткиПоПоступлению.ДокументПоступления ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОстаткиПоЗаказу
|ИЗ
| Документ.ЗаказНаСборку КАК ТаблицаДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ втОстаткиПоЗаказам КАК втОстаткиПоЗаказам
| ПО ТаблицаДокументов.Ссылка = втОстаткиПоЗаказам.ЗаказНаСборку
| ЛЕВОЕ СОЕДИНЕНИЕ втОстаткиПоОтгрузке КАК втОстаткиПоОтгрузке
| ПО ТаблицаДокументов.Ссылка = втОстаткиПоОтгрузке.ДокументОтгрузки
| ЛЕВОЕ СОЕДИНЕНИЕ втОстаткиПоПоступлению КАК втОстаткиПоПоступлению
| ПО ТаблицаДокументов.Ссылка = втОстаткиПоПоступлению.ДокументПоступления
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)";
Иначе
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ТаблицаДокументов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР
| КОГДА ТаблицаДокументов.Статус = &Статус
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ИСТИНА КАК ЗаписьПроведением
|ИЗ
| Документ.ЗаказНаСборку КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)
|";
КонецЕсли;
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Статус", ЗначениеНовогоСтатуса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Возврат Запрос;
КонецФункции
Функция ПроверкаПередСменойСтатуса(ВыборкаПроверки, НовыйСтатус, ДополнительныеПараметры) Экспорт
Отказ = Ложь;
Если ДополнительныеПараметры = Неопределено Тогда
Возврат Не Отказ;
КонецЕсли;
Если ДополнительныеПараметры.Свойство("КонтрольВыполненияЗаказа") И ВыборкаПроверки.ЕстьОстаткиПоЗаказу Тогда
ТекстОшибки = НСтр("ru = 'У документа %Документ% статус ""%Статус%"" не установлен, т.к. заказ выполнен не полностью'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Документ%", ВыборкаПроверки.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Статус%", ВыборкаПроверки.ПредставлениеНовогоСтатуса);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ВыборкаПроверки.Ссылка);
Отказ = Истина;
КонецЕсли;
Если ДополнительныеПараметры.Свойство("ОтменаНеотработанныхСтрок") Тогда
ОформленоКомплектов = ОформленоКомплектов(ВыборкаПроверки.Ссылка);
Если ОформленоКомплектов = 0 Тогда
ТекстОшибки = НСтр("ru = 'У документа %Документ% статус ""%Статус%"" не установлен, т.к.'") + " ";
Если ВыборкаПроверки.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
ТекстОшибкиЗавершение = НСтр("ru = 'не предусмотрена возможность отмены неотработанных комплектов для документа, по которому не собран ни один комплект.
|Полная отмена сборки возможна путем распроведения документа.'");
Иначе
ТекстОшибкиЗавершение = НСтр("ru = 'не предусмотрена возможность отмены неотработанных комплектов для документа, по которому не разобран ни один комплект.
|Полная отмена разборки возможна путем распроведения документа.'");
КонецЕсли;
ТекстОшибки = ТекстОшибки + ТекстОшибкиЗавершение;
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Документ%", ВыборкаПроверки.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Статус%", ВыборкаПроверки.ПредставлениеНовогоСтатуса);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ВыборкаПроверки.Ссылка);
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Возврат Не Отказ;
КонецФункции
#Область Серии
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "Склад,ХозяйственнаяОперация,Дата";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
Шапка = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
Шапка.ПолноеИмяОбъекта = ПолноеИмяОбъекта();
ПараметрыСерийСклада = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.Склад, Ложь);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
Шапка.ИспользоватьСерииНоменклатуры = Ложь;
Шапка.УчитыватьСебестоимостьПоСериям = Ложь;
Шапка.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПустаяСсылка());
Иначе
Шапка.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры;
Шапка.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям;
Шапка.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаКомплектовДляРазборки);
Шапка.ИменаПолейДополнительные.Добавить("ВариантОбеспечения");
Шапка.СерииПриПланированииОтгрузкиУказываютсяВТЧСерии = Истина;
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
Шапка.ПоляСвязи.Добавить("Назначение");
КонецЕсли;
Шапка.ЭтоЗаказ = Истина;
Шапка.ПланированиеОтгрузки = Истина;
Шапка.РегистрироватьСерии = Ложь;
Шапка.ТоварВШапке = Истина;
Шапка.Дата = Объект.Дата;
ТЧ = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ТЧ.ПолноеИмяОбъекта = ПолноеИмяОбъекта();
ТЧ.ИмяТЧСерии = "Товары";
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
ТЧ.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры;
ТЧ.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям;
ТЧ.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаКомплектующихДляСборки);
Иначе
ТЧ.ИспользоватьСерииНоменклатуры = Ложь;
ТЧ.УчитыватьСебестоимостьПоСериям = Ложь;
ТЧ.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПустаяСсылка());
КонецЕсли;
ТЧ.ЭтоЗаказ = Истина;
ТЧ.ПланированиеОтгрузки = Истина;
ТЧ.РегистрироватьСерии = Ложь;
ТЧ.ТоварВШапке = Ложь;
ТЧ.Дата = Объект.Дата;
ПараметрыУказанияСерий = Новый Структура;
ПараметрыУказанияСерий.Вставить("Шапка",Шапка);
ПараметрыУказанияСерий.Вставить("ТЧ",ТЧ);
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
Если ПараметрыУказанияСерий.СкладскиеОперации.Найти(Перечисления.СкладскиеОперации.ОтгрузкаКомплектующихДляСборки) <> Неопределено Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Серия,
| Товары.Отменено,
| Товары.ВариантОбеспечения,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА Товары.Отменено
| ИЛИ ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ИЛИ НЕ Товары.ВариантОбеспечения В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| КОГДА Товары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ТОГДА 15
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| КОГДА Товары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ТОГДА 11
| ИНАЧЕ 9
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ПолитикиУчетаСерий.Склад = Склады.Ссылка
| ПО (ПолитикиУчетаСерий.Склад = &Склад)
| И ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Иначе
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Номенклатура,
| Товары.Серия,
| Товары.Отменено,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки,
| Товары.ВариантОбеспечения
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Серии.Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| СУММА(Серии.Количество) КАК Количество
|ПОМЕСТИТЬ СерииИтог
|ИЗ Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА Товары.Отменено
| ИЛИ ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ИЛИ НЕ Товары.ВариантОбеспечения В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| КОГДА Товары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ТОГДА 15
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| И ЕСТЬNULL(Серии.Количество, 0) = 0
| ТОГДА 11
| КОГДА Товары.Количество = ЕСТЬNULL(Серии.Количество, 0)
| И Товары.Количество > 0
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ СерииИтог КАК Серии
| ПО (ИСТИНА)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ПО (ПолитикиУчетаСерий.Склад = &Склад)
| И ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
Функция ПравоДоступаДобавление() Экспорт
Возврат ПравоДоступа("Добавление", Метаданные.Документы.ЗаказНаСборку);
КонецФункции
Функция СтруктураСостояниеВыполненияДокумента() Экспорт
СтруктураСостояние = Отчеты.СостояниеВыполненияДокументов.ИнициализироватьСтруктуруСостояниеВыполненияДокумента();
СтруктураСостояние.Вставить("ВыводитьТаблицыОбеспечение", 1);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтгрузка", 2);
СтруктураСостояние.Вставить("ВыводитьТаблицыПоступление", 3);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтмененоОтгрузка", 4);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтмененоПоступление", 5);
СтруктураСостояние.Вставить("ЭтоЗаказ", Истина);
СтруктураСостояние.Вставить("ТекстТоварУслугаОтгрузка", НСтр("ru = 'Товар'"));
СтруктураСостояние.Вставить("ТекстТоварУслугаПоступление", НСтр("ru = 'Товар'"));
СтруктураСостояние.Вставить("ИмяРегистраПоступлениеУслуг", "ЗаказыНаСборку");
ТаблицаНеобеспеченныеТовары = ТаблицаНеобеспеченныеТоварыДляОтчетаСостояниеВыполнения();
ТаблицаСостояниеОбеспечения = ТаблицаСостояниеОбеспеченияДляОтчетаСостояниеВыполнения();
ВТТоварыРаспоряжениеЗаказОтгружено = ВременнаяТаблицаТоварыРаспоряжениеЗаказОтгруженоДляОтчетаСостояниеВыполнения();
ВТТоварыПоступление = ВременнаяТаблицаТоварыПоступлениеДляОтчетаСостояниеВыполнения();
ВТТоварыРаспоряженияПоступлениеЗаказ = ВременнаяТаблицаТоварыРаспоряженияПоступлениеЗаказДляОтчетаСостояниеВыполнения();
ТаблицаОтмененоОтгрузка = ТаблицаОтмененоОтгрузкаДляОтчетаСостояниеВыполнения();
ТаблицаОтмененоПоступление = ТаблицаОтмененоПоступлениеДляОтчетаСостояниеВыполнения();
СтруктураДопЗапросов = Новый Структура();
СтруктураДопЗапросов.Вставить("ТекстЗапросаТаблицаНеобеспеченныеТовары", ТаблицаНеобеспеченныеТовары);
СтруктураДопЗапросов.Вставить("ТекстЗапросаТаблицаСостояниеОбеспечения", ТаблицаСостояниеОбеспечения);
СтруктураДопЗапросов.Вставить("ТекстЗапросаВТТоварыРаспоряжениеЗаказОтгружено", ВТТоварыРаспоряжениеЗаказОтгружено);
СтруктураДопЗапросов.Вставить("ТекстЗапросаВТТоварыПоступление", ВТТоварыПоступление);
СтруктураДопЗапросов.Вставить("ТекстЗапросаВТТоварыРаспоряженияПоступлениеЗаказ", ВТТоварыРаспоряженияПоступлениеЗаказ);
СтруктураДопЗапросов.Вставить("ТекстЗапросаТаблицаОтмененоОтгрузка", ТаблицаОтмененоОтгрузка);
СтруктураДопЗапросов.Вставить("ТекстЗапросаТаблицаОтмененоПоступление", ТаблицаОтмененоПоступление);
СтруктураСостояние.Вставить("СтруктураДопЗапросов", СтруктураДопЗапросов);
Возврат СтруктураСостояние;
КонецФункции
Функция МакетФормыВыбораНазначений() Экспорт
МакетФормы = Справочники.Назначения.МакетФормыВыбораНазначений();
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы);
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.Назначение", "Комплекты");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.Склад";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.Товары.Назначение", "Комплектующие");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.Склад";
Возврат МакетФормы;
КонецФункции
Функция ДоступныеОстаткиПараметрыВстраивания(ДокументОбъект) Экспорт
Если ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
Возврат ДоступныеОстаткиПараметрыВстраиванияСборка();
Иначе
Возврат ДоступныеОстаткиПараметрыВстраиванияРазборка();
КонецЕсли;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Склад)";
КонецПроцедуры
#КонецОбласти
#Область ВариантыКомплектации
Функция ПараметрыПроверкиКорректностиКомплекта(Объект) Экспорт
ПараметрыПроверки = УчетПрослеживаемыхТоваровЛокализация.ПараметрыПроверкиКорректностиКомплекта();
ЗаполнитьЗначенияСвойств(ПараметрыПроверки, Объект);
ЗаполнитьЗначенияСвойств(ПараметрыПроверки, Объект.ВариантКомплектации,
"НоменклатураОсновногоКомпонента, ХарактеристикаОсновногоКомпонента");
ПараметрыПроверки.СборкаКомплекта
= Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров;
ПараметрыПроверки.Контролировать
= Объект.ВариантКомплектации <> Справочники.ВариантыКомплектацииНоменклатуры.ПустаяСсылка();
ПараметрыПроверки.ЭтоЗаказКомплектации = Истина;
ПараметрыПроверки.ВариантПредставленияНабораВПечатныхФормахВШапке = Ложь;
Возврат ПараметрыПроверки;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область СлужебныйПрограммныйИнтерфейс
#Область Обеспечение
Процедура ТоварыДокументаДляСозданияОбеспечивающегоЗаказа(Ссылка, ПараметрыСоздания, МенеджерВременныхТаблиц) Экспорт
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Статус,Проведен,ХозяйственнаяОперация");
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(Ссылка, Реквизиты.Статус, Не Реквизиты.Проведен);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ТипыНоменклатуры", ПараметрыСоздания.ТипыНоменклатуры);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Если Реквизиты.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
Запрос.Текст =
"ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Упаковка КАК Упаковка,
| Товары.Ссылка.Склад КАК Склад,
| Товары.Ссылка.Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА Товары.Обособленно
| ТОГДА
| ВЫБОР
| КОГДА Товары.Ссылка.Назначение <> ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| И НЕ Товары.Ссылка.ОбосабливатьПоНазначениюЗаказа
| ТОГДА Товары.Ссылка.Назначение
| ИНАЧЕ Товары.Ссылка.НазначениеТовары
| КОНЕЦ
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| Товары.ВариантОбеспечения КАК ВариантОбеспечения,
| Товары.Обособленно КАК Обособленно,
| Товары.Ссылка.НачалоСборкиРазборки КАК ДатаОтгрузки,
| Товары.Количество КАК КоличествоЕдиницПоДокументу,
| Товары.КоличествоУпаковок КАК КоличествоПоДокументу
|ПОМЕСТИТЬ ТоварыДокумента
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК Товары
|ГДЕ
| Товары.Ссылка = &Ссылка
| И НЕ Товары.Отменено
| И Товары.Номенклатура.ТипНоменклатуры В(&ТипыНоменклатуры)";
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| 1 КАК НомерСтроки,
| Реквизиты.Номенклатура КАК Номенклатура,
| Реквизиты.Характеристика КАК Характеристика,
| Реквизиты.Упаковка КАК Упаковка,
| Реквизиты.Склад КАК Склад,
| Реквизиты.Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА Реквизиты.Обособленно
| ТОГДА
| ВЫБОР
| КОГДА Реквизиты.Назначение <> ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| И НЕ Реквизиты.ОбосабливатьПоНазначениюЗаказа
| ТОГДА Реквизиты.Назначение
| ИНАЧЕ Реквизиты.НазначениеТовары
| КОНЕЦ
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| Реквизиты.ВариантОбеспечения КАК ВариантОбеспечения,
| Реквизиты.Обособленно КАК Обособленно,
| Реквизиты.НачалоСборкиРазборки КАК ДатаОтгрузки,
| Реквизиты.Количество КАК КоличествоЕдиницПоДокументу,
| Реквизиты.КоличествоУпаковок КАК КоличествоПоДокументу
|ПОМЕСТИТЬ ТоварыДокумента
|ИЗ
| Документ.ЗаказНаСборку КАК Реквизиты
|ГДЕ
| Ссылка = &Ссылка
| И Реквизиты.Номенклатура.ТипНоменклатуры В(&ТипыНоменклатуры)";
КонецЕсли;
Запрос.Выполнить();
КонецПроцедуры
Функция ПараметрыВыполненияКомандУстановкиДействий(ВсеЗаказы, КодДействия) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Заказы", ВсеЗаказы);
Запрос.Текст =
"ВЫБРАТЬ
| Заказы.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказНаСборку КАК Заказы
|ГДЕ
| Заказы.Ссылка В(&Заказы)
| И Заказы.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
|;
|ВЫБРАТЬ
| Заказы.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказНаСборку КАК Заказы
|ГДЕ
| Заказы.Ссылка В(&Заказы)
| И Заказы.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)";
РезультатЗапроса = Запрос.ВыполнитьПакет();
Результаты = Новый Массив();
Результат = ОбеспечениеВДокументахСервер.СтруктураЗаказыИПараметрыВстраивания();
Результат.Заказы = РезультатЗапроса[0].Выгрузить().ВыгрузитьКолонку("Ссылка");
Результат.ПараметрыВстраивания = ДоступныеОстаткиПараметрыВстраиванияСборка();
Результаты.Добавить(Результат);
Результат = ОбеспечениеВДокументахСервер.СтруктураЗаказыИПараметрыВстраивания();
Результат.Заказы = РезультатЗапроса[1].Выгрузить().ВыгрузитьКолонку("Ссылка");
Результат.ПараметрыВстраивания = ДоступныеОстаткиПараметрыВстраиванияРазборка();
Результаты.Добавить(Результат);
Результат = ОбеспечениеВДокументахСервер.НовыеПараметрыВыполненияКомандУстановкиДействий();
Результат.ПараметрыВыполнения = Результаты;
Возврат Результат;
КонецФункции
Функция ОформленоКомплектов(Объект) Экспорт
ОтборОформлено = Новый ТаблицаЗначений();
ОтборОформлено.Колонки.Добавить("КодСтроки", Новый ОписаниеТипов("Число"));
ОтборОформлено.Колонки.Добавить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.ЗаказНаСборку"));
СтрокаОтбораКомлектов = ОтборОформлено.Добавить();
СтрокаОтбораКомлектов.Ссылка = Объект.Ссылка;
СтрокаОтбораКомлектов.КодСтроки = 1;
ТаблицаШапки = Новый ТаблицаЗначений();
ТаблицаШапки.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТаблицаШапки.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
ТаблицаШапки.Колонки.Добавить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
ТаблицаШапки.Колонки.Добавить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
ТаблицаШапки.Колонки.Добавить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
ТаблицаШапки.Колонки.Добавить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.ЗаказНаСборку"));
Корректировка = ТаблицаШапки.Скопировать();
Корректировка.Колонки.Добавить("КПоступлению", Новый ОписаниеТипов("Число"));
Корректировка.Колонки.Добавить("КОтгрузке", Новый ОписаниеТипов("Число"));
УчитыватьНазначение = ЗначениеЗаполнено(Объект.Назначение)
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Назначение, "ДвиженияПоСкладскимРегистрам") = Истина;
Если Объект.СтатусУказанияСерий = 14 Тогда
СтрокаШапки = ТаблицаШапки.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаШапки, Объект);
СтрокаШапки.Назначение = ?(УчитыватьНазначение, Объект.Назначение, Справочники.Назначения.ПустаяСсылка());
Иначе
Для Каждого Строка Из Объект.Серии Цикл
СтрокаШапки = ТаблицаШапки.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаШапки, Строка, "Номенклатура, Характеристика, Серия, Назначение");
ЗаполнитьЗначенияСвойств(СтрокаШапки, Объект, "Склад, Ссылка");
КонецЦикла;
КонецЕсли;
Отбор = Новый Структура;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
Отбор.Вставить("ТипСборки", Перечисления.ТипыДвиженияЗапасов.Отгрузка);
ОформитьКомплектовПоНакладным = РегистрыНакопления.ЗаказыНаСборку.ТаблицаОформлено(ОтборОформлено, Отбор);
ОформитьКомплектовПоОрдерам = РегистрыНакопления.ТоварыКОтгрузке.ТаблицаОформлено(ТаблицаШапки, Корректировка);
Иначе
Отбор.Вставить("ТипСборки", Перечисления.ТипыДвиженияЗапасов.Поступление);
ОформитьКомплектовПоНакладным = РегистрыНакопления.ЗаказыНаСборку.ТаблицаОформлено(ОтборОформлено, Отбор);
ОформитьКомплектовПоОрдерам = РегистрыНакопления.ТоварыКПоступлению.ТаблицаОформлено(ТаблицаШапки, Корректировка);
КонецЕсли;
ОформитьКомплектовПоНакладным.Свернуть(, "Количество");
ОформитьКомплектовПоОрдерам.Свернуть(, "Количество");
ОформленоКомплектов = Макс(ОформитьКомплектовПоНакладным.Итог("Количество"), ОформитьКомплектовПоОрдерам.Итог("Количество"));
Возврат ОформленоКомплектов;
КонецФункции
Процедура ПослеЗаполненияОбеспечения(Объект, Изменения, Режим, ПараметрыЗаполнения) Экспорт
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
Если ОбеспечениеВДокументахКлиентСервер.НужноПроверитьЗаполнитьДатуОтгрузкиДляСтрокОтгрузить(Режим) Тогда
ЗаполнитьНачалоОкончаниеСборкиПриУстановкеОтгрузитьИлиРезервировать(Объект, Изменения);
КонецЕсли;
ПараметрыУказанияСерий = ПараметрыУказанияСерий(Объект);
ОбеспечениеВДокументахСервер.ПересчитатьКоличествоЕдиниц(Изменения, Объект.Товары);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.ТЧ);
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
Если ОбеспечениеВДокументахКлиентСервер.НужноПроверитьЗаполнитьДатуОтгрузкиДляСтрокОтгрузить(Режим) Тогда
Если Не ЗначениеЗаполнено(Объект.НачалоСборкиРазборки) Тогда
ДатаПоступленияРасчетная = Макс(
НачалоДня(ТекущаяДатаСеанса()) + 86400 * Объект.ДлительностьСборкиРазборки,
Объект.ЖелаемаяДатаПоступления);
Если Объект.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Отгрузить
Или Объект.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.СоСклада Тогда
Объект.НачалоСборкиРазборки = ДатаПоступленияРасчетная - 86400 * Объект.ДлительностьСборкиРазборки;
Объект.ОкончаниеСборкиРазборки = ДатаПоступленияРасчетная;
КонецЕсли;
Иначе
Если Объект.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Отгрузить Тогда
Объект.ОкончаниеСборкиРазборки = Объект.НачалоСборкиРазборки + 86400 * Объект.ДлительностьСборкиРазборки;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПараметрыУказанияСерий = ПараметрыУказанияСерий(Объект);
КоэффициентУпаковки = Справочники.УпаковкиЕдиницыИзмерения.КоэффициентУпаковки(Объект.Упаковка, Объект.Номенклатура);
Если Не ЗначениеЗаполнено(КоэффициентУпаковки) Тогда
КоэффициентУпаковки = 1;
КонецЕсли;
Объект.Количество = Объект.КоличествоУпаковок * КоэффициентУпаковки;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Шапка);
КонецЕсли;
КонецПроцедуры
Процедура ЗаполнитьНачалоОкончаниеСборкиПриУстановкеОтгрузитьИлиРезервировать(Объект, Изменения) Экспорт
Если Не ЗначениеЗаполнено(Объект.НачалоСборкиРазборки) Тогда
ДатаПоступленияРасчетная = Макс(
НачалоДня(ТекущаяДатаСеанса()) + 86400 * Объект.ДлительностьСборкиРазборки,
Объект.ЖелаемаяДатаПоступления);
Для Каждого Строка Из Изменения Цикл
Если Строка.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Отгрузить
Или Строка.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.СоСклада Тогда
Объект.НачалоСборкиРазборки = ДатаПоступленияРасчетная - 86400 * Объект.ДлительностьСборкиРазборки;
Объект.ОкончаниеСборкиРазборки = ДатаПоступленияРасчетная;
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого Строка Из Изменения Цикл
Если Строка.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Отгрузить Тогда
Объект.ОкончаниеСборкиРазборки = Объект.НачалоСборкиРазборки + 86400 * Объект.ДлительностьСборкиРазборки;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область НаправленияДеятельности
Функция ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности(Форма) Экспорт
ПорядокОбработкиДокумента = НаправленияДеятельностиСервер.ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности();
ПорядокОбработкиДокумента.ЗаполнятьНазначениеВШапке = Истина;
ПорядокОбработкиДокумента.ИменаТабличныхЧастейДляОчисткиНекорректныхНазначений = "Товары";
ТаблицаУсловий = НаправленияДеятельностиСервер.УсловияОбработкиНазначенийВСтроках("ТипНоменклатуры");
ПорядокОбработкиДокумента.УсловияОбработкиСтрок.Вставить("Товары", ТаблицаУсловий);
Возврат ПорядокОбработкиДокумента;
КонецФункции
#КонецОбласти
#КонецОбласти
Функция НазначениеЗаказа(Заказ) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ВЫБОР КОГДА Заказы.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров) ТОГДА
| ВЫБОР КОГДА Заказы.Назначение = ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИЛИ Заказы.ОбосабливатьПоНазначениюЗаказа ТОГДА
| Заказы.НазначениеТовары
| ИНАЧЕ
| Заказы.Назначение
| КОНЕЦ
| ИНАЧЕ
| Заказы.Назначение
| КОНЕЦ КАК Назначение
|ИЗ
| Документ.ЗаказНаСборку КАК Заказы
|ГДЕ
| Заказы.Ссылка = &Заказ";
Запрос.УстановитьПараметр("Заказ", Заказ);
Выборка = Запрос.Выполнить().Выбрать();
Результат = Неопределено;
Если Выборка.Следующий() Тогда
Результат = Выборка.Назначение;
КонецЕсли;
Возврат Результат;
КонецФункции
#Область Проведение
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеШапки.Статус КАК Статус,
| ДанныеШапки.Дата КАК Период,
| ДанныеШапки.Склад КАК Склад,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ВЫБОР
| КОГДА ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СборкаКомплектующих,
| ДанныеШапки.НачалоСборкиРазборки КАК НачалоСборкиРазборки,
| ДанныеШапки.ОкончаниеСборкиРазборки КАК ОкончаниеСборкиРазборки,
| ДанныеШапки.Назначение КАК НазначениеШапка,
| ДанныеШапки.НазначениеТовары КАК НазначениеТовары,
| ДанныеШапки.Организация КАК Организация,
| ДанныеШапки.Подразделение КАК Подразделение,
| ДанныеШапки.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеШапки.Приоритет КАК Приоритет,
| ДанныеШапки.Номер КАК Номер,
| ДанныеШапки.Ответственный КАК Ответственный,
| ДанныеШапки.Автор КАК Автор,
| ДанныеШапки.Комментарий КАК Комментарий,
| ДанныеШапки.Проведен КАК Проведен,
| ДанныеШапки.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеШапки.ОбосабливатьПоНазначениюЗаказа КАК ОбосабливатьПоНазначениюЗаказа,
| ЕСТЬNULL(ДанныеШапки.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ) КАК ДвиженияПоСкладскимРегистрамШапка,
| ЕСТЬNULL(ДанныеШапки.НазначениеТовары.ДвиженияПоСкладскимРегистрам, ЛОЖЬ) КАК ДвиженияПоСкладскимРегистрамНазначениеТовары,
| ВЫБОР
| КОГДА ДанныеШапки.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И ДанныеШапки.НачалоСборкиРазборки >= ДанныеШапки.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке,
| ВЫБОР
| КОГДА ДанныеШапки.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ДанныеШапки.Дата >= ДанныеШапки.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПоступлении,
| ДанныеШапки.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ИСТИНА В (
| ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| Документ.ЗаказНаСборку.Товары КАК Комплектующие
| ГДЕ
| Комплектующие.Ссылка = ДанныеШапки.Ссылка
| И НЕ Комплектующие.Отменено
| И Комплектующие.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)) КАК КомплектующиеКОтгрузке
|ИЗ
| Документ.ЗаказНаСборку КАК ДанныеШапки
|ГДЕ
| ДанныеШапки.Ссылка = &Ссылка";
Результат = Запрос.Выполнить();
Реквизиты = Результат.Выбрать();
Реквизиты.Следующий();
Для Каждого Колонка Из Результат.Колонки Цикл
Запрос.УстановитьПараметр(Колонка.Имя, Реквизиты[Колонка.Имя]);
КонецЦикла;
НакладнаяЯвляетсяРаспоряжением = ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(Реквизиты.ВариантПриемкиТоваров);
Запрос.УстановитьПараметр("НакладнаяЯвляетсяРаспоряжением", НакладнаяЯвляетсяРаспоряжением);
Запрос.УстановитьПараметр("НомерНаПечать", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер));
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ТипЗнч(ДокументСсылка)));
КонецПроцедуры
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ТаблицаТовары.Ссылка КАК Заказ,
| ТаблицаТовары.Дата КАК Дата,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ТаблицаТовары.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Склад КАК Отправитель,
| ТаблицаТовары.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| 0 КАК СтатусУказанияСерий,
| ЛОЖЬ КАК СверхЗаказа,
| НЕОПРЕДЕЛЕНО КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ЛОЖЬ КАК ПоступлениеПоЗаказам,
| ЛОЖЬ КАК ЭтоНакладная
|ИЗ
| Документ.ЗаказНаСборку КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В (&Ссылка)
| И ТаблицаТовары.Количество > 0
| И ТаблицаТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТаблицаТовары.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))";
СкладыСервер.ЗапланироватьПоступлениеТоваров(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента,
"ТаблицаТовары");
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ТаблицаТовары.Ссылка КАК Заказ,
| ТаблицаТовары.Ссылка.Дата КАК Дата,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ТаблицаТовары.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ТаблицаТовары.Ссылка.Склад КАК Склад,
| ТаблицаТовары.Ссылка.Склад КАК Отправитель,
| ТаблицаТовары.Ссылка.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| 0 КАК СтатусУказанияСерий,
| ЛОЖЬ КАК СверхЗаказа,
| НЕОПРЕДЕЛЕНО КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ЛОЖЬ КАК ПоступлениеПоЗаказам,
| ЛОЖЬ КАК ЭтоНакладная
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&Ссылка)
| И НЕ ТаблицаТовары.Отменено
| И ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ТаблицаТовары.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))";
СкладыСервер.ЗапланироватьПоступлениеТоваров(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента,
"ТаблицаТовары");
КонецПроцедуры
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Ссылка.Склад КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Обособленно ТОГДА
|
| ВЫБОР КОГДА ТабЧасть.Ссылка.Назначение = ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИЛИ ТабЧасть.Ссылка.ОбосабливатьПоНазначениюЗаказа ТОГДА
| ТабЧасть.Ссылка.НазначениеТовары
| ИНАЧЕ
| ТабЧасть.Ссылка.Назначение
| КОНЕЦ
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.Ссылка КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И НЕ ТабЧасть.Отменено
| И ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
| И ТабЧасть.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Обособленно ТОГДА
|
| ТабЧасть.Назначение
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.Ссылка КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| Документ.ЗаказНаСборку КАК ТабЧасть
|ГДЕ
| ТабЧасть.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ТабЧасть.Количество > 0
| И ТабЧасть.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
| И ТабЧасть.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Ссылка.Склад КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Обособленно ТОГДА
|
| ВЫБОР КОГДА ТабЧасть.Ссылка.Назначение = ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИЛИ ТабЧасть.Ссылка.ОбосабливатьПоНазначениюЗаказа ТОГДА
| ТабЧасть.Ссылка.НазначениеТовары
| ИНАЧЕ
| ТабЧасть.Ссылка.Назначение
| КОНЕЦ
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.ВариантОбеспечения КАК ВариантОбеспечения,
| ТабЧасть.Ссылка КАК Заказ,
| ТабЧасть.Ссылка.НачалоСборкиРазборки КАК ЖелаемаяДатаОтгрузки,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И НЕ ТабЧасть.Отменено
| И ТабЧасть.ВариантОбеспечения <> ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)";
РаспределениеЗапасовДвижения.ЗапланироватьРасходЗапаса(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаТабЧасть,
Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Обособленно ТОГДА
|
| ТабЧасть.Назначение
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.ВариантОбеспечения КАК ВариантОбеспечения,
| ТабЧасть.Ссылка КАК Заказ,
| ТабЧасть.НачалоСборкиРазборки КАК ЖелаемаяДатаОтгрузки,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказНаСборку КАК ТабЧасть
|ГДЕ
| ТабЧасть.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ТабЧасть.Количество > 0
| И ТабЧасть.ВариантОбеспечения <> ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)";
РаспределениеЗапасовДвижения.ЗапланироватьРасходЗапаса(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаТабЧасть,
Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.Ссылка КАК Заказ,
| ТабЧасть.ОкончаниеСборкиРазборки КАК ДатаПоступления,
| ИСТИНА КАК ДоступенДляРасхода,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказНаСборку КАК ТабЧасть
|ГДЕ
| ТабЧасть.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТабЧасть.Количество > 0";
РаспределениеЗапасовДвижения.ЗапланироватьПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Ссылка.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.Ссылка КАК Заказ,
| ТабЧасть.Ссылка.ОкончаниеСборкиРазборки КАК ДатаПоступления,
| ИСТИНА КАК ДоступенДляРасхода,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И НЕ ТабЧасть.Отменено";
РаспределениеЗапасовДвижения.ЗапланироватьПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Ложь);
КонецПроцедуры
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка) КАК Партнер,
| ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) КАК Контрагент,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Склад КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Ответственный КАК Ответственный,
| &Автор КАК Автор,
| &Комментарий КАК Комментарий,
| ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК Валюта,
| 0 КАК Сумма,
| &Статус КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| """" КАК Дополнительно,
| &Период КАК ДатаПервичногоДокумента,
| &НомерНаПечать КАК НомерПервичногоДокумента,
| ЛОЖЬ КАК СторноИсправление,
| НЕОПРЕДЕЛЕНО КАК СторнируемыйДокумент,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| &Период КАК ДатаОтраженияВУчете,
| &Приоритет КАК Приоритет";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ВЫБОР КОГДА ДанныеШапки.НачалоСборкиРазборки <> ДАТАВРЕМЯ(1, 1, 1) ТОГДА
| ДанныеШапки.НачалоСборкиРазборки
| ИНАЧЕ
| ДанныеШапки.Дата
| КОНЕЦ КАК Период,
| ТоварыДокумента.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеШапки.Склад КАК Получатель,
| ДанныеШапки.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТоварыДокумента.Обособленно
| ТОГДА ВЫБОР
| КОГДА ДанныеШапки.Назначение = &НазначениеПоУмолчанию
| ИЛИ ДанныеШапки.ОбосабливатьПоНазначениюЗаказа
| ТОГДА ДанныеШапки.НазначениеТовары
| ИНАЧЕ ДанныеШапки.Назначение
| КОНЕЦ
| ИНАЧЕ &НазначениеПоУмолчанию
| КОНЕЦ КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ТоварыДокумента.Отменено КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ИСТИНА КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И (ДанныеШапки.Статус В(ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
| И ТоварыДокумента.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада))
| И ТоварыДокумента.Количество <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ТоварыДокумента.НачалоСборкиРазборки КАК Период,
| ТоварыДокумента.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ТоварыДокумента.Склад КАК Получатель,
| ТоварыДокумента.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТоварыДокумента.Обособленно
| ТОГДА ТоварыДокумента.Назначение
| ИНАЧЕ &НазначениеПоУмолчанию
| КОНЕЦ КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ИСТИНА КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ЗаказНаСборку КАК ТоварыДокумента
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТоварыДокумента.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| И ТоварыДокумента.Количество <> 0
| И ТоварыДокумента.СтатусУказанияСерий <> 10
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.НачалоСборкиРазборки КАК Период,
| ТоварыДокумента.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеШапки.Склад КАК Получатель,
| ДанныеШапки.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ДанныеШапки.Обособленно
| ТОГДА ДанныеШапки.Назначение
| ИНАЧЕ &НазначениеПоУмолчанию
| КОНЕЦ КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ДанныеШапки.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ИСТИНА КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ЗаказНаСборку.Серии КАК ТоварыДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
| И ТоварыДокумента.Номенклатура = ДанныеШапки.Номенклатура
| И ТоварыДокумента.Характеристика = ДанныеШапки.Характеристика
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ДанныеШапки.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ДанныеШапки.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| И ТоварыДокумента.Количество <> 0
| И ДанныеШапки.СтатусУказанияСерий = 10";
ТекстЗапросаДанныхДокумента = СтрЗаменить(ТекстЗапросаДанныхДокумента,
"&НазначениеПоУмолчанию",
"ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)");
СкладыСервер.ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.НачалоСборкиРазборки КАК Период,
| ТоварыДокумента.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеШапки.Склад КАК Получатель,
| ДанныеШапки.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТоварыДокумента.Обособленно
| ТОГДА ВЫБОР
| КОГДА ДанныеШапки.Назначение = &НазначениеПоУмолчанию
| ИЛИ ДанныеШапки.ОбосабливатьПоНазначениюЗаказа
| ТОГДА ДанныеШапки.НазначениеТовары
| ИНАЧЕ ДанныеШапки.Назначение
| КОНЕЦ
| ИНАЧЕ &НазначениеПоУмолчанию
| КОНЕЦ КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ТоварыДокумента.Отменено КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ИСТИНА КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ДанныеШапки.Статус В(ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
| И ТоварыДокумента.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ТоварыДокумента.Количество <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ТоварыДокумента.НачалоСборкиРазборки КАК Период,
| ТоварыДокумента.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ТоварыДокумента.Склад КАК Получатель,
| ТоварыДокумента.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТоварыДокумента.Обособленно
| ТОГДА ТоварыДокумента.Назначение
| ИНАЧЕ &НазначениеПоУмолчанию
| КОНЕЦ КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ИСТИНА КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ЗаказНаСборку КАК ТоварыДокумента
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТоварыДокумента.Статус В(ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
| И ТоварыДокумента.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ТоварыДокумента.Количество <> 0
| И ТоварыДокумента.СтатусУказанияСерий <> 10
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.НачалоСборкиРазборки КАК Период,
| ТоварыДокумента.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеШапки.Склад КАК Получатель,
| ДанныеШапки.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ДанныеШапки.Обособленно
| ТОГДА ДанныеШапки.Назначение
| ИНАЧЕ &НазначениеПоУмолчанию
| КОНЕЦ КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ДанныеШапки.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ИСТИНА КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ЗаказНаСборку.Серии КАК ТоварыДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
| И ТоварыДокумента.Номенклатура = ДанныеШапки.Номенклатура
| И ТоварыДокумента.Характеристика = ДанныеШапки.Характеристика
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ДанныеШапки.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ДанныеШапки.Статус В(ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
| И ДанныеШапки.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ТоварыДокумента.Количество <> 0
| И ДанныеШапки.СтатусУказанияСерий = 10";
ТекстЗапросаДанныхДокумента = СтрЗаменить(ТекстЗапросаДанныхДокумента,
"&НазначениеПоУмолчанию",
"ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)");
СкладыСервер.ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Функция ТекстЗапросаТаблицаЗаказыНаСборку(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ЗаказыНаСборку";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| 1 КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Поступление) КАК ТипСборки,
| 0 КАК КОформлению,
| ТаблицаТовары.Количество
| + ТаблицаТовары.КоличествоОтменено КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.СтатусУказанияСерий <> 10
| И ТаблицаТовары.Количество + ТаблицаТовары.КоличествоОтменено > 0
| И &СборкаКомплектующих
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| 1 КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Поступление) КАК ТипСборки,
| 0 КАК КОформлению,
| -ТаблицаТовары.КоличествоОтменено КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.СтатусУказанияСерий <> 10
| И ТаблицаТовары.КоличествоОтменено > 0
| И &СборкаКомплектующих
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &НачалоСборкиРазборки КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| 1 КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Поступление) КАК ТипСборки,
| ТаблицаТовары.Количество КАК КОформлению,
| 0 КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &КомплектующиеКОтгрузке
| И &Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
| И ТаблицаТовары.СтатусУказанияСерий <> 10
| И ТаблицаТовары.Количество > 0
| И &СборкаКомплектующих
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка) КАК ТипСборки,
| 0 КАК КОформлению,
| ТаблицаТовары.Количество КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &СборкаКомплектующих
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка) КАК ТипСборки,
| 0 КАК КОформлению,
| -ТаблицаТовары.Количество КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Отменено
| И &СборкаКомплектующих
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &НачалоСборкиРазборки КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка) КАК ТипСборки,
| ТаблицаТовары.Количество КАК КОформлению,
| 0 КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И НЕ ТаблицаТовары.Отменено
| И ТаблицаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И &Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
| И &СборкаКомплектующих
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| 1 КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка) КАК ТипСборки,
| 0 КАК КОформлению,
| ТаблицаТовары.Количество
| + ТаблицаТовары.КоличествоОтменено КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.СтатусУказанияСерий <> 10
| И ТаблицаТовары.Количество + ТаблицаТовары.КоличествоОтменено > 0
| И НЕ &СборкаКомплектующих
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| 1 КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка) КАК ТипСборки,
| 0 КАК КОформлению,
| -ТаблицаТовары.КоличествоОтменено КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.СтатусУказанияСерий <> 10
| И ТаблицаТовары.КоличествоОтменено > 0
| И НЕ &СборкаКомплектующих
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &НачалоСборкиРазборки КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| 1 КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка) КАК ТипСборки,
| ТаблицаТовары.Количество КАК КОформлению,
| 0 КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
| И ТаблицаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ТаблицаТовары.СтатусУказанияСерий <> 10
| И ТаблицаТовары.Количество > 0
| И НЕ &СборкаКомплектующих
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Поступление) КАК ТипСборки,
| 0 КАК КОформлению,
| ТаблицаТовары.Количество КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И НЕ &СборкаКомплектующих
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Поступление) КАК ТипСборки,
| 0 КАК КОформлению,
| -ТаблицаТовары.Количество КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Отменено
| И НЕ &СборкаКомплектующих
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &НачалоСборкиРазборки КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Поступление) КАК ТипСборки,
| ТаблицаТовары.Количество КАК КОформлению,
| 0 КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И НЕ ТаблицаТовары.Отменено
| И ТаблицаТовары.Ссылка.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И &Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
| И НЕ &СборкаКомплектующих
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| 1 КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка)
| КАК ТипСборки,
| 0 КАК КОформлению,
| ТаблицаТовары.Количество КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку.Серии КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Ссылка.СтатусУказанияСерий = 10
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &НачалоСборкиРазборки КАК Период,
| ТаблицаТовары.Ссылка КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| 1 КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка)
| КАК ТипСборки,
| ТаблицаТовары.Количество КАК КОформлению,
| 0 КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку.Серии КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
| И ТаблицаТовары.Ссылка.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ТаблицаТовары.Ссылка.СтатусУказанияСерий = 10";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
ЗаказНаСборкуЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
#КонецОбласти
#Область ОбновлениеИнформационнойБазы
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос();
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = ПолноеИмяОбъекта();
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ЗначенияПараметров = Новый Структура();
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", """""");
ПереопределениеРасчетаПараметров.Вставить("СборкаКомплектующих",
"ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)");
ПереопределениеРасчетаПараметров.Вставить("ДвиженияПоСкладскимРегистрамШапка",
"ЕСТЬNULL(ТаблицаТовары.Ссылка.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)");
ПереопределениеРасчетаПараметров.Вставить("ДвиженияПоСкладскимРегистрамНазначениеТовары",
"ЕСТЬNULL(ТаблицаТовары.Ссылка.НазначениеТовары.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)");
ПереопределениеРасчетаПараметров.Вставить("НазначениеШапка",
"ТаблицаТовары.Ссылка.Назначение");
ПереопределениеРасчетаПараметров.Вставить("НазначениеТовары",
"ТаблицаТовары.Ссылка.НазначениеТовары");
ПереопределениеРасчетаПараметров.Вставить("ОрдернаяСхемаПриПоступлении",
"ВЫБОР КОГДА ТаблицаТовары.Ссылка.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТаблицаТовары.Ссылка.Дата >= ТаблицаТовары.Ссылка.Склад.ДатаНачалаОрдернойСхемыПриПоступлении ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ");
ПереопределениеРасчетаПараметров.Вставить("НакладнаяЯвляетсяРаспоряжением",
"ТаблицаТовары.Ссылка.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)");
ПереопределениеРасчетаПараметров.Вставить("КомплектующиеКОтгрузке",
"ИСТИНА В (
| ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| Документ.ЗаказНаСборку.Товары КАК Комплектующие
| ГДЕ
| Комплектующие.Ссылка = ТаблицаТовары.Ссылка
| И НЕ Комплектующие.Отменено
| И Комплектующие.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))");
Если ИмяРегистра = "ЗаказыНаСборку" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаЗаказыНаСборку(Запрос, ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "ТаблицаТовары";
ИначеЕсли ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
ВЗапросеЕстьИсточник = Ложь;
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
#КонецОбласти
#Область Прочее
Функция ДоступныеОстаткиПараметрыВстраиванияСборка()
ПараметрыВстраивания = ОбеспечениеВДокументахСервер.ДоступныеОстаткиПараметрыВстраивания();
ПараметрыВстраивания.ОчищаемыеРеквизиты = "КодСтроки";
ПараметрыВстраивания.ИмяТаблицыФормы = "Товары";
ЭлементыФормы = ПараметрыВстраивания.УсловноеОформление.ЭлементыФормы;
ЭлементыФормы.ВариантОбеспечения = "ТоварыВариантОбеспечения";
ЭлементыФормы.Доступно = "ТоварыДоступно";
ЭлементыФормы.Серия = "ТоварыСерия";
ЭлементыФормы.Обособленно = "ТоварыОбособленно";
ПутиКДанным = ПараметрыВстраивания.УсловноеОформление.ПутиКДанным;
ПутиКДанным.ПерераспределятьЗапасы = "Объект.Товары.ПерераспределятьЗапасы";
ПутиКДанным.ЗапретРедактирования = "Объект.Товары.Отменено";
ПутиКДанным.ТипНоменклатуры = "Объект.Товары.ТипНоменклатуры";
Связи = ПараметрыВстраивания.СвязиПараметровВыбораВариантаОбеспечения;
Связи.Доступно = "Элементы.Товары.ТекущиеДанные.Доступно";
Связи.КоличествоУпаковок = "Элементы.Товары.ТекущиеДанные.КоличествоУпаковок";
Связи.Количество = "Элементы.Товары.ТекущиеДанные.Количество";
Связи.ОтгружатьЕслиДоступно = "Элементы.Товары.ТекущиеДанные.ОтгружатьЕслиДоступно";
Связи.Обособленно = "Элементы.Товары.ТекущиеДанные.Обособленно";
Связи.ТипНоменклатуры = "Элементы.Товары.ТекущиеДанные.ТипНоменклатуры";
Связи.Упаковка = "Элементы.Товары.ТекущиеДанные.Упаковка";
Связи.Номенклатура = "Элементы.Товары.ТекущиеДанные.Номенклатура";
Связи.ВариантОбеспечения = "Элементы.Товары.ТекущиеДанные.ВариантОбеспечения";
Связи.Склад = "Объект.Склад";
Связи.НесколькоСкладов = Неопределено;
ПараметрыВстраивания.ИмяРегистраОформленияОтгрузки = "ЗаказыНаСборку";
ПараметрыВстраивания.ИмяОбъекта = "Документ.ЗаказНаСборку";
ПараметрыВстраивания.ИмяТаблицы = "Документ.ЗаказНаСборку.Товары";
ПараметрыВстраивания.ОписаниеПолученияДанныхДокумента =
"ВЫБРАТЬ
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| Реквизиты.Подразделение КАК Подразделение,
| Реквизиты.Склад КАК Склад,
| ВЫБОР КОГДА Реквизиты.Назначение = ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИЛИ Реквизиты.ОбосабливатьПоНазначениюЗаказа ТОГДА
| Реквизиты.НазначениеТовары
| ИНАЧЕ
| Реквизиты.Назначение
| КОНЕЦ КАК Назначение,
| Реквизиты.Ссылка КАК ЗаказНаОтгрузку,
| ТабЧасть.ВариантОбеспечения КАК ВариантОбеспечения,
| ТабЧасть.Обособленно КАК Обособленно,
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.КоличествоУпаковок КАК КоличествоУпаковок,
| ТабЧасть.Упаковка КАК Упаковка,
| ИСТИНА КАК ГотовКОбеспечению,
| Реквизиты.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт)
| ) КАК ГотовКОтгрузке,
| Реквизиты.НачалоСборкиРазборки КАК ЖелаемаяДатаОтгрузки,
| ТабЧасть.Серия КАК Серия,
| ТабЧасть.КодСтроки КАК КодСтроки,
|
| ТабЧасть.Отменено КАК Отменено,
|
| ТабЧасть.НомерСтроки КАК НомерСтроки,
| Реквизиты.Ссылка КАК Регистратор,
| Реквизиты.Дата КАК ДатаДокумента,
| Реквизиты.Склад КАК ГруппаСкладов,
| Реквизиты.Приоритет КАК Приоритет,
| Реквизиты.НачалоСборкиРазборки КАК ДатаОтгрузкиВсехСтрокОднойДатой
|ПОМЕСТИТЬ ВременнаяТаблицаДанныхДокумента
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТабЧасть
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку КАК Реквизиты
| ПО ИСТИНА";
Товары = Новый Структура();
Товары.Вставить("НомерСтроки", Новый ОписаниеТипов("Число"));
Товары.Вставить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Товары.Вставить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
Товары.Вставить("ВариантОбеспечения", Новый ОписаниеТипов("ПеречислениеСсылка.ВариантыОбеспечения"));
Товары.Вставить("Обособленно", Новый ОписаниеТипов("Булево"));
Товары.Вставить("Количество", Новый ОписаниеТипов("Число"));
Товары.Вставить("КоличествоУпаковок", Новый ОписаниеТипов("Число"));
Товары.Вставить("Упаковка", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
Товары.Вставить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
Товары.Вставить("Отменено", Новый ОписаниеТипов("Булево"));
Товары.Вставить("КодСтроки", Новый ОписаниеТипов("Число"));
Объект = Новый Структура();
Объект.Вставить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
Объект.Вставить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
Объект.Вставить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
Объект.Вставить("НазначениеТовары", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
Объект.Вставить("ОбосабливатьПоНазначениюЗаказа", Новый ОписаниеТипов("Булево"));
Объект.Вставить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.ЗаказНаСборку"));
Объект.Вставить("Статус", Новый ОписаниеТипов("ПеречислениеСсылка.СтатусыВнутреннихЗаказов"));
Объект.Вставить("НачалоСборкиРазборки", Новый ОписаниеТипов("Дата"));
Объект.Вставить("Дата", Новый ОписаниеТипов("Дата"));
Объект.Вставить("Приоритет", Новый ОписаниеТипов("СправочникСсылка.Приоритеты"));
Объект.Вставить("Товары", Товары);
ПараметрыВстраивания.ШаблонСериализацииДанныхФормы.Вставить("Объект", Объект);
ПараметрыВстраивания.ВыражениеДляВопросаПриВыполненииДействияВСпискеЗаказов ="НЕОПРЕДЕЛЕНО";
Возврат ПараметрыВстраивания;
КонецФункции
Функция ДоступныеОстаткиПараметрыВстраиванияРазборка()
ПараметрыВстраивания = ОбеспечениеВДокументахСервер.ДоступныеОстаткиПараметрыВстраивания();
ПараметрыВстраивания.ОчищаемыеРеквизиты = "КодСтроки";
ПараметрыВстраивания.ИмяТаблицыФормы = Неопределено;
ЭлементыФормы = ПараметрыВстраивания.УсловноеОформление.ЭлементыФормы;
ЭлементыФормы.ВариантОбеспечения = "ВариантОбеспечения";
ЭлементыФормы.Доступно = "Доступно";
ПутиКДанным = ПараметрыВстраивания.УсловноеОформление.ПутиКДанным;
ПутиКДанным.ПерераспределятьЗапасы = "ПерераспределятьЗапасы";
ПутиКДанным.ТипНоменклатуры = "ТипНоменклатуры";
Связи = ПараметрыВстраивания.СвязиПараметровВыбораВариантаОбеспечения;
Связи.Доступно = "Доступно";
Связи.КоличествоУпаковок = "Объект.КоличествоУпаковок";
Связи.Количество = "Объект.Количество";
Связи.ОтгружатьЕслиДоступно = "ОтгружатьЕслиДоступно";
Связи.Обособленно = "Объект.Обособленно";
Связи.ТипНоменклатуры = "ТипНоменклатуры";
Связи.Упаковка = "Объект.Упаковка";
Связи.Номенклатура = "Объект.Номенклатура";
Связи.ВариантОбеспечения = "Объект.ВариантОбеспечения";
Связи.Склад = "Объект.Склад";
Связи.НесколькоСкладов = Неопределено;
Связи.ИспользоватьЧастичнуюОтгрузку = Ложь;
ПараметрыВстраивания.ИмяРегистраОформленияОтгрузки = "ЗаказыНаСборку";
ПараметрыВстраивания.ИмяОбъекта = "Документ.ЗаказНаСборку";
ПараметрыВстраивания.ИмяТаблицы = Неопределено;
ПараметрыВстраивания.ОписаниеПолученияДанныхДокумента =
"ВЫБРАТЬ
| Реквизиты.Номенклатура КАК Номенклатура,
| Реквизиты.Характеристика КАК Характеристика,
| Реквизиты.Подразделение КАК Подразделение,
| Реквизиты.Склад КАК Склад,
| Реквизиты.Назначение КАК Назначение,
| Реквизиты.Ссылка КАК ЗаказНаОтгрузку,
| Реквизиты.ВариантОбеспечения КАК ВариантОбеспечения,
| Реквизиты.Обособленно КАК Обособленно,
| Реквизиты.Количество КАК Количество,
| Реквизиты.КоличествоУпаковок КАК КоличествоУпаковок,
| Реквизиты.Упаковка КАК Упаковка,
| ИСТИНА КАК ГотовКОбеспечению,
| Реквизиты.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт)
| ) КАК ГотовКОтгрузке,
| Реквизиты.НачалоСборкиРазборки КАК ЖелаемаяДатаОтгрузки,
| Реквизиты.Серия КАК Серия,
| 1 КАК КодСтроки,
| ЛОЖЬ КАК Отменено,
| 1 КАК НомерСтроки,
| Реквизиты.Ссылка КАК Регистратор,
| Реквизиты.Дата КАК ДатаДокумента,
| Реквизиты.Склад КАК ГруппаСкладов,
| Реквизиты.Приоритет КАК Приоритет,
| Реквизиты.НачалоСборкиРазборки КАК ДатаОтгрузкиВсехСтрокОднойДатой
|ПОМЕСТИТЬ ВременнаяТаблицаДанныхДокумента
|ИЗ
| Документ.ЗаказНаСборку КАК Реквизиты";
Объект = Новый Структура();
Объект.Вставить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
Объект.Вставить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
Объект.Вставить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
Объект.Вставить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.ЗаказНаСборку"));
Объект.Вставить("Статус", Новый ОписаниеТипов("ПеречислениеСсылка.СтатусыВнутреннихЗаказов"));
Объект.Вставить("НачалоСборкиРазборки", Новый ОписаниеТипов("Дата"));
Объект.Вставить("ХозяйственнаяОперация", Новый ОписаниеТипов("ПеречислениеСсылка.ХозяйственныеОперации"));
Объект.Вставить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Объект.Вставить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
Объект.Вставить("ВариантОбеспечения", Новый ОписаниеТипов("ПеречислениеСсылка.ВариантыОбеспечения"));
Объект.Вставить("Обособленно", Новый ОписаниеТипов("Булево"));
Объект.Вставить("Количество", Новый ОписаниеТипов("Число"));
Объект.Вставить("КоличествоУпаковок", Новый ОписаниеТипов("Число"));
Объект.Вставить("Упаковка", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
Объект.Вставить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
Объект.Вставить("Дата", Новый ОписаниеТипов("Дата"));
Объект.Вставить("Приоритет", Новый ОписаниеТипов("СправочникСсылка.Приоритеты"));
ПараметрыВстраивания.ШаблонСериализацииДанныхФормы.Вставить("Объект", Объект);
ПараметрыВстраивания.ВыражениеДляВопросаПриВыполненииДействияВСпискеЗаказов ="НЕОПРЕДЕЛЕНО";
Возврат ПараметрыВстраивания;
КонецФункции
Функция СерииУказываютсяВОтдельнойТабличнойЧасти(Объект) Экспорт
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
Возврат Истина;
КонецЕсли;
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Номенклатура", Объект.Номенклатура);
Запрос.УстановитьПараметр("Склад", Объект.Склад);
Запрос.Текст =
"ВЫБРАТЬ
| 1
|ИЗ
| Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
|ГДЕ
| ПолитикиУчетаСерий.Склад = &Склад
| И ВЫРАЗИТЬ(&Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| И НЕ ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| И ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки";
Возврат Не Запрос.Выполнить().Пустой();
КонецФункции
Функция ПолноеИмяОбъекта()
Возврат "Документ.ЗаказНаСборку";
КонецФункции
Функция ЕстьСборкаПоЗаказу(ЗаказНаСборку) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос(
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1 КАК ЕстьЗаписи
|ИЗ
| РегистрНакопления.ЗаказыНаСборку КАК Таблица
|ГДЕ
| Таблица.ЗаказНаСборку = &ЗаказНаСборку
| И Таблица.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
| И Таблица.КОформлению <> 0
|");
Запрос.УстановитьПараметр("ЗаказНаСборку", ЗаказНаСборку);
Возврат Не Запрос.Выполнить().Пустой();
КонецФункции
Функция ПолучитьНакладныеПоЗаказу(ЗаказНаСборку) Экспорт
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Таблица.Регистратор КАК Ссылка
|ИЗ
| РегистрНакопления.ЗаказыНаСборку КАК Таблица
|ГДЕ
| Таблица.ЗаказНаСборку = &ЗаказНаСборку
| И Таблица.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
| И Таблица.КОформлению <> 0
| И Таблица.Регистратор ССЫЛКА Документ.СборкаТоваров");
Запрос.УстановитьПараметр("ЗаказНаСборку", ЗаказНаСборку);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат.ВыгрузитьКолонку("Ссылка");
КонецФункции
Функция ТекстЗапросаТоварыДокумента(Ресурс) Экспорт
Если Ресурс = "Комплект" Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Ссылка КАК ЗаказНаСборку,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| ВЫБОР КОГДА Таблица.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров) ТОГДА
| Таблица.Назначение
| КОГДА Таблица.Обособленно ТОГДА
| Таблица.Назначение
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| 1 КАК КодСтроки,
| ДанныеУчета.Серия КАК Серия,
| СУММА(Таблица.Количество) КАК Количество,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Сделка КАК Сделка,
| Таблица.Склад КАК Склад,
| Таблица.НачалоСборкиРазборки КАК ДатаОтгрузки,
| СУММА(ЕСТЬNULL(ДанныеУчета.КОформлению, 0)) КАК КОформлению,
| СУММА(ЕСТЬNULL(ДанныеУчета.Заказано, 0)) КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО Таблица.Ссылка = ДанныеУчета.ЗаказНаСборку
| И Таблица.Номенклатура = ДанныеУчета.Номенклатура
| И Таблица.Характеристика = ДанныеУчета.Характеристика
|ГДЕ
| НЕ ДанныеУчета.ЗаказНаСборку ЕСТЬ NULL
| И (Таблица.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ДанныеУчета.ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Поступление)
| ИЛИ Таблица.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ДанныеУчета.ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка))
| И Таблица.Ссылка В(&Распоряжения)
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.Номенклатура,
| Таблица.Характеристика,
| ВЫБОР КОГДА Таблица.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров) ТОГДА
| Таблица.Назначение
| КОГДА Таблица.Обособленно ТОГДА
| Таблица.Назначение
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ,
| ДанныеУчета.Серия,
| Таблица.Упаковка,
| Таблица.Сделка,
| Таблица.Склад,
| Таблица.НачалоСборкиРазборки";
Иначе
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Ссылка КАК ЗаказНаСборку,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА Таблица.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров) ТОГДА
| Таблица.Назначение
| КОГДА Таблица.Обособленно ТОГДА
| ВЫБОР КОГДА Таблица.Ссылка.Назначение = ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИЛИ Таблица.Ссылка.ОбосабливатьПоНазначениюЗаказа ТОГДА
| Таблица.Ссылка.НазначениеТовары
| ИНАЧЕ
| Таблица.Ссылка.Назначение
| КОНЕЦ
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.Серия КАК Серия,
| Таблица.Количество КАК Количество,
| Таблица.Упаковка КАК Упаковка,
| Заказ.Сделка КАК Сделка,
| Заказ.Склад КАК Склад,
| Заказ.НачалоСборкиРазборки КАК ДатаОтгрузки,
| ЕСТЬNULL(ДанныеУчета.КОформлению, 0) КАК КОформлению,
| ЕСТЬNULL(ДанныеУчета.Заказано, 0) КАК Заказано
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку КАК Заказ
| ПО Таблица.Ссылка = Заказ.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО Таблица.Ссылка = ДанныеУчета.ЗаказНаСборку
| И Таблица.КодСтроки = ДанныеУчета.КодСтроки
|ГДЕ
| НЕ ДанныеУчета.ЗаказНаСборку ЕСТЬ NULL
| И (Заказ.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ДанныеУчета.ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка)
| ИЛИ Заказ.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ДанныеУчета.ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Поступление))
| И Таблица.Ссылка В(&Распоряжения)";
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область ОтчетСостояниеВыполненияДокумента
Функция ТаблицаНеобеспеченныеТоварыДляОтчетаСостояниеВыполнения()
ТекстЗапроса = "
|ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК Документ,
| ДокументТовары.НомерСтроки КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.КоличествоУпаковок КАК Количество,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка
|ГДЕ
| ДокументТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.НеТребуется)
| И НЕ ДокументТовары.Отменено
| И ДокументТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК Документ,
| 1 КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.КоличествоУпаковок КАК Количество,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказНаСборку КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка
|ГДЕ
| ДокументТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.НеТребуется)
| И ДокументТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
|
|
|ИТОГИ ПО
| Документ;
|";
Возврат ТекстЗапроса
КонецФункции
Функция ТаблицаСостояниеОбеспеченияДляОтчетаСостояниеВыполнения()
ТекстЗапроса = "
|ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК Документ,
| ДокументТовары.НомерСтроки КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.Серия КАК Серия,
| ДокументТовары.КоличествоУпаковок КАК Количество,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| ДокументТовары.Ссылка.НачалоСборкиРазборки КАК ДатаОтгрузки,
| ДокументТовары.ВариантОбеспечения КАК Действие,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка
|ГДЕ
| ДокументТовары.ВариантОбеспечения В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.РезервироватьПоМереПоступления),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада))
|
| И НЕ ДокументТовары.Отменено
| И ДокументТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК Документ,
| 1 КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.Серия КАК Серия,
| ДокументТовары.КоличествоУпаковок КАК Количество,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| ДокументТовары.НачалоСборкиРазборки КАК ДатаОтгрузки,
| ДокументТовары.ВариантОбеспечения КАК Действие,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказНаСборку КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка
|ГДЕ
| ДокументТовары.ВариантОбеспечения В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.РезервироватьПоМереПоступления),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада))
|
| И ДокументТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
|
|ИТОГИ ПО
| Документ;
|";
Возврат ТекстЗапроса
КонецФункции
Функция ВременнаяТаблицаТоварыРаспоряжениеЗаказОтгруженоДляОтчетаСостояниеВыполнения()
ТекстЗапроса = "
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| СУММА(ДокументТовары.Количество) КАК Количество,
| 0 КАК СуммаСНДС,
| ДокументТовары.Серия КАК Серия,
| ДокументТовары.Ссылка.Склад КАК Склад,
| ВтДокументы.ДокументСсылка КАК Ссылка
|ПОМЕСТИТЬ ВТТоварыРаспоряженияОтгружено
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО (ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка)
|ГДЕ
| НЕ ДокументТовары.Отменено
| И ДокументТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ВтДокументы.Проведен
|
| И ДокументТовары.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
|
| И ДокументТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
|
|СГРУППИРОВАТЬ ПО
| ДокументТовары.Номенклатура,
| ДокументТовары.Характеристика,
| ДокументТовары.Серия,
| ДокументТовары.Ссылка.Склад,
| ВтДокументы.ДокументСсылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.Количество КАК Количество,
| 0 КАК СуммаСНДС,
| ДокументТовары.Серия КАК Серия,
| ДокументТовары.Склад КАК Склад,
| ВтДокументы.ДокументСсылка КАК Ссылка
|ИЗ
| Документ.ЗаказНаСборку КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО (ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка)
|ГДЕ
| ДокументТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ВтДокументы.Проведен
| И ДокументТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
|
| И ДокументТовары.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
|
|;
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ВременнаяТаблицаТоварыПоступлениеДляОтчетаСостояниеВыполнения()
ТекстЗапроса = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Набор.ДокументПоступления КАК ДокументПоступления,
| Набор.Номенклатура КАК Номенклатура,
| Набор.Характеристика КАК Характеристика,
| Набор.Склад КАК Склад,
|
| ЛОЖЬ КАК РаздельнаяЗакупка,
|
| СУММА(Набор.Принимается) КАК Принимается,
| СУММА(Набор.Принято) КАК Принято,
| СУММА(Набор.Принять) КАК Принять,
| СУММА(Набор.Поступило) КАК Поступило,
|
| СУММА(Набор.КПоступлению) КАК КПоступлению,
| СУММА(Набор.Оформить) КАК Оформить,
| СУММА(Набор.Оформлено) КАК Оформлено,
|
| МАКСИМУМ(Набор.ОрдернаяСхемаПриПоступлении) КАК ОрдернаяСхемаПриПоступлении
|
|ПОМЕСТИТЬ ВТТоварыПоступление
|ИЗ(
| ВЫБРАТЬ
| ТоварыКПоступлению.ДокументПоступления КАК ДокументПоступления,
| ТоварыКПоступлению.Номенклатура КАК Номенклатура,
| ТоварыКПоступлению.Характеристика КАК Характеристика,
| ТоварыКПоступлению.Склад КАК Склад,
|
| ТоварыКПоступлению.ПринимаетсяКонечныйОстаток КАК Принимается,
| ТоварыКПоступлению.КОформлениюОрдеровРасход КАК Принято,
| ТоварыКПоступлению.КОформлениюОрдеровКонечныйОстаток КАК Принять,
| ТоварыКПоступлению.КОформлениюОрдеровРасход КАК Поступило,
|
| 0 КАК КПоступлению,
| 0 КАК Оформить,
| 0 КАК Оформлено,
|
| ВЫБОР КОГДА ТоварыКПоступлению.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И &ТекущаяДата >= ТоварыКПоступлению.Склад.ДатаНачалаОрдернойСхемыПриПоступлении ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПоступлении
| ИЗ
| РегистрНакопления.ТоварыКПоступлению.ОстаткиИОбороты( , , , ,
| ДокументПоступления В(
| ВЫБРАТЬ
| ВтДокументы.ДокументСсылка
| ИЗ
| ВтДокументы КАК ВтДокументы)) КАК ТоварыКПоступлению
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТоварыКОформлению.ЗаказНаСборку КАК ДокументПоступления,
| ТоварыКОформлению.Номенклатура КАК Номенклатура,
| ТоварыКОформлению.Характеристика КАК Характеристика,
| ТоварыКОформлению.ЗаказНаСборку.Склад КАК Склад,
|
| 0 КАК Принимается,
| 0 КАК Принято,
| 0 КАК Принять,
| 0 КАК Поступило,
|
| ТоварыКОформлению.КОформлениюПриход КАК КПоступлению,
| ТоварыКОформлению.КОформлениюКонечныйОстаток КАК Оформить,
| ТоварыКОформлению.КОформлениюРасход КАК Оформлено,
|
| ВЫБОР КОГДА ТоварыКОформлению.ЗаказНаСборку.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И &ТекущаяДата >= ТоварыКОформлению.ЗаказНаСборку.Склад.ДатаНачалаОрдернойСхемыПриПоступлении ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПоступлении
| ИЗ
| РегистрНакопления.ЗаказыНаСборку.ОстаткиИОбороты(, , , ,
| (ЗаказНаСборку, ТипСборки) В(
| ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК ЗаказНаСборку,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Поступление) КАК ТипСборки
| ИЗ
| ВтДокументы КАК ВтДокументы)) КАК ТоварыКОформлению) КАК Набор
|СГРУППИРОВАТЬ ПО
| Набор.ДокументПоступления,
| Набор.Номенклатура, Набор.Характеристика, Набор.Склад
|
|;
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ВременнаяТаблицаТоварыРаспоряженияПоступлениеЗаказДляОтчетаСостояниеВыполнения()
ТекстЗапроса = "
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| СУММА(ДокументТовары.Количество) КАК Количество,
| 0 КАК СуммаСНДС,
| ДокументТовары.Ссылка.Склад КАК Склад,
| ВтДокументы.ДокументСсылка КАК Ссылка
|ПОМЕСТИТЬ ВТТоварыРаспоряженияПоступление
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО (ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка)
|ГДЕ
| НЕ ДокументТовары.Отменено
| И ВтДокументы.Проведен
| И ДокументТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
|
| И ДокументТовары.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
| И ДокументТовары.Ссылка.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
|
|
|СГРУППИРОВАТЬ ПО
| ДокументТовары.Номенклатура,
| ДокументТовары.Характеристика,
| ДокументТовары.Ссылка.Склад,
| ВтДокументы.ДокументСсылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.Количество КАК Количество,
| 0 КАК СуммаСНДС,
| ДокументТовары.Склад КАК Склад,
| ВтДокументы.ДокументСсылка КАК Ссылка
|ИЗ
| Документ.ЗаказНаСборку КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО (ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка)
|ГДЕ
| ВтДокументы.Проведен
| И ДокументТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ИСТИНА В (
| ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| Документ.ЗаказНаСборку.Товары КАК Комплектующие
| ГДЕ
| Комплектующие.Ссылка = ДокументТовары.Ссылка
| И НЕ Комплектующие.Отменено
| И Комплектующие.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
| И ДокументТовары.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.КВыполнению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыВнутреннихЗаказов.Закрыт))
|;
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТаблицаОтмененоОтгрузкаДляОтчетаСостояниеВыполнения()
ТекстЗапроса = "
|ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК Документ,
| ДокументТовары.НомерСтроки КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.КоличествоУпаковок КАК Количество,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| """" КАК ПричинаОтмены,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка
|ГДЕ
| ДокументТовары.Отменено
| И ДокументТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК Документ,
| 1 КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.КоличествоУпаковокОтменено КАК Количество,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| """" КАК ПричинаОтмены,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказНаСборку КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка
|ГДЕ
| ДокументТовары.КоличествоОтменено > 0
| И ДокументТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
|
|ИТОГИ ПО
| Документ;
|";
Возврат ТекстЗапроса
КонецФункции
Функция ТаблицаОтмененоПоступлениеДляОтчетаСостояниеВыполнения()
ТекстЗапроса = "
|ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК Документ,
| ДокументТовары.НомерСтроки КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.КоличествоУпаковок КАК Количество,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| """" КАК ПричинаОтмены,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка
|ГДЕ
| ДокументТовары.Отменено
| И ДокументТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВтДокументы.ДокументСсылка КАК Документ,
| 1 КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.КоличествоУпаковокОтменено КАК Количество,
| ВЫБОР
| КОГДА ДокументТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА
| ДокументТовары.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ
| ДокументТовары.Упаковка
| КОНЕЦ КАК Упаковка,
| """" КАК ПричинаОтмены,
| 0 КАК Сумма
|ИЗ
| Документ.ЗаказНаСборку КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка
|ГДЕ
| ДокументТовары.КоличествоОтменено > 0
| И ДокументТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
|
|ИТОГИ ПО
| Документ;
|";
Возврат ТекстЗапроса
КонецФункции
#КонецОбласти
#Область ОтменаНеотработанныхСтроки
Функция СкорректироватьКомплектыСервер(ДокументОбъект, ОтменитьСтроки, СкорректироватьМерныеТовары) Экспорт
ОформленоКомплектов = Документы.ЗаказНаСборку.ОформленоКомплектов(ДокументОбъект);
Если СкорректироватьМерныеТовары Тогда
ТипДвиженияЗапасов = ?(ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров,
Перечисления.ТипыДвиженияЗапасов.Поступление, Перечисления.ТипыДвиженияЗапасов.Отгрузка);
ДопустимыеОтклонения = Документы.ЗаказНаСборку.ДопустимыеОтклоненияМерныхТоваров(ДокументОбъект.Ссылка, ТипДвиженияЗапасов);
Если ДопустимыеОтклонения <> Неопределено Тогда
СтруктураПоиска = Новый Структура("Номенклатура, Характеристика", ДокументОбъект.Номенклатура, ДокументОбъект.Характеристика);
СтрокиКомплектов = ДопустимыеОтклонения.НайтиСтроки(СтруктураПоиска);
Отклонение = ДокументОбъект.Количество - ОформленоКомплектов;
Если СтрокиКомплектов.Количество() <> 0 И Макс(Отклонение, -Отклонение) <= СтрокиКомплектов[0].ДопустимоеОтклонение Тогда
ДокументОбъект.Количество = ОформленоКомплектов;
СтруктураДействий = Новый Структура("ПересчитатьКоличествоУпаковок");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ДокументОбъект, СтруктураДействий, Неопределено);
Возврат Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ОтменитьСтроки И ДокументОбъект.Количество > ОформленоКомплектов Тогда
ДокументОбъект.КоличествоОтменено = ДокументОбъект.КоличествоОтменено +
ДокументОбъект.Количество - ОформленоКомплектов;
ДокументОбъект.Количество = ОформленоКомплектов;
КоличествоУпаковокДоОтменены = ДокументОбъект.КоличествоУпаковок;
СтруктураДействий = Новый Структура("ПересчитатьКоличествоУпаковок");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ДокументОбъект, СтруктураДействий, Неопределено);
ДокументОбъект.КоличествоУпаковокОтменено = ДокументОбъект.КоличествоУпаковокОтменено +
КоличествоУпаковокДоОтменены - ДокументОбъект.КоличествоУпаковок;
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
Процедура ОтменитьНеотработанныеСерииКомплектов(ДокументОбъект) Экспорт
ПараметрыУказанияСерий =
Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(ДокументОбъект, Документы.ЗаказНаСборку));
Если Не ПараметрыУказанияСерий.Шапка.ИспользоватьСерииНоменклатуры
И ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| втСерииЗаказа.Серия,
| втСерииЗаказа.Количество,
| втСерииЗаказа.Номенклатура,
| втСерииЗаказа.Характеристика,
| втСерииЗаказа.Назначение
|ПОМЕСТИТЬ втСерииЗаказа
|ИЗ
| &СерииЗаказа КАК втСерииЗаказа
|;
|
|
|ВЫБРАТЬ
| СерииЗаказа.Серия,
| СУММА(СерииЗаказа.Количество) КАК Количество,
| СерииЗаказа.Номенклатура,
| СерииЗаказа.Характеристика,
| СерииЗаказа.Назначение
|ПОМЕСТИТЬ СерииЗаказа
|ИЗ
| втСерииЗаказа КАК СерииЗаказа
|
|СГРУППИРОВАТЬ ПО
| СерииЗаказа.Серия,
| СерииЗаказа.Характеристика,
| СерииЗаказа.Назначение,
| СерииЗаказа.Номенклатура
|;
|
|
|ВЫБРАТЬ
| ТоварыКОтгрузкеОстатки.Серия КАК Серия,
| ТоварыКОтгрузкеОстатки.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузкеОстатки.Характеристика КАК Характеристика,
| ТоварыКОтгрузкеОстатки.Назначение КАК Назначение,
| ТоварыКОтгрузкеОстатки.КОтгрузкеОстаток КАК КОтгрузкеОстаток,
| ТоварыКОтгрузкеОстатки.КОформлениюОстаток КАК КОформлениюОстаток,
| ВЫБОР
| КОГДА ТоварыКОтгрузкеОстатки.КОтгрузкеОстаток < ТоварыКОтгрузкеОстатки.КОформлениюОстаток
| ТОГДА ТоварыКОтгрузкеОстатки.КОтгрузкеОстаток
| ИНАЧЕ ТоварыКОтгрузкеОстатки.КОформлениюОстаток
| КОНЕЦ КАК КоличествоНедостача
|ПОМЕСТИТЬ СерииРегистра
|ИЗ
| РегистрНакопления.ТоварыКОтгрузке.Остатки(, ДокументОтгрузки = &Заказ) КАК ТоварыКОтгрузкеОстатки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СерииЗаказа КАК СерииЗаказа
| ПО ТоварыКОтгрузкеОстатки.Серия = СерииЗаказа.Серия
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Серия,
| Назначение
|;
|
|
|ВЫБРАТЬ
| ЗаказыНаСборкуОстатки.Серия КАК Серия,
| ЗаказыНаСборкуОстатки.Номенклатура КАК Номенклатура,
| ЗаказыНаСборкуОстатки.Характеристика КАК Характеристика,
| ЗаказыНаСборкуОстатки.КОформлениюОстаток КАК КоличествоНедостача
|ПОМЕСТИТЬ СерииНакладной
|ИЗ
| РегистрНакопления.ЗаказыНаСборку.Остатки(, ЗаказНаСборку = &Заказ) КАК ЗаказыНаСборкуОстатки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СерииЗаказа КАК СерииЗаказа
| ПО ЗаказыНаСборкуОстатки.Серия = СерииЗаказа.Серия
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Серия
|;
|
|
|ВЫБРАТЬ
| СерииЗаказа.Серия,
| СерииЗаказа.Номенклатура,
| СерииЗаказа.Характеристика,
| СерииЗаказа.Назначение,
| ВЫБОР
| КОГДА ЕСТЬNULL(СерииНакладной.КоличествоНедостача, 0) > ЕСТЬNULL(СерииРегистра.КоличествоНедостача, 0)
| ТОГДА ЕСТЬNULL(СерииРегистра.КоличествоНедостача, 0)
| ИНАЧЕ ЕСТЬNULL(СерииНакладной.КоличествоНедостача, 0)
| КОНЕЦ КАК КоличествоНедостача,
| СерииРегистра.КОтгрузкеОстаток,
| СерииРегистра.КОформлениюОстаток
|ИЗ
| СерииЗаказа КАК СерииЗаказа
| ЛЕВОЕ СОЕДИНЕНИЕ СерииРегистра КАК СерииРегистра
| ПО СерииЗаказа.Номенклатура = СерииРегистра.Номенклатура
| И СерииЗаказа.Характеристика = СерииРегистра.Характеристика
| И СерииЗаказа.Серия = СерииРегистра.Серия
| И СерииЗаказа.Назначение = СерииРегистра.Назначение
| ЛЕВОЕ СОЕДИНЕНИЕ СерииНакладной КАК СерииНакладной
| ПО СерииЗаказа.Номенклатура = СерииНакладной.Номенклатура
| И СерииЗаказа.Характеристика = СерииНакладной.Характеристика
| И СерииЗаказа.Серия = СерииНакладной.Серия
|ГДЕ
| ЕСТЬNULL(СерииРегистра.КоличествоНедостача, СерииЗаказа.Количество) > 0";
Запрос.УстановитьПараметр("Заказ", ДокументОбъект.Ссылка);
Если ДокументОбъект.СтатусУказанияСерий = 14 Тогда
ТЗСерии = ДокументОбъект.Серии.Выгрузить();
ТЗСерии.Очистить();
СерияВШапке = ТЗСерии.Добавить();
ЗаполнитьЗначенияСвойств(СерияВШапке, ДокументОбъект);
Запрос.УстановитьПараметр("СерииЗаказа", ТЗСерии);
Иначе
Запрос.УстановитьПараметр("СерииЗаказа", ДокументОбъект.Серии.Выгрузить());
КонецЕсли;
Результат = Запрос.Выполнить().Выбрать();
МассивУдаляемых = Новый Массив();
Пока Результат.Следующий() Цикл
Если ДокументОбъект.СтатусУказанияСерий = 14 Тогда
Если ДокументОбъект.Серия = Результат.Серия
И (ДокументОбъект.Количество = Результат.КоличествоНедостача Или ДокументОбъект.Количество = 0) Тогда
ДокументОбъект.Серия = ПредопределенноеЗначение("Справочник.СерииНоменклатуры.ПустаяСсылка");
КонецЕсли;
Иначе
Отбор = Новый Структура();
Отбор.Вставить("Серия", Результат.Серия);
Отбор.Вставить("Номенклатура", Результат.Номенклатура);
Отбор.Вставить("Характеристика", Результат.Характеристика);
Отбор.Вставить("Назначение", Результат.Назначение);
СтрокиСерий = ДокументОбъект.Серии.НайтиСтроки(Отбор);
Недостача = Результат.КоличествоНедостача;
Для Каждого СтрокаСерий Из СтрокиСерий Цикл
Если СтрокаСерий.Количество = Недостача Тогда
МассивУдаляемых.Добавить(СтрокаСерий);
Недостача = 0;
Иначе
Вычитаемое = Мин(СтрокаСерий.Количество, Недостача);
СтрокаСерий.Количество = СтрокаСерий.Количество - Вычитаемое;
Недостача = Недостача - Вычитаемое;
Если СтрокаСерий.Количество = 0 Тогда
МассивУдаляемых.Добавить(СтрокаСерий);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
МассивУдаляемых = ОбщегоНазначенияКлиентСервер.СвернутьМассив(МассивУдаляемых);
Для Каждого УдаляемаяСтрока Из МассивУдаляемых Цикл
ДокументОбъект.Серии.Удалить(УдаляемаяСтрока);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область ФормированиеГиперссылкиВЖурналеДокументовВнутреннегоТовародвижения
Функция ЕстьЗаказыВРаботе(Параметры)
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| СостоянияЗаказов.Заказ КАК Заказ,
| СостоянияЗаказов.Состояние КАК Состояние
|ИЗ
| РегистрСведений.СостоянияВнутреннихЗаказов КАК СостоянияЗаказов
|ГДЕ
| СостоянияЗаказов.Заказ ССЫЛКА Документ.ЗаказНаСборку
| И СостоянияЗаказов.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияВнутреннихЗаказов.Закрыт)");
Возврат Не Запрос.Выполнить().Пустой();
КонецФункции
Функция СформироватьГиперссылкуСмТакжеВРаботе(Параметры) Экспорт
Если Не (ПравоДоступа("Чтение", Метаданные.РегистрыСведений.СостоянияВнутреннихЗаказов)
И ПравоДоступа("Изменение", Метаданные.Документы.ЗаказНаСборку)
И ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыНаСборку")) Тогда
Возврат Неопределено;
КонецЕсли;
ТекстГиперссылки = НСтр("ru = 'Заказы на сборку (разборку)'");
ТекстСсылки = "Документ.ЗаказНаСборку.Форма.ФормаСписка";
Если ЕстьЗаказыВРаботе(Параметры) Тогда
Возврат Новый ФорматированнаяСтрока(ТекстГиперссылки,,,, ТекстСсылки);
Иначе
Возврат Новый ФорматированнаяСтрока(ТекстГиперссылки,, ЦветаСтиля.НезаполненноеПолеТаблицы,, ТекстСсылки);
КонецЕсли;
КонецФункции
#КонецОбласти
#Область Назначения
Функция ШаблонНазначения(Объект) Экспорт
ШаблонНазначения = Справочники.Назначения.ШаблонНового();
Если НаправленияДеятельностиСервер.ЭтоНаправлениеДеятельностиСОбособлениемТоваровИРабот(Объект.НаправлениеДеятельности) Тогда
ШаблонНазначения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЕсли;
ВариантОбособления = Константы.ВариантОбособленияТоваровВСборке.Получить();
Если ВариантОбособления <> Перечисления.ВариантыОбособленияТоваровВСборке.НаправлениеДеятельности
Или Не ЗначениеЗаполнено(ШаблонНазначения.НаправлениеДеятельности) Тогда
ШаблонНазначения.Заказ = Объект.Ссылка;
КонецЕсли;
Возврат ШаблонНазначения;
КонецФункции
#КонецОбласти
#Область ВидДеятельностиНДС
Функция ПараметрыЗаполненияВидаДеятельностиНДС(Документ) Экспорт
Реквизиты = Новый Структура("Дата, Организация, Склад, НаправлениеДеятельности");
Если ТипЗнч(Документ) = Тип("ДокументСсылка.ЗаказНаСборку") Тогда
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Документ, Реквизиты);
Иначе
ЗаполнитьЗначенияСвойств(Реквизиты, Документ);
КонецЕсли;
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияВидаДеятельностиНДС();
ПараметрыЗаполнения.Дата = Реквизиты.Дата;
ПараметрыЗаполнения.Склад = Реквизиты.Склад;
ПараметрыЗаполнения.Организация = Реквизиты.Организация;
ПараметрыЗаполнения.НаправлениеДеятельности = Реквизиты.НаправлениеДеятельности;
ПараметрыЗаполнения.СборкаРазборкаТоваров = Истина;
Возврат ПараметрыЗаполнения;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли