#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Организация", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение, Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Менеджер", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор, Менеджер";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Подразделение", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Склад", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Организация";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Договор, Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "БанковскийСчетОрганизации", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Контрагент";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Договор, Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Контрагент";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "БанковскийСчетКонтрагента", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Склад, Менеджер";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Склад";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "Отпустил", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Склад, Менеджер";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Отпустил";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Склад";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов, "ОтпустилДолжность", Параметры);
КонецПроцедуры
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("ОборотныеРегистрыУправленческогоУчета");
МеханизмыДокумента.Добавить("ОперативныйУчетТоваровОрганизаций");
МеханизмыДокумента.Добавить("Продажи");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СебестоимостьИПартионныйУчет");
МеханизмыДокумента.Добавить("СерийныйУчет");
МеханизмыДокумента.Добавить("СуммыДокументовВВалютахУчета");
МеханизмыДокумента.Добавить("АдресныйСклад");
МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
МеханизмыДокумента.Добавить("УчетНДС");
МеханизмыДокумента.Добавить("ИсправлениеДокументов");
ПередачаТоваровХранителюЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ПередачаТоваровХранителю") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры);
ПередачаТоваровХранителюЛокализация.ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
ПроведениеДокументов.ДобавитьЗапросыСторноДвижений(Запрос, ТекстыЗапроса, Регистры, ПустаяСсылка().Метаданные());
РасчетСебестоимостиПроведениеДокументов.ОтразитьВМеханизмеУчетаЗатратИСебестоимости(ДокументСсылка, Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
#Область СозданиеНаОсновании
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ПередачаТоваровХранителю)
И ПолучитьФункциональнуюОпцию("ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи") Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ПередачаТоваровХранителю.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(
Метаданные.Документы.ПередачаТоваровХранителю);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции =
"ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи,
|ИспользоватьКомиссиюПриПродажах,
|ИспользоватьПроизводствоНаСтороне2_5";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
НастройкиОпераций = Новый Соответствие;
НастройкиОпераций.Вставить(
Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи,
ПолучитьФункциональнуюОпцию("ИспользоватьАктыРасхожденийПослеОтгрузки"));
НастройкиОпераций.Вставить(
Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
ПолучитьФункциональнуюОпцию("ИспользоватьАктыРасхожденийПослеОтгрузки"));
НастройкиОпераций.Вставить(
Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5,
ПолучитьФункциональнуюОпцию("ИспользоватьАктыРасхожденийПослеОтгрузкиПоПередачамПереработчику2_5"));
Для каждого НастройкаОперации Из НастройкиОпераций Цикл
Если Не НастройкаОперации.Значение Тогда
Продолжить;
КонецЕсли;
ХозяйственнаяОперация = НастройкаОперации.Ключ;
Команда = Документы.АктОРасхожденияхПослеОтгрузки.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда, "ХозяйственнаяОперация", ХозяйственнаяОперация, ВидСравненияКомпоновкиДанных.Равно);
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(ХозяйственнаяОперация);
Команда.Представление = Обработчик.ЗаголовокФормыАкта();
КонецЕсли;
КонецЦикла;
Команда = Документы.ПоступлениеТоваровОтХранителя.ДобавитьКомандуСоздатьНаОснованииПоступлениеОтХранителя(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи,
ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
Команда = Документы.ПоступлениеТоваровОтХранителя.ДобавитьКомандуСоздатьНаОснованииПоступлениеОтКомиссионера(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
Команда = Документы.ПоступлениеТоваровОтХранителя.ДобавитьКомандуСоздатьНаОснованииВозвратОтПереработчика(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5,
ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
Команда = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
СписокДоступныхОпераций = Новый Массив();
СписокДоступныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи);
СписокДоступныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"ХозяйственнаяОперация",
СписокДоступныхОпераций,
ВидСравненияКомпоновкиДанных.ВСписке);
КонецЕсли;
Документы.ПоручениеЭкспедитору.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании);
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Справочники.Претензии.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
ИсправлениеДокументов.ДобавитьКомандуИсправление(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
ИсправлениеДокументов.ДобавитьКомандуСторно(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
ПередачаТоваровХранителюЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании) Экспорт
КомиссионнаяПродажа = ПравоДоступа("Добавление", Метаданные.Документы.ПередачаТоваровХранителю)
И ПолучитьФункциональнуюОпцию("ИспользоватьКомиссиюПриПродажах");
ПередачаНаХранение = ПравоДоступа("Добавление", Метаданные.Документы.ПередачаТоваровХранителю);
Если ПередачаНаХранение ИЛИ КомиссионнаяПродажа Тогда
ИмяОбработчика = "СозданиеНаОснованииУТКлиент.ПередачаТоваровХранителюСоздатьНаОснованииЗаказа";
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = ИмяОбработчика;
КомандаСоздатьНаОсновании.Идентификатор = "СоздатьНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(
Метаданные.Документы.ПередачаТоваровХранителю);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
МассивФО = Новый Массив();
Если ПередачаНаХранение Тогда
МассивФО.Добавить("ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи");
КонецЕсли;
Если КомиссионнаяПродажа Тогда
МассивФО.Добавить("ИспользоватьКомиссиюПриПродажах");
КонецЕсли;
КомандаСоздатьНаОсновании.ФункциональныеОпции = СтрСоединить(МассивФО,",");
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьНаОснованииЗаказаПереработчику(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ПередачаТоваровХранителю) Тогда
ИмяОбработчика = "ПереработкаНаСторонеКлиент.ПередачаТоваровХранителюСоздатьНаОснованииЗаказаПереработчику";
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = ИмяОбработчика;
КомандаСоздатьНаОсновании.Идентификатор = "СоздатьНаОснованииЗаказаПереработчику";
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Передача сырья переработчику'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьПроизводствоНаСтороне2_5";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
#КонецОбласти
#Область Отчеты
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
Отчеты.ОстаткиТоваровОрганизаций.ДобавитьКомандуОтчета(КомандыОтчетов);;
КомандаОтчет = Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияРеализацииАкта(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 1;
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
КомандаОтчет,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5,
ВидСравненияКомпоновкиДанных.НеРавно);
КонецЕсли;
ПередачаТоваровХранителюЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
#КонецОбласти
#Область ПроводкиРеглУчета
Функция ТекстОтраженияВРеглУчете() Экспорт
Возврат ПередачаТоваровХранителюЛокализация.ТекстОтраженияВРеглУчете();
КонецФункции
Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт
Возврат ПередачаТоваровХранителюЛокализация.ТекстЗапросаВТОтраженияВРеглУчете();
КонецФункции
#КонецОбласти
#Область Назначения
Функция МакетФормыВыбораНазначений() Экспорт
МакетФормы = Справочники.Назначения.МакетФормыВыбораНазначений();
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы);
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ШаблонНазначения.ВидимыеОтборыНаФорме.Вставить("НаправлениеДеятельности", НСтр("ru='Только назначения направления деятельности ""%1""'"));
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ОбеспечениеЗаказов", Истина, "Объект.Товары.Назначение");
ОписаниеКолонок.Колонки.НайтиПоЗначению("ВНаличии").Пометка = Истина;
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.Товары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.Товары.Характеристика";
ОписаниеКолонок.ПутиКДанным.Склад = "Объект.Товары.Склад";
Возврат МакетФормы;
КонецФункции
Функция ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности(Форма) Экспорт
ПорядокОбработкиДокумента = НаправленияДеятельностиСервер.ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности();
ПорядокОбработкиДокумента.ИменаТабличныхЧастейДляЗаполненияНазначения = "Товары";
ТаблицаУсловий = НаправленияДеятельностиСервер.УсловияОбработкиНазначенийВСтроках("ТипНоменклатуры,КодСтроки");
ПорядокОбработкиДокумента.УсловияОбработкиСтрок.Вставить("Товары", ТаблицаУсловий);
ПорядокОбработкиДокумента.ИмяЭлементаФормыОбособленно = "ТоварыОбособленно";
ПорядокОбработкиДокумента.ИмяГруппыЭлементовКомандыОбособленно = "ТоварыГруппаКомандыОбособленно";
ПорядокОбработкиДокумента.ИмяРеквизитаПоЗаказу = "ПередачаПоЗаказам";
Возврат ПорядокОбработкиДокумента;
КонецФункции
#КонецОбласти
#Область Серии
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "Склад,ХозяйственнаяОперация,Дата";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ИспользоватьСерииНоменклатуры =
ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыСклад", Новый Структура());
УчитыватьСебестоимостьПоСериям =
ПолучитьФункциональнуюОпцию("УчитыватьСебестоимостьПоСериямСклад", Новый Структура());
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.ПередачаТоваровХранителю";
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ИспользоватьСерииНоменклатуры;
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаКлиенту);
ПараметрыУказанияСерий.ЭтоНакладная = Истина;
ПараметрыУказанияСерий.Дата = Объект.Дата;
ПараметрыУказанияСерий.ПланированиеОтбора = Истина;
ПараметрыУказанияСерий.ФактОтбора = Истина;
ПараметрыУказанияСерий.ИмяПоляСклад = "Склад";
ПараметрыУказанияСерий.ИмяПоляСкладОтправитель = "Склад";
ПараметрыУказанияСерий.ИмяПоляСкладПолучатель = "Договор";
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Склад");
ПараметрыУказанияСерий.ПоляСвязи.Добавить("Назначение");
ПараметрыУказанияСерий.ПоляСвязи.Добавить("НазначениеОтправителя");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерий");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийНаСкладах");
ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерийПереданныхТоваров");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("ПередачаПоЗаказам");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Товары_ЗаказКлиента");
ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Товары_КодСтроки");
ПараметрыУказанияСерий.РегистрироватьСерии = НоменклатураКлиентСервер.НеобходимоРегистрироватьСерии(
ПараметрыУказанияСерий);
ПараметрыУказанияСерий.ПараметрыЗапроса.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Склад КАК Склад,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.НазначениеОтправителя КАК НазначениеОтправителя,
| Товары.Серия КАК Серия,
| Товары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| Товары.СтатусУказанияСерийНаСкладах КАК СтатусУказанияСерийНаСкладах,
| Товары.СтатусУказанияСерийПереданныхТоваров КАК СтатусУказанияСерийПереданныхТоваров,
| Товары.Количество КАК Количество
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Назначение КАК Назначение,
| Товары.НазначениеОтправителя КАК НазначениеОтправителя,
| Товары.Серия КАК Серия,
| Товары.Склад КАК Склад,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры,
| СУММА(Товары.Количество) КАК Количество
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Назначение,
| Товары.НазначениеОтправителя,
| Товары.Серия,
| Товары.Склад,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.Назначение КАК Назначение,
| Серии.НазначениеОтправителя КАК НазначениеОтправителя,
| Серии.Склад КАК Склад,
| Серии.Количество КАК Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| Серии.Номенклатура КАК Номенклатура,
| Серии.Характеристика КАК Характеристика,
| Серии.Назначение КАК Назначение,
| Серии.НазначениеОтправителя КАК НазначениеОтправителя,
| Серии.Склад КАК Склад,
| СУММА(Серии.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК Серии
|
|СГРУППИРОВАТЬ ПО
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.Назначение,
| Серии.НазначениеОтправителя,
| Серии.Склад
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| Товары.СтатусУказанияСерийНаСкладах КАК СтарыйСтатусУказанияСерийНаСкладах,
| Товары.СтатусУказанияСерийПереданныхТоваров КАК СтарыйСтатусУказанияСерийПереданныхТоваров,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА
| ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА &ТолькоСерииДляСебестоимости
| ТОГДА 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
| ИНАЧЕ
| ВЫБОР
| КОГДА ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА
| ВЫБОР
| КОГДА (&ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| И ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчетСерийВПереданныхНаХранениеТоварах)
| ИЛИ (&ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| И ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчетСерийВПереданныхНаКомиссиюТоваров)
| ИЛИ ТоварыДляЗапроса.ВидНоменклатуры.ПолитикаУчетаСерий.УчетСерийПереданныхПереработчикуТоваров
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПереработчику2_5)
| ТОГДА
| ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 18
| ИНАЧЕ 17
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ КАК СтатусУказанияСерийПереданныхТоваров
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.Назначение = ТоварыДляЗапроса.Назначение
| И Товары.НазначениеОтправителя = ТоварыДляЗапроса.НазначениеОтправителя
| И Товары.Склад = ТоварыДляЗапроса.Склад
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| И ТоварыДляЗапроса.НазначениеОтправителя = СерииДляЗапроса.НазначениеОтправителя
| И ТоварыДляЗапроса.Склад = СерииДляЗапроса.Склад
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ПО ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| И ТоварыДляЗапроса.Склад = ПолитикиУчетаСерий.Склад
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ТоварыДляЗапроса.Склад = Склады.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерийНаСкладах,
| Статусы.СтатусУказанияСерийПереданныхТоваров КАК СтатусУказанияСерийПереданныхТоваров,
| ВЫБОР
| КОГДА Статусы.СтатусУказанияСерий = 0
| ТОГДА Статусы.СтатусУказанияСерийПереданныхТоваров
| ИНАЧЕ Статусы.СтатусУказанияСерий
| КОНЕЦ КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| ВЫБОР
| КОГДА Статусы.СтатусУказанияСерий = 0
| ТОГДА Статусы.СтатусУказанияСерийПереданныхТоваров
| ИНАЧЕ Статусы.СтатусУказанияСерий
| КОНЕЦ <> Статусы.СтарыйСтатусУказанияСерий
| ИЛИ Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерийНаСкладах
| ИЛИ Статусы.СтатусУказанияСерийПереданныхТоваров <> Статусы.СтарыйСтатусУказанияСерийПереданныхТоваров
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
Функция РаспоряжениеНаВыполнениеСкладскойОперации(ЗначенияПолейДляОпределенияРаспоряжения) Экспорт
Если ЗначенияПолейДляОпределенияРаспоряжения.Товары_КодСтроки <> 0 Тогда
Возврат ЗначенияПолейДляОпределенияРаспоряжения.Товары_ЗаказКлиента;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область Доставка
Функция ТекстЗапросаРеквизитыДоставки() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Шапка.Номер КАК Номер,
| Шапка.Проведен КАК Проведен,
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Шапка.Партнер КАК ПолучательОтправитель,
| Шапка.ПеревозчикПартнер КАК Перевозчик,
| Шапка.СпособДоставки КАК СпособДоставки,
| Шапка.ЗонаДоставки КАК Зона,
|
| ВЫБОР КОГДА СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаПоАдресу)
| ТОГДА Шапка.АдресДоставкиПеревозчика
| ИНАЧЕ Шапка.АдресДоставки
| КОНЕЦ КАК Адрес,
|
| ВЫБОР КОГДА СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаПоАдресу)
| ТОГДА Шапка.АдресДоставкиПеревозчикаЗначенияПолей
| ИНАЧЕ Шапка.АдресДоставкиЗначенияПолей
| КОНЕЦ КАК АдресЗначенияПолей,
|
| Шапка.ВремяДоставкиС КАК ВремяС,
| Шапка.ВремяДоставкиПо КАК ВремяПо,
| Шапка.ДополнительнаяИнформацияПоДоставке
| КАК ДополнительнаяИнформация,
| Т.Склад КАК Склад,
| ИСТИНА КАК ДоставитьПолностью,
| Шапка.ОсобыеУсловияПеревозки КАК ОсобыеУсловияПеревозки,
| Шапка.ОсобыеУсловияПеревозкиОписание КАК ОсобыеУсловияПеревозкиОписание,
| Шапка.Соглашение.РазбиватьРасходныеОрдераПоРаспоряжениям КАК РазбиватьРасходныеОрдераПоРаспоряжениям
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| Т.Ссылка КАК Ссылка,
| Т.Склад КАК Склад
| ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК Т
| ГДЕ
| Т.Ссылка В(&Ссылки)
| ) КАК Т
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПередачаТоваровХранителю КАК Шапка
| ПО (Шапка.Ссылка = Т.Ссылка)
|ГДЕ
| НЕ Шапка.ПередачаПоЗаказам
| ИЛИ НЕ &ИспользоватьРасширенныеВозможностиЗаказаКлиента
| ИЛИ Шапка.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| И НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками";
ПодставитьТекстИспользоватьРасширенныеВозможностиЗаказаКлиента(ТекстЗапроса, "Шапка");
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область СостояниеВыполненияДокументов
Функция СтруктураСостояниеВыполненияДокумента() Экспорт
СтруктураСостояние = Отчеты.СостояниеВыполненияДокументов.ИнициализироватьСтруктуруСостояниеВыполненияДокумента();
СтруктураДопЗапросов = Новый Структура("ТекстЗапросаВТТоварыРаспоряжениеНакладнаяОтгружено",
ТекстЗапросаВТТоварыРаспоряжениеНакладнаяОтгружено());
СтруктураСостояние.Вставить("ЭтоНакладная", Истина);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтгрузка", 1);
СтруктураСостояние.Вставить("ИмяТЧТоварыОтгрузка", "Товары");
СтруктураСостояние.Вставить("ИмяПоляНакладнаяПоЗаказам", "ПередачаПоЗаказам");
СтруктураСостояние.Вставить("ЕстьСуммовыеПоказателиОтгрузки", Истина);
СтруктураСостояние.Вставить("СтруктураДопЗапросов", СтруктураДопЗапросов);
СтруктураСостояние.Вставить("ИмяПоляСумма", "Сумма");
Возврат СтруктураСостояние
КонецФункции
#КонецОбласти
#Область ОснованиеДляПечати
Функция СтруктураОснованияДляПечати(Объект) Экспорт
ПорядокРасчетов = ВзаиморасчетыСервер.ПорядокРасчетов(Ложь,,Объект.Соглашение, Объект.Договор);
СтруктураОснования = СтруктураОснования(Объект, ПорядокРасчетов);
Если ЗначениеЗаполнено(СтруктураОснования.Основание) Тогда
СтруктураОснования.Основание = СтруктураОснования.Основание + ", " + НСтр("ru='передача на хранение'");
Иначе
СтруктураОснования.Основание = НСтр("ru='Передача на хранение.'");
КонецЕсли;
Возврат СтруктураОснования;
КонецФункции
Функция ТаблицаОснованийДляПечати(Объект) Экспорт
ТаблицаОснований = Новый ТаблицаЗначений;
ТаблицаОснований.Колонки.Добавить("Основание", Новый ОписаниеТипов("Строка", , , , Новый КвалификаторыСтроки(300)));
ТаблицаОснований.Колонки.Добавить("ОснованиеДата", Новый ОписаниеТипов("Дата", , , , ,
Новый КвалификаторыДаты(ЧастиДаты.Дата)));
ТаблицаОснований.Колонки.Добавить("ОснованиеНомер", Новый ОписаниеТипов("Строка", , , ,
Новый КвалификаторыСтроки(128)));
СтруктураОснования = СтруктураОснования(Объект, Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов);
Если ЗначениеЗаполнено(СтруктураОснования.Основание) Тогда
ДобавленнаяСтрока = ТаблицаОснований.Добавить();
ЗаполнитьЗначенияСвойств(ДобавленнаяСтрока, СтруктураОснования);
ДобавленнаяСтрока.Основание = СтруктураОснования.Основание + ", " + НСтр("ru='передача на хранение'");
Если ЗначениеЗаполнено(СтруктураОснования.ОснованиеДата)
И ЗначениеЗаполнено(СтруктураОснования.ОснованиеНомер) Тогда
ТекстРасширенный = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 № %2 от %3'"),
СтруктураОснования.Основание,
СтруктураОснования.ОснованиеНомер,
Формат(СтруктураОснования.ОснованиеДата, "ДЛФ=DD"));
ТекстРасширенный = ТекстРасширенный + ", " + НСтр("ru='передача на хранение'");
ДобавленнаяСтрока = ТаблицаОснований.Добавить();
ЗаполнитьЗначенияСвойств(ДобавленнаяСтрока, СтруктураОснования);
ДобавленнаяСтрока.Основание = ТекстРасширенный;
КонецЕсли;
КонецЕсли;
СтруктураОснования = СтруктураОснования(Объект, Перечисления.ПорядокРасчетов.ПоЗаказам);
Если ЗначениеЗаполнено(СтруктураОснования.Основание) Тогда
ДобавленнаяСтрока = ТаблицаОснований.Добавить();
ЗаполнитьЗначенияСвойств(ДобавленнаяСтрока, СтруктураОснования);
ДобавленнаяСтрока.Основание = СтруктураОснования.Основание + ", " + НСтр("ru='передача на хранение'");
КонецЕсли;
Если ТаблицаОснований.Количество() = 0 Тогда
ДобавленнаяСтрока = ТаблицаОснований.Добавить();
ДобавленнаяСтрока.Основание = НСтр("ru='Передача на хранение'");
КонецЕсли;
Возврат ТаблицаОснований;
КонецФункции
#КонецОбласти
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Партнер)
| И ЗначениеРазрешено(Склад)
| И ЗначениеРазрешено(Подразделение)
| И ЗначениеРазрешено(ХозяйственнаяОперация)";
КонецПроцедуры
#КонецОбласти
Процедура ЗаполнитьПоОстаткамЗаказов(ДанныеОтбора, Товары, СкладПередачи, МассивЗаказов, ПараметрыЗаполнения, ШтрихкодыУпаковок) Экспорт
ОтображатьСообщение = Истина;
ПодборПоЗаказамОрдерам = Ложь;
ПараметрыОформления = Неопределено;
Если ПараметрыЗаполнения.Свойство("ОтображатьСообщение") Тогда
ОтображатьСообщение = ПараметрыЗаполнения.ОтображатьСообщение;
КонецЕсли;
Если ПараметрыЗаполнения.Свойство("ПодборПоЗаказамОрдерам") Тогда
ПодборПоЗаказамОрдерам = ПараметрыЗаполнения.ПодборПоЗаказамОрдерам;
КонецЕсли;
Если ПараметрыЗаполнения.Свойство("ПараметрыОформления", ПараметрыОформления) Тогда
Если ПараметрыОформления <> Неопределено Тогда
ЗаполнениеПоЗаказам = ПараметрыОформления.ПоЗаказам;
ЗаполнениеПоОрдерам = ПараметрыОформления.ПоОрдерам;
КонецЕсли;
КонецЕсли;
РезультатЗапросаПоОстаткамЗаказов = ПолучитьРезультатЗапросаПоОстаткамЗаказов(
ДанныеОтбора, ПараметрыЗаполнения, СкладПередачи, МассивЗаказов);
Если РезультатЗапросаПоОстаткамЗаказов[8].Пустой()
И РезультатЗапросаПоОстаткамЗаказов[9].Пустой()
И ПолучитьФункциональнуюОпцию("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента")
И ОтображатьСообщение Тогда
ТекстОшибки = ОбеспечениеВДокументахСервер.ТекстОшибкиНетТоваровДоступныхДляОтгрузки();
ВызватьИсключение ТекстОшибки;
КонецЕсли;
МассивЗаказовКлиентов = Новый Массив();
ВыборкаТовары = РезультатЗапросаПоОстаткамЗаказов[8].Выбрать();
Пока ВыборкаТовары.Следующий() Цикл
Если МассивЗаказовКлиентов.Найти(ВыборкаТовары.ЗаказКлиента) = Неопределено Тогда
МассивЗаказовКлиентов.Добавить(ВыборкаТовары.ЗаказКлиента);
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ВалютаДокумента", ДанныеОтбора.Валюта);
Запрос.УстановитьПараметр("МассивЗаказовКлиентов", МассивЗаказовКлиентов);
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| НАЧАЛОПЕРИОДА(ТаблицаЗаказов.Дата, ДЕНЬ) КАК Дата,
| ТаблицаЗаказов.Ссылка КАК ЗаказКлиента,
| ТаблицаЗаказов.Валюта КАК Валюта,
| ВЫБОР
| КОГДА ТаблицаЗаказов.Валюта <> &ВалютаДокумента
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ПересчитатьВВалютуДокумента
|ИЗ
| Документ.ЗаказКлиента КАК ТаблицаЗаказов
|ГДЕ
| ТаблицаЗаказов.Ссылка В(&МассивЗаказовКлиентов)
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| НАЧАЛОПЕРИОДА(ОбъединеннаяТаблицаЗаказов.Дата, ДЕНЬ) КАК Дата,
| ОбъединеннаяТаблицаЗаказов.Валюта КАК Валюта,
| ОбъединеннаяТаблицаЗаказов.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета
|ИЗ
| (ВЫБРАТЬ
| НАЧАЛОПЕРИОДА(ТаблицаЗаказов.Дата, ДЕНЬ) КАК Дата,
| ТаблицаЗаказов.Валюта КАК Валюта,
| ТаблицаЗаказов.Организация.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета
| ИЗ
| Документ.ЗаказКлиента КАК ТаблицаЗаказов
| ГДЕ
| ТаблицаЗаказов.Ссылка В(&МассивЗаказовКлиентов)
| И ТаблицаЗаказов.Валюта <> &ВалютаДокумента) КАК ОбъединеннаяТаблицаЗаказов";
Обработчик = ОбработчикДействий(ДанныеОтбора.ХозяйственнаяОперация);
Обработчик.РедактироватьТекстЗапросаПересчетаВВалютуДокумента(Запрос.Текст);
МассивРезультатов = Запрос.ВыполнитьПакет();
РезультатРеквизитыЗаказов = МассивРезультатов[0];
РезультатВыборка = МассивРезультатов[1];
РеквизитыЗаказов = РезультатРеквизитыЗаказов.Выбрать();
ТаблицаКурсовВалют = Новый ТаблицаЗначений;
ТаблицаКурсовВалют.Колонки.Добавить("Валюта", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
ТаблицаКурсовВалют.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));
ТаблицаКурсовВалют.Колонки.Добавить("КурсЧислитель", Новый ОписаниеТипов("Число"));
ТаблицаКурсовВалют.Колонки.Добавить("КурсЗнаменатель", Новый ОписаниеТипов("Число"));
Выборка = РезультатВыборка.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ТаблицаКурсовВалют.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КурсыВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(Выборка.Валюта, Выборка.Дата, Выборка.ВалютаРегламентированногоУчета);
НоваяСтрока.КурсЧислитель = КурсыВалюты.КурсЧислитель;
НоваяСтрока.КурсЗнаменатель = КурсыВалюты.КурсЗнаменатель;
КонецЦикла;
Если ТаблицаКурсовВалют.Количество() > 0 Тогда
СтруктураКурсовНовойВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(ДанныеОтбора.Валюта, ДанныеОтбора.Дата);
КонецЕсли;
ПорядокОформления = Константы.ПорядокОформленияНакладныхРасходныхОрдеров.Получить();
ЗаполнятьПоОрдеру = ПорядокОформления = Перечисления.ПорядокОформленияНакладныхРасходныхОрдеров.СначалаОрдера
И Не ПодборПоЗаказамОрдерам;
Если ПараметрыОформления <> Неопределено Тогда
ЗаполнятьПоОрдеру = ЗаполнениеПоОрдерам
И Не ЗаполнениеПоЗаказам;
КонецЕсли;
ОтгруженныеМарки = Неопределено;
ОтгруженныеТовары = РезультатЗапросаПоОстаткамЗаказов[10].Выгрузить();
Если ЗначениеЗаполнено(ДанныеОтбора.Ссылка) Тогда
МассивЗаказовКлиентов.Добавить(ДанныеОтбора.Ссылка);
КонецЕсли;
ПередачаТоваровХранителюЛокализация.СформироватьОтгруженныеМарки(МассивЗаказовКлиентов, ОтгруженныеМарки);
ПередачаТоваровХранителюЛокализация.ИсключитьРеализованныеМарки(МассивЗаказовКлиентов, ОтгруженныеМарки);
ШтрихкодыУпаковок.Очистить();
Если ОтгруженныеМарки <> Неопределено Тогда
Для Каждого СтрокаТаблицы Из ОтгруженныеМарки Цикл
ЗаполнитьЗначенияСвойств(ШтрихкодыУпаковок.Добавить(), СтрокаТаблицы);
КонецЦикла;
КонецЕсли;
ЗаполнитьЦенуПродажи = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(ДанныеОтбора);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ЗаполнитьЦенуПродажи);
СтруктураДействий.Вставить("ПересчитатьСумму");
ОбрабатываемыеСтроки = Новый Массив();
ВыборкаТовары.Сбросить();
Пока ВыборкаТовары.Следующий() Цикл
КоличествоКОтгрузке = ВыборкаТовары.Количество;
ЗаполнениеПоОрдеру = ЗаполнятьПоОрдеру
И ВыборкаТовары.ПроверятьОтгрузку;
Если ЗаполнениеПоОрдеру Тогда
ПараметрыПоиска = Новый Структура("ЗаказКлиента, Номенклатура, Характеристика, Склад, Серия");
ЗаполнитьЗначенияСвойств(ПараметрыПоиска, ВыборкаТовары);
НайденныеСтроки = ОтгруженныеТовары.НайтиСтроки(ПараметрыПоиска);
Если НайденныеСтроки.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
ОтгруженнаяСтрока = НайденныеСтроки[0];
Если ОтгруженнаяСтрока.Количество > 0 Тогда
Если ОтгруженнаяСтрока.Количество < ВыборкаТовары.Количество Тогда
КоличествоКОтгрузке = ОтгруженнаяСтрока.Количество;
ОтгруженнаяСтрока.Количество = 0;
Иначе
КоличествоКОтгрузке = ВыборкаТовары.Количество;
ОтгруженнаяСтрока.Количество = ОтгруженнаяСтрока.Количество - ВыборкаТовары.Количество;
КонецЕсли;
Иначе
Продолжить;
КонецЕсли;
КонецЕсли;
СтрокаТаб = Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаб, ВыборкаТовары, , "Количество");
СтрокаТаб.Количество = КоличествоКОтгрузке;
СтрокаТаб.КоличествоУпаковок = КоличествоКОтгрузке / ВыборкаТовары.Коэффициент;
ПересчитатьСуммы = (КоличествоКОтгрузке <> ВыборкаТовары.КоличествоВЗаказе);
Если ЗначениеЗаполнено(СтрокаТаб.ВидЦены)
И Не ЗначениеЗаполнено(СтрокаТаб.Цена) Тогда
ОбрабатываемыеСтроки.Добавить(СтрокаТаб);
ИначеЕсли ПересчитатьСуммы Тогда
СуммаОстаток = ВыборкаТовары.СуммаОстаток;
Если ЗаполнениеПоОрдеру Тогда
СуммаОстаток = СуммаОстаток * КоличествоКОтгрузке / ВыборкаТовары.Количество;
КонецЕсли;
СтрокаТаб.Сумма = СуммаОстаток;
КонецЕсли;
Если ПодборПоЗаказамОрдерам Тогда
СтрокаТаб.КоличествоВЗаказе = ?(ВыборкаТовары.КодСтроки <> 0, КоличествоКОтгрузке, 0);
СтрокаТаб.КоличествоУпаковокВЗаказе = ?(ВыборкаТовары.КодСтроки<> 0,
КоличествоКОтгрузке,
0) / ВыборкаТовары.Коэффициент;
ПараметрыПоиска = Новый Структура("ЗаказКлиента, Номенклатура, Характеристика, Склад, Серия");
ЗаполнитьЗначенияСвойств(ПараметрыПоиска, ВыборкаТовары);
НайденныеСтроки = ОтгруженныеТовары.НайтиСтроки(ПараметрыПоиска);
Если НайденныеСтроки.Количество() > 0 Тогда
ОтгруженнаяСтрока = НайденныеСтроки[0];
Если ОтгруженнаяСтрока.КоличествоСобирается > 0 Тогда
СтрокаТаб.КоличествоСобирается = ОтгруженнаяСтрока.КоличествоСобирается / ВыборкаТовары.Коэффициент;
ОтгруженнаяСтрока.КоличествоСобирается = 0;
КонецЕсли;
Если ОтгруженнаяСтрока.Количество > 0 Тогда
Если ОтгруженнаяСтрока.Количество <= ВыборкаТовары.Количество Тогда
СтрокаТаб.КоличествоВОрдере = ОтгруженнаяСтрока.Количество;
СтрокаТаб.КоличествоУпаковокВОрдере = ОтгруженнаяСтрока.Количество / ВыборкаТовары.Коэффициент;
ОтгруженнаяСтрока.Количество = 0;
ОтгруженныеТовары.Удалить(ОтгруженнаяСтрока);
Иначе
СтрокаТаб.КоличествоВОрдере = ВыборкаТовары.Количество;
СтрокаТаб.КоличествоУпаковокВОрдере = ВыборкаТовары.Количество / ВыборкаТовары.Коэффициент;
ОтгруженнаяСтрока.Количество = ОтгруженнаяСтрока.Количество - ВыборкаТовары.Количество;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
РеквизитыЗаказов.Сбросить();
ЗаказНайден = РеквизитыЗаказов.НайтиСледующий(СтрокаТаб.ЗаказКлиента, "ЗаказКлиента");
ПараметрыОтбора = Новый Структура("Валюта, Дата");
ЗаполнитьЗначенияСвойств(ПараметрыОтбора, РеквизитыЗаказов);
КурсВалюты = ТаблицаКурсовВалют.НайтиСтроки(ПараметрыОтбора);
Если ЗаказНайден
И РеквизитыЗаказов.ПересчитатьВВалютуДокумента Тогда
Если КурсВалюты.Количество() = 1 Тогда
ПересчитатьСуммы = Истина;
ПараметрыТекущегоКурса = Новый Структура("Валюта, КурсЧислитель, КурсЗнаменатель",
РеквизитыЗаказов.Валюта, КурсВалюты[0].КурсЧислитель, КурсВалюты[0].КурсЗнаменатель);
ПараметрыНовогоКурса = Новый Структура("Валюта, КурсЧислитель, КурсЗнаменатель",
ДанныеОтбора.Валюта, СтруктураКурсовНовойВалюты.КурсЧислитель, СтруктураКурсовНовойВалюты.КурсЗнаменатель);
СтрокаТаб.Цена = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(СтрокаТаб.Цена,
ПараметрыТекущегоКурса,
ПараметрыНовогоКурса);
СтрокаТаб.Сумма = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(СтрокаТаб.Сумма,
ПараметрыТекущегоКурса,
ПараметрыНовогоКурса);
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(СтрокаТаб, "НоменклатураНабора")
И ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(СтрокаТаб, "ИндексНабора")
И ЗначениеЗаполнено(СтрокаТаб.НоменклатураНабора) Тогда
СтрокаТаб.ИндексНабора = 1;
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Товары,
Неопределено);
Если (ПодборПоЗаказамОрдерам
Или ЗаполнятьПоОрдеру)
И ОтгруженныеТовары.Количество() > 0 Тогда
Для Каждого ОтгруженнаяСтрока Из ОтгруженныеТовары Цикл
Если ОтгруженнаяСтрока.Количество > 0 Тогда
ПараметрыПоиска = Новый Структура("Номенклатура,Характеристика,Склад, Серия");
ЗаполнитьЗначенияСвойств(ПараметрыПоиска, ОтгруженнаяСтрока);
Если ТипЗнч(ОтгруженнаяСтрока.ЗаказКлиента) = Обработчик.ТипЗаказа() Тогда
ПараметрыПоиска.Вставить("ЗаказКлиента", ОтгруженнаяСтрока.ЗаказКлиента)
КонецЕсли;
НайденныеСтроки = Товары.НайтиСтроки(ПараметрыПоиска);
Если ПодборПоЗаказамОрдерам Тогда
Если НайденныеСтроки.Количество() > 0 Тогда
СтрокаТаб = НайденныеСтроки[0];
СтрокаТаб.КоличествоВОрдере = СтрокаТаб.КоличествоВОрдере + ОтгруженнаяСтрока.Количество;
СтрокаТаб.КоличествоУпаковокВОрдере = СтрокаТаб.КоличествоУпаковокВОрдере + ОтгруженнаяСтрока.Количество
* (СтрокаТаб.КоличествоУпаковокВОрдере / СтрокаТаб.Количество);
Иначе
СтрокаТаб = Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаб, ОтгруженнаяСтрока);
СтрокаТаб.КоличествоВОрдере = ОтгруженнаяСтрока.Количество;
СтрокаТаб.КоличествоУпаковокВОрдере = ОтгруженнаяСтрока.Количество;
КонецЕсли;
ИначеЕсли ОтгруженнаяСтрока.ОрдернаяСхемаПриОтгрузке Тогда
Если НайденныеСтроки.Количество() > 0 Тогда
СтрокаТаб = НайденныеСтроки[0];
СтрокаТаб.КоличествоУпаковок = СтрокаТаб.КоличествоУпаковок + ОтгруженнаяСтрока.Количество
* (СтрокаТаб.КоличествоУпаковок / СтрокаТаб.Количество);
СтрокаТаб.Количество = СтрокаТаб.Количество + ОтгруженнаяСтрока.Количество;
Иначе
СтрокаТаб = Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаб, ОтгруженнаяСтрока);
СтрокаТаб.Количество = ОтгруженнаяСтрока.Количество;
СтрокаТаб.КоличествоУпаковок = ОтгруженнаяСтрока.Количество;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Функция ВыполнитьПроверкиРаспоряжения(Распоряжение, Склад) Экспорт
СтруктураВозврата = Новый Структура;
СтруктураВозврата.Вставить("Операция", "");
СтруктураВозврата.Вставить("ТекстОшибки", "");
СтруктураВозврата.Вставить("ГруппаСкладовВРаспоряжении", Ложь);
СтруктураВозврата.Вставить("ДатаОтгрузки");
СтруктураВозврата.Вставить("ИспользоватьОрдернуюСхему");
Если Не ЗначениеЗаполнено(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Распоряжение, "Склад")) Тогда
ТекстОшибки = НСтр("ru = 'Не заполнено поле ""Склад"" в документе ""%Распоряжение%"". Невозможно создать ордер.'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Распоряжение%", Строка(Распоряжение));
СтруктураВозврата.ТекстОшибки = ТекстОшибки;
СтруктураВозврата.Операция = "Отказ";
Возврат СтруктураВозврата
КонецЕсли;
СтруктураГруппыСкладов = Новый Структура("ЭтоГруппа", "Склад.ЭтоГруппа");
ЗначениеГруппыСкладов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Распоряжение, СтруктураГруппыСкладов);
ГруппаСкладовВРаспоряжении = ЗначениеГруппыСкладов.ЭтоГруппа;
СтруктураВозврата.ГруппаСкладовВРаспоряжении = ГруппаСкладовВРаспоряжении;
Реквизиты = Новый Структура("ДатаОтгрузки, Склад, ИспользоватьОрдернуюСхему", "Дата");
Если Не ГруппаСкладовВРаспоряжении Тогда
Реквизиты.Склад = "Склад";
Реквизиты.ИспользоватьОрдернуюСхему = "
|ВЫБОР
| КОГДА ЕстьNULL(Склад.ИспользоватьОрдернуюСхемуПриОтгрузке, Ложь)
| И Дата >= ЕстьNULL(Склад.ДатаНачалаОрдернойСхемыПриОтгрузке, ДАТАВРЕМЯ(1,1,1))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
|КОНЕЦ";
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Распоряжение, Реквизиты);
ИспользоватьОрдернуюСхему = ЗначенияРеквизитов.ИспользоватьОрдернуюСхему;
СтруктураВозврата.ИспользоватьОрдернуюСхему = ИспользоватьОрдернуюСхему;
Если ИспользоватьОрдернуюСхему Тогда
Склад = ЗначенияРеквизитов.Склад;
ЗаполнитьЗначенияСвойств(СтруктураВозврата, ЗначенияРеквизитов, "ДатаОтгрузки");
Иначе
ТекстОшибки = НСтр("ru = 'Для склада ""%Склад%"" оформление расходных ордеров не требуется.
|Заполнение документа не выполнено.'");
СтруктураВозврата.ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Склад%", Строка(ЗначенияРеквизитов.Склад));
СтруктураВозврата.Операция = "Отказ";
Возврат СтруктураВозврата;
КонецЕсли;
КонецЕсли;
Если ГруппаСкладовВРаспоряжении Тогда
Если Не ЗначениеЗаполнено(Склад) Тогда
МассивСкладов = Документы.РасходныйОрдерНаТовары.ОрдерныеСкладыПриОтгрузке(Распоряжение, Неопределено);
Если МассивСкладов.Количество() = 0 Тогда
ТекстОшибки = НСтр("ru = 'Для складов документа ""%Распоряжение%"" оформление приходных ордеров не требуется.
|Заполнение документа не выполнено.'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Распоряжение%", Строка(Распоряжение));
СтруктураВозврата.ТекстОшибки = ТекстОшибки;
СтруктураВозврата.Операция = "Отказ";
Возврат СтруктураВозврата;
ИначеЕсли МассивСкладов.Количество() = 1 Тогда
Склад = МассивСкладов[0];
Иначе
СтруктураВозврата.Операция = "Возврат";
Возврат СтруктураВозврата;
КонецЕсли;
Иначе
СтруктураВозврата.Операция = "Возврат";
Возврат СтруктураВозврата;
КонецЕсли;
КонецЕсли;
Возврат СтруктураВозврата
КонецФункции
Функция ПустыеЗначенияЗаказов() Экспорт
ПустыеЗначенияЗаказов = Новый Массив;
ПустыеЗначенияЗаказов.Добавить(Неопределено);
ПустыеЗначенияЗаказов.Добавить(Документы.ЗаказКлиента.ПустаяСсылка());
Возврат ПустыеЗначенияЗаказов;
КонецФункции
Функция ДопустимыеСтатусыВводаНаОсновании(ИмяДокумента = "") Экспорт
МассивДопустимыхСтатусов = Новый Массив;
МассивДопустимыхСтатусов.Добавить(Неопределено);
Возврат МассивДопустимыхСтатусов;
КонецФункции
Функция КоллекцияТабличныхЧастейТоваров() Экспорт
ТаблицыДокумента = Новый Структура("Товары");
Возврат ТаблицыДокумента;
КонецФункции
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("ХозяйственнаяОперация");
Поля.Добавить("Номер");
Поля.Добавить("Дата");
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Данные.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
ПредставлениеОбъекта = НСтр("ru = 'Передача на комиссию'");
ИначеЕсли Данные.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5 Тогда
ПредставлениеОбъекта = НСтр("ru = 'Передача сырья переработчику'");
Иначе
ПредставлениеОбъекта = НСтр("ru = 'Передача товаров хранителю'");
КонецЕсли;
Представление = СтрШаблон(НСтр("ru='%1 %2 от %3'"), ПредставлениеОбъекта, Данные.Номер, Данные.Дата);
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область Проведение
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Дата КАК Период,
| ДанныеДокумента.ЗаказКлиента КАК ЗаказКлиента,
| ДанныеДокумента.Дата КАК ДатаРаспоряжения,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Соглашение КАК Соглашение,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Склад КАК Склад,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Комментарий КАК Комментарий,
| ДанныеДокумента.Менеджер КАК Менеджер,
| ДанныеДокумента.Автор КАК Автор,
| ДанныеДокумента.Сделка КАК Сделка,
| ЕСТЬNULL(ДанныеДокумента.Сделка.ОбособленныйУчетТоваровПоСделке, ЛОЖЬ) КАК ОбособленныйУчетТоваровПоСделке,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ЕСТЬNULL(ДанныеДокумента.Подразделение.ВариантОбособленногоУчетаТоваров,
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбособленногоУчетаТоваров.ПустаяСсылка)) КАК ВариантОбособленногоУчетаТоваров,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| ДанныеДокумента.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.Исправление КАК Исправление,
| ДанныеДокумента.СторнируемыйДокумент КАК СторнируемыйДокумент,
| ДанныеДокумента.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеДокумента.ПередачаПоЗаказам КАК ПередачаПоЗаказу,
| ДанныеДокумента.Организация.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета,
| НастройкиХозяйственныхОпераций.Ссылка КАК НастройкаХозяйственнойОперации
|ИЗ
| Документ.ПередачаТоваровХранителю КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НастройкиХозяйственныхОпераций КАК НастройкиХозяйственныхОпераций
| ПО ДанныеДокумента.ХозяйственнаяОперация = НастройкиХозяйственныхОпераций.ХозяйственнаяОперация
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка";
РезультатЗапроса = Запрос.Выполнить();
Реквизиты = РезультатЗапроса.Выбрать();
Реквизиты.Следующий();
Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
Запрос.УстановитьПараметр(Колонка.Имя, Реквизиты[Колонка.Имя]);
КонецЦикла;
ИнформацияПоДоговору = "";
НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер);
ИдентификаторМетаданных = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.ПередачаТоваровХранителю");
Если ЗначениеЗаполнено(Реквизиты.Договор) Тогда
ШаблонСтроки = "ru = 'По договору ""%1""'";
ИнформацияПоДоговору = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, Реквизиты.Договор);
КонецЕсли;
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ИдентификаторМетаданных);
Запрос.УстановитьПараметр("ПередачаПоНесколькимЗаказам", Не ЗначениеЗаполнено(Реквизиты.ЗаказКлиента));
Запрос.УстановитьПараметр("ВалютаУправленческогоУчета", Константы.ВалютаУправленческогоУчета.Получить());
Запрос.УстановитьПараметр("НомерНаПечать", НомерНаПечать);
Запрос.УстановитьПараметр("ИнформацияПоДоговору", ИнформацияПоДоговору);
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Реквизиты.ХозяйственнаяОперация);
Запрос.УстановитьПараметр("ИспользоватьРасширенныеВозможностиЗаказаКлиента",
Обработчик.ИспользоватьРасширенныеВозможностиЗаказаКлиента());
РасчетСебестоимостиПрикладныеАлгоритмы.ЗаполнитьПараметрыИнициализации(Запрос, Реквизиты);
КонецПроцедуры
Функция ТекстЗапросаТаблицаДвиженияНоменклатураНоменклатура(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияНоменклатураНоменклатура";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.Организация КАК Организация,
| &Подразделение КАК Подразделение,
| ТаблицаВидыЗапасов.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ВЫБОР
| КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыБезНазначения
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.Склад КАК Склад,
| ТаблицаВидыЗапасов.ТипЗапасов КАК ТипЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ИсточникГФУНоменклатуры,
| &НаправлениеДеятельности КАК КорНаправлениеДеятельности,
| ВЫБОР
| КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям
| ТОГДА ТаблицаВидыЗапасов.АналитикаПереданнойНоменклатуры
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаПереданнойНоменклатурыБезНазначения
| КОНЕЦ КАК КорАналитикаУчетаНоменклатуры,
| &Договор КАК КорСклад,
| ТаблицаВидыЗапасов.ТипЗапасов КАК КорТипЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасов КАК КорВидЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасов КАК КорИсточникГФУНоменклатуры,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.Количество КАК КорКоличество,
| 0 КАК Стоимость,
| 0 КАК СтоимостьБезНДС,
| 0 КАК СтоимостьРегл
|ИЗ
| ВтТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаДвиженияСерийТоваров(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ДвиженияСерийТоваров";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Период КАК Период,
| ТаблицаСерии.Серия КАК Серия,
| ТаблицаСерии.Номенклатура КАК Номенклатура,
| ТаблицаСерии.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСерии.НазначениеОтправителя.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаСерии.НазначениеОтправителя
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| &Ссылка КАК Документ,
| ТаблицаСерии.Склад КАК Отправитель,
| ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка) КАК Помещение,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтгрузкаКлиенту) КАК СкладскаяОперация,
| ВЫБОР
| КОГДА НЕ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| ИЛИ (&ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| И НЕ ТаблицаСерии.Номенклатура.ВидНоменклатуры.ПолитикаУчетаСерий.УчетСерийВПереданныхНаКомиссиюТоваров)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ &Партнер
| КОНЕЦ КАК Получатель,
| ВЫБОР
| КОГДА НЕ ТаблицаСерии.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| ИЛИ &Период < ТаблицаСерии.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоСкладскоеДвижение,
| ТаблицаСерии.Количество КАК Количество
|ИЗ
| Документ.ПередачаТоваровХранителю.Серии КАК ТаблицаСерии
|
|ГДЕ
| ТаблицаСерии.Ссылка = &Ссылка
| И ТаблицаСерии.Количество <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| &Период КАК Период,
| ТаблицаСерии.Серия КАК Серия,
| ТаблицаСерии.Номенклатура КАК Номенклатура,
| ТаблицаСерии.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(ТаблицаСерии.НазначениеОтправителя.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)
| ТОГДА ТаблицаСерии.НазначениеОтправителя
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| &Ссылка КАК Документ,
| ТаблицаСерии.Склад КАК Отправитель,
| ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка) КАК Помещение,
| ЗНАЧЕНИЕ(Перечисление.СкладскиеОперации.ОтгрузкаКлиенту) КАК СкладскаяОперация,
| ВЫБОР
| КОГДА НЕ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| ИЛИ (&ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| И НЕ ТаблицаСерии.Номенклатура.ВидНоменклатуры.ПолитикаУчетаСерий.УчетСерийВПереданныхНаКомиссиюТоваров)
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ &Партнер
| КОНЕЦ КАК Получатель,
| ВЫБОР
| КОГДА НЕ ТаблицаСерии.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| ИЛИ &Период < ТаблицаСерии.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоСкладскоеДвижение,
| ТаблицаСерии.Количество КАК Количество
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТаблицаСерии
|
|ГДЕ
| ТаблицаСерии.Ссылка = &Ссылка
| И ТаблицаСерии.Количество <> 0
| И ТаблицаСерии.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Ссылка.Дата КАК Период,
| ТаблицаТовары.ЗаказКлиента КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Склад КАК Склад,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерийНаСкладах В (10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ТаблицаПоказателей.Ссылка КАК Показатель,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Сумма КАК Сумма
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат КАК ТаблицаПоказателей
| ПО ТаблицаПоказателей.Ссылка В (ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отгружено))
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПереработчику2_5)
| И &ПередачаПоЗаказу
| И &ИспользоватьРасширенныеВозможностиЗаказаКлиента
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Ссылка.Дата КАК Период,
| ТаблицаТовары.ЗаказКлиента КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Склад КАК Склад,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерийНаСкладах В (10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ТаблицаПоказателей.Ссылка КАК Показатель,
| ТаблицаТовары.Количество КАК Количество,
| 0 КАК Сумма
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат КАК ТаблицаПоказателей
| ПО ТаблицаПоказателей.Ссылка В (ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отгружено))
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПереработчику2_5)
| И &ПередачаПоЗаказу
| И &ИспользоватьРасширенныеВозможностиЗаказаКлиента
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Ссылка.Дата КАК Период,
| ТаблицаТовары.ЗаказКлиента КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Склад КАК Склад,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерийНаСкладах В (10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ТаблицаПоказателей.Ссылка КАК Показатель,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.Сумма КАК Сумма
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат КАК ТаблицаПоказателей
| ПО ТаблицаПоказателей.Ссылка В (ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОформлению),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке))
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПереработчику2_5)
| И ТаблицаТовары.КодСтроки = 0
| И &ПередачаПоЗаказу
| И &ИспользоватьРасширенныеВозможностиЗаказаКлиента
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Ссылка.Дата КАК Период,
| ТаблицаТовары.ЗаказКлиента КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Склад КАК Склад,
| ВЫБОР
| КОГДА ТаблицаТовары.СтатусУказанияСерийНаСкладах В (10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ТаблицаПоказателей.Ссылка КАК Показатель,
| ТаблицаТовары.Количество КАК Количество,
| 0 КАК Сумма
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат КАК ТаблицаПоказателей
| ПО ТаблицаПоказателей.Ссылка В (ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОформлению),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке))
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаПереработчику2_5)
| И ТаблицаТовары.КодСтроки = 0
| И &ПередачаПоЗаказу
| И &ИспользоватьРасширенныеВозможностиЗаказаКлиента
|УПОРЯДОЧИТЬ ПО
| НомерСтроки,
| Показатель";
ПодставитьТекстИспользоватьРасширенныеВозможностиЗаказаКлиента(ТекстЗапроса, "ТаблицаТовары.Ссылка", , "ТаблицаТовары");
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Партнер КАК Партнер,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Склад КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Менеджер КАК Ответственный,
| &Автор КАК Автор,
| &Комментарий КАК Комментарий,
| &Валюта КАК Валюта,
| &СуммаДокумента КАК Сумма,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| &ИнформацияПоДоговору КАК Дополнительно,
| &Период КАК ДатаПервичногоДокумента,
| &Исправление КАК СторноИсправление,
| &СторнируемыйДокумент КАК СторнируемыйДокумент,
| &ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| &НомерНаПечать КАК НомерПервичногоДокумента,
| &Период КАК ДатаОтраженияВУчете,
| НЕОПРЕДЕЛЕНО КАК Приоритет
|ИЗ
| Документ.ПередачаТоваровХранителю КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры = Неопределено) Экспорт
ТекстЗапросаДанных =
"ВЫБРАТЬ
| ""ВидыЗапасов"" КАК ИсточникДанных,
| ИСТИНА КАК РаспределятьОбщуюСумму,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Ссылка.Дата КАК Дата,
| ТаблицаДокумента.Ссылка.Организация КАК Организация,
| ТаблицаДокумента.Ссылка.Валюта КАК ВалютаДокумента,
| НЕОПРЕДЕЛЕНО КАК ВалютаВзаиморасчетов,
| ТаблицаДокумента.Ссылка.Дата КАК ПериодБазыНДС,
| ТаблицаДокумента.Ссылка.Дата КАК ДатаКурса,
|
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| ТаблицаДокумента.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаДокумента.Сумма КАК СуммаБезНДС,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) КАК СтавкаНДС,
| 0 КАК СуммаНДС,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК СуммаНДСВзаиморасчетов,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК СуммаБезНДСУпр,
|
| ЛОЖЬ КАК ОтражаетсяВРасчетах,
| НЕОПРЕДЕЛЕНО КАК ОбъектРасчетов,
| ЛОЖЬ КАК ПересчитыватьПоДаннымРасчетов
|ИЗ
| Документ.ПередачаТоваровХранителю.ВидыЗапасов КАК ТаблицаДокумента
|
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
|";
РегистрыСведений.СуммыДокументовВВалютахУчета.СформироватьПоДаннымДокумента(
Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанных);
КонецПроцедуры
Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеШапки.ПередачаПоЗаказам
| И &ИспользоватьРасширенныеВозможностиЗаказа
| И ТоварыДокумента.ЗаказКлиента <> Неопределено
| ТОГДА ТоварыДокумента.ЗаказКлиента
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ТоварыДокумента.Ссылка КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеШапки.Партнер КАК Получатель,
| ТоварыДокумента.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.НазначениеОтправителя КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ВЫБОР
| КОГДА ДанныеШапки.ПередачаПоЗаказам
| И &ИспользоватьРасширенныеВозможностиЗаказа
| И ТоварыДокумента.КодСтроки = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ИСТИНА КАК ЭтоНакладная,
| ВЫБОР
| КОГДА ДанныеШапки.ПередачаПоЗаказам
| И &ИспользоватьРасширенныеВозможностиЗаказа
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПередачаТоваровХранителю КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.Количество <> 0
|";
ПодставитьТекстИспользоватьРасширенныеВозможностиЗаказаКлиента(
ТекстЗапросаДанныхДокумента, "ДанныеШапки", "&ИспользоватьРасширенныеВозможностиЗаказа", "ТоварыДокумента");
ИспользоватьРасширенныеВозможностиЗаказа = ?(ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента"),
"ИСТИНА",
"ЛОЖЬ");
ТекстЗапросаДанныхДокумента = СтрЗаменить(ТекстЗапросаДанныхДокумента,
"&ИспользоватьРасширенныеВозможностиЗаказа",
ИспользоватьРасширенныеВозможностиЗаказа);
СкладыСервер.ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ОформитьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ВЫБОР
| КОГДА ДанныеШапки.ПередачаПоЗаказам
| И &ИспользоватьРасширенныеВозможностиЗаказа
| И ТоварыДокумента.ЗаказКлиента <> Неопределено
| ТОГДА ТоварыДокумента.ЗаказКлиента
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК Заказ,
| ТоварыДокумента.Ссылка КАК Накладная,
| ДанныеШапки.Исправление КАК Исправление,
| ДанныеШапки.ИсправляемыйДокумент КАК ИсправляемыйДокумент,
| ДанныеШапки.Партнер КАК Получатель,
| ТоварыДокумента.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.НазначениеОтправителя КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ВЫБОР
| КОГДА ДанныеШапки.ПередачаПоЗаказам
| И &ИспользоватьРасширенныеВозможностиЗаказа
| И ТоварыДокумента.КодСтроки = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СверхЗаказа,
| ВЫБОР
| КОГДА ДанныеШапки.ПередачаПоЗаказам
| И &ИспользоватьРасширенныеВозможностиЗаказа
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПередачаТоваровХранителю КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И ТоварыДокумента.Количество <> 0
|";
ПодставитьТекстИспользоватьРасширенныеВозможностиЗаказаКлиента(
ТекстЗапросаДанныхДокумента, "ДанныеШапки", "&ИспользоватьРасширенныеВозможностиЗаказа");
ИспользоватьРасширенныеВозможностиЗаказа = ?(ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента"),
"ИСТИНА",
"ЛОЖЬ");
ТекстЗапросаДанныхДокумента = СтрЗаменить(ТекстЗапросаДанныхДокумента,
"&ИспользоватьРасширенныеВозможностиЗаказа",
ИспользоватьРасширенныеВозможностиЗаказа);
ОбъектМетаданных = Метаданные.Документы.ПередачаТоваровХранителю;
ИмяТЧСерии = "Серии";
СкладыСервер.ОформитьОтгрузкуТоваров(Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДанныхДокумента,
ОбъектМетаданных,
ИмяТЧСерии);
КонецПроцедуры
Функция ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыОрганизаций";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.РеализацияЗапасовДругойОрганизации
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасов.ВидЗапасовВладельца.Организация
| ИНАЧЕ &Организация
| КОНЕЦ КАК Организация,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.РеализацияЗапасовДругойОрганизации
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасов.ВидЗапасовВладельца
| ИНАЧЕ ТаблицаВидыЗапасов.ВидЗапасов
| КОНЕЦ КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК НалогообложениеНДС,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК КорВидЗапасов,
| &Организация КАК ОрганизацияОтгрузки,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ЛОЖЬ КАК Первичное
|ИЗ
| ВтТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| ТОГДА ТаблицаВидыЗапасов.АналитикаПереданнойНоменклатурыБезНазначения
| ИНАЧЕ ТаблицаВидыЗапасов.АналитикаПереданнойНоменклатуры
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ВидЗапасов.РеализацияЗапасовДругойОрганизации
| ТОГДА ТаблицаВидыЗапасов.ВидЗапасов.ВидЗапасовВладельца.Организация
| ИНАЧЕ &Организация
| КОНЕЦ КАК Организация,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК НалогообложениеНДС,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК КорВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК ОрганизацияОтгрузки,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ИСТИНА КАК Первичное
|ИЗ
| ВтТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтТаблицаВидыЗапасов(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтТаблицаВидыЗапасов";
УстановитьПараметрыЗапросаКоэффициентыВалют(Запрос);
ИнициализироватьКлючиАналитикиУчетаНоменклатуры(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ
| ВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ВидыЗапасов.Ссылка КАК Ссылка,
| ВидыЗапасов.ЗаказКлиента КАК ЗаказКлиента,
| &Организация КАК Организация,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад,
| ВидыЗапасов.ВидЗапасов.Валюта КАК Валюта,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.СкладскаяТерритория.ЦеховаяКладовая КАК ЦеховаяКладовая,
| ВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ВидыЗапасов.ВидЗапасов.ТипЗапасов КАК ТипЗапасов,
| ВидыЗапасов.АналитикаУчетаНаборов КАК АналитикаУчетаНаборов,
| ВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| АналитикаБезНазначения.КлючАналитики КАК АналитикаУчетаНоменклатурыБезНазначения,
| АналитикаПереданнойНоменклатуры.КлючАналитики КАК АналитикаПереданнойНоменклатуры,
| АналитикаПереданнойНоменклатурыБезНазначения.КлючАналитики КАК АналитикаПереданнойНоменклатурыБезНазначения,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| ВидыЗапасов.Количество КАК Количество,
| ВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ВидыЗапасов.Сумма КАК Сумма,
| ВидыЗапасов.НомерГТД КАК НомерГТД,
| ЕСТЬNULL(ВидыЗапасов.АналитикаУчетаНоменклатуры.Назначение.НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)) КАК НаправлениеДеятельности
|ПОМЕСТИТЬ ВтТаблицаВидыЗапасов
|ИЗ
| Документ.ПередачаТоваровХранителю.ВидыЗапасов КАК ВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаБезНазначения
| ПО ВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура = АналитикаБезНазначения.Номенклатура
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика = АналитикаБезНазначения.Характеристика
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.Серия = АналитикаБезНазначения.Серия
| И ВидыЗапасов.АналитикаУчетаНоменклатуры.МестоХранения = АналитикаБезНазначения.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаБезНазначения.Назначение
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаБезНазначения.СтатьяКалькуляции
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаПереданнойНоменклатуры
| ПО ВидыЗапасов.АналитикаУчетаНоменклатурыТоварыУПартнеров = АналитикаПереданнойНоменклатуры.КлючАналитики
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаПереданнойНоменклатурыБезНазначения
| ПО АналитикаПереданнойНоменклатуры.Номенклатура = АналитикаПереданнойНоменклатурыБезНазначения.Номенклатура
| И АналитикаПереданнойНоменклатуры.Характеристика = АналитикаПереданнойНоменклатурыБезНазначения.Характеристика
| И АналитикаПереданнойНоменклатуры.Серия = АналитикаПереданнойНоменклатурыБезНазначения.Серия
| И АналитикаПереданнойНоменклатуры.МестоХранения = АналитикаПереданнойНоменклатурыБезНазначения.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаПереданнойНоменклатурыБезНазначения.Назначение
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = АналитикаПереданнойНоменклатурыБезНазначения.СтатьяКалькуляции
|ГДЕ
| ВидыЗапасов.Ссылка = &Ссылка";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура УстановитьПараметрыЗапросаКоэффициентыВалют(Запрос)
Если Запрос.Параметры.Свойство("КоэффициентПересчетаВВалютуУПР")
И Запрос.Параметры.Свойство("КоэффициентПересчетаВВалютуРегл") Тогда
Возврат;
КонецЕсли;
Коэффициенты = РаботаСКурсамиВалютУТ.ПолучитьКоэффициентыПересчетаВалюты(Запрос.Параметры.Валюта,
Запрос.Параметры.Валюта, Запрос.Параметры.Период, Запрос.Параметры.Организация);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуУПР", Коэффициенты.КоэффициентПересчетаВВалютуУПР);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуРегл", Коэффициенты.КоэффициентПересчетаВВалютуРегл);
КонецПроцедуры
Процедура ИнициализироватьКлючиАналитикиУчетаНоменклатуры(Запрос)
Если Запрос.Параметры.Свойство("КлючиАналитикиУчетаНоменклатурыИнициализированы") Тогда
Возврат;
КонецЕсли;
ЗапросАналитик = Новый Запрос;
ЗапросАналитик.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаАналитик.Номенклатура КАК Номенклатура,
| ТаблицаАналитик.Характеристика КАК Характеристика,
| &ПустоеНазначение КАК Назначение,
| ТаблицаАналитик.Серия КАК Серия,
| ТаблицаАналитик.Склад КАК Склад
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
| Товары.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
| Товары.АналитикаУчетаНоменклатуры.Серия КАК Серия,
| Товары.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад
| ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО Товары.АналитикаУчетаНоменклатуры.Номенклатура = Аналитика.Номенклатура
| И Товары.АналитикаУчетаНоменклатуры.Характеристика = Аналитика.Характеристика
| И Товары.АналитикаУчетаНоменклатуры.Серия = Аналитика.Серия
| И Товары.АналитикаУчетаНоменклатуры.МестоХранения = Аналитика.МестоХранения
| И &ПустоеНазначение = Аналитика.Назначение
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Аналитика.СтатьяКалькуляции
| ГДЕ
| Товары.Ссылка = &Ссылка
| И Аналитика.Номенклатура ЕСТЬ NULL
| И НЕ &УчитыватьСебестоимостьТоваровПоНазначениям
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.Номенклатура КАК Номенклатура,
| Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.Характеристика КАК Характеристика,
| Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.Серия КАК Серия,
| Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.МестоХранения КАК Склад
| ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.Номенклатура = Аналитика.Номенклатура
| И Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.Характеристика = Аналитика.Характеристика
| И Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.Серия = Аналитика.Серия
| И Товары.АналитикаУчетаНоменклатурыТоварыУПартнеров.МестоХранения = Аналитика.МестоХранения
| И &ПустоеНазначение = Аналитика.Назначение
| И ЗНАЧЕНИЕ(Справочник.СтатьиКалькуляции.ПустаяСсылка) = Аналитика.СтатьяКалькуляции
| ГДЕ
| Товары.Ссылка = &Ссылка
| И Аналитика.Номенклатура ЕСТЬ NULL
| И Не &УчитыватьСебестоимостьТоваровПоНазначениям
| ) КАК ТаблицаАналитик";
ЗапросАналитик.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросАналитик.УстановитьПараметр("ПустоеНазначение", Справочники.Назначения.ПустаяСсылка());
ЗапросАналитик.УстановитьПараметр("УчитыватьСебестоимостьТоваровПоНазначениям", Запрос.Параметры.УчитыватьСебестоимостьТоваровПоНазначениям);
Выборка = ЗапросАналитик.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
РегистрыСведений.АналитикаУчетаНоменклатуры.СоздатьКлючАналитики(Выборка);
КонецЦикла;
ЗапросАналитик = Новый Запрос;
ЗапросАналитик.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.АналитикаУчетаНаборов.НоменклатураНабора КАК НоменклатураНабора,
| Товары.АналитикаУчетаНаборов.ХарактеристикаНабора КАК ХарактеристикаНабора
|ИЗ
| Документ.ПередачаТоваровХранителю.ВидыЗапасов КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНаборов КАК Аналитика
| ПО Товары.АналитикаУчетаНаборов.НоменклатураНабора = Аналитика.НоменклатураНабора
| И Товары.АналитикаУчетаНаборов.ХарактеристикаНабора = Аналитика.ХарактеристикаНабора
|ГДЕ
| Товары.Ссылка = &Ссылка
| И Аналитика.НоменклатураНабора ЕСТЬ NULL";
ЗапросАналитик.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
Выборка = ЗапросАналитик.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
РегистрыСведений.АналитикаУчетаНаборов.СоздатьКлючАналитики(Выборка);
КонецЦикла;
Запрос.УстановитьПараметр("КлючиАналитикиУчетаНоменклатурыИнициализированы", Истина);
КонецПроцедуры
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.ПередачаТоваровХранителю";
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ТекстЗапросаПереопределенияХозяйственнойОперации = "
| ВЫБОР
| КОГДА ТаблицаТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПустаяСсылка)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| ИНАЧЕ ТаблицаТовары.Ссылка.ХозяйственнаяОперация
| КОНЕЦ";
ЗначенияПараметров = Новый Структура();
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
ЗначенияПараметров.Вставить("ИспользоватьРасширенныеВозможностиЗаказаКлиента",
ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента"));
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", """""");
ПереопределениеРасчетаПараметров.Вставить("ПередачаПоЗаказу", "ТаблицаТовары.Ссылка.ПередачаПоЗаказам");
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоДоговору", """""");
ПереопределениеРасчетаПараметров.Вставить("ХозяйственнаяОперация", ТекстЗапросаПереопределенияХозяйственнойОперации);
Если ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "ТаблицаТовары";
ИначеЕсли ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "ДанныеДокумента";
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если СинонимТаблицыДокумента <> "ТаблицаТовары" Тогда
Для Каждого ПараметрРасчета Из ПереопределениеРасчетаПараметров Цикл
ПереопределениеРасчетаПараметров[ПараметрРасчета.Ключ] = СтрЗаменить(
ПараметрРасчета.Значение, "ТаблицаТовары", СинонимТаблицыДокумента);
КонецЦикла;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ВЫБОР КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) ТОГДА
| ТабЧасть.Ссылка.Подразделение
| ИНАЧЕ
| ТабЧасть.Склад
| КОНЕЦ КАК Склад,
| ТабЧасть.НазначениеОтправителя КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТабЧасть
|ГДЕ
| НЕ ТабЧасть.Ссылка.ПередачаПоЗаказам
| ИЛИ ТабЧасть.КодСтроки = 0
| ИЛИ ЕСТЬNULL(ТабЧасть.ЗаказКлиента.ЭтоЗаказКакСчет, ЛОЖЬ)";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецПроцедуры
#Область ПартионныйУчет
Функция ОписаниеРегистровУчетаЗатратИСебестоимости(Документ) Экспорт
ОписаниеРегистров = Новый Массив;
ОписаниеРегистров.Добавить(Метаданные.РегистрыНакопления.СебестоимостьТоваров);
Возврат ОписаниеРегистров;
КонецФункции
Функция УстановитьДополнительныеПараметрыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено) Экспорт
ДополнительныеПараметры = Новый Массив;
Если Запрос <> Неопределено Тогда
КонецЕсли;
Возврат ДополнительныеПараметры;
КонецФункции
Функция СформироватьДополнительныеТаблицыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено, ТекстыЗапроса = Неопределено) Экспорт
ДополнительныеТаблицы = Новый Массив;
ДополнительныеТаблицы.Добавить("ВтТаблицаВидыЗапасов");
Если Запрос <> Неопределено Тогда
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса(ДополнительныеТаблицы[0], ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
КонецЕсли;
Возврат ДополнительныеТаблицы;
КонецФункции
Функция ОписаниеОперацийУчетаСебестоимости(Документ) Экспорт
ОписаниеОпераций = Новый Массив;
#Область Перемещение_Товар
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК ВидДеятельностиНДС,
| НЕОПРЕДЕЛЕНО КАК ВидДеятельностиНДСДокумента,
|
| НЕОПРЕДЕЛЕНО КАК КорОрганизация,
| НЕОПРЕДЕЛЕНО КАК КорПартия,
| ТаблицаВидыЗапасов.АналитикаПереданнойНоменклатуры КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК КорВидЗапасов,
|
| ТаблицаДокумента.Сделка КАК Сделка,
| ТаблицаДокумента.Подразделение КАК Подразделение,
| ТаблицаДокумента.Менеджер КАК Менеджер,
| НЕОПРЕДЕЛЕНО КАК ГруппаПродукции,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
|
| ТаблицаДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|
|ИЗ
| Документ.ПередачаТоваровХранителю КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И НЕ (ТаблицаДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| И ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар))
| И (ТаблицаВидыЗапасов.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ НЕ &ВернутьМногооборотнуюТару)
|";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.Перемещение,
ТекстЗапроса);
#КонецОбласти
#Область Перемещение_Товар_ПередачаНаКомиссию
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК ВидДеятельностиНДС,
| НЕОПРЕДЕЛЕНО КАК ВидДеятельностиНДСДокумента,
|
| НЕОПРЕДЕЛЕНО КАК КорОрганизация,
| НЕОПРЕДЕЛЕНО КАК КорПартия,
| ТаблицаВидыЗапасов.АналитикаПереданнойНоменклатуры КАК КорАналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК КорВидЗапасов,
|
| ТаблицаДокумента.Сделка КАК Сделка,
| ТаблицаДокумента.Подразделение КАК Подразделение,
| ТаблицаДокумента.Менеджер КАК Менеджер,
| НЕОПРЕДЕЛЕНО КАК ГруппаПродукции,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ИдентификаторСтроки,
|
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыПринятыеНаКомиссию)
| ИНАЧЕ ВЫБОР КОГДА ТаблицаВидыЗапасов.ЦеховаяКладовая
| ТОГДА ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ПроизводственныеЗатраты)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах)
| КОНЕЦ
| КОНЕЦ КАК РазделУчета,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыПринятыеНаКомиссию)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыПереданныеНаКомиссию)
| КОНЕЦ КАК КорРазделУчета,
| ТаблицаДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|
|ИЗ
| Документ.ПередачаТоваровХранителю КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И ТаблицаДокумента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| И ТаблицаВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
| И (ТаблицаВидыЗапасов.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ НЕ &ВернутьМногооборотнуюТару)
| И ВЫБОР
| КОГДА НЕ ТаблицаВидыЗапасов.Ссылка ЕСТЬ NULL
| ТОГДА ИСТИНА
| КОНЕЦ";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.Перемещение,
ТекстЗапроса);
#КонецОбласти
Возврат ОписаниеОпераций;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Печать
Функция ПравилаПечатиЗаданияНаОтборРазмещение() Экспорт
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
ПравилаПечатиЗадания.СкладыВТЧ = Истина;
ПравилаПечатиЗадания.ИспользуютсяИсправленияДокумента = Истина;
Возврат ПравилаПечатиЗадания;
КонецФункции
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
ЭтоПартнер = ПраваПользователяПовтИсп.ЭтоПартнер();
Если НЕ ЭтоПартнер Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "РасходнаяНакладная";
КомандаПечати.Представление = НСтр("ru = 'Расходная накладная'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(
КомандаПечати,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи,
ВидСравнения.Равно);
Если Константы.ИспользоватьМеждународныеПечатныеФормы.Получить() Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "InvoiceInt";
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Представление = НСтр("ru = 'Commercial invoice'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
КонецЕсли;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "Накладная";
КомандаПечати.Представление = НСтр("ru = 'Передача товаров хранителю'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи,
ВидСравнения.Равно);
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "НакладнаяКомиссионеру";
КомандаПечати.Представление = НСтр("ru = 'Передача товаров комиссионеру'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
ВидСравнения.Равно);
Если ПравоДоступа("Чтение", Метаданные.Справочники.СертификатыНоменклатуры)
И ПолучитьФункциональнуюОпцию("ИспользоватьСертификатыНоменклатуры") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "СертификатыНоменклатурыРеестр";
КомандаПечати.Представление = НСтр("ru = 'Сертификаты (реестр)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи,
ВидСравнения.Равно);
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "СертификатыНоменклатурыИзображенияИзДокументов";
КомандаПечати.Представление = НСтр("ru = 'Сертификаты (по каждой позиции документа)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи,
ВидСравнения.Равно);
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "СертификатыНоменклатурыИзображенияИзДокументовБезДублей";
КомандаПечати.Представление = НСтр("ru = 'Сертификаты (по одному на сертификат)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи,
ВидСравнения.Равно);
КонецЕсли;
Если НЕ ЭтоПартнер Тогда
КомандаПечати = ИнтеграцияСМаркетплейсамиСервер.ДобавитьКомандуПечатиЭтикеток(КомандыПечати);
Если КомандаПечати <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
КонецЕсли;
Если НЕ ЭтоПартнер Тогда
Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати, "ЗаданиеНаОтбор");
КонецЕсли;
Если НЕ ЭтоПартнер
И ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеДоставкой") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьЭтикетокДоставки";
КомандаПечати.МенеджерПечати = "Обработка.ПечатьЭтикетокИЦенников.Печать";
КомандаПечати.Идентификатор = "ЭтикеткаДоставки";
КомандаПечати.Представление = НСтр("ru = 'Этикетки доставки'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
УправлениеПечатью.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи,
ВидСравнения.Равно);
КонецЕсли;
ПередачаТоваровХранителюЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Накладная") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"Накладная",
НСтр("ru = 'Передача товаров хранителю'"),
СформироватьПечатнуюФормуНакладная(МассивОбъектов, ОбъектыПечати),
,
"Документ.ПередачаТоваровХранителю.ПФ_MXL_ПередачаТоваровХранителю");
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "НакладнаяКомиссионеру") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"НакладнаяКомиссионеру",
НСтр("ru = 'Передача товаров комиссионеру'"),
СформироватьПечатнуюФормуНакладная(МассивОбъектов, ОбъектыПечати),
,
"Документ.ПередачаТоваровХранителю.ПФ_MXL_ПередачаТоваровХранителю");
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "РасходнаяНакладная") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"РасходнаяНакладная",
НСтр("ru = 'Расходная накладная'"),
СформироватьПечатнуюФормуРасходнаяНакладная(МассивОбъектов, ОбъектыПечати),
,
"Документ.ПередачаТоваровХранителю.ПФ_MXL_РасходнаяНакладная");
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СертификатыНоменклатурыРеестр") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СертификатыНоменклатурыРеестр",
НСтр("ru = 'Сертификаты (реестр)'"),
Справочники.СертификатыНоменклатуры.СформироватьПечатнуюФормуРеестрСертификатовНоменклатуры(МассивОбъектов,
ОбъектыПечати),
,
"Справочник.СертификатыНоменклатуры.ПФ_MXL_РеестрСертификатов");
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СертификатыНоменклатурыИзображенияИзДокументов") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СертификатыНоменклатурыИзображенияИзДокументов",
НСтр("ru = 'Сертификаты (по каждой позиции документа)'"),
Справочники.СертификатыНоменклатуры.СформироватьПечатнуюФормуИзображенияСертификатовИзДокументов(МассивОбъектов,
ОбъектыПечати),
,
"Справочник.СертификатыНоменклатуры.ПФ_MXL_ИзображенияСертификатов");
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СертификатыНоменклатурыИзображенияИзДокументовБезДублей") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СертификатыНоменклатурыИзображенияИзДокументовБезДублей",
НСтр("ru = 'Сертификаты (по одному на сертификат)'"),
Справочники.СертификатыНоменклатуры.СформироватьПечатнуюФормуИзображенияСертификатовИзДокументовБезДублей(
МассивОбъектов,ОбъектыПечати),
,
"Справочник.СертификатыНоменклатуры.ПФ_MXL_ИзображенияСертификатов");
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "КомплектДокументов") Тогда
КоллекцияПечатныхФорм.Очистить();
СформироватьКомплектПечатныхФорм(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати);
КонецЕсли;
ПередачаТоваровХранителюЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати,
ПараметрыВывода);
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
КонецПроцедуры
Функция СформироватьКомплектПечатныхФорм(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати) Экспорт
Перем АдресКомплектаПечатныхФорм;
Если ТипЗнч(ПараметрыПечати) = Тип("Структура")
И ПараметрыПечати.Свойство("АдресКомплектаПечатныхФорм", АдресКомплектаПечатныхФорм) Тогда
КомплектПечатныхФорм = ПолучитьИзВременногоХранилища(АдресКомплектаПечатныхФорм);
Иначе
КомплектПечатныхФорм =
РегистрыСведений.НастройкиПечатиОбъектов.КомплектПечатныхФорм(
Метаданные.Документы.ПередачаТоваровХранителю.ПолноеИмя(),
МассивОбъектов,
Неопределено);
КонецЕсли;
Если КомплектПечатныхФорм = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
КомплектыПечатиПоОбъектам =
РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(
КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"Накладная");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
СформироватьПечатнуюФормуНакладная(КомплектПечати.Объекты, ОбъектыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам =
РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(
КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"РасходнаяНакладная");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
СформироватьПечатнуюФормуРасходнаяНакладная(КомплектПечати.Объекты, ОбъектыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам =
РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(
КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"ЗаданиеНаОтборРазмещениеТовара");
ПараметрыПечати.Вставить("ТипЗадания", "ЗаданиеНаОтбор");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ПередачаТоваровХранителю", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.СформироватьЗаданиеНаОтборРазмещениеТовара(
СтруктураТипов,
ОбъектыПечати,
ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам =
РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(
КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СертификатыНоменклатурыРеестр");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Справочники.СертификатыНоменклатуры.СформироватьПечатнуюФормуРеестрСертификатовНоменклатуры(
КомплектПечати.Объекты,
ОбъектыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам =
РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(
КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СертификатыНоменклатурыИзображенияИзДокументов");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Справочники.СертификатыНоменклатуры.СформироватьПечатнуюФормуИзображенияСертификатовИзДокументов(
КомплектПечати.Объекты,
ОбъектыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам =
РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(
КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СертификатыНоменклатурыИзображенияИзДокументовБезДублей");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Справочники.СертификатыНоменклатуры.СформироватьПечатнуюФормуИзображенияСертификатовИзДокументовБезДублей(
КомплектПечати.Объекты,
ОбъектыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"InvoiceInt");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ПередачаТоваровХранителю", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуInvoice(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
ПередачаТоваровХранителюЛокализация.СформироватьКомплектПечатныхФорм(
МассивОбъектов,
ПараметрыПечати,
КоллекцияПечатныхФорм,
ОбъектыПечати,
КомплектПечатныхФорм);
РегистрыСведений.НастройкиПечатиОбъектов.СформироватьКомплектВнешнихПечатныхФорм(
"Документ.ПередачаТоваровХранителю",
МассивОбъектов,
ПараметрыПечати,
КоллекцияПечатныхФорм,
ОбъектыПечати);
КонецФункции
Функция КомплектПечатныхФорм() Экспорт
КомплектПечатныхФорм = РегистрыСведений.НастройкиПечатиОбъектов.ПодготовитьКомплектПечатныхФорм();
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"РасходнаяНакладная",
НСтр("ru = 'Расходная накладная'"),
0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"Накладная",
НСтр("ru = 'Передача товаров хранителю'"),
2);
Если Константы.ИспользоватьМеждународныеПечатныеФормы.Получить() Тогда
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "InvoiceInt", НСтр("ru = 'Invoice'"), 2);
КонецЕсли;
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"РеестрНомеровГТД",
НСтр("ru = 'Реестр номеров ГТД'"),
0);
Если ПолучитьФункциональнуюОпцию("ИспользоватьСертификатыНоменклатуры") Тогда
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"СертификатыНоменклатурыРеестр",
НСтр("ru = 'Сертификаты (реестр)'"),
0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"СертификатыНоменклатурыИзображенияИзДокументов",
НСтр("ru = 'Сертификаты (по каждой позиции документа)'"),
0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"СертификатыНоменклатурыИзображенияИзДокументовБезДублей",
НСтр("ru = 'Сертификаты (по одному на сертификат)'"),
0);
КонецЕсли;
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"ЗаданиеНаОтборРазмещениеТовара",
НСтр("ru = 'Задание на отбор товаров'"),
0);
ПередачаТоваровХранителюЛокализация.КомплектПечатныхФорм(КомплектПечатныхФорм);
Возврат КомплектПечатныхФорм;
КонецФункции
Функция СформироватьПечатнуюФормуРасходнаяНакладная(МассивОбъектов, ОбъектыПечати)
ИспользоватьУпаковки = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
ЗапросПоСкладам = Новый Запрос;
ЗапросПоСкладам.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ТоварыДокумента.Склад КАК Склад,
| ТоварыДокумента.Склад.ИспользоватьСерииНоменклатуры КАК ИспользоватьСерииНоменклатуры
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТоварыДокумента
|ГДЕ
| ТоварыДокумента.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|
|ИТОГИ ПО
| ИспользоватьСерииНоменклатуры";
ЗапросПоСкладам.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = ЗапросПоСкладам.Выполнить();
УстановитьПривилегированныйРежим(Ложь);
ДеревоОбъектов = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Для Каждого ИспользованиеСерий Из ДеревоОбъектов.Строки Цикл
ЗапросПоТоварам = Новый Запрос;
ЗапросПоТоварам.УстановитьПараметр("МассивСкладов", ИспользованиеСерий.Строки.ВыгрузитьКолонку("Склад"));
ЗапросПоТоварам.УстановитьПараметр("МассивОбъектов", ИспользованиеСерий.Строки.ВыгрузитьКолонку("Ссылка"));
Если ИспользованиеСерий.ИспользоватьСерииНоменклатуры Тогда
ТекстЗапросаПоТоварам =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ТоварыДокумента.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Упаковка КАК Упаковка,
| """" КАК Серия,
| ТоварыДокумента.Количество КАК Количество,
| ТоварыДокумента.КоличествоУпаковок КАК КоличествоУпаковок
|ПОМЕСТИТЬ ТаблицаТоваров
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТоварыДокумента
|ГДЕ
| ТоварыДокумента.Ссылка В(&МассивОбъектов)
| И ТоварыДокумента.Склад В(&МассивСкладов)
| И НЕ (ТоварыДокумента.Номенклатура.ТипНоменклатуры В(ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И ТоварыДокумента.СтатусУказанияСерийНаСкладах В(2, 4, 6, 8))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СерииДокумента.Ссылка КАК Ссылка,
| СерииДокумента.Склад КАК Склад,
| СерииДокумента.Номенклатура КАК Номенклатура,
| СерииДокумента.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка,
| СерииДокумента.Серия КАК Серия,
| СерииДокумента.Количество КАК Количество,
| СерииДокумента.Количество КАК КоличествоУпаковок
|ИЗ
| Документ.ПередачаТоваровХранителю.Серии КАК СерииДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПередачаТоваровХранителю.Товары КАК ТаблицаТовары
| ПО СерииДокумента.Ссылка = ТаблицаТовары.Ссылка
| И СерииДокумента.Номенклатура = ТаблицаТовары.Номенклатура
| И СерииДокумента.Характеристика = ТаблицаТовары.Характеристика
| И СерииДокумента.Склад = ТаблицаТовары.Склад
|ГДЕ
| СерииДокумента.Ссылка В(&МассивОбъектов)
| И СерииДокумента.Склад В(&МассивСкладов)
| И СерииДокумента.Номенклатура.ТипНоменклатуры В(ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
|
|СГРУППИРОВАТЬ ПО
| СерииДокумента.Ссылка,
| СерииДокумента.Склад,
| СерииДокумента.Номенклатура,
| СерииДокумента.Характеристика,
| СерииДокумента.Серия,
| СерииДокумента.Количество,
| СерииДокумента.Количество
|
|ИМЕЮЩИЕ
| МАКСИМУМ(ТаблицаТовары.СтатусУказанияСерийНаСкладах) В(2, 4, 6, 8, 10)
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| ТаблицаТоваров.Склад КАК Склад,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Упаковка КАК Упаковка,
| ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
| ТОГДА NULL
| ИНАЧЕ ТаблицаТоваров.Серия
| КОНЕЦ КАК Серия,
| СУММА(ТаблицаТоваров.КоличествоУпаковок) КАК КоличествоУпаковок,
| СУММА(ТаблицаТоваров.Количество) КАК Количество
|ПОМЕСТИТЬ СуммированнаяТаблицаТоваров
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.Ссылка,
| ТаблицаТоваров.Склад,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ТаблицаТоваров.Упаковка,
| ВЫБОР
| КОГДА ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
| ТОГДА NULL
| ИНАЧЕ ТаблицаТоваров.Серия
| КОНЕЦ
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| ТаблицаТоваров.Ссылка.Номер КАК Номер,
| ТаблицаТоваров.Ссылка.Дата КАК Дата,
| ТаблицаТоваров.Ссылка.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| ТаблицаТоваров.Ссылка.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| ТаблицаТоваров.Ссылка.Организация КАК Организация,
| ТаблицаТоваров.Ссылка.Организация.Префикс КАК Префикс,
| ТаблицаТоваров.Ссылка.Контрагент КАК Контрагент,
| ТаблицаТоваров.Склад КАК Склад,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Номенклатура.Код КАК Код,
| ТаблицаТоваров.Номенклатура.Артикул КАК Артикул,
| ТаблицаТоваров.Номенклатура.НаименованиеПолное КАК ПредставлениеНоменклатуры,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Характеристика.НаименованиеПолное КАК ПредставлениеХарактеристики,
| ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
| &ТекстЗапросаНаименованиеЕдиницыИзмерения КАК ПредставлениеЕдиницыИзмеренияУпаковки,
| ВЫБОР
| КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ТаблицаТоваров.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
| ТаблицаТоваров.Серия.Наименование КАК ПредставлениеСерии,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.КоличествоУпаковок КАК КоличествоУпаковок,
| ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий КАК НастройкаИспользованияСерий,
| ВЫБОР
| КОГДА ТаблицаТоваров.Ссылка.ВернутьМногооборотнуюТару
| И ТаблицаТоваров.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара
|ИЗ
| СуммированнаяТаблицаТоваров КАК ТаблицаТоваров
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Склад,
| Номенклатура,
| Характеристика
|
|ИТОГИ ПО
| Ссылка,
| Склад,
| Номенклатура,
| Характеристика
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| ТаблицаТоваров.Склад КАК Склад,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия.Наименование КАК ПредставлениеСерии
|ИЗ
| ТаблицаТоваров КАК ТаблицаТоваров
|ГДЕ
| ТаблицаТоваров.Номенклатура.ВидНоменклатуры.НастройкаИспользованияСерий = ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)
| И НЕ ТаблицаТоваров.Серия ЕСТЬ NULL
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Склад,
| Номенклатура,
| Характеристика,
| ПредставлениеСерии";
ТекстЗапросаПоТоварам = СтрЗаменить(ТекстЗапросаПоТоварам, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ТаблицаТоваров.Упаковка",
"ТаблицаТоваров.Номенклатура"));
ТекстЗапросаПоТоварам = СтрЗаменить(ТекстЗапросаПоТоварам, "&ТекстЗапросаНаименованиеЕдиницыИзмерения",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
"Наименование",
"ТаблицаТоваров.Упаковка",
"ТаблицаТоваров.Номенклатура"));
ЗапросПоТоварам.Текст = ТекстЗапросаПоТоварам;
УстановитьПривилегированныйРежим(Истина);
МассивРезультатов = ЗапросПоТоварам.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
РезультатДанныеПечати = МассивРезультатов[2];
РезультатВыборкаПоСериям = МассивРезультатов[3];
ДанныеПечати = РезультатДанныеПечати.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаПоСериям = РезультатВыборкаПоСериям.Выбрать();
Иначе
ТекстЗапросаПоТоварам =
"ВЫБРАТЬ
| ТоварыПередачи.Ссылка КАК Ссылка,
| ТоварыПередачи.Ссылка.Номер КАК Номер,
| ТоварыПередачи.Ссылка.Дата КАК Дата,
| ТоварыПередачи.Ссылка.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| ТоварыПередачи.Ссылка.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| ТоварыПередачи.Ссылка.Организация КАК Организация,
| ТоварыПередачи.Ссылка.Организация.Префикс КАК Префикс,
| ТоварыПередачи.Ссылка.Контрагент КАК Контрагент,
| ТоварыПередачи.Склад КАК Склад,
| ТоварыПередачи.Номенклатура КАК Номенклатура,
| ТоварыПередачи.Номенклатура.Код КАК Код,
| ТоварыПередачи.Номенклатура.Артикул КАК Артикул,
| ТоварыПередачи.Номенклатура.НаименованиеПолное КАК ПредставлениеНоменклатуры,
| ТоварыПередачи.Характеристика КАК Характеристика,
| ТоварыПередачи.Характеристика.НаименованиеПолное КАК ПредставлениеХарактеристики,
| ПРЕДСТАВЛЕНИЕ(ТоварыПередачи.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
| &ТекстЗапросаНаименованиеЕдиницыИзмерения КАК ПредставлениеЕдиницыИзмеренияУпаковки,
| ВЫБОР
| КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ТоварыПередачи.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
| """" КАК ПредставлениеСерии,
| ТоварыПередачи.Количество КАК Количество,
| ТоварыПередачи.КоличествоУпаковок КАК КоличествоУпаковок,
| NULL КАК НастройкаИспользованияСерий,
| ВЫБОР
| КОГДА ТоварыПередачи.Ссылка.ВернутьМногооборотнуюТару
| И ТоварыПередачи.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТоварыПередачи
|ГДЕ
| ТоварыПередачи.Ссылка В(&МассивОбъектов)
| И ТоварыПередачи.Склад В(&МассивСкладов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Склад,
| ТоварыПередачи.НомерСтроки
|
|ИТОГИ ПО
| Ссылка,
| Склад,
| Номенклатура,
| Характеристика";
ТекстЗапросаПоТоварам = СтрЗаменить(ТекстЗапросаПоТоварам, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ТоварыПередачи.Упаковка",
"ТоварыПередачи.Номенклатура"));
ТекстЗапросаПоТоварам = СтрЗаменить(ТекстЗапросаПоТоварам, "&ТекстЗапросаНаименованиеЕдиницыИзмерения",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
"Наименование",
"ТоварыПередачи.Упаковка",
"ТоварыПередачи.Номенклатура"));
ЗапросПоТоварам.Текст = ТекстЗапросаПоТоварам;
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = ЗапросПоТоварам.Выполнить();
УстановитьПривилегированныйРежим(Ложь);
ДанныеПечати = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
КонецЕсли;
ПервыйДокумент = Истина;
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
ИмяКолонкиКодов = КолонкаКодов.ИмяКолонки;
ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
ВыводитьКоды = ЗначениеЗаполнено(ИмяКолонкиКодов);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПередачаТоваровХранителю_РасходнаяНакладная";
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПередачаТоваровХранителю.ПФ_MXL_РасходнаяНакладная");
ШиринаОтсутствующихОбластей = 0;
Если Не ВыводитьКоды Тогда
ШиринаОтсутствующихОбластей = Макет.Область("КолонкаКодов").ШиринаКолонки;
КонецЕсли;
Если Не ИспользоватьУпаковки Тогда
ШиринаОтсутствующихОбластей = ШиринаОтсутствующихОбластей
+ Макет.Область("КолонкаКоличестваУпаковок").ШиринаКолонки;
ШиринаОтсутствующихОбластей = ШиринаОтсутствующихОбластей
+ Макет.Область("КолонкаПредставленияУпаковок").ШиринаКолонки;
КонецЕсли;
Макет.Область("КолонкаТоваров").ШиринаКолонки = Макет.Область("КолонкаТоваров").ШиринаКолонки
+ ШиринаОтсутствующихОбластей;
РеквизитыДокумента = Новый Структура("Номер, Дата, Префикс, Представление, ДатаИсправляемогоДокумента, НомерИсправляемогоДокумента");
Пока ДанныеПечати.Следующий() Цикл
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ДанныеПечати);
ВыборкаПоСкладам = ДанныеПечати.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСкладам.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
Область = Макет.ПолучитьОбласть("Заголовок");
СтруктураДанныхЗаголовок = Новый Структура;
СтруктураДанныхЗаголовок.Вставить("ТекстЗаголовка", НСтр("ru='Расходная накладная'", ОбщегоНазначения.КодОсновногоЯзыка()));
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, Область, ДанныеПечати.Ссылка);
Область.Параметры.Заполнить(СтруктураДанныхЗаголовок);
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("Шапка");
ПредставлениеРаспоряжения = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(
РеквизитыДокумента,
НСтр("ru='Передача товаров хранителю'", ОбщегоНазначения.КодОсновногоЯзыка()));
СтруктураДанныхШапка = Новый Структура;
СтруктураДанныхШапка.Вставить("Склад", ВыборкаПоСкладам.Склад);
СтруктураДанныхШапка.Вставить("ПредставлениеСклада", ВыборкаПоСкладам.Склад);
СтруктураДанныхШапка.Вставить("ПредставлениеРаспоряжения", ПредставлениеРаспоряжения);
Область.Параметры.Заполнить(СтруктураДанныхШапка);
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("Поставщик");
ПредставлениеОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(
ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ВыборкаПоСкладам.Организация,
?(ЗначениеЗаполнено(ВыборкаПоСкладам.ДатаИсправляемогоДокумента),
ВыборкаПоСкладам.ДатаИсправляемогоДокумента,
ВыборкаПоСкладам.Дата)),
"ПолноеНаименование");
СтруктураДанныхПоставщик = Новый Структура;
СтруктураДанныхПоставщик.Вставить("Организация", ВыборкаПоСкладам.Организация);
СтруктураДанныхПоставщик.Вставить("ПредставлениеОрганизации", ПредставлениеОрганизации);
Область.Параметры.Заполнить(СтруктураДанныхПоставщик);
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("Покупатель");
ПредставлениеПартнера = ФормированиеПечатныхФорм.ОписаниеОрганизации(
ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ВыборкаПоСкладам.Контрагент,
?(ЗначениеЗаполнено(ВыборкаПоСкладам.ДатаИсправляемогоДокумента),
ВыборкаПоСкладам.ДатаИсправляемогоДокумента,
ВыборкаПоСкладам.Дата)),
"ПолноеНаименование");
СтруктураДанныхПоставщик.Вставить("Контрагент", ВыборкаПоСкладам.Контрагент);
СтруктураДанныхПоставщик.Вставить("ПредставлениеПартнера", ПредставлениеПартнера);
Область.Параметры.Заполнить(СтруктураДанныхПоставщик);
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("ШапкаТаблицы|НачалоСтроки");
ТабличныйДокумент.Вывести(Область);
Если ВыводитьКоды Тогда
Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
СтруктураДанныхКоды = Новый Структура("ИмяКолонкиКодов", ПредставлениеКолонкиКодов);
Область.Параметры.Заполнить(СтруктураДанныхКоды);
ТабличныйДокумент.Присоединить(Область);
КонецЕсли;
Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаТоваров");
ТабличныйДокумент.Присоединить(Область);
Если ИспользоватьУпаковки Тогда
Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкиУпаковок");
ТабличныйДокумент.Присоединить(Область);
КонецЕсли;
Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкиКоличества");
ТабличныйДокумент.Присоединить(Область);
ОбластьНачалоСтроки = Макет.ПолучитьОбласть("СтрокаТаблицы|НачалоСтроки");
ОбластьКолонкаКодов = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаКодов");
ОбластьКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаТоваров");
ОбластьКолонкаУпаковок = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкиУпаковок");
ОбластьКолонкаКоличества = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкиКоличества");
СчетСтрок = 1;
ВыборкаПоСсылкамТЧ = ВыборкаПоСкладам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСсылкамТЧ.Следующий() Цикл
ВыборкаПоНоменклатуреТЧ = ВыборкаПоСсылкамТЧ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоНоменклатуреТЧ.Следующий() Цикл
ВыборкаПоСтрокамТЧ = ВыборкаПоНоменклатуреТЧ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ПерваяСтрока = Истина;
СтрокаЕдиницИзмерений = "";
СтрокаУпаковок = "";
СтрокаКоличества = "";
СтрокаКоличестваУпаковок = "";
Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл
Если ВыборкаПоСтрокамТЧ.НастройкаИспользованияСерий = Перечисления.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара Тогда
Если ПерваяСтрока Тогда
СтруктураДанныхНомерСтроки = Новый Структура("НомерСтроки", СчетСтрок);
ОбластьНачалоСтроки.Параметры.Заполнить(СтруктураДанныхНомерСтроки);
СчетСтрок = СчетСтрок + 1;
ТабличныйДокумент.Вывести(ОбластьНачалоСтроки);
Если ВыводитьКоды Тогда
СтруктураДанныхКоды = Новый Структура("ЗначениеКода", ВыборкаПоСтрокамТЧ[ИмяКолонкиКодов]);
ОбластьКолонкаКодов.Параметры.Заполнить(СтруктураДанныхКоды);
ТабличныйДокумент.Присоединить(ОбластьКолонкаКодов);
КонецЕсли;
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("Ссылка", ВыборкаПоСтрокамТЧ.Ссылка);
СтруктураПоиска.Вставить("Склад", ВыборкаПоСтрокамТЧ.Склад);
СтруктураПоиска.Вставить("Номенклатура", ВыборкаПоСтрокамТЧ.Номенклатура);
СтруктураПоиска.Вставить("Характеристика", ВыборкаПоСтрокамТЧ.Характеристика);
СтрокаСерий = "";
Пока ВыборкаПоСериям.НайтиСледующий(СтруктураПоиска) Цикл
СтрокаСерий = СтрокаСерий + ВыборкаПоСериям.ПредставлениеСерии + ", ";
КонецЦикла;
Если СтрДлина(СтрокаСерий) <> 0 Тогда
СтрокаСерий = Лев(СтрокаСерий, СтрДлина(СтрокаСерий) - 2);
КонецЕсли;
ДополнительныеПараметрыПолученияНаименованияДляПечати =
НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = ВыборкаПоСтрокамТЧ.ЭтоВозвратнаяТара;
ДополнительныеПараметрыПолученияНаименованияДляПечати.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаПоСтрокамТЧ.ПредставлениеНоменклатуры,
ВыборкаПоСтрокамТЧ.ПредставлениеХарактеристики,
,
СтрокаСерий,
ДополнительныеПараметрыПолученияНаименованияДляПечати);
СтруктураДанныхТовар = Новый Структура("Товар", Товар);
ОбластьКолонкаТоваров.Параметры.Заполнить(СтруктураДанныхТовар);
ТабличныйДокумент.Присоединить(ОбластьКолонкаТоваров);
ПерваяСтрока = Ложь;
КонецЕсли;
Если ИспользоватьУпаковки Тогда
СтрокаУпаковок = СтрокаУпаковок + ВыборкаПоСтрокамТЧ.ПредставлениеЕдиницыИзмеренияУпаковки + Символы.ПС;
СтрокаКоличестваУпаковок = СтрокаКоличестваУпаковок + ВыборкаПоСтрокамТЧ.КоличествоУпаковок + Символы.ПС;
КонецЕсли;
СтрокаКоличества = СтрокаКоличества + ВыборкаПоСтрокамТЧ.Количество + Символы.ПС;
СтрокаЕдиницИзмерений = СтрокаЕдиницИзмерений + ВыборкаПоСтрокамТЧ.ПредставлениеБазовойЕдиницыИзмерения
+ Символы.ПС;
ТоварССериейЭкземпляром = Истина;
Иначе
СтруктураДанныхНомерСтроки = Новый Структура("НомерСтроки", СчетСтрок);
ОбластьНачалоСтроки.Параметры.Заполнить(СтруктураДанныхНомерСтроки);
СчетСтрок = СчетСтрок + 1;
ТабличныйДокумент.Вывести(ОбластьНачалоСтроки);
Если ВыводитьКоды Тогда
СтруктураДанныхКоды = Новый Структура("ЗначениеКода", ВыборкаПоСтрокамТЧ[ИмяКолонкиКодов]);
ОбластьКолонкаКодов.Параметры.Заполнить(СтруктураДанныхКоды);
ТабличныйДокумент.Присоединить(ОбластьКолонкаКодов);
КонецЕсли;
ДополнительныеПараметрыПолученияНаименованияДляПечати =
НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = ВыборкаПоСтрокамТЧ.ЭтоВозвратнаяТара;
ДополнительныеПараметрыПолученияНаименованияДляПечати.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаПоСтрокамТЧ.ПредставлениеНоменклатуры,
ВыборкаПоСтрокамТЧ.ПредставлениеХарактеристики,
,
ВыборкаПоСтрокамТЧ.ПредставлениеСерии,
ДополнительныеПараметрыПолученияНаименованияДляПечати);
СтруктураДанныхТовар = Новый Структура("Товар", Товар);
ОбластьКолонкаТоваров.Параметры.Заполнить(СтруктураДанныхТовар);
ТабличныйДокумент.Присоединить(ОбластьКолонкаТоваров);
Если ИспользоватьУпаковки Тогда
ОбластьКолонкаУпаковок.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьКолонкаУпаковок);
КонецЕсли;
ОбластьКолонкаКоличества.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
ТабличныйДокумент.Присоединить(ОбластьКолонкаКоличества);
ТоварССериейЭкземпляром = Ложь;
КонецЕсли;
КонецЦикла;
Если ТоварССериейЭкземпляром Тогда
Если ИспользоватьУпаковки Тогда
СтруктураДанныхКолонкаУпаковок = Новый Структура;
СтруктураДанныхКолонкаУпаковок.Вставить("КоличествоУпаковок", СтрокаКоличестваУпаковок);
СтруктураДанныхКолонкаУпаковок.Вставить("ПредставлениеЕдиницыИзмеренияУпаковки", СтрокаУпаковок);
ОбластьКолонкаУпаковок.Параметры.Заполнить(СтруктураДанныхКолонкаУпаковок);
ТабличныйДокумент.Присоединить(ОбластьКолонкаУпаковок);
КонецЕсли;
СтруктураДанныхКолонкаКоличества = Новый Структура;
СтруктураДанныхКолонкаКоличества.Вставить("Количество", СтрокаКоличества);
СтруктураДанныхКолонкаКоличества.Вставить("ПредставлениеБазовойЕдиницыИзмерения", СтрокаЕдиницИзмерений);
ОбластьКолонкаКоличества.Параметры.Заполнить(СтруктураДанныхКолонкаКоличества);
ТабличныйДокумент.Присоединить(ОбластьКолонкаКоличества);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Область = Макет.ПолучитьОбласть("ПодвалТаблицы|НачалоСтроки");
ТабличныйДокумент.Вывести(Область);
Если ВыводитьКоды Тогда
Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаКодов");
ТабличныйДокумент.Присоединить(Область);
КонецЕсли;
Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров");
ТабличныйДокумент.Присоединить(Область);
Если ИспользоватьУпаковки Тогда
Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкиУпаковок");
ТабличныйДокумент.Присоединить(Область);
КонецЕсли;
Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкиКоличества");
ТабличныйДокумент.Присоединить(Область);
Область = Макет.ПолучитьОбласть("Подписи");
ТекстИтоговойСтроки = НСтр("ru = 'Всего наименований %ВсегоНаименований%'", ОбщегоНазначения.КодОсновногоЯзыка());
ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%ВсегоНаименований%", СчетСтрок-1);
СтруктураДанныхЗаголовок.Вставить("ИтоговаяСтрока", ТекстИтоговойСтроки);
Область.Параметры.Заполнить(СтруктураДанныхЗаголовок);
ТабличныйДокумент.Вывести(Область);
КонецЦикла;
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,
ДанныеПечати.Ссылка);
КонецЦикла;
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции
Функция СформироватьПечатнуюФормуНакладная(МассивОбъектов, ОбъектыПечати)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ПередачаТоваров.Ссылка КАК Ссылка,
| ПередачаТоваров.Номер КАК Номер,
| ПередачаТоваров.Дата КАК Дата,
| ПередачаТоваров.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| ПередачаТоваров.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| ПередачаТоваров.Партнер КАК Партнер,
| ПередачаТоваров.Контрагент КАК Получатель,
| ПередачаТоваров.Организация КАК Организация,
| ПередачаТоваров.Организация.Префикс КАК Префикс,
| ПередачаТоваров.Валюта КАК Валюта,
| ПередачаТоваров.Отпустил КАК ОтпускПроизвел,
| ПередачаТоваров.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ПередачаТоваровХранителю КАК ПередачаТоваров
|ГДЕ
| ПередачаТоваров.Ссылка В(&МассивДокументов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| ПередачаТоваров.Ссылка КАК Ссылка,
| ПередачаТоваров.НомерСтроки КАК НомерСтроки,
| ВариантыКомплектации.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектации.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектации.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ПередачаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| ПередачаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ПередачаТоваров.Номенклатура КАК Номенклатура,
| ПередачаТоваров.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ПередачаТоваров.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ПередачаТоваров.Номенклатура.ЕдиницаИзмерения
| ИНАЧЕ ПередачаТоваров.Упаковка
| КОНЕЦ КАК ЕдиницаИзмерения,
| ПередачаТоваров.Упаковка КАК Упаковка,
| ВЫБОР
| КОГДА ПередачаТоваров.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА 1
| ИНАЧЕ &ТекстЗапросаКоэффициентУпаковки1
| КОНЕЦ КАК Коэффициент,
| ПередачаТоваров.Количество КАК Количество,
| ПередачаТоваров.КоличествоУпаковок КАК КоличествоУпаковок,
| ПередачаТоваров.Сумма / ПередачаТоваров.КоличествоУпаковок КАК Цена,
| ПередачаТоваров.Сумма КАК Сумма
|ПОМЕСТИТЬ Товары
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ПередачаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектации
| ПО ВариантыКомплектации.Владелец = ПередачаТоваров.НоменклатураНабора
| И ВариантыКомплектации.Характеристика = ПередачаТоваров.ХарактеристикаНабора
| И ВариантыКомплектации.Основной
|ГДЕ
| ПередачаТоваров.Ссылка В(&МассивДокументов)
|
|ИНДЕКСИРОВАТЬ ПО
| ПередачаТоваров.Ссылка,
| ПередачаТоваров.НоменклатураНабора,
| ПередачаТоваров.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ДокументыПечати
|ИЗ
| Товары КАК Товары
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры
|ПОМЕСТИТЬ КомплектацииДокументов
|ИЗ
| Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| МИНИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| СУММА(ТаблицаТоваров.Сумма) КАК Сумма
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыПодготовка
|ИЗ
| Товары КАК ТаблицаТоваров
|ГДЕ
| ТаблицаТоваров.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.Ссылка,
| ТаблицаТоваров.НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| НоменклатураНабора,
| ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА Товары.ВариантКомплектацииНоменклатуры.НоменклатураОсновногоКомпонента = Товары.Номенклатура
| И Товары.ВариантКомплектацииНоменклатуры.ХарактеристикаОсновногоКомпонента = Товары.Характеристика
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОсновнаяКомплектующая,
| Товары.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Товары.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Товары.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Товары.НоменклатураНабора КАК НоменклатураНабора,
| Товары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| 0 КАК КоличествоПоУмолчанию,
| Товары.Количество КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьПервая
|ИЗ
| Товары КАК Товары
|ГДЕ
| Товары.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДокументыПечати.Ссылка КАК Ссылка,
| ЛОЖЬ КАК ОсновнаяКомплектующая,
| ВариантыКомплектации.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектации.Ссылка.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектации.Ссылка.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВариантыКомплектации.Ссылка.Владелец КАК НоменклатураНабора,
| ВариантыКомплектации.Ссылка.Характеристика КАК ХарактеристикаНабора,
| ВариантыКомплектации.Номенклатура КАК Номенклатура,
| ВариантыКомплектации.Характеристика КАК Характеристика,
| СУММА(ВариантыКомплектации.Количество) КАК КоличествоПоУмолчанию,
| 0 КАК Количество
|ИЗ
| Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектации
| ЛЕВОЕ СОЕДИНЕНИЕ ДокументыПечати КАК ДокументыПечати
| ПО ИСТИНА
|ГДЕ
| ВариантыКомплектации.Ссылка В
| (ВЫБРАТЬ
| Комплектации.ВариантКомплектацииНоменклатуры
| ИЗ КомплектацииДокументов КАК Комплектации)
|
|СГРУППИРОВАТЬ ПО
| ДокументыПечати.Ссылка,
| ВариантыКомплектации.Ссылка,
| ВариантыКомплектации.Ссылка.Владелец,
| ВариантыКомплектации.Ссылка.Характеристика,
| ВариантыКомплектации.Номенклатура,
| ВариантыКомплектации.Характеристика
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| МАКСИМУМ(Таблица.ОсновнаяКомплектующая) КАК ОсновнаяКомплектующая,
| Таблица.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| СУММА(Таблица.КоличествоПоУмолчанию) КАК КоличествоПоУмолчанию,
| СУММА(Таблица.Количество) КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьВторая
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьПервая КАК Таблица
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика
|;
|
|
|ВЫБРАТЬ
| Результат.Ссылка КАК Ссылка,
| Результат.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора КАК НоменклатураНабора,
| Результат.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0
| И Результат.ОсновнаяКомплектующая
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ NULL
| КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК Количество,
| МАКСИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ NULL
| КОНЕЦ) КАК КоэффициентМаксимум,
| ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ NULL
| КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК КоэффициентМинимум
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительно
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьВторая КАК Результат
|
|СГРУППИРОВАТЬ ПО
| Результат.Ссылка,
| Результат.ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора,
| Результат.ХарактеристикаНабора
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| НоменклатураНабора,
| ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.НомерСтроки КАК НомерСтроки,
| ВременнаяТаблицаНаборыДополнительно.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| ВЫБОР
| КОГДА ВЫБОР
| КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| ИНАЧЕ ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| И ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоЦенам),
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоДолям))
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.РассчитываетсяИзЦенКомплектующих)
| ИНАЧЕ ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
| ВЫБОР
| КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| ИНАЧЕ ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК Количество,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК КоличествоУпаковок,
| ВЫБОР
| КОГДА ВременнаяТаблицаНаборыДополнительно.КоэффициентМинимум = ВременнаяТаблицаНаборыДополнительно.КоэффициентМаксимум
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ПолныйНабор,
| Таблица.Сумма КАК Сумма
|ПОМЕСТИТЬ ВременнаяТаблицаНаборы
|ИЗ
| ВременнаяТаблицаНаборыПодготовка КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборыДополнительно КАК ВременнаяТаблицаНаборыДополнительно
| ПО Таблица.Ссылка = ВременнаяТаблицаНаборыДополнительно.Ссылка
| И Таблица.НоменклатураНабора = ВременнаяТаблицаНаборыДополнительно.НоменклатураНабора
| И Таблица.ХарактеристикаНабора = ВременнаяТаблицаНаборыДополнительно.ХарактеристикаНабора
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| НоменклатураНабора,
| ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Ссылка КАК Ссылка,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| ВложенныйЗапрос.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВложенныйЗапрос.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВложенныйЗапрос.НоменклатураНабора КАК НоменклатураНабора,
| ВложенныйЗапрос.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.Номенклатура.Код КАК Код,
| ВложенныйЗапрос.Номенклатура.Артикул КАК Артикул,
| ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК ТоварНаименованиеПолное,
| ВложенныйЗапрос.Характеристика.НаименованиеПолное КАК Характеристика,
| ВложенныйЗапрос.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмерения,
| ВЫБОР
| КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ ВложенныйЗапрос.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
| ВложенныйЗапрос.КоличествоУпаковок КАК Количество,
| ВложенныйЗапрос.Цена КАК Цена,
| ВложенныйЗапрос.Сумма КАК Сумма,
| 0 КАК СуммаНДС,
| ВложенныйЗапрос.ЭтоКомплектующие КАК ЭтоКомплектующие,
| ВложенныйЗапрос.ЭтоНабор КАК ЭтоНабор,
| ВложенныйЗапрос.ПолныйНабор КАК ПолныйНабор,
| ВЫБОР
| КОГДА ВложенныйЗапрос.Ссылка.ВернутьМногооборотнуюТару
| И ВложенныйЗапрос.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара
|ИЗ
| (ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0
| ТОГДА ВременнаяТаблицаНаборы.НомерСтроки
| ИНАЧЕ Таблица.НомерСтроки
| КОНЕЦ КАК НомерСтроки,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0
| ТОГДА ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ПустаяСсылка)
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0
| ТОГДА ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ПустаяСсылка)
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Количество КАК Количество,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| Таблица.Цена КАК Цена,
| Таблица.Сумма КАК Сумма,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) КАК СтавкаНДС,
| 0 КАК СуммаНДС,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоКомплектующие,
| ЛОЖЬ КАК ЭтоНабор,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0
| ТОГДА ВременнаяТаблицаНаборы.ПолныйНабор
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ПолныйНабор
| ИЗ
| Товары КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ПО ВременнаяТаблицаНаборы.Ссылка = Таблица.Ссылка
| И ВременнаяТаблицаНаборы.НоменклатураНабора = Таблица.НоменклатураНабора
| И ВременнаяТаблицаНаборы.ХарактеристикаНабора = Таблица.ХарактеристикаНабора
| ГДЕ
| Таблица.НоменклатураНабора = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ИЛИ (Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоКомплектующие),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ВременнаяТаблицаНаборы.Ссылка КАК Ссылка,
| ВременнаяТаблицаНаборы.НомерСтроки КАК НомерСтроки,
| ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВременнаяТаблицаНаборы.НоменклатураНабора КАК НоменклатураНабора,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВременнаяТаблицаНаборы.НоменклатураНабора КАК Номенклатура,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора КАК Характеристика,
| ВременнаяТаблицаНаборы.НоменклатураНабора.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка,
| ВременнаяТаблицаНаборы.Количество КАК Количество,
| ВременнаяТаблицаНаборы.КоличествоУпаковок КАК КоличествоУпаковок,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1) <> 0
| ТОГДА (ВременнаяТаблицаНаборы.Сумма) / ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1)
| ИНАЧЕ 0
| КОНЕЦ КАК Цена,
| ВременнаяТаблицаНаборы.Сумма КАК Сумма,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) КАК СтавкаНДС,
| 0 КАК СуммаНДС,
| ЛОЖЬ КАК ЭтоКомплектующие,
| ИСТИНА КАК ЭтоНабор,
| ВременнаяТаблицаНаборы.ПолныйНабор КАК ПолныйНабор
| ИЗ
| ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ГДЕ
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие))) КАК ВложенныйЗапрос
|
|УПОРЯДОЧИТЬ ПО
| ВложенныйЗапрос.Ссылка,
| НомерСтроки,
| ЭтоНабор УБЫВ
|
|ИТОГИ
| СУММА(Сумма)
|ПО
| Ссылка";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ПередачаТоваров.Упаковка",
"ПередачаТоваров.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки2",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ВложенныйЗапрос.Упаковка",
"ВложенныйЗапрос.Номенклатура"));
Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
УстановитьПривилегированныйРежим(Истина);
МассивРезультатов = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
ПервыйДокумент = Истина;
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
ИмяКолонкиКодов = КолонкаКодов.ИмяКолонки;
ПредставлениеКолонкиКодов = КолонкаКодов.ПредставлениеКолонки;
ВыводитьКоды = ЗначениеЗаполнено(ИмяКолонкиКодов);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПередачаТоваровХранителю_Накладная";
РезультатДанныеПечати = МассивРезультатов[0];
РезультатВыборкаПоДокументам = МассивРезультатов[9];
ДанныеПечати = РезультатДанныеПечати.Выбрать();
ВыборкаПоДокументам = РезультатВыборкаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ДанныеПечати.Следующий() Цикл
СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ПередачаТоваровХранителю.ПФ_MXL_ПередачаТоваровХранителю");
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета,
ДанныеПечати.Ссылка);
СтрокаЗаголовка = ?(ДанныеПечати.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
НСтр("ru='Передача товаров комиссионеру'", ОбщегоНазначения.КодОсновногоЯзыка()),
НСтр("ru='Передача товаров хранителю'", ОбщегоНазначения.КодОсновногоЯзыка()));
ТекстЗаголовка = ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(
ДанныеПечати, СтрокаЗаголовка);
СтруктураДанныхШапки = Новый Структура;
СтруктураДанныхШапки.Вставить("ТекстЗаголовка", ТекстЗаголовка);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхШапки);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Поставщик");
ДатаПолученияСведений = ?(ЗначениеЗаполнено(ДанныеПечати.ДатаИсправляемогоДокумента),
ДанныеПечати.ДатаИсправляемогоДокумента,
ДанныеПечати.Дата);
ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(
ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДатаПолученияСведений),
"ПолноеНаименование");
СтруктураДанныхПоставщик = Новый Структура;
СтруктураДанныхПоставщик.Вставить("Поставщик", ДанныеПечати.Организация);
СтруктураДанныхПоставщик.Вставить("ПредставлениеПоставщика", ПредставлениеПоставщика);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПоставщик);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Покупатель");
ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(
ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Получатель, ДатаПолученияСведений),
"ПолноеНаименование");
СтруктураДанныхПокупатель = Новый Структура;
СтруктураДанныхПокупатель.Вставить("Получатель", ДанныеПечати.Получатель);
СтруктураДанныхПокупатель.Вставить("ПредставлениеПолучателя", ПредставлениеПолучателя);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПокупатель);
ТабличныйДокумент.Вывести(ОбластьМакета);
ШапкаТаблицы = "ШапкаТаблицы";
ПостфиксТовар = "Товар";
Данные = "Данные";
ОбластьКолонкаТовар = Макет.Область("ПерваяКолонкаТовара");
ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
+ ?(ВыводитьКоды, 0, Макет.Область("КолонкаКодов").ШиринаКолонки);
ОбластьНомера = Макет.ПолучитьОбласть(ШапкаТаблицы + "|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть(ШапкаТаблицы + "|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть(ШапкаТаблицы + "|" + ПостфиксТовар);
ОбластьДанных = Макет.ПолучитьОбласть(ШапкаТаблицы + "|" + Данные);
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
СтруктураДанныхКоды = Новый Структура("ИмяКолонкиКодов", ПредставлениеКолонкиКодов);
ОбластьКодов.Параметры.Заполнить(СтруктураДанныхКоды);
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТовар);
ТабличныйДокумент.Присоединить(ОбластьДанных);
СтрокаТаблицы = "СтрокаТаблицы";
ОбластьНомераСтрокиСтандарт = Макет.ПолучитьОбласть(СтрокаТаблицы + "|НомерСтроки");
ОбластьКодовСтрокиСтандарт = Макет.ПолучитьОбласть(СтрокаТаблицы + "|КолонкаКодов");
ОбластьТоварСтрокиСтандарт = Макет.ПолучитьОбласть(СтрокаТаблицы + "|" + ПостфиксТовар);
ОбластьДанныхСтрокиСтандарт = Макет.ПолучитьОбласть(СтрокаТаблицы + "|" + Данные);
ИспользоватьНаборы = Ложь;
Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(ВыборкаПоДокументам, "ЭтоНабор") Тогда
ИспользоватьНаборы = Истина;
СтрокаТаблицыНабор = "СтрокаТаблицыНабор";
СтрокаТаблицыКомплектующие = "СтрокаТаблицыКомплектующие";
ОбластьНомераСтрокиНабор = Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|НомерСтроки");
ОбластьНомераСтрокиКомплектующие = Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|НомерСтроки");
ОбластьКодовСтрокиНабор = Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|КолонкаКодов");
ОбластьКодовСтрокиКомплектующие = Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|КолонкаКодов");
ОбластьТоварСтрокиНабор = Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|" + ПостфиксТовар);
ОбластьТоварСтрокиКомплектующие = Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|" + ПостфиксТовар);
ОбластьДанныхСтрокиНабор = Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|" + Данные);
ОбластьДанныхСтрокиКомплектующие = Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|" + Данные);
КонецЕсли;
Сумма = 0;
НомерСтроки = 0;
ПустыеДанные = НаборыСервер.ПустыеДанные();
ВыборкаПоТоварам = ВыборкаПоДокументам.Выбрать();
Пока ВыборкаПоТоварам.Следующий() Цикл
Если НаборыСервер.ИспользоватьОбластьНабор(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
ОбластьКодовСтроки = ОбластьКодовСтрокиНабор;
ОбластьНомераСтроки = ОбластьНомераСтрокиНабор;
ОбластьДанныхСтроки = ОбластьДанныхСтрокиНабор;
ОбластьТоварСтроки = ОбластьТоварСтрокиНабор;
ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
ОбластьКодовСтроки = ОбластьКодовСтрокиКомплектующие;
ОбластьНомераСтроки = ОбластьНомераСтрокиКомплектующие;
ОбластьДанныхСтроки = ОбластьДанныхСтрокиКомплектующие;
ОбластьТоварСтроки = ОбластьТоварСтрокиКомплектующие;
Иначе
ОбластьКодовСтроки = ОбластьКодовСтрокиСтандарт;
ОбластьНомераСтроки = ОбластьНомераСтрокиСтандарт;
ОбластьДанныхСтроки = ОбластьДанныхСтрокиСтандарт;
ОбластьТоварСтроки = ОбластьТоварСтрокиСтандарт;
КонецЕсли;
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
УстановитьПараметр(ОбластьНомераСтроки, "НомерСтроки", Неопределено);
Иначе
НомерСтроки = НомерСтроки + 1;
УстановитьПараметр(ОбластьНомераСтроки, "НомерСтроки", НомерСтроки);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьНомераСтроки);
Если ВыводитьКоды Тогда
СтруктураДанныхКоды = Новый Структура("Артикул", ВыборкаПоТоварам[ИмяКолонкиКодов]);
ОбластьКодовСтроки.Параметры.Заполнить(СтруктураДанныхКоды);
ТабличныйДокумент.Присоединить(ОбластьКодовСтроки);
КонецЕсли;
ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(ВыборкаПоТоварам, ИспользоватьНаборы);
ОбластьТоварСтроки.Параметры.Заполнить(ВыборкаПоТоварам);
ДополнительныеПараметрыПолученияНаименованияДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДополнительныеПараметрыПолученияНаименованияДляПечати.ВозвратнаяТара = ВыборкаПоТоварам.ЭтоВозвратнаяТара;
ДополнительныеПараметрыПолученияНаименованияДляПечати.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Товар = ПрефиксИПостфикс.Префикс + НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаПоТоварам.ТоварНаименованиеПолное,
ВыборкаПоТоварам.Характеристика,
,
,
ДополнительныеПараметрыПолученияНаименованияДляПечати) + ПрефиксИПостфикс.Постфикс;
СтруктураДанныхТовар = Новый Структура("Товар", Товар);
ОбластьТоварСтроки.Параметры.Заполнить(СтруктураДанныхТовар);
ТабличныйДокумент.Присоединить(ОбластьТоварСтроки);
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
ОбластьДанныхСтроки.Параметры.Заполнить(ПустыеДанные);
Иначе
ОбластьДанныхСтроки.Параметры.Заполнить(ВыборкаПоТоварам);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьДанныхСтроки);
Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(ВыборкаПоТоварам, ИспользоватьНаборы) Тогда
Сумма = Сумма + ВыборкаПоТоварам.Сумма;
КонецЕсли;
КонецЦикла;
ПодвалТаблицы = "ПодвалТаблицы";
ОбластьНомера = Макет.ПолучитьОбласть(ПодвалТаблицы + "|НомерСтроки");
ОбластьКодов = Макет.ПолучитьОбласть(ПодвалТаблицы + "|КолонкаКодов");
ОбластьТовар = Макет.ПолучитьОбласть(ПодвалТаблицы + "|" + ПостфиксТовар);
ОбластьДанных = Макет.ПолучитьОбласть(ПодвалТаблицы + "|" + Данные);
ТабличныйДокумент.Вывести(ОбластьНомера);
Если ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьКодов);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьТовар);
СтруктураДанныхВсего = Новый Структура;
СтруктураДанныхВсего.Вставить("Всего", ФормированиеПечатныхФорм.ФорматСумм(Сумма));
ОбластьДанных.Параметры.Заполнить(СтруктураДанныхВсего);
ТабличныйДокумент.Присоединить(ОбластьДанных);
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СуммаКПрописи = Сумма;
СуммаПрописью = РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(СуммаКПрописи, ДанныеПечати.Валюта);
ИтоговаяСтрока = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Всего наименований %1, на сумму %2'", ОбщегоНазначения.КодОсновногоЯзыка()),
НомерСтроки,
ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, ДанныеПечати.Валюта));
СтруктураДанныхСуммаПрописью = Новый Структура;
СтруктураДанныхСуммаПрописью.Вставить("СуммаПрописью", СуммаПрописью);
СтруктураДанныхСуммаПрописью.Вставить("ИтоговаяСтрока", ИтоговаяСтрока);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхСуммаПрописью);
ТабличныйДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
Если ЗначениеЗаполнено(ДанныеПечати.ОтпускПроизвел) Тогда
ОтпускПроизвел = ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.ОтпускПроизвел, ДатаПолученияСведений);
СтруктураДанныхОтпускПроизвел = Новый Структура;
СтруктураДанныхОтпускПроизвел.Вставить("ОтпускПроизвел", ОтпускПроизвел);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхОтпускПроизвел);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати,
ДанныеПечати.Ссылка);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;
КонецФункции
Процедура ЗаполнитьСтруктуруПолучателейПечатныхФорм(СтруктураДанныхОбъектаПечати) Экспорт
СтруктураДанныхОбъектаПечати.ОсновнойПолучатель = "Партнер";
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Партнер");
Если ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов") Тогда
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Контрагент");
КонецЕсли;
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Грузоотправитель");
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Грузополучатель");
Если ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеДоставкой") Тогда
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("ПеревозчикПартнер");
КонецЕсли;
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("КонтактноеЛицо");
КонецПроцедуры
Функция ПолучитьДанныеДляПечатнойФормыСчетаНаОплату(ПараметрыПечати, МассивОбъектов, КодЯзыка = Неопределено) Экспорт
Возврат ДанныеДляПечатныхФормСчетаНаОплатуИзвещения(ПараметрыПечати, МассивОбъектов, КодЯзыка);
КонецФункции
Функция ДанныеДляПечатныхФормСчетаНаОплатуИзвещения(ПараметрыПечати, МассивОбъектов, КодЯзыка = Неопределено) Экспорт
Если ПараметрыПечати <> Неопределено И ПараметрыПечати.Свойство("ОтображатьСкидки") Тогда
ОтображатьСкидки = ПараметрыПечати.ОтображатьСкидки;
Иначе
ОтображатьСкидки = (Константы.ОтображениеСкидокВПечатныхФормахДокументовПродажи.Получить()
<> Перечисления.ВариантыВыводаСкидокВПечатныхФормах.НеВыводитьСкидки);
КонецЕсли;
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов(МассивОбъектов, МенеджерВременныхТаблиц);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Номер КАК Номер,
| Документы.Дата КАК Дата,
| НЕОПРЕДЕЛЕНО КАК ДокументОснование,
| ЕСТЬNULL(Документы.БанковскийСчетОрганизации.Владелец, Документы.Организация) КАК Организация,
| Документы.Организация КАК ОрганизацияПоставщик,
| ТаблицаОтветственныеЛица.РуководительНаименование КАК Руководитель,
| ТаблицаОтветственныеЛица.РуководительДолжность КАК ДолжностьРуководителя,
| ТаблицаОтветственныеЛица.ГлавныйБухгалтерНаименование КАК ГлавныйБухгалтер,
| ИСТИНА КАК УчитыватьНДС,
| ЛОЖЬ КАК ОперацияОблагаетсяНДСУПокупателя,
| Документы.Контрагент КАК Контрагент,
| Документы.Контрагент.ЮрФизЛицо КАК КонтрагентЮрФизЛицо,
| Документы.БанковскийСчетОрганизации КАК БанковскийСчет,
|
| ВЫБОР КОГДА Документы.БанковскийСчетОрганизации.ИностранныйБанк
| ИЛИ Документы.БанковскийСчетОрганизации.ВалютаДенежныхСредств <> Документы.Организация.ВалютаРегламентированногоУчета
| ИЛИ Документы.БанковскийСчетКонтрагента.ИностранныйБанк ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ПлатежЗаРубеж,
| Документы.БанковскийСчетОрганизации.ВалютаДенежныхСредств КАК ВалютаДенежныхСредств,
| Документы.БанковскийСчетОрганизации.СчетВБанкеДляРасчетов КАК СчетВБанкеДляРасчетов,
| ЕСТЬNULL(Документы.БанковскийСчетОрганизации.СчетЦифровогоРубля, ЛОЖЬ) КАК ЭтоСчетЦифровогоРубля,
| ВЫБОР
| КОГДА ЕСТЬNULL(Документы.БанковскийСчетОрганизации.СчетЦифровогоРубля, ЛОЖЬ)
| ТОГДА Документы.БанковскийСчетОрганизации.ИдентификаторСчетаЦифровогоРубля
| ИНАЧЕ Документы.БанковскийСчетОрганизации.НомерСчета
| КОНЕЦ КАК НомерБанковскогоСчета,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчетОрганизации.БИКБанка
| ИНАЧЕ КлассификаторБанков.Код
| КОНЕЦ КАК БИКБанк,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчетОрганизации.НаименованиеБанка
| ИНАЧЕ КлассификаторБанков.Наименование
| КОНЕЦ КАК НаименованиеБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчетОрганизации.КоррСчетБанка
| ИНАЧЕ КлассификаторБанков.КоррСчет
| КОНЕЦ КАК КоррСчетБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчетОрганизации.ГородБанка
| ИНАЧЕ КлассификаторБанков.Город
| КОНЕЦ КАК ГородБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.БИКБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.Код
| КОНЕЦ КАК БИКБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.НаименованиеБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.Наименование
| КОНЕЦ КАК НаименованиеБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.КоррСчетБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.КоррСчет
| КОНЕЦ КАК КоррСчетБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.ГородБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.Город
| КОНЕЦ КАК ГородБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.НаименованиеБанкаМеждународное
| ИНАЧЕ КлассификаторБанков.МеждународноеНаименование
| КОНЕЦ КАК НаименованиеБанкаМеждународное,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.СВИФТБанка
| ИНАЧЕ КлассификаторБанков.СВИФТБИК
| КОНЕЦ КАК СВИФТБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.ГородБанкаМеждународный
| ИНАЧЕ КлассификаторБанков.ГородМеждународный
| КОНЕЦ КАК ГородБанкаМеждународный,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.АдресБанка
| ИНАЧЕ КлассификаторБанков.Адрес
| КОНЕЦ КАК АдресБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.АдресБанкаМеждународный
| ИНАЧЕ КлассификаторБанков.АдресМеждународный
| КОНЕЦ КАК АдресБанкаМеждународный,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.СтранаБанка
| ИНАЧЕ СтраныБанков.Ссылка
| КОНЕЦ КАК СтранаБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.НаименованиеБанкаДляРасчетовМеждународное
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.МеждународноеНаименование
| КОНЕЦ КАК НаименованиеБанкаДляРасчетовМеждународное,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.СВИФТБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.СВИФТБИК
| КОНЕЦ КАК СВИФТБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.ГородБанкаДляРасчетовМеждународный
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.ГородМеждународный
| КОНЕЦ КАК ГородБанкаДляРасчетовМеждународный,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.АдресБанкаДляРасчетовМеждународный
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.АдресМеждународный
| КОНЕЦ КАК АдресБанкаДляРасчетовМеждународный,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.АдресБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.Адрес
| КОНЕЦ КАК АдресБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.СтранаБанкаДляРасчетов
| ИНАЧЕ СтраныБанковКорреспондентовРФ.Ссылка
| КОНЕЦ КАК СтранаБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(КлассификаторБанков.БИКРКЦ.Наименование, """")
| КОНЕЦ КАК НаименованиеРКЦБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(КлассификаторБанковКорреспондентовРФ.БИКРКЦ.Наименование, """")
| КОНЕЦ КАК НаименованиеРКЦБанкаДляРасчетов,
| Документы.БанковскийСчетОрганизации.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| Документы.Валюта КАК Валюта,
| Документы.Менеджер.ФизическоеЛицо КАК Менеджер,
| Документы.СуммаДокумента КАК СуммаКВозврату,
| ЛОЖЬ КАК ЧастичнаяОплата,
| """" КАК НазначениеПлатежа,
| 100 КАК ПроцентОплаты,
| """" КАК ДополнительнаяИнформация,
| Документы.СуммаДокумента КАК СуммаДокумента,
| Документы.Грузоотправитель КАК Грузоотправитель,
| Документы.Грузополучатель КАК Грузополучатель,
| """" КАК ИдентификаторПлатежа,
| ЛОЖЬ КАК СчетКВозврату,
| ЛОЖЬ КАК ЦенаВключаетНДС
|ИЗ
| Документ.ПередачаТоваровХранителю КАК Документы
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОтветственныеЛица КАК ТаблицаОтветственныеЛица
| ПО Документы.Ссылка = ТаблицаОтветственныеЛица.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторБанков КАК КлассификаторБанков
| ПО Документы.БанковскийСчетОрганизации.Банк = КлассификаторБанков.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК СтраныБанков
| ПО КлассификаторБанков.КодСтраны = СтраныБанков.Код
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторБанков КАК КлассификаторБанковКорреспондентовРФ
| ПО Документы.БанковскийСчетОрганизации.БанкДляРасчетов = КлассификаторБанковКорреспондентовРФ.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК СтраныБанковКорреспондентовРФ
| ПО КлассификаторБанковКорреспондентовРФ.КодСтраны = СтраныБанковКорреспондентовРФ.Код
| ЛЕВОЕ СОЕДИНЕНИЕ Константы
| ПО ИСТИНА
|ГДЕ
| Документы.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Документы.МоментВремени
|;
|
|
|ВЫБРАТЬ
| Неопределено КАК Ссылка,
| 0 КАК НомерСтроки,
| Неопределено КАК ДатаПлатежа,
| 0 КАК ПроцентПлатежа,
| 0 КАК СуммаПлатежа,
| ИСТИНА КАК ЭтоЗалогЗаТару
|ГДЕ
| ЛОЖЬ
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
|
| ВариантыКомплектацииНоменклатуры.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектацииНоменклатуры.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектацииНоменклатуры.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
|
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Количество КАК Количество,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| ВЫБОР
| КОГДА &ОтображатьСкидки ТОГДА
| Таблица.Цена
| ИНАЧЕ Таблица.Сумма/Таблица.КоличествоУпаковок
| КОНЕЦ КАК Цена,
| Таблица.Сумма КАК Сумма,
| ВЫБОР
| КОГДА
| Таблица.Ссылка.ВернутьМногооборотнуюТару
| И Таблица.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара,
| 0 КАК СуммаСкидки,
| Таблица.Сумма КАК СуммаБезСкидки
|ПОМЕСТИТЬ Товары
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК Таблица
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
| ПО ВариантыКомплектацииНоменклатуры.Владелец = Таблица.НоменклатураНабора
| И ВариантыКомплектацииНоменклатуры.Характеристика = Таблица.ХарактеристикаНабора
| И ВариантыКомплектацииНоменклатуры.Основной
|
|ГДЕ
| Таблица.Ссылка В(&МассивОбъектов)
| И (Таблица.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ (Таблица.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И НЕ Таблица.Ссылка.ВернутьМногооборотнуюТару))
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| МИНИМУМ(Таблица.НомерСтроки) КАК НомерСтроки,
| СУММА(Таблица.Сумма) КАК Сумма,
| СУММА(Таблица.СуммаСкидки) КАК СуммаСкидки,
| СУММА(Таблица.СуммаБезСкидки) КАК СуммаБезСкидки
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыПодготовка
|ИЗ
| Товары КАК Таблица
|ГДЕ
| Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТоваров.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ТоварыРазличные
|ИЗ
| Товары КАК ТаблицаТоваров
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Товары.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Товары.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Товары.НоменклатураНабора,
| Товары.ХарактеристикаНабора,
| Товары.Номенклатура,
| Товары.Характеристика,
| ВЫБОР КОГДА Товары.ВариантКомплектацииНоменклатуры.НоменклатураОсновногоКомпонента = Товары.Номенклатура
| И Товары.ВариантКомплектацииНоменклатуры.ХарактеристикаОсновногоКомпонента = Товары.Характеристика ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ОсновнаяКомплектующая,
| 0 КАК КоличествоПоУмолчанию,
| Товары.Количество КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьПервая
|ИЗ
| Товары КАК Товары
|ГДЕ
| Товары.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыРазличные.Ссылка КАК Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец КАК НоменклатураНабора,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика КАК ХарактеристикаНабора,
| ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК Номенклатура,
| ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
| ЛОЖЬ КАК ОсновнаяКомплектующая,
| СУММА(ВариантыКомплектацииНоменклатурыТовары.Количество) КАК КоличествоПоУмолчанию,
| 0 КАК Количество
|ИЗ
| Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыРазличные КАК ТоварыРазличные
| ПО ИСТИНА
|ГДЕ
| ВариантыКомплектацииНоменклатурыТовары.Ссылка В (ВЫБРАТЬ Т.ВариантКомплектацииНоменклатуры ИЗ Товары КАК Т)
|
|СГРУППИРОВАТЬ ПО
| ТоварыРазличные.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика,
| ВариантыКомплектацииНоменклатурыТовары.Номенклатура,
| ВариантыКомплектацииНоменклатурыТовары.Характеристика,
| ВариантыКомплектацииНоменклатурыТовары.Упаковка
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика,
| МАКСИМУМ(Таблица.ОсновнаяКомплектующая) КАК ОсновнаяКомплектующая,
| СУММА(Таблица.КоличествоПоУмолчанию) КАК КоличествоПоУмолчанию,
| СУММА(Таблица.Количество) КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьВторая
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьПервая КАК Таблица
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика
|;
|
|
|ВЫБРАТЬ
| Результат.Ссылка,
| Результат.ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора,
| Результат.ХарактеристикаНабора,
| ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0 И Результат.ОсновнаяКомплектующая
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ NULL
| КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительно
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьВторая КАК Результат
|СГРУППИРОВАТЬ ПО
| Результат.Ссылка,
| Результат.ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора,
| Результат.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| ВременнаяТаблицаНаборыДополнительно.ВариантКомплектацииНоменклатуры,
| ВЫБОР КОГДА Таблица.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию) ТОГДА
| ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
| ВЫБОР КОГДА Таблица.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию) ТОГДА
| ВЫБОР КОГДА
| ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| И ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора В (ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоЦенам),ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоДолям)) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.РассчитываетсяИзЦенКомплектующих)
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
| КОНЕЦ
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.НомерСтроки КАК НомерСтроки,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК КоличествоУпаковок,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК Количество,
| Таблица.Сумма КАК Сумма,
| Таблица.СуммаСкидки КАК СуммаСкидки,
| Таблица.СуммаБезСкидки КАК СуммаБезСкидки
|ПОМЕСТИТЬ ВременнаяТаблицаНаборы
|ИЗ
| ВременнаяТаблицаНаборыПодготовка КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборыДополнительно КАК ВременнаяТаблицаНаборыДополнительно
| ПО Таблица.НоменклатураНабора = ВременнаяТаблицаНаборыДополнительно.НоменклатураНабора
| И Таблица.ХарактеристикаНабора = ВременнаяТаблицаНаборыДополнительно.ХарактеристикаНабора
| И Таблица.Ссылка = ВременнаяТаблицаНаборыДополнительно.Ссылка
|;
|
|
|ВЫБРАТЬ
|
| Товары.Ссылка КАК Ссылка,
| Товары.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Товары.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Товары.НоменклатураНабора КАК НоменклатураНабора,
| Товары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Товары.ЭтоНабор КАК ЭтоНабор,
| Товары.ЭтоКомплектующие КАК ЭтоКомплектующие,
|
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Номенклатура.Код КАК Код,
| Товары.Номенклатура.Артикул КАК Артикул,
| ЕСТЬNULL(НоменклатураПредставления.НаименованиеПолное, Товары.Номенклатура.НаименованиеПолное) КАК НаименованиеПолное,
| &ТекстЗапросаНаименованиеЕдиницыИзмерения КАК ЕдиницаИзмерения,
| Товары.КоличествоУпаковок КАК Количество,
| Товары.Цена КАК Цена,
| Товары.Сумма КАК Сумма,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) КАК СтавкаНДС,
| 0 КАК СуммаНДС,
| НЕОПРЕДЕЛЕНО КАК ВидЦеныИсполнителя,
| ЕСТЬNULL(ХарактеристикиНоменклатурыПредставления.НаименованиеПолное, ЕСТЬNULL(Товары.Характеристика.НаименованиеПолное, """")) КАК Характеристика,
| ВЫБОР КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1 ТОГДА
| НЕОПРЕДЕЛЕНО
| ИНАЧЕ
| Товары.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
| Товары.СуммаСкидки КАК СуммаСкидки,
| Товары.СуммаБезСкидки КАК СуммаБезСкидки,
| Товары.ЭтоВозвратнаяТара КАК ЭтоВозвратнаяТара
|ИЗ (
| ВЫБРАТЬ
| Таблица.Ссылка,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ПустаяСсылка)
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
|
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ПустаяСсылка)
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоКомплектующие,
| ЛОЖЬ КАК ЭтоНабор,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.НомерСтроки
| ИНАЧЕ
| Таблица.НомерСтроки
| КОНЕЦ КАК НомерСтроки,
| Таблица.Номенклатура,
| Таблица.Количество,
| Таблица.КоличествоУпаковок,
| Таблица.Цена,
| Таблица.Сумма,
| Таблица.Характеристика,
| Таблица.Упаковка,
| Таблица.СуммаСкидки,
| Таблица.СуммаБезСкидки,
| Таблица.ЭтоВозвратнаяТара
| ИЗ
| Товары КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ПО ВременнаяТаблицаНаборы.НоменклатураНабора = Таблица.НоменклатураНабора
| И ВременнаяТаблицаНаборы.ХарактеристикаНабора = Таблица.ХарактеристикаНабора
| И ВременнаяТаблицаНаборы.Ссылка = Таблица.Ссылка
|
| ГДЕ
| Таблица.НоменклатураНабора = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ИЛИ (Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоКомплектующие),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ВременнаяТаблицаНаборы.Ссылка,
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах,
| ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВременнаяТаблицаНаборы.НоменклатураНабора,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора,
| ЛОЖЬ КАК ЭтоКомплектующие,
| ИСТИНА КАК ЭтоНабор,
| ВременнаяТаблицаНаборы.НомерСтроки,
| ВременнаяТаблицаНаборы.НоменклатураНабора,
| ВременнаяТаблицаНаборы.Количество,
| ВременнаяТаблицаНаборы.КоличествоУпаковок,
| ВЫБОР
| КОГДА &ОтображатьСкидки ТОГДА
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1) <> 0 ТОГДА
| (ВременнаяТаблицаНаборы.СуммаБезСкидки) / ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1)
| ИНАЧЕ
| 0
| КОНЕЦ
| ИНАЧЕ
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1) <> 0 ТОГДА
| (ВременнаяТаблицаНаборы.Сумма) / ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1)
| ИНАЧЕ
| 0
| КОНЕЦ
| КОНЕЦ КАК Цена,
| ВременнаяТаблицаНаборы.Сумма КАК Сумма,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка,
| ВременнаяТаблицаНаборы.СуммаСкидки,
| ВременнаяТаблицаНаборы.СуммаБезСкидки,
| ЛОЖЬ
| ИЗ
| ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ГДЕ
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие))
|) КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураПредставления
| ПО (Товары.Номенклатура = НоменклатураПредставления.Ссылка
| И НоменклатураПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыПредставления
| ПО (Товары.Характеристика = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
|
|УПОРЯДОЧИТЬ ПО
| Товары.НомерСтроки,
| ЭтоНабор УБЫВ
|";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Если ЗначениеЗаполнено(КодЯзыка)
И Не КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка() Тогда
НаименованиеУпаковкиЕдиницыИзмерения = "МеждународноеСокращение";
Иначе
НаименованиеУпаковкиЕдиницыИзмерения = "Наименование";
КонецЕсли;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаНаименованиеЕдиницыИзмерения",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
НаименованиеУпаковкиЕдиницыИзмерения,
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ОтображатьСкидки", ОтображатьСкидки);
Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка);
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[0]);
СтруктураДанныхДляПечати.Вставить("РезультатПоЭтапамОплаты", ПакетРезультатовЗапроса[1]);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", ПакетРезультатовЗапроса[ПакетРезультатовЗапроса.Количество() - 1]);
Возврат СтруктураДанныхДляПечати;
КонецФункции
Функция ДобавлятьКомандыПечатиКомплектаДокументов() Экспорт
Возврат НЕ ПраваПользователяПовтИсп.ЭтоПартнер();
КонецФункции
Процедура ПриОпределенииКомандыПечатиКомплектаДокументов(Команда) Экспорт
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(Команда,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи,
ВидСравнения.Равно);
КонецПроцедуры
#КонецОбласти
#Область Прочее
Функция ТекстЗапросаВТТоварыРаспоряжениеНакладнаяОтгружено()
ТекстЗапроса = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВтДокументы.ДокументСсылка КАК Ссылка,
| ДокументТовары.Склад КАК Склад,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.Серия КАК Серия,
| СУММА(ДокументТовары.Количество) КАК Количество,
| СУММА(ДокументТовары.Сумма) КАК СуммаСНДС
|ПОМЕСТИТЬ ВТТоварыРаспоряженияОтгружено
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО (ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка)
|ГДЕ
| ВтДокументы.Проведен
| И (НЕ ДокументТовары.Ссылка.ПередачаПоЗаказам
| ИЛИ НЕ &ИспользоватьРасширенныеВозможностиЗаказаКлиента)
|
|СГРУППИРОВАТЬ ПО
| ВтДокументы.ДокументСсылка,
| ДокументТовары.Склад,
| ДокументТовары.Номенклатура,
| ДокументТовары.Характеристика,
| ДокументТовары.Серия
|;
|";
ПодставитьТекстИспользоватьРасширенныеВозможностиЗаказаКлиента(ТекстЗапроса, "ДокументТовары.Ссылка", , "ДокументТовары");
Возврат ТекстЗапроса;
КонецФункции
Функция СтруктураОснования(Объект, ПорядокРасчетов)
СтруктураОснование = Новый Структура("Основание, ОснованиеНомер, ОснованиеДата");
Если (ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
Или ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным)
И ЗначениеЗаполнено(Объект.Договор) Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДоговорыКонтрагентов.НаименованиеДляПечати КАК Основание,
| ДоговорыКонтрагентов.Дата КАК ОснованиеДата,
| ДоговорыКонтрагентов.Номер КАК ОснованиеНомер
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Объект.Договор);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
СтруктураОснование.Основание = СокрЛП(Выборка.Основание);
СтруктураОснование.ОснованиеДата = Выборка.ОснованиеДата;
СтруктураОснование.ОснованиеНомер = СокрЛП(Выборка.ОснованиеНомер);
КонецЕсли;
ИначеЕсли (ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам
Или ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказамНакладным)
И Объект.ПередачаПоЗаказам Тогда
МассивЗаказов = Неопределено;
Если ЗначениеЗаполнено(Объект.ЗаказКлиента) Тогда
МассивЗаказов = Новый Массив;
МассивЗаказов.Добавить(Объект.ЗаказКлиента);
ИначеЕсли Объект.Товары.Количество() <> 0 Тогда
Если ТипЗнч(Объект) = Тип("Структура") Тогда
МассивЗаказов = Объект.Товары.ВыгрузитьКолонку("ЗаказКлиента");
Иначе
МассивЗаказов = Объект.Товары.Выгрузить(, "ЗаказКлиента").ВыгрузитьКолонку("ЗаказКлиента");
КонецЕсли;
КонецЕсли;
Если МассивЗаказов <> Неопределено Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаказыКлиентов.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
| ЗаказыКлиентов.ДатаПоДаннымКлиента КАК ДатаПоДаннымКлиента,
| ЗаказыКлиентов.Номер КАК Номер,
| ЗаказыКлиентов.Дата КАК Дата,
| &СинонимЗаказа КАК Синоним
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказыКлиентов
|ГДЕ
| ЗаказыКлиентов.Ссылка В(&МассивЗаказов)";
Запрос.УстановитьПараметр("МассивЗаказов", МассивЗаказов);
Запрос.УстановитьПараметр("СинонимЗаказа", НСтр("ru='Заказ клиента'"));
Выборка = Запрос.Выполнить().Выбрать();
ТекстПоЗаказам = "";
ОдноОснование = Выборка.Количество() = 1;
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.НомерПоДаннымКлиента)
И ЗначениеЗаполнено(Выборка.ДатаПоДаннымКлиента) Тогда
ТекстПоЗаказам = ТекстПоЗаказам + ", "
+ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 № %2 от %3'"),
Выборка.Синоним,
Выборка.НомерПоДаннымКлиента,
Формат(Выборка.ДатаПоДаннымКлиента, "ДЛФ=DD"));
ДатаПоЗаказам = Выборка.ДатаПоДаннымКлиента;
НомерПоЗаказам = Выборка.НомерПоДаннымКлиента;
Иначе
ТекстПоЗаказам = ТекстПоЗаказам + ", "
+ ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(Выборка, Выборка.Синоним);
ДатаПоЗаказам = Выборка.Дата;
НомерПоЗаказам = Выборка.Номер;
КонецЕсли;
КонецЦикла;
СтруктураОснование.Основание = СокрЛП(Сред(ТекстПоЗаказам, 3));
СтруктураОснование.ОснованиеДата = ?(ОдноОснование, ДатаПоЗаказам, "");
СтруктураОснование.ОснованиеНомер = ?(ОдноОснование,
ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(НомерПоЗаказам),
"");
КонецЕсли;
КонецЕсли;
Возврат СтруктураОснование;
КонецФункции
Функция ПолучитьРезультатЗапросаПоОстаткамЗаказов(ДанныеОтбора,
ПараметрыЗаполнения,
СкладПередачи = Неопределено,
МассивЗаказов = Неопределено)
Запрос = Новый Запрос;
Если ОбщегоНазначения.РежимОтладки() Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
КонецЕсли;
Обработчик = ОбработчикДействий(ДанныеОтбора.ХозяйственнаяОперация);
ИспользоватьСоглашенияСКлиентами = Обработчик.ИспользоватьСоглашенияСКлиентами();
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности");
ИспользоватьРасширенныеВозможностиЗаказаКлиента = Обработчик.ИспользоватьРасширенныеВозможностиЗаказаКлиента();
ЭтоПроизводствоВЕАЭС = (ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеОтбора.Договор, "ХозяйственнаяОперация") = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчикаВСтранахЕАЭС2_5);
Запрос.УстановитьПараметр("Регистратор", ДанныеОтбора.Ссылка);
Запрос.УстановитьПараметр("ТекущаяДата", НачалоДня(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("Партнер", ДанныеОтбора.Партнер);
Запрос.УстановитьПараметр("Контрагент", ДанныеОтбора.Контрагент);
Запрос.УстановитьПараметр("Соглашение", ДанныеОтбора.Соглашение);
Если ДанныеОтбора.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5 Тогда
Запрос.УстановитьПараметр("ХозяйственныеОперацииРаспоряжений", Обработчик.ХозяйственныеОперацииРаспоряжений(ЭтоПроизводствоВЕАЭС));
Иначе
Запрос.УстановитьПараметр("ХозяйственныеОперацииРаспоряжений", Обработчик.ХозяйственныеОперацииРаспоряжений());
КонецЕсли;
Запрос.УстановитьПараметр("Организация", ДанныеОтбора.Организация);
Запрос.УстановитьПараметр("ИспользоватьОтборПоСкладуПередачи", ЗначениеЗаполнено(СкладПередачи));
Запрос.УстановитьПараметр("СкладПередачи", СкладПередачи);
Запрос.УстановитьПараметр("Договор", ДанныеОтбора.Договор);
Запрос.УстановитьПараметр("Сделка", ДанныеОтбора.Сделка);
Запрос.УстановитьПараметр("НаправлениеДеятельности", ДанныеОтбора.НаправлениеДеятельности);
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", ДанныеОтбора.ВернутьМногооборотнуюТару);
Запрос.УстановитьПараметр("МассивЗаказов", МассивЗаказов);
Запрос.УстановитьПараметр("ОтобратьПоЗаказу", МассивЗаказов <> Неопределено);
Запрос.УстановитьПараметр("ИспользоватьСоглашенияСКлиентами", ИспользоватьСоглашенияСКлиентами);
Запрос.УстановитьПараметр("ИспользоватьНаправленияДеятельности", ИспользоватьНаправленияДеятельности);
Запрос.УстановитьПараметр("ИспользоватьРасширенныеВозможностиЗаказаКлиента",
ИспользоватьРасширенныеВозможностиЗаказаКлиента);
ПередачаТоваровХранителюЛокализация.УстановитьПараметрыОсобенностиУчетаНоменклатуры(ПараметрыЗаполнения, Запрос.Параметры);
Если ТипЗнч(ДанныеОтбора) = Тип("Структура")
И ДанныеОтбора.Свойство("ТоварыПередачи") Тогда
Запрос.УстановитьПараметр("ТоварыПередачи", ДанныеОтбора.ТоварыПередачи);
Иначе
ТипНоменклатуры = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");
ТипХарактеристики = Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры");
ТипУпаковки = Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения");
ТипКодов = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0));
ТипКоличества = ОбщегоНазначенияУТ.ОписаниеТипаКоличественногоПоля();
ТоварыПередачи = Новый ТаблицаЗначений;
ТоварыПередачи.Колонки.Добавить("НомерСтроки", ТипКодов);
ТоварыПередачи.Колонки.Добавить("КодСтроки", ТипКодов);
ТоварыПередачи.Колонки.Добавить("ЗаказКлиента", Обработчик.ОписаниеТипаЗаказа());
ТоварыПередачи.Колонки.Добавить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
ТоварыПередачи.Колонки.Добавить("НоменклатураНабора", ТипНоменклатуры);
ТоварыПередачи.Колонки.Добавить("ХарактеристикаНабора", ТипХарактеристики);
ТоварыПередачи.Колонки.Добавить("Номенклатура", ТипНоменклатуры);
ТоварыПередачи.Колонки.Добавить("Характеристика", ТипХарактеристики);
ТоварыПередачи.Колонки.Добавить("Упаковка", ТипУпаковки);
ТоварыПередачи.Колонки.Добавить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
ТоварыПередачи.Колонки.Добавить("Количество", ТипКоличества);
ТоварыПередачи.Колонки.Добавить("КоличествоВЗаказе", ТипКоличества);
ТоварыПередачи.Колонки.Добавить("ВидЦены", Новый ОписаниеТипов("СправочникСсылка.ВидыЦен"));
ТоварыПередачи.Колонки.Добавить("Цена", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
ТоварыПередачи.Колонки.Добавить("Сумма", ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля());
Запрос.УстановитьПараметр("ТоварыПередачи", ТоварыПередачи);
КонецЕсли;
Запрос.Текст =
"ВЫБРАТЬ
| Склады.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ГруппыСкладов
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| &ИспользоватьОтборПоСкладуПередачи
| И Склады.Ссылка В(&СкладПередачи)
| И Склады.ЭтоГруппа
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| Склады.Ссылка КАК Ссылка
|ПОМЕСТИТЬ СкладыПередачи
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| НЕ &ИспользоватьОтборПоСкладуПередачи
| ИЛИ Склады.Ссылка В(&СкладПередачи)
| И НЕ Склады.ЭтоГруппа
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Склады.Ссылка КАК Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка В ИЕРАРХИИ (
| ВЫБРАТЬ
| ГруппыСкладов.Ссылка
| ИЗ
| ГруппыСкладов КАК ГруппыСкладов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) КАК Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| ТоварыПередачи.КодСтроки КАК КодСтроки,
| ТоварыПередачи.ЗаказКлиента КАК ЗаказКлиента,
| ТоварыПередачи.Номенклатура КАК Номенклатура,
| ТоварыПередачи.Характеристика КАК Характеристика,
| ТоварыПередачи.Упаковка КАК Упаковка,
| ТоварыПередачи.Серия КАК Серия,
| ТоварыПередачи.Количество КАК Количество
|ПОМЕСТИТЬ ВтТоварыПередачи
|ИЗ
| &ТоварыПередачи КАК ТоварыПередачи
|ГДЕ
| ТоварыПередачи.КодСтроки <> 0;
|
|
|ВЫБРАТЬ
| ВтТоварыПередачи.КодСтроки КАК КодСтроки,
| ВтТоварыПередачи.ЗаказКлиента КАК ЗаказКлиента,
| ВтТоварыПередачи.Номенклатура КАК Номенклатура,
| ВтТоварыПередачи.Характеристика КАК Характеристика,
| ВЫРАЗИТЬ(ВтТоварыПередачи.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения) КАК Упаковка,
| ВтТоварыПередачи.Серия КАК Серия,
| СУММА(ВтТоварыПередачи.Количество) КАК Количество
|ПОМЕСТИТЬ ВтТоварыПередачиПоЗаказу
|ИЗ
| ВтТоварыПередачи КАК ВтТоварыПередачи
|
|СГРУППИРОВАТЬ ПО
| ВтТоварыПередачи.КодСтроки,
| ВтТоварыПередачи.ЗаказКлиента,
| ВтТоварыПередачи.Номенклатура,
| ВтТоварыПередачи.Характеристика,
| ВтТоварыПередачи.Упаковка,
| ВтТоварыПередачи.Серия
|;
|
|
|ВЫБРАТЬ
| ТоварыПередачи.НомерСтроки КАК НомерСтроки,
| ТоварыПередачи.КодСтроки КАК КодСтроки,
| &Регистратор КАК ЗаказКлиента,
| ВЫРАЗИТЬ(ТоварыПередачи.Склад КАК Справочник.Склады) КАК Склад,
| ТоварыПередачи.НоменклатураНабора КАК НоменклатураНабора,
| ТоварыПередачи.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВЫРАЗИТЬ(ТоварыПередачи.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
| ТоварыПередачи.Характеристика КАК Характеристика,
| ВЫРАЗИТЬ(ТоварыПередачи.Упаковка КАК Справочник.УпаковкиЕдиницыИзмерения) КАК Упаковка,
| ТоварыПередачи.Серия КАК Серия,
| ТоварыПередачи.Количество КАК Количество,
| ТоварыПередачи.Количество КАК КоличествоВЗаказе,
| ТоварыПередачи.ВидЦены КАК ВидЦены,
| ТоварыПередачи.Цена КАК Цена,
| ТоварыПередачи.Сумма КАК Сумма
|ПОМЕСТИТЬ ВтТоварыПередачиБезЗаказа
|ИЗ
| &ТоварыПередачи КАК ТоварыПередачи
|ГДЕ
| ТоварыПередачи.КодСтроки = 0
|
|;
|
|ВЫБРАТЬ
| ЗаказКлиента.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВтОтобранныеЗаказыКлиентов
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
|ГДЕ
| НЕ ЗаказКлиента.ПометкаУдаления
| И ВЫБОР
| КОГДА &ОтобратьПоЗаказу
| ТОГДА ЗаказКлиента.Ссылка В(&МассивЗаказов)
| ИНАЧЕ ЗаказКлиента.Партнер = &Партнер
| И ЗаказКлиента.Контрагент = &Контрагент
| И ВЫБОР
| КОГДА НЕ &ИспользоватьСоглашенияСКлиентами
| ТОГДА ИСТИНА
| ИНАЧЕ &ЗаказКлиентаСоглашение = &Соглашение
| КОНЕЦ
| И ЗаказКлиента.ХозяйственнаяОперация В(&ХозяйственныеОперацииРаспоряжений)
| И ЗаказКлиента.Организация = &Организация
| И ЗаказКлиента.Договор = &Договор
| И ЗаказКлиента.Сделка = &Сделка
| И ВЫБОР
| КОГДА НЕ &ИспользоватьНаправленияДеятельности
| ТОГДА ИСТИНА
| ИНАЧЕ ЗаказКлиента.НаправлениеДеятельности = &НаправлениеДеятельности
| КОНЕЦ
| И &ЗаказКлиентаВернутьМногооборотнуюТару = &ВернутьМногооборотнуюТару
| КОНЕЦ
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|
|;
|
|ВЫБРАТЬ
| ПередачаТоваров.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВтОтобранныеПередачиХранителю
|ИЗ
| Документ.ПередачаТоваровХранителю КАК ПередачаТоваров
|ГДЕ
| НЕ ПередачаТоваров.ПометкаУдаления
| И ВЫБОР
| КОГДА &ОтобратьПоЗаказу
| ТОГДА ПередачаТоваров.Ссылка В(&МассивЗаказов, &Регистратор)
| ИНАЧЕ ПередачаТоваров.Партнер = &Партнер
| И ПередачаТоваров.Контрагент = &Контрагент
| И ВЫБОР
| КОГДА НЕ &ИспользоватьСоглашенияСКлиентами
| ТОГДА ИСТИНА
| ИНАЧЕ ПередачаТоваров.Соглашение = &Соглашение
| КОНЕЦ
| И ПередачаТоваров.Организация = &Организация
| И ПередачаТоваров.Договор = &Договор
| И ПередачаТоваров.Сделка = &Сделка
| И ВЫБОР
| КОГДА НЕ &ИспользоватьНаправленияДеятельности
| ТОГДА ИСТИНА
| ИНАЧЕ ПередачаТоваров.НаправлениеДеятельности = &НаправлениеДеятельности
| КОНЕЦ
| И ПередачаТоваров.ВернутьМногооборотнуюТару = &ВернутьМногооборотнуюТару
| КОНЕЦ
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|
|;
|
|ВЫБРАТЬ
| ТаблицаЗаказы.КодСтроки КАК КодСтроки,
| ТаблицаЗаказы.ЗаказКлиента КАК ЗаказКлиента,
| ТаблицаЗаказы.Склад КАК Склад,
| ТаблицаЗаказы.Номенклатура КАК Номенклатура,
| ТаблицаЗаказы.Характеристика КАК Характеристика,
| ТаблицаЗаказы.Серия КАК Серия,
| СУММА(ТаблицаЗаказы.КОформлению) КАК Количество,
| СУММА(ТаблицаЗаказы.Сумма) КАК Сумма
|ПОМЕСТИТЬ ТаблицаОстатки
|ИЗ
| (ВЫБРАТЬ
| РаспоряженияОбороты.КодСтроки КАК КодСтроки,
| РаспоряженияОбороты.Распоряжение КАК ЗаказКлиента,
| РаспоряженияОбороты.Склад КАК Склад,
| РаспоряженияОбороты.Номенклатура КАК Номенклатура,
| РаспоряженияОбороты.Характеристика КАК Характеристика,
| РаспоряженияОбороты.Серия КАК Серия,
| (РаспоряженияОбороты.КОформлениюКоличествоОборот -
| РаспоряженияОбороты.ОформленоКоличествоОборот) КАК КОформлению,
| (РаспоряженияОбороты.КОформлениюСуммаОборот -
| РаспоряженияОбороты.ОформленоСуммаОборот) КАК Сумма
| ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая1 КАК РаспоряженияОбороты
| ГДЕ
| (РаспоряженияОбороты.КОформлениюКоличествоОборот -
| РаспоряженияОбороты.ОформленоКоличествоОборот) <> 0
| ИЛИ (РаспоряженияОбороты.КОформлениюСуммаОборот -
| РаспоряженияОбороты.ОформленоСуммаОборот) <> 0
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| РаспоряженияДвижения.КодСтроки КАК КодСтроки,
| РаспоряженияДвижения.Распоряжение КАК ЗаказКлиента,
| РаспоряженияДвижения.Склад КАК Склад,
| РаспоряженияДвижения.Номенклатура КАК Номенклатура,
| РаспоряженияДвижения.Характеристика КАК Характеристика,
| РаспоряженияДвижения.Серия КАК Серия,
| ВЫБОР
| КОГДА РаспоряженияДвижения.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОформлению)
| ТОГДА -РаспоряженияДвижения.Количество
| ИНАЧЕ РаспоряженияДвижения.Количество
| КОНЕЦ КАК КОформлению,
| ВЫБОР
| КОГДА РаспоряженияДвижения.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОформлению)
| ТОГДА -РаспоряженияДвижения.Сумма
| ИНАЧЕ РаспоряженияДвижения.Сумма
| КОНЕЦ КАК Сумма
| ИЗ
| РегистрНакопления.РаспоряженияНаОтгрузкуИВозврат КАК РаспоряженияДвижения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтОтобранныеЗаказыКлиентов КАК ОтобранныеЗаказы
| ПО РаспоряженияДвижения.Распоряжение = ОтобранныеЗаказы.Ссылка
| ГДЕ
| РаспоряженияДвижения.Регистратор = &Регистратор
| И &ИспользоватьРасширенныеВозможностиЗаказаКлиента
| И РаспоряженияДвижения.Показатель В
| (ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОформлению),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено))
| И РаспоряженияДвижения.Активность
| И РаспоряженияДвижения.Склад В(
| ВЫБРАТЬ
| СкладыПередачи.Ссылка
| ИЗ
| СкладыПередачи КАК СкладыПередачи)
| И (&НеОтбиратьПоОсобенностямУчета
| ИЛИ РаспоряженияДвижения.Номенклатура.ОсобенностьУчета В (&ОсобенностиУчетаНоменклатуры))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТоварыЗаказа.КодСтроки КАК КодСтроки,
| ТоварыЗаказа.Ссылка КАК ЗаказКлиента,
| ТоварыЗаказа.Склад КАК Склад,
| ТоварыЗаказа.Номенклатура КАК Номенклатура,
| ТоварыЗаказа.Характеристика КАК Характеристика,
| ТоварыЗаказа.Серия КАК Серия,
| ТоварыЗаказа.Количество КАК КОформлению,
| &ТоварыЗаказаСуммаСНДС КАК Сумма
| ИЗ
| Документ.ЗаказКлиента.Товары КАК ТоварыЗаказа
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтОтобранныеЗаказыКлиентов КАК ОтобранныеЗаказы
| ПО ТоварыЗаказа.Ссылка = ОтобранныеЗаказы.Ссылка
| ГДЕ
| НЕ ТоварыЗаказа.Отменено
| И (&НеОтбиратьПоОсобенностямУчета
| ИЛИ ТоварыЗаказа.Номенклатура.ОсобенностьУчета В (&ОсобенностиУчетаНоменклатуры))
| И ТоварыЗаказа.Склад В(
| ВЫБРАТЬ
| СкладыПередачи.Ссылка
| ИЗ
| СкладыПередачи КАК СкладыПередачи)
| И НЕ &ИспользоватьРасширенныеВозможностиЗаказаКлиента
|
| ) КАК ТаблицаЗаказы
|
|СГРУППИРОВАТЬ ПО
| ТаблицаЗаказы.ЗаказКлиента,
| ТаблицаЗаказы.КодСтроки,
| ТаблицаЗаказы.Склад,
| ТаблицаЗаказы.Номенклатура,
| ТаблицаЗаказы.Характеристика,
| ТаблицаЗаказы.Серия
|
|ИМЕЮЩИЕ
| СУММА(ТаблицаЗаказы.КОформлению) > 0
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| КодСтроки,
| ЗаказКлиента
|;
|
|
|ВЫБРАТЬ
| ЗаказТовары.Ссылка.Сделка КАК Сделка,
| ЗаказТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаОстатки.ЗаказКлиента КАК ЗаказКлиента,
| ТаблицаОстатки.КодСтроки КАК КодСтроки,
| ТаблицаОстатки.Склад КАК Склад,
| &ЗаказТоварыНоменклатураНабора КАК НоменклатураНабора,
| &ЗаказТоварыХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ЗаказТовары.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ТаблицаОстатки.Номенклатура.КодТНВЭД КАК КодТНВЭД,
| ТаблицаОстатки.Характеристика КАК Характеристика,
| &ЗаказКлиентаНазначение КАК Назначение,
| ВЫБОР
| КОГДА ЗаказТовары.Обособленно
| ТОГДА &ЗаказКлиентаНазначениеОтправителя
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК НазначениеОтправителя,
| ЗаказТовары.Серия КАК Серия,
| ЕСТЬNULL(НакладнаяТовары.Упаковка, ЗаказТовары.Упаковка) КАК Упаковка,
| ВЫБОР
| КОГДА ЕСТЬNULL(НакладнаяТовары.Упаковка, ЗаказТовары.Упаковка) = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА 1
| ИНАЧЕ ЕСТЬNULL(ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, &ТекстЗапросаКоэффициентУпаковки2), 1)
| КОНЕЦ КАК Коэффициент,
| ТаблицаОстатки.Количество КАК Количество,
| ТаблицаОстатки.Количество / ЕСТЬNULL(ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, &ТекстЗапросаКоэффициентУпаковки2), 1) КАК КоличествоУпаковок,
| ЗаказТовары.Количество КАК КоличествоВЗаказе,
| ЕСТЬNULL(НакладнаяТовары.Количество, 0) КАК КоличествоВНакладной,
| &ЗаказТоварыВидЦены КАК ВидЦены,
| ЗаказТовары.Цена КАК Цена,
| ЗаказТовары.Сумма КАК Сумма,
| &ТаблицаОстаткиСумма КАК СуммаОстаток,
| ЗаказТовары.ДатаОтгрузки КАК ДатаОтгрузки,
| ЗаказТовары.СрокПоставки КАК СрокПоставки,
| ЗаказТовары.ВариантОбеспечения КАК ВариантОбеспечения,
| ВЫБОР
| КОГДА ЗаказТовары.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке = ИСТИНА
| И ЗаказТовары.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке <= &ТекущаяДата
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке,
| ВЫБОР
| КОГДА ЗаказТовары.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке = ИСТИНА
| И ЗаказТовары.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке <= &ТекущаяДата
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ПроверятьОтгрузку
|ИЗ
| ТаблицаОстатки КАК ТаблицаОстатки
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказТовары
| ПО ТаблицаОстатки.КодСтроки = ЗаказТовары.КодСтроки
| И ТаблицаОстатки.ЗаказКлиента = ЗаказТовары.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтТоварыПередачиПоЗаказу КАК НакладнаяТовары
| ПО ТаблицаОстатки.КодСтроки = НакладнаяТовары.КодСтроки
| И ТаблицаОстатки.ЗаказКлиента = НакладнаяТовары.ЗаказКлиента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| НЕОПРЕДЕЛЕНО КАК Сделка,
| ТоварыПередачи.НомерСтроки КАК НомерСтроки,
| ТоварыПередачи.ЗаказКлиента КАК ЗаказКлиента,
| ТоварыПередачи.КодСтроки КАК КодСтроки,
| ТоварыПередачи.Склад КАК Склад,
| ТоварыПередачи.НоменклатураНабора КАК НоменклатураНабора,
| ТоварыПередачи.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТоварыПередачи.Номенклатура КАК Номенклатура,
| ТоварыПередачи.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ТоварыПередачи.Номенклатура.КодТНВЭД КАК КодТНВЭД,
| ТоварыПередачи.Характеристика КАК Характеристика,
| НЕОПРЕДЕЛЕНО КАК Назначение,
| НЕОПРЕДЕЛЕНО КАК НазначениеОтправителя,
| ТоварыПередачи.Серия КАК Серия,
| ТоварыПередачи.Упаковка КАК Упаковка,
| ВЫБОР
| КОГДА ТоварыПередачи.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА 1
| ИНАЧЕ ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3, 1)
| КОНЕЦ КАК Коэффициент,
| ТоварыПередачи.Количество КАК Количество,
| ТоварыПередачи.Количество / ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки3, 1) КАК КоличествоУпаковок,
| 0 КАК КоличествоВЗаказе,
| ТоварыПередачи.Количество КАК КоличествоВНакладной,
| ТоварыПередачи.ВидЦены КАК ВидЦены,
| ТоварыПередачи.Цена КАК Цена,
| ТоварыПередачи.Сумма КАК Сумма,
| ТоварыПередачи.Сумма КАК СуммаОстаток,
| НЕОПРЕДЕЛЕНО КАК ДатаОтгрузки,
| НЕОПРЕДЕЛЕНО КАК СрокПоставки,
| НЕОПРЕДЕЛЕНО КАК ВариантОбеспечения,
| ВЫБОР
| КОГДА ТоварыПередачи.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке = ИСТИНА
| И ТоварыПередачи.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке <= &ТекущаяДата
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке,
| ВЫБОР
| КОГДА ТоварыПередачи.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке = ИСТИНА
| И ТоварыПередачи.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке <= &ТекущаяДата
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ПроверятьОтгрузку
|ИЗ
| ВтТоварыПередачиБезЗаказа КАК ТоварыПередачи
|
|УПОРЯДОЧИТЬ ПО
| ТаблицаОстатки.ЗаказКлиента,
| ЗаказТовары.НомерСтроки
|;
|
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ЗаказКлиентаТовары.НомерСтроки КАК НомерСтроки
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
|ГДЕ
| ЗаказКлиентаТовары.Ссылка В(&МассивЗаказов)
| И ЗаказКлиентаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И НЕ ЗаказКлиентаТовары.Отменено
| И ЗаказКлиентаТовары.Ссылка.Проведен
|;
|
|
|ВЫБРАТЬ
| ТаблицаЗаказы.ЗаказКлиента КАК ЗаказКлиента,
| ТаблицаЗаказы.Номенклатура КАК Номенклатура,
| ТаблицаЗаказы.Характеристика КАК Характеристика,
| ТаблицаЗаказы.Серия КАК Серия,
| СУММА(ТаблицаЗаказы.Количество) КАК Количество,
| СУММА(ТаблицаЗаказы.КоличествоСобирается) КАК КоличествоСобирается,
| ТаблицаЗаказы.Склад КАК Склад,
| ТаблицаЗаказы.ОрдернаяСхемаПриОтгрузке КАК ОрдернаяСхемаПриОтгрузке
|ИЗ
| (ВЫБРАТЬ
| ТоварыКОтгрузкеОстатки.ДокументОтгрузки КАК ЗаказКлиента,
| ТоварыКОтгрузкеОстатки.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузкеОстатки.Характеристика КАК Характеристика,
| ТоварыКОтгрузкеОстатки.Серия КАК Серия,
| ТоварыКОтгрузкеОстатки.КОтгрузкеРасход + ТоварыКОтгрузкеОстатки.СобраноПриход КАК Количество,
| ТоварыКОтгрузкеОстатки.СобираетсяПриход КАК КоличествоСобирается,
| ТоварыКОтгрузкеОстатки.Склад КАК Склад,
| ВЫБОР
| КОГДА ТоварыКОтгрузкеОстатки.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке = ИСТИНА
| И ТоварыКОтгрузкеОстатки.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке <= &ТекущаяДата
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке
| ИЗ
| РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(
| ,
| ,
| ,
| ,
| ДокументОтгрузки В (
| ВЫБРАТЬ
| СписокЗаказов.Ссылка
| ИЗ
| ВтОтобранныеЗаказыКлиентов КАК СписокЗаказов
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| СписокЗаказов.Ссылка
| ИЗ
| ВтОтобранныеПередачиХранителю КАК СписокЗаказов)
|
| И (ДокументОтгрузки ССЫЛКА Документ.ЗаказКлиента
| ИЛИ ДокументОтгрузки = &Регистратор)
|
| И Склад В(
| ВЫБРАТЬ
| СкладыПередачи.Ссылка
| ИЗ
| СкладыПередачи КАК СкладыПередачи)
| И (&НеОтбиратьПоОсобенностямУчета
| ИЛИ Номенклатура.ОсобенностьУчета В (&ОсобенностиУчетаНоменклатуры))
| ) КАК ТоварыКОтгрузкеОстатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| РаспоряженияОбороты.Распоряжение КАК ЗаказКлиента,
| РаспоряженияОбороты.Номенклатура КАК Номенклатура,
| РаспоряженияОбороты.Характеристика КАК Характеристика,
| РаспоряженияОбороты.Серия КАК Серия,
| -РаспоряженияОбороты.ОформленоКоличествоОборот КАК Количество,
| 0 КАК КоличествоСобирается,
| РаспоряженияОбороты.Склад КАК Склад,
| ВЫБОР
| КОГДА РаспоряженияОбороты.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке = ИСТИНА
| И РаспоряженияОбороты.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке <= &ТекущаяДата
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке
| ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая2 КАК РаспоряженияОбороты
| ГДЕ
| РаспоряженияОбороты.Регистратор <> &Регистратор) КАК ТаблицаЗаказы
|
|СГРУППИРОВАТЬ ПО
| ТаблицаЗаказы.ЗаказКлиента,
| ТаблицаЗаказы.Номенклатура,
| ТаблицаЗаказы.Характеристика,
| ТаблицаЗаказы.Серия,
| ТаблицаЗаказы.Склад,
| ТаблицаЗаказы.ОрдернаяСхемаПриОтгрузке
|
|ИМЕЮЩИЕ
| СУММА(ТаблицаЗаказы.Количество) > 0
| ИЛИ СУММА(ТаблицаЗаказы.КоличествоСобирается) > 0";
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В
| (ВЫБРАТЬ
| СписокЗаказов.Ссылка
| ИЗ
| ВтОтобранныеЗаказыКлиентов КАК СписокЗаказов)
| И &ИспользоватьРасширенныеВозможностиЗаказаКлиента
| И Склад В
| (ВЫБРАТЬ
| СкладыПередачи.Ссылка
| ИЗ
| СкладыПередачи КАК СкладыПередачи)
| И (&НеОтбиратьПоОсобенностямУчета
| ИЛИ Номенклатура.ОсобенностьУчета В (&ОсобенностиУчетаНоменклатуры))";
ПараметрыФормированияТаблицы.Показатели = "КОформлению, Оформлено";
ПараметрыФормированияТаблицы.Ресурсы = "Количество, Сумма";
РаспоряженияНаОтгрузкуОборотыРазвернутая1 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая1",
РаспоряженияНаОтгрузкуОборотыРазвернутая1);
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.Периодичность = "Регистратор";
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В
| (ВЫБРАТЬ
| СписокЗаказов.Ссылка
| ИЗ
| ВтОтобранныеЗаказыКлиентов КАК СписокЗаказов)
| И &ИспользоватьРасширенныеВозможностиЗаказаКлиента
| И Склад В
| (ВЫБРАТЬ
| СкладыПередачи.Ссылка
| ИЗ
| СкладыПередачи КАК СкладыПередачи)";
ПараметрыФормированияТаблицы.Группировка = "Регистратор, Распоряжение, Номенклатура, Характеристика, Склад, Серия";
ПараметрыФормированияТаблицы.Показатели = "Оформлено";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
РаспоряженияНаОтгрузкуОборотыРазвернутая2 =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая2",
РаспоряженияНаОтгрузкуОборотыРазвернутая2);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"НакладнаяТовары.Упаковка",
"НакладнаяТовары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки2",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ЗаказТовары.Упаковка",
"ЗаказТовары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки3",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"ТоварыПередачи.Упаковка",
"ТоварыПередачи.Номенклатура"));
Обработчик.РедактироватьТекстЗапросаПоОстаткамЗаказов(Запрос.Текст);
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
Возврат РезультатЗапроса;
КонецФункции
Процедура УстановитьПараметр(ОбластьМакета, ИмяПараметра, ЗначениеПараметра)
ОбластьМакета.Параметры.Заполнить(Новый Структура(ИмяПараметра, ЗначениеПараметра));
КонецПроцедуры
Функция ТекстЗапросаТоварыДокумента(Отбор, ТекстСоединения, ТекстПроверкиСоединения = "") Экспорт
Если Не ЗначениеЗаполнено(ТекстПроверкиСоединения) Тогда
ТекстПроверкиСоединения = "НЕ ДанныеУчета.АналитикаУчетаНоменклатуры ЕСТЬ NULL";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.АналитикаУчетаНоменклатурыТоварыУПартнеров КАК АналитикаУчетаНоменклатурыТоварыУПартнеров,
| Таблица.НомерГТД КАК НомерГТД,
| Таблица.Упаковка КАК Упаковка,
| СУММА(ЕСТЬNULL(ДанныеУчета.КОформлению, 0)) КАК КОформлению,
| СУММА(Таблица.Количество) КАК КоличествоВДокументе
|ПОМЕСТИТЬ АналитикаЗапасов
|ИЗ
| Документ.ПередачаТоваровХранителю.ВидыЗапасов КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НомераГТД КАК СправочникНомераГТД
| ПО Таблица.НомерГТД = СправочникНомераГТД.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО &МетодСоединения
|ГДЕ
| &ТекстПроверкиСоединения
| И (НЕ &КомиссионерВедетУчетПоРНПТ
| ИЛИ ЕСТЬNULL(СправочникНомераГТД.ТипНомераГТД, НЕОПРЕДЕЛЕНО) В
| (ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерРНПТ),
| ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерРНПТКомплекта)
| )
| )
| И &Отбор
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.АналитикаУчетаНоменклатурыТоварыУПартнеров,
| Таблица.НомерГТД,
| Таблица.Упаковка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.АналитикаУчетаНоменклатурыТоварыУПартнеров КАК АналитикаУчетаНоменклатурыТоварыУПартнеров,
| Таблица.НомерГТД КАК НомерГТД,
| Таблица.Упаковка КАК Упаковка,
| СУММА(ЕСТЬNULL(ДанныеУчета.КОформлению, 0)) КАК КОформлению,
| СУММА(Таблица.Количество) КАК КоличествоВДокументе
|ИЗ
| Документ.ПередачаТоваровХранителю.ВидыЗапасов КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НомераГТД КАК СправочникНомераГТД
| ПО Таблица.НомерГТД = СправочникНомераГТД.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО &МетодСоединения
|ГДЕ
| &ТекстПроверкиСоединения
| И &КомиссионерВедетУчетПоРНПТ
| И ЕСТЬNULL(СправочникНомераГТД.ТипНомераГТД, ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерГТД)) = ЗНАЧЕНИЕ(Перечисление.ТипыНомеровГТД.НомерГТД)
| И &Отбор
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.АналитикаУчетаНоменклатурыТоварыУПартнеров,
| Таблица.НомерГТД,
| Таблица.Упаковка
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| АналитикаУчетаНоменклатурыТоварыУПартнеров,
| НомерГТД,
| Упаковка
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыПередачи.Ссылка КАК Ссылка,
| ТоварыПередачи.АналитикаУчетаНоменклатурыТоварыУПартнеров КАК АналитикаУчетаНоменклатурыТоварыУПартнеров,
| ТоварыПередачи.СтатусУказанияСерий КАК СтатусУказанияСерий,
| АналитикаЗапасов.НомерГТД КАК НомерГТД,
| АналитикаЗапасов.Упаковка КАК Упаковка
|ПОМЕСТИТЬ АналитикаСерий
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТоварыПередачи
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ АналитикаЗапасов КАК АналитикаЗапасов
| ПО ТоварыПередачи.Ссылка = АналитикаЗапасов.Ссылка
| И
| ТоварыПередачи.АналитикаУчетаНоменклатурыТоварыУПартнеров = АналитикаЗапасов.АналитикаУчетаНоменклатурыТоварыУПартнеров
| И ТоварыПередачи.Упаковка = АналитикаЗапасов.Упаковка
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| АналитикаУчетаНоменклатурыТоварыУПартнеров,
| НомерГТД,
| Упаковка
|;
|
|
|ВЫБРАТЬ
| ТаблицаЗапасов.Ссылка КАК Ссылка,
| ТаблицаЗапасов.АналитикаУчетаНоменклатурыТоварыУПартнеров КАК АналитикаУчетаНоменклатурыТоварыУПартнеров,
| ТаблицаЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаЗапасов.Упаковка КАК Упаковка,
| ТаблицаЗапасов.Цена КАК Цена,
| СУММА(ТаблицаЗапасов.Количество) КАК Количество
|ПОМЕСТИТЬ ВидыЗапасовДокументов
|ИЗ
| Документ.ПередачаТоваровХранителю.ВидыЗапасов КАК ТаблицаЗапасов
|ГДЕ
| ТаблицаЗапасов.Ссылка В (&Распоряжения)
|СГРУППИРОВАТЬ ПО
| ТаблицаЗапасов.Ссылка,
| ТаблицаЗапасов.АналитикаУчетаНоменклатурыТоварыУПартнеров,
| ТаблицаЗапасов.НомерГТД,
| ТаблицаЗапасов.Упаковка,
| ТаблицаЗапасов.Цена
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаЗапасов.Ссылка,
| ТаблицаЗапасов.АналитикаУчетаНоменклатурыТоварыУПартнеров,
| ТаблицаЗапасов.НомерГТД,
| ТаблицаЗапасов.Упаковка,
| ТаблицаЗапасов.Цена,
| СУММА(ТаблицаЗапасов.Количество)
|ИЗ
| Документ.ПередачаТоваровХранителю.ВидыЗапасов КАК ТаблицаЗапасов
|ГДЕ
| ТаблицаЗапасов.ЗаказКлиента В (&Распоряжения)
|СГРУППИРОВАТЬ ПО
| ТаблицаЗапасов.Ссылка,
| ТаблицаЗапасов.АналитикаУчетаНоменклатурыТоварыУПартнеров,
| ТаблицаЗапасов.НомерГТД,
| ТаблицаЗапасов.Упаковка,
| ТаблицаЗапасов.Цена
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| АналитикаУчетаНоменклатурыТоварыУПартнеров,
| НомерГТД,
| Упаковка,
| Цена
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.АналитикаУчетаНоменклатурыТоварыУПартнеров.Номенклатура КАК Номенклатура,
| Таблица.АналитикаУчетаНоменклатурыТоварыУПартнеров.Характеристика КАК Характеристика,
| Таблица.АналитикаУчетаНоменклатурыТоварыУПартнеров.Назначение КАК Назначение,
| ВЫБОР
| КОГДА АналитикаСерий.СтатусУказанияСерий В (14, 18)
| ТОГДА Таблица.АналитикаУчетаНоменклатурыТоварыУПартнеров.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Количество КАК Количество,
| АналитикаЗапасов.КОформлению КАК КОформлению,
| Таблица.Цена КАК Цена,
| ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) КАК СтавкаНДС,
| Таблица.Ссылка.Склад КАК Склад,
| Таблица.НомерГТД КАК НомерГТД
|ПОМЕСТИТЬ Результат
|ИЗ
| ВидыЗапасовДокументов КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ АналитикаЗапасов КАК АналитикаЗапасов
| ПО Таблица.Ссылка = АналитикаЗапасов.Ссылка
| И Таблица.АналитикаУчетаНоменклатурыТоварыУПартнеров = АналитикаЗапасов.АналитикаУчетаНоменклатурыТоварыУПартнеров
| И Таблица.НомерГТД = АналитикаЗапасов.НомерГТД
| И Таблица.Упаковка = АналитикаЗапасов.Упаковка
| ЛЕВОЕ СОЕДИНЕНИЕ АналитикаСерий КАК АналитикаСерий
| ПО Таблица.Ссылка = АналитикаСерий.Ссылка
| И Таблица.АналитикаУчетаНоменклатурыТоварыУПартнеров = АналитикаСерий.АналитикаУчетаНоменклатурыТоварыУПартнеров
| И Таблица.НомерГТД = АналитикаСерий.НомерГТД
| И Таблица.Упаковка = АналитикаСерий.Упаковка
|;
|
|
|ВЫБРАТЬ
| АВТОНОМЕРЗАПИСИ() КАК НомерСтроки,
| Результат.Ссылка КАК Ссылка,
| Результат.Номенклатура КАК Номенклатура,
| Результат.Характеристика КАК Характеристика,
| Результат.Назначение КАК Назначение,
| Результат.Серия КАК Серия,
| Результат.Упаковка КАК Упаковка,
| Результат.Количество КАК Количество,
| Результат.КОформлению КАК КОформлению,
| Результат.Цена КАК Цена,
| Результат.СтавкаНДС КАК СтавкаНДС,
| Результат.Склад КАК Склад,
| Результат.НомерГТД КАК НомерГТД
|ПОМЕСТИТЬ РезультатСНумерацией
|ИЗ
| Результат
|
|ИНДЕКСИРОВАТЬ ПО
| НомерСтроки,
| Ссылка,
| Номенклатура,
| Характеристика,
| Назначение,
| Серия,
| Склад,
| НомерГТД
|;
|
|
|ВЫБРАТЬ
| ТаблицаБаза.Ссылка КАК Ссылка,
| ТаблицаБаза.Номенклатура КАК Номенклатура,
| ТаблицаБаза.Характеристика КАК Характеристика,
| ТаблицаБаза.Назначение КАК Назначение,
| ТаблицаБаза.Серия КАК Серия,
| ТаблицаБаза.Упаковка КАК Упаковка,
| ВЫБОР
| КОГДА ТаблицаБаза.КОформлению >= СУММА(ТаблицаРаспределение.Количество)
| ТОГДА ТаблицаБаза.Количество
| ИНАЧЕ ВЫБОР
| КОГДА ТаблицаБаза.Количество - (СУММА(ТаблицаРаспределение.Количество) - ТаблицаБаза.КОформлению) < 0
| ТОГДА 0
| ИНАЧЕ ТаблицаБаза.Количество - (СУММА(ТаблицаРаспределение.Количество) - ТаблицаБаза.КОформлению)
| КОНЕЦ
| КОНЕЦ КАК Количество,
| ВЫБОР
| КОГДА ТаблицаБаза.КОформлению >= СУММА(ТаблицаРаспределение.Количество)
| ТОГДА ТаблицаБаза.Количество
| ИНАЧЕ ВЫБОР
| КОГДА ТаблицаБаза.Количество - (СУММА(ТаблицаРаспределение.Количество) - ТаблицаБаза.КОформлению) < 0
| ТОГДА 0
| ИНАЧЕ ТаблицаБаза.Количество - (СУММА(ТаблицаРаспределение.Количество) - ТаблицаБаза.КОформлению)
| КОНЕЦ
| КОНЕЦ КАК КОформлению,
| ТаблицаБаза.Цена КАК Цена,
| ТаблицаБаза.СтавкаНДС КАК СтавкаНДС,
| ТаблицаБаза.Склад КАК Склад,
| ТаблицаБаза.НомерГТД КАК НомерГТД
|ИЗ
| РезультатСНумерацией КАК ТаблицаБаза
| ЛЕВОЕ СОЕДИНЕНИЕ РезультатСНумерацией КАК ТаблицаРаспределение
| ПО ТаблицаБаза.НомерСтроки >= ТаблицаРаспределение.НомерСтроки
| И ТаблицаБаза.Ссылка = ТаблицаРаспределение.Ссылка
| И ТаблицаБаза.Номенклатура = ТаблицаРаспределение.Номенклатура
| И ТаблицаБаза.Характеристика = ТаблицаРаспределение.Характеристика
| И ТаблицаБаза.Назначение = ТаблицаРаспределение.Назначение
| И ТаблицаБаза.Серия = ТаблицаРаспределение.Серия
| И ТаблицаБаза.Склад = ТаблицаРаспределение.Склад
| И ТаблицаБаза.НомерГТД = ТаблицаРаспределение.НомерГТД
|СГРУППИРОВАТЬ ПО
| ТаблицаБаза.НомерСтроки,
| ТаблицаБаза.Ссылка,
| ТаблицаБаза.Номенклатура,
| ТаблицаБаза.Характеристика,
| ТаблицаБаза.Назначение,
| ТаблицаБаза.Серия,
| ТаблицаБаза.Упаковка,
| ТаблицаБаза.Количество,
| ТаблицаБаза.КОформлению,
| ТаблицаБаза.Цена,
| ТаблицаБаза.СтавкаНДС,
| ТаблицаБаза.Склад,
| ТаблицаБаза.НомерГТД";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстПроверкиСоединения", ТекстПроверкиСоединения);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&МетодСоединения", ТекстСоединения);
ТекстОтбора = ОбщегоНазначенияУТ.ТекстОтбораПоКоллекцииОтборов(Отбор);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Отбор", ТекстОтбора);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаОстаткиКОформлениюПоПередачам(ИмяВременнойТаблицы = "") Экспорт
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Набор.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Набор.НомерГТД КАК НомерГТД,
| СУММА(Набор.Количество) КАК КОформлению
|ПОМЕСТИТЬ ИмяТаблицы
|ИЗ
| (ВЫБРАТЬ
| Таблица.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Таблица.НомерГТД КАК НомерГТД,
| Таблица.КоличествоОстаток КАК Количество
| ИЗ
| РегистрНакопления.ТоварыОрганизаций.Остатки(, АналитикаУчетаНоменклатуры В (&АналитикиУчетаНоменклатуры)) КАК Таблица
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Таблица.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| Таблица.НомерГТД КАК НомерГТД,
| -Таблица.Количество КАК Количество
| ИЗ
| РегистрНакопления.ТоварыОрганизаций КАК Таблица
| ГДЕ
| Таблица.Активность
| И Таблица.Регистратор В(&Регистратор)
| И Таблица.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
| ) КАК Набор
|
|СГРУППИРОВАТЬ ПО
| Набор.АналитикаУчетаНоменклатуры,
| Набор.НомерГТД
|
|ИМЕЮЩИЕ
| СУММА(Набор.Количество) > 0
|";
Если Не ПустаяСтрока(ИмяВременнойТаблицы) Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ПОМЕСТИТЬ ИмяТаблицы", "ПОМЕСТИТЬ " + ИмяВременнойТаблицы);
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ПОМЕСТИТЬ ИмяТаблицы", "");
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область ТекущиеДела
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
ОбщиеПараметрыЗапросов = ТекущиеДелаСервер.ОбщиеПараметрыЗапросов();
ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи =
ПолучитьФункциональнуюОпцию("ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи")
И ПравоДоступа("Чтение", Метаданные.Документы.ЗаказКлиента);
ИспользоватьРасширенныеВозможностиЗаказаКлиента =
ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
ИспользоватьПроизводствоНаСтороне =
ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне2_5")
И ПравоДоступа("Чтение", Метаданные.Документы.ЗаказПереработчику2_5);
ОбщиеПраваДоступа =
ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или ((ПравоДоступа("Добавление", Метаданные.Документы.ПередачаТоваровХранителю)
Или ПравоДоступа("Изменение", Метаданные.Документы.ПередачаТоваровХранителю))
И ПравоДоступа("Просмотр", Метаданные.Документы.ПередачаТоваровХранителю)
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат));
Если Не ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи
И Не ИспользоватьПроизводствоНаСтороне
Или Не ОбщиеПраваДоступа Тогда
Возврат;
КонецЕсли;
Если ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ИспользоватьРасширенныеВозможностиЗаказаКлиента", ИспользоватьРасширенныеВозможностиЗаказаКлиента);
Запрос.УстановитьПараметр("ИспользоватьРасширенныеВозможностиЗаказов", ИспользоватьРасширенныеВозможностиЗаказаКлиента);
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказыКОформлению.Ссылка) КАК РаспоряженияНаОформлениеПередачТоваровХранителюВсегоВРаботе
|ИЗ
| (ВЫБРАТЬ
| ТаблицаДанных.Распоряжение КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК Склад,
| НЕОПРЕДЕЛЕНО КАК Номенклатура,
| НЕОПРЕДЕЛЕНО КАК Характеристика,
| НЕОПРЕДЕЛЕНО КАК Серия
| ИЗ
| РегистрСведений.РаспоряженияНаОтгрузкуИВозвратКВыполнению КАК ТаблицаДанных
|
| ГДЕ
| ТИПЗНАЧЕНИЯ(ТаблицаДанных.Распоряжение) В (&ТипыРаспоряжений)
| И ТаблицаДанных.СостояниеКОформлению <> ЗНАЧЕНИЕ(Перечисление.СостояниеОформленияДокументовПоРаспоряжению.Оформлены)
| И ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ГДЕ
| РеестрДокументов.Ссылка = ТаблицаДанных.Распоряжение
| И РеестрДокументов.ХозяйственнаяОперация В(&ХозяйственныеОперации)
| И &ИспользоватьРасширенныеВозможностиЗаказов
| И РеестрДокументов.Ответственный = &Пользователь
| )
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаДанных.ДокументОтгрузки КАК Ссылка,
| ТаблицаДанных.Склад КАК Склад,
| ТаблицаДанных.Номенклатура КАК Номенклатура,
| ТаблицаДанных.Характеристика КАК Характеристика,
| ТаблицаДанных.Серия КАК Серия
| ИЗ
| РегистрНакопления.ТоварыКОтгрузке.Остатки(,
| ТИПЗНАЧЕНИЯ(ДокументОтгрузки) В (&ТипыРаспоряжений)
| ) КАК ТаблицаДанных
| ГДЕ
| (ТаблицаДанных.КОтгрузкеОстаток - ТаблицаДанных.СобраноОстаток > 0
| ИЛИ ТаблицаДанных.КОформлениюОстаток > 0)
| И ТаблицаДанных.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И ТаблицаДанных.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке <= &ТекущаяДата
| И ИСТИНА В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
| ИЗ
| РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ГДЕ
| РеестрДокументов.Ссылка = ТаблицаДанных.ДокументОтгрузки
| И РеестрДокументов.ХозяйственнаяОперация В(&ХозяйственныеОперации)
| И &ИспользоватьРасширенныеВозможностиЗаказаКлиента
| И РеестрДокументов.Ответственный = &Пользователь
| )
| ) КАК ЗаказыКОформлению
|
|";
ПодставитьТекстИспользоватьРасширенныеВозможностиЗаказаКлиента(Запрос.Текст, "РеестрДокументов",
"&ИспользоватьРасширенныеВозможностиЗаказов", "ТаблицаДанных", "Распоряжение");
ХозяйственныеОперацииПередач = Новый Массив;
ХозяйственныеОперацииПередач.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтХранителя);
ХозяйственныеОперацииПередач.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи);
ТипыРаспоряжений = Новый Массив;
ТипыРаспоряжений.Добавить(Тип("ДокументСсылка.ЗаказКлиента"));
ТипыРаспоряжений.Добавить(Тип("ДокументСсылка.ПередачаТоваровХранителю"));
Запрос.УстановитьПараметр("ХозяйственныеОперации", ХозяйственныеОперацииПередач);
Запрос.УстановитьПараметр("ТипыРаспоряжений", ТипыРаспоряжений);
Результат = ТекущиеДелаСлужебный.ЧисловыеПоказателиТекущихДел(Запрос, ОбщиеПараметрыЗапросов);
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = "ДокументыПередачиТоваровХранителю";
ДелоРодитель.Представление = НСтр("ru = 'Документы передачи товаров хранителю'");
ДелоРодитель.Владелец = Метаданные.Подсистемы.Продажи;
ДелоРодитель.ЕстьДела = Результат.РаспоряженияНаОформлениеПередачТоваровХранителюВсегоВРаботе > 0;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Склад", Справочники.Склады.ПустаяСсылка());
ПараметрыОтбора.Вставить("ДатаОтгрузки", ОбщиеПараметрыЗапросов.ТекущаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СтруктураБыстрогоОтбора", ПараметрыОтбора);
ПараметрыФормы.Вставить("ИмяТекущейСтраницы", "ГруппаКОформлению");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "РаспоряженияНаОформлениеПередачТоваровХранителюВсегоВРаботе";
Дело.ЕстьДела = Результат.РаспоряженияНаОформлениеПередачТоваровХранителюВсегоВРаботе > 0;
Дело.Представление = НСтр("ru = 'Распоряжения на оформление в работе'");
Дело.Количество = Результат.РаспоряженияНаОформлениеПередачТоваровХранителюВсегоВРаботе;
Дело.Важное = Ложь;
Дело.Форма = "Обработка.ЖурналДокументовПродажи.Форма.КОформлениюНакладных";
Дело.ПараметрыФормы = ПараметрыФормы;
Дело.Владелец = "ДокументыПередачиТоваровХранителю";
КонецЕсли;
Если ИспользоватьПроизводствоНаСтороне Тогда
ПараметрыОтбора =
НакладныеСервер.ПараметрыОтбораРаспоряжений(,,,
Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5,
ОбщиеПараметрыЗапросов.Пользователь);
ТекстыЗапросов =
Обработки.ЖурналДокументовПередачиВПереработку2_5.ТекстыЗапросов(
ПараметрыОтбора,
Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5);
Запрос = Новый Запрос(ТекстыЗапросов.ТекстЗапросаРасчетаСостояний);
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ХозОперация", Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5);
Запрос.УстановитьПараметр("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
Запрос.УстановитьПараметр("НачалоТекущегоДня", НачалоДня(ТекущаяДатаСеанса()));
НакладныеСервер.ДобавитьПараметрыОтбораПоРееструДокументов(Запрос, ПараметрыОтбора);
Запрос.Выполнить();
Запрос.Текст = ТекстыЗапросов.ТекстЗапросаСпискаРаспоряжений;
Результат = Запрос.Выполнить().Выбрать().Количество();
ДелоРодитель = ТекущиеДела.Найти("ПроизводствоНаСтороне", "Идентификатор");
Если ДелоРодитель = Неопределено Тогда
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = "ПроизводствоНаСтороне";
ДелоРодитель.Представление = НСтр("ru = 'Производство на стороне'");
ДелоРодитель.Владелец = Метаданные.Подсистемы.Производство;
КонецЕсли;
ДелоРодитель.ЕстьДела =
ДелоРодитель.ЕстьДела
Или Результат > 0;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Склад", Справочники.Склады.ПустаяСсылка());
ПараметрыОтбора.Вставить("ДатаОтгрузки", ОбщиеПараметрыЗапросов.ТекущаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СтруктураБыстрогоОтбора", ПараметрыОтбора);
ПараметрыФормы.Вставить("ИмяТекущейСтраницы", "СтраницаПередачиСырья");
ПараметрыФормы.Вставить("КлючНазначенияФормы", "ТекущиеДела");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ПередачаПереработчикуКОформлению2_5";
Дело.ЕстьДела = Результат > 0;
Дело.Представление = НСтр("ru = 'Передачи переработчику к оформлению'");
Дело.Количество = Результат;
Дело.Важное = Ложь;
Дело.Форма = "Обработка.ЖурналДокументовПередачиВПереработку2_5.Форма.КОформлениюНакладных";
Дело.ПараметрыФормы = ПараметрыФормы;
Дело.Владелец = "ПроизводствоНаСтороне";
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
КонецПроцедуры
#КонецОбласти
#Область УнифицированныеМетодыПоХозяйственнымОперациям
#Область Заполнение
Функция ТекстЗапросаЗаполненияНаОснованияЗаказа() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| ЗаказКлиента.Ссылка КАК ЗаказКлиента,
| ЗаказКлиента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЗаказКлиента.Статус КАК СтатусДокумента,
| ЗаказКлиента.Партнер КАК Партнер,
| ЗаказКлиента.Контрагент КАК Контрагент,
| ЗаказКлиента.БанковскийСчетКонтрагента КАК БанковскийСчетКонтрагента,
| ЗаказКлиента.Соглашение КАК Соглашение,
| ЗаказКлиента.Организация КАК Организация,
| ЗаказКлиента.БанковскийСчет КАК БанковскийСчетОрганизации,
| ЗаказКлиента.Договор КАК Договор,
| ВЫБОР
| КОГДА
| ЕСТЬNULL(Склады.ЭтоГруппа, ЛОЖЬ)
| И ЕСТЬNULL(Склады.ВыборГруппы, НЕОПРЕДЕЛЕНО) = ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказах)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ ЗаказКлиента.Склад
| КОНЕЦ КАК Склад,
| ЕСТЬNULL(Склады.ИспользоватьОрдернуюСхемуПриОтгрузке,
| ЛОЖЬ) КАК ОрдернаяСхемаПриОтгрузке,
| ВЫБОР
| КОГДА
| ЕСТЬNULL(Склады.ЭтоГруппа, ЛОЖЬ)
| И ЕСТЬNULL(Склады.ВыборГруппы, НЕОПРЕДЕЛЕНО) = ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказах)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЗапрещеноВыбиратьГруппуСкладов,
| ЗаказКлиента.Валюта КАК Валюта,
|
| ЗаказКлиента.Грузоотправитель КАК Грузоотправитель,
| ЗаказКлиента.БанковскийСчетГрузоотправителя КАК БанковскийСчетГрузоотправителя,
| ЗаказКлиента.Грузополучатель КАК Грузополучатель,
| ЗаказКлиента.БанковскийСчетГрузополучателя КАК БанковскийСчетГрузополучателя,
|
| ЗаказКлиента.ДатаОтгрузки КАК ДатаОтгрузки,
| ЗаказКлиента.НеОтгружатьЧастями КАК НеОтгружатьЧастями,
|
| ВЫБОР
| КОГДА НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками
| И ЗаказКлиента.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| ИЛИ ЗаказКлиента.ЭтоЗаказКакСчет
| ИЛИ ЗаказКлиента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| ТОГДА ЗаказКлиента.СпособДоставки
| КОНЕЦ КАК СпособДоставки,
| ВЫБОР
| КОГДА НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками
| И ЗаказКлиента.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| ИЛИ ЗаказКлиента.ЭтоЗаказКакСчет
| ИЛИ ЗаказКлиента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| ТОГДА ЗаказКлиента.ПеревозчикПартнер
| КОНЕЦ КАК ПеревозчикПартнер,
| ЗаказКлиента.АдресДоставки КАК АдресДоставки,
| ЗаказКлиента.АдресДоставкиЗначенияПолей КАК АдресДоставкиЗначенияПолей,
| ВЫБОР
| КОГДА НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками
| И ЗаказКлиента.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| ИЛИ ЗаказКлиента.ЭтоЗаказКакСчет
| ИЛИ ЗаказКлиента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| ТОГДА ЗаказКлиента.ЗонаДоставки
| КОНЕЦ КАК ЗонаДоставки,
| ВЫБОР
| КОГДА НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками
| И ЗаказКлиента.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| ИЛИ ЗаказКлиента.ЭтоЗаказКакСчет
| ИЛИ ЗаказКлиента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| ТОГДА ЗаказКлиента.ВремяДоставкиС
| КОНЕЦ КАК ВремяДоставкиС,
| ВЫБОР
| КОГДА НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками
| И ЗаказКлиента.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| ИЛИ ЗаказКлиента.ЭтоЗаказКакСчет
| ИЛИ ЗаказКлиента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| ТОГДА ЗаказКлиента.ВремяДоставкиПо
| КОНЕЦ КАК ВремяДоставкиПо,
| ВЫБОР
| КОГДА НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками
| И ЗаказКлиента.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| ИЛИ ЗаказКлиента.ЭтоЗаказКакСчет
| ИЛИ ЗаказКлиента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| ТОГДА ЗаказКлиента.ДополнительнаяИнформацияПоДоставке
| КОНЕЦ КАК ДополнительнаяИнформацияПоДоставке,
| ВЫБОР
| КОГДА НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками
| И ЗаказКлиента.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| ИЛИ ЗаказКлиента.ЭтоЗаказКакСчет
| ИЛИ ЗаказКлиента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| ТОГДА ЗаказКлиента.ОсобыеУсловияПеревозки
| КОНЕЦ КАК ОсобыеУсловияПеревозки,
| ВЫБОР
| КОГДА НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками
| И ЗаказКлиента.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| ИЛИ ЗаказКлиента.ЭтоЗаказКакСчет
| ИЛИ ЗаказКлиента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| ТОГДА ЗаказКлиента.ОсобыеУсловияПеревозкиОписание
| КОНЕЦ КАК ОсобыеУсловияПеревозкиОписание,
|
| ЗаказКлиента.Сделка КАК Сделка,
| ЗаказКлиента.Подразделение КАК Подразделение,
| ЗаказКлиента.КонтактноеЛицо КАК КонтактноеЛицо,
| ЗаказКлиента.НаправлениеДеятельности КАК НаправлениеДеятельности,
|
| ЗаказКлиента.ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару,
| ЗаказКлиента.СрокВозвратаМногооборотнойТары КАК СрокВозвратаМногооборотнойТары,
| ВЫБОР
| КОГДА &ИспользоватьСоглашенияСКлиентами
| ТОГДА ЕСТЬNULL(Соглашения.КалендарьВозвратаТары, ЗНАЧЕНИЕ(Справочник.ПроизводственныеКалендари.ПустаяСсылка))
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ПроизводственныеКалендари.ПустаяСсылка)
| КОНЕЦ КАК КалендарьВозвратаТары,
| ВЫБОР
| КОГДА &ИспользоватьСоглашенияСКлиентами
| ТОГДА ЕСТЬNULL(Соглашения.РассчитыватьДатуВозвратаТарыПоКалендарю, ЛОЖЬ)
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК РассчитыватьДатуВозвратаТарыПоКалендарю,
|
| ЗаказКлиента.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет,
|
| НЕ ЗаказКлиента.Проведен КАК ЕстьОшибкиПроведен
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ЗаказКлиента.Склад = Склады.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСКлиентами КАК Соглашения
| ПО ЗаказКлиента.Соглашение = Соглашения.Ссылка
|ГДЕ
| ЗаказКлиента.Ссылка = &ДокументОснование
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| РаспоряженияНаОтгрузкуОтгружено.Склад КАК Склад
|ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая КАК РаспоряженияНаОтгрузкуОтгружено
|ГДЕ
| РаспоряженияНаОтгрузкуОтгружено.КОтгрузкеКоличествоОборот
| - РаспоряженияНаОтгрузкуОтгружено.ОтгруженоКоличествоОборот > 0
|";
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.ТекстУсловия = "
| Распоряжение = &ДокументОснование
|";
ПараметрыФормированияТаблицы.Группировка = "Склад";
ПараметрыФормированияТаблицы.Показатели = "КОтгрузке, Отгружено";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
РаспоряженияНаОтгрузкуОборотыРазвернутая =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая",
РаспоряженияНаОтгрузкуОборотыРазвернутая);
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область Проведение
Функция ПараметрыЗаполненияВидовЗапасов(Объект) Экспорт
ПараметрыЗаполнения = ЗапасыСервер.ПараметрыЗаполненияВидовЗапасов();
ПараметрыЗаполнения.СторнируемыйДокумент = Объект.СторнируемыйДокумент;
ОтборыВидовЗапасов = ПараметрыЗаполнения.ОтборыВидовЗапасов;
ДоступныеТипыЗапасов = Новый Массив;
ДоступныеТипыЗапасов.Добавить(Перечисления.ТипыЗапасов.Товар);
ДоступныеТипыЗапасов.Добавить(Перечисления.ТипыЗапасов.ТоварНаХраненииСПравомПродажи);
ОтборыВидовЗапасов.ТипЗапасов = ДоступныеТипыЗапасов;
Возврат ПараметрыЗаполнения;
КонецФункции
#КонецОбласти
#Область Округление
Процедура ЗаполнитьПризнакЦеховаяКладоваяВТаблице(Объект, Строки = Неопределено) Экспорт
ПроизводствоСервер.ЗаполнитьПризнакЦеховаяКладоваяВТаблице(Объект.Товары,,, Строки);
КонецПроцедуры
Процедура ПересчитатьКоличествоЕдиниц(Объект) Экспорт
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
ДобавитьДействиеПересчитатьКоличествоЕдиниц(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
Процедура ДобавитьДействиеЗаполнитьПризнакЦеховаяКладовая(СтруктураДействий) Экспорт
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
КонецПроцедуры
Процедура ДобавитьДействиеПересчитатьКоличествоЕдиниц(СтруктураДействий) Экспорт
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПараметрыПересчетаКоличестваЕдиниц());
КонецПроцедуры
Функция ПараметрыПересчетаКоличестваЕдиниц() Экспорт
Возврат Неопределено;
КонецФункции
Функция ПараметрыТЧДляОкругления() Экспорт
Возврат Новый Структура("Товары");
КонецФункции
#КонецОбласти
#Область ТекстыЗапросов
#Область ТекстыЗапросовЗаполненияСпискаРаспоряжений
Функция ТекстЗапросаРаспоряженияНакладной(ПараметрыТекстаЗапроса) Экспорт
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(
ПараметрыТекстаЗапроса.Отбор,
"ТаблицаРаспоряжений.ХозяйственнаяОперация",
"ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)",
"=");
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(
ПараметрыТекстаЗапроса.Отбор,
"ВЫБОР
| КОГДА ТаблицаРаспоряжений.Склад = &Склад
| ИЛИ ТаблицаРаспоряжений.Склад В ИЕРАРХИИ (&Склад)
| ИЛИ ТаблицаРаспоряжений.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
|КОНЕЦ",
"ИСТИНА",
"=");
Возврат Документы.ЗаказКлиента.ТекстЗапросаРаспоряженийНакладных(ПараметрыТекстаЗапроса);
КонецФункции
Функция ТекстЗапросаОстаткиТоваровКОформлению(ИмяВременнойТаблицы, ОтборПоИзмерениям = Неопределено) Экспорт
Если ОтборПоИзмерениям = Неопределено Тогда
ОтборПоИзмерениям = Новый Соответствие;
КонецЕсли;
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(
ОтборПоИзмерениям,
"Распоряжение",
"ВЫБРАТЬ
| РаспоряженияНакладной.Распоряжение
|ИЗ
| РаспоряженияНакладной КАК РаспоряженияНакладной");
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(
ОтборПоИзмерениям,
"ВЫБОР
| КОГДА Склад = &Склад
| ИЛИ Склад В ИЕРАРХИИ (&Склад)
| ИЛИ Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
|КОНЕЦ",
"ИСТИНА",
"=");
ТекстЗапроса =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаОстатки(
ИмяВременнойТаблицы,
ОтборПоИзмерениям,
"КОформлению > 0");
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаДублиТоваровКОформлению() Экспорт
Возврат
"ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК КоличествоДублей,
| ТоварыКОформлению.Номенклатура КАК Номенклатура,
| ТоварыКОформлению.Характеристика КАК Характеристика,
| ТоварыКОформлению.Серия КАК Серия,
| ТоварыКОформлению.Склад КАК Склад
|ПОМЕСТИТЬ ДублиТоваровКОформлению
|ИЗ
| ТоварыКОформлению КАК ТоварыКОформлению
|
|СГРУППИРОВАТЬ ПО
| ТоварыКОформлению.Номенклатура,
| ТоварыКОформлению.Характеристика,
| ТоварыКОформлению.Серия,
| ТоварыКОформлению.Склад
|";
КонецФункции
#КонецОбласти
Процедура РедактироватьТекстЗапросаПересчетаВВалютуДокумента(ТекстЗапроса) Экспорт
Возврат;
КонецПроцедуры
Процедура РедактироватьТекстЗапросаПоОстаткамЗаказов(ТекстЗапроса) Экспорт
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ЗаказКлиентаСоглашение", "ЗаказКлиента.Соглашение");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ЗаказКлиентаВернутьМногооборотнуюТару", "ЗаказКлиента.ВернутьМногооборотнуюТару");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ЗаказКлиентаНазначениеОтправителя", "ЗаказТовары.Ссылка.Назначение");
ТекстЗапроса =
СтрЗаменить(
ТекстЗапроса,
"&ЗаказКлиентаНазначение",
"ВЫБОР
| КОГДА ЗаказТовары.Обособленно
| ТОГДА ЗаказТовары.Ссылка.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
|КОНЕЦ");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТоварыЗаказаСуммаСНДС", "ТоварыЗаказа.СуммаСНДС");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ЗаказТоварыНоменклатураНабора", "ЗаказТовары.НоменклатураНабора");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ЗаказТоварыХарактеристикаНабора", "ЗаказТовары.ХарактеристикаНабора");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ЗаказТоварыВидЦены", "ЗаказТовары.ВидЦены");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТаблицаОстаткиСумма", "ТаблицаОстатки.Сумма");
КонецПроцедуры
#КонецОбласти
#Область ДокументЗаказ
Функция ПравоДоступаЗаказа(ИмяПраво) Экспорт
Возврат ПравоДоступа(ИмяПраво, Метаданные.Документы.ЗаказКлиента);
КонецФункции
Функция МенеджерЗаказа() Экспорт
Возврат Документы.ЗаказКлиента;
КонецФункции
Функция ОписаниеТипаЗаказа() Экспорт
Возврат Новый ОписаниеТипов("ДокументСсылка.ЗаказКлиента");
КонецФункции
Функция ТипЗаказа() Экспорт
Возврат Тип("ДокументСсылка.ЗаказКлиента");
КонецФункции
Функция СинонимЗаказа() Экспорт
Возврат НСтр("ru='Заказ клиента'");
КонецФункции
#КонецОбласти
#Область АктОРасхождениях
Функция ТипОснованияАкта() Экспорт
Возврат Перечисления.ТипыОснованияАктаОРасхождении.ПередачаТоваровХранителю;
КонецФункции
Функция ОформитьВозвратАкта() Экспорт
Возврат Истина;
КонецФункции
Функция ПостфиксИмениАкта() Экспорт
Возврат НСтр("ru = 'после передачи товаров хранителю'");
КонецФункции
Функция ЗаголовокФормыСозданияАкта() Экспорт
Возврат НСтр("ru = 'Акт о расхождениях после передачи товаров хранителю (создание)'");
КонецФункции
Функция ЗаголовокФормыАкта() Экспорт
Возврат НСтр("ru = 'Акт о расхождениях после передачи товаров хранителю'");
КонецФункции
Функция ЗаголовокПартнераАкта() Экспорт
Возврат НСтр("ru = 'Партнер'");
КонецФункции
Функция ЗаголовокДокументаОснованияАкта() Экспорт
Возврат НСтр("ru = 'Передача хранителю'");
КонецФункции
Функция ПодсказкаДоговораАкта() Экспорт
Возврат НСтр("ru = 'Договор, в рамках которого оформлена передача'");
КонецФункции
#КонецОбласти
#Область ХозяйственныеОперации
Функция ХозяйственнаяОперация() Экспорт
Возврат Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи;
КонецФункции
Функция ХозяйственнаяОперацияДоговора() Экспорт
Возврат Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи;
КонецФункции
Функция ХозяйственныеОперацииРаспоряжений() Экспорт
МассивОпераций = Новый Массив;
МассивОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи);
МассивОпераций.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтХранителя);
Возврат МассивОпераций;
КонецФункции
#КонецОбласти
#Область ФункциональныеОпции
Функция СоглашенияСКлиентамиПрименимы() Экспорт
Возврат Истина;
КонецФункции
Функция ИспользоватьСоглашенияСКлиентами() Экспорт
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
КонецФункции
Функция ИспользоватьРасширенныеВозможностиЗаказаКлиента() Экспорт
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
КонецФункции
Функция ИспользоватьЗаказыКлиентов() Экспорт
ИспользоватьЗаказыКлиентов = ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыКлиентов")
Или ПолучитьФункциональнуюОпцию("ИспользоватьЗаявкиНаВозвратТоваровОтКлиентов");
Возврат ИспользоватьЗаказыКлиентов;
КонецФункции
Функция ИспользоватьРеализациюПоНесколькимЗаказам() Экспорт
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьРеализациюПоНесколькимЗаказам");
КонецФункции
Функция РеализацияСверхЗаказа() Экспорт
Возврат ПраваПользователяПовтИсп.РеализацияСверхЗаказа();
КонецФункции
Функция ОтклонениеОтУсловийПродаж() Экспорт
Возврат ПраваПользователяПовтИсп.ОтклонениеОтУсловийПродаж();
КонецФункции
#КонецОбласти
#Область ФункциональныеОпцииВТекстахЗапросов
Процедура ПодставитьТекстИспользоватьРасширенныеВозможностиЗаказаКлиента(
ТекстЗапроса, ИмяТаблицы, Параметр = "&ИспользоватьРасширенныеВозможностиЗаказаКлиента", ИмяТаблицыТовары = "", ИмяРеквизитаЗаказКлиента = "ЗаказКлиента") Экспорт
ХозяйственнаяОперацияДокумента = Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5;
ХозяйственнаяОперацияДоговора = ПереработкаНаСтороне.ХозяйственнаяОперацияДоговора();
ИмяОперацииДокумента = ОбщегоНазначения.ИмяЗначенияПеречисления(ХозяйственнаяОперацияДокумента);
ИмяОперацииДоговора = ОбщегоНазначения.ИмяЗначенияПеречисления(ХозяйственнаяОперацияДоговора);
НовыйТекст = "(%1.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.%2),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.%3))
|ИЛИ %4)";
НовыйТекст = СтрШаблон(НовыйТекст, ИмяТаблицы, ИмяОперацииДокумента, ИмяОперацииДоговора, Параметр);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, Параметр, НовыйТекст);
Если Не ИмяТаблицыТовары = "" Тогда
НовыйТекст = "НЕ ЕСТЬNULL(%1.%2.ЭтоЗаказКакСчет, НЕ %3)";
НовыйТекст = СтрШаблон(НовыйТекст, ИмяТаблицыТовары, ИмяРеквизитаЗаказКлиента, Параметр);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, Параметр, НовыйТекст);
КонецЕсли;
Возврат;
КонецПроцедуры
#КонецОбласти
#Область Форма
Функция ПолучитьДоговорПоУмолчанию(Объект, ОтборПоВалюте = Истина, ОтборПоНаправлениюДеятельности = Истина) Экспорт
ХозяйственнаяОперация = ХозяйственнаяОперацияДоговора();
Валюта = Неопределено;
Если ОтборПоВалюте Тогда
Валюта = Объект.Валюта;
КонецЕсли;
НаправлениеДеятельности = Неопределено;
Если ОтборПоНаправлениюДеятельности
И ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности") Тогда
НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЕсли;
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(Объект, ХозяйственнаяОперация, Валюта, НаправлениеДеятельности);
Возврат Договор;
КонецФункции
Процедура УстановитьДоступностьДоговора(Форма, Объект, Договор = Неопределено) Экспорт
Элементы = Форма.Элементы;
ПродажиСервер.УстановитьДоступностьДоговора(
Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Договор);
КонецПроцедуры
Процедура НастроитьФорму(Форма, Номер, Дата) Экспорт
Элементы = Форма.Элементы;
Параметры = Форма.Параметры;
Форма.АвтоЗаголовок = Ложь;
Форма.Заголовок = ЗаголовокФормыДокумента(Не ЗначениеЗаполнено(Параметры.Ключ), Номер, Дата);
Элементы.Партнер.Заголовок = НСтр("ru = 'Клиент'");
Элементы.ТоварыЗаказКлиента.Заголовок = НСтр("ru = 'Заказ клиента'");
ПравоНаИзменениеЗаказов = ПравоДоступаЗаказа("Изменение");
Элементы.ЗакрытьЗаказ.Доступность = ПравоНаИзменениеЗаказов;
Элементы.ЗакрытьЗаказы.Доступность = ПравоНаИзменениеЗаказов;
Элементы.Соглашение.Видимость = ИспользоватьСоглашенияСКлиентами();
Элементы.ТоварыЗаполнитьЦеныПоСоглашению.Видимость = Элементы.Соглашение.Видимость;
Элементы.ТоварыЗаполнитьЦеныПоДоговору.Видимость = Ложь;
КонецПроцедуры
Процедура НастроитьПараметрыВыбораЭлементов(Форма, Объект) Экспорт
Элементы = Форма.Элементы;
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.Клиент", Истина));
Элементы.Партнер.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("ЗаголовокПоПартнеру", НСтр("ru = 'По клиенту'")));
Элементы.Контрагент.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(
Новый ПараметрВыбора("Отбор.Статус", Перечисления.СтатусыДоговоровКонтрагентов.Действует));
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ХозяйственнаяОперация", Объект.ХозяйственнаяОперация));
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ПометкаУдаления", Ложь));
МассивСвязейПараметровВыбора = Новый Массив;
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.Контрагент", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Партнер", "Объект.Партнер", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Соглашение", "Объект.Соглашение", РежимИзмененияСвязанногоЗначения.НеИзменять));
Элементы.Договор.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
Элементы.Договор.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязейПараметровВыбора);
Если Не Элементы.Найти("НаправлениеДеятельности") = Неопределено Тогда
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.УчетДоходов", Истина));
Элементы.НаправлениеДеятельности.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
КонецЕсли;
Если Не Элементы.Найти("ТоварыВидЦены") = Неопределено Тогда
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ИспользоватьПриПродаже", Истина));
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ВыводитьПроизвольныйВидЦены", Истина));
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.Статус", Перечисления.СтатусыДействияВидовЦен.Действует));
Элементы.ТоварыВидЦены.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
КонецЕсли;
КонецПроцедуры
Функция ЗаголовокФормыДокумента(НовыйДокумент, Номер, Дата) Экспорт
Если НовыйДокумент Тогда
Заголовок = СтрШаблон(НСтр("ru = '%1 (создание)'"), ПредставлениеОбъекта());
Иначе
Заголовок = СтрШаблон(НСтр("ru = '%1 %2 от %3'"), ПредставлениеОбъекта(), Номер, Дата);
КонецЕсли;
Возврат Заголовок;
КонецФункции
Функция ПредставлениеОбъекта() Экспорт
Возврат НСтр("ru = 'Передача товаров хранителю'");
КонецФункции
Процедура ПривязатьСтрокиПередачиКЗаказам(Форма, Объект, ПараметрыУказанияСерий, ОтобратьПоЗаказу) Экспорт
Если Не Форма.ИспользоватьЗаказыКлиентов
Или (Не Форма.ИспользоватьПередачуПоНесколькимЗаказам
И Не ЗначениеЗаполнено(Объект.ЗаказКлиента)) Тогда
Возврат;
КонецЕсли;
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Объект.ХозяйственнаяОперация);
ТекстыЗапроса = Новый Массив;
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика
|";
ТекстыЗапроса.Добавить(ТекстЗапроса);
ПараметрыТекстаЗапроса = ОбщегоНазначенияУТ.ПараметрыТекстаЗапросаРаспоряженийНакладных();
ПараметрыТекстаЗапроса.СформироватьВТ = Истина;
ПараметрыТекстаЗапроса.ИмяВТ = "РаспоряженияНакладной";
Если ОтобратьПоЗаказу Тогда
ОбщегоНазначенияУТ.ДобавитьЭлементОтбораВКоллекцию(
ПараметрыТекстаЗапроса.Отбор,
"Ссылка",
"&ЗаказКлиента",
"=");
КонецЕсли;
ТекстыЗапроса.Добавить(Обработчик.ТекстЗапросаРаспоряженияНакладной(ПараметрыТекстаЗапроса));
ТекстыЗапроса.Добавить(ТекстЗапросаОстаткиТоваровКОформлению("ТоварыКОформлению"));
ТекстыЗапроса.Добавить(ТекстЗапросаДублиТоваровКОформлению());
ТекстЗапроса =
"ВЫБРАТЬ
| ТоварыКОформлению.Распоряжение КАК ЗаказКлиента,
| ТоварыКОформлению.КодСтроки КАК КодСтроки,
| ТоварыКОформлению.Номенклатура КАК Номенклатура,
| ТоварыКОформлению.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ЗаказКлиентаТовары.Ссылка ЕСТЬ НЕ NULL
| И ЗаказКлиентаТовары.Обособленно
| ТОГДА ЗаказКлиентаТовары.Ссылка.Назначение
| КОГДА ЗаказПереработчику.Ссылка ЕСТЬ НЕ NULL
| И ЗаказПереработчику.ПередачаПереработчикуПоНазначениюЗаказа
| ТОГДА ЗаказПереработчику.НазначениеПередачи
| ИНАЧЕ Значение(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ВЫБОР
| КОГДА ЗаказКлиентаТовары.Ссылка ЕСТЬ НЕ NULL
| И ЗаказКлиентаТовары.Обособленно
| ТОГДА ЗаказКлиентаТовары.Ссылка.Назначение
| КОГДА ЗаказПереработчикуТовары.Ссылка ЕСТЬ НЕ NULL
| И ЗаказПереработчикуТовары.Обособленно
| ТОГДА ЗаказПереработчикуТовары.Назначение
| ИНАЧЕ Значение(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК НазначениеОтправителя,
| ТоварыКОформлению.Серия КАК Серия,
| ТоварыКОформлению.КОформлению КАК КОформлению,
| ВЫБОР
| КОГДА ЗаказКлиентаТовары.Ссылка ЕСТЬ НЕ NULL
| ТОГДА ЗаказКлиентаТовары.ВидЦены
| КОГДА ЗаказПереработчику.Ссылка ЕСТЬ НЕ NULL
| ТОГДА ЗаказПереработчику.ВидЦены
| КОНЕЦ КАК ВидЦены,
| ВЫБОР
| КОГДА ЗаказКлиентаТовары.Ссылка ЕСТЬ НЕ NULL
| ТОГДА ЗаказКлиентаТовары.Цена
| КОГДА ЗаказПереработчикуТовары.Ссылка ЕСТЬ НЕ NULL
| ТОГДА ЗаказПереработчикуТовары.Цена
| КОНЕЦ КАК Цена,
| ТоварыКОформлению.Склад КАК Склад,
| ВЫБОР
| КОГДА ЗаказКлиентаТовары.Ссылка ЕСТЬ НЕ NULL
| ТОГДА ЗаказКлиентаТовары.СрокПоставки
| КОГДА ЗаказПереработчикуТовары.Ссылка ЕСТЬ НЕ NULL
| ТОГДА ЗаказПереработчикуТовары.СрокПоставки
| КОНЕЦ КАК СрокПоставки,
| 0 КАК Распределено,
| ДублиТоваров.КоличествоДублей КАК КоличествоДублей
|ИЗ
| ТоварыКОформлению КАК ТоварыКОформлению
|
| ЛЕВОЕ СОЕДИНЕНИЕ ДублиТоваровКОформлению КАК ДублиТоваров
| ПО ТоварыКОформлению.Номенклатура = ДублиТоваров.Номенклатура
| И ТоварыКОформлению.Характеристика = ДублиТоваров.Характеристика
| И ТоварыКОформлению.Склад = ДублиТоваров.Склад
| И ТоварыКОформлению.Серия = ДублиТоваров.Серия
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
| ПО ЗаказКлиентаТовары.Ссылка = ТоварыКОформлению.Распоряжение
| И ЗаказКлиентаТовары.КодСтроки = ТоварыКОформлению.КодСтроки
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику2_5 КАК ЗаказПереработчику
| ПО ЗаказПереработчику.Ссылка = ТоварыКОформлению.Распоряжение
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ЗаказПереработчикуТовары
| ПО ЗаказПереработчикуТовары.Ссылка = ТоварыКОформлению.Распоряжение
| И ЗаказПереработчикуТовары.КодСтроки = ТоварыКОформлению.КодСтроки
|
|
|УПОРЯДОЧИТЬ ПО
| ТоварыКОформлению.Номенклатура,
| ТоварыКОформлению.Характеристика,
| ТоварыКОформлению.Склад,
| ТоварыКОформлению.Серия,
| ВЫБОР
| КОГДА ЗаказКлиентаТовары.Ссылка ЕСТЬ НЕ NULL
| И ЗаказКлиентаТовары.Обособленно
| ТОГДА ЗаказКлиентаТовары.Ссылка.Назначение
| КОГДА ЗаказПереработчику.Ссылка ЕСТЬ НЕ NULL
| И ЗаказПереработчику.ПередачаПереработчикуПоНазначениюЗаказа
| ТОГДА ЗаказПереработчику.НазначениеПередачи
| ИНАЧЕ Значение(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ,
| ВЫБОР
| КОГДА ЗаказКлиентаТовары.Ссылка ЕСТЬ НЕ NULL
| ТОГДА ЗаказКлиентаТовары.ДатаОтгрузки
| КОГДА ЗаказПереработчикуТовары.Ссылка ЕСТЬ НЕ NULL
| ТОГДА ЗаказПереработчикуТовары.ДатаОтгрузки
| КОНЕЦ,
| ТоварыКОформлению.Распоряжение,
| ТоварыКОформлению.КодСтроки
|";
ТекстыЗапроса.Добавить(ТекстЗапроса);
Запрос = Новый Запрос;
Запрос.Текст = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
Если ОбщегоНазначения.РежимОтладки() Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
КонецЕсли;
ИменаКолонок = "Номенклатура, Характеристика";
ТаблицаТоваров = Объект.Товары.Выгрузить(, ИменаКолонок);
Запрос.УстановитьПараметр("Регистратор", Объект.Ссылка);
Запрос.УстановитьПараметр("ЗаказКлиента", Объект.ЗаказКлиента);
Запрос.УстановитьПараметр("Партнер", Объект.Партнер);
Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
Запрос.УстановитьПараметр("Соглашение", Объект.Соглашение);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Договор", Объект.Договор);
Запрос.УстановитьПараметр("Склад", Объект.Склад);
Запрос.УстановитьПараметр("Валюта", Объект.Валюта);
Запрос.УстановитьПараметр("Сделка", Объект.Сделка);
Запрос.УстановитьПараметр("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
Запрос.УстановитьПараметр("Товары", ТаблицаТоваров);
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
Если РезультатЗапроса[2].Пустой() Тогда
Возврат;
КонецЕсли;
ТаблицаНераспределенныхТоваров = Новый ТаблицаЗначений();
ТаблицаНераспределенныхТоваров.Колонки.Добавить("ЗаказКлиента");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("КодСтроки");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Номенклатура");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Характеристика");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Назначение");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("НазначениеОтправителя");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Серия");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Количество");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("ВидЦены");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Цена");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Склад");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("СрокПоставки");
Выборка = РезультатЗапроса[4].Выбрать();
ИменаЗаполняемыхСвойств = "ЗаказКлиента, КодСтроки, Назначение, НазначениеОтправителя, СрокПоставки";
Пока Выборка.Следующий() Цикл
СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("КодСтроки", 0);
СтруктураПоиска.Вставить("Номенклатура", Выборка.Номенклатура);
СтруктураПоиска.Вставить("Характеристика", Выборка.Характеристика);
СтруктураПоиска.Вставить("Серия", Выборка.Серия);
Если ЗначениеЗаполнено(Форма.ВидЦенУчетный) Тогда
СтруктураПоиска.Вставить("ВидЦены", Выборка.ВидЦены);
КонецЕсли;
СтруктураПоиска.Вставить("Цена", Выборка.Цена);
СтруктураПоиска.Вставить("Склад", Выборка.Склад);
НайденныеСтроки = Объект.Товары.НайтиСтроки(СтруктураПоиска);
НераспределенноеКоличество = Выборка.КОформлению;
Если Выборка.КоличествоДублей < 2 Тогда
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
ЗаполнитьЗначенияСвойств(ТекСтрока, Выборка, ИменаЗаполняемыхСвойств);
НераспределенноеКоличество = НераспределенноеКоличество - ТекСтрока.Количество;
Если НераспределенноеКоличество <= 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
НайденаПодходящаяСтрока = Ложь;
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
Если ТекСтрока.Количество = Выборка.КОформлению Тогда
НайденаПодходящаяСтрока = Истина;
ЗаполнитьЗначенияСвойств(ТекСтрока, Выборка, ИменаЗаполняемыхСвойств);
Прервать;
КонецЕсли;
КонецЦикла;
Если Не НайденаПодходящаяСтрока Тогда
НоваяСтрока = ТаблицаНераспределенныхТоваров.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
НоваяСтрока.Количество = НераспределенноеКоличество;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ТаблицаНераспределенныхТоваров.Количество() > 0 Тогда
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить(
"ЗаполнитьДубликатыЗависимыхРеквизитов", Новый Структура("БезВозвратнойТары", "Сумма"));
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого НераспределеннаяСтрока Из ТаблицаНераспределенныхТоваров Цикл
СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("ЗаказКлиента", Неопределено);
СтруктураПоиска.Вставить("КодСтроки", 0);
СтруктураПоиска.Вставить("Номенклатура", НераспределеннаяСтрока.Номенклатура);
СтруктураПоиска.Вставить("Характеристика", НераспределеннаяСтрока.Характеристика);
СтруктураПоиска.Вставить("Серия", НераспределеннаяСтрока.Серия);
Если ЗначениеЗаполнено(Форма.ВидЦенУчетный) Тогда
СтруктураПоиска.Вставить("ВидЦены", НераспределеннаяСтрока.ВидЦены);
КонецЕсли;
СтруктураПоиска.Вставить("Цена", НераспределеннаяСтрока.Цена);
СтруктураПоиска.Вставить("Склад", НераспределеннаяСтрока.Склад);
СтрокиТовары = Объект.Товары.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаТовары Из СтрокиТовары Цикл
Если СтрокаТовары.Количество = НераспределеннаяСтрока.Количество Тогда
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, ИменаЗаполняемыхСвойств);
НераспределеннаяСтрока.Количество = 0;
ИначеЕсли СтрокаТовары.Количество > НераспределеннаяСтрока.Количество Тогда
Разница = СтрокаТовары.Количество - НераспределеннаяСтрока.Количество;
НоваяСтрокаТовары = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаТовары, СтрокаТовары);
НоваяСтрокаТовары.Количество = Разница;
СтрокиТовары.Добавить(НоваяСтрокаТовары);
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, ИменаЗаполняемыхСвойств + ",Количество");
НераспределеннаяСтрока.Количество = 0;
ОбрабатываемыеСтроки.Добавить(СтрокаТовары);
ОбрабатываемыеСтроки.Добавить(НоваяСтрокаТовары);
ИначеЕсли СтрокаТовары.Количество < НераспределеннаяСтрока.Количество Тогда
Разница = НераспределеннаяСтрока.Количество - СтрокаТовары.Количество;
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, ИменаЗаполняемыхСвойств);
НераспределеннаяСтрока.Количество = Разница;
КонецЕсли;
Если НераспределеннаяСтрока.Количество = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
Неопределено);
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
Функция ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Склад) Экспорт
Возврат Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовПродажи(Склад);
КонецФункции
#КонецОбласти
#КонецОбласти
#Область ОбщиеМетодыПоХозяйственнымОперациям
#Область ОбработчикиДействий
Функция ОбработчикДействий(ХозяйственнаяОперация = Неопределено) Экспорт
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
Обработчик = ПередачаНаКомиссию;
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5 Тогда
Обработчик = ПередачаПереработчику;
Иначе
Обработчик = Документы.ПередачаТоваровХранителю;
КонецЕсли;
Возврат Обработчик;
КонецФункции
Функция ОбработчикДействийПоТипуЗаказа(ТипЗаказа) Экспорт
Если ТипЗаказа = ПередачаПереработчику.ТипЗаказа() Тогда
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5;
Иначе
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи;
КонецЕсли;
Возврат ОбработчикДействий(ХозяйственнаяОперация);
КонецФункции
Функция ОбработчикДействийПоТипуОснованияАкта(ТипОснования) Экспорт
Если ТипОснования = ПередачаНаКомиссию.ТипОснованияАкта() Тогда
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию;
ИначеЕсли ТипОснования = ПередачаПереработчику.ТипОснованияАкта() Тогда
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5;
Иначе
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи;
КонецЕсли;
Возврат ОбработчикДействий(ХозяйственнаяОперация);
КонецФункции
#КонецОбласти
#Область Форма
Процедура НастроитьРеквизитХозяйственнаяОперация(Форма, Объект) Экспорт
ДоступныеХозяйственныеОперацииДокумента = ОбщегоНазначенияУТ.ДоступныеХозяйственныеОперации("Документ.ПередачаТоваровХранителю");
Элементы = Форма.Элементы;
Элементы.ХозяйственнаяОперация.СписокВыбора.Очистить();
Элементы.ХозяйственнаяОперация.СписокВыбора.ЗагрузитьЗначения(ПолучитьДоступныеОперацииПоДокументу());
Элементы.ХозяйственнаяОперация.Видимость = Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() > 1;
Если Не ЗначениеЗаполнено(Объект.ХозяйственнаяОперация)
И Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1 Тогда
Объект.ХозяйственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора[0].Значение;
ИначеЕсли ДоступныеХозяйственныеОперацииДокумента <> Неопределено
И ЗначениеЗаполнено(Объект.ХозяйственнаяОперация)
И ДоступныеХозяйственныеОперацииДокумента.Найти(Объект.ХозяйственнаяОперация) = Неопределено
И Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() > 0 Тогда
Объект.ХозяйственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора[0].Значение;
КонецЕсли;
КонецПроцедуры
Функция ПолучитьДоступныеОперацииПоДокументу() Экспорт
ДоступныеХозяйственныеОперацииДокумента = ОбщегоНазначенияУТ.ДоступныеХозяйственныеОперации("Документ.ПередачаТоваровХранителю");
СпсиокДоступныхОпераций = Новый Массив();
Если ПолучитьФункциональнуюОпцию("ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи")
И (ДоступныеХозяйственныеОперацииДокумента = Неопределено
Или ДоступныеХозяйственныеОперацииДокумента.Найти(Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи) <> Неопределено) Тогда
СпсиокДоступныхОпераций.Добавить(
Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьКомиссиюПриПродажах")
И (ДоступныеХозяйственныеОперацииДокумента = Неопределено
Или ДоступныеХозяйственныеОперацииДокумента.Найти(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию) <> Неопределено) Тогда
СпсиокДоступныхОпераций.Добавить(
Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне2_5")
И (ДоступныеХозяйственныеОперацииДокумента = Неопределено
Или ДоступныеХозяйственныеОперацииДокумента.Найти(Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5) <> Неопределено) Тогда
СпсиокДоступныхОпераций.Добавить(
Перечисления.ХозяйственныеОперации.ПередачаПереработчику2_5);
КонецЕсли;
Возврат СпсиокДоступныхОпераций;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецОбласти
#КонецЕсли