#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("ВнутреннееТовародвижение");
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("ОборотныеРегистрыУправленческогоУчета");
МеханизмыДокумента.Добавить("ОперативныйУчетТоваровОрганизаций");
МеханизмыДокумента.Добавить("ПриемНаОтветхранение");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СебестоимостьИПартионныйУчет");
МеханизмыДокумента.Добавить("СерийныйУчет");
МеханизмыДокумента.Добавить("АдресныйСклад");
МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
МеханизмыДокумента.Добавить("УчетНДС");
МеханизмыДокумента.Добавить("ИсправлениеДокументов");
СборкаТоваровЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.СборкаТоваров") Тогда
ДокументОбъект = Документ;
ДокументСсылка = Документ.Ссылка;
ИначеЕсли ТипЗнч(Документ) = Тип("ДокументСсылка.СборкаТоваров") Тогда
ДокументОбъект = Документ.ПолучитьОбъект();
ДокументСсылка = Документ;
Иначе
ДокументОбъект = Неопределено;
ДокументСсылка = Неопределено;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолучитьДанныеДокумента(Запрос, ДокументСсылка);
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
ТекстЗапросаТаблицаЗаказыНаСборку(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ТекстЗапросаТаблицаДатыПоступленияТоваровОрганизаций(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыОрганизацийКПередаче(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаПартииТоваровОрганизаций(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
СборкаТоваровЛокализация.ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ОформитьПриобретениеТоваровПоДвухходовке(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ОформитьПоступлениеТоваровПоДвухходовке(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ПроведениеДокументов.ДобавитьЗапросыСторноДвижений(
Запрос, ТекстыЗапроса, Регистры, Метаданные.Документы.СборкаТоваров);
РасчетСебестоимостиПроведениеДокументов.ОтразитьВМеханизмеУчетаЗатратИСебестоимости(
ДокументСсылка, Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Документы.УстановкаЦенНоменклатуры.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КомандаСоздатьНаОсновании = Обработки.СправочноеРазмещениеНоменклатуры.ДобавитьКомандуСоздатьНаОсновании(
КомандыСозданияНаОсновании);
Если КомандаСоздатьНаОсновании <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСоздатьНаОсновании,
"Статус",
Перечисления.СтатусыСборокТоваров.СобраноРазобрано,
ВидСравнения.НеРавно);
КонецЕсли;
Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании);
Документы.ПоручениеЭкспедитору.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
ИсправлениеДокументов.ДобавитьКомандуИсправление(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
ИсправлениеДокументов.ДобавитьКомандуСторно(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
СборкаТоваровЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.СборкаТоваров) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.СборкаТоваров.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.СборкаТоваров);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьСборкуРазборку";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.СборкаТоваров) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.СборкаТоваровСоздатьНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.СборкаТоваров.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.СборкаТоваров);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьСборкуРазборку";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
Отчеты.ОстаткиТоваровОрганизаций.ДобавитьКомандуОтчета(КомандыОтчетов);
КомандаОтчет = Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияВнутреннихРаспоряжений(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 1;
КонецЕсли;
СборкаТоваровЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
#Область СменаСтатуса
Функция СформироватьЗапросПроверкиПриСменеСтатуса(МассивДокументов, НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыСборокТоваров[НовыйСтатус];
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР
| КОГДА ТаблицаДокументов.Статус = &Статус ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ИСТИНА КАК ЗаписьПроведением
|ИЗ
| Документ.СборкаТоваров КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Статус", ЗначениеНовогоСтатуса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Возврат Запрос;
КонецФункции
Функция ПроверкаПередСменойСтатуса(ВыборкаПроверки, НовыйСтатус, ДополнительныеПараметры) Экспорт
Возврат Истина;
КонецФункции
#КонецОбласти
#Область Серии
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "Склад,Статус,ХозяйственнаяОперация,Дата";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ИспользоватьОрдернуюСхемуПриПриемке = СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.Склад, Объект.Дата);
ПараметрыСерийСклада = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.Склад, Ложь);
Шапка = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
Шапка.ПолноеИмяОбъекта = "Документ.СборкаТоваров";
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
Шапка.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры
И (Не ИспользоватьОрдернуюСхемуПриПриемке
Или ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям)
И Объект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано;
Шапка.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям
И Объект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано;
Шапка.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаСобранныхКомплектов);
Иначе
Шапка.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры;
Шапка.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям;
Шапка.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаКомплектовДляРазборки);
КонецЕсли;
Шапка.СерииПриПланированииОтгрузкиУказываютсяВТЧСерии = Истина;
Шапка.ПоляСвязи.Добавить("Назначение");
Шапка.ЭтоНакладная = Истина;
Шапка.ПланированиеОтгрузки = Объект.Статус = Перечисления.СтатусыСборокТоваров.ВРаботе;
Шапка.ПланированиеОтбора = Объект.Статус = Перечисления.СтатусыСборокТоваров.ВРаботе;
Шапка.ФактОтбора = Объект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
Шапка.РегистрироватьСерии = Истина;
Иначе
Шапка.РегистрироватьСерии = НоменклатураКлиентСервер.НеобходимоРегистрироватьСерии(Шапка);
КонецЕсли;
Шапка.ТоварВШапке = Истина;
Шапка.Дата = Объект.Дата;
Шапка.ИменаПолейДляОпределенияРаспоряжения.Добавить("ЗаказНаСборку");
Шапка.ИменаПолейДляОпределенияРаспоряжения.Добавить("Ссылка");
ТЧ = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ТЧ.ПолноеИмяОбъекта = "Документ.СборкаТоваров";
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
ТЧ.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры;
ТЧ.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям;
ТЧ.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаКомплектующихДляСборки);
Иначе
ТЧ.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры
И (Не ИспользоватьОрдернуюСхемуПриПриемке
Или ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям)
И Объект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано;
ТЧ.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям
И Объект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано;
ТЧ.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаКомплектующихПослеРазборки);
КонецЕсли;
ТЧ.ПоляСвязи.Добавить("Назначение");
ТЧ.ЭтоНакладная = Истина;
ТЧ.ПланированиеОтгрузки = Объект.Статус = Объект.Статус = Перечисления.СтатусыСборокТоваров.ВРаботе;
ТЧ.ПланированиеОтбора = Объект.Статус = Объект.Статус = Перечисления.СтатусыСборокТоваров.ВРаботе;
ТЧ.ФактОтбора = Объект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
ТЧ.РегистрироватьСерии = НоменклатураКлиентСервер.НеобходимоРегистрироватьСерии(ТЧ);
Иначе
ТЧ.РегистрироватьСерии = Истина;
КонецЕсли;
ТЧ.ТоварВШапке = Ложь;
ТЧ.Дата = Объект.Дата;
ТЧ.ИменаПолейДляОпределенияРаспоряжения.Добавить("ЗаказНаСборку");
ТЧ.ИменаПолейДляОпределенияРаспоряжения.Добавить("Ссылка");
ПараметрыУказанияСерий = Новый Структура;
ПараметрыУказанияСерий.Вставить("Шапка",Шапка);
ПараметрыУказанияСерий.Вставить("ТЧ",ТЧ);
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
Если ПараметрыУказанияСерий.ТоварВШапке Тогда
Если ПараметрыУказанияСерий.СкладскиеОперации.Найти(Перечисления.СкладскиеОперации.ПриемкаСобранныхКомплектов) <> Неопределено Тогда
ТекстЗапроса = ТекстЗапросаЗаполненияСтатусовУказанияСерийШапкиСборки();
Иначе
ТекстЗапроса = ТекстЗапросаЗаполненияСтатусовУказанияСерийШапкиРазборки();
КонецЕсли;
Иначе
Если ПараметрыУказанияСерий.СкладскиеОперации.Найти(Перечисления.СкладскиеОперации.ОтгрузкаКомплектующихДляСборки) <> Неопределено Тогда
ТекстЗапроса = ТекстЗапросаЗаполненияСтатусовУказанияСерийТЧСборки();
Иначе
ТекстЗапроса = ТекстЗапросаЗаполненияСтатусовУказанияСерийТЧРазборки();
КонецЕсли;
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область ЗаполнениеПоЗаказу
Функция ДанныеЗаполненияНакладной(МассивСсылок, СвойстваЗаказов = Неопределено) Экспорт
Реквизиты = Новый Структура("ХозяйственнаяОперация, Организация, Склад, ВариантКомплектации, Подразделение,
|Сделка, НаправлениеДеятельности, СборкаПодДеятельность, ВариантПриемкиТоваров");
Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(МассивСсылок[0], Реквизиты);;
КонецФункции
Функция ДанныеДляПроверкиВводаНаОсновании(Распоряжения, ХозяйственнаяОперация = Неопределено) Экспорт
ДанныеДляВвода = Новый Структура("Основание, Статус, ЕстьОтгрузить, РаспоряженияКОформлению, МожноСгруппировать");
ДанныеДляВвода.ЕстьОтгрузить = Ложь;
ДанныеДляВвода.МожноСгруппировать = Ложь;
ТекстыЗапросов = Новый Массив;
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ
| ЗаказНаСборку.Ссылка КАК Основание,
| ЗаказНаСборку.Статус КАК Статус
|ИЗ
| Документ.ЗаказНаСборку КАК ЗаказНаСборку
|ГДЕ
| ЗаказНаСборку.Ссылка В(&Распоряжения)");
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Документ.ЗаказНаСборку.Товары КАК ТоварыЗаказа
|ГДЕ
| ТоварыЗаказа.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ТоварыЗаказа.Ссылка В(&Распоряжения)
| И ТоварыЗаказа.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И НЕ ТоварыЗаказа.Отменено
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| Документ.ЗаказНаСборку КАК ТоварыЗаказа
|ГДЕ
| ТоварыЗаказа.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ТоварыЗаказа.Ссылка В(&Распоряжения)
| И ТоварыЗаказа.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ТоварыЗаказа.Количество > 0");
ТекстыЗапросов.Добавить(РегистрыНакопления.ЗаказыНаСборку.ТекстЗапросаОстатки("ВтОстаткиКОформлению"));
ТекстыЗапросов.Добавить(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ОстаткиКОформлению.ЗаказНаСборку КАК РаспоряженияКОформлению
|ИЗ
| ВтОстаткиКОформлению КАК ОстаткиКОформлению");
Запрос = Новый Запрос(СтрСоединить(ТекстыЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов()));
Запрос.УстановитьПараметр("Распоряжения", Распоряжения);
Запрос.УстановитьПараметр("Регистратор", Неопределено);
Результат = Запрос.ВыполнитьПакет();
Выборка = Результат[0].Выбрать();
Если Выборка.Количество() = 1 И Выборка.Следующий() Тогда
ДанныеДляВвода.Основание = Выборка.Основание;
ДанныеДляВвода.Статус = Выборка.Статус;
ДанныеДляВвода.ЕстьОтгрузить = Не Результат[1].Пустой();
КонецЕсли;
Если Не Результат[3].Пустой() Тогда
ДанныеДляВвода.РаспоряженияКОформлению = Результат[3].Выгрузить().ВыгрузитьКолонку("РаспоряженияКОформлению");
ДанныеДляВвода.МожноСгруппировать = Истина;
КонецЕсли;
Возврат ДанныеДляВвода;
КонецФункции
Функция ПараметрыОткрытияФормыРабочегоМеста(ХозяйственнаяОперация = Неопределено) Экспорт
ОтборХозяйственныеОперации = Новый СписокЗначений;
Если ЗначениеЗаполнено(ХозяйственнаяОперация) Тогда
ОтборХозяйственныеОперации.Добавить(ХозяйственнаяОперация);
Иначе
ОтборХозяйственныеОперации.Добавить(Перечисления.ХозяйственныеОперации.СборкаТоваров);
ОтборХозяйственныеОперации.Добавить(Перечисления.ХозяйственныеОперации.РазборкаТоваров);
КонецЕсли;
ОтборТипыДокументов = Новый СписокЗначений;
ОтборТипыДокументов.Добавить(ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Метаданные.Документы.СборкаТоваров));
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ОтборХозяйственныеОперации", ОтборХозяйственныеОперации);
ПараметрыОтбора.Вставить("ОтборТипыДокументов", ОтборТипыДокументов);
ПараметрыОткрытия = Новый Структура("ИмяФормы, ПараметрыФормы");
ПараметрыОткрытия.ИмяФормы = "Обработка.ЖурналДокументовВнутреннегоТовародвижения.Форма.СписокДокументовКОформлению";
ПараметрыОткрытия.ПараметрыФормы = Новый Структура;
ПараметрыОткрытия.ПараметрыФормы.Вставить("КлючНазначенияФормы", "СборкиРазборкиТоваров");
ПараметрыОткрытия.ПараметрыФормы.Вставить("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Возврат ПараметрыОткрытия;
КонецФункции
Функция РезультатЗапросаПоОстаткамЗаказов(ДанныеОтбора, КонтекстВызова) Экспорт
ПараметрыЗапросов = Новый Структура("ОтобратьПоЗаказу, МассивЗаказов,
|Организация, Подразделение, Склад, ХозяйственнаяОперация,
|Регистратор, ТоварыНакладной");
ПараметрыЗапросов.Вставить("УчитыватьСобирается", Ложь);
ПараметрыЗапросов.Вставить("ЗаполнятьПоСобирается", Ложь);
СписокЗапросов = Новый СписокЗначений();
ИменаПодзапросов = Новый Массив();
Если КонтекстВызова = "СозданиеНаОсновании" Тогда
ПараметрыЗапросаДляСозданияНаОсновании(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
ИначеЕсли КонтекстВызова = "Подбор" Тогда
ПараметрыЗапросаДляПодбора(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
ИначеЕсли КонтекстВызова = "ПерезаполнениеПоОрдерам" Тогда
ПараметрыЗапросаДляПерезаполнения(ПараметрыЗапросов, СписокЗапросов, ИменаПодзапросов, ДанныеОтбора);
КонецЕсли;
ТекстыЗапросов = Новый Соответствие();
ТекстыЗапросов.Вставить("ВтЗаказыОтбор", ТекстЗапросаВременнойТаблицыРаспоряжений());
ТекстыЗапросов.Вставить("ВтНакладная", ТекстЗапросаВременнойТаблицыНакладной());
ТекстыЗапросов.Вставить("ТаблицаСобраноРазобраноКомплектующие", ТекстЗапросаСбораноРазобраноКомплектующие());
ТекстыЗапросов.Вставить("ТаблицаСобраноРазобраноКомплект", ТекстЗапросаСбораноРазобраноКомплект());
ТекстыЗапросов.Вставить("ТаблицаКомплект", ТекстЗапросаОстаткиРегистраЗаказыИСторноДокументаКомплект());
ТекстыЗапросов.Вставить("ТаблицаСерии", ТекстЗапросаОстаткиСерийРазбираемогоКомплектаИСторноДокумента());
ТекстыЗапросов.Вставить("ТаблицаСерииРазборано", ТекстЗапросаРазбораноСерии());
ТекстыПодзапросов = Новый Соответствие();
ТекстыПодзапросов.Вставить("БлокРегистрЗаказыКомплектующие", ТекстЗапросаОстаткиРегистраЗаказыКомплектующие());
ТекстыПодзапросов.Вставить("БлокСторноНакладнаяКомплектующие", ТекстЗапросаСторноДвиженийНакладнаяКомплектующие());
ТекстыПодзапросов.Вставить("БлокРегистрЗаказыКомплект", ТекстЗапросаОстаткиРегистраЗаказыКомплект());
ТекстыПодзапросов.Вставить("БлокСторноНакладнаяКомплект", ТекстЗапросаСторноДвиженийНакладнаяКомплект());
ТекстыПодзапросов.Вставить("БлокНовыеДвиженияНакладнаяКомплектующие", ТекстЗапросаНовыеДвиженияНакладнаяКомплектующие());
Для Каждого Элемент Из СписокЗапросов Цикл
Элемент.Представление = ТекстыЗапросов[Элемент.Значение];
КонецЦикла;
Элемент = СписокЗапросов.НайтиПоЗначению("ТаблицаКомплектующие");
Если Элемент <> Неопределено Тогда
Элемент.Представление = ТекстЗапросаОбъединения(ИменаПодзапросов, ТекстыПодзапросов);
КонецЕсли;
Запрос = Новый Запрос();
Для Каждого Параметр Из ПараметрыЗапросов Цикл
Запрос.УстановитьПараметр(Параметр.Ключ, Параметр.Значение);
КонецЦикла;
Для Каждого Элемент Из СписокЗапросов Цикл
Запрос.Текст = Запрос.Текст + Элемент.Представление;
КонецЦикла;
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.ВыполнитьПакет();
СтруктураРезультата = Новый Структура();
Для Каждого Элемент Из СписокЗапросов Цикл
СтруктураРезультата.Вставить(Элемент.Значение, РезультатЗапроса[СписокЗапросов.Индекс(Элемент)].Выгрузить());
КонецЦикла;
Возврат СтруктураРезультата;
КонецФункции
Функция ЕстьОрдерПоРаспоряжению(Распоряжения) Экспорт
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(, , , ,
| ДокументОтгрузки В (&Заказы)
| И Склад В(
| ВЫБРАТЬ
| СпрСклады.Ссылка КАК Склад
| ИЗ
| Справочник.Склады КАК СпрСклады
| ГДЕ
| СпрСклады.ИспользоватьОрдернуюСхемуПриОтгрузке
| И СпрСклады.ДатаНачалаОрдернойСхемыПриОтгрузке <= &НачалоТекущегоДня)) КАК Таблица
|ГДЕ
| Таблица.КОтгрузкеРасход + Таблица.СобраноПриход > 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| 1
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.ОстаткиИОбороты(, , , ,
| ДокументПоступления В (&Заказы)
| И Склад В(
| ВЫБРАТЬ
| СпрСклады.Ссылка КАК Склад
| ИЗ
| Справочник.Склады КАК СпрСклады
| ГДЕ
| СпрСклады.ИспользоватьОрдернуюСхемуПриПоступлении
| И СпрСклады.ДатаНачалаОрдернойСхемыПриПоступлении <= &НачалоТекущегоДня)) КАК Таблица
|ГДЕ
| Таблица.КОформлениюОрдеровРасход > 0";
Запрос.УстановитьПараметр("Заказы", Распоряжения);
Запрос.УстановитьПараметр("НачалоТекущегоДня", НачалоДня(ТекущаяДатаСеанса()));
УстановитьПривилегированныйРежим(Истина);
Возврат Не Запрос.Выполнить().Пустой();
КонецФункции
#КонецОбласти
#Область РаспоряжениеНаОтгрузку
Функция РаспоряжениеНаВыполнениеСкладскойОперации(ЗначенияПолейДляОпределенияРаспоряжения) Экспорт
Если ЗначениеЗаполнено(ЗначенияПолейДляОпределенияРаспоряжения.ЗаказНаСборку) Тогда
Возврат ЗначенияПолейДляОпределенияРаспоряжения.ЗаказНаСборку;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область Прочее
Функция РеквизитыДокумента(ДокументСсылка) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Организация КАК Организация
|ИЗ
| Документ.СборкаТоваров КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &ДокументСсылка
|");
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Дата = Выборка.Дата;
Организация = Выборка.Организация;
Иначе
Дата = Дата(1,1,1);
Организация = Неопределено;
КонецЕсли;
СтруктураРеквизитов = Новый Структура("Дата, Организация",
Дата,
Организация);
Возврат СтруктураРеквизитов;
КонецФункции
Функция СтруктураСостояниеВыполненияДокумента() Экспорт
СтруктураСостояние = Отчеты.СостояниеВыполненияДокументов.ИнициализироватьСтруктуруСостояниеВыполненияДокумента();
СтруктураСостояние.Вставить("ВыводитьТаблицыОтгрузка", 1);
СтруктураСостояние.Вставить("ВыводитьТаблицыПоступление", 2);
СтруктураСостояние.Вставить("ЭтоНакладная", Истина);
СтруктураСостояние.Вставить("ТекстТоварУслугаОтгрузка", НСтр("ru = 'Товар'"));
СтруктураСостояние.Вставить("ТекстТоварУслугаПоступление", НСтр("ru = 'Товар'"));
ВТТоварыРаспоряжениеНакладнаяОтгружено = ВременнаяТаблицаТоварыРаспоряжениеНакладнаяОтгруженоДляОтчетаСостояниеВыполнения();
ВТТоварыПоступление = ВременнаяТаблицаТоварыПоступлениеДляОтчетаСостояниеВыполнения();
ВТТоварыРаспоряженияПоступлениеНакладная = ВременнаяТаблицаТоварыРаспоряженияПоступлениеНакладнаяДляОтчетаСостояниеВыполнения();
СтруктураДопЗапросов = Новый Структура();
СтруктураДопЗапросов.Вставить("ТекстЗапросаВТТоварыРаспоряжениеНакладнаяОтгружено", ВТТоварыРаспоряжениеНакладнаяОтгружено);
СтруктураДопЗапросов.Вставить("ТекстЗапросаВТТоварыПоступление", ВТТоварыПоступление);
СтруктураДопЗапросов.Вставить("ТекстЗапросаВТТоварыРаспоряженияПоступлениеНакладная", ВТТоварыРаспоряженияПоступлениеНакладная);
СтруктураСостояние.Вставить("СтруктураДопЗапросов", СтруктураДопЗапросов);
Возврат СтруктураСостояние;
КонецФункции
Функция КоллекцияТабличныхЧастейТоваров() Экспорт
ШапкаДокумента = Новый Структура;
ШапкаДокумента.Вставить("АналитикаУчетаНоменклатуры", Справочники.КлючиАналитикиУчетаНоменклатуры.ПустаяСсылка());
ШапкаДокумента.Вставить("Номенклатура", Справочники.Номенклатура.ПустаяСсылка());
ШапкаДокумента.Вставить("Характеристика", Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка());
ШапкаДокумента.Вставить("Назначение", Справочники.Назначения.ПустаяСсылка());
ШапкаДокумента.Вставить("Серия", Справочники.СерииНоменклатуры.ПустаяСсылка());
ШапкаДокумента.Вставить("СтатусУказанияСерий", 0);
ШапкаДокумента.Вставить("Количество", 0);
ШапкаДокумента.Вставить("КоличествоПоРНПТ", 0);
ШапкаДокумента.Вставить("НомерГТД", Справочники.НомераГТД.ПустаяСсылка());
ТаблицыДокумента = Новый Структура;
ТаблицыДокумента.Вставить("ШапкаДокумента", ШапкаДокумента);
ТаблицыДокумента.Вставить("Товары");
Возврат ТаблицыДокумента;
КонецФункции
#КонецОбласти
#Область Заполнение
Функция ПараметрыЗаполненияДокумента() Экспорт
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("МассивЗаказов", Неопределено);
ПараметрыЗаполнения.Вставить("ФормаОткрыта", Ложь);
ПараметрыЗаполнения.Вставить("ЗаполнятьПоОрдеру", Неопределено);
ПараметрыЗаполнения.Вставить("ПоЗаказуНаСборку", Ложь);
Ресурсы = Новый Массив(2);
Ресурсы[0] = "Комплект";
Ресурсы[1] = "Комплектующие";
ПараметрыЗаполнения.Вставить("Ресурсы", Ресурсы);
ПараметрыЗаполнения.Вставить("РеквизитыШапки", Неопределено);
ПараметрыЗаполнения.Вставить("Склад", Справочники.Склады.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ПустаяСсылка());
ПараметрыЗаполнения.Вставить("ИмяДокумента", "СборкаТоваров");
ПараметрыЗаполнения.Вставить("ИмяРегистраЗаказ", "ЗаказыНаСборку");
ПараметрыЗаполнения.Вставить("ИмяПоляЗаказ", "ЗаказНаСборку");
ПараметрыЗаполнения.Вставить("КлючевыеПоля", "Номенклатура, Характеристика, Серия, Назначение");
Возврат ПараметрыЗаполнения;
КонецФункции
Процедура ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения, РеквизитыШапки, МассивЗаказов) Экспорт
ПараметрыЗаполнения.МассивЗаказов = МассивЗаказов;
ПараметрыЗаполнения.РеквизитыШапки = РеквизитыШапки;
Для каждого Заказ Из ПараметрыЗаполнения.МассивЗаказов Цикл
Если ЗначениеЗаполнено(Заказ) И ТипЗнч(Заказ) = Тип("ДокументСсылка.ЗаказНаСборку") Тогда
ПараметрыЗаполнения.ПоЗаказуНаСборку = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
ПараметрыЗаполнения.ХозяйственнаяОперация = РеквизитыШапки.ХозяйственнаяОперация;
Если ПараметрыЗаполнения.ЗаполнятьПоОрдеру = Неопределено Тогда
ПараметрыЗаполнения.ЗаполнятьПоОрдеру = НакладныеСервер.ЗаполнятьПоОрдеру(РеквизитыШапки.Склад);
КонецЕсли;
КонецПроцедуры
Функция ДанныеТаблицыТоварыДокумента(Накладная, ПоШапке = Ложь) Экспорт
Запрос = Новый Запрос;
Если ПоШапке Тогда
Запрос.Текст =
"ВЫБРАТЬ
| 0 КАК НомерСтроки,
| ЕСТЬNULL(СборкаТоваровСерии.Количество, СборкаТоваров.Количество) КАК Количество,
| ЕСТЬNULL(СборкаТоваровСерии.Номенклатура, СборкаТоваров.Номенклатура) КАК Номенклатура,
| ЕСТЬNULL(СборкаТоваровСерии.Характеристика, СборкаТоваров.Характеристика) КАК Характеристика,
| ЕСТЬNULL(СборкаТоваровСерии.Назначение, СборкаТоваров.Назначение) КАК Назначение,
| ЕСТЬNULL(СборкаТоваровСерии.Серия, СборкаТоваров.Серия) КАК Серия,
| СборкаТоваров.Упаковка КАК Упаковка,
| СборкаТоваровСерии.НомерСтроки КАК ИдентификаторСтроки,
| СборкаТоваров.СтатусУказанияСерий КАК СтатусУказанияСерий,
| СборкаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ВЫБОР КОГДА СборкаТоваров.ЗаказНаСборку = ЗНАЧЕНИЕ(Документ.ЗаказНаСборку.ПустаяСсылка)
| ТОГДА СборкаТоваров.Ссылка
| ИНАЧЕ СборкаТоваров.ЗаказНаСборку
| КОНЕЦ КАК ЗаказНаСборку,
| 1 КАК КодСтроки
|ИЗ
| Документ.СборкаТоваров КАК СборкаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СборкаТоваров.Серии КАК СборкаТоваровСерии
| ПО (СборкаТоваровСерии.Ссылка = СборкаТоваров.Ссылка)
|ГДЕ
| СборкаТоваров.Ссылка = &Ссылка";
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| СборкаТоваровТовары.НомерСтроки КАК НомерСтроки,
| СборкаТоваровТовары.Номенклатура КАК Номенклатура,
| СборкаТоваровТовары.Характеристика КАК Характеристика,
| СборкаТоваровТовары.Назначение КАК Назначение,
| СборкаТоваровТовары.Упаковка КАК Упаковка,
| СборкаТоваровТовары.КоличествоУпаковок КАК КоличествоУпаковок,
| СборкаТоваровТовары.Количество КАК Количество,
| СборкаТоваровТовары.ДоляСтоимости КАК ДоляСтоимости,
| СборкаТоваровТовары.КодСтроки КАК КодСтроки,
| СборкаТоваровТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| СборкаТоваровТовары.Серия КАК Серия,
| СборкаТоваровТовары.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| СборкаТоваровТовары.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ВЫБОР КОГДА СборкаТоваровТовары.Ссылка.ЗаказНаСборку = ЗНАЧЕНИЕ(Документ.ЗаказНаСборку.ПустаяСсылка)
| ТОГДА СборкаТоваровТовары.Ссылка
| ИНАЧЕ СборкаТоваровТовары.Ссылка.ЗаказНаСборку
| КОНЕЦ КАК ЗаказНаСборку
|ИЗ
| Документ.СборкаТоваров.Товары КАК СборкаТоваровТовары
|ГДЕ
| СборкаТоваровТовары.Ссылка = &Ссылка";
КонецЕсли;
Запрос.УстановитьПараметр("Ссылка", Накладная);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат;
КонецФункции
Процедура ЗаполнитьШапкуДокументаПоЗаказу(Объект, ПараметрыЗаполнения, МассивЗаказов) Экспорт
ЗаполнитьЗначенияСвойств(Объект, ПараметрыЗаполнения.РеквизитыШапки);
Дата = ЗаказыСервер.ПолучитьМинимальнуюДатуОтгрузкиЗаказа(МассивЗаказов, ПараметрыЗаполнения.ИмяРегистраЗаказ,
ПараметрыЗаполнения.ИмяПоляЗаказ);
КонецПроцедуры
Процедура ОбновитьЗависимыеРеквизитыТабличнойЧасти(Товары, ПараметрыЗаполнения) Экспорт
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Товары, СтруктураДействий);
КонецПроцедуры
Процедура ЗаполнитьПоЗаказамОрдерам(Товары, Регистратор, ПараметрыЗаполнения, ШтрихкодыУпаковок) Экспорт
НакладнаяЯвляетсяРаспоряжением = ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(ПараметрыЗаполнения.РеквизитыШапки.ВариантПриемкиТоваров);
Для каждого Ресурс Из ПараметрыЗаполнения.Ресурсы Цикл
ПоРасходнымОрдерам = ?(Ресурс = "Комплект",
ПараметрыЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров,
ПараметрыЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров);
Если ПараметрыЗаполнения.ЗаполнятьПоОрдеру Тогда
РаспоряженияДляОрдеров = ПараметрыЗаполнения.МассивЗаказов;
РегистраторДляОрдеров = Регистратор;
Иначе
РаспоряженияДляОрдеров = Неопределено;
РегистраторДляОрдеров = Неопределено;
КонецЕсли;
ТекстЗапросаРегистраЗаказы = РегистрыНакопления.ЗаказыНаСборку.ТекстЗапросаОстатки("ВтДанныеУчета");
ТекстЗапросаЗаказ = Документы.ЗаказНаСборку.ТекстЗапросаТоварыДокумента(Ресурс);
ТекстЗапроса = ТекстЗапросаРегистраЗаказы
+ ОбщегоНазначения.РазделительПакетаЗапросов()
+ ТекстЗапросаЗаказ;
Запрос = Новый Запрос();
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Распоряжения", ПараметрыЗаполнения.МассивЗаказов);
Запрос.УстановитьПараметр("Регистратор", Регистратор);
ТаблицаЗаказы = Запрос.Выполнить().Выгрузить();
ТаблицаЗаказы.Колонки.КОформлению.Имя = "КоличествоВЗаказе";
ТаблицаЗаказы.Колонки.Добавить("ИндексНабора");
ТаблицаЗаказы.ЗаполнитьЗначения(?(Ресурс = "Комплект", 1, 0), "ИндексНабора");
Запрос = Новый Запрос();
Если ПоРасходнымОрдерам Тогда
ТекстЗапросаОсталосьОформить = РегистрыНакопления.ТоварыКОтгрузке.ТекстЗапросаОсталосьОформить();
Иначе
ТекстЗапросаОсталосьОформить = РегистрыНакопления.ТоварыКПоступлению.ТекстЗапросаОсталосьОформитьПоОрдерам();
КонецЕсли;
Запрос.Текст = ТекстЗапросаОсталосьОформить;
Запрос.УстановитьПараметр("Распоряжения", РаспоряженияДляОрдеров);
Запрос.УстановитьПараметр("Регистратор", РегистраторДляОрдеров);
ТаблицаОрдера = Запрос.Выполнить().Выгрузить();
ТаблицаОрдера.Колонки.Количество.Имя = "КоличествоВОрдере";
ТаблицаОрдера.Колонки.Распоряжение.Имя = "ЗаказНаСборку";
Если ТаблицаОрдера.Колонки.Найти("Собирается") <> Неопределено Тогда
ТаблицаОрдера.Колонки.Собирается.Имя = "КоличествоСобирается";
КонецЕсли;
ТаблицаОрдера.Колонки.Добавить("ИндексНабора");
ТаблицаОрдера.ЗаполнитьЗначения(?(Ресурс = "Комплект", 1, 0), "ИндексНабора");
ЗаполнениеПоДаннымПриемки =
ПараметрыЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров И Ресурс <> "Комплект"
Или ПараметрыЗаполнения.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров И Ресурс = "Комплект";
Товары.Индексы.Добавить("ЗаказНаСборку, " + ПараметрыЗаполнения.КлючевыеПоля);
Ключ = "ЗаказНаСборку, КодСтроки," + ПараметрыЗаполнения.КлючевыеПоля;
Ключ = ?(ЗаполнениеПоДаннымПриемки, СтрЗаменить(Ключ, "Серия", ""), Ключ);
Условие = "ПО [Количество]";
НакладныеСервер.РаспределитьКоличество(ТаблицаЗаказы, Товары, "КоличествоВЗаказе", Ключ, Условие, Истина);
НакладныеСервер.ДополнитьТаблицу(ТаблицаЗаказы, Товары, "КоличествоВЗаказе");
Ключ = ?(НакладнаяЯвляетсяРаспоряжением И Не ПоРасходнымОрдерам, "", "ЗаказНаСборку, ") + ПараметрыЗаполнения.КлючевыеПоля;
Ключ = ?(ЗаполнениеПоДаннымПриемки, СтрЗаменить(Ключ, "Серия", ""), Ключ);
ЗаполняемыеПоля = ?(ЗаполнениеПоДаннымПриемки, "Серия", "");
Условие = "[Количество], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Ложь, ЗаполняемыеПоля);
Условие = "НЕ [Количество], [КоличествоВЗаказе], ПО [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Ложь, ЗаполняемыеПоля);
Условие = "[Количество], НЕ [КоличествоВЗаказе]";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(ТаблицаОрдера, Товары, "КоличествоВОрдере", Ключ, Условие, Истина, ЗаполняемыеПоля);
НакладныеСервер.РаспределитьОтклонениеМерныхТоваров(ТаблицаОрдера, Товары, "КоличествоВЗаказе", "КоличествоВОрдере", Ключ);
Если Не ПараметрыЗаполнения.ПоЗаказуНаСборку Тогда
НакладныеСервер.ДополнитьТаблицу(ТаблицаОрдера, Товары, "КоличествоВОрдере");
КонецЕсли;
Если ТаблицаОрдера.Колонки.Найти("КоличествоСобирается") <> Неопределено Тогда
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "КоличествоСобирается", Ключ, "", Истина);
КонецЕсли;
КонецЦикла;
Если ПоРасходнымОрдерам И РаспоряженияДляОрдеров <> Неопределено Тогда
СборкаТоваровЛокализация.ЗаполнитьШтрихКодыУпаковок(РаспоряженияДляОрдеров, Товары, ШтрихкодыУпаковок);
КонецЕсли;
КонецПроцедуры
Процедура ПерезаполнитьТоварыВШапке(Объект, Таблица, Распоряжение = Неопределено) Экспорт
ПолнаяТаблица = Таблица.Скопировать();
Таблица.Свернуть("Номенклатура, Характеристика, Серия, Назначение, Количество");
Объект.Серии.Очистить();
Если ПолнаяТаблица.Количество() > 0 Тогда
ЗаполнитьЗначенияСвойств(Объект, ПолнаяТаблица[0]);
Объект.Количество = ПолнаяТаблица.Итог("Количество");
Для Каждого Строка Из Таблица Цикл
Если ЗначениеЗаполнено(Строка.Серия) И Строка.Количество > 0 Тогда
НоваяСерия = Объект.Серии.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСерия, Строка);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ТипЗнч(Распоряжение) = Тип("ДокументСсылка.ЗаказНаСборку") Тогда
РеквизитыРаспоряжения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Распоряжение,
"Упаковка, Назначение, Обособленно");
Объект.Упаковка = РеквизитыРаспоряжения.Упаковка;
ИспользуетсяОбособленноеОбеспечение = РеквизитыРаспоряжения.Обособленно;
НазначениеШапкиИспользуется = ЗначениеЗаполнено(РеквизитыРаспоряжения.Назначение)
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РеквизитыРаспоряжения.Назначение, "ДвиженияПоСкладскимРегистрам")
И ИспользуетсяОбособленноеОбеспечение;
Если НазначениеШапкиИспользуется Тогда
Объект.Назначение = РеквизитыРаспоряжения.Назначение;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ВариантКомплектации) Тогда
Компонент = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.ВариантКомплектации,
Новый Структура("Номенклатура, Характеристика", "НоменклатураОсновногоКомпонента", "ХарактеристикаОсновногоКомпонента"));
Если ЗначениеЗаполнено(Компонент.Номенклатура) И ЗначениеЗаполнено(Объект.Товары.НайтиСтроки(Компонент)) Тогда
Объект.НоменклатураОсновногоКомпонента = Компонент.Номенклатура;
Объект.ХарактеристикаОсновногоКомпонента = Компонент.Характеристика;
КонецЕсли;
КонецЕсли;
СтруктураДействий = Новый Структура("ПересчитатьКоличествоУпаковок");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(Объект, СтруктураДействий, Неопределено);
КонецПроцедуры
Функция КлючевыеПоляШапкиРаспоряжения() Экспорт
Возврат "Ссылка";
КонецФункции
#КонецОбласти
Функция СтатусыДокументаИзменяемыеИзСписка() Экспорт
Таблица = ОбщегоНазначенияУТ.ТаблицаСтатусовИзменяемыхИзСписка();
Если ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыСборокТоваров") Тогда
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыСборокТоваров.ВРаботе);
ОбщегоНазначенияУТ.ДобавитьСтрокуВТаблицуСтатусовИзменяемыхИзСписка(Таблица, Перечисления.СтатусыСборокТоваров.СобраноРазобрано);
КонецЕсли;
Возврат Таблица;
КонецФункции
Функция ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности(Форма) Экспорт
ПорядокОбработкиДокумента = НаправленияДеятельностиСервер.ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности();
ИменаТабличныхЧастей = Неопределено;
Если Форма.Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
ИменаТабличныхЧастей = "Товары";
КонецЕсли;
ПорядокОбработкиДокумента.ИменаТабличныхЧастейДляЗаполненияНазначения = ИменаТабличныхЧастей;
Если Форма.Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
ИменаТабличныхЧастей = "Товары";
КонецЕсли;
ПорядокОбработкиДокумента.ИменаТабличныхЧастейДляОчисткиНекорректныхНазначений = ИменаТабличныхЧастей;
ТаблицаУсловий = НаправленияДеятельностиСервер.УсловияОбработкиНазначенийВСтроках("ТипНоменклатуры,КодСтроки");
ПорядокОбработкиДокумента.УсловияОбработкиСтрок.Вставить("Товары", ТаблицаУсловий);
ПорядокОбработкиДокумента.ИмяЭлементаФормыОбособленно = "ТоварыОбособленно";
ПорядокОбработкиДокумента.ИмяГруппыЭлементовКомандыОбособленно = "ТоварыГруппаКомандыОбособленно";
ПорядокОбработкиДокумента.ИмяРеквизитаПоЗаказу = "ЗаказНаСборку";
Возврат ПорядокОбработкиДокумента;
КонецФункции
Функция МакетФормыВыбораНазначений() Экспорт
МакетФормы = Справочники.Назначения.МакетФормыВыбораНазначений();
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы);
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.Назначение", "Комплекты");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.Склад";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.Товары.Назначение", "Комплектующие");
ОписаниеКолонок.Колонки.НайтиПоЗначению("Потребность").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.Склад";
Возврат МакетФормы;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Склад)";
КонецПроцедуры
#КонецОбласти
#Область Печать
Функция ПравилаПечатиЗаданияНаОтборРазмещение() Экспорт
ПравилаПечати = Новый Массив;
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
ПравилаПечатиЗадания.ОперацияПоступления = Истина;
ПравилаПечатиЗадания.ИспользуютсяИсправленияДокумента = Истина;
ПравилаПечати.Добавить(ПравилаПечатиЗадания);
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
ПравилаПечатиЗадания.ИспользуютсяИсправленияДокумента = Истина;
ПравилаПечати.Добавить(ПравилаПечатиЗадания);
Возврат ПравилаПечати;
КонецФункции
#КонецОбласти
#Область ВариантыКомплектации
Функция ПараметрыПроверкиКорректностиКомплекта(Объект) Экспорт
ПараметрыПроверки = УчетПрослеживаемыхТоваровЛокализация.ПараметрыПроверкиКорректностиКомплекта();
ЗаполнитьЗначенияСвойств(ПараметрыПроверки, Объект);
ПараметрыПроверки.СборкаКомплекта = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров;
ПараметрыПроверки.ВариантПредставленияНабораВПечатныхФормахВШапке = Ложь;
Возврат ПараметрыПроверки;
КонецФункции
#КонецОбласти
#Область ПодакцизныеТовары
Функция ИспользуютсяПодакцизныеТовары(ДокументОбъект) Экспорт
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьПодакцизныеТовары") Тогда
Возврат Ложь;
КонецЕсли;
Возврат ДокументОбъект.ОблагаетсяАкцизом;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Проведение
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Если ИмяРегистра = "СвободныеОстатки" Тогда
ИсточникиДанных.Вставить("ЗаказНаСборку");
КонецЕсли;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеШапки.Дата КАК Период,
| ДанныеШапки.Номер КАК Номер,
| ДанныеШапки.Ссылка КАК Ссылка,
| ДанныеШапки.Организация КАК Организация,
| ДанныеШапки.Подразделение КАК Подразделение,
| ДанныеШапки.ВариантОбособленногоУчетаТоваров КАК ВариантОбособленногоУчетаТоваров,
| ДанныеШапки.Сделка КАК Сделка,
| ДанныеШапки.ОбособленныйУчетТоваровПоСделке КАК ОбособленныйУчетТоваровПоСделке,
| ДанныеШапки.ЗаказНаСборку КАК ЗаказНаСборку,
| ДанныеШапки.СборкаПоЗаказу КАК СборкаПоЗаказу,
| ДанныеШапки.Дата КАК ДатаРаспоряжения,
| ДанныеШапки.Склад КАК Склад,
| ДанныеШапки.Номенклатура КАК Номенклатура,
| ДанныеШапки.Характеристика КАК Характеристика,
| ДанныеШапки.Количество КАК Количество,
| ДанныеШапки.Назначение КАК Назначение,
| ДанныеШапки.Серия КАК Серия,
| ДанныеШапки.Статус КАК Статус,
| ДанныеШапки.СборкаПодДеятельность КАК СборкаПодДеятельность,
| ДанныеШапки.ОрдернаяСхемаПриОтгрузке КАК ОрдернаяСхемаПриОтгрузке,
| ДанныеШапки.ОрдернаяСхемаПриПоступлении КАК ОрдернаяСхемаПриПоступлении,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеШапки.УказанОсновнойКомпонент КАК УказанОсновнойКомпонент,
| ДанныеШапки.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеШапки.Ответственный КАК Ответственный,
| ДанныеШапки.Комментарий КАК Комментарий,
| ДанныеШапки.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеШапки.Проведен КАК Проведен,
| ДанныеШапки.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.СторнируемыйДокумент КАК СторнируемыйДокумент,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеШапки.НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|ИЗ
| ДанныеДокументаШапка КАК ДанныеШапки";
Результат = Запрос.Выполнить();
СтруктураПараметров = ОбщегоНазначенияУТ.ПерваяСтрокаРезультатаЗапросаВСтруктуру(Результат);
ОбщегоНазначенияУТ.УстановитьПараметрыЗапроса(Запрос, СтруктураПараметров);
НакладнаяЯвляетсяРаспоряжением = ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(СтруктураПараметров.ВариантПриемкиТоваров);
Запрос.УстановитьПараметр("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета", ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета"));
Запрос.УстановитьПараметр("НакладнаяЯвляетсяРаспоряжением", НакладнаяЯвляетсяРаспоряжением);
Запрос.УстановитьПараметр("НомерНаПечать", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(СтруктураПараметров.Номер));
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.СборкаТоваров"));
РасчетСебестоимостиПрикладныеАлгоритмы.ЗаполнитьПараметрыИнициализации(Запрос, СтруктураПараметров);
КонецПроцедуры
Процедура ПолучитьДанныеДокумента(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
Если ДокументСсылка = Неопределено Тогда
Возврат;
КонецЕсли;
СписокЗапросов = Новый Массив;
ТекстЗапросаДанныеДокументаШапка(СписокЗапросов);
ТекстЗапросаДанныеДокументаТаблицаТовары(СписокЗапросов);
ТекстЗапросаДанныеДокументаТаблицаСерии(СписокЗапросов);
ТекстЗапросаДанныеДокументаТаблицаВидыЗапасовОприходование(СписокЗапросов);
ТекстЗапросаДанныеДокументаТаблицаВидыЗапасовСписание(СписокЗапросов);
ТекстЗапроса = СтрСоединить(СписокЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Выполнить();
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаШапка(СписокЗапросов)
ТекстЗапросаШапка =
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.ДатаПоступления КАК ДатаПоступления,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ЕСТЬNULL(Подразделения.ВариантОбособленногоУчетаТоваров, ЗНАЧЕНИЕ(Перечисление.ВариантыОбособленногоУчетаТоваров.ПустаяСсылка)) КАК ВариантОбособленногоУчетаТоваров,
| ДанныеДокумента.Сделка КАК Сделка,
| ЕСТЬNULL(ДанныеДокумента.Сделка.ОбособленныйУчетТоваровПоСделке, ЛОЖЬ) КАК ОбособленныйУчетТоваровПоСделке,
| ДанныеДокумента.ЗаказНаСборку КАК ЗаказНаСборку,
| ДанныеДокумента.ЗаказНаСборку <> ЗНАЧЕНИЕ(Документ.ЗаказНаСборку.ПустаяСсылка) КАК СборкаПоЗаказу,
| ДанныеДокумента.Дата КАК ДатаРаспоряжения,
| ДанныеДокумента.Склад КАК Склад,
| ДанныеДокумента.Номенклатура КАК Номенклатура,
| ДанныеДокумента.Характеристика КАК Характеристика,
| ДанныеДокумента.Количество КАК Количество,
| ДанныеДокумента.АналитикаУчетаНоменклатуры,
| ДанныеДокумента.Назначение КАК Назначение,
| Назначения.ДвиженияПоСкладскимРегистрам КАК НазначениеДвиженияПоСкладскимРегистрам,
| ДанныеДокумента.Серия КАК Серия,
| ДанныеДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ДанныеДокумента.Статус КАК Статус,
| ДанныеДокумента.СборкаПодДеятельность КАК СборкаПодДеятельность,
| Склады.ИспользоватьОрдернуюСхемуПриОтгрузке
| И ДанныеДокумента.Дата >= Склады.ДатаНачалаОрдернойСхемыПриОтгрузке КАК ОрдернаяСхемаПриОтгрузке,
| Склады.ИспользоватьОрдернуюСхемуПриПоступлении
| И ДанныеДокумента.Дата >= Склады.ДатаНачалаОрдернойСхемыПриПоступлении КАК ОрдернаяСхемаПриПоступлении,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров) КАК ЭтоСборкаТоваров,
| ДанныеДокумента.НоменклатураОсновногоКомпонента <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяССылка) КАК УказанОсновнойКомпонент,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.Ответственный КАК Ответственный,
| ДанныеДокумента.Комментарий КАК Комментарий,
| ДанныеДокумента.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеДокумента.Исправление КАК Исправление,
| ДанныеДокумента.СторнируемыйДокумент КАК СторнируемыйДокумент,
| ДанныеДокумента.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| НастройкиХозяйственныхОпераций.Ссылка КАК НастройкаХозяйственнойОперации
|ПОМЕСТИТЬ ДанныеДокументаШапка
|ИЗ
| Документ.СборкаТоваров КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтруктураПредприятия КАК Подразделения
| ПО ДанныеДокумента.Подразделение = Подразделения.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ДанныеДокумента.Склад = Склады.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НастройкиХозяйственныхОпераций КАК НастройкиХозяйственныхОпераций
| ПО ДанныеДокумента.ХозяйственнаяОперация = НастройкиХозяйственныхОпераций.ХозяйственнаяОперация
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Назначения КАК Назначения
| ПО (Назначения.Ссылка = ДанныеДокумента.Назначение)
|ГДЕ
| ДанныеДокумента.Ссылка В(&Ссылка)
|
|ИНДЕКСИРОВАТЬ ПО
| ДанныеДокумента.Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаШапка);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаТаблицаТовары(СписокЗапросов)
ТекстЗапросаТаблицаТовары =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.ДоляСтоимости КАК ДоляСтоимости,
| ТаблицаТовары.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Назначения.ДвиженияПоСкладскимРегистрам КАК НазначениеДвиженияПоСкладскимРегистрам,
| ТаблицаТовары.ИдентификаторСтроки КАК ИдентификаторСтроки
|ПОМЕСТИТЬ ДанныеДокументаТаблицаТовары
|ИЗ
| Документ.СборкаТоваров.Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК Упаковки
| ПО (Упаковки.Ссылка = ТаблицаТовары.Упаковка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Назначения КАК Назначения
| ПО (Назначения.Ссылка = ТаблицаТовары.Назначение)
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| ТаблицаТовары.Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаТаблицаТовары);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаТаблицаСерии(СписокЗапросов)
ТекстЗапросаТаблицаСерии =
"ВЫБРАТЬ
| ТаблицаСерии.Ссылка КАК Ссылка,
| ТаблицаСерии.НомерСтроки КАК НомерСтроки,
| ТаблицаСерии.Номенклатура КАК Номенклатура,
| ТаблицаСерии.Характеристика КАК Характеристика,
| ТаблицаСерии.Назначение КАК Назначение,
| Назначения.ДвиженияПоСкладскимРегистрам КАК НазначениеДвиженияПоСкладскимРегистрам,
| ТаблицаСерии.Серия КАК Серия,
| ТаблицаСерии.Количество КАК Количество
|ПОМЕСТИТЬ ДанныеДокументаТаблицаСерии
|ИЗ
| Документ.СборкаТоваров.Серии КАК ТаблицаСерии
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Назначения КАК Назначения
| ПО Назначения.Ссылка = ТаблицаСерии.Назначение
|ГДЕ
| ТаблицаСерии.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| ТаблицаСерии.Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаТаблицаСерии);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаТаблицаВидыЗапасовОприходование(СписокЗапросов)
ТекстЗапросаТаблицаВидыЗапасовОприходование =
"ВЫБРАТЬ
| ТаблицаВидыЗапасовОприходование.Ссылка КАК Ссылка,
| ТаблицаВидыЗапасовОприходование.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасовОприходование.НомерГТД КАК НомерГТД,
| СУММА(ТаблицаВидыЗапасовОприходование.Количество) КАК Количество,
| СУММА(ТаблицаВидыЗапасовОприходование.КоличествоПоРНПТ) КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасовОприходование.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
|ПОМЕСТИТЬ ДанныеДокументаТаблицаВидыЗапасовОприходование
|ИЗ
| Документ.СборкаТоваров.ВидыЗапасовОприходование КАК ТаблицаВидыЗапасовОприходование
|ГДЕ
| ТаблицаВидыЗапасовОприходование.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ТаблицаВидыЗапасовОприходование.Ссылка,
| ТаблицаВидыЗапасовОприходование.ВидЗапасов,
| ТаблицаВидыЗапасовОприходование.НомерГТД,
| ТаблицаВидыЗапасовОприходование.АналитикаУчетаНоменклатуры
|
|ИНДЕКСИРОВАТЬ ПО
| ТаблицаВидыЗапасовОприходование.Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаТаблицаВидыЗапасовОприходование);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаТаблицаВидыЗапасовСписание(СписокЗапросов)
ТекстЗапросаТаблицаВидыЗапасовСписание =
"ВЫБРАТЬ
| ТаблицаВидыЗапасовСписание.Ссылка КАК Ссылка,
| ТаблицаВидыЗапасовСписание.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасовСписание.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасовСписание.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасовСписание.Количество КАК Количество,
| ТаблицаВидыЗапасовСписание.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасовСписание.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаВидыЗапасовСписание.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
|ПОМЕСТИТЬ ДанныеДокументаТаблицаВидыЗапасовСписание
|ИЗ
| Документ.СборкаТоваров.ВидыЗапасовСписание КАК ТаблицаВидыЗапасовСписание
|ГДЕ
| ТаблицаВидыЗапасовСписание.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| ТаблицаВидыЗапасовСписание.Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаТаблицаВидыЗапасовСписание);
КонецПроцедуры
Процедура ИнициализироватьКлючиАналитикиНоменклатуры(Запрос)
Если Запрос.Параметры.Свойство("КлючиАналитикиУчетаНоменклатурыИнициализированы") Тогда
Возврат;
КонецЕсли;
ЗапросАналитик = Новый Запрос;
ЗапросАналитик.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросАналитик.УстановитьПараметр("Склад", Запрос.Параметры.Склад);
ЗапросАналитик.УстановитьПараметр("ХозяйственнаяОперация", Запрос.Параметры.ХозяйственнаяОперация);
ЗапросАналитик.УстановитьПараметр("Статус", Запрос.Параметры.Статус);
ЗапросАналитик.УстановитьПараметр("УчитыватьСебестоимостьТоваровПоНазначениям", Запрос.Параметры.УчитыватьСебестоимостьТоваровПоНазначениям);
ЗапросАналитик.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.Серия КАК Серия
|ИЗ (
| ВЫБРАТЬ
| &Склад КАК Склад,
| ДанныеДокумента.Номенклатура КАК Номенклатура,
| ДанныеДокумента.Характеристика КАК Характеристика,
| ДанныеДокумента.Назначение КАК Назначение,
| ДанныеДокумента.Серия КАК Серия
| ИЗ
| Документ.СборкаТоваров КАК ДанныеДокумента
| ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| &Склад КАК Склад,
| ДанныеДокумента.Номенклатура КАК Номенклатура,
| ДанныеДокумента.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ДанныеДокумента.Серия КАК Серия
| ИЗ
| Документ.СборкаТоваров КАК ДанныеДокумента
| ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия
| ИЗ
| Документ.СборкаТоваров.ВидыЗапасовСписание КАК ТаблицаВидыЗапасов
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВидыЗапасовВладельца.ВладелецТовара КАК Склад,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия
| ИЗ
| Документ.СборкаТоваров.ВидыЗапасовСписание КАК ТаблицаВидыЗапасов
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Справочник.ВидыЗапасов КАК ВидыЗапасовВладельца
| ПО
| ТаблицаВидыЗапасов.ВидЗапасов.ВидЗапасовВладельца = ВидыЗапасовВладельца.Ссылка
|
| ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
| И ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| И ВидыЗапасовВладельца.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| ) КАК ТаблицаТовары
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО
| ТаблицаТовары.Номенклатура = Аналитика.Номенклатура
| И ТаблицаТовары.Характеристика = Аналитика.Характеристика
| И ТаблицаТовары.Назначение = Аналитика.Назначение
| И ТаблицаТовары.Серия = Аналитика.Серия
| И ТаблицаТовары.Склад = Аналитика.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Аналитика.СтатьяКалькуляции
|ГДЕ
| Аналитика.Номенклатура ЕСТЬ NULL";
Выборка = ЗапросАналитик.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
РегистрыСведений.АналитикаУчетаНоменклатуры.СоздатьКлючАналитики(Выборка)
КонецЦикла;
Запрос.УстановитьПараметр("КлючиАналитикиУчетаНоменклатурыИнициализированы", Истина);
КонецПроцедуры
Функция ТекстЗапросаТаблицаЗаказыНаСборку(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
ИмяРегистра = "ЗаказыНаСборку";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ЧастиТекстаЗапроса = Новый Массив;
Если ДокументОбъект = Неопределено
Или Не ДокументОбъект.ЗаказНаСборку.Пустая() Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| ТаблицаТовары.Дата КАК Период,
| ТаблицаТовары.ЗаказНаСборку КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| ТОГДА ТаблицаТовары.Серия
| КОНЕЦ КАК Серия,
| 1 КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Поступление)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка)
| КОНЕЦ КАК ТипСборки,
| ТаблицаТовары.Количество КАК Заказано,
| ТаблицаТовары.Количество КАК КОформлению
|ИЗ
| ДанныеДокументаШапка КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.СборкаПоЗаказу
| И (ТаблицаТовары.СтатусУказанияСерий <> 10
| ИЛИ ТаблицаТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров))";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или (ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров
И Не ДокументОбъект.ЗаказНаСборку.Пустая()) Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| ДанныеШапки.Дата КАК Период,
| ДанныеШапки.ЗаказНаСборку КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| 1 КАК КодСтроки,
| ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка) КАК ТипСборки,
| ТаблицаТовары.Количество КАК Заказано,
| ТаблицаТовары.Количество КАК КОформлению
|ИЗ
| ДанныеДокументаТаблицаСерии КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаТовары.Ссылка)
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ДанныеШапки.СборкаПоЗаказу
| И ТаблицаТовары.Номенклатура = ДанныеШапки.Номенклатура
| И ТаблицаТовары.Характеристика = ДанныеШапки.Характеристика
| И ТаблицаТовары.Назначение = ДанныеШапки.Назначение
| И ДанныеШапки.СтатусУказанияСерий = 10
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или Не ДокументОбъект.ЗаказНаСборку.Пустая() Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| ДанныеШапки.Дата КАК Период,
| ДанныеШапки.ЗаказНаСборку КАК ЗаказНаСборку,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| ТОГДА ТаблицаТовары.Серия
| КОНЕЦ КАК Серия,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Поступление)
| КОНЕЦ КАК ТипСборки,
| ТаблицаТовары.Количество КАК Заказано,
| ТаблицаТовары.Количество КАК КОформлению
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаТовары.Ссылка)
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ДанныеШапки.СборкаПоЗаказу";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если ЧастиТекстаЗапроса.Количество() = 0 Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса = СтрСоединить(ЧастиТекстаЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ОформитьПоступлениеТоваровПоДвухходовке(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
ЕстьРегистрТоварыНаСкладах = ПроведениеДокументов.ТребуетсяТаблицаДляДвижений("ТоварыНаСкладах", Регистры);
ЕстьРегистрТоварыКПоступлению = ПроведениеДокументов.ТребуетсяТаблицаДляДвижений("ТоварыКПоступлению", Регистры);
Если Не (ЕстьРегистрТоварыНаСкладах
Или ЕстьРегистрТоварыКПоступлению) Тогда
Возврат;
КонецЕсли;
ЧастиТекстаЗапросаТоварыНаСкладах = Новый Массив;
ЧастиТекстаЗапросаТоварыКПоступлению = Новый Массив;
Если ЕстьРегистрТоварыНаСкладах
И (ДокументОбъект = Неопределено
Или (ДокументОбъект.СтатусУказанияСерий <> 10
И ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров
И ДокументОбъект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано)) Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.ЗаказНаСборку КАК Заказ,
| ВЫБОР
| КОГДА ТаблицаТовары.Исправление
| ТОГДА ТаблицаТовары.ИсправляемыйДокумент
| ИНАЧЕ ТаблицаТовары.Ссылка
| КОНЕЦ КАК Накладная,
| ТаблицаТовары.Дата КАК Дата,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ТаблицаТовары.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Склад КАК Отправитель,
| ТаблицаТовары.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерийНаСкладах,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерийТоварыУПартнеров,
| ЛОЖЬ КАК СверхЗаказа,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.СборкаПоЗаказу КАК ПоступлениеПоЗаказам,
| ИСТИНА КАК ЭтоНакладная
|ИЗ
| ДанныеДокументаШапка КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&Ссылка)
| И ТаблицаТовары.СтатусУказанияСерий <> 10
| И ТаблицаТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТаблицаТовары.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)";
ЧастиТекстаЗапросаТоварыНаСкладах.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если ЕстьРегистрТоварыНаСкладах
И (ДокументОбъект = Неопределено
Или (ДокументОбъект.СтатусУказанияСерий = 10
И ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров
И ДокументОбъект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано)) Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ДанныеШапки.Ссылка КАК Ссылка,
| ДанныеШапки.ЗаказНаСборку КАК Заказ,
| ВЫБОР
| КОГДА ДанныеШапки.Исправление
| ТОГДА ДанныеШапки.ИсправляемыйДокумент
| ИНАЧЕ ДанныеШапки.Ссылка
| КОНЕЦ КАК Накладная,
| ДанныеШапки.Дата КАК Дата,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ДанныеШапки.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеШапки.Склад КАК Склад,
| ДанныеШапки.Склад КАК Отправитель,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ДанныеШапки.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ДанныеШапки.СтатусУказанияСерий КАК СтатусУказанияСерийНаСкладах,
| ДанныеШапки.СтатусУказанияСерий КАК СтатусУказанияСерийТоварыУПартнеров,
| ЛОЖЬ КАК СверхЗаказа,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ДанныеШапки.СборкаПоЗаказу КАК ПоступлениеПоЗаказам,
| ИСТИНА КАК ЭтоНакладная
|ИЗ
| ДанныеДокументаТаблицаСерии КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ТаблицаТовары.Ссылка = ДанныеШапки.Ссылка
| И ТаблицаТовары.Номенклатура = ДанныеШапки.Номенклатура
| И ТаблицаТовары.Характеристика = ДанныеШапки.Характеристика
| И ТаблицаТовары.Назначение = ДанныеШапки.Назначение
|ГДЕ
| ТаблицаТовары.Ссылка В(&Ссылка)
| И ДанныеШапки.СтатусУказанияСерий = 10
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ДанныеШапки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)";
ЧастиТекстаЗапросаТоварыНаСкладах.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если ЕстьРегистрТоварыКПоступлению
И (ДокументОбъект = Неопределено
Или (ДокументОбъект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано
И ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров)) Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.ЗаказНаСборку КАК Заказ,
| ВЫБОР
| КОГДА ТаблицаТовары.Исправление
| ТОГДА ТаблицаТовары.ИсправляемыйДокумент
| ИНАЧЕ ТаблицаТовары.Ссылка
| КОНЕЦ КАК Накладная,
| ТаблицаТовары.Дата КАК Дата,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ТаблицаТовары.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Склад КАК Отправитель,
| ТаблицаТовары.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерийНаСкладах,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерийТоварыУПартнеров,
| ЛОЖЬ КАК СверхЗаказа,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.СборкаПоЗаказу КАК ПоступлениеПоЗаказам,
| ИСТИНА КАК ЭтоНакладная
|ИЗ
| ДанныеДокументаШапка КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&Ссылка)
| И ТаблицаТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТаблицаТовары.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)";
ЧастиТекстаЗапросаТоварыКПоступлению.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если (ЕстьРегистрТоварыНаСкладах
Или ЕстьРегистрТоварыКПоступлению)
И (ДокументОбъект = Неопределено
Или (ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров
И ДокументОбъект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано)) Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ДанныеШапки.Ссылка КАК Ссылка,
| ДанныеШапки.ЗаказНаСборку КАК Заказ,
| ВЫБОР
| КОГДА ДанныеШапки.Исправление
| ТОГДА ДанныеШапки.ИсправляемыйДокумент
| ИНАЧЕ ДанныеШапки.Ссылка
| КОНЕЦ КАК Накладная,
| ДанныеШапки.Дата КАК Дата,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ДанныеШапки.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеШапки.Склад КАК Склад,
| ДанныеШапки.Склад КАК Отправитель,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерийНаСкладах,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерийТоварыУПартнеров,
| ДанныеШапки.СборкаПоЗаказу
| И ТаблицаТовары.КодСтроки = 0 КАК СверхЗаказа,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ДанныеШапки.СборкаПоЗаказу КАК ПоступлениеПоЗаказам,
| ИСТИНА КАК ЭтоНакладная
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ТаблицаТовары.Ссылка = ДанныеШапки.Ссылка
|ГДЕ
| ТаблицаТовары.Ссылка В(&Ссылка)
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ДанныеШапки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)";
Если ЕстьРегистрТоварыНаСкладах Тогда
ЧастиТекстаЗапросаТоварыНаСкладах.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если ЕстьРегистрТоварыКПоступлению Тогда
ЧастиТекстаЗапросаТоварыКПоступлению.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
КонецЕсли;
ТекущийОбъектМетаданных = Метаданные.Документы.СборкаТоваров;
Если ЧастиТекстаЗапросаТоварыНаСкладах.Количество() > 0 Тогда
ТекстЗапросаДокумента = СтрСоединить(ЧастиТекстаЗапросаТоварыНаСкладах,
ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
СкладыСервер.ОформитьПоступлениеТоваровПоДвухходовке(Запрос,
ТекстыЗапроса,
"ТоварыНаСкладах",
ТекстЗапросаДокумента,
ТекущийОбъектМетаданных,
"Серии",
"ТаблицаТовары");
КонецЕсли;
Если ЧастиТекстаЗапросаТоварыКПоступлению.Количество() > 0 Тогда
ТекстЗапросаДокумента = СтрСоединить(ЧастиТекстаЗапросаТоварыКПоступлению,
ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
СкладыСервер.ОформитьПоступлениеТоваровПоДвухходовке(Запрос,
ТекстыЗапроса,
"ТоварыКПоступлению",
ТекстЗапросаДокумента,
ТекущийОбъектМетаданных,
"Серии",
"ТаблицаТовары");
КонецЕсли;
КонецПроцедуры
Процедура ОформитьПриобретениеТоваровПоДвухходовке(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
Если ДокументОбъект = Неопределено
Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.ЗаказНаСборку КАК Заказ,
| ВЫБОР
| КОГДА ТаблицаТовары.Исправление
| ТОГДА ТаблицаТовары.ИсправляемыйДокумент
| ИНАЧЕ ТаблицаТовары.Ссылка
| КОНЕЦ КАК Накладная,
| ТаблицаТовары.Исправление КАК Исправление,
| ТаблицаТовары.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ТаблицаТовары.Дата КАК Дата,
| ТаблицаТовары.Дата КАК ДатаПланируемогоПоступления,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ТаблицаТовары.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Склад КАК Отправитель,
| ТаблицаТовары.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ЛОЖЬ КАК СверхЗаказа,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.СборкаПоЗаказу КАК ПоступлениеПоЗаказам,
| ИСТИНА КАК ЭтоНакладная
|ИЗ
| ДанныеДокументаШапка КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&Ссылка)
| И ТаблицаТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)";
СкладыСервер.ОформитьПриобретениеТоваровПоДвухходовке(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента,
"ТаблицаТовары");
КонецЕсли;
Если ДокументОбъект = Неопределено
Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ДанныеШапки.Ссылка КАК Ссылка,
| ДанныеШапки.ЗаказНаСборку КАК Заказ,
| ВЫБОР
| КОГДА ДанныеШапки.Исправление
| ТОГДА ДанныеШапки.ИсправляемыйДокумент
| ИНАЧЕ ДанныеШапки.Ссылка
| КОНЕЦ КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеШапки.Дата КАК Дата,
| ДанныеШапки.Дата КАК ДатаПланируемогоПоступления,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ДанныеШапки.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеШапки.Склад КАК Склад,
| ДанныеШапки.Склад КАК Отправитель,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ДанныеШапки.СборкаПоЗаказу
| И ТаблицаТовары.КодСтроки = 0 КАК СверхЗаказа,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ДанныеШапки.СборкаПоЗаказу КАК ПоступлениеПоЗаказам,
| ИСТИНА КАК ЭтоНакладная
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаТовары.Ссылка)
|ГДЕ
| ТаблицаТовары.Ссылка В(&Ссылка)
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)";
СкладыСервер.ОформитьПриобретениеТоваровПоДвухходовке(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента,
"ТаблицаТовары");
КонецЕсли;
КонецПроцедуры
Процедура ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
Если ДокументОбъект = Неопределено
Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров
И (ДокументОбъект.Статус = Перечисления.СтатусыСборокТоваров.ВРаботе
Или ДокументОбъект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано) Тогда
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ТаблицаТовары.Исправление
| ТОГДА ТаблицаТовары.ИсправляемыйДокумент
| ИНАЧЕ ТаблицаТовары.Ссылка
| КОНЕЦ КАК Накладная,
| ТаблицаТовары.Исправление КАК Исправление,
| ТаблицаТовары.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ТаблицаТовары.ЗаказНаСборку КАК Заказ,
| ВЫБОР
| КОГДА ТаблицаТовары.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ТаблицаТовары.ДатаПоступления
| ИНАЧЕ ТаблицаТовары.Дата
| КОНЕЦ КАК Дата,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ТаблицаТовары.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Склад КАК Отправитель,
| ТаблицаТовары.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ЛОЖЬ КАК СверхЗаказа,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.СборкаПоЗаказу КАК ПоступлениеПоЗаказам,
| ИСТИНА КАК ЭтоНакладная
|ИЗ
| ДанныеДокументаШапка КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка В(&Ссылка)
| И ТаблицаТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТаблицаТовары.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.ВРаботе), ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано))";
СкладыСервер.ЗапланироватьПоступлениеТоваров(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента,
"ТаблицаТовары");
КонецЕсли;
Если ДокументОбъект = Неопределено
Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров
И (ДокументОбъект.Статус = Перечисления.СтатусыСборокТоваров.ВРаботе
Или ДокументОбъект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано) Тогда
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ДанныеШапки.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ДанныеШапки.Исправление
| ТОГДА ДанныеШапки.ИсправляемыйДокумент
| ИНАЧЕ ДанныеШапки.Ссылка
| КОНЕЦ КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеШапки.ЗаказНаСборку КАК Заказ,
| ВЫБОР
| КОГДА ДанныеШапки.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеШапки.ДатаПоступления
| ИНАЧЕ ДанныеШапки.Дата
| КОНЕЦ КАК Дата,
| ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка) КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ДанныеШапки.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ДанныеШапки.Склад КАК Склад,
| ДанныеШапки.Склад КАК Отправитель,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ДанныеШапки.СборкаПоЗаказу
| И ТаблицаТовары.КодСтроки = 0 КАК СверхЗаказа,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ДанныеШапки.СборкаПоЗаказу КАК ПоступлениеПоЗаказам,
| ИСТИНА КАК ЭтоНакладная
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаТовары.Ссылка)
|ГДЕ
| ТаблицаТовары.Ссылка В(&Ссылка)
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ДанныеШапки.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.ВРаботе), ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано))";
СкладыСервер.ЗапланироватьПоступлениеТоваров(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента,
"ТаблицаТовары");
КонецЕсли;
КонецПроцедуры
Функция ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
ИмяРегистра = "ДвиженияСерийТоваров";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ЧастиТекстаЗапроса = Новый Массив;
Если ДокументОбъект = Неопределено
Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.НазначениеДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаТовары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Склад КАК Отправитель,
| ТаблицаТовары.Склад КАК Получатель,
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаПолучателя,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаСобранныхКомплектов) КАК СкладскаяОперация,
| ТаблицаТовары.Ссылка КАК Документ,
| ТаблицаТовары.Дата КАК Период,
| НЕ ТаблицаТовары.ОрдернаяСхемаПриПоступлении КАК ЭтоСкладскоеДвижение
|ИЗ
| ДанныеДокументаШапка КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И ТаблицаТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ДанныеШапки.Номенклатура,
| ДанныеШапки.Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.НазначениеДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаТовары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Количество,
| ДанныеШапки.Склад,
| ДанныеШапки.Склад,
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка),
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаСобранныхКомплектов),
| ДанныеШапки.Ссылка,
| ДанныеШапки.Дата,
| НЕ ДанныеШапки.ОрдернаяСхемаПриПоступлении
|ИЗ
| ДанныеДокументаТаблицаСерии КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ТаблицаТовары.Ссылка = ДанныеШапки.Ссылка
| И ТаблицаТовары.Номенклатура = ДанныеШапки.Номенклатура
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.НазначениеДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаТовары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Количество,
| ДанныеШапки.Склад,
| ДанныеШапки.Номенклатура,
| ДанныеШапки.Характеристика,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтгрузкаКомплектующихДляСборки),
| ДанныеШапки.Ссылка,
| ДанныеШапки.Дата,
| НЕ ДанныеШапки.ОрдернаяСхемаПриОтгрузке
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаТовары.Ссылка)
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| МАКСИМУМ(ТаблицаТовары.Номенклатура),
| МАКСИМУМ(ТаблицаТовары.Характеристика),
| ВЫБОР
| КОГДА ЕСТЬNULL(МАКСИМУМ(ТаблицаТовары.НазначениеДвиженияПоСкладскимРегистрам), ЛОЖЬ)
| ТОГДА МАКСИМУМ(ТаблицаТовары.Назначение)
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ,
| МАКСИМУМ(ТаблицаТовары.Серия),
| МАКСИМУМ(ТаблицаТовары.Количество),
| ДанныеШапки.Склад,
| ДанныеШапки.Номенклатура,
| ДанныеШапки.Характеристика,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтгрузкаКомплектующихДляСборки),
| ДанныеШапки.Ссылка,
| ДанныеШапки.Дата,
| НЕ ДанныеШапки.ОрдернаяСхемаПриОтгрузке
|ИЗ
| ДанныеДокументаТаблицаСерии КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаТаблицаТовары КАК ТаблицаОграничения
| ПО (ТаблицаОграничения.Ссылка = ТаблицаТовары.Ссылка)
| И (ТаблицаОграничения.Номенклатура = ТаблицаТовары.Номенклатура)
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаТовары.Ссылка)
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
|
|СГРУППИРОВАТЬ ПО
| ДанныеШапки.Ссылка,
| ТаблицаТовары.НомерСтроки,
| ДанныеШапки.Склад,
| ДанныеШапки.Номенклатура,
| ДанныеШапки.Характеристика,
| ДанныеШапки.Дата,
| ДанныеШапки.ОрдернаяСхемаПриОтгрузке";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.НазначениеДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаТовары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Количество КАК Количество,
| ДанныеШапки.Склад КАК Отправитель,
| ДанныеШапки.Склад КАК Получатель,
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаПолучателя,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаКомплектующихПослеРазборки) КАК СкладскаяОперация,
| ДанныеШапки.Ссылка КАК Документ,
| ДанныеШапки.Дата КАК Период,
| НЕ ДанныеШапки.ОрдернаяСхемаПриПоступлении КАК ЭтоСкладскоеДвижение
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаТовары.Ссылка)
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| МАКСИМУМ(ТаблицаТовары.Номенклатура),
| МАКСИМУМ(ТаблицаТовары.Характеристика),
| ВЫБОР
| КОГДА ЕСТЬNULL(МАКСИМУМ(ТаблицаТовары.НазначениеДвиженияПоСкладскимРегистрам), ЛОЖЬ)
| ТОГДА МАКСИМУМ(ТаблицаТовары.Назначение)
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ,
| МАКСИМУМ(ТаблицаТовары.Серия),
| МАКСИМУМ(ТаблицаТовары.Количество),
| ДанныеШапки.Склад,
| ДанныеШапки.Склад,
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка),
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ПриемкаКомплектующихПослеРазборки),
| ДанныеШапки.Ссылка,
| ДанныеШапки.Дата,
| НЕ ДанныеШапки.ОрдернаяСхемаПриОтгрузке
|ИЗ
| ДанныеДокументаТаблицаСерии КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаТаблицаТовары КАК ТаблицаОграничения
| ПО (ТаблицаОграничения.Ссылка = ТаблицаТовары.Ссылка)
| И (ТаблицаОграничения.Номенклатура = ТаблицаТовары.Номенклатура)
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаТовары.Ссылка)
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
|
|СГРУППИРОВАТЬ ПО
| ДанныеШапки.Ссылка,
| ТаблицаТовары.НомерСтроки,
| ДанныеШапки.Склад,
| ДанныеШапки.Дата,
| ДанныеШапки.ОрдернаяСхемаПриОтгрузке,
| ДанныеШапки.Склад";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.НазначениеДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаТовары.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Количество,
| ТаблицаТовары.Склад,
| НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка),
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтгрузкаКомплектовДляРазборки),
| ТаблицаТовары.Ссылка,
| ТаблицаТовары.Дата,
| НЕ ТаблицаТовары.ОрдернаяСхемаПриОтгрузке
|ИЗ
| ДанныеДокументаШапка КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ТаблицаТовары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И ТаблицаТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ДанныеШапки.Номенклатура,
| ДанныеШапки.Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.НазначениеДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ДанныеШапки.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Количество,
| ДанныеШапки.Склад,
| НЕОПРЕДЕЛЕНО,
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка),
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтгрузкаКомплектовДляРазборки),
| ДанныеШапки.Ссылка,
| ДанныеШапки.Дата,
| НЕ ДанныеШапки.ОрдернаяСхемаПриОтгрузке
|ИЗ
| ДанныеДокументаТаблицаСерии КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ТаблицаТовары.Ссылка = ДанныеШапки.Ссылка
| И ТаблицаТовары.Номенклатура = ДанныеШапки.Номенклатура
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
ТекстЗапроса = СтрСоединить(ЧастиТекстаЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДатыПоступленияТоваровОрганизаций(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДатыПоступленияТоваровОрганизаций";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ИнициализироватьВтТаблицаКомплекты(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеШапки.Дата КАК ДатаПоступления,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Назначение КАК Назначение,
| ТаблицаТовары.ВидЗапасов КАК ВидЗапасов,
| ТаблицаТовары.НомерГТД КАК НомерГТД
|ИЗ
| ВтТаблицаКомплекты КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДатыПоступленияТоваровОрганизаций КАК ПоступленияТоваров
| ПО ТаблицаТовары.ВидЗапасов = ПоступленияТоваров.ВидЗапасов
| И ТаблицаТовары.Номенклатура = ПоступленияТоваров.Номенклатура
| И ТаблицаТовары.Характеристика = ПоступленияТоваров.Характеристика
| И ТаблицаТовары.Серия = ПоступленияТоваров.Серия
| И ТаблицаТовары.Назначение = ПоступленияТоваров.Назначение
| И ТаблицаТовары.НомерГТД = ПоступленияТоваров.НомерГТД
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаТовары.Ссылка)
|ГДЕ
| (ПоступленияТоваров.ДатаПоступления ЕСТЬ NULL
| ИЛИ ПоступленияТоваров.ДатаПоступления < НАЧАЛОПЕРИОДА(ДанныеШапки.Дата, ДЕНЬ))
| И ДанныеШапки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)
|
|УПОРЯДОЧИТЬ ПО
| ТаблицаТовары.ВидЗапасов,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Назначение,
| ТаблицаТовары.НомерГТД";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура УстановитьПараметрЗапросаАналитикаКомплекта(Запрос)
Если Запрос.Параметры.Свойство("АналитикаКомплекта") Тогда
Возврат;
КонецЕсли;
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
СтруктураПолей = Новый Структура("Номенклатура, Характеристика, Серия, Склад, Назначение");
ЗаполнитьЗначенияСвойств(СтруктураПолей, Запрос.Параметры);
Запрос.УстановитьПараметр("АналитикаКомплекта",
РегистрыСведений.АналитикаУчетаНоменклатуры.ЗначениеКлючаАналитики(СтруктураПолей));
СтруктураПолей.Назначение = Справочники.Назначения.ПустаяСсылка();
Запрос.УстановитьПараметр("АналитикаКомплектаБезНазначения",
РегистрыСведений.АналитикаУчетаНоменклатуры.ЗначениеКлючаАналитики(СтруктураПолей));
КонецПроцедуры
Процедура УстановитьПараметрВидЗапасаСобираемогоКомплекта(Запрос)
Если Запрос.Параметры.Свойство("ВидЗапасаСобираемогоКомплекта") Тогда
Возврат;
КонецЕсли;
ЗапросВидаЗапаса = Новый Запрос;
ЗапросВидаЗапаса.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| СборкаТоваровВидыЗапасовОприходование.ВидЗапасов
|ИЗ
| Документ.СборкаТоваров.ВидыЗапасовОприходование КАК СборкаТоваровВидыЗапасовОприходование
|ГДЕ
| СборкаТоваровВидыЗапасовОприходование.Ссылка = &Ссылка
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)";
ЗапросВидаЗапаса.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросВидаЗапаса.УстановитьПараметр("ХозяйственнаяОперация", Запрос.Параметры.ХозяйственнаяОперация);
Выборка = ЗапросВидаЗапаса.Выполнить().Выбрать();
Запрос.УстановитьПараметр("ВидЗапасаСобираемогоКомплекта",
?(Выборка.Следующий(), Выборка.ВидЗапасов, Справочники.ВидыЗапасов.ПустаяСсылка()));
КонецПроцедуры
Процедура ИнициализироватьВтТаблицаКомплекты(Запрос)
Если Запрос.Параметры.Свойство("ВтТаблицаКомплектыИнициализирована") Тогда
Возврат;
КонецЕсли;
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
ЗапросВтТаблицаКомплекты = Новый Запрос;
ЗапросВтТаблицаКомплекты.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;
ЗапросВтТаблицаКомплекты.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросВтТаблицаКомплекты.УстановитьПараметр("Период", Запрос.Параметры.Период);
ЗапросВтТаблицаКомплекты.УстановитьПараметр("ХозяйственнаяОперация", Запрос.Параметры.ХозяйственнаяОперация);
ЗапросВтТаблицаКомплекты.УстановитьПараметр("УказанОсновнойКомпонент", Запрос.Параметры.УказанОсновнойКомпонент);
ЗапросВтТаблицаКомплекты.УстановитьПараметр("Организация", Запрос.Параметры.Организация);
СформироватьВтТаблицаАналитикУчетаПартий(ЗапросВтТаблицаКомплекты);
ЗапросВтТаблицаКомплекты.Текст =
"ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| МИНИМУМ(Товары.НомерСтроки) КАК НомерСтроки,
| ""Товары"" КАК ИмяТабличнойЧасти,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.Серия КАК Серия,
| СУММА(Товары.ДоляСтоимости) КАК ДоляСтоимости,
| СУММА(Товары.Количество) КАК Количество,
| Товары.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
|ПОМЕСТИТЬ ВтТоварыДокумента
|ИЗ
| ДанныеДокументаТаблицаТовары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = Товары.Ссылка)
|ГДЕ
| Товары.Ссылка = &Ссылка
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
|
|СГРУППИРОВАТЬ ПО
| Товары.Ссылка,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.Серия,
| Товары.АналитикаУчетаНоменклатуры
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Шапка.Ссылка,
| 0,
| ""Шапка"",
| Шапка.Номенклатура,
| Шапка.Характеристика,
| Шапка.Назначение,
| Шапка.Серия,
| 1,
| Шапка.Количество,
| Шапка.АналитикаУчетаНоменклатуры
|ИЗ
| ДанныеДокументаШапка КАК Шапка
|ГДЕ
| Шапка.Ссылка = &Ссылка
| И Шапка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
|;
|
|
|ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ТоварыДокумента.НомерСтроки КАК НомерСтроки,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТаблицаАналитикУчетаПартий.АналитикаУчетаПартий КАК АналитикаУчетаПартий,
| ТоварыДокумента.Количество КАК Количество,
| ТоварыДокумента.ДоляСтоимости КАК ДоляСтоимости,
| ТоварыДокумента.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| 0 КАК КоличествоПоРНПТ,
| ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка) КАК ВидЗапасов,
| ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка) КАК НомерГТД
|ИЗ
| ВтТоварыДокумента КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТаблицаАналитикУчетаПартий КАК ТаблицаАналитикУчетаПартий
| ПО ТоварыДокумента.НомерСтроки = ТаблицаАналитикУчетаПартий.НомерСтроки
| И ТоварыДокумента.ИмяТабличнойЧасти = ТаблицаАналитикУчетаПартий.ИмяТабличнойЧасти
|УПОРЯДОЧИТЬ ПО
| ТоварыДокумента.АналитикаУчетаНоменклатуры,
| ТоварыДокумента.Количество УБЫВ
|;
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.Ссылка КАК Ссылка,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.КоличествоПоРНПТ > 0
| ТОГДА ВЫРАЗИТЬ(ТаблицаВидыЗапасов.КоличествоПоРНПТ / ТаблицаВидыЗапасов.Количество КАК ЧИСЛО(23, 11))
| ИНАЧЕ
| 0
| КОНЕЦ КАК КоэффициентРНПТ
|ИЗ
| ДанныеДокументаТаблицаВидыЗапасовОприходование КАК ТаблицаВидыЗапасов
|;
|
|
|УНИЧТОЖИТЬ ВтТоварыДокумента";
Результат = ЗапросВтТаблицаКомплекты.ВыполнитьПакет();
ТоварыКЗаполнению = Результат[1].Выгрузить();
ВидыЗапасовКРаспределению = Результат[2].Выгрузить();
ВидыЗапасовКРаспределению.Индексы.Добавить("АналитикаУчетаНоменклатуры");
Квалификатор = Новый КвалификаторыЧисла(23, 11);
ТоварыКЗаполнению.Колонки.КоличествоПоРНПТ.Имя = "КоличествоПоРНПТБезТипизации";
ТоварыКЗаполнению.Колонки.Добавить("КоличествоПоРНПТ", Новый ОписаниеТипов("Число", Квалификатор));
СтруктураПоиска = Новый Структура("АналитикаУчетаНоменклатуры");
Для Индекс = 0 По ТоварыКЗаполнению.Количество() - 1 Цикл
ТоварКЗаполнению = ТоварыКЗаполнению[Индекс];
ЗаполнитьЗначенияСвойств(СтруктураПоиска, ТоварКЗаполнению);
НайденныеСтроки = ВидыЗапасовКРаспределению.НайтиСтроки(СтруктураПоиска);
Если НайденныеСтроки.Количество() = 0 Тогда
ТоварКЗаполнению.Количество = 0;
ТоварКЗаполнению.КоличествоПоРНПТ = 0;
Продолжить;
КонецЕсли;
ИсходноеКоличество = ТоварКЗаполнению.Количество;
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
Если НайденнаяСтрока.Количество = 0 Тогда
Продолжить;
КонецЕсли;
Если ИсходноеКоличество = 0 Тогда
Продолжить;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ТоварКЗаполнению, НайденнаяСтрока, "ВидЗапасов, НомерГТД");
Если ТоварКЗаполнению.Количество = НайденнаяСтрока.Количество Тогда
ЗаполнитьЗначенияСвойств(ТоварКЗаполнению, НайденнаяСтрока, "Количество, КоличествоПоРНПТ");
ТоварКЗаполнению.ДоляСтоимости = ТоварКЗаполнению.ДоляСтоимости * НайденнаяСтрока.Количество / ТоварКЗаполнению.Количество;
НайденнаяСтрока.Количество = 0;
НайденнаяСтрока.КоличествоПоРНПТ = 0;
ИсходноеКоличество = 0;
ИначеЕсли ТоварКЗаполнению.Количество < НайденнаяСтрока.Количество Тогда
ТоварКЗаполнению.КоличествоПоРНПТ = ТоварКЗаполнению.Количество * НайденнаяСтрока.КоэффициентРНПТ;
ТоварКЗаполнению.ДоляСтоимости = ТоварКЗаполнению.ДоляСтоимости * НайденнаяСтрока.Количество / ТоварКЗаполнению.Количество;
ИсходноеКоличество = 0;
НайденнаяСтрока.Количество = НайденнаяСтрока.Количество - ТоварКЗаполнению.Количество;
НайденнаяСтрока.КоличествоПоРНПТ = НайденнаяСтрока.КоличествоПоРНПТ - ТоварКЗаполнению.КоличествоПоРНПТ;
ИначеЕсли ТоварКЗаполнению.Количество > НайденнаяСтрока.Количество Тогда
НоваяСтрокаТовары = ТоварыКЗаполнению.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаТовары, ТоварКЗаполнению);
ЗаполнитьЗначенияСвойств(НоваяСтрокаТовары, НайденнаяСтрока, "Количество, КоличествоПоРНПТ");
НоваяСтрокаТовары.ДоляСтоимости = НоваяСтрокаТовары.ДоляСтоимости * НайденнаяСтрока.Количество / НоваяСтрокаТовары.Количество;
ИсходноеКоличество = ИсходноеКоличество - НоваяСтрокаТовары.Количество;
ТоварКЗаполнению.Количество = ТоварКЗаполнению.Количество - НайденнаяСтрока.Количество;
ТоварКЗаполнению.КоличествоПоРНПТ = ТоварКЗаполнению.КоличествоПоРНПТ - НайденнаяСтрока.КоличествоПоРНПТ;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ЗапросВтТаблицаКомплектыРезультат = Новый Запрос();
ЗапросВтТаблицаКомплектыРезультат.МенеджерВременныхТаблиц = ЗапросВтТаблицаКомплекты.МенеджерВременныхТаблиц;
ЗапросВтТаблицаКомплектыРезультат.Текст =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ТоварыДокумента.НомерСтроки КАК НомерСтроки,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.ВидЗапасов КАК ВидЗапасов,
| ТоварыДокумента.НомерГТД КАК НомерГТД,
| ТоварыДокумента.АналитикаУчетаПартий КАК АналитикаУчетаПартий,
| ТоварыДокумента.Количество КАК Количество,
| ТоварыДокумента.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТоварыДокумента.ДоляСтоимости КАК ДоляСтоимости,
| ТоварыДокумента.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
|ПОМЕСТИТЬ ВтТаблицаКомплекты
|ИЗ
| &ВтТоварыДокумента КАК ТоварыДокумента";
ЗапросВтТаблицаКомплектыРезультат.УстановитьПараметр("ВтТоварыДокумента", ТоварыКЗаполнению);
ЗапросВтТаблицаКомплектыРезультат.Выполнить();
Запрос.УстановитьПараметр("ВтТаблицаКомплектыИнициализирована", Истина);
КонецПроцедуры
Процедура ИнициализироватьТоварыОрганизаций(Запрос)
Если Запрос.Параметры.Свойство("ТоварыОрганизацийИнициализированы") Тогда
Возврат;
КонецЕсли;
ИнициализироватьВтТаблицаКомплекты(Запрос);
ИнициализироватьВтВидыЗапасов(Запрос);
УстановитьПараметрЗапросаАналитикаКомплекта(Запрос);
УстановитьПараметрВидЗапасаСобираемогоКомплекта(Запрос);
ЗапросТоваров = Новый Запрос;
ЗапросТоваров.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;
ЗапросТоваров.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросТоваров.УстановитьПараметр("ХозяйственнаяОперация", Запрос.Параметры.ХозяйственнаяОперация);
ЗапросТоваров.УстановитьПараметр("УказанОсновнойКомпонент", Запрос.Параметры.УказанОсновнойКомпонент);
ЗапросТоваров.УстановитьПараметр("Период", Запрос.Параметры.Период);
ЗапросТоваров.УстановитьПараметр("Склад", Запрос.Параметры.Склад);
ЗапросТоваров.УстановитьПараметр("Организация", Запрос.Параметры.Организация);
ЗапросТоваров.УстановитьПараметр("СборкаПодДеятельность", Запрос.Параметры.СборкаПодДеятельность);
ЗапросТоваров.УстановитьПараметр("ВидЗапасаКомплекта", Запрос.Параметры.ВидЗапасаСобираемогоКомплекта);
ЗапросТоваров.УстановитьПараметр("АналитикаКомплекта", Запрос.Параметры.АналитикаКомплекта);
ЗапросТоваров.УстановитьПараметр("Статус", Запрос.Параметры.Статус);
ЗапросТоваров.Текст =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Склад КАК Склад,
| &Организация КАК ОрганизацияОтгрузки,
| &Организация КАК Организация,
| ТаблицаТовары.ВидЗапасов КАК ВидЗапасов,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.НомерГТД КАК НомерГТД,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК НалогообложениеНДС,
| ТаблицаТовары.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК КорВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаНоменклатуры,
|
| НЕОПРЕДЕЛЕНО КАК ИсходныйВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК АналитикаНоменклатурыКомитента,
| ИСТИНА КАК Первичное,
| ТаблицаТовары.ДоляСтоимости КАК ДоляСтоимости,
|
| """" КАК ИдентификаторСтроки
|
|ИЗ
| ВтТаблицаКомплекты КАК ТаблицаТовары
|ГДЕ
| &Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Ссылка,
| ТаблицаВидыЗапасов.НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период,
| &Склад,
| &Организация КАК ОрганизацияОтгрузки,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.РеализацияЗапасовДругойОрганизации
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасовВладельца.Организация
| ИНАЧЕ &Организация
| КОНЕЦ КАК Организация,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.РеализацияЗапасовДругойОрганизации
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасовВладельца
| ИНАЧЕ ТаблицаВидыЗапасов.ВидЗапасов
| КОНЕЦ КАК ВидЗапасов,
| ТаблицаВидыЗапасов.Номенклатура,
| ТаблицаВидыЗапасов.Характеристика,
| ТаблицаВидыЗапасов.НомерГТД,
| ТаблицаВидыЗапасов.Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ВидДеятельностиНДС КАК НалогообложениеНДС,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры,
| (ВЫБОР ТаблицаВидыЗапасов.ТипЗапасов
| КОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ВЫБОР &ХозяйственнаяОперация
| КОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров) ТОГДА &ВидЗапасаКомплекта
| ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ
| КОНЕЦ) КАК КорВидЗапасов,
| (ВЫБОР &ХозяйственнаяОперация
| КОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров) ТОГДА &АналитикаКомплекта
| ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ)КАК КорАналитикаУчетаНоменклатуры,
|
| ТаблицаВидыЗапасов.ВидЗапасов КАК ИсходныйВидЗапасов,
| ТаблицаВидыЗапасов.АналитикаНоменклатурыКомитента,
| ЛОЖЬ КАК Первичное,
| 1 КАК ДоляСтоимости,
|
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки
|
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки,
| Номенклатура,
| Характеристика,
| ВидЗапасов,
| НомерГТД";
Результат = ЗапросТоваров.ВыполнитьПакет();
ТаблицаТоварыОрганизаций = Результат[0].Выгрузить();
ЗаполнитьКорАналитикуУчетаНомеклатуры(ТаблицаТоварыОрганизаций, Запрос.Параметры);
ЗапросТоваров.УстановитьПараметр("ТаблицаТоварыОрганизаций", ТаблицаТоварыОрганизаций);
ЗапросТоваров.Текст =
"ВЫБРАТЬ
| ТоварыОрганизаций.Ссылка,
| ТоварыОрганизаций.НомерСтроки,
| ТоварыОрганизаций.ВидДвижения,
| ТоварыОрганизаций.Период,
| ТоварыОрганизаций.Склад,
| ТоварыОрганизаций.ОрганизацияОтгрузки,
| ТоварыОрганизаций.Организация,
| ТоварыОрганизаций.ВидЗапасов,
| ТоварыОрганизаций.Номенклатура,
| ТоварыОрганизаций.Характеристика,
| ТоварыОрганизаций.НомерГТД,
| ТоварыОрганизаций.Количество,
| ТоварыОрганизаций.КоличествоПоРНПТ,
| ТоварыОрганизаций.ХозяйственнаяОперация,
| ТоварыОрганизаций.НалогообложениеНДС,
| ТоварыОрганизаций.АналитикаУчетаНоменклатуры,
| ТоварыОрганизаций.КорВидЗапасов,
| ТоварыОрганизаций.КорАналитикаУчетаНоменклатуры,
| ТоварыОрганизаций.ИсходныйВидЗапасов,
| ТоварыОрганизаций.АналитикаНоменклатурыКомитента,
| ТоварыОрганизаций.Первичное,
| ТоварыОрганизаций.ДоляСтоимости,
| ТоварыОрганизаций.ИдентификаторСтроки
|ПОМЕСТИТЬ ВтТоварыОрганизаций
|ИЗ
| &ТаблицаТоварыОрганизаций КАК ТоварыОрганизаций";
ЗапросТоваров.ВыполнитьПакет();
Запрос.УстановитьПараметр("ТоварыОрганизацийИнициализированы", Истина);
КонецПроцедуры
Функция ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыОрганизаций";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ИнициализироватьТоварыОрганизаций(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ
| ТоварыОрганизаций.НомерСтроки,
| ТоварыОрганизаций.ВидДвижения,
| ТоварыОрганизаций.Период,
| ТоварыОрганизаций.Склад,
| ТоварыОрганизаций.ОрганизацияОтгрузки,
| ТоварыОрганизаций.Организация,
| ТоварыОрганизаций.ВидЗапасов,
| ТоварыОрганизаций.Номенклатура,
| ТоварыОрганизаций.Характеристика,
| ТоварыОрганизаций.НомерГТД,
| ТоварыОрганизаций.Количество,
| ТоварыОрганизаций.КоличествоПоРНПТ,
| ТоварыОрганизаций.ХозяйственнаяОперация,
| ТоварыОрганизаций.НалогообложениеНДС,
| ТоварыОрганизаций.АналитикаУчетаНоменклатуры,
| ТоварыОрганизаций.КорВидЗапасов,
| ТоварыОрганизаций.КорАналитикаУчетаНоменклатуры,
| ТоварыОрганизаций.Первичное,
| ТоварыОрганизаций.ДоляСтоимости
|ИЗ
| ВтТоварыОрганизаций КАК ТоварыОрганизаций";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыОрганизацийКПередаче(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыОрганизацийКПередаче";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ИнициализироватьВтВидыЗапасов(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| ДанныеШапки.Дата КАК Период,
| ДанныеШапки.Склад КАК Склад,
| ТаблицаВидыЗапасов.ВидЗапасовВладельцаОрганизация КАК ОрганизацияВладелец,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасовПродавца,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаВидыЗапасов.Ссылка)
|ГДЕ
| ТаблицаВидыЗапасов.РеализацияЗапасовДругойОрганизации
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыКОформлениюОтчетовКомитенту(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыКОформлениюОтчетовКомитенту";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ИнициализироватьВтВидыЗапасов(Запрос);
Если Не Запрос.Параметры.Свойство("ТоварыОрганизацийИнициализированы") Тогда
ИнициализироватьТоварыОрганизаций(Запрос);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| ДанныеШапки.Дата КАК Период,
| &Организация КАК Организация,
| ВидыЗапасов.Валюта КАК Валюта,
| ВидыЗапасов.Ссылка КАК ВидЗапасов,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| 0 КАК Количество,
| ТаблицаВидыЗапасов.Количество КАК КоличествоСписано,
| 0 КАК СуммаВыручки,
| 0 КАК СуммаВыручкиРегл,
| 0 КАК СуммаВыручкиУпр,
| 0 КАК КоличествоКОформлению,
| 0 КАК КоличествоКОформлениюПоРНПТ,
| ТаблицаВидыЗапасов.Количество КАК КоличествоСписаноКОформлению,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоСписаноКОформлениюПоРНПТ,
| 0 КАК СуммаВыручкиКОформлению,
| ТаблицаВидыЗапасов.АналитикаНоменклатурыКомитента КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.КорАналитикаУчетаНоменклатуры КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.СписаниеКомиссионныхТоваров) КАК НастройкаХозяйственнойОперации,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки
|ИЗ
| ВтТоварыОрганизаций КАК ТаблицаВидыЗапасов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК ВидыЗапасов
| ПО (ВидыЗапасов.Ссылка = ТаблицаВидыЗапасов.ИсходныйВидЗапасов)
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТаблицаВидыЗапасов.Ссылка)
|ГДЕ
| ВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ИнициализироватьВтВидыЗапасов(Запрос)
Если Запрос.Параметры.Свойство("ВтВидыЗапасовИнициализирована") Тогда
Возврат;
КонецЕсли;
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
ЗапросВтВидыЗапасов = Новый Запрос;
ЗапросВтВидыЗапасов.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;
ЗапросВтВидыЗапасов.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросВтВидыЗапасов.УстановитьПараметр("СборкаПодДеятельность", Запрос.Параметры.СборкаПодДеятельность);
ЗапросВтВидыЗапасов.Текст =
"ВЫБРАТЬ
| ТаблицаВидыЗапасов.Ссылка КАК Ссылка,
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ВидыЗапасов.Валюта КАК Валюта,
| ВидыЗапасов.ТипЗапасов КАК ТипЗапасов,
| ВидыЗапасов.РеализацияЗапасовДругойОрганизации КАК РеализацияЗапасовДругойОрганизации,
| ВидыЗапасовВладельца.Ссылка КАК ВидЗапасовВладельца,
| ВидыЗапасовВладельца.Организация КАК ВидЗапасовВладельцаОрганизация,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| АналитикаБезНазначения.КлючАналитики КАК АналитикаУчетаНоменклатурыБезНазначения,
| АналитикаКомитента.КлючАналитики КАК АналитикаНоменклатурыКомитента,
| Аналитика.Номенклатура КАК Номенклатура,
| ЕСТЬNULL(Аналитика.Назначение.НаправлениеДеятельности, ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)) КАК НаправлениеДеятельности,
| Аналитика.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(Аналитика.Назначение.ВидДеятельностиНДС, ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)) <> ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| ТОГДА Аналитика.Назначение.ВидДеятельностиНДС
| ИНАЧЕ &СборкаПодДеятельность
| КОНЕЦ КАК ВидДеятельностиНДС,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки
|ПОМЕСТИТЬ ВтВидыЗапасов
|ИЗ
| ДанныеДокументаТаблицаВидыЗапасовСписание КАК ТаблицаВидыЗапасов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК ВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК ВидыЗапасовВладельца
| ПО (ВидыЗапасовВладельца.Ссылка = ВидыЗапасов.ВидЗапасовВладельца)
| ПО ТаблицаВидыЗапасов.ВидЗапасов = ВидыЗапасов.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаБезНазначения
| ПО (Аналитика.Номенклатура = АналитикаБезНазначения.Номенклатура)
| И (Аналитика.Характеристика = АналитикаБезНазначения.Характеристика)
| И (Аналитика.Серия = АналитикаБезНазначения.Серия)
| И (ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаБезНазначения.Назначение)
| И (Аналитика.МестоХранения = АналитикаБезНазначения.МестоХранения)
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаБезНазначения.СтатьяКалькуляции
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаКомитента
| ПО (Аналитика.Номенклатура = АналитикаКомитента.Номенклатура)
| И (Аналитика.Характеристика = АналитикаКомитента.Характеристика)
| И (ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) = АналитикаКомитента.Серия)
| И (ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаКомитента.Назначение)
| И ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара = АналитикаКомитента.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаКомитента.СтатьяКалькуляции
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка";
ЗапросВтВидыЗапасов.ВыполнитьПакет();
Запрос.УстановитьПараметр("ВтВидыЗапасовИнициализирована", Истина);
КонецПроцедуры
Процедура ВыполнитьРаспределениеСтоимостиКомплектующихНаКомплекты(Запрос)
Если Запрос.Параметры.Свойство("СтоимостьКомплектующихНаКомплектыРаспределена") Тогда
Возврат;
КонецЕсли;
УстановитьПараметрЗапросаАналитикаКомплекта(Запрос);
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
ИнициализироватьВтВидыЗапасов(Запрос);
ЗапросРаспределения = Новый Запрос;
ЗапросРаспределения.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;
ЗапросРаспределения.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросРаспределения.УстановитьПараметр("Период", Запрос.Параметры.Период);
ЗапросРаспределения.УстановитьПараметр("АналитикаКомплекта", Запрос.Параметры.АналитикаКомплекта);
ЗапросРаспределения.УстановитьПараметр("АналитикаКомплектаБезНазначения", Запрос.Параметры.АналитикаКомплектаБезНазначения);
ЗапросРаспределения.УстановитьПараметр("ХозяйственнаяОперация", Запрос.Параметры.ХозяйственнаяОперация);
ЗапросРаспределения.УстановитьПараметр("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета",
Запрос.Параметры.ФормироватьВидыЗапасовПоГруппамФинансовогоУчета);
ЗапросРаспределения.УстановитьПараметр("Организация", Запрос.Параметры.Организация);
ЗапросРаспределения.УстановитьПараметр("НаправлениеДеятельности", Запрос.Параметры.НаправлениеДеятельности);
ЗапросРаспределения.УстановитьПараметр("УчитыватьСебестоимостьТоваровПоНазначениям", Запрос.Параметры.УчитыватьСебестоимостьТоваровПоНазначениям);
СформироватьВтТаблицаАналитикУчетаПартий(ЗапросРаспределения);
ЗапросРаспределения.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВидыЗапасовОприходование.АналитикаУчетаНоменклатуры,
| ВидыЗапасовОприходование.ВидЗапасов
|ПОМЕСТИТЬ ВтВидыЗапасовОприходование
|ИЗ
| ДанныеДокументаТаблицаВидыЗапасовОприходование КАК ВидыЗапасовОприходование
|;
|
|
|ВЫБРАТЬ
| 1 КАК НомерСтрокиДокумента,
| &Период КАК Период,
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА &АналитикаКомплекта
| ИНАЧЕ &АналитикаКомплектаБезНазначения
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| ВЫБОР КОГДА ДанныеДокумента.Склад.ЦеховаяКладовая
| ТОГДА ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ПроизводственныеЗатраты)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах)
| КОНЕЦ КАК РазделУчета,
|
| СпрВидыЗапасов.ТипЗапасов КАК ТипЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
|
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| 1 КАК ДоляСтоимости,
| ДанныеДокумента.Количество КАК Количество,
|
| ВЫБОР КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета ТОГДА
| ТаблицаВидыЗапасов.ВидЗапасов
| ИНАЧЕ
| ДанныеДокумента.Номенклатура
| КОНЕЦ КАК ИсточникГФУНоменклатуры,
|
| ВЫБОР КОГДА СпрВидыЗапасов.ВладелецТовара ССЫЛКА Справочник.Организации
| ТОГДА АналитикаРасчетовИнтеркампани.КлючАналитики
| ИНАЧЕ АналитикаРасчетов.КлючАналитики
| КОНЕЦ КАК АналитикаРасчетовСКомитентом,
| ТаблицаАналитикУчетаПартий.АналитикаУчетаПартий КАК АналитикаУчетаПартий,
| (ВЫБОР
| КОГДА ЕСТЬNULL(ДанныеДокумента.Назначение.ВидДеятельностиНДС, ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка))
| <> ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| ТОГДА ДанныеДокумента.Назначение.ВидДеятельностиНДС
| ИНАЧЕ ДанныеДокумента.СборкаПодДеятельность
| КОНЕЦ) КАК ВидДеятельностиНДС,
| """" КАК ИдентификаторСтроки
|ИЗ
| ДанныеДокументаШапка КАК ДанныеДокумента
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтВидыЗапасовОприходование КАК ТаблицаВидыЗапасов
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры = ДанныеДокумента.АналитикаУчетаНоменклатуры
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК СпрВидыЗапасов
| ПО СпрВидыЗапасов.Ссылка = ТаблицаВидыЗапасов.ВидЗапасов
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетов
| ПО АналитикаРасчетов.Организация = ДанныеДокумента.Организация
| И АналитикаРасчетов.Партнер = СпрВидыЗапасов.ВладелецТовара
| И АналитикаРасчетов.Контрагент = СпрВидыЗапасов.Контрагент
| И АналитикаРасчетов.Договор = СпрВидыЗапасов.Договор
| И АналитикаРасчетов.НаправлениеДеятельности = ДанныеДокумента.НаправлениеДеятельности
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетовИнтеркампани
| ПО АналитикаРасчетовИнтеркампани.Организация = ДанныеДокумента.Организация
| И АналитикаРасчетовИнтеркампани.Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.НашеПредприятие)
| И АналитикаРасчетовИнтеркампани.Контрагент = СпрВидыЗапасов.Контрагент
| И АналитикаРасчетовИнтеркампани.Договор = СпрВидыЗапасов.Договор
| И АналитикаРасчетовИнтеркампани.НаправлениеДеятельности = ДанныеДокумента.НаправлениеДеятельности
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТаблицаАналитикУчетаПартий КАК ТаблицаАналитикУчетаПартий
| ПО ТаблицаАналитикУчетаПартий.НомерСтроки = 0
| И ТаблицаАналитикУчетаПартий.ИмяТабличнойЧасти = ""Шапка""
|
|ГДЕ
| &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтрокиДокумента,
| &Период КАК Период,
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаТовары.АналитикаУчетаНоменклатуры
| ИНАЧЕ АналитикаБезНазначения.КлючАналитики
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| ВЫБОР КОГДА ДанныеДокумента.Склад.ЦеховаяКладовая
| ТОГДА ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ПроизводственныеЗатраты)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах)
| КОНЕЦ КАК РазделУчета,
|
| СпрВидыЗапасов.ТипЗапасов КАК ТипЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
|
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаТовары.ДоляСтоимости КАК ДоляСтоимости,
| ТаблицаТовары.Количество КАК Количество,
|
| ВЫБОР КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета ТОГДА
| ТаблицаВидыЗапасов.ВидЗапасов
| ИНАЧЕ
| ТаблицаТовары.Номенклатура
| КОНЕЦ КАК ИсточникГФУНоменклатуры,
|
| ВЫБОР КОГДА СпрВидыЗапасов.ВладелецТовара ССЫЛКА Справочник.Организации
| ТОГДА АналитикаРасчетовИнтеркампани.КлючАналитики
| ИНАЧЕ АналитикаРасчетов.КлючАналитики
| КОНЕЦ КАК АналитикаРасчетовСКомитентом,
| ТаблицаАналитикУчетаПартий.АналитикаУчетаПартий КАК АналитикаУчетаПартий,
| (ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаТовары.Назначение.ВидДеятельностиНДС, ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка))
| <> ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| ТОГДА ТаблицаТовары.Назначение.ВидДеятельностиНДС
| ИНАЧЕ ДанныеДокумента.СборкаПодДеятельность
| КОНЕЦ) КАК ВидДеятельностиНДС,
| ТаблицаТовары.ИдентификаторСтроки КАК ИдентификаторСтроки
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеДокумента
| ПО ДанныеДокумента.Ссылка = ТаблицаТовары.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтВидыЗапасовОприходование КАК ТаблицаВидыЗапасов
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры = ТаблицаТовары.АналитикаУчетаНоменклатуры
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК СпрВидыЗапасов
| ПО СпрВидыЗапасов.Ссылка = ТаблицаВидыЗапасов.ВидЗапасов
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаТовары.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаБезНазначения
| ПО Аналитика.Номенклатура = АналитикаБезНазначения.Номенклатура
| И Аналитика.Характеристика = АналитикаБезНазначения.Характеристика
| И Аналитика.Серия = АналитикаБезНазначения.Серия
| И Аналитика.МестоХранения = АналитикаБезНазначения.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаБезНазначения.Назначение
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаБезНазначения.СтатьяКалькуляции
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетов
| ПО АналитикаРасчетов.Организация = ДанныеДокумента.Организация
| И АналитикаРасчетов.Партнер = СпрВидыЗапасов.ВладелецТовара
| И АналитикаРасчетов.Контрагент = СпрВидыЗапасов.Контрагент
| И АналитикаРасчетов.Договор = СпрВидыЗапасов.Договор
| И АналитикаРасчетов.НаправлениеДеятельности = ДанныеДокумента.НаправлениеДеятельности
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетовИнтеркампани
| ПО АналитикаРасчетовИнтеркампани.Организация = ДанныеДокумента.Организация
| И АналитикаРасчетовИнтеркампани.Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.НашеПредприятие)
| И АналитикаРасчетовИнтеркампани.Контрагент = СпрВидыЗапасов.Контрагент
| И АналитикаРасчетовИнтеркампани.Договор = СпрВидыЗапасов.Договор
| И АналитикаРасчетовИнтеркампани.НаправлениеДеятельности = ДанныеДокумента.НаправлениеДеятельности
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТаблицаАналитикУчетаПартий КАК ТаблицаАналитикУчетаПартий
| ПО ТаблицаАналитикУчетаПартий.НомерСтроки = ТаблицаТовары.НомерСтроки
| И ТаблицаАналитикУчетаПартий.ИмяТабличнойЧасти = ""Товары""
|
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
|;
|
|
|ВЫБРАТЬ
| МАКСИМУМ(ТаблицаВидыЗапасов.НомерСтроки) КАК НомерСтрокиДокумента,
| &Период КАК Период,
| 1 КАК ДоляСтоимости,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| ТаблицаВидыЗапасов.АналитикаНоменклатурыКомитента
| ИНАЧЕ
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыБезНазначения
| КОНЕЦ
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ВЫБОР КОГДА Аналитика.МестоХранения.ЦеховаяКладовая И СпрВидыЗапасов.ТипЗапасов <> ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ПроизводственныеЗатраты)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах)
| КОНЕЦ КАК РазделУчета,
|
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ ТаблицаВидыЗапасов.ВидЗапасов
| КОНЕЦ КАК ВидЗапасов,
|
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыБезНазначения
| КОНЕЦ КАК АналитикаСписанияОприходования,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасовСписанияОприходования,
| ТаблицаВидыЗапасов.ТипЗапасов КАК ТипЗапасов,
| ВЫБОР КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета ТОГДА
| ВЫБОР КОГДА ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| ТаблицаВидыЗапасов.ВидЗапасов
| КОНЕЦ
| ИНАЧЕ
| ТаблицаВидыЗапасов.Номенклатура
| КОНЕЦ КАК ИсточникГФУНоменклатуры,
|
| СУММА(ТаблицаВидыЗапасов.Количество) КАК Количество,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
|
| ВЫБОР КОГДА СпрВидыЗапасов.ВладелецТовара ССЫЛКА Справочник.Организации
| ТОГДА АналитикаРасчетовИнтеркампани.КлючАналитики
| ИНАЧЕ АналитикаРасчетов.КлючАналитики
| КОНЕЦ КАК АналитикаРасчетовСКомитентом
|ИЗ
| ВтВидыЗапасов КАК ТаблицаВидыЗапасов
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК СпрВидыЗапасов
| ПО СпрВидыЗапасов.Ссылка = ТаблицаВидыЗапасов.ВидЗапасов
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетов
| ПО АналитикаРасчетов.Организация = &Организация
| И АналитикаРасчетов.Партнер = СпрВидыЗапасов.ВладелецТовара
| И АналитикаРасчетов.Контрагент = СпрВидыЗапасов.Контрагент
| И АналитикаРасчетов.Договор = СпрВидыЗапасов.Договор
| И АналитикаРасчетов.НаправлениеДеятельности = &НаправлениеДеятельности
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетовИнтеркампани
| ПО АналитикаРасчетовИнтеркампани.Организация = &Организация
| И АналитикаРасчетовИнтеркампани.Партнер = ЗНАЧЕНИЕ(Справочник.Партнеры.НашеПредприятие)
| И АналитикаРасчетовИнтеркампани.Контрагент = СпрВидыЗапасов.Контрагент
| И АналитикаРасчетовИнтеркампани.Договор = СпрВидыЗапасов.Договор
| И АналитикаРасчетовИнтеркампани.НаправлениеДеятельности = &НаправлениеДеятельности
|ГДЕ
| ТаблицаВидыЗапасов.ТипЗапасов В (ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар))
| И ТаблицаВидыЗапасов.Количество > 0
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| ТаблицаВидыЗапасов.АналитикаНоменклатурыКомитента
| ИНАЧЕ
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыБезНазначения
| КОНЕЦ
| КОНЕЦ,
| ТаблицаВидыЗапасов.НаправлениеДеятельности,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ ТаблицаВидыЗапасов.ВидЗапасов
| КОНЕЦ,
|
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыБезНазначения
| КОНЕЦ,
| ТаблицаВидыЗапасов.ВидЗапасов,
| ТаблицаВидыЗапасов.ТипЗапасов,
| ВЫБОР КОГДА &ФормироватьВидыЗапасовПоГруппамФинансовогоУчета ТОГДА
| ВЫБОР КОГДА ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| ТаблицаВидыЗапасов.ВидЗапасов
| КОНЕЦ
| ИНАЧЕ
| ТаблицаВидыЗапасов.Номенклатура
| КОНЕЦ,
| ВЫБОР КОГДА СпрВидыЗапасов.ВладелецТовара ССЫЛКА Справочник.Организации
| ТОГДА АналитикаРасчетовИнтеркампани.КлючАналитики
| ИНАЧЕ АналитикаРасчетов.КлючАналитики
| КОНЕЦ,
| ВЫБОР КОГДА Аналитика.МестоХранения.ЦеховаяКладовая И СпрВидыЗапасов.ТипЗапасов <> ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ПроизводственныеЗатраты)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах)
| КОНЕЦ
|
|УПОРЯДОЧИТЬ ПО
| НомерСтрокиДокумента";
Результат = ЗапросРаспределения.ВыполнитьПакет();
Распределение = РаспределитьСтоимостьКомплектующихНаКомплекты(
Результат[1].Выгрузить(),
Результат[2].Выгрузить(),
Запрос.Параметры);
ЗапросРаспределения.УстановитьПараметр("ТаблицаСебестоимостьТоваров", Распределение.ТаблицаСебестоимостьТоваров);
ЗапросРаспределения.УстановитьПараметр("ТаблицаДвиженияНоменклатураНоменклатура",
Распределение.ТаблицаДвиженияНоменклатураНоменклатура);
ЗапросРаспределения.Текст =
"ВЫБРАТЬ
| ТаблицаСебестоимостьТоваров.Период,
| ТаблицаСебестоимостьТоваров.Регистратор,
| ТаблицаСебестоимостьТоваров.НомерСтроки,
| ТаблицаСебестоимостьТоваров.ВидДвижения,
| ТаблицаСебестоимостьТоваров.АналитикаУчетаНоменклатуры,
| ТаблицаСебестоимостьТоваров.РазделУчета,
| ТаблицаСебестоимостьТоваров.ВидЗапасов,
| ТаблицаСебестоимостьТоваров.Организация,
| ТаблицаСебестоимостьТоваров.Количество,
| ТаблицаСебестоимостьТоваров.Стоимость,
| ТаблицаСебестоимостьТоваров.СтоимостьБезНДС,
| ТаблицаСебестоимостьТоваров.ДопРасходы,
| ТаблицаСебестоимостьТоваров.ДопРасходыБезНДС,
| ТаблицаСебестоимостьТоваров.СтоимостьРегл,
| ТаблицаСебестоимостьТоваров.ПостояннаяРазница,
| ТаблицаСебестоимостьТоваров.ВременнаяРазница,
| ТаблицаСебестоимостьТоваров.ХозяйственнаяОперация,
| ТаблицаСебестоимостьТоваров.КорАналитикаУчетаНоменклатуры,
| ТаблицаСебестоимостьТоваров.КорРазделУчета,
| ТаблицаСебестоимостьТоваров.КорВидЗапасов,
| ТаблицаСебестоимостьТоваров.КорОрганизация,
| ТаблицаСебестоимостьТоваров.КорСтоимость,
| ТаблицаСебестоимостьТоваров.АналитикаУчетаПоПартнерам,
| ТаблицаСебестоимостьТоваров.ЗаказКлиента,
| ТаблицаСебестоимостьТоваров.Подразделение,
| ТаблицаСебестоимостьТоваров.АналитикаРасходов,
| ТаблицаСебестоимостьТоваров.СтатьяРасходовСписания,
| ТаблицаСебестоимостьТоваров.СтатьяДоходов,
| ТаблицаСебестоимостьТоваров.АналитикаДоходов,
| ТаблицаСебестоимостьТоваров.ПериодПродажи,
| ТаблицаСебестоимостьТоваров.СтатьяАктивовПассивов,
| ТаблицаСебестоимостьТоваров.АналитикаАктивовПассивов,
| ТаблицаСебестоимостьТоваров.ДокументДвижения,
| ТаблицаСебестоимостьТоваров.ИдентификаторСтроки,
| ТаблицаСебестоимостьТоваров.ГруппаПродукции,
| ТаблицаСебестоимостьТоваров.Партия,
| ТаблицаСебестоимостьТоваров.АналитикаУчетаПартий,
| ТаблицаСебестоимостьТоваров.АналитикаФинансовогоУчета,
| ТаблицаСебестоимостьТоваров.ВидДеятельностиНДС,
| ТаблицаСебестоимостьТоваров.КорПартия,
| ТаблицаСебестоимостьТоваров.КорАналитикаУчетаПартий,
| ТаблицаСебестоимостьТоваров.КорАналитикаФинансовогоУчета,
| ТаблицаСебестоимостьТоваров.КорВидДеятельностиНДС,
| ТаблицаСебестоимостьТоваров.ТипЗаписи,
|
| ТаблицаСебестоимостьТоваров.ИдентификаторФинЗаписи
|
|ПОМЕСТИТЬ ВтТаблицаСебестоимостьТоваров
|ИЗ
| &ТаблицаСебестоимостьТоваров КАК ТаблицаСебестоимостьТоваров
|;
|
|
|ВЫБРАТЬ
| ТаблицаДвиженияНоменклатураНоменклатура.Период,
| ТаблицаДвиженияНоменклатураНоменклатура.Регистратор,
| ТаблицаДвиженияНоменклатураНоменклатура.НомерСтроки,
| ТаблицаДвиженияНоменклатураНоменклатура.ХозяйственнаяОперация,
| ТаблицаДвиженияНоменклатураНоменклатура.Организация,
| ТаблицаДвиженияНоменклатураНоменклатура.Подразделение,
| ТаблицаДвиженияНоменклатураНоменклатура.АналитикаУчетаНоменклатуры,
| ТаблицаДвиженияНоменклатураНоменклатура.НаправлениеДеятельности,
| ТаблицаДвиженияНоменклатураНоменклатура.Склад,
| ТаблицаДвиженияНоменклатураНоменклатура.ТипЗапасов,
| ТаблицаДвиженияНоменклатураНоменклатура.ВидЗапасов,
| ТаблицаДвиженияНоменклатураНоменклатура.КорАналитикаУчетаНоменклатуры,
| ТаблицаДвиженияНоменклатураНоменклатура.КорНаправлениеДеятельности,
| ТаблицаДвиженияНоменклатураНоменклатура.КорСклад,
| ТаблицаДвиженияНоменклатураНоменклатура.КорТипЗапасов,
| ТаблицаДвиженияНоменклатураНоменклатура.КорВидЗапасов,
| ТаблицаДвиженияНоменклатураНоменклатура.Количество,
| ТаблицаДвиженияНоменклатураНоменклатура.КорКоличество,
| ТаблицаДвиженияНоменклатураНоменклатура.Стоимость,
| ТаблицаДвиженияНоменклатураНоменклатура.СтоимостьБезНДС,
| ТаблицаДвиженияНоменклатураНоменклатура.СтоимостьРегл,
| ТаблицаДвиженияНоменклатураНоменклатура.ИсточникГФУНоменклатуры,
| ТаблицаДвиженияНоменклатураНоменклатура.КорИсточникГФУНоменклатуры,
| ТаблицаДвиженияНоменклатураНоменклатура.ДокументДвижения,
| ТаблицаДвиженияНоменклатураНоменклатура.КорОрганизация
|ПОМЕСТИТЬ ВтТаблицаДвиженияНоменклатураНоменклатура
|ИЗ
| &ТаблицаДвиженияНоменклатураНоменклатура КАК ТаблицаДвиженияНоменклатураНоменклатура";
Результат = ЗапросРаспределения.ВыполнитьПакет();
Запрос.УстановитьПараметр("СтоимостьКомплектующихНаКомплектыРаспределена", Истина);
КонецПроцедуры
Функция ТекстЗапросаТаблицаПартииТоваровОрганизаций(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ПартииТоваровОрганизаций";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ИнициализироватьВтТаблицаКомплекты(Запрос);
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
ТекстЗапроса = "
| ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Склад КАК Склад,
| &Организация КАК Организация,
| КлючиАналитики.КлючАналитики КАК АналитикаУчетаНоменклатуры,
| &Ссылка КАК ДокументПоступления,
| ТаблицаТовары.ВидЗапасов КАК ВидЗапасов,
| ТаблицаТовары.АналитикаУчетаПартий КАК АналитикаУчетаПартий,
| СУММА(ТаблицаТовары.Количество) КАК Количество,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ИСТИНА КАК Первичное,
| &Ссылка КАК ДокументИсточник
|ИЗ
| ВтТаблицаКомплекты КАК ТаблицаТовары
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиАналитики
| ПО
| ТаблицаТовары.Номенклатура = КлючиАналитики.Номенклатура
| И ТаблицаТовары.Характеристика = КлючиАналитики.Характеристика
| И ТаблицаТовары.Назначение = КлючиАналитики.Назначение
| И ТаблицаТовары.Серия = КлючиАналитики.Серия
| И (&Склад = КлючиАналитики.МестоХранения)
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = КлючиАналитики.СтатьяКалькуляции
|ГДЕ
| &Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)
| И &ПартионныйУчетВерсии21
|СГРУППИРОВАТЬ ПО
| КлючиАналитики.КлючАналитики,
| ТаблицаТовары.ВидЗапасов,
| ТаблицаТовары.АналитикаУчетаПартий,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияНоменклатураНоменклатура";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ВыполнитьРаспределениеСтоимостиКомплектующихНаКомплекты(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДвиженияНоменклатураНоменклатура.Период,
| ТаблицаДвиженияНоменклатураНоменклатура.Регистратор,
| ТаблицаДвиженияНоменклатураНоменклатура.НомерСтроки,
| ТаблицаДвиженияНоменклатураНоменклатура.ХозяйственнаяОперация,
| ТаблицаДвиженияНоменклатураНоменклатура.Организация,
| ТаблицаДвиженияНоменклатураНоменклатура.Подразделение,
| ТаблицаДвиженияНоменклатураНоменклатура.АналитикаУчетаНоменклатуры,
| ТаблицаДвиженияНоменклатураНоменклатура.АналитикаУчетаНоменклатуры.Назначение.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ТаблицаДвиженияНоменклатураНоменклатура.Склад,
| ТаблицаДвиженияНоменклатураНоменклатура.ТипЗапасов,
| ТаблицаДвиженияНоменклатураНоменклатура.ВидЗапасов,
| ТаблицаДвиженияНоменклатураНоменклатура.КорАналитикаУчетаНоменклатуры,
| ТаблицаДвиженияНоменклатураНоменклатура.КорАналитикаУчетаНоменклатуры.Назначение.НаправлениеДеятельности КАК КорНаправлениеДеятельности,
| ТаблицаДвиженияНоменклатураНоменклатура.КорСклад,
| ТаблицаДвиженияНоменклатураНоменклатура.КорТипЗапасов,
| ТаблицаДвиженияНоменклатураНоменклатура.КорВидЗапасов,
| ТаблицаДвиженияНоменклатураНоменклатура.Количество,
| ТаблицаДвиженияНоменклатураНоменклатура.КорКоличество,
| ТаблицаДвиженияНоменклатураНоменклатура.Стоимость,
| ТаблицаДвиженияНоменклатураНоменклатура.СтоимостьБезНДС,
| ТаблицаДвиженияНоменклатураНоменклатура.СтоимостьРегл,
| ТаблицаДвиженияНоменклатураНоменклатура.ИсточникГФУНоменклатуры,
| ТаблицаДвиженияНоменклатураНоменклатура.КорИсточникГФУНоменклатуры,
| ТаблицаДвиженияНоменклатураНоменклатура.ДокументДвижения,
| ТаблицаДвиженияНоменклатураНоменклатура.КорОрганизация
|ИЗ
| ВтТаблицаДвиженияНоменклатураНоменклатура КАК ТаблицаДвиженияНоменклатураНоменклатура";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК Партнер,
| НЕОПРЕДЕЛЕНО КАК Контрагент,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Склад КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Ответственный КАК Ответственный,
| &Комментарий КАК Комментарий,
| НЕОПРЕДЕЛЕНО КАК Валюта,
| 0 КАК Сумма,
| &Статус КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| """" КАК Дополнительно,
| &Период КАК ДатаПервичногоДокумента,
| &Исправление КАК СторноИсправление,
| &СторнируемыйДокумент КАК СторнируемыйДокумент,
| &ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| &НомерНаПечать КАК НомерПервичногоДокумента,
| &Период КАК ДатаОтраженияВУчете,
| НЕОПРЕДЕЛЕНО КАК Приоритет";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
ЧастиТекстаЗапроса = Новый Массив;
Если ДокументОбъект = Неопределено
Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ДанныеШапки.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеШапки.СборкаПоЗаказу
| ТОГДА ДанныеШапки.ЗаказНаСборку
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ТоварыДокумента.Ссылка КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеШапки.Склад КАК Получатель,
| ДанныеШапки.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ДанныеШапки.СборкаПоЗаказу КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.Количество <> 0
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или (ДокументОбъект.Количество <> 0
И ДокументОбъект.СтатусУказанияСерий <> 10
И ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров) Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ТоварыДокумента.Дата КАК Период,
| ВЫБОР
| КОГДА ТоварыДокумента.СборкаПоЗаказу
| ТОГДА ТоварыДокумента.ЗаказНаСборку
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ТоварыДокумента.Ссылка КАК Накладная,
| ТоварыДокумента.Исправление КАК Исправление,
| ТоварыДокумента.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ТоварыДокумента.Склад КАК Получатель,
| ТоварыДокумента.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ТоварыДокумента.СборкаПоЗаказу КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаШапка КАК ТоварыДокумента
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.Количество <> 0
| И ТоварыДокумента.СтатусУказанияСерий <> 10
| И ТоварыДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или (ДокументОбъект.СтатусУказанияСерий = 10
И ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров) Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеШапки.СборкаПоЗаказу
| ТОГДА ДанныеШапки.ЗаказНаСборку
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ТоварыДокумента.Ссылка КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеШапки.Склад КАК Получатель,
| ДанныеШапки.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ДанныеШапки.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ДанныеШапки.СборкаПоЗаказу КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаТаблицаСерии КАК ТоварыДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
| И ТоварыДокумента.Номенклатура = ДанныеШапки.Номенклатура
| И ТоварыДокумента.Характеристика = ДанныеШапки.Характеристика
| И ТоварыДокумента.Назначение = ДанныеШапки.Назначение
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.Количество <> 0
| И ДанныеШапки.СтатусУказанияСерий = 10
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если ЧастиТекстаЗапроса.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ТекстЗапросаДанныхДокумента = СтрСоединить(ЧастиТекстаЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
СкладыСервер.ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
ЧастиТекстаЗапроса = Новый Массив;
Если ДокументОбъект = Неопределено
Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ДанныеШапки.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеШапки.СборкаПоЗаказу
| ТОГДА ДанныеШапки.ЗаказНаСборку
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ТоварыДокумента.Ссылка КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеШапки.Склад КАК Получатель,
| ДанныеШапки.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ДанныеШапки.СборкаПоЗаказу КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.Количество <> 0
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или (ДокументОбъект.Количество <> 0
И ДокументОбъект.СтатусУказанияСерий <> 10
И ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров) Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ТоварыДокумента.Дата КАК Период,
| ВЫБОР
| КОГДА ТоварыДокумента.СборкаПоЗаказу
| ТОГДА ТоварыДокумента.ЗаказНаСборку
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ТоварыДокумента.Ссылка КАК Накладная,
| ТоварыДокумента.Исправление КАК Исправление,
| ТоварыДокумента.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ТоварыДокумента.Склад КАК Получатель,
| ТоварыДокумента.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ТоварыДокумента.СборкаПоЗаказу КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаШапка КАК ТоварыДокумента
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.Количество <> 0
| И ТоварыДокумента.СтатусУказанияСерий <> 10
| И ТоварыДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или (ДокументОбъект.СтатусУказанияСерий = 10
И ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров) Тогда
ТекстЧастиЗапроса =
"ВЫБРАТЬ
| ДанныеШапки.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеШапки.СборкаПоЗаказу
| ТОГДА ДанныеШапки.ЗаказНаСборку
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ДанныеШапки.Ссылка КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеШапки.Склад КАК Получатель,
| ДанныеШапки.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Назначение КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ДанныеШапки.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ДанныеШапки.СборкаПоЗаказу КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаТаблицаСерии КАК ТоварыДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
| И ТоварыДокумента.Номенклатура = ДанныеШапки.Номенклатура
| И ТоварыДокумента.Характеристика = ДанныеШапки.Характеристика
| И ТоварыДокумента.Назначение = ДанныеШапки.Назначение
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.Количество <> 0
| И ДанныеШапки.СтатусУказанияСерий = 10
| И ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)";
ЧастиТекстаЗапроса.Добавить(ТекстЧастиЗапроса);
КонецЕсли;
Если ЧастиТекстаЗапроса.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ТекстЗапросаДанныхДокумента = СтрСоединить(ЧастиТекстаЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
ОбъектМетаданных = Метаданные.Документы.СборкаТоваров;
ИмяТЧСерии = "Серии";
СкладыСервер.ОформитьОтгрузкуТоваров(Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДанныхДокумента,
ОбъектМетаданных,
ИмяТЧСерии);
КонецПроцедуры
Функция РаспределитьСтоимостьКомплектующихНаКомплекты(ТаблицаКомплектов, ТаблицаКомплектующих, Реквизиты)
ТаблицаСебестоимостьТоваров = РегистрыНакопления.СебестоимостьТоваров.СоздатьНаборЗаписей().ВыгрузитьКолонки();
ТаблицаСебестоимостьТоваров.Колонки.Удалить("Активность");
ТаблицаДвиженияНоменклатураНоменклатура = РегистрыНакопления.ДвиженияНоменклатураНоменклатура.СоздатьНаборЗаписей().ВыгрузитьКолонки();
ТаблицаДвиженияНоменклатураНоменклатура.Колонки.Удалить("Активность");
Результат = Новый Структура;
Результат.Вставить("ТаблицаСебестоимостьТоваров", ТаблицаСебестоимостьТоваров);
Результат.Вставить("ТаблицаДвиженияНоменклатураНоменклатура", ТаблицаДвиженияНоменклатураНоменклатура);
Если ТаблицаКомплектов.Количество() = 0 Или ТаблицаКомплектующих.Количество() = 0 Тогда
Возврат Результат;
КонецЕсли;
Если ТаблицаКомплектов.Количество() = 1 Тогда
МассивРаспределения = Новый Массив(1);
МассивРаспределения[0] = 1;
Иначе
МассивРаспределения = ТаблицаКомплектов.ВыгрузитьКолонку("ДоляСтоимости");
КонецЕсли;
ВсегоДолейКоличествоВыхода = ТаблицаКомплектующих.Количество();
ПартионныйУчетВерсии22 = РасчетСебестоимостиПовтИсп.ПартионныйУчетВерсии22(НачалоМесяца(Реквизиты.Период));
ПараметрыУчетнойПолитики = НастройкиНалоговУчетныхПолитик.ДействующиеПараметрыНалоговУчетныхПолитикНаДату("УчетнаяПолитикаФинансовогоУчета",
Реквизиты.Организация,
НачалоМесяца(Реквизиты.Период));
ФИФОСкользящаяОценка = (ПараметрыУчетнойПолитики <> Неопределено
И ПараметрыУчетнойПолитики.МетодОценкиСтоимостиТоваров = Перечисления.МетодыОценкиСтоимостиТоваров.ФИФОСкользящаяОценка);
Для Каждого СтрокаВхода Из ТаблицаКомплектующих Цикл
РаспределенноеКоличество = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(СтрокаВхода.Количество, МассивРаспределения, 3);
ИдентификаторФинЗаписиВхода = Строка(Новый УникальныйИдентификатор);
ИдентификаторФинЗаписиВыхода = "";
Счетчик = 0;
ЗаписиКомплектующиеБезИдентификатора = Новый Массив();
ЗаписиКомплектаБезИдентификатора = Новый Массив();
Для Каждого СтрокаВыхода Из ТаблицаКомплектов Цикл
Если ВсегоДолейКоличествоВыхода <> 0 Тогда
КоличествоВыхода = Окр(СтрокаВыхода.Количество / ВсегоДолейКоличествоВыхода, 3, РежимОкругления.Окр15как20);
Иначе
КоличествоВыхода = СтрокаВыхода.Количество;
КонецЕсли;
СтрокаВыхода.Количество = СтрокаВыхода.Количество - КоличествоВыхода;
ЭтоЗначимыйВыход = РаспределенноеКоличество[Счетчик] <> 0;
Если НЕ ЭтоЗначимыйВыход Тогда
ИначеЕсли ЗначениеЗаполнено(СтрокаВыхода.ИдентификаторСтроки) Тогда
ИдентификаторФинЗаписиВыхода = СтрокаВыхода.ИдентификаторСтроки;
Иначе
ИдентификаторФинЗаписиВыхода = ИдентификаторФинЗаписиВхода;
КонецЕсли;
ЗаписьКомплектующие = ТаблицаСебестоимостьТоваров.Добавить();
ЗаполнитьЗначенияСвойств(ЗаписьКомплектующие, СтрокаВхода);
ЗаписьКомплектующие.ВидДвижения = ВидДвиженияНакопления.Расход;
ЗаписьКомплектующие.Подразделение = Реквизиты.Подразделение;
ЗаписьКомплектующие.КорАналитикаУчетаНоменклатуры = СтрокаВыхода.АналитикаУчетаНоменклатуры;
ЗаписьКомплектующие.КорРазделУчета = СтрокаВыхода.РазделУчета;
ЗаписьКомплектующие.КорВидЗапасов = СтрокаВыхода.ВидЗапасов;
ЗаписьКомплектующие.Количество = РаспределенноеКоличество[Счетчик];
ЗаписьКомплектующие.АналитикаУчетаПоПартнерам = СтрокаВхода.АналитикаРасчетовСКомитентом;
ЗаписьКомплектующие.ИдентификаторФинЗаписи = ИдентификаторФинЗаписиВыхода;
ЗаписьКомплектующие.ИдентификаторСтроки = "";
ЗаписьКомплектующие.ТипЗаписи = Перечисления.ТипыЗаписейПартий.СписаниеНаДругиеПартии;
Если СтрокаВхода.ТипЗапасов = Перечисления.ТипыЗапасов.КомиссионныйТовар Тогда
КомиссионныеКомплектующие = ЗаписьКомплектующие;
КомиссионныеКомплектующие.РазделУчета = Перечисления.РазделыУчетаСебестоимостиТоваров.ТоварыПринятыеНаКомиссию;
КомиссионныеКомплектующие.ВидЗапасов = СтрокаВхода.ВидЗапасовСписанияОприходования;
КомиссионныеКомплектующие.АналитикаУчетаНоменклатуры = СтрокаВхода.АналитикаСписанияОприходования;
КонецЕсли;
ЗаписьКомплект = ТаблицаСебестоимостьТоваров.Добавить();
ЗаполнитьЗначенияСвойств(ЗаписьКомплект, СтрокаВыхода);
ЗаписьКомплект.ВидДвижения = ВидДвиженияНакопления.Приход;
ЗаписьКомплект.Подразделение = Реквизиты.Подразделение;
ЗаписьКомплект.Количество = КоличествоВыхода;
ЗаписьКомплект.ИдентификаторФинЗаписи = ИдентификаторФинЗаписиВыхода;
Если ПартионныйУчетВерсии22 Тогда
Если ФИФОСкользящаяОценка Тогда
ЗаписьКомплект.Партия = ?(Реквизиты.Исправление, Реквизиты.ИсправляемыйДокумент, Реквизиты.Ссылка);
ЗаписьКомплект.АналитикаУчетаПартий = СтрокаВыхода.АналитикаУчетаПартий;
ЗаписьКомплектующие.КорПартия = ?(Реквизиты.Исправление, Реквизиты.ИсправляемыйДокумент, Реквизиты.Ссылка);
ЗаписьКомплектующие.КорАналитикаУчетаПартий = СтрокаВыхода.АналитикаУчетаПартий;
Иначе
ЗаписьКомплект.АналитикаУчетаПартий = Справочники.КлючиАналитикиУчетаПартий.ПустаяСсылка();
ЗаписьКомплект.КорАналитикаУчетаПартий = СтрокаВыхода.АналитикаУчетаПартий;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоСделкам") И Реквизиты.ОбособленныйУчетТоваровПоСделке Тогда
ЗаписьКомплект.АналитикаФинансовогоУчета = Реквизиты.Сделка;
ИначеЕсли ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоПодразделениямМенеджерам")
И Реквизиты.ВариантОбособленногоУчетаТоваров = Перечисления.ВариантыОбособленногоУчетаТоваров.ПоПодразделению Тогда
ЗаписьКомплект.АналитикаФинансовогоУчета = Реквизиты.Подразделение;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоСделкам") И Реквизиты.ОбособленныйУчетТоваровПоСделке Тогда
ЗаписьКомплектующие.КорАналитикаФинансовогоУчета = Реквизиты.Сделка;
Если СтрокаВхода.ТипЗапасов = Перечисления.ТипыЗапасов.КомиссионныйТовар Тогда
КомиссионныеКомплектующие.КорАналитикаФинансовогоУчета = Реквизиты.Сделка;
КонецЕсли;
ИначеЕсли ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоПодразделениямМенеджерам")
И Реквизиты.ВариантОбособленногоУчетаТоваров = Перечисления.ВариантыОбособленногоУчетаТоваров.ПоПодразделению Тогда
ЗаписьКомплектующие.КорАналитикаФинансовогоУчета = Реквизиты.Подразделение;
Если СтрокаВхода.ТипЗапасов = Перечисления.ТипыЗапасов.КомиссионныйТовар Тогда
КомиссионныеКомплектующие.КорАналитикаФинансовогоУчета = Реквизиты.Подразделение;
КонецЕсли;
КонецЕсли;
ЗаписьКомплектующие.КорВидДеятельностиНДС = СтрокаВыхода.ВидДеятельностиНДС;
Если СтрокаВхода.ТипЗапасов = Перечисления.ТипыЗапасов.КомиссионныйТовар Тогда
КомиссионныеКомплектующие.КорВидДеятельностиНДС = СтрокаВыхода.ВидДеятельностиНДС;
КонецЕсли;
Иначе
ЗаписьКомплект.АналитикаУчетаПартий = Справочники.КлючиАналитикиУчетаПартий.ПустаяСсылка();
ЗаписьКомплект.ВидДеятельностиНДС = Неопределено;
КонецЕсли;
Если ЭтоЗначимыйВыход Тогда
ЗаписьКомплект.ИдентификаторСтроки = "";
Иначе
ЗаписьКомплект.ИдентификаторСтроки = СтрокаВыхода.ИдентификаторСтроки;
Если ПустаяСтрока(ИдентификаторФинЗаписиВыхода) Тогда
ЗаписиКомплектующиеБезИдентификатора.Добавить(ЗаписьКомплектующие);
ЗаписиКомплектаБезИдентификатора.Добавить(ЗаписьКомплект);
КонецЕсли;
КонецЕсли;
ЗаписьКомплект.ТипЗаписи = Перечисления.ТипыЗаписейПартий.Партия;
ЗаписьНоменклатураНоменклатура = ТаблицаДвиженияНоменклатураНоменклатура.Добавить();
ЗаполнитьЗначенияСвойств(ЗаписьНоменклатураНоменклатура, СтрокаВхода);
ЗаписьНоменклатураНоменклатура.АналитикаУчетаНоменклатуры = СтрокаВхода.АналитикаСписанияОприходования;
ЗаписьНоменклатураНоменклатура.НаправлениеДеятельности = СтрокаВхода.НаправлениеДеятельности;
ЗаписьНоменклатураНоменклатура.ВидЗапасов = СтрокаВхода.ВидЗапасовСписанияОприходования;
ЗаписьНоменклатураНоменклатура.Организация = Реквизиты.Организация;
ЗаписьНоменклатураНоменклатура.Подразделение = Реквизиты.Подразделение;
ЗаписьНоменклатураНоменклатура.Склад = Реквизиты.Склад;
ЗаписьНоменклатураНоменклатура.КорАналитикаУчетаНоменклатуры = СтрокаВыхода.АналитикаУчетаНоменклатуры;
ЗаписьНоменклатураНоменклатура.КорНаправлениеДеятельности = СтрокаВыхода.НаправлениеДеятельности;
ЗаписьНоменклатураНоменклатура.КорСклад = Реквизиты.Склад;
ЗаписьНоменклатураНоменклатура.КорТипЗапасов = СтрокаВыхода.ТипЗапасов;
ЗаписьНоменклатураНоменклатура.КорВидЗапасов = СтрокаВыхода.ВидЗапасов;
ЗаписьНоменклатураНоменклатура.Количество = РаспределенноеКоличество[Счетчик];
ЗаписьНоменклатураНоменклатура.КорКоличество = КоличествоВыхода;
ЗаписьНоменклатураНоменклатура.КорИсточникГФУНоменклатуры = СтрокаВыхода.ИсточникГФУНоменклатуры;
Счетчик = Счетчик + 1;
КонецЦикла;
ВсегоДолейКоличествоВыхода = ВсегоДолейКоличествоВыхода - 1;
Для Каждого ЗаписьКомплектующие Из ЗаписиКомплектующиеБезИдентификатора Цикл
ЗаписьКомплектующие.ИдентификаторФинЗаписи = ИдентификаторФинЗаписиВыхода;
КонецЦикла;
Для Каждого ЗаписьКомплект Из ЗаписиКомплектаБезИдентификатора Цикл
ЗаписьКомплект.ИдентификаторФинЗаписи = ИдентификаторФинЗаписиВыхода;
КонецЦикла;
КонецЦикла;
ТаблицаСебестоимостьТоваров.ЗаполнитьЗначения(Реквизиты.Организация, "Организация");
Результат.ТаблицаСебестоимостьТоваров = ТаблицаСебестоимостьТоваров;
Результат.ТаблицаДвиженияНоменклатураНоменклатура = ТаблицаДвиженияНоменклатураНоменклатура;
Возврат Результат;
КонецФункции
Процедура ЗаполнитьКорАналитикуУчетаНомеклатуры(ТаблицаТоварыОрганизаций, Реквизиты)
Если Реквизиты.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
Возврат;
КонецЕсли;
Материалы = ТаблицаТоварыОрганизаций.НайтиСтроки(Новый Структура("ВидДвижения", ВидДвиженияНакопления.Расход));
База = Новый Массив;
Для Каждого Комплект Из ТаблицаТоварыОрганизаций Цикл
База.Добавить(?(Комплект.ВидДвижения = ВидДвиженияНакопления.Приход, Комплект.ДоляСтоимости, 0.));
КонецЦикла;
ВсегоСтрок = ТаблицаТоварыОрганизаций.Количество();
Для Каждого Материал Из Материалы Цикл
КоличествоОстаток = Материал.Количество;
КоличествоПоРНПТОстаток = Материал.КоличествоПоРНПТ;
КоличестваМатериала = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(КоличествоОстаток, База, 3);
КоличестваМатериалаПоРНПТ = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(КоличествоПоРНПТОстаток, База, 3);
Если КоличестваМатериала = Неопределено Тогда
Продолжить;
КонецЕсли;
НомерСтроки = 0;
Пока НомерСтроки < ВсегоСтрок Цикл
Комплект = ТаблицаТоварыОрганизаций[НомерСтроки];
Если Комплект.ВидДвижения = ВидДвиженияНакопления.Приход Тогда
НовоеКоличество = КоличестваМатериала[НомерСтроки];
КоличествоОстаток = КоличествоОстаток - НовоеКоличество;
Если КоличествоОстаток > 0. Тогда
НовыйМатериал = ТаблицаТоварыОрганизаций.Добавить();
ЗаполнитьЗначенияСвойств(НовыйМатериал, Материал);
Иначе
НовыйМатериал = Материал;
КонецЕсли;
НовыйМатериал.КорАналитикаУчетаНоменклатуры = Комплект.АналитикаУчетаНоменклатуры;
НовыйМатериал.Количество = НовоеКоличество;
Если КоличестваМатериалаПоРНПТ <> Неопределено Тогда
НовоеКоличествоПоРНПТ = КоличестваМатериалаПоРНПТ[НомерСтроки];
КоличествоПоРНПТОстаток = КоличествоПоРНПТОстаток - НовоеКоличествоПоРНПТ;
НовыйМатериал.КоличествоПоРНПТ = НовоеКоличествоПоРНПТ;
КонецЕсли;
Если Не ЗначениеЗаполнено(НовыйМатериал.КорВидЗапасов) Тогда
НовыйМатериал.КорВидЗапасов = Комплект.ВидЗапасов;
КонецЕсли;
Если КоличествоОстаток <= 0. Тогда
Прервать;
КонецЕсли;
КонецЕсли;
НомерСтроки = НомерСтроки + 1;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Процедура СформироватьВтТаблицаАналитикУчетаПартий(Запрос)
Если НЕ РасчетСебестоимостиПрикладныеАлгоритмы.ВременнаяТаблицаСуществует(Запрос, "ВтТаблицаАналитикУчетаПартий") Тогда
ТекстЗапроса = Запрос.Текст;
Запрос.Текст = ТекстЗапросаВтТаблицаАналитикУчетаПартий(Запрос);
Запрос.Выполнить();
Запрос.Текст = ТекстЗапроса;
КонецЕсли;
КонецПроцедуры
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.СборкаТоваров";
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ЗначенияПараметров = Новый Структура();
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", """""");
ПереопределениеРасчетаПараметров.Вставить("ОрдернаяСхемаПриОтгрузке",
" ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И ТаблицаТовары.Ссылка.Дата >= ТаблицаТовары.Ссылка.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ");
ПереопределениеРасчетаПараметров.Вставить("ОрдернаяСхемаПриПоступлении",
" ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТаблицаТовары.Ссылка.Дата >= ТаблицаТовары.Ссылка.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ");
ПереопределениеРасчетаПараметров.Вставить("СборкаПоЗаказу",
"ТаблицаТовары.Ссылка.ЗаказНаСборку <> ЗНАЧЕНИЕ(Документ.ЗаказНаСборку.ПустаяСсылка)");
ПереопределениеРасчетаПараметров.Вставить("НакладнаяЯвляетсяРаспоряжением",
"ТаблицаТовары.Ссылка.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)");
Если ИмяРегистра = "ЗаказыНаСборку" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаЗаказыНаСборку(Запрос, ТекстыЗапроса, ИмяРегистра, Неопределено);
СинонимТаблицыДокумента = "ТаблицаТовары";
ИначеЕсли ИмяРегистра = "ДвиженияСерийТоваров" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, ИмяРегистра, Неопределено);
СинонимТаблицыДокумента = "ТаблицаТовары";
ИначеЕсли ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
ВЗапросеЕстьИсточник = Ложь;
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
Если ДокументОбъект = Неопределено
Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ДанныеШапки.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ДанныеШапки.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТабЧасть
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТабЧасть.Ссылка)
|ГДЕ
| ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТабЧасть.КодСтроки = 0";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| ДанныеДокументаШапка КАК ТабЧасть
|ГДЕ
| ТабЧасть.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И НЕ ТабЧасть.СборкаПоЗаказу";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или (ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров
И ДокументОбъект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано) Тогда
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ДанныеШапки.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ДанныеШапки.СборкаПоЗаказу КАК ПоГрафику,
| ДанныеШапки.ЗаказНаСборку КАК РаспоряжениеВГрафике
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТабЧасть
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТабЧасть.Ссылка)
|ГДЕ
| ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ДанныеШапки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)
| И (НЕ ДанныеШапки.ОрдернаяСхемаПриПоступлении
| ИЛИ ТабЧасть.НазначениеДвиженияПоСкладскимРегистрам = ЛОЖЬ)";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или (ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров
И ДокументОбъект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано) Тогда
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.СборкаПоЗаказу КАК ПоГрафику,
| ТабЧасть.ЗаказНаСборку КАК РаспоряжениеВГрафике
|ИЗ
| ДанныеДокументаШапка КАК ТабЧасть
|ГДЕ
| ТабЧасть.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТабЧасть.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)
| И (НЕ ТабЧасть.ОрдернаяСхемаПриПоступлении
| ИЛИ ТабЧасть.НазначениеДвиженияПоСкладскимРегистрам = ЛОЖЬ)";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или (ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров
И ДокументОбъект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано) Тогда
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ДанныеШапки.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ДанныеШапки.Склад КАК Склад,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| -ТабЧасть.Количество КАК Количество,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТабЧасть
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТабЧасть.Ссылка)
|ГДЕ
| ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ДанныеШапки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)
| И ТабЧасть.НазначениеДвиженияПоСкладскимРегистрам = ЛОЖЬ
| И ДанныеШапки.ОрдернаяСхемаПриПоступлении";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Неопределено, Ложь);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или (ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров
И ДокументОбъект.Статус = Перечисления.СтатусыСборокТоваров.СобраноРазобрано) Тогда
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| -ТабЧасть.Количество КАК Количество,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике
|ИЗ
| ДанныеДокументаШапка КАК ТабЧасть
|ГДЕ
| ТабЧасть.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТабЧасть.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)
| И ТабЧасть.НазначениеДвиженияПоСкладскимРегистрам = ЛОЖЬ
| И ТабЧасть.ОрдернаяСхемаПриПоступлении";
РаспределениеЗапасовДвижения.ПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Неопределено, Ложь);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ДанныеШапки.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ДанныеШапки.Склад КАК Склад,
| ВЫБОР
| КОГДА ТабЧасть.НазначениеДвиженияПоСкладскимРегистрам = ЛОЖЬ
| ТОГДА ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИНАЧЕ ТабЧасть.Назначение
| КОНЕЦ КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ВЫБОР
| КОГДА ДанныеШапки.ИсправляемыйДокумент = ЗНАЧЕНИЕ(Документ.СборкаТоваров.ПустаяСсылка)
| ТОГДА ДанныеШапки.Ссылка
| ИНАЧЕ ДанныеШапки.ИсправляемыйДокумент
| КОНЕЦ КАК Заказ,
| ВЫБОР
| КОГДА ДанныеШапки.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ДанныеШапки.ДатаПоступления
| ИНАЧЕ ДанныеШапки.Дата
| КОНЕЦ КАК ДатаПоступления,
| ИСТИНА КАК ДоступенДляРасхода,
| ДанныеШапки.СборкаПоЗаказу КАК ПоГрафику,
| ДанныеШапки.ЗаказНаСборку КАК РаспоряжениеВГрафике,
| ТабЧасть.Количество КАК КоличествоВГрафике
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТабЧасть
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО (ДанныеШапки.Ссылка = ТабЧасть.Ссылка)
|ГДЕ
| ДанныеШапки.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ДанныеШапки.ОрдернаяСхемаПриПоступлении
| И (ДанныеШапки.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)
| ИЛИ НЕ ДанныеШапки.СборкаПоЗаказу)";
РаспределениеЗапасовДвижения.ЗапланироватьПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецЕсли;
Если ДокументОбъект = Неопределено
Или ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Склад КАК Склад,
| ВЫБОР
| КОГДА ТабЧасть.НазначениеДвиженияПоСкладскимРегистрам = ЛОЖЬ
| ТОГДА ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| ИНАЧЕ ТабЧасть.Назначение
| КОНЕЦ КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ВЫБОР
| КОГДА ТабЧасть.ИсправляемыйДокумент = ЗНАЧЕНИЕ(Документ.СборкаТоваров.ПустаяСсылка)
| ТОГДА ТабЧасть.Ссылка
| ИНАЧЕ ТабЧасть.ИсправляемыйДокумент
| КОНЕЦ КАК Заказ,
| ВЫБОР
| КОГДА ТабЧасть.ДатаПоступления <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ТабЧасть.ДатаПоступления
| ИНАЧЕ ТабЧасть.Дата
| КОНЕЦ КАК ДатаПоступления,
| ИСТИНА КАК ДоступенДляРасхода,
| ТабЧасть.СборкаПоЗаказу КАК ПоГрафику,
| ТабЧасть.ЗаказНаСборку КАК РаспоряжениеВГрафике,
| ТабЧасть.Количество КАК КоличествоВГрафике
|ИЗ
| ДанныеДокументаШапка КАК ТабЧасть
|ГДЕ
| ТабЧасть.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТабЧасть.ОрдернаяСхемаПриПоступлении
| И (ТабЧасть.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным)
| ИЛИ НЕ ТабЧасть.СборкаПоЗаказу)";
РаспределениеЗапасовДвижения.ЗапланироватьПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецЕсли;
КонецПроцедуры
#Область ПартионныйУчет
Функция ОписаниеРегистровУчетаЗатратИСебестоимости(Документ) Экспорт
ОписаниеРегистров = Новый Массив;
ОписаниеРегистров.Добавить(Метаданные.РегистрыНакопления.СебестоимостьТоваров);
Возврат ОписаниеРегистров;
КонецФункции
Функция УстановитьДополнительныеПараметрыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено) Экспорт
ДополнительныеПараметры = Новый Массив;
Если Запрос <> Неопределено Тогда
КонецЕсли;
Возврат ДополнительныеПараметры;
КонецФункции
Функция СформироватьДополнительныеТаблицыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено, ТекстыЗапроса = Неопределено) Экспорт
ДополнительныеТаблицы = Новый Массив;
Если Запрос <> Неопределено Тогда
ВыполнитьРаспределениеСтоимостиКомплектующихНаКомплекты(Запрос);
КонецЕсли;
Возврат ДополнительныеТаблицы;
КонецФункции
Функция ОписаниеОперацийУчетаСебестоимости(Документ) Экспорт
ОписаниеОпераций = Новый Массив;
#Область СписаниеНаДругиеПартии_РасходМатериалов
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ВтВидыЗапасов.Организация КАК Организация,
| ВтВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ВтВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ВтВидыЗапасов.КорВидДеятельностиНДС КАК ВидДеятельностиНДС,
| ВтВидыЗапасов.ВидДеятельностиНДС КАК ВидДеятельностиНДСДокумента,
|
| НЕОПРЕДЕЛЕНО КАК КорОрганизация,
| ВтВидыЗапасов.КорПартия КАК КорПартия,
| ВтВидыЗапасов.КорАналитикаУчетаПартий КАК КорАналитикаУчетаПартий,
| ВтВидыЗапасов.КорАналитикаУчетаНоменклатуры КАК КорАналитикаУчетаНоменклатуры,
| ВтВидыЗапасов.КорВидЗапасов КАК КорВидЗапасов,
|
| ТаблицаДокумента.Сделка КАК Сделка,
| ВтВидыЗапасов.Подразделение КАК Подразделение,
| НЕОПРЕДЕЛЕНО КАК Менеджер,
| ВтВидыЗапасов.ГруппаПродукции КАК ГруппаПродукции,
|
| ВтВидыЗапасов.Количество КАК Количество,
|
| ВтВидыЗапасов.ТипЗаписи КАК ТипЗаписи,
|
| ВтВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ВтВидыЗапасов.ИдентификаторФинЗаписи КАК ИдентификаторФинЗаписи,
| ВтВидыЗапасов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|ИЗ
| Документ.СборкаТоваров КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаСебестоимостьТоваров КАК ВтВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И ТаблицаДокумента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)
| И ВтВидыЗапасов.ТипЗаписи = ЗНАЧЕНИЕ(Перечисление.ТипыЗаписейПартий.СписаниеНаДругиеПартии)
|";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.СписаниеНаДругиеПартии,
ТекстЗапроса);
#КонецОбласти
#Область ВнутреннееПоступление_ПриходПродукции
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК ДокументИсточник,
| НЕОПРЕДЕЛЕНО КАК ПериодДокументаИсточника,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ВтВидыЗапасов.Организация КАК Организация,
| ВтВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ВтВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ВтВидыЗапасов.ВидДеятельностиНДС КАК ВидДеятельностиНДС,
| ВтВидыЗапасов.ВидДеятельностиНДС КАК ВидДеятельностиНДСДокумента,
|
| ВтВидыЗапасов.Партия КАК Партия,
| ВтВидыЗапасов.АналитикаУчетаПартий КАК АналитикаУчетаПартий,
| 0 КАК КодСтроки,
|
| ВтВидыЗапасов.КорАналитикаУчетаПартий КАК КорАналитикаУчетаПартий,
| ВтВидыЗапасов.КорАналитикаУчетаНоменклатуры КАК КорАналитикаУчетаНоменклатуры,
| ВтВидыЗапасов.КорВидЗапасов КАК КорВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК КорГруппаПродукции,
|
| ТаблицаДокумента.Сделка КАК Сделка,
| ВтВидыЗапасов.Подразделение КАК Подразделение,
| НЕОПРЕДЕЛЕНО КАК Менеджер,
| ВтВидыЗапасов.ГруппаПродукции КАК ГруппаПродукции,
|
| ВтВидыЗапасов.Количество КАК Количество,
| ВтВидыЗапасов.Стоимость КАК Стоимость,
| ВтВидыЗапасов.СтоимостьБезНДС КАК СтоимостьБезНДС,
| ВтВидыЗапасов.СтоимостьРегл КАК СтоимостьРегл,
| 0 КАК СтоимостьУпр,
| 0 КАК НДСРегл,
| 0 КАК НДСУпр,
| 0 КАК СтоимостьЗабалансовая,
| 0 КАК СтоимостьЗабалансоваяРегл,
| ВтВидыЗапасов.ДопРасходы КАК ДопРасходы,
| ВтВидыЗапасов.ДопРасходыБезНДС КАК ДопРасходыБезНДС,
| 0 КАК ДопРасходыРегл,
| 0 КАК ДопРасходыУпр,
| ВтВидыЗапасов.ПостояннаяРазница КАК ПостояннаяРазница,
| ВтВидыЗапасов.ВременнаяРазница КАК ВременнаяРазница,
| 0 КАК КорСтоимость,
|
| ВтВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ВтВидыЗапасов.ИдентификаторФинЗаписи КАК ИдентификаторФинЗаписи,
| ВтВидыЗапасов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации,
| ЗНАЧЕНИЕ(Перечисление.СпособыОпределенияСебестоимостиТоваров.ПоКорДвижению) КАК СпособОпределенияСебестоимости
|
|ИЗ
| Документ.СборкаТоваров КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаСебестоимостьТоваров КАК ВтВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И ТаблицаДокумента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)
| И ВтВидыЗапасов.ТипЗаписи = ЗНАЧЕНИЕ(Перечисление.ТипыЗаписейПартий.Партия)
|";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.ВнутреннееПоступление,
ТекстЗапроса);
#КонецОбласти
Возврат ОписаниеОпераций;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область ПроводкиРеглУчета
Функция ТекстОтраженияВРеглУчете() Экспорт
Возврат СборкаТоваровЛокализация.ТекстОтраженияВРеглУчете();
КонецФункции
Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт
Возврат СборкаТоваровЛокализация.ТекстЗапросаВТОтраженияВРеглУчете();
КонецФункции
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Если ПравоДоступа("Изменение", Метаданные.Документы.СборкаТоваров) Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "СборкаТоваров";
КомандаПечати.Представление = НСтр("ru = 'Сборка товаров'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
КомандаПечати = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати,
"ЗаданиеНаРазмещение");
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"Статус",
Перечисления.СтатусыСборокТоваров.СобраноРазобрано,
ВидСравнения.Равно);
Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати, "ЗаданиеНаОтбор");
СборкаТоваровЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СборкаТоваров") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "СборкаТоваров",
НСтр("ru = 'Сборка товаров'"),
ПечатьСборкаТоваров(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
СборкаТоваровЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
КонецПроцедуры
Функция ПечатьСборкаТоваров(МассивОбъектов, ОбъектыПечати)
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
ДопКолонка = КолонкаКодов.ИмяКолонки;
ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
ВыводитьДопКолонку = ЗначениеЗаполнено(ДопКолонка);
ЗапросПоДокументам = Новый Запрос;
ЗапросПоДокументам.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
ЗапросПоДокументам.Текст =
"
|ВЫБРАТЬ
| Документ.Ссылка КАК Ссылка,
| Документ.Номер КАК Номер,
| Документ.Дата КАК Дата,
| Документ.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| Документ.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| Документ.Склад КАК Склад,
| Документ.Организация КАК Организация,
| ПРЕДСТАВЛЕНИЕ(Документ.Склад) КАК СкладПредставление,
| ПРЕДСТАВЛЕНИЕ(Документ.Организация) КАК ОрганизацияПредставление,
| Документ.Организация.Префикс КАК Префикс,
| Документ.Ответственный.ФизическоеЛицо.Наименование КАК ОтветственныйПредставление,
| &ДопКолонкаШапка КАК ДопКолонка,
| Документ.Номенклатура КАК Номенклатура,
| Документ.Номенклатура.НаименованиеПолное КАК НоменклатураПредставление,
| Документ.Характеристика.НаименованиеПолное КАК ХарактеристикаПредставление,
|
| ВЫБОР КОГДА Документ.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) ТОГДА
| ПРЕДСТАВЛЕНИЕ(Документ.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ
| ПРЕДСТАВЛЕНИЕ(Документ.Упаковка)
| КОНЕЦ КАК Упаковка,
| Документ.КоличествоУпаковок КАК Количество,
| Документ.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Документ.Товары.(
|
| НомерСтроки КАК НомерСтроки,
| &ДопКолонкаТабЧасть КАК ДопКолонка,
| Номенклатура КАК Номенклатура,
| Номенклатура.НаименованиеПолное КАК НоменклатураПредставление,
| Характеристика.НаименованиеПолное КАК ХарактеристикаПредставление,
| Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) ТОГДА
| ПРЕДСТАВЛЕНИЕССЫЛКИ(Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ
| ПРЕДСТАВЛЕНИЕССЫЛКИ(Упаковка)
| КОНЕЦ КАК Упаковка,
| КоличествоУпаковок КАК Количество
|
| ) КАК ТаблицаТовары
|ИЗ
| Документ.СборкаТоваров КАК Документ
|
|ГДЕ
| Документ.Ссылка В(&МассивОбъектов)
|УПОРЯДОЧИТЬ ПО
| Дата, Ссылка, НомерСтроки
|";
ПодстановкаДопКолонкаШапка = "0";
ПодстановкаДопКолонкаТабЧасть = "0";
Если ВыводитьДопКолонку Тогда
ПодстановкаДопКолонкаШапка = "Документ.Номенклатура." + ДопКолонка;
ПодстановкаДопКолонкаТабЧасть = "Номенклатура." + ДопКолонка;
КонецЕсли;
ЗапросПоДокументам.Текст = СтрЗаменить(ЗапросПоДокументам.Текст, "&ДопКолонкаТабЧасть", ПодстановкаДопКолонкаТабЧасть);
ЗапросПоДокументам.Текст = СтрЗаменить(ЗапросПоДокументам.Текст, "&ДопКолонкаШапка", ПодстановкаДопКолонкаШапка);
РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс, НомерИсправляемогоДокумента, ДатаИсправляемогоДокумента");
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СборкаТоваров";
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.СборкаТоваров.ПФ_MXL_СборкаТоваров");
Если ВыводитьДопКолонку Тогда
ОбластьШапки = "ШапкаСДопКолонкой";
ОбластьСтроки = "СтрокаСДопКолонкой";
Иначе
ОбластьШапки = "ШапкаТаблицы";
ОбластьСтроки = "Строка";
КонецЕсли;
ПервыйДокумент = Истина;
ВыборкаДокументы = ЗапросПоДокументам.Выполнить().Выбрать();
Пока ВыборкаДокументы.Следующий() Цикл
НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
Если Не ПервыйДокумент Тогда
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаДокументы);
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, Строка(ВыборкаДокументы.ХозяйственнаяОперация));
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабДокумент, Макет, ОбластьМакета, ВыборкаДокументы.Ссылка);
ТабДокумент.Вывести(ОбластьМакета);
Если ВыводитьДопКолонку Тогда
ОбластьМакета = Макет.ПолучитьОбласть("КомплектКод");
ОбластьМакета.Параметры.ДопКолонка = ПредставлениеКолонкиКодов + ":";
ОбластьМакета.Параметры.ЗначениеДопКолонки = ВыборкаДокументы.ДопКолонка;
ТабДокумент.Вывести(ОбластьМакета);
КонецЕсли;
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
ОбластьМакета = Макет.ПолучитьОбласть("Комплект");
ОбластьМакета.Параметры.Комплект = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаДокументы.НоменклатураПредставление,
ВыборкаДокументы.ХарактеристикаПредставление,
,
,
ДопПараметрыПредставлениеНоменклатуры);
ОбластьМакета.Параметры.Количество = Строка(ВыборкаДокументы.Количество) + " " + ВыборкаДокументы.Упаковка;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть(ОбластьШапки);
Если ВыводитьДопКолонку Тогда
ОбластьМакета.Параметры.ДопКолонка = ПредставлениеКолонкиКодов;
КонецЕсли;
ТабДокумент.Вывести(ОбластьМакета);
ВыборкаДокументыТаблицаТовары = ВыборкаДокументы.ТаблицаТовары;
ВыборкаПоСтрокам = ВыборкаДокументыТаблицаТовары.Выбрать();
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Пока ВыборкаПоСтрокам.Следующий() Цикл
ОбластьМакета = Макет.ПолучитьОбласть(ОбластьСтроки);
ОбластьМакета.Параметры.Заполнить(ВыборкаПоСтрокам);
ОбластьМакета.Параметры.НоменклатураПредставление = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаПоСтрокам.НоменклатураПредставление,
ВыборкаПоСтрокам.ХарактеристикаПредставление,
,
,
ДопПараметрыПредставлениеНоменклатуры);
ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
ОбластьМакета.Параметры.ОтветственныйПредставление = "/"+ ВыборкаДокументы.ОтветственныйПредставление + "/";
ТабДокумент.Вывести(ОбластьМакета);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаДокументы.Ссылка);
КонецЦикла;
Возврат ТабДокумент;
КонецФункции
Функция ТекстЗапросаТоварыДокументаДляПечатиЗаданияНаОтборРазмещениеТоваров() Экспорт
ТекстаЗапроса =
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| 1 КАК НомерСтроки,
| ДанныеДокумента.Склад КАК Склад,
| &Помещение КАК Помещение,
| ДанныеДокумента.Номенклатура КАК Номенклатура,
| ДанныеДокумента.Характеристика КАК Характеристика,
| ДанныеДокумента.Серия КАК Серия
|ПОМЕСТИТЬ ТоварыДокумента
|ИЗ
| Документ.СборкаТоваров КАК ДанныеДокумента
|
|ГДЕ
| ДанныеДокумента.Ссылка В(&МассивОбъектов)
| И ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| ТОГДА &ОперацияПоступления = ЛОЖЬ
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| ТОГДА &ОперацияПоступления = ИСТИНА
| КОНЕЦ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| МИНИМУМ(ТоварыДокумента.НомерСтроки) КАК НомерСтроки,
| ДанныеДокумента.Склад КАК Склад,
| &Помещение КАК Помещение,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Серия КАК Серия
|ИЗ
| Документ.СборкаТоваров.Товары КАК ТоварыДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СборкаТоваров КАК ДанныеДокумента
| ПО ТоварыДокумента.Ссылка = ДанныеДокумента.Ссылка
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&МассивОбъектов)
| И ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| ТОГДА &ОперацияПоступления
| КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| ТОГДА НЕ &ОперацияПоступления
| КОНЕЦ
|
|СГРУППИРОВАТЬ ПО
| ТоварыДокумента.Ссылка,
| ДанныеДокумента.Склад,
| &Помещение,
| ТоварыДокумента.Номенклатура,
| ТоварыДокумента.Характеристика,
| ТоварыДокумента.Серия";
ТекстаЗапроса = СтрЗаменить(ТекстаЗапроса, "&Помещение", "ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка)");
Возврат ТекстаЗапроса;
КонецФункции
#КонецОбласти
#Область ТекущиеДела
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
ОбщиеПараметрыЗапросов = ТекущиеДелаСлужебный.ОбщиеПараметрыЗапросов();
Доступность =
(ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или ПравоДоступа("Просмотр", Метаданные.Документы.СборкаТоваров))
И (ПравоДоступа("Добавление", Метаданные.Документы.СборкаТоваров)
Или ПравоДоступа("Изменение", Метаданные.Документы.СборкаТоваров))
И ПравоДоступа("Просмотр", Метаданные.Документы.ЗаказНаСборку)
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.ЗаказыНаСборку)
И ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыНаСборку");
Если НЕ Доступность Тогда
Возврат;
КонецЕсли;
ХозОперации = Новый Массив(2);
ХозОперации[0] = Перечисления.ХозяйственныеОперации.СборкаТоваров;
ХозОперации[1] = Перечисления.ХозяйственныеОперации.РазборкаТоваров;
СборкаТоваровКОформлению = Обработки.ЖурналДокументовВнутреннегоТовародвижения.КоличествоСтрокКОформлению(
ХозОперации);
ДелоРодитель = ТекущиеДела.Найти("ВнутреннееТовародвижение", "Идентификатор");
Если ДелоРодитель = Неопределено Тогда
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = "ВнутреннееТовародвижение";
ДелоРодитель.Представление = НСтр("ru = 'Внутреннее товародвижение'");
ДелоРодитель.Владелец = Метаданные.Подсистемы.Склад;
КонецЕсли;
ДелоРодитель.ЕстьДела = ДелоРодитель.ЕстьДела Или СборкаТоваровКОформлению > 0;
ПараметрыОткрытия = ПараметрыОткрытияФормыРабочегоМеста();
ПараметрыОткрытия.ПараметрыФормы.Вставить("КлючНазначенияФормы", "ТекущиеДела");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "СборкиТоваровКОформлению";
Дело.ЕстьДела = СборкаТоваровКОформлению > 0;
Дело.Представление = НСтр("ru = 'Сборки (разборки) товаров к оформлению'");
Дело.Количество = СборкаТоваровКОформлению;
Дело.Важное = Ложь;
Дело.Форма = ПараметрыОткрытия.ИмяФормы;
Дело.ПараметрыФормы = ПараметрыОткрытия.ПараметрыФормы;
Дело.Владелец = "ВнутреннееТовародвижение";
КонецПроцедуры
#КонецОбласти
#Область Серии
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерийШапкиСборки()
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Серия,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Серия,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| СУММА(Товары.Количество) КАК Количество,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Серия,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| ТаблицаСерий.Номенклатура,
| ТаблицаСерий.Характеристика,
| ТаблицаСерий.Назначение,
| СУММА(ТаблицаСерий.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК ТаблицаСерий
|
|СГРУППИРОВАТЬ ПО
| ТаблицаСерий.Номенклатура,
| ТаблицаСерий.Характеристика,
| ТаблицаСерий.Назначение
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА Склады.ИспользоватьОрдернуюСхемуПриПоступлении
| И &Дата >= Склады.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 8
| ИНАЧЕ 7
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемке
| И ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемкеСобранныхКомплектов
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 2
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ПолитикиУчетаСерий.Склад = Склады.Ссылка
| ПО (ПолитикиУчетаСерий.Склад = &Склад)
| И ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.Назначение = ТоварыДляЗапроса.Назначение
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерийШапкиРазборки()
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Серия,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Серия,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| СУММА(Товары.Количество) КАК Количество,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Серия,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| ТаблицаСерий.Номенклатура,
| ТаблицаСерий.Характеристика,
| ТаблицаСерий.Назначение,
| СУММА(ТаблицаСерий.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК ТаблицаСерий
|
|СГРУППИРОВАТЬ ПО
| ТаблицаСерий.Номенклатура,
| ТаблицаСерий.Характеристика,
| ТаблицаСерий.Назначение
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА Склады.ИспользоватьОрдернуюСхемуПриОтгрузке
| И &Дата >= Склады.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчетСерийПоFEFO
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 6
| ИНАЧЕ 5
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 8
| ИНАЧЕ 7
| КОНЕЦ
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПоФактуОтбора
| И &ФактОтбора
| И ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриОтгрузкеКомплектовДляРазборки
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 2
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ПолитикиУчетаСерий.Склад = Склады.Ссылка
| ПО (ПолитикиУчетаСерий.Склад = &Склад)
| И ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.Назначение = ТоварыДляЗапроса.Назначение
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерийТЧСборки()
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Серия,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Серия,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| СУММА(Товары.Количество) КАК Количество,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Серия,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| ТаблицаСерий.Номенклатура,
| ТаблицаСерий.Характеристика,
| ТаблицаСерий.Назначение,
| СУММА(ТаблицаСерий.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК ТаблицаСерий
|
|СГРУППИРОВАТЬ ПО
| ТаблицаСерий.Номенклатура,
| ТаблицаСерий.Характеристика,
| ТаблицаСерий.Назначение
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА Склады.ИспользоватьОрдернуюСхемуПриОтгрузке
| И &Дата >= Склады.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчетСерийПоFEFO
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 6
| ИНАЧЕ 5
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 8
| ИНАЧЕ 7
| КОНЕЦ
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПоФактуОтбора
| И &ФактОтбора
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 2
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ПолитикиУчетаСерий.Склад = Склады.Ссылка
| ПО (ПолитикиУчетаСерий.Склад = &Склад)
| И ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.Назначение = ТоварыДляЗапроса.Назначение
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерийТЧРазборки()
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Серия,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Серия,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| СУММА(Товары.Количество) КАК Количество,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Серия,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| ТаблицаСерий.Номенклатура,
| ТаблицаСерий.Характеристика,
| ТаблицаСерий.Назначение,
| СУММА(ТаблицаСерий.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК ТаблицаСерий
|
|СГРУППИРОВАТЬ ПО
| ТаблицаСерий.Номенклатура,
| ТаблицаСерий.Характеристика,
| ТаблицаСерий.Назначение
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА Склады.ИспользоватьОрдернуюСхемуПриПоступлении
| И &Дата >= Склады.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 8
| ИНАЧЕ 7
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемке
| И ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемкеКомплектующихПослеРазборки
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 2
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ПолитикиУчетаСерий.Склад = Склады.Ссылка
| ПО (ПолитикиУчетаСерий.Склад = &Склад)
| И ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.Назначение = ТоварыДляЗапроса.Назначение
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область ЗаполнениеДокумента
Процедура ПараметрыЗапросаДляСозданияНаОсновании(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("МассивЗаказов", ДанныеОтбора.МассивЗаказов);
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", Истина);
Если ДанныеОтбора.ЗаполнятьПоОрдеру Тогда
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ТаблицаСобраноРазобраноКомплект");
ИменаЗапросов.Добавить("ТаблицаСобраноРазобраноКомплектующие");
ИменаЗапросов.Добавить("ТаблицаКомплект");
ИменаЗапросов.Добавить("ТаблицаКомплектующие");
ИменаПодзапросов.Добавить("БлокРегистрЗаказыКомплектующие");
Если ДанныеОтбора.РеквизитыШапки.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
ИменаЗапросов.Добавить("ТаблицаСерииРазборано");
КонецЕсли;
Иначе
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ТаблицаКомплект");
ИменаЗапросов.Добавить("ТаблицаКомплектующие");
ИменаПодзапросов.Добавить("БлокРегистрЗаказыКомплектующие");
Если ДанныеОтбора.РеквизитыШапки.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
ИменаЗапросов.Добавить("ТаблицаСерии");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПараметрыЗапросаДляПодбора(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("МассивЗаказов", ДанныеОтбора.МассивЗаказов);
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", ДанныеОтбора.МассивЗаказов.Количество() = 1);
ПараметрыЗапросов.Вставить("Регистратор", ДанныеОтбора.РеквизитыШапки.Ссылка);
ПараметрыЗапросов.Вставить("Организация", ДанныеОтбора.РеквизитыШапки.Организация);
ПараметрыЗапросов.Вставить("Подразделение", ДанныеОтбора.РеквизитыШапки.Подразделение);
ПараметрыЗапросов.Вставить("Склад", ДанныеОтбора.РеквизитыШапки.Склад);
ПараметрыЗапросов.Вставить("ХозяйственнаяОперация", ДанныеОтбора.РеквизитыШапки.ХозяйственнаяОперация);
ПараметрыЗапросов.Вставить("ТоварыНакладной", ДанныеОтбора.ТоварыНакладной);
ПараметрыЗапросов.Вставить("УчитыватьСобирается", Истина);
ПараметрыЗапросов.Вставить("НаправлениеДеятельности", ДанныеОтбора.РеквизитыШапки.НаправлениеДеятельности);
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ВтНакладная");
ИменаЗапросов.Добавить("ТаблицаСобраноРазобраноКомплектующие");
ИменаЗапросов.Добавить("ТаблицаКомплект");
ИменаЗапросов.Добавить("ТаблицаСобраноРазобраноКомплект");
ИменаЗапросов.Добавить("ТаблицаКомплектующие");
ИменаПодзапросов.Добавить("БлокРегистрЗаказыКомплектующие");
ИменаПодзапросов.Добавить("БлокСторноНакладнаяКомплектующие");
ИменаПодзапросов.Добавить("БлокРегистрЗаказыКомплект");
ИменаПодзапросов.Добавить("БлокСторноНакладнаяКомплект");
ИменаПодзапросов.Добавить("БлокНовыеДвиженияНакладнаяКомплектующие");
КонецПроцедуры
Процедура ПараметрыЗапросаДляПерезаполнения(ПараметрыЗапросов, ИменаЗапросов, ИменаПодзапросов, ДанныеОтбора)
ПараметрыЗапросов.Вставить("МассивЗаказов", ДанныеОтбора.МассивЗаказов);
ПараметрыЗапросов.Вставить("ОтобратьПоЗаказу", Истина);
ПараметрыЗапросов.Вставить("Регистратор", ДанныеОтбора.РеквизитыШапки.Ссылка);
ПараметрыЗапросов.Вставить("ТоварыНакладной", ДанныеОтбора.ТоварыНакладной);
ПараметрыЗапросов.Вставить("УчитыватьСобирается", Истина);
ПараметрыЗапросов.Вставить("ЗаполнятьПоСобирается", Истина);
ИменаЗапросов.Добавить("ВтЗаказыОтбор");
ИменаЗапросов.Добавить("ВтНакладная");
ИменаЗапросов.Добавить("ТаблицаСобраноРазобраноКомплект");
ИменаЗапросов.Добавить("ТаблицаСобраноРазобраноКомплектующие");
ИменаЗапросов.Добавить("ТаблицаКомплект");
ИменаЗапросов.Добавить("ТаблицаКомплектующие");
ИменаПодзапросов.Добавить("БлокРегистрЗаказыКомплектующие");
ИменаПодзапросов.Добавить("БлокСторноНакладнаяКомплектующие");
ИменаПодзапросов.Добавить("БлокНовыеДвиженияНакладнаяКомплектующие");
Если ДанныеОтбора.РеквизитыШапки.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
ИменаЗапросов.Добавить("ТаблицаСерииРазборано");
КонецЕсли;
КонецПроцедуры
Функция ТекстЗапросаВременнойТаблицыРаспоряжений()
ТекстЗапроса =
"ВЫБРАТЬ
| ЗаказНаСборку.Ссылка КАК Заказ,
| ВЫБОР КОГДА ЗаказНаСборку.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоСборка,
| ВЫБОР КОГДА ЗаказНаСборку.СтатусУказанияСерий = 10
| И ЗаказНаСборку.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК СерииУказываютсяВОтдельнойТабличнойЧасти
|ПОМЕСТИТЬ ВТЗаказыОтбор
|ИЗ
| Документ.ЗаказНаСборку КАК ЗаказНаСборку
|ГДЕ
| ВЫБОР
| КОГДА &ОтобратьПоЗаказу ТОГДА
| ЗаказНаСборку.Ссылка В (&МассивЗаказов)
| ИНАЧЕ
| ЗаказНаСборку.Подразделение = &Подразделение
| И ЗаказНаСборку.Организация = &Организация
| И ЗаказНаСборку.Склад = &Склад
| И ЗаказНаСборку.ХозяйственнаяОперация = &ХозяйственнаяОперация
| И ЗаказНаСборку.НаправлениеДеятельности = &НаправлениеДеятельности
| КОНЕЦ
| И ЗаказНаСборку.Проведен
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Регистратор КАК Заказ,
| ВЫБОР КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоСборка,
| ВЫБОР КОГДА ДанныеДокумента.СтатусУказанияСерий = 10
| И ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров) ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК СерииУказываютсяВОтдельнойТабличнойЧасти
|ИЗ
| Документ.СборкаТоваров КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Регистратор
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВременнойТаблицыНакладной()
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Количество КАК Количество,
|
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.Серия КАК Серия,
|
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.Упаковка КАК Упаковка,
|
| Таблица.Заказ КАК Заказ
|
|ПОМЕСТИТЬ ВТНакладная
|ИЗ
| &ТоварыНакладной КАК Таблица
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОстаткиРегистраЗаказыКомплектующие()
ТекстЗапроса =
" ВЫБРАТЬ
| ТаблицаОстатки.ЗаказНаСборку КАК Заказ,
| ТаблицаОстатки.КодСтроки КАК КодСтроки,
|
| ТаблицаОстатки.КОформлениюОстаток КАК КоличествоВЗаказе,
| 0 КАК КоличествоВНакладной,
|
|
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА Таблица.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров) ТОГДА
|
| Таблица.Назначение
|
| КОГДА Таблица.Обособленно ТОГДА
|
| ВЫБОР КОГДА Таблица.Ссылка.Назначение = ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) ТОГДА
| Таблица.Ссылка.НазначениеТовары
| ИНАЧЕ
| Таблица.Ссылка.Назначение
| КОНЕЦ
|
| ИНАЧЕ
|
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
|
| КОНЕЦ КАК Назначение,
|
| ТаблицаОстатки.Серия КАК Серия,
|
| ДанныеДокумента.Дата КАК Дата,
| Таблица.НомерСтроки КАК НомерСтроки,
| ДанныеДокумента.НачалоСборкиРазборки КАК ДатаОтгрузки,
| ЛОЖЬ КАК ПрисутствуетВДокументе,
|
| Таблица.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент
| ИЗ
| РегистрНакопления.ЗаказыНаСборку.Остатки(,
| ЗаказНаСборку В(
| ВЫБРАТЬ
| Таблица.Заказ КАК Заказ
| ИЗ
| ВТЗаказыОтбор КАК Таблица)) КАК ТаблицаОстатки
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку.Товары КАК Таблица
| ПО ТаблицаОстатки.ЗаказНаСборку = Таблица.Ссылка
| И ТаблицаОстатки.КодСтроки = Таблица.КодСтроки
|
|
| И ТаблицаОстатки.Номенклатура = Таблица.Номенклатура
| И ТаблицаОстатки.Характеристика = Таблица.Характеристика
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку КАК ДанныеДокумента
| ПО ТаблицаОстатки.ЗаказНаСборку = ДанныеДокумента.Ссылка";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Таблица.Упаковка",
"Таблица.Номенклатура"));
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОстаткиРегистраЗаказыКомплект()
ТекстЗапроса =
" ВЫБРАТЬ
| ТаблицаОстатки.ЗаказНаСборку КАК Заказ,
| ТаблицаОстатки.КодСтроки КАК КодСтроки,
|
| ТаблицаОстатки.КОформлениюОстаток КАК КоличествоВЗаказе,
| 0 КАК КоличествоВНакладной,
|
|
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров) ТОГДА
|
| ДанныеДокумента.Назначение
|
| КОГДА ДанныеДокумента.Обособленно ТОГДА
|
| ДанныеДокумента.Назначение
|
| ИНАЧЕ
|
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
|
| КОНЕЦ КАК Назначение,
|
| ВЫБОР КОГДА ДанныеДокумента.СтатусУказанияСерий = 10 ТОГДА
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ИНАЧЕ
| ТаблицаОстатки.Серия
| КОНЕЦ КАК Серия,
|
| ДанныеДокумента.Дата КАК Дата,
| 0 КАК НомерСтроки,
| ДанныеДокумента.НачалоСборкиРазборки КАК ДатаОтгрузки,
| ЛОЖЬ КАК ПрисутствуетВДокументе,
|
| ДанныеДокумента.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент
| ИЗ
| РегистрНакопления.ЗаказыНаСборку.Остатки(,
| ЗаказНаСборку В(
| ВЫБРАТЬ
| Таблица.Заказ КАК Заказ
| ИЗ
| ВТЗаказыОтбор КАК Таблица)) КАК ТаблицаОстатки
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку КАК ДанныеДокумента
| ПО ТаблицаОстатки.ЗаказНаСборку = ДанныеДокумента.Ссылка
|
|
| И ТаблицаОстатки.Номенклатура = ДанныеДокумента.Номенклатура
| И ТаблицаОстатки.Характеристика = ДанныеДокумента.Характеристика";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ДанныеДокумента.Упаковка",
"ДанныеДокумента.Номенклатура"));
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаСторноДвиженийНакладнаяКомплектующие()
ТекстЗапроса =
" ВЫБРАТЬ
| ТаблицаСторно.ЗаказНаСборку КАК Заказ,
| ТаблицаСторно.КодСтроки КАК КодСтроки,
|
| ТаблицаСторно.КОформлению КАК КоличествоВЗаказе,
| 0 КАК КоличествоВНакладной,
|
|
| ТаблицаСторно.Номенклатура КАК Номенклатура,
| ТаблицаСторно.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА Таблица.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров) ТОГДА
|
| Таблица.Назначение
|
| КОГДА Таблица.Обособленно ТОГДА
|
| Таблица.Ссылка.НазначениеТовары
|
| ИНАЧЕ
|
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
|
| КОНЕЦ КАК Назначение,
|
| ТаблицаСторно.Серия КАК Серия,
| ДанныеДокумента.Дата КАК Дата,
| Таблица.НомерСтроки КАК НомерСтроки,
| ДанныеДокумента.НачалоСборкиРазборки КАК ДатаОтгрузки,
| ЛОЖЬ КАК ПрисутствуетВДокументе,
|
| Таблица.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент
| ИЗ
| РегистрНакопления.ЗаказыНаСборку КАК ТаблицаСторно
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку.Товары КАК Таблица
| ПО ТаблицаСторно.ЗаказНаСборку = Таблица.Ссылка
| И ТаблицаСторно.КодСтроки = Таблица.КодСтроки
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку КАК ДанныеДокумента
| ПО ТаблицаСторно.ЗаказНаСборку = ДанныеДокумента.Ссылка
|
| ГДЕ
| ТаблицаСторно.Регистратор = &Регистратор
| И ТаблицаСторно.ЗаказНаСборку В(
| ВЫБРАТЬ
| Таблица.Заказ КАК Заказ
| ИЗ
| ВТЗаказыОтбор КАК Таблица)
|
|
| И(
| ТаблицаСторно.ЗаказНаСборку.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТаблицаСторно.ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка)
|
| ИЛИ ТаблицаСторно.ЗаказНаСборку.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ТаблицаСторно.ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Поступление))
|
| И ТаблицаСторно.Активность";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Таблица.Упаковка",
"Таблица.Номенклатура"));
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаСторноДвиженийНакладнаяКомплект()
ТекстЗапроса =
" ВЫБРАТЬ
| ТаблицаСторно.ЗаказНаСборку КАК Заказ,
| ТаблицаСторно.КодСтроки КАК КодСтроки,
|
| ТаблицаСторно.КОформлению КАК КоличествоВЗаказе,
| 0 КАК КоличествоВНакладной,
|
|
| ТаблицаСторно.Номенклатура КАК Номенклатура,
| ТаблицаСторно.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров) ТОГДА
|
| ДанныеДокумента.Назначение
|
| КОГДА ДанныеДокумента.Обособленно ТОГДА
|
| ДанныеДокумента.Назначение
|
| ИНАЧЕ
|
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
|
| КОНЕЦ КАК Назначение,
|
| ВЫБОР КОГДА ДанныеДокумента.СтатусУказанияСерий = 10 ТОГДА
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ИНАЧЕ
| ТаблицаСторно.Серия
| КОНЕЦ КАК Серия,
|
| ДанныеДокумента.Дата КАК Дата,
| 0 КАК НомерСтроки,
| ДанныеДокумента.НачалоСборкиРазборки КАК ДатаОтгрузки,
| ЛОЖЬ КАК ПрисутствуетВДокументе,
|
| ДанныеДокумента.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент
| ИЗ
| РегистрНакопления.ЗаказыНаСборку КАК ТаблицаСторно
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку КАК ДанныеДокумента
| ПО ТаблицаСторно.ЗаказНаСборку = ДанныеДокумента.Ссылка
|
| ГДЕ
| ТаблицаСторно.Регистратор = &Регистратор
| И ТаблицаСторно.ЗаказНаСборку В(
| ВЫБРАТЬ
| Таблица.Заказ КАК Заказ
| ИЗ
| ВТЗаказыОтбор КАК Таблица)
|
|
| И(
| ТаблицаСторно.ЗаказНаСборку.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТаблицаСторно.ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Поступление)
|
| ИЛИ ТаблицаСторно.ЗаказНаСборку.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ТаблицаСторно.ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка))
|
| И ТаблицаСторно.Активность";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ДанныеДокумента.Упаковка",
"ДанныеДокумента.Номенклатура"));
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаНовыеДвиженияНакладнаяКомплектующие()
ТекстЗапроса =
" ВЫБРАТЬ
| Таблица.Заказ КАК Заказ,
| Таблица.КодСтроки КАК КодСтроки,
| 0 КАК КоличествоВЗаказе,
| Таблица.Количество КАК КоличествоВНакладной,
|
|
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.Серия КАК Серия,
| НЕОПРЕДЕЛЕНО КАК Дата,
| Таблица.НомерСтроки КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК ДатаОтгрузки,
| ИСТИНА КАК ПрисутствуетВДокументе,
|
| Таблица.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент
| ИЗ
| ВтНакладная КАК Таблица";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ВЫРАЗИТЬ(Таблица.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения)",
"ВЫРАЗИТЬ(Таблица.Номенклатура КАК Справочник.Номенклатура)"));
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОстаткиРегистраЗаказыИСторноДокументаКомплект()
ТекстЗапроса =
"ВЫБРАТЬ
| МАКСИМУМ(Набор.Номенклатура) КАК Номенклатура,
| МАКСИМУМ(Набор.Характеристика) КАК Характеристика,
|
| МАКСИМУМ(Набор.Назначение) КАК Назначение,
| МАКСИМУМ(Набор.Упаковка) КАК Упаковка,
|
| СУММА(Набор.Количество) КАК Количество,
| СУММА(Набор.Количество)
| / МАКСИМУМ(Набор.УпаковкаКоэффициент) КАК КоличествоУпаковок,
| МАКСИМУМ(Набор.УпаковкаКоэффициент) КАК УпаковкаКоэффициент
|ИЗ(
| ВЫБРАТЬ
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров) ТОГДА
|
| ДанныеДокумента.Назначение
|
| КОГДА ДанныеДокумента.Обособленно ТОГДА
|
| ДанныеДокумента.Назначение
|
| ИНАЧЕ
|
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
|
| КОНЕЦ КАК Назначение,
|
|
| ДанныеДокумента.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент,
|
| ТаблицаОстатки.КОформлениюОстаток КАК Количество
|
| ИЗ
| РегистрНакопления.ЗаказыНаСборку.Остатки(,
| ЗаказНаСборку В(
| ВЫБРАТЬ
| Таблица.Заказ КАК Заказ
| ИЗ
| ВТЗаказыОтбор КАК Таблица)) КАК ТаблицаОстатки
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку КАК ДанныеДокумента
| ПО ТаблицаОстатки.ЗаказНаСборку = ДанныеДокумента.Ссылка
|
|
| И ТаблицаОстатки.Номенклатура = ДанныеДокумента.Номенклатура
| И ТаблицаОстатки.Характеристика = ДанныеДокумента.Характеристика
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаСторно.Номенклатура КАК Номенклатура,
| ТаблицаСторно.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров) ТОГДА
|
| ДанныеДокумента.Назначение
|
| КОГДА ДанныеДокумента.Обособленно ТОГДА
|
| ДанныеДокумента.Назначение
|
| ИНАЧЕ
|
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
|
| КОНЕЦ КАК Назначение,
|
| ДанныеДокумента.Упаковка КАК Упаковка,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) КАК УпаковкаКоэффициент,
|
| ТаблицаСторно.КОформлению КАК Количество
| ИЗ
| РегистрНакопления.ЗаказыНаСборку КАК ТаблицаСторно
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказНаСборку КАК ДанныеДокумента
| ПО ДанныеДокумента.Ссылка = &Регистратор
|
|
| И ТаблицаСторно.Номенклатура = ДанныеДокумента.Номенклатура
| И ТаблицаСторно.Характеристика = ДанныеДокумента.Характеристика
| ГДЕ
| ТаблицаСторно.Регистратор = &Регистратор
| И ТаблицаСторно.ЗаказНаСборку В(
| ВЫБРАТЬ
| Таблица.Заказ КАК Заказ
| ИЗ
| ВТЗаказыОтбор КАК Таблица)
| И ТаблицаСторно.Активность) КАК Набор
|;
|
|
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ДанныеДокумента.Упаковка",
"ДанныеДокумента.Номенклатура"));
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОстаткиСерийРазбираемогоКомплектаИСторноДокумента()
ТекстЗапроса =
"ВЫБРАТЬ
| Набор.Номенклатура КАК Номенклатура,
| Набор.Характеристика КАК Характеристика,
| Набор.Серия КАК Серия,
|
| СУММА(Набор.Количество) КАК Количество
|ИЗ(
| ВЫБРАТЬ
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
| ТаблицаОстатки.Серия КАК Серия,
| ТаблицаОстатки.КОформлениюОстаток КАК Количество
|
| ИЗ
| РегистрНакопления.ЗаказыНаСборку.Остатки(,
| ЗаказНаСборку В(
| ВЫБРАТЬ
| Таблица.Заказ КАК Заказ
| ИЗ
| ВТЗаказыОтбор КАК Таблица)
| И ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка)
| И Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК ТаблицаОстатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаСторно.Номенклатура КАК Номенклатура,
| ТаблицаСторно.Характеристика КАК Характеристика,
| ТаблицаСторно.Серия КАК Серия,
| ТаблицаСторно.КОформлению КАК Количество
| ИЗ
| РегистрНакопления.ЗаказыНаСборку КАК ТаблицаСторно
| ГДЕ
| ТаблицаСторно.Регистратор = &Регистратор
| И ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка)
| И Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И ТаблицаСторно.ЗаказНаСборку В(
| ВЫБРАТЬ
| Таблица.Заказ КАК Заказ
| ИЗ
| ВТЗаказыОтбор КАК Таблица)
| И ТаблицаСторно.Активность) КАК Набор
|СГРУППИРОВАТЬ ПО
| Набор.Номенклатура, Набор.Характеристика, Набор.Серия
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаСбораноРазобраноКомплектующие()
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаОстатки.ДокументОтгрузки КАК ЗаказНаСборку,
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
| ТаблицаОстатки.Назначение КАК Назначение,
| ТаблицаОстатки.Серия КАК Серия,
| 1 КАК УпаковкаКоэффициент,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ) КАК Собирается,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
| ТаблицаОстатки.КОтгрузке
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА &ЗаполнятьПоСобирается И ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ
| + ТаблицаОстатки.Собрано) КАК Количество
|ИЗ
| ВТЗаказыОтбор КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКОтгрузке КАК ТаблицаОстатки
| ПО Таблица.Заказ = ТаблицаОстатки.ДокументОтгрузки
| И ТаблицаОстатки.Активность
| И Таблица.ЭтоСборка
|
|СГРУППИРОВАТЬ ПО
| ТаблицаОстатки.ДокументОтгрузки,
| ТаблицаОстатки.Номенклатура, ТаблицаОстатки.Характеристика, ТаблицаОстатки.Назначение, ТаблицаОстатки.Серия
|
|ИМЕЮЩИЕ
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
| ТаблицаОстатки.КОтгрузке
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА &УчитыватьСобирается И ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ
| + ТаблицаОстатки.Собрано) > 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаОстатки.ДокументПоступления КАК ЗаказНаСборку,
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
| ТаблицаОстатки.Назначение КАК Назначение,
| ТаблицаОстатки.Серия КАК Серия,
| 1 КАК УпаковкаКоэффициент,
|
| 0 КАК Собирается,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
| ТаблицаОстатки.КОформлениюПоступленийПоОрдерам
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлениюПоступленийПоОрдерам
| ИНАЧЕ
| 0
| КОНЕЦ) КАК Количество
|ИЗ
| ВТЗаказыОтбор КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПоступлению КАК ТаблицаОстатки
| ПО Таблица.Заказ = ТаблицаОстатки.ДокументПоступления
| И ТаблицаОстатки.Активность
| И НЕ Таблица.ЭтоСборка
|
|СГРУППИРОВАТЬ ПО
| ТаблицаОстатки.ДокументПоступления,
| ТаблицаОстатки.Номенклатура, ТаблицаОстатки.Характеристика, ТаблицаОстатки.Назначение, ТаблицаОстатки.Склад, ТаблицаОстатки.Серия
|
|ИМЕЮЩИЕ
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
| ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ) > 0
|
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаСбораноРазобраноКомплект()
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаОстатки.ДокументОтгрузки КАК ЗаказНаСборку,
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
| ТаблицаОстатки.Назначение КАК Назначение,
| ВЫБОР КОГДА Таблица.СерииУказываютсяВОтдельнойТабличнойЧасти ТОГДА
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ИНАЧЕ
| ТаблицаОстатки.Серия
| КОНЕЦ КАК Серия,
| 1 КАК УпаковкаКоэффициент,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ) КАК Собирается,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
| ТаблицаОстатки.КОтгрузке
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА &ЗаполнятьПоСобирается И ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ
| + ТаблицаОстатки.Собрано) КАК Количество
|ИЗ
| ВТЗаказыОтбор КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКОтгрузке КАК ТаблицаОстатки
| ПО Таблица.Заказ = ТаблицаОстатки.ДокументОтгрузки
| И ТаблицаОстатки.Активность
| И НЕ Таблица.ЭтоСборка
|
|СГРУППИРОВАТЬ ПО
| ТаблицаОстатки.ДокументОтгрузки,
| ТаблицаОстатки.Номенклатура, ТаблицаОстатки.Характеристика, ТаблицаОстатки.Назначение,
| ВЫБОР КОГДА Таблица.СерииУказываютсяВОтдельнойТабличнойЧасти ТОГДА
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ИНАЧЕ
| ТаблицаОстатки.Серия
| КОНЕЦ
|
|ИМЕЮЩИЕ
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
| ТаблицаОстатки.КОтгрузке
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА &УчитыватьСобирается И ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ
| + ТаблицаОстатки.Собрано) > 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаОстатки.ДокументПоступления КАК ЗаказНаСборку,
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
| ТаблицаОстатки.Назначение КАК Назначение,
| ТаблицаОстатки.Серия КАК Серия,
| 1 КАК УпаковкаКоэффициент,
|
| 0 КАК Собирается,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
| ТаблицаОстатки.КОформлениюПоступленийПоОрдерам
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлениюПоступленийПоОрдерам
| ИНАЧЕ
| 0
| КОНЕЦ) КАК Количество
|ИЗ
| ВТЗаказыОтбор КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПоступлению КАК ТаблицаОстатки
| ПО Таблица.Заказ = ТаблицаОстатки.ДокументПоступления
| И ТаблицаОстатки.Активность
| И Таблица.ЭтоСборка
|
|СГРУППИРОВАТЬ ПО
| ТаблицаОстатки.ДокументПоступления,
| ТаблицаОстатки.Номенклатура, ТаблицаОстатки.Характеристика, ТаблицаОстатки.Назначение, ТаблицаОстатки.Склад, ТаблицаОстатки.Серия
|
|ИМЕЮЩИЕ
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
| ТаблицаОстатки.КОформлениюПоступленийПоОрдерам
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлениюПоступленийПоОрдерам
| ИНАЧЕ
| 0
| КОНЕЦ) > 0
|
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаРазбораноСерии()
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаОстатки.ДокументОтгрузки КАК ЗаказНаСборку,
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
| ТаблицаОстатки.Назначение КАК Назначение,
| ТаблицаОстатки.Серия КАК Серия,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ) КАК Собирается,
|
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
| ТаблицаОстатки.КОтгрузке
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА &ЗаполнятьПоСобирается И ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ
| + ТаблицаОстатки.Собрано) КАК Количество
|ИЗ
| ВТЗаказыОтбор КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКОтгрузке КАК ТаблицаОстатки
| ПО Таблица.Заказ = ТаблицаОстатки.ДокументОтгрузки
| И ТаблицаОстатки.Активность
| И Таблица.СерииУказываютсяВОтдельнойТабличнойЧасти
|
|СГРУППИРОВАТЬ ПО
| ТаблицаОстатки.ДокументОтгрузки,
| ТаблицаОстатки.Номенклатура, ТаблицаОстатки.Характеристика, ТаблицаОстатки.Назначение,
| ТаблицаОстатки.Серия
|
|ИМЕЮЩИЕ
| СУММА(ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) ТОГДА
| ТаблицаОстатки.КОтгрузке
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА ТаблицаОстатки.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТаблицаОстатки.Регистратор <> &Регистратор ТОГДА
| - ТаблицаОстатки.КОформлению
| ИНАЧЕ
| 0
| КОНЕЦ
| + ВЫБОР КОГДА &УчитыватьСобирается И ТаблицаОстатки.ДокументОтгрузки = &Регистратор ТОГДА
| ТаблицаОстатки.Собирается
| ИНАЧЕ
| 0
| КОНЕЦ
| + ТаблицаОстатки.Собрано) > 0
|
|;
|
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОбъединения(Имена, Тексты)
ТекстОбъединения = "";
ЭтоПервыйБлок = Истина;
Для Каждого Имя Из Имена Цикл
Если ЭтоПервыйБлок Тогда
ЭтоПервыйБлок = Ложь;
Иначе
ТекстОбъединения = ТекстОбъединения + "
|
| ОБЪЕДИНИТЬ ВСЕ
|
|";
КонецЕсли;
ТекстОбъединения = ТекстОбъединения + Тексты[Имя];
КонецЦикла;
ТекстЗапроса =
"ВЫБРАТЬ
| Набор.Заказ КАК ЗаказНаСборку,
| Набор.КодСтроки КАК КодСтроки,
|
| Набор.Номенклатура КАК Номенклатура,
| Набор.Характеристика КАК Характеристика,
| Набор.Серия КАК Серия,
| МАКСИМУМ(Набор.Назначение) КАК Назначение,
| МАКСИМУМ(Набор.Дата) КАК Дата,
| МАКСИМУМ(Набор.НомерСтроки) КАК НомерСтроки,
| МАКСИМУМ(Набор.ДатаОтгрузки) КАК ДатаОтгрузки,
| МАКСИМУМ(Набор.ПрисутствуетВДокументе) КАК ПрисутствуетВДокументе,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| Набор.Упаковка
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ) КАК УпаковкаНакладной,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Набор.Упаковка
| КОНЕЦ) КАК УпаковкаЗаказа,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| Набор.УпаковкаКоэффициент
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ) КАК УпаковкаНакладнойКоэффициент,
|
| МАКСИМУМ(ВЫБОР КОГДА Набор.ПрисутствуетВДокументе ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Набор.УпаковкаКоэффициент
| КОНЕЦ) КАК УпаковкаЗаказаКоэффициент,
|
|
| СУММА(Набор.КоличествоВЗаказе) КАК КоличествоВЗаказе,
| СУММА(Набор.КоличествоВНакладной) КАК КоличествоВНакладной
|
|ИЗ ТекстОбъединения КАК Набор
|
|СГРУППИРОВАТЬ ПО
| Набор.Заказ, Набор.КодСтроки,
| Набор.Номенклатура, Набор.Характеристика, Набор.Серия,
| ВЫБОР КОГДА Набор.КодСтроки <> 0 ТОГДА
| 0
| ИНАЧЕ
| Набор.НомерСтроки
| КОНЕЦ
|
|ИМЕЮЩИЕ
| СУММА(Набор.КоличествоВЗаказе) > 0 ИЛИ СУММА(Набор.КоличествоВНакладной) > 0
|
|УПОРЯДОЧИТЬ ПО
| Дата, Заказ, НомерСтроки
|;
|
|
|";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ТекстОбъединения", "(" + ТекстОбъединения + ")");
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтТаблицаАналитикУчетаПартий(Запрос, ТекстыЗапроса = Неопределено)
ТекстВыборкаПоляАналитик =
"ВЫБРАТЬ
| ""Товары"" КАК ИмяТабличнойЧасти,
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК Поставщик,
| НЕОПРЕДЕЛЕНО КАК Контрагент,
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаДокумента.Назначение.ВидДеятельностиНДС,ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)) <> ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| ТОГДА ТаблицаДокумента.Назначение.ВидДеятельностиНДС
| ИНАЧЕ ДанныеДокумента.СборкаПодДеятельность
| КОНЕЦ КАК НалогообложениеНДС,
| ЕСТЬNULL(ГФУ.ВидЦенностиНДС, ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.Товары)) КАК ВидЦенности,
| ТаблицаДокумента.НомерСтроки КАК КодСтроки
|ПОМЕСТИТЬ ВТПоляАналитикУчетаПартий
|ИЗ
| Документ.СборкаТоваров.Товары КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СборкаТоваров КАК ДанныеДокумента
| ПО ДанныеДокумента.Ссылка = ТаблицаДокумента.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО СпрНоменклатура.Ссылка = ТаблицаДокумента.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыФинансовогоУчетаНоменклатуры КАК ГФУ
| ПО СпрНоменклатура.ГруппаФинансовогоУчета = ГФУ.Ссылка
|ГДЕ
| ТаблицаДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ""Шапка"" КАК ИмяТабличнойЧасти,
| 0 КАК НомерСтроки,
| НЕОПРЕДЕЛЕНО КАК Поставщик,
| НЕОПРЕДЕЛЕНО КАК Контрагент,
| НЕОПРЕДЕЛЕНО КАК СтавкаНДС,
| ВЫБОР
| КОГДА ЕСТЬNULL(ДанныеДокумента.Назначение.ВидДеятельностиНДС,ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)) <> ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| ТОГДА ДанныеДокумента.Назначение.ВидДеятельностиНДС
| ИНАЧЕ ДанныеДокумента.СборкаПодДеятельность
| КОНЕЦ КАК НалогообложениеНДС,
| ЕСТЬNULL(ГФУ.ВидЦенностиНДС, ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.Товары)) КАК ВидЦенности,
| 0 КАК КодСтроки
|ИЗ
| Документ.СборкаТоваров КАК ДанныеДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО СпрНоменклатура.Ссылка = ДанныеДокумента.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГруппыФинансовогоУчетаНоменклатуры КАК ГФУ
| ПО СпрНоменклатура.ГруппаФинансовогоУчета = ГФУ.Ссылка
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
| И ДанныеДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
|";
ТекстЗапроса = Справочники.КлючиАналитикиУчетаПартий.ТекстЗапросаВтТаблицаАналитикУчетаПартий(ТекстВыборкаПоляАналитик, Запрос, ТекстыЗапроса);
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область ОтчетСостояниеВыполненияДокумента
Функция ВременнаяТаблицаТоварыРаспоряжениеНакладнаяОтгруженоДляОтчетаСостояниеВыполнения()
ТекстЗапроса = "
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| СУММА(ДокументТовары.Количество) КАК Количество,
| 0 КАК СуммаСНДС,
| ДокументТовары.Серия КАК Серия,
| ДокументТовары.Ссылка.Склад КАК Склад,
| ВтДокументы.ДокументСсылка КАК Ссылка
|ПОМЕСТИТЬ ВТТоварыРаспоряженияОтгружено
|ИЗ
| Документ.СборкаТоваров.Товары КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО (ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка)
|ГДЕ
| ДокументТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ВтДокументы.Проведен
| И ДокументТовары.Ссылка.ЗаказНаСборку = ЗНАЧЕНИЕ(Документ.ЗаказНаСборку.ПустаяСсылка)
|СГРУППИРОВАТЬ ПО
| ДокументТовары.Номенклатура,
| ДокументТовары.Характеристика,
| ДокументТовары.Серия,
| ДокументТовары.Ссылка.Склад,
| ВтДокументы.ДокументСсылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.Количество КАК Количество,
| 0 КАК СуммаСНДС,
| ДокументТовары.Серия КАК Серия,
| ДокументТовары.Склад КАК Склад,
| ВтДокументы.ДокументСсылка КАК Ссылка
|ИЗ
| Документ.СборкаТоваров КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО (ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка)
|ГДЕ
| ВтДокументы.Проведен
| И ДокументТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ДокументТовары.ЗаказНаСборку = ЗНАЧЕНИЕ(Документ.ЗаказНаСборку.ПустаяСсылка)
|;
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ВременнаяТаблицаТоварыПоступлениеДляОтчетаСостояниеВыполнения()
ТекстЗапроса = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Набор.ДокументПоступления КАК ДокументПоступления,
| Набор.Номенклатура КАК Номенклатура,
| Набор.Характеристика КАК Характеристика,
| Набор.Склад КАК Склад,
|
| ЛОЖЬ КАК РаздельнаяЗакупка,
|
| СУММА(Набор.Принимается) КАК Принимается,
| СУММА(Набор.Принято) КАК Принято,
| СУММА(Набор.Принять) КАК Принять,
| СУММА(Набор.Поступило) КАК Поступило,
|
| СУММА(Набор.КПоступлению) КАК КПоступлению,
| СУММА(Набор.Оформить) КАК Оформить,
| СУММА(Набор.Оформлено) КАК Оформлено,
|
| МАКСИМУМ(Набор.ОрдернаяСхемаПриПоступлении) КАК ОрдернаяСхемаПриПоступлении
|
|ПОМЕСТИТЬ ВТТоварыПоступление
|ИЗ(
| ВЫБРАТЬ
| ТоварыКПоступлению.ДокументПоступления КАК ДокументПоступления,
| ТоварыКПоступлению.Номенклатура КАК Номенклатура,
| ТоварыКПоступлению.Характеристика КАК Характеристика,
| ТоварыКПоступлению.Склад КАК Склад,
|
| ТоварыКПоступлению.ПринимаетсяКонечныйОстаток КАК Принимается,
| ТоварыКПоступлению.КОформлениюОрдеровРасход КАК Принято,
| ТоварыКПоступлению.КОформлениюОрдеровКонечныйОстаток КАК Принять,
| ТоварыКПоступлению.КОформлениюОрдеровРасход КАК Поступило,
|
| 0 КАК КПоступлению,
| 0 КАК Оформить,
| 0 КАК Оформлено,
|
| ВЫБОР КОГДА ТоварыКПоступлению.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И &ТекущаяДата >= ТоварыКПоступлению.Склад.ДатаНачалаОрдернойСхемыПриПоступлении ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПоступлении
| ИЗ
| РегистрНакопления.ТоварыКПоступлению.ОстаткиИОбороты( , , , ,
| ДокументПоступления В(
| ВЫБРАТЬ
| ВтДокументы.ДокументСсылка
| ИЗ
| ВтДокументы КАК ВтДокументы)) КАК ТоварыКПоступлению
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТоварыКОформлению.Ссылка КАК ДокументПоступления,
| ТоварыКОформлению.Номенклатура КАК Номенклатура,
| ТоварыКОформлению.Характеристика КАК Характеристика,
| ТоварыКОформлению.Ссылка.Склад КАК Склад,
|
| 0 КАК Принимается,
| 0 КАК Принято,
| 0 КАК Принять,
| 0 КАК Поступило,
|
| ТоварыКОформлению.Количество КАК КПоступлению,
| 0 КАК Оформить,
| ТоварыКОформлению.Количество КАК Оформлено,
|
| ВЫБОР КОГДА ТоварыКОформлению.Ссылка.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И &ТекущаяДата >= ТоварыКОформлению.Ссылка.Склад.ДатаНачалаОрдернойСхемыПриПоступлении ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПоступлении
|ИЗ
| Документ.СборкаТоваров.Товары КАК ТоварыКОформлению
|ГДЕ
| ТоварыКОформлению.Ссылка.ЗаказНаСборку = ЗНАЧЕНИЕ(Документ.ЗаказНаСборку.ПустаяСсылка)
| И ТоварыКОформлению.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ТоварыКОформлению.Ссылка В(
| ВЫБРАТЬ
| ВтДокументы.ДокументСсылка
| ИЗ
| ВтДокументы КАК ВтДокументы)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТоварыКОформлению.Ссылка КАК ДокументПоступления,
| ТоварыКОформлению.Номенклатура КАК Номенклатура,
| ТоварыКОформлению.Характеристика КАК Характеристика,
| ТоварыКОформлению.Склад КАК Склад,
|
| 0 КАК Принимается,
| 0 КАК Принято,
| 0 КАК Принять,
| 0 КАК Поступило,
|
| ТоварыКОформлению.Количество КАК КПоступлению,
| 0 КАК Оформить,
| ТоварыКОформлению.Количество КАК Оформлено,
|
| ВЫБОР КОГДА ТоварыКОформлению.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И &ТекущаяДата >= ТоварыКОформлению.Склад.ДатаНачалаОрдернойСхемыПриПоступлении ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПоступлении
|ИЗ
| Документ.СборкаТоваров КАК ТоварыКОформлению
|ГДЕ
| ТоварыКОформлению.ЗаказНаСборку = ЗНАЧЕНИЕ(Документ.ЗаказНаСборку.ПустаяСсылка)
| И ТоварыКОформлению.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ТоварыКОформлению.Ссылка В(
| ВЫБРАТЬ
| ВтДокументы.ДокументСсылка
| ИЗ
| ВтДокументы КАК ВтДокументы)) КАК Набор
|СГРУППИРОВАТЬ ПО
| Набор.ДокументПоступления,
| Набор.Номенклатура, Набор.Характеристика, Набор.Склад
|
|;
|
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ВременнаяТаблицаТоварыРаспоряженияПоступлениеНакладнаяДляОтчетаСостояниеВыполнения()
ТекстЗапроса = "
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| СУММА(ДокументТовары.Количество) КАК Количество,
| 0 КАК СуммаСНДС,
| ДокументТовары.Ссылка.Склад КАК Склад,
| ВтДокументы.ДокументСсылка КАК Ссылка
|ПОМЕСТИТЬ ВТТоварыРаспоряженияПоступление
|ИЗ
| Документ.СборкаТоваров.Товары КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО (ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка)
|ГДЕ
| ВтДокументы.Проведен
| И ДокументТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РазборкаТоваров)
| И ДокументТовары.Ссылка.ЗаказНаСборку = ЗНАЧЕНИЕ(Документ.ЗаказНаСборку.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| ДокументТовары.Номенклатура,
| ДокументТовары.Характеристика,
| ДокументТовары.Ссылка.Склад,
| ВтДокументы.ДокументСсылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.Количество КАК Количество,
| 0 КАК СуммаСНДС,
| ДокументТовары.Склад КАК Склад,
| ВтДокументы.ДокументСсылка КАК Ссылка
|ИЗ
| Документ.СборкаТоваров КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО (ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка)
|ГДЕ
| ВтДокументы.Проведен
| И ДокументТовары.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.СборкаТоваров)
| И ДокументТовары.ЗаказНаСборку = ЗНАЧЕНИЕ(Документ.ЗаказНаСборку.ПустаяСсылка)
|;
|";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область ВидДеятельностиНДС
Функция ПараметрыЗаполненияВидаДеятельностиНДС(Документ) Экспорт
Реквизиты = Новый Структура("Дата, Организация, Склад, НаправлениеДеятельности");
Если ТипЗнч(Документ) = Тип("ДокументСсылка.СборкаТоваров") Тогда
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Документ, Реквизиты);
Иначе
ЗаполнитьЗначенияСвойств(Реквизиты, Документ);
КонецЕсли;
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияВидаДеятельностиНДС();
ПараметрыЗаполнения.Дата = Реквизиты.Дата;
ПараметрыЗаполнения.Склад = Реквизиты.Склад;
ПараметрыЗаполнения.Организация = Реквизиты.Организация;
ПараметрыЗаполнения.НаправлениеДеятельности = Реквизиты.НаправлениеДеятельности;
ПараметрыЗаполнения.СборкаРазборкаТоваров = Истина;
Возврат ПараметрыЗаполнения;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли