#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция ПредставлениеОбъектаНаОсновномЯзыке() Экспорт
КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
ПредставлениеОбъекта = НСтр(
"ru = 'Заявка на возврат товаров от клиента'",
КодОсновногоЯзыка);
Возврат ПредставлениеОбъекта;
КонецФункции
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Партнер", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Автор, ХозяйственнаяОперация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Соглашение", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение, ХозяйственнаяОперация";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Договор", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Организация, Контрагент", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "ДокументРеализации, Менеджер";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Подразделение", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Организация";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Договор, Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"БанковскийСчет", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор, Организация";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор, Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Касса", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Контрагент";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Договор, Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Контрагент";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"БанковскийСчетКонтрагента", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"ХозяйственнаяОперация", Параметры);
КонецПроцедуры
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("Взаиморасчеты");
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("Продажи");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СуммыДокументовВВалютахУчета");
МеханизмыДокумента.Добавить("АдресныйСклад");
МеханизмыДокумента.Добавить("ЦеныИСкидки");
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ЗаявкаНаВозвратТоваровОтКлиента") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаБонусныеБаллы(Запрос, ТекстыЗапроса, Регистры, ДокументСсылка);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры);
ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры);
ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Функция ТекстЗапросаРеквизитыДоставки() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Шапка.Номер КАК Номер,
| Шапка.Проведен КАК Проведен,
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Шапка.Партнер КАК ПолучательОтправитель,
| Шапка.ПеревозчикПартнер КАК Перевозчик,
| ВЫБОР КОГДА Шапка.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| И НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.Самовывоз)
| ИНАЧЕ Шапка.СпособДоставки
| КОНЕЦ КАК СпособДоставки,
| Шапка.ЗонаДоставки КАК Зона,
|
| ВЫБОР КОГДА СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаПоАдресу)
| ТОГДА Шапка.АдресДоставкиПеревозчика
| ИНАЧЕ Шапка.АдресДоставки
| КОНЕЦ КАК Адрес,
|
| ВЫБОР КОГДА СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаПоАдресу)
| ТОГДА Шапка.АдресДоставкиПеревозчикаЗначенияПолей
| ИНАЧЕ Шапка.АдресДоставкиЗначенияПолей
| КОНЕЦ КАК АдресЗначенияПолей,
|
| Шапка.ВремяДоставкиС КАК ВремяС,
| Шапка.ВремяДоставкиПо КАК ВремяПо,
| Шапка.ДополнительнаяИнформацияПоДоставке
| КАК ДополнительнаяИнформация,
| Шапка.Склад КАК Склад,
| Т.ДоставитьПолностью КАК ДоставитьПолностью,
| Шапка.ОсобыеУсловияПеревозки КАК ОсобыеУсловияПеревозки,
| Шапка.ОсобыеУсловияПеревозкиОписание КАК ОсобыеУсловияПеревозкиОписание,
| ЛОЖЬ КАК РазбиватьРасходныеОрдераПоРаспоряжениям
|
|ИЗ
| (ВЫБРАТЬ
| Т.Ссылка КАК Ссылка,
| МИНИМУМ(ВЫБОР
| КОГДА Т.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ) КАК ДоставитьПолностью
| ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК Т
| ГДЕ
| Т.Ссылка В (&Ссылки)
| И Т.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
|
| СГРУППИРОВАТЬ ПО
| Т.Ссылка
|
| ИМЕЮЩИЕ
| МАКСИМУМ(ВЫБОР
| КОГДА Т.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| ТОГДА ИСТИНА
| КОНЕЦ) = ИСТИНА
| ) КАК Т
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК Шапка
| ПО (Шапка.Ссылка = Т.Ссылка)";
Возврат ТекстЗапроса;
КонецФункции
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Команда = БизнесПроцессы.СогласованиеЗаявкиНаВозвратТоваровОтКлиента.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
Команда.Порядок = -1;
КонецЕсли;
Документы.АктВыполненныхРабот.ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании);
Документы.ВозвратТоваровОтКлиента.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Команда = Документы.ПоступлениеТоваровОтХранителя.ДобавитьКомандуСоздатьНаОснованииПоступлениеОтХранителя(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ВозвратОтХранителя,
ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
Команда = Документы.ПоступлениеТоваровОтХранителя.ДобавитьКомандуСоздатьНаОснованииПоступлениеОтКомиссионера(КомандыСозданияНаОсновании);
Если Команда <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(
Команда,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера,
ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
Документы.ДоверенностьВыданная.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЗаказНаПеремещение.ДобавитьКомандуСоздатьОбеспечивающийЗаказ(КомандыСозданияНаОсновании);
Документы.ЗаказПоставщику.ДобавитьКомандуСоздатьОбеспечивающийЗаказ(КомандыСозданияНаОсновании);
Документы.КорректировкаНазначенияТоваров.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЗаявкаНаРасходованиеДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ПоступлениеБезналичныхДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ПриходныйКассовыйОрдер.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ОтгрузкаТоваровКлиенту.ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании);
Документы.РеализацияТоваровУслуг.ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании);
Документы.РеализацияТоваровУслуг.ДобавитьКомандуСоздатьНаОснованииАктНаПередачуПрав(КомандыСозданияНаОсновании);
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.СчетНаОплатуКлиенту.ДобавитьКомандуСоздатьНаОснованииСчетаНаОплату(КомандыСозданияНаОсновании);
Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании);
Документы.ПоручениеЭкспедитору.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
СервисДоставкиПереопределяемый.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, Параметры);
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаявкаНаВозвратТоваровОтКлиента) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ЗаявкаНаВозвратТоваровОтКлиента);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьЗаявкиНаВозвратТоваровОтКлиентов";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КомандаОтчет = ВзаиморасчетыСервер.КарточкаРасчетовСКлиентом_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента,ФормаСписка";
КонецЕсли;
КомандаОтчет = Отчеты.ОтклоненияОтУсловийПродаж.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента";
КонецЕсли;
Если ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25() Тогда
Отчеты.ОценкаРентабельностиПродаж2_5.ДобавитьКомандуОтчета(КомандыОтчетов);
Иначе
Отчеты.ОценкаРентабельностиПродаж.ДобавитьКомандуОтчета(КомандыОтчетов);
КонецЕсли;
КомандаОтчет = Отчеты.РезультатыСогласованияЗаявкиНаВозвратТоваровОтКлиента.ДобавитьКомандуОтчетаПоДокументу(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента,ФормаСписка";
КонецЕсли;
КомандаОтчет = Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияЗаявокНаВозврат(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 1;
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента,ФормаСписка";
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.ЗадолженностьКлиентов_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента,ФормаСписка";
КонецЕсли;
КомандаОтчет = Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияЗаявокНаВозврат(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСпискаДокументов,ФормаСпискаСамообслуживание";
КомандаОтчет.Порядок = 1;
КонецЕсли;
КомандаОтчет = Обработки.СостояниеОбеспеченияЗаказов.ДобавитьКомандуСостояниеОбеспеченияСпискаЗаказовКлиента(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСпискаСамообслуживание";
КомандаОтчет.Порядок = 2;
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.ЗадолженностьКлиентов_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСпискаДокументов";
КомандаОтчет.Важность = "Обычное";
КомандаОтчет.Порядок = 1;
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.КарточкаРасчетовСКлиентом_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСпискаДокументов";
КомандаОтчет.Важность = "Обычное";
КомандаОтчет.Порядок = 2;
КонецЕсли;
КомандаОтчет = Отчеты.ОтклоненияОтУсловийПродаж.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСпискаДокументов";
КомандаОтчет.Важность = "СмТакже";
КомандаОтчет.Порядок = 1;
КонецЕсли;
КомандаОтчет = Отчеты.РезультатыСогласованияЗаявкиНаВозвратТоваровОтКлиента.ДобавитьКомандуОтчетаПоДокументу(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСпискаДокументов";
КомандаОтчет.Важность = "СмТакже";
КомандаОтчет.Порядок = 2;
КонецЕсли;
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
Функция СформироватьЗапросПроверкиПриСменеСтатуса(МассивДокументов, НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов[НовыйСтатус];
Если ДополнительныеПараметры <> Неопределено И ДополнительныеПараметры.Свойство("КонтрольВыполненияЗаявки") Тогда
ТекстЗапроса = ПродажиСервер.ТекстЗапросаКонтрольЗаказаПослеПроведения();
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| РаспоряженияНаОтгрузкуОбороты.Распоряжение КАК ЗаказКлиента
|ПОМЕСТИТЬ
| втОстаткиПоЗаказам
|ИЗ
| РегистрНакопления.РаспоряженияНаОтгрузкуИВозврат.Обороты(,,, Распоряжение В (&МассивДокументов)) КАК РаспоряженияНаОтгрузкуОбороты
|;
|ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР КОГДА ТаблицаДокументов.Статус = &Статус
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ВЫБОР КОГДА ТаблицаДокументов.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена)
| И &Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОшибкаСменыСтатусаОтклонена,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ИСТИНА КАК ЗаписьПроведением,
| ТаблицаДокументов.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет,
| ВЫБОР КОГДА втОстаткиПоЗаказам.ЗаказКлиента ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОстаткиПоЗаказу
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ТаблицаДокументов
|ЛЕВОЕ СОЕДИНЕНИЕ
| втОстаткиПоЗаказам
|ПО
| ТаблицаДокументов.Ссылка = втОстаткиПоЗаказам.ЗаказКлиента
|ГДЕ
| ТаблицаДокументов.Ссылка В (&МассивДокументов)
|";
Иначе
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР КОГДА ТаблицаДокументов.Статус = &Статус
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ВЫБОР КОГДА ТаблицаДокументов.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена)
| И &Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОшибкаСменыСтатусаОтклонена,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ИСТИНА КАК ЗаписьПроведением,
| ТаблицаДокументов.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)
|";
КонецЕсли;
КонтролироватьОтгрузку = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОтгрузки");
КонтролироватьРасчеты = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОплаты");
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Статус", ЗначениеНовогоСтатуса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Запрос.УстановитьПараметр("КонтролироватьОтгрузку", КонтролироватьОтгрузку);
Запрос.УстановитьПараметр("КонтролироватьРасчеты", КонтролироватьРасчеты);
Возврат Запрос;
КонецФункции
Функция ПроверкаПередСменойСтатуса(ВыборкаПроверки, НовыйСтатус, ДополнительныеПараметры) Экспорт
Отказ = Ложь;
Если ВыборкаПроверки.ОшибкаСменыСтатусаОтклонена Тогда
ТекстОшибки = НСтр("ru = 'У документа %Документ% статус ""%Статус%"" не установлен. Присвойте заявке статус ""К возврату""'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Документ%", ВыборкаПроверки.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Статус%", ВыборкаПроверки.ПредставлениеНовогоСтатуса);
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ВыборкаПроверки.Ссылка);
Отказ = Истина;
КонецЕсли;
Если ВыборкаПроверки.ЭтоЗаказКакСчет Тогда
ТекстОшибки = НСтр("ru='У документа %Документ% статус ""%Статус%"" не установлен, т.к. для заявок на возврат товаров от клиентов, созданных в режиме ""Заказ как счет"" статусы не применимы'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Документ%", ВыборкаПроверки.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Статус%", ВыборкаПроверки.ПредставлениеНовогоСтатуса);
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ВыборкаПроверки.Ссылка, , , Отказ);
КонецЕсли;
Если ДополнительныеПараметры = Неопределено Тогда
Возврат Не Отказ;
КонецЕсли;
Если ДополнительныеПараметры.Свойство("КонтрольВыполненияЗаявки")
И ВыборкаПроверки.ЕстьОстаткиПоЗаказу Тогда
ТекстОшибки = НСтр("ru = 'У документа %Документ% статус ""%Статус%"" не установлен, т.к. заказ поставлен не полностью'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Документ%", ВыборкаПроверки.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Статус%", ВыборкаПроверки.ПредставлениеНовогоСтатуса);
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки, ВыборкаПроверки.Ссылка);
Отказ = Истина;
КонецЕсли;
Возврат Не Отказ;
КонецФункции
#Область ТекстыЗапросаРаспоряженияНакладных
Процедура ДобавитьОтборПоКлючевымРеквизитамРаспоряжения(Отбор) Экспорт
КлючевыеРеквизиты = Новый Массив;
КлючевыеРеквизиты.Добавить("Организация");
КлючевыеРеквизиты.Добавить("Партнер");
КлючевыеРеквизиты.Добавить("Контрагент");
КлючевыеРеквизиты.Добавить("Договор");
КлючевыеРеквизиты.Добавить("Сделка");
КлючевыеРеквизиты.Добавить("Соглашение");
КлючевыеРеквизиты.Добавить("Валюта");
КлючевыеРеквизиты.Добавить("НаправлениеДеятельности");
КлючевыеРеквизиты.Добавить("ВернутьМногооборотнуюТару");
ОбщегоНазначенияУТ.ДобавитьОтборПоКлючевымРеквизитамРаспоряжения(КлючевыеРеквизиты, Отбор);
КонецПроцедуры
Функция ТекстЗапросаРаспоряженийНакладных(Параметры) Экспорт
ДобавитьОтборПоКлючевымРеквизитамРаспоряжения(Параметры.Отбор);
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаРаспоряжений.Ссылка КАК Распоряжение
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ТаблицаРаспоряжений
|ГДЕ
| ТаблицаРаспоряжений.Проведен
| И &ТекстОтбора
|";
Если Параметры.СформироватьВТ Тогда
ТекстЗапроса = СхемыЗапросов.УстановитьВыборкуРазрешенныхЗаписей(ТекстЗапроса, Истина);
ТекстЗапроса = СхемыЗапросов.УстановитьПомещениеВоВременнуюТаблицу(ТекстЗапроса, Параметры.ИмяВТ);
ТекстЗапроса = СхемыЗапросов.УстановитьИндексациюПолейЗапроса(ТекстЗапроса, "Распоряжение");
КонецЕсли;
ТекстЗапроса =
СтрЗаменить(ТекстЗапроса, "&ТекстОтбора", ОбщегоНазначенияУТ.ТекстОтбораПоКоллекцииОтборов(Параметры.Отбор));
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область РасчетСостояний
Процедура РассчитатьСостояние(Знач ЗаявкаНаВозвратТоваровОтКлиента,
Знач Договор,
СостояниеРасчетов,
ПроверитьЗаданияКОтражениюСостоянияЗаказов = Ложь) Экспорт
ЗаполнитьЗначенияСвойств(СостояниеРасчетов, ВзаиморасчетыКлиентСервер.СтруктураСостоянияРасчетов(Истина));
Если НЕ ЗначениеЗаполнено(ЗаявкаНаВозвратТоваровОтКлиента) ИЛИ НЕ ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента") Тогда
Возврат;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ВТ.Ссылка КАК Ссылка,
| ВТ.Проведен КАК Проведен,
| ВТ.Статус КАК Статус,
| ВТ.СуммаДокумента КАК СуммаДокумента,
| ВТ.ПорядокРасчетов КАК ПорядокРасчетов,
| ВТ.ОбъектРасчетов КАК ОбъектРасчетов
|ПОМЕСТИТЬ ВТ_ДокументЗаявка
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ВТ
|ГДЕ
| ВТ.Ссылка = &ДокументЗаявка
| И НЕ ВТ.ЭтоЗаказКакСчет
|;
|
|ВЫБРАТЬ
| ВЫБОР
| КОГДА (НЕ ДокументЗаявка.Проведен)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ПустаяСсылка)
| КОГДА НЕ (СостоянияЗаказовКлиентов.Состояние ЕСТЬ NULL)
| ТОГДА СостоянияЗаказовКлиентов.Состояние
| КОГДА ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.Выполнена)
| КОГДА ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.Отклонена)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.Выполнена)
| КОНЕЦ КАК Состояние,
| ВЫБОР
| КОГДА (НЕ ДокументЗаявка.Проведен)
| ТОГДА ЛОЖЬ
| КОГДА ДокументЗаявка.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена))
| ТОГДА ЛОЖЬ
| КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1)
| И &ТекущаяДата > СостоянияЗаказовКлиентов.ДатаСобытия
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СостояниеПросрочено,
| ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОплаты,0) КАК СуммаОплаты,
| ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОплаты,0) КАК ПроцентОплаты,
| ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОтгрузки,0) КАК СуммаОтгрузки,
| ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОтгрузки,0) КАК ПроцентОтгрузки,
| ЕСТЬNULL(СостоянияЗаказовКлиентов.ЕстьРасхожденияОрдерНакладная, ЛОЖЬ) КАК ЕстьРасхожденияОрдерНакладная
| ,&ПолеЕстьЗаданияКОтражениюСостоянияЗаказов
|ИЗ
| ВТ_ДокументЗаявка КАК ДокументЗаявка
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
|ПО
| СостоянияЗаказовКлиентов.Заказ = ДокументЗаявка.Ссылка
|ГДЕ
| &ПроверитьЗаданияКОтражениюСостоянияЗаказов
|";
ТекстЗапросаЕстьЗадания = "ВЫБРАТЬ ЛОЖЬ КАК ЕстьЗаданияКОтражениюСостоянияЗаказов";
Если ПроверитьЗаданияКОтражениюСостоянияЗаказов Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
",&ПолеЕстьЗаданияКОтражениюСостоянияЗаказов",
", ЛОЖЬ КАК ЕстьЗаданияКОтражениюСостоянияЗаказов");
ТекстЗапросаЕстьЗадания = СостоянияДокументов.ТекстЗапросаЕстьЗаданияКОтражениюСостоянияЗаказов("&ДокументЗаявка");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&ПроверитьЗаданияКОтражениюСостоянияЗаказов",
СтрШаблон("НЕ ИСТИНА В
| (%1)", ТекстЗапросаЕстьЗадания));
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",&ПолеЕстьЗаданияКОтражениюСостоянияЗаказов", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПроверитьЗаданияКОтражениюСостоянияЗаказов", "ИСТИНА");
КонецЕсли;
ТекстЗапросаРасчеты = "ВЫБРАТЬ 0 КАК СуммаКОплате";
Если ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.РасчетыСКлиентами) Тогда
ТекстЗапросаРасчеты = "
|ВЫБРАТЬ
| ВЫБОР
| КОГДА
| ДокументЗаявка.Проведен
| И (ДокументЗаявка.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов)
| ИЛИ ДокументЗаявка.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамНакладным))
| ТОГДА
| ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеОстаток,0)
| ИНАЧЕ
| 0
| КОНЕЦ КАК СуммаКОплате
|ИЗ
| ВТ_ДокументЗаявка КАК ДокументЗаявка
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.РасчетыСКлиентами.Остатки(,
| ОбъектРасчетов В (ВЫБРАТЬ ВТ.ОбъектРасчетов ИЗ ВТ_ДокументЗаявка КАК ВТ)
| ) КАК РасчетыСКлиентамиОстатки
|ПО
| ДокументЗаявка.ОбъектРасчетов = РасчетыСКлиентамиОстатки.ОбъектРасчетов
|";
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ТекстыЗапроса = Новый Массив;
ТекстыЗапроса.Добавить(ТекстЗапроса);
ТекстыЗапроса.Добавить(ТекстЗапросаРасчеты);
ТекстыЗапроса.Добавить(ТекстЗапросаЕстьЗадания);
ТекстЗапроса = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ДокументЗаявка", ЗаявкаНаВозвратТоваровОтКлиента);
Запрос.УстановитьПараметр("ТекущаяДата", НачалоДня(ТекущаяДатаСеанса()));
РезультатыЗапроса = Запрос.ВыполнитьПакет();
РезультатСостояний = РезультатыЗапроса[1];
Если НЕ РезультатСостояний.Пустой() Тогда
ВыборкаСостояний = РезультатСостояний.Выбрать();
Если ВыборкаСостояний.Следующий() Тогда
ЗаполнитьЗначенияСвойств(СостояниеРасчетов, ВыборкаСостояний);
КонецЕсли;
ВыборкаРасчетов = РезультатыЗапроса[2].Выбрать();
Если ВыборкаРасчетов.Следующий() Тогда
ЗаполнитьЗначенияСвойств(СостояниеРасчетов, ВыборкаРасчетов);
КонецЕсли;
ИначеЕсли ПроверитьЗаданияКОтражениюСостоянияЗаказов Тогда
ВыборкаЕстьЗадания = РезультатыЗапроса[3].Выбрать();
Если ВыборкаЕстьЗадания.Следующий() Тогда
ЗаполнитьЗначенияСвойств(СостояниеРасчетов, ВыборкаЕстьЗадания);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ТекстЗапросаДляРасчетаСостоянийЗаказов() Экспорт
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.ТекстУсловия =
"Распоряжение В (&МассивЗаказов)";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение";
ПараметрыФормированияТаблицы.Показатели = "КОформлениюПоВозвратам, ОформленоПоВозвратам";
ПараметрыФормированияТаблицы.Ресурсы = "Количество";
ПараметрыФормированияТаблицы.Индексы = "Распоряжение";
ПараметрыФормированияТаблицы.ИмяВременнойТаблицы = "ВТ_ЗаявкиНаВозвратОборотыРазвернутая";
ВТ_ЗаявкиНаВозвратОборотыРазвернутая =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
ТекстЗапроса = ВТ_ЗаявкиНаВозвратОборотыРазвернутая +
ОбщегоНазначения.РазделительПакетаЗапросов() + "
|ВЫБРАТЬ
|ВЫБОР
|
| КОГДА
| НЕ ДокументЗаявка.Проведен
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ПустаяСсылка)
|
| КОГДА
| ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована)
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяСогласование)
|
| КОГДА
| ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена)
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.Отклонена)
|
| КОГДА
| ((ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату)
| ИЛИ ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению)
| ИЛИ ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке))
| И ДокументЗаявка.СуммаЗамены = 0
| И ЕСТЬNULL(ЗаявкиНаВозвратОстатки.КОформлениюПоВозвратамКоличествоОборот, 0) -
| ЕСТЬNULL(ЗаявкиНаВозвратОстатки.ОформленоПоВозвратамКоличествоОборот, 0) <> 0)
| ИЛИ (ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату)
| И ДокументЗаявка.СуммаЗамены <> 0
| И ДокументЗаявка.СуммаАвансаДоОбеспечения = 0
| И ДокументЗаявка.СуммаПредоплатыДоОтгрузки = 0)
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяВыполнение)
|
| КОГДА
| ДокументЗаявка.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам) И
| (ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению) ИЛИ
| ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату)) И
| ДокументЗаявка.СуммаАвансаДоОбеспечения > 0 И
| ЕСТЬNULL(СостояниеВзаиморасчетов.ОплаченоПоЗаказу, 0) < ДокументЗаявка.СуммаАвансаДоОбеспечения И
| (ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) > 0 ИЛИ СостояниеВзаиморасчетов.Заказ ЕСТЬ NULL)
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяАвансИлиВозвратДоОбеспечения)
|
| КОГДА ВТОбеспечениеЗаказа.ЕстьКОбеспечению
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ГотоваКОбеспечению)
|
| КОГДА
| ДокументЗаявка.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам) И
| (ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату) ИЛИ
| ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению)) И
| ДокументЗаявка.СуммаПредоплатыДоОтгрузки > 0 И
| ЕСТЬNULL(СостояниеВзаиморасчетов.ОплаченоПоЗаказу, 0) < ДокументЗаявка.СуммаПредоплатыДоОтгрузки + ДокументЗаявка.СуммаАвансаДоОбеспечения И
| (ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) > 0 ИЛИ СостояниеВзаиморасчетов.Заказ ЕСТЬ NULL)
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяПредоплатаИлиВозвратДоОтгрузки)
|
| КОГДА НЕ ВтЧастичноВНаличии.Ссылка ЕСТЬ NULL
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяОбеспечение)
|
| КОГДА
| НЕ ВТОбеспечениеЗаказа.ВсеОтгрузить
| ИЛИ ВТРасхожденияОрдерНакладная.ТребуетсяОрдер
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ГотоваКОтгрузке)
|
| КОГДА
| (ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке)
| ИЛИ ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению))
| И ДокументЗаявка.СуммаЗамены > 0
| И (ЕСТЬNULL(СостояниеВзаиморасчетов.ОплаченоПоЗаказу, 0) >= ДокументЗаявка.СуммаПредоплатыДоОтгрузки + ДокументЗаявка.СуммаАвансаДоОбеспечения
| ИЛИ ЕСТЬNULL(СостояниеВзаиморасчетов.СуммаЗаказа, 0) - ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) >= ДокументЗаявка.СуммаПредоплатыДоОтгрузки + ДокументЗаявка.СуммаАвансаДоОбеспечения
| ИЛИ ДокументЗаявка.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам))
| И ((ЕСТЬNULL(ЗаказыКлиентовОстатки.КОформлениюКонечныйОстаток, 0) <> 0
| ИЛИ ЕСТЬNULL(ЗаказыКлиентовОстатки.ЗаказаноКонечныйОстаток, 0) <> 0)
| ИЛИ ЕСТЬNULL(ТоварыКОтгрузкеОстатки.КОтгрузкеОстаток, 0) <> 0)
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ВПроцессеОтгрузки)
|
| КОГДА
| ДокументЗаявка.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам) И
| ((ДокументЗаявка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована) И
| ДокументЗаявка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена) И
| ДокументЗаявка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату)) ) И
| ДокументЗаявка.СуммаЗамены - ДокументЗаявка.СуммаАвансаДоОбеспечения - ДокументЗаявка.СуммаПредоплатыДоОтгрузки > 0 И
| ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) > 0
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяОплатаИлиВозвратПослеОтгрузки)
|
| КОГДА
| ДокументЗаявка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена) И &КонтролироватьЗакрытиеЗаказа
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяВыполнение)
|
| КОГДА
| ДокументЗаявка.Статус В
| (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена))
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.Выполнена)
|КОНЕЦ КАК Состояние,
|ВЫБОР
|
| КОГДА
| НЕ ДокументЗаявка.Проведен
| ТОГДА
| ДАТАВРЕМЯ(1,1,1)
|
| КОГДА
| ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована)
| ТОГДА
| ДокументЗаявка.ДатаСогласования
|
| КОГДА
| ((ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату)
| ИЛИ ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению)
| ИЛИ ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке))
| И ДокументЗаявка.СуммаЗамены = 0)
| ИЛИ (ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату)
| И ДокументЗаявка.СуммаАвансаДоОбеспечения = 0
| И ДокументЗаявка.СуммаПредоплатыДоОтгрузки = 0)
| ТОГДА
| ДокументЗаявка.ДатаПервогоПоступления
|
| КОГДА
| ДокументЗаявка.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам) И
| (ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению)
| ИЛИ ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату))И
| ДокументЗаявка.СуммаАвансаДоОбеспечения > 0 И
| ЕСТЬNULL(СостояниеВзаиморасчетов.ОплаченоПоЗаказу, 0) < ДокументЗаявка.СуммаАвансаДоОбеспечения И
| (ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) > 0 ИЛИ СостояниеВзаиморасчетов.Заказ ЕСТЬ NULL)
| ТОГДА
| ДатыАктуальностиРасчетов.ДатаАктуальности
|
| КОГДА
| ДокументЗаявка.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам) И
| (ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату)
| ИЛИ ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению)) И
| ДокументЗаявка.СуммаПредоплатыДоОтгрузки > 0 И
| ЕСТЬNULL(СостояниеВзаиморасчетов.ОплаченоПоЗаказу, 0) < ДокументЗаявка.СуммаПредоплатыДоОтгрузки + ДокументЗаявка.СуммаАвансаДоОбеспечения И
| (ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) > 0 ИЛИ СостояниеВзаиморасчетов.Заказ ЕСТЬ NULL)
| ТОГДА
| ДатыАктуальностиРасчетов.ДатаАктуальности
|
| КОГДА
| (ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату) ИЛИ
| ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке) ИЛИ
| ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению)) И
| (ЕСТЬNULL(СостояниеВзаиморасчетов.ОплаченоПоЗаказу, 0) >= ДокументЗаявка.СуммаПредоплатыДоОтгрузки + ДокументЗаявка.СуммаАвансаДоОбеспечения
| ИЛИ ЕСТЬNULL(СостояниеВзаиморасчетов.СуммаЗаказа, 0) - ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) >= ДокументЗаявка.СуммаПредоплатыДоОтгрузки + ДокументЗаявка.СуммаАвансаДоОбеспечения
| ИЛИ ДокументЗаявка.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам)) И
| (ЕСТЬNULL(ЗаказыКлиентовОстатки.СуммаКонечныйОстаток, 0) > 0 ИЛИ ЕСТЬNULL(ЗаказыКлиентовОстатки.КОформлениюКонечныйОстаток, 0) > 0)
| ТОГДА
| ЕСТЬNULL(ДатыОтгрузкиЗаказовКлиентов.МинимальнаяДатаОтгрузки, ДокументЗаявка.ДатаОтгрузки)
|
| КОГДА
| ДокументЗаявка.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам) И
| (ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке)
| ИЛИ ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению)) И
| ДокументЗаявка.СуммаЗамены - ДокументЗаявка.СуммаАвансаДоОбеспечения - ДокументЗаявка.СуммаПредоплатыДоОтгрузки > 0 И
| ЕСТЬNULL(ЗаказыКлиентовОстатки.КОформлениюКонечныйОстаток, 0) = 0 И
| ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) > 0
| ТОГДА
| ДатыАктуальностиРасчетов.ДатаАктуальности
|
| КОГДА
| ДокументЗаявка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована)
| ТОГДА
| ДокументЗаявка.ДатаПервогоПоступления
| ИНАЧЕ
| ДАТАВРЕМЯ(1,1,1)
|КОНЕЦ КАК ДатаСобытия,
|
|ВЫБОР
| КОГДА (ДокументЗаявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента)
| ИЛИ ДокументЗаявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя))
| И ДокументЗаявка.СпособКомпенсации = ЗНАЧЕНИЕ(Перечисление.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары)
| ТОГДА ЕСТЬNULL(СостояниеВзаиморасчетов.СуммаОплаты, 0)
| ИНАЧЕ 0
|КОНЕЦ КАК СуммаОплаты,
|
|ВЫБОР
| КОГДА ДокументЗаявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента)
| ИЛИ ДокументЗаявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя)
| ТОГДА ЕСТЬNULL(СостояниеВзаиморасчетов.ПроцентОплаты, 0)
| ИНАЧЕ 0
|КОНЕЦ КАК ПроцентОплаты,
|
|ЕСТЬNULL(СостояниеВзаиморасчетов.СуммаОтгрузки, 0) КАК СуммаОтгрузки,
|
|ЕСТЬNULL(СостояниеВзаиморасчетов.ПроцентОтгрузки, 0) КАК ПроцентОтгрузки,
|
|ЕСТЬNULL(СостояниеВзаиморасчетов.СуммаДолга, 0) КАК СуммаДолга,
|
|ЕСТЬNULL(СостояниеВзаиморасчетов.ПроцентДолга, 0) КАК ПроцентДолга,
|
|ВЫБОР
| КОГДА
| ДокументЗаявка.Проведен
| И ДокументЗаявка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована)
| И ДокументЗаявка.СуммаЗамены > 0
| ТОГДА
| ЕСТЬNULL(ВТРасхожденияОрдерНакладная.ЕстьРасхожденияОрдерНакладная, ЛОЖЬ)
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЕстьРасхожденияОрдерНакладная,
|
| ДокументЗаявка.Ссылка КАК Заказ
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ДокументЗаявка
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВтСостояниеВзаиморасчетов КАК СостояниеВзаиморасчетов
|ПО
| ДокументЗаявка.Ссылка = СостояниеВзаиморасчетов.Заказ
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВТЗаказыКлиентовОстатки КАК ЗаказыКлиентовОстатки
|ПО
| ДокументЗаявка.Ссылка = ЗаказыКлиентовОстатки.ЗаказКлиента
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВТ_ЗаявкиНаВозвратОборотыРазвернутая КАК ЗаявкиНаВозвратОстатки
|ПО
| ДокументЗаявка.Ссылка = ЗаявкиНаВозвратОстатки.Распоряжение
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВТТоварыКОтгрузкеОстатки КАК ТоварыКОтгрузкеОстатки
|ПО
| ДокументЗаявка.Ссылка = ТоварыКОтгрузкеОстатки.ЗаказКлиента
|
|ЛЕВОЕ СОЕДИНЕНИЕ
| ДатыАктуальностиЗаказовКлиентов КАК ДатыАктуальностиРасчетов
|ПО
| ДокументЗаявка.ОбъектРасчетов = ДатыАктуальностиРасчетов.ОбъектРасчетов
|ЛЕВОЕ СОЕДИНЕНИЕ
| ДатыОтгрузкиЗаказовКлиентов КАК ДатыОтгрузкиЗаказовКлиентов
|ПО
| ДокументЗаявка.Ссылка = ДатыОтгрузкиЗаказовКлиентов.ЗаказКлиента
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВТОбеспечениеЗаказа КАК ВТОбеспечениеЗаказа
|ПО
| ВТОбеспечениеЗаказа.Ссылка = ДокументЗаявка.Ссылка
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВтЧастичноВНаличии КАК ВтЧастичноВНаличии
|ПО
| ВтЧастичноВНаличии.Ссылка = ДокументЗаявка.Ссылка
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВТРасхожденияОрдерНакладная КАК ВТРасхожденияОрдерНакладная
|ПО
| ДокументЗаявка.Ссылка = ВТРасхожденияОрдерНакладная.ЗаказКлиента
|ГДЕ
| ДокументЗаявка.Ссылка В (&МассивЗаказов)
| И Не ДокументЗаявка.ЭтоЗаказКакСчет
|
|";
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область Прочее
Функция РеквизитыДокумента(ДокументСсылка) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| ДанныеДокумента.СуммаЗамены КАК СуммаВзаиморасчетов,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов
|
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &ДокументСсылка
|");
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Дата = Выборка.Дата;
Организация = Выборка.Организация;
Партнер = Выборка.Партнер;
Контрагент = Выборка.Контрагент;
Договор = Выборка.Договор;
ПорядокРасчетов = Выборка.ПорядокРасчетов;
ВалютаВзаиморасчетов = Выборка.ВалютаВзаиморасчетов;
ХозяйственнаяОперация = ?(ЗначениеЗаполнено(Выборка.ХозяйственнаяОперация), Выборка.ХозяйственнаяОперация, Перечисления.ХозяйственныеОперации.ВозвратТоваровОтКлиента);
СуммаДокумента = Выборка.СуммаДокумента;
СуммаВзаиморасчетов = ?(Выборка.Проведен, Выборка.СуммаВзаиморасчетов, 0);
Иначе
Дата = Дата(1,1,1);
Организация = Справочники.Организации.ПустаяСсылка();
Партнер = Справочники.Партнеры.ПустаяСсылка();
Контрагент = Справочники.Контрагенты.ПустаяСсылка();
Договор = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПустаяСсылка();
ВалютаВзаиморасчетов = Справочники.Валюты.ПустаяСсылка();
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратТоваровОтКлиента;
СуммаДокумента = 0;
СуммаВзаиморасчетов = 0;
КонецЕсли;
СтруктураРеквизитов = Новый Структура;
СтруктураРеквизитов.Вставить("Дата", Дата);
СтруктураРеквизитов.Вставить("Организация", Организация);
СтруктураРеквизитов.Вставить("Партнер", Партнер);
СтруктураРеквизитов.Вставить("Контрагент", Контрагент);
СтруктураРеквизитов.Вставить("Договор", Договор);
СтруктураРеквизитов.Вставить("ПорядокРасчетов", ПорядокРасчетов);
СтруктураРеквизитов.Вставить("ВалютаВзаиморасчетов", ВалютаВзаиморасчетов);
СтруктураРеквизитов.Вставить("ХозяйственнаяОперация", ХозяйственнаяОперация);
СтруктураРеквизитов.Вставить("СуммаДокумента", СуммаДокумента);
СтруктураРеквизитов.Вставить("СуммаВзаиморасчетов", СуммаВзаиморасчетов);
Возврат СтруктураРеквизитов;
КонецФункции
Процедура ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(ХозяйственнаяОперация, МассивВсехРеквизитов, МассивРеквизитовОперации) Экспорт
МассивВсехРеквизитов = Новый Массив;
МассивВсехРеквизитов.Добавить("Подразделение");
МассивВсехРеквизитов.Добавить("Договор");
МассивВсехРеквизитов.Добавить("ВозвратПереданнойМногооборотнойТары");
МассивВсехРеквизитов.Добавить("ПредусмотренЗалогЗаТару");
МассивРеквизитовОперации = Новый Массив;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратТоваровОтКлиента Тогда
МассивРеквизитовОперации.Добавить("Подразделение");
МассивРеквизитовОперации.Добавить("Договор");
МассивРеквизитовОперации.Добавить("ВозвратПереданнойМногооборотнойТары");
МассивРеквизитовОперации.Добавить("ПредусмотренЗалогЗаТару");
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
МассивРеквизитовОперации.Добавить("Договор");
МассивРеквизитовОперации.Добавить("ВозвратПереданнойМногооборотнойТары");
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя Тогда
МассивРеквизитовОперации.Добавить("Договор");
ИначеЕсли ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
МассивРеквизитовОперации.Добавить("Подразделение");
КонецЕсли;
КонецПроцедуры
Функция РасчетыПоЗаявке(ДокументСсылка) Экспорт
СтруктураРасчетов = Новый структура();
СтруктураРасчетов.Вставить("НашДолг",0);
СтруктураРасчетов.Вставить("ДолгКлиента",0);
СтруктураРасчетов.Вставить("БылиРасчеты",Ложь);
Если Не ЗначениеЗаполнено(ДокументСсылка) Или
Не ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.РасчетыСКлиентами) Тогда
Возврат СтруктураРасчетов;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СУММА(ВЫБОР
| КОГДА РасчетыСКлиентами.СуммаОборот < 0
| ТОГДА -РасчетыСКлиентами.СуммаОборот
| ИНАЧЕ 0
| КОНЕЦ) КАК НашДолг,
| СУММА(ВЫБОР
| КОГДА РасчетыСКлиентами.СуммаОборот > 0
| ТОГДА РасчетыСКлиентами.СуммаОборот
| ИНАЧЕ 0
| КОНЕЦ) КАК ДолгКлиента,
| ИСТИНА КАК БылиРасчеты
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(,
| &ТекущаяДата, Регистратор, , ОбъектРасчетов.Объект = &ЗаявкаНаВозврат) КАК РасчетыСКлиентами
|ГДЕ
| РасчетыСКлиентами.СуммаОборот <> 0";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("ЗаявкаНаВозврат", ДокументСсылка);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
Если Не Выборка.ДолгКлиента = NULL Тогда
ЗаполнитьЗначенияСвойств(СтруктураРасчетов, Выборка);
КонецЕсли;
КонецЕсли;
Возврат СтруктураРасчетов;
КонецФункции
#КонецОбласти
Процедура ЗаполнитьПустыеДатыПоступления(Объект) Экспорт
Если Объект.ВозвращаемыеТовары.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если ЗакупкиВызовСервера.ДатаПоступленияПустая(Объект, "ВозвращаемыеТовары") Тогда
Если (Объект.ПоступлениеОднойДатой
И НЕ ЗначениеЗаполнено(Объект.ДатаПоступления))
ИЛИ (НЕ Объект.ПоступлениеОднойДатой) Тогда
Если ЗначениеЗаполнено(Объект.ЖелаемаяДатаПоступления)
И Объект.ЖелаемаяДатаПоступления >= Объект.Дата Тогда
Объект.ДатаПоступления = Объект.ЖелаемаяДатаПоступления;
Иначе
Объект.ДатаПоступления = ТекущаяДатаСеанса();
КонецЕсли;
КонецЕсли;
Для Каждого СтрокаТЧ Из Объект.ВозвращаемыеТовары Цикл
Если (Не ЗначениеЗаполнено(СтрокаТЧ.ДатаПоступления))
ИЛИ Объект.ПоступлениеОднойДатой Тогда
СтрокаТЧ.ДатаПоступления = Объект.ДатаПоступления;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "Склад,Дата,Статус,ЭтоЗаказКакСчет";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ПараметрыСерийСклада = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.Склад, Истина);
Возвращаемые = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
Возвращаемые.ПолноеИмяОбъекта = "Документ.ЗаявкаНаВозвратТоваровОтКлиента";
Возвращаемые.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры;
Возвращаемые.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям;
Возвращаемые.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаПоВозвратуОтКлиента);
Возвращаемые.СерииПриПланированииОтгрузкиУказываютсяВТЧСерии = Истина;
Возвращаемые.ПоляСвязи.Добавить("НоменклатураОприходование");
Возвращаемые.ПоляСвязи.Добавить("ХарактеристикаОприходование");
Возвращаемые.ПоляСвязи.Добавить("Назначение");
Возвращаемые.ПоляСвязи.Добавить("Склад");
Возвращаемые.ИмяТЧТовары = "ВозвращаемыеТовары";
Возвращаемые.ИмяТЧСерии = "ВозвращаемыеСерии";
Возвращаемые.ЭтоНакладная = Истина;
Возвращаемые.Дата = Объект.Дата;
Заменяющие = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
Заменяющие.ПолноеИмяОбъекта = "Документ.ЗаявкаНаВозвратТоваровОтКлиента";
Заменяющие.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры
И Не Объект.ЭтоЗаказКакСчет;
Заменяющие.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям
И Не Объект.ЭтоЗаказКакСчет;
Заменяющие.ПоляСвязи.Добавить("Склад");
Заменяющие.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаКлиенту);
Заменяющие.ИмяТЧТовары = "ЗаменяющиеТовары";
Заменяющие.ИмяТЧСерии = "ЗаменяющиеТовары";
Заменяющие.ЭтоЗаказ = Истина;
Заменяющие.ПланированиеОтгрузки = Истина;
Заменяющие.РегистрироватьСерии = Ложь;
Заменяющие.Дата = Объект.Дата;
ПараметрыУказанияСерий = Новый Структура;
ПараметрыУказанияСерий.Вставить("Возвращаемые",Возвращаемые);
ПараметрыУказанияСерий.Вставить("Заменяющие",Заменяющие);
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
Если ПараметрыУказанияСерий.СкладскиеОперации[0] = Перечисления.СкладскиеОперации.ПриемкаПоВозвратуОтКлиента Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.НоменклатураОприходование,
| Товары.ХарактеристикаОприходование,
| Товары.Серия,
| Товары.Назначение,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.НоменклатураОприходование,
| Товары.ХарактеристикаОприходование,
| Товары.Назначение,
| СУММА(Товары.Количество) КАК Количество,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры КАК ВидНоменклатуры
|ПОМЕСТИТЬ ТоварыДляЗапроса
|ИЗ
| Товары КАК Товары
|
|СГРУППИРОВАТЬ ПО
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.НоменклатураОприходование,
| Товары.ХарактеристикаОприходование,
| Товары.Назначение,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры
|;
|
|
|ВЫБРАТЬ
| Серии.Склад,
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.НоменклатураОприходование,
| Серии.ХарактеристикаОприходование,
| Серии.Назначение,
| Серии.Количество
|ПОМЕСТИТЬ Серии
|ИЗ
| &Серии КАК Серии
|;
|
|
|ВЫБРАТЬ
| Серии.Склад,
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.НоменклатураОприходование,
| Серии.ХарактеристикаОприходование,
| Серии.Назначение,
| СУММА(Серии.Количество) КАК Количество
|ПОМЕСТИТЬ СерииДляЗапроса
|ИЗ
| Серии КАК Серии
|
|СГРУППИРОВАТЬ ПО
| Серии.Склад,
| Серии.Номенклатура,
| Серии.Характеристика,
| Серии.НоменклатураОприходование,
| Серии.ХарактеристикаОприходование,
| Серии.Назначение
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ТОГДА 0
| ИНАЧЕ ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА НЕ Склады.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ &Дата < Склады.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 10
| ИНАЧЕ 9
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтбора
| ТОГДА ВЫБОР
| КОГДА НЕ Склады.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ &Дата < Склады.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 8
| ИНАЧЕ 7
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемке
| И (НЕ Склады.ИспользоватьОрдернуюСхемуПриПоступлении
| ИЛИ &Дата < Склады.ДатаНачалаОрдернойСхемыПриПоступлении)
| И ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПриемкеПоВозвратуОтКлиента
| ТОГДА ВЫБОР
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьОстаткиСерий
| ТОГДА ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 4
| ИНАЧЕ 3
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыДляЗапроса.Количество = ЕСТЬNULL(СерииДляЗапроса.Количество, 0)
| И ТоварыДляЗапроса.Количество > 0
| ТОГДА 2
| ИНАЧЕ 1
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыДляЗапроса КАК ТоварыДляЗапроса
| ПО Товары.Номенклатура = ТоварыДляЗапроса.Номенклатура
| И Товары.Характеристика = ТоварыДляЗапроса.Характеристика
| И Товары.НоменклатураОприходование = ТоварыДляЗапроса.НоменклатураОприходование
| И Товары.ХарактеристикаОприходование = ТоварыДляЗапроса.ХарактеристикаОприходование
| И Товары.Назначение = ТоварыДляЗапроса.Назначение
| И Товары.Склад = ТоварыДляЗапроса.Склад
| ЛЕВОЕ СОЕДИНЕНИЕ СерииДляЗапроса КАК СерииДляЗапроса
| ПО ТоварыДляЗапроса.Номенклатура = СерииДляЗапроса.Номенклатура
| И ТоварыДляЗапроса.Характеристика = СерииДляЗапроса.Характеристика
| И ТоварыДляЗапроса.НоменклатураОприходование = СерииДляЗапроса.НоменклатураОприходование
| И ТоварыДляЗапроса.ХарактеристикаОприходование = СерииДляЗапроса.ХарактеристикаОприходование
| И ТоварыДляЗапроса.Назначение = СерииДляЗапроса.Назначение
| И ТоварыДляЗапроса.Склад = СерииДляЗапроса.Склад
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ПО (ПолитикиУчетаСерий.Склад = ТоварыДляЗапроса.Склад)
| И ТоварыДляЗапроса.ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ПолитикиУчетаСерий.Склад = Склады.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Иначе
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Серия,
| Товары.Отменено,
| Товары.ВариантОбеспечения,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА Товары.Отменено
| ИЛИ ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ИЛИ НЕ Товары.ВариантОбеспечения В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| КОГДА Товары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ТОГДА 15
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| КОГДА Товары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ТОГДА 11
| ИНАЧЕ 9
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ПО (ПолитикиУчетаСерий.Склад = Товары.Склад)
| И ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
КонецЕсли;
Возврат ТекстЗапроса;
КонецФункции
Функция ПроверитьВозможностьВводаНаОсновании(ЗаказКлиента, Статус = Неопределено, ЕстьОшибкиПроведен = Ложь,
КВозврату = Ложь) Экспорт
ЭтоЗаказКакСчет = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗаказКлиента, "ЭтоЗаказКакСчет");
МассивДопустимыхСтатусов = ДопустимыеСтатусыВводаНаОсновании("", КВозврату, Не ЭтоЗаказКакСчет);
ЕстьОшибкиСтатус = МассивДопустимыхСтатусов.Найти(Статус) = Неопределено;
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ЗаказКлиента,
Статус,
ЕстьОшибкиПроведен,
ЕстьОшибкиСтатус,
МассивДопустимыхСтатусов);
КонецФункции
Функция ДопустимыеСтатусыВводаНаОсновании(ИмяДокумента = "", КВозврату = Ложь,
ИспользоватьРасширенныеВозможностиЗаказаКлиента = Неопределено) Экспорт
МассивДопустимыхСтатусов = Новый Массив;
Если ИспользоватьРасширенныеВозможностиЗаказаКлиента = Неопределено Тогда
ИспользоватьРасширенныеВозможностиЗаказаКлиента = ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
КонецЕсли;
Если ИмяДокумента = "ПоступлениеТоваровОтХранителя" Тогда
КВозврату = Истина;
КонецЕсли;
Если ИспользоватьРасширенныеВозможностиЗаказаКлиента Тогда
Если КВозврату Тогда
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента") Тогда
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению);
Иначе
Если КВозврату Тогда
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению);
КонецЕсли;
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОплаты")
ИЛИ ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОтгрузки") Тогда
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена);
КонецЕсли;
Иначе
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована);
КонецЕсли;
Возврат МассивДопустимыхСтатусов;
КонецФункции
Функция ВыполнитьПроверкиРаспоряжения(Распоряжение, Склад) Экспорт
СтруктураВозврата = Новый Структура;
СтруктураВозврата.Вставить("Операция", "");
СтруктураВозврата.Вставить("ТекстОшибки", "");
СтруктураВозврата.Вставить("ГруппаСкладовВРаспоряжении", Ложь);
СтруктураВозврата.Вставить("ДатаОтгрузки");
СтруктураВозврата.Вставить("ИспользоватьОрдернуюСхему");
Если Не ЗначениеЗаполнено(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Распоряжение, "Склад")) Тогда
ТекстОшибки = НСтр("ru = 'Не заполнено поле ""Склад"" в документе ""%Распоряжение%"". Невозможно создать ордер.'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Распоряжение%", Строка(Распоряжение));
СтруктураВозврата.ТекстОшибки = ТекстОшибки;
СтруктураВозврата.Операция = "Отказ";
Возврат СтруктураВозврата
КонецЕсли;
СтруктураГруппыСкладов = Новый Структура("ЭтоГруппа", "Склад.ЭтоГруппа");
ЗначениеГруппыСкладов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Распоряжение, СтруктураГруппыСкладов);
ГруппаСкладовВРаспоряжении = ЗначениеГруппыСкладов.ЭтоГруппа;
СтруктураВозврата.ГруппаСкладовВРаспоряжении = ГруппаСкладовВРаспоряжении;
Реквизиты = Новый Структура("ДатаОтгрузки, Склад, ИспользоватьОрдернуюСхему", "Дата");
Если Не ГруппаСкладовВРаспоряжении Тогда
Реквизиты.Склад = "Склад";
Реквизиты.ИспользоватьОрдернуюСхему ="
|ВЫБОР
| КОГДА ЕстьNULL(Склад.ИспользоватьОрдернуюСхемуПриОтгрузке, Ложь)
| И Дата >= ЕстьNULL(Склад.ДатаНачалаОрдернойСхемыПриОтгрузке, ДАТАВРЕМЯ(1,1,1))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
|КОНЕЦ";
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Распоряжение, Реквизиты);
ИспользоватьОрдернуюСхему = ЗначенияРеквизитов.ИспользоватьОрдернуюСхему;
СтруктураВозврата.ИспользоватьОрдернуюСхему = ИспользоватьОрдернуюСхему;
Если ИспользоватьОрдернуюСхему Тогда
Склад = ЗначенияРеквизитов.Склад;
ЗаполнитьЗначенияСвойств(СтруктураВозврата, ЗначенияРеквизитов, "ДатаОтгрузки");
Иначе
ТекстОшибки = НСтр("ru = 'Для склада ""%Склад%"" оформление расходных ордеров не требуется.
|Заполнение документа не выполнено.'");
СтруктураВозврата.ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Склад%", Строка(ЗначенияРеквизитов.Склад));
СтруктураВозврата.Операция = "Отказ";
Возврат СтруктураВозврата;
КонецЕсли;
КонецЕсли;
Статус = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Распоряжение, "Статус");
ПроверитьВозможностьВводаНаОсновании(Распоряжение, Статус);
Если ГруппаСкладовВРаспоряжении Тогда
Если Не ЗначениеЗаполнено(Склад) Тогда
МассивСкладов = Документы.РасходныйОрдерНаТовары.ОрдерныеСкладыПриОтгрузке(Распоряжение, Неопределено);
Если МассивСкладов.Количество() = 0 Тогда
ТекстОшибки = НСтр("ru = 'Для складов документа ""%Распоряжение%"" оформление приходных ордеров не требуется.
|Заполнение документа не выполнено.'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Распоряжение%", Строка(Распоряжение));
СтруктураВозврата.ТекстОшибки = ТекстОшибки;
СтруктураВозврата.Операция = "Отказ";
Возврат СтруктураВозврата;
ИначеЕсли МассивСкладов.Количество() = 1 Тогда
Склад = МассивСкладов[0];
Иначе
СтруктураВозврата.Операция = "Возврат";
Возврат СтруктураВозврата;
КонецЕсли;
Иначе
СтруктураВозврата.Операция = "Возврат";
Возврат СтруктураВозврата;
КонецЕсли;
КонецЕсли;
Возврат СтруктураВозврата
КонецФункции
Функция СтруктураСостояниеВыполненияДокумента() Экспорт
СтруктураСостояние = Отчеты.СостояниеВыполненияДокументов.ИнициализироватьСтруктуруСостояниеВыполненияДокумента();
СтруктураСостояние.Вставить("ВыводитьТаблицуРасчетыСКлиентами", 1);
СтруктураСостояние.Вставить("ВыводитьТаблицыВозврат", 3);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтмененоПоступление", 4);
СтруктураСостояние.Вставить("ВыводитьТаблицыОбеспечение", 5);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтгрузка", 6);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтмененоОтгрузка", 7);
СтруктураСостояние.Вставить("ЭтоЗаказ", Истина);
СтруктураСостояние.Вставить("СкладВШапке", Истина);
СтруктураСостояние.Вставить("ЕстьСуммовыеПоказателиОтгрузки", Истина);
СтруктураСостояние.Вставить("ЕстьСуммовыеПоказателиПоступления", Истина);
СтруктураСостояние.Вставить("ЕстьПричиныОтменыОтгрузки", Истина);
СтруктураСостояние.Вставить("ИмяТЧТоварыОтгрузка", "ЗаменяющиеТовары");
СтруктураСостояние.Вставить("ИмяТЧТоварыПоступление", "ВозвращаемыеТовары");
СтруктураСостояние.Вставить("ТекстТоварУслугаОтгрузка", НСтр("ru = 'Заменяющие товары'"));
СтруктураСостояние.Вставить("ТекстТоварУслугаПоступление", НСтр("ru = 'Возвращаемые товары'"));
СтруктураСостояние.Вставить("ИмяРегистраОтгрузкаУслуг", "РаспоряженияНаОтгрузкуИВозврат");
Возврат СтруктураСостояние
КонецФункции
Функция ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект) Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСПродажи();
ПараметрыЗаполнения.Организация = Объект.Организация;
ПараметрыЗаполнения.Дата = Объект.Дата;
ПараметрыЗаполнения.Склад = Объект.Склад;
ПараметрыЗаполнения.Договор = Объект.Договор;
ПараметрыЗаполнения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
ПараметрыЗаполнения.Подразделение = Объект.Подразделение;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратТоваровОтКлиента Или
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
ПараметрыЗаполнения.ВозвратТоваровОтКлиента = Истина;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
ПараметрыЗаполнения.ВозвратТоваровОтКомиссионера = Истина;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя Тогда
ПараметрыЗаполнения.ВозвратСХранения = Истина;
КонецЕсли;
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ПараметрыВзаиморасчеты(ДанныеЗаполнения = Неопределено) Экспорт
Если ОбщегоНазначения.ЗначениеСсылочногоТипа(ДанныеЗаполнения) Тогда
СтруктураДанныеЗаполнения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
ДанныеЗаполнения,
"ХозяйственнаяОперация,
|СпособКомпенсации,
|ЭтоЗаказКакСчет");
ХозяйственнаяОперация = СтруктураДанныеЗаполнения.ХозяйственнаяОперация;
СпособКомпенсации = СтруктураДанныеЗаполнения.СпособКомпенсации;
ЭтоЗаказКакСчет = СтруктураДанныеЗаполнения.ЭтоЗаказКакСчет;
ИначеЕсли ДанныеЗаполнения = Неопределено Тогда
ХозяйственнаяОперация = Неопределено;
СпособКомпенсации = Неопределено;
ЭтоЗаказКакСчет = Неопределено;
Иначе
ХозяйственнаяОперация = ДанныеЗаполнения.ХозяйственнаяОперация;
СпособКомпенсации = ДанныеЗаполнения.СпособКомпенсации;
ЭтоЗаказКакСчет = ДанныеЗаполнения.ЭтоЗаказКакСчет;
КонецЕсли;
ИспользоватьРасширенныеВозможностиЗаказаКлиента = ?(ЭтоЗаказКакСчет = Неопределено,
ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента"),
Не ЭтоЗаказКакСчет);
СтруктураПараметров = ВзаиморасчетыСервер.ПараметрыМеханизма();
СтруктураПараметров.ЭтоЗаказ = СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары;
СтруктураПараметров.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом;
СтруктураПараметров.ИзменяетРасчетыСтрокой =
"((ИсточникДанных.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| ИЛИ ИсточникДанных.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя))
| И ИсточникДанных.СпособКомпенсации = ЗНАЧЕНИЕ(Перечисление.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары)
| ИЛИ ИсточникДанных.СпособКомпенсации = ЗНАЧЕНИЕ(Перечисление.СпособыКомпенсацииВозвратовТоваров.ВернутьДенежныеСредства))";
СтруктураПараметров.ИзменяетПланОплаты = (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратТоваровОтКлиента
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя)
И (СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары
ИЛИ СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ВернутьДенежныеСредства);
СтруктураПараметров.ИзменяетПланОтгрузкиПоставки = (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратТоваровОтКлиента
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя)
И СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары
И ИспользоватьРасширенныеВозможностиЗаказаКлиента;
СтруктураПараметров.КурсЧислитель = "";
СтруктураПараметров.КурсЗнаменатель = "";
СтруктураПараметров.ГрафикОплаты = "";
СтруктураПараметров.ПутьКДаннымТЧ = "Объект.ЗаменяющиеТовары";
СтруктураПараметров.ПутьКДаннымТЧЭтапыОплаты = "Объект.ЭтапыГрафикаОплаты";
СтруктураПараметров.НадписьЭтапыОплаты = "Форма.НадписьЭтапыОплаты";
СтруктураПараметров.ИсточникСуммТабличнаяЧасть = Истина;
СтруктураПараметров.ДатаОтгрузки = "Объект.ЗаменяющиеТовары.ДатаОтгрузки";
СтруктураПараметров.ЗаказКакСчет = НЕ ИспользоватьРасширенныеВозможностиЗаказаКлиента;
СтруктураПараметров.ОтгружатьОднойДатой = "Объект.НеОтгружатьЧастями";
СтруктураПараметров.Менеджер = "Объект.Менеджер";
СтруктураПараметров.БанковскийСчетОрганизации = "Объект.БанковскийСчет";
СтруктураПараметров.СуммаДокументаФорма = "Форма.СуммаЗаменяющихТоваров";
СтруктураПараметров.СуммаЗалогаЗаТаруФорма = "Форма.СуммаЗалогаЗаТару";
СтруктураПараметров.ЭлементыФормы.НадписьЭтапы = "ДекорацияЭтапыОплаты";
СтруктураПараметров.ЭлементыФормы.НадписьРасчеты = "ДекорацияСостояниеРасчетов";
СтруктураПараметров.ЭлементыФормы.ОграничениеЗадолженностиТекст = "ДекорацияОграничениеЗадолженности";
СтруктураПараметров.ЭлементыФормы.ОграничениеЗадолженностиКартинка = "КартинкаОтгрузкаЗапрещена";
СтруктураПараметров.ЭлементыФормы.ЗачетОплаты = "ЗачетОплатыФорма";
СтруктураПараметров.ЭлементыФормы.ГруппаФинансовогоУчета = "ГруппаФинансовогоУчета";
СтруктураПараметров.ЭлементыФормы.НаправлениеДеятельности = "НаправлениеДеятельности";
СтруктураПараметров.ОбъектРасчетов = "Объект.ОбъектРасчетов";
СтруктураПараметров.ВернутьМногооборотнуюТару = "Объект.ВернутьМногооборотнуюТару";
СтруктураПараметров.ТребуетсяЗалогЗаТару = "Объект.ТребуетсяЗалогЗаТару";
Возврат СтруктураПараметров;
КонецФункции
Процедура ПередВыполнениемДействийВСпискеЗаказов(Заказы, КодДействия, СообщенияПользователю) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Заказы", Заказы);
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК Таблица
|ГДЕ
| Таблица.Ссылка В (&Заказы)
| И НЕ Таблица.ЭтоЗаказКакСчет
|;
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК Таблица
|ГДЕ
| Таблица.Ссылка В (&Заказы)
| И Таблица.ЭтоЗаказКакСчет";
ПакетЗапросов = Запрос.ВыполнитьПакет();
ЗаказыКакСчет = ПакетЗапросов[1].Выгрузить().ВыгрузитьКолонку("Ссылка");
Текст = НСтр("ru = 'Для %1 команда не может быть выполнена, так как документ был создан в режиме ""Заказ как счет""'");
Для Каждого Ссылка Из ЗаказыКакСчет Цикл
СообщенияПользователю.Добавить(Новый Структура("Текст,Ссылка", СтрШаблон(Текст, Ссылка), Ссылка));
КонецЦикла;
Если ЗаказыКакСчет.Количество() > 0 Тогда
Заказы = ПакетЗапросов[0].Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецЕсли;
КонецПроцедуры
Функция ДоступныеОстаткиПараметрыВстраивания(ДокументОбъект = Неопределено) Экспорт
ПараметрыВстраивания = ОбеспечениеВДокументахСервер.ДоступныеОстаткиПараметрыВстраивания();
ПараметрыВстраивания.ИспользоватьПодпискиНаСобытия.ПередВыполнениемДействийВСпискеЗаказов = Истина;
ПараметрыВстраивания.ОчищаемыеРеквизиты = "КодСтроки";
ПараметрыВстраивания.ИмяТаблицыФормы = "ЗаменяющиеТовары";
ЭлементыФормы = ПараметрыВстраивания.УсловноеОформление.ЭлементыФормы;
ЭлементыФормы.ВариантОбеспечения = "ЗаменяющиеТоварыВариантОбеспечения";
ЭлементыФормы.Доступно = "ЗаменяющиеТоварыДоступно";
ЭлементыФормы.Серия = "ЗаменяющиеТоварыСерия";
ЭлементыФормы.Обособленно = "ЗаменяющиеТоварыОбособленно";
ПутиКДанным = ПараметрыВстраивания.УсловноеОформление.ПутиКДанным;
ПутиКДанным.ПерераспределятьЗапасы = "Объект.ЗаменяющиеТовары.ПерераспределятьЗапасы";
ПутиКДанным.ЗапретРедактирования = "Объект.ЗаменяющиеТовары.Отменено";
ПутиКДанным.ТипНоменклатуры = "Объект.ЗаменяющиеТовары.ТипНоменклатуры";
Связи = ПараметрыВстраивания.СвязиПараметровВыбораВариантаОбеспечения;
Связи.Доступно = "Элементы.ЗаменяющиеТовары.ТекущиеДанные.Доступно";
Связи.КоличествоУпаковок = "Элементы.ЗаменяющиеТовары.ТекущиеДанные.КоличествоУпаковок";
Связи.Количество = "Элементы.ЗаменяющиеТовары.ТекущиеДанные.Количество";
Связи.ОтгружатьЕслиДоступно = "Элементы.ЗаменяющиеТовары.ТекущиеДанные.ОтгружатьЕслиДоступно";
Связи.Обособленно = "Элементы.ЗаменяющиеТовары.ТекущиеДанные.Обособленно";
Связи.ТипНоменклатуры = "Элементы.ЗаменяющиеТовары.ТекущиеДанные.ТипНоменклатуры";
Связи.Упаковка = "Элементы.ЗаменяющиеТовары.ТекущиеДанные.Упаковка";
Связи.Номенклатура = "Элементы.ЗаменяющиеТовары.ТекущиеДанные.Номенклатура";
Связи.ВариантОбеспечения = "Элементы.ЗаменяющиеТовары.ТекущиеДанные.ВариантОбеспечения";
Связи.Склад = "Элементы.ЗаменяющиеТовары.ТекущиеДанные.Склад";
Связи.НесколькоСкладов = "СкладГруппа";
ПараметрыВстраивания.ИмяРегистраОформленияОтгрузки = "РаспоряженияНаОтгрузкуИВозврат";
ПараметрыВстраивания.ИмяОбъекта = "Документ.ЗаявкаНаВозвратТоваровОтКлиента";
ПараметрыВстраивания.ИмяТаблицы = "Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары";
ПараметрыВстраивания.ОписаниеПолученияДанныхДокумента =
"ВЫБРАТЬ
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Подразделение КАК Подразделение,
| ТабЧасть.Склад КАК Склад,
| Реквизиты.Назначение КАК Назначение,
| Реквизиты.Ссылка КАК ЗаказНаОтгрузку,
| ТабЧасть.ВариантОбеспечения КАК ВариантОбеспечения,
| ТабЧасть.Обособленно КАК Обособленно,
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.КоличествоУпаковок КАК КоличествоУпаковок,
| ТабЧасть.Упаковка КАК Упаковка,
| Реквизиты.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена)
| ) КАК ГотовКОбеспечению,
| Реквизиты.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена)
| ) КАК ГотовКОтгрузке,
| ВЫБОР КОГДА Реквизиты.НеОтгружатьЧастями ТОГДА
| Реквизиты.ДатаОтгрузки
| ИНАЧЕ
| ТабЧасть.ДатаОтгрузки
| КОНЕЦ КАК ЖелаемаяДатаОтгрузки,
| ТабЧасть.Серия КАК Серия,
| ТабЧасть.КодСтроки КАК КодСтроки,
| ТабЧасть.Отменено КАК Отменено,
| ТабЧасть.НомерСтроки КАК НомерСтроки,
| Реквизиты.Ссылка КАК Регистратор,
| Реквизиты.Дата КАК ДатаДокумента,
| Реквизиты.Склад КАК ГруппаСкладов,
| Реквизиты.Приоритет КАК Приоритет,
| ВЫБОР КОГДА Реквизиты.НеОтгружатьЧастями ТОГДА
| Реквизиты.ДатаОтгрузки
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ДатаОтгрузкиВсехСтрокОднойДатой
|ПОМЕСТИТЬ ВременнаяТаблицаДанныхДокумента
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ТабЧасть
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК Реквизиты
| ПО ИСТИНА";
ЗаменяющиеТовары = Новый Структура();
ЗаменяющиеТовары.Вставить("НомерСтроки", Новый ОписаниеТипов("Число"));
ЗаменяющиеТовары.Вставить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ЗаменяющиеТовары.Вставить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
ЗаменяющиеТовары.Вставить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
ЗаменяющиеТовары.Вставить("ВариантОбеспечения", Новый ОписаниеТипов("ПеречислениеСсылка.ВариантыОбеспечения"));
ЗаменяющиеТовары.Вставить("Обособленно", Новый ОписаниеТипов("Булево"));
ЗаменяющиеТовары.Вставить("Количество", Новый ОписаниеТипов("Число"));
ЗаменяющиеТовары.Вставить("КоличествоУпаковок", Новый ОписаниеТипов("Число"));
ЗаменяющиеТовары.Вставить("Упаковка", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
ЗаменяющиеТовары.Вставить("ДатаОтгрузки", Новый ОписаниеТипов("Дата"));
ЗаменяющиеТовары.Вставить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
ЗаменяющиеТовары.Вставить("Отменено", Новый ОписаниеТипов("Булево"));
ЗаменяющиеТовары.Вставить("КодСтроки", Новый ОписаниеТипов("Число"));
ЗаменяющиеТовары.Вставить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
Объект = Новый Структура();
Объект.Вставить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
Объект.Вставить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
Объект.Вставить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента"));
Объект.Вставить("Статус", Новый ОписаниеТипов("ПеречислениеСсылка.СтатусыЗаявокНаВозвратТоваровОтКлиентов"));
Объект.Вставить("НеОтгружатьЧастями", Новый ОписаниеТипов("Булево"));
Объект.Вставить("ДатаОтгрузки", Новый ОписаниеТипов("Дата"));
Объект.Вставить("Дата", Новый ОписаниеТипов("Дата"));
Объект.Вставить("Приоритет", Новый ОписаниеТипов("СправочникСсылка.Приоритеты"));
Объект.Вставить("ЗаменяющиеТовары", ЗаменяющиеТовары);
ПараметрыВстраивания.ШаблонСериализацииДанныхФормы.Вставить("Объект", Объект);
Возврат ПараметрыВстраивания;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Склад)
| И ЗначениеРазрешено(Партнер)";
Ограничение.ТекстДляВнешнихПользователей =
"ПрисоединитьДополнительныеТаблицы
|ЭтотСписок КАК ЭтотСписок
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнешниеПользователи КАК ВнешниеПользователиПартнеры
| ПО ВнешниеПользователиПартнеры.ОбъектАвторизации = ЭтотСписок.Партнер
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
| ПО КонтактныеЛицаПартнеров.Владелец = ЭтотСписок.Партнер
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнешниеПользователи КАК ВнешниеПользователиКонтактныеЛица
| ПО ВнешниеПользователиКонтактныеЛица.ОбъектАвторизации = КонтактныеЛицаПартнеров.Ссылка
|;
|РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(ВнешниеПользователиПартнеры.Ссылка)
| ИЛИ ЗначениеРазрешено(ВнешниеПользователиКонтактныеЛица.Ссылка)";
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
Если ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь() Тогда
СтандартнаяОбработка = Ложь;
Если ВидФормы = "ФормаОбъекта" Тогда
ВыбраннаяФорма = "ФормаДокументаСамообслуживание";
ИначеЕсли ВидФормы = "ФормаСписка" Тогда
ВыбраннаяФорма = "ФормаСпискаСамообслуживание";
КонецЕсли;
Иначе
Если ВидФормы = "ФормаСписка" Тогда
Если Не ПравоДоступа("Чтение", Метаданные.РегистрыСведений.СостоянияЗаказовКлиентов) Тогда
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "ФормаСписка";
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("Дата");
Поля.Добавить("Номер");
Поля.Добавить("ХозяйственнаяОперация");
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Данные.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
ШаблонИмениДокумента = НСтр("ru='Заявка на возврат товаров от комиссионера %1 от %2'");
ИначеЕсли Данные.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя Тогда
ШаблонИмениДокумента = НСтр("ru='Заявка на возврат товаров от хранителя %1 от %2'");
Иначе
ШаблонИмениДокумента = НСтр("ru='Заявка на возврат товаров от клиента %1 от %2'");
КонецЕсли;
Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонИмениДокумента,
Данные.Номер,
Данные.Дата);
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область СлужебныйПрограммныйИнтерфейс
#Область Обеспечение
Процедура ТоварыДокументаДляСозданияОбеспечивающегоЗаказа(Ссылка, ПараметрыСоздания, МенеджерВременныхТаблиц) Экспорт
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Статус,Проведен,СпособКомпенсации");
ПроверитьВозможностьВводаНаОсновании(Ссылка, Реквизиты.Статус, Не Реквизиты.Проведен);
Если Реквизиты.СпособКомпенсации <> Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары Тогда
ТекстОшибки = НСтр("ru='Ввод на основании возможен для заявок на возврат со способом компенсации ""Заменить товары"".'");
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Запрос = Новый Запрос();
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ТипыНоменклатуры", ПараметрыСоздания.ТипыНоменклатуры);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Упаковка КАК Упаковка,
| Товары.Склад КАК Склад,
| Товары.Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА Товары.Обособленно
| ТОГДА Товары.Ссылка.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| Товары.ВариантОбеспечения КАК ВариантОбеспечения,
| Товары.Обособленно КАК Обособленно,
| Товары.ДатаОтгрузки КАК ДатаОтгрузки,
| Товары.Количество КАК КоличествоЕдиницПоДокументу,
| Товары.КоличествоУпаковок КАК КоличествоПоДокументу
|ПОМЕСТИТЬ ТоварыДокумента
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК Товары
|ГДЕ
| Товары.Ссылка = &Ссылка
| И НЕ Товары.Отменено
| И Товары.Номенклатура.ТипНоменклатуры В(&ТипыНоменклатуры)";
Запрос.Выполнить();
КонецПроцедуры
Функция ПараметрыДокументаДляДействийОбеспечения(Объект, ДатаОтгрузки = Неопределено) Экспорт
ВариантОбеспеченияИФлагОбособленно = ПродажиСервер.ВариантОбеспеченияИФлагОбособленноПоУмолчанию(Объект.Соглашение, Объект.Статус, , Не Объект.ЭтоЗаказКакСчет);
ПараметрыДокумента = Новый Структура();
ПараметрыДокумента.Вставить("ПараметрыВстраивания", ДоступныеОстаткиПараметрыВстраивания());
ПараметрыДокумента.Вставить("Объект", Объект);
ПараметрыДокумента.Вставить("ВариантОбеспеченияИФлагОбособленно", ВариантОбеспеченияИФлагОбособленно);
ОбеспечениеВДокументахСервер.ЗаполнитьСлужебныеПараметрыВстраивания(ПараметрыДокумента);
Возврат ПараметрыДокумента;
КонецФункции
Процедура ПослеЗаполненияОбеспечения(Объект, Изменения, Режим, ПараметрыЗаполнения) Экспорт
ЕстьИзмененияДатыОтгрузки = ОбеспечениеВДокументахСервер.АктуализироватьДатуОтгрузки(
ПараметрыЗаполнения,
Объект.НеОтгружатьЧастями,
Объект.ДатаОтгрузки,
Объект.ЗаменяющиеТовары,
"ДатаОтгрузки");
Если ОбеспечениеВДокументахКлиентСервер.НужноПроверитьЗаполнитьДатуОтгрузкиДляСтрокОтгрузить(Режим) Тогда
ЕстьИзмененияДатыОтгрузки = ЕстьИзмененияДатыОтгрузки Или ОбеспечениеВДокументахСервер.ПроверитьЗаполнитьДатуОтгрузкиДляСтрокОтгрузить(
Изменения.ВыгрузитьКолонку("Строка"),
"ДатаОтгрузки",
Объект.НеОтгружатьЧастями,
Объект.ДатаОтгрузки);
КонецЕсли;
ОбеспечениеВДокументахСервер.ПересчитатьКоличествоЕдиниц(Изменения, Объект.ЗаменяющиеТовары);
Реквизиты = "Сумма, СуммаНДС, СуммаСНДС, СуммаРучнойСкидки, СуммаАвтоматическойСкидки";
ЗаказыСервер.ПересчитатьЗависимыеРеквизитыПослеРазбиенияСтрок(Изменения, Реквизиты);
ПараметрыУказанияСерий = ПараметрыУказанияСерий(Объект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Заменяющие);
КонецПроцедуры
#КонецОбласти
#Область НаправленияДеятельности
Функция ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности(Форма) Экспорт
ПорядокОбработкиДокумента = НаправленияДеятельностиСервер.ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности();
ПорядокОбработкиДокумента.ЗаполнятьНазначениеВШапке = Истина;
ПорядокОбработкиДокумента.ИменаТабличныхЧастейДляОчисткиНекорректныхНазначений = "ВозвращаемыеТовары";
ТаблицаУсловий = НаправленияДеятельностиСервер.УсловияОбработкиНазначенийВСтроках("ТипНоменклатуры");
ПорядокОбработкиДокумента.УсловияОбработкиСтрок.Вставить("ВозвращаемыеТовары", ТаблицаУсловий);
Возврат ПорядокОбработкиДокумента;
КонецФункции
Функция МакетФормыВыбораНазначений() Экспорт
МакетФормы = Справочники.Назначения.МакетФормыВыбораНазначений();
ШаблонНазначения = Справочники.Назначения.ДобавитьШаблонНазначений(МакетФормы);
ШаблонНазначения.НаправлениеДеятельности = "Объект.НаправлениеДеятельности";
ОписаниеКолонок = Справочники.Назначения.ДобавитьОписаниеКолонок(МакетФормы, "ДанныеРеализации",, "Объект.ВозвращаемыеТовары.Назначение");
ОписаниеКолонок.УсловиеИспользования = "Объект.ВозвращаемыеТовары.ДокументРеализации <> НЕОПРЕДЕЛЕНО
| И Объект.ВозвращаемыеТовары.ДокументРеализации <> ЗНАЧЕНИЕ(Документ.РеализацияТоваровУслуг.ПустаяСсылка)
| И Объект.ВозвращаемыеТовары.ДокументРеализации <> ЗНАЧЕНИЕ(Документ.ПередачаТоваровХранителю.ПустаяСсылка)
| И Объект.ВозвращаемыеТовары.ДокументРеализации <> ЗНАЧЕНИЕ(Документ.ОтчетОРозничныхПродажах.ПустаяСсылка)";
ОписаниеКолонок.ПутиКДанным.Номенклатура = "Объект.ВозвращаемыеТовары.Номенклатура";
ОписаниеКолонок.ПутиКДанным.Характеристика = "Объект.ВозвращаемыеТовары.Характеристика";
ОписаниеКолонок.ПутиКДанным.ДокументРеализации = "Объект.ВозвращаемыеТовары.ДокументРеализации";
Возврат МакетФормы;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Проведение
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаявкаНаВозвратТоваровОтКлиента.Дата КАК Период,
| ЗаявкаНаВозвратТоваровОтКлиента.Валюта КАК Валюта,
| ЗаявкаНаВозвратТоваровОтКлиента.Статус КАК Статус,
| ЗаявкаНаВозвратТоваровОтКлиента.Склад КАК Склад,
| ЗаявкаНаВозвратТоваровОтКлиента.Партнер КАК Партнер,
| ЗаявкаНаВозвратТоваровОтКлиента.Контрагент КАК Контрагент,
| ЗаявкаНаВозвратТоваровОтКлиента.Организация КАК Организация,
| ЗаявкаНаВозвратТоваровОтКлиента.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ЗаявкаНаВозвратТоваровОтКлиента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ЗаявкаНаВозвратТоваровОтКлиента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ЗаявкаНаВозвратТоваровОтКлиента.Назначение КАК Назначение,
| ЗаявкаНаВозвратТоваровОтКлиента.Приоритет КАК Приоритет,
| ЕСТЬNULL(ЗаявкаНаВозвратТоваровОтКлиента.Назначение.ДвиженияПоСкладскимРегистрам,Ложь) КАК ДвиженияПоСкладскимРегистрам,
| ВЫБОР
| КОГДА ЗаявкаНаВозвратТоваровОтКлиента.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ЗаявкаНаВозвратТоваровОтКлиента.Дата >= ЗаявкаНаВозвратТоваровОтКлиента.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриПоступлении,
| ЗаявкаНаВозвратТоваровОтКлиента.Договор КАК Договор,
| ПРЕДСТАВЛЕНИЕ(ЗаявкаНаВозвратТоваровОтКлиента.Договор) КАК ДоговорПредставление,
| ЗаявкаНаВозвратТоваровОтКлиента.ДатаВозвратаДенежныхСредств КАК ДатаВозвратаДенежныхСредств,
| ЗаявкаНаВозвратТоваровОтКлиента.СпособКомпенсации КАК СпособКомпенсации,
| ВЫБОР
| КОГДА ЗаявкаНаВозвратТоваровОтКлиента.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И ЗаявкаНаВозвратТоваровОтКлиента.Дата >= ЗаявкаНаВозвратТоваровОтКлиента.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОрдернаяСхемаПриОтгрузке,
|
| ЗаявкаНаВозвратТоваровОтКлиента.Подразделение КАК Подразделение,
| ЗаявкаНаВозвратТоваровОтКлиента.Менеджер КАК Менеджер,
| ЗаявкаНаВозвратТоваровОтКлиента.Автор КАК Автор,
| ЗаявкаНаВозвратТоваровОтКлиента.Комментарий КАК Комментарий,
| ЗаявкаНаВозвратТоваровОтКлиента.СуммаДокумента КАК СуммаДокумента,
| ЗаявкаНаВозвратТоваровОтКлиента.Проведен КАК Проведен,
| ЗаявкаНаВозвратТоваровОтКлиента.ПометкаУдаления КАК ПометкаУдаления,
| ЗаявкаНаВозвратТоваровОтКлиента.Номер КАК Номер,
| ЗаявкаНаВозвратТоваровОтКлиента.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ЗаявкаНаВозвратТоваровОтКлиента.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет,
| ЗаявкаНаВозвратТоваровОтКлиента.КартаЛояльности.Владелец.БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| ВЫБОР
| КОГДА ЗаявкаНаВозвратТоваровОтКлиента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратОтКомиссионера,
| ВЫБОР
| КОГДА ЗаявкаНаВозвратТоваровОтКлиента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратОтХранителя
|
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ЗаявкаНаВозвратТоваровОтКлиента
|ГДЕ
| ЗаявкаНаВозвратТоваровОтКлиента.Ссылка = &Ссылка
|";
Реквизиты = Запрос.Выполнить().Выбрать();
Реквизиты.Следующий();
Запрос.УстановитьПараметр("Период", Реквизиты.Период);
Запрос.УстановитьПараметр("Валюта", Реквизиты.Валюта);
Запрос.УстановитьПараметр("Статус", Реквизиты.Статус);
Запрос.УстановитьПараметр("Склад", Реквизиты.Склад);
Запрос.УстановитьПараметр("Партнер", Реквизиты.Партнер);
Запрос.УстановитьПараметр("ЗаявкаНаВозвратТоваровОтКлиента", ДокументСсылка);
Запрос.УстановитьПараметр("Организация", Реквизиты.Организация);
Запрос.УстановитьПараметр("ЦенаВключаетНДС", Реквизиты.ЦенаВключаетНДС);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", Реквизиты.ХозяйственнаяОперация);
Запрос.УстановитьПараметр("ОрдернаяСхемаПриПоступлении", Реквизиты.ОрдернаяСхемаПриПоступлении);
Запрос.УстановитьПараметр("ЦенаВключаетНДС", Реквизиты.ЦенаВключаетНДС);
Запрос.УстановитьПараметр("Договор", Реквизиты.Договор);
Запрос.УстановитьПараметр("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента",
ПолучитьФункциональнуюОпцию("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента"));
Запрос.УстановитьПараметр("ИспользоватьРасширенныеВозможностиЗаказаКлиента", Не Реквизиты.ЭтоЗаказКакСчет);
Запрос.УстановитьПараметр("ДатаВозвратаДенежныхСредств", Реквизиты.ДатаВозвратаДенежныхСредств);
Запрос.УстановитьПараметр("СпособКомпенсации", Реквизиты.СпособКомпенсации);
Запрос.УстановитьПараметр("Назначение", Реквизиты.Назначение);
Запрос.УстановитьПараметр("Приоритет", Реквизиты.Приоритет);
Запрос.УстановитьПараметр("ДвиженияПоСкладскимРегистрам", Реквизиты.ДвиженияПоСкладскимРегистрам);
Запрос.УстановитьПараметр("ОрдернаяСхемаПриОтгрузке", Реквизиты.ОрдернаяСхемаПриОтгрузке);
Запрос.УстановитьПараметр("Подразделение", Реквизиты.Подразделение);
Запрос.УстановитьПараметр("Менеджер", Реквизиты.Менеджер);
Запрос.УстановитьПараметр("Автор", Реквизиты.Автор);
Запрос.УстановитьПараметр("Комментарий", Реквизиты.Комментарий);
Запрос.УстановитьПараметр("СуммаДокумента", Реквизиты.СуммаДокумента);
Запрос.УстановитьПараметр("Проведен", Реквизиты.Проведен);
Запрос.УстановитьПараметр("ПометкаУдаления", Реквизиты.ПометкаУдаления);
Запрос.УстановитьПараметр("Номер", Реквизиты.Номер);
Запрос.УстановитьПараметр("ВариантПриемкиТоваров", Реквизиты.ВариантПриемкиТоваров);
Запрос.УстановитьПараметр("Контрагент", Реквизиты.Контрагент);
Запрос.УстановитьПараметр("НаправлениеДеятельности", Реквизиты.НаправлениеДеятельности);
Запрос.УстановитьПараметр("НомерНаПечать", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер));
Запрос.УстановитьПараметр("БонуснаяПрограммаЛояльности", Реквизиты.БонуснаяПрограммаЛояльности);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяУниверсальнаяДата());
Запрос.УстановитьПараметр("ЭтоВозвратОтКомиссионера", Реквизиты.ЭтоВозвратОтКомиссионера);
Запрос.УстановитьПараметр("ЭтоВозвратОтХранителя", Реквизиты.ЭтоВозвратОтХранителя);
Запрос.УстановитьПараметр("ВалютаУправленческогоУчета", ЗначениеНастроекПовтИсп.ВалютаУправленческогоУчета());
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ТипЗнч(ДокументСсылка)));
Если ЗначениеЗаполнено(Реквизиты.Договор) Тогда
ШаблонСтроки = "ru = 'По договору ""%1""'";
ИнформацияПоДоговору = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, Реквизиты.ДоговорПредставление);
КонецЕсли;
Запрос.УстановитьПараметр("ИнформацияПоДоговору", ИнформацияПоДоговору);
КонецПроцедуры
Процедура СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры = Неопределено) Экспорт
ТекстЗапросаДанных =
"ВЫБРАТЬ
| ""ВозвращаемыеТовары"" КАК ИсточникДанных,
| ЛОЖЬ КАК РаспределятьОбщуюСумму,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Ссылка.Дата КАК Дата,
| ТаблицаДокумента.Ссылка.Организация КАК Организация,
| ТаблицаДокумента.Ссылка.Валюта КАК ВалютаДокумента,
| НЕОПРЕДЕЛЕНО КАК ВалютаВзаиморасчетов,
| ДАТАВРЕМЯ(1,1,1) КАК ПериодБазыНДС,
| ТаблицаДокумента.Ссылка.Дата КАК ДатаКурса,
|
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| ТаблицаДокумента.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаДокумента.СуммаСНДС - ТаблицаДокумента.СуммаНДС КАК СуммаБезНДС,
| ТаблицаДокумента.СтавкаНДС КАК СтавкаНДС,
| ТаблицаДокумента.СуммаНДС КАК СуммаНДС,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК СуммаНДСВзаиморасчетов,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК СуммаБезНДСУпр,
|
| ВЫБОР
| КОГДА ТаблицаДокумента.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| ТОГДА ЛОЖЬ
| КОГДА ТаблицаДокумента.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И ТаблицаДокумента.Ссылка.ВернутьМногооборотнуюТару
| И НЕ ТаблицаДокумента.Ссылка.ТребуетсяЗалогЗаТару
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ОтражаетсяВРасчетах,
| ТаблицаДокумента.Ссылка.ОбъектРасчетов КАК ОбъектРасчетов,
| ЛОЖЬ КАК ПересчитыватьПоДаннымРасчетов
|
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК ТаблицаДокумента
|
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И НЕ ТаблицаДокумента.Отменено
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ""ЗаменяющиеТовары"" КАК ИсточникДанных,
| ЛОЖЬ КАК РаспределятьОбщуюСумму,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| ТаблицаДокумента.Ссылка.Дата КАК Дата,
| ТаблицаДокумента.Ссылка.Организация КАК Организация,
| ТаблицаДокумента.Ссылка.Валюта КАК ВалютаДокумента,
| НЕОПРЕДЕЛЕНО КАК ВалютаВзаиморасчетов,
| ДАТАВРЕМЯ(1,1,1) КАК ПериодБазыНДС,
| ТаблицаДокумента.Ссылка.Дата КАК ДатаКурса,
|
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| ТаблицаДокумента.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаДокумента.СуммаСНДС - ТаблицаДокумента.СуммаНДС КАК СуммаБезНДС,
| ТаблицаДокумента.СтавкаНДС КАК СтавкаНДС,
| ТаблицаДокумента.СуммаНДС КАК СуммаНДС,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК СуммаНДСВзаиморасчетов,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК СуммаБезНДСУпр,
|
| ВЫБОР
| КОГДА ТаблицаДокумента.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| ТОГДА ЛОЖЬ
| КОГДА ТаблицаДокумента.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И ТаблицаДокумента.Ссылка.ВернутьМногооборотнуюТару
| И НЕ ТаблицаДокумента.Ссылка.ТребуетсяЗалогЗаТару
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ОтражаетсяВРасчетах,
| ТаблицаДокумента.Ссылка.ОбъектРасчетов КАК ОбъектРасчетов,
| ЛОЖЬ КАК ПересчитыватьПоДаннымРасчетов
|
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ТаблицаДокумента
|
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И НЕ ТаблицаДокумента.Отменено
|";
РегистрыСведений.СуммыДокументовВВалютахУчета.СформироватьПоДаннымДокумента(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанных);
КонецПроцедуры
Функция ТекстЗапросаБонусныеБаллы(Запрос, ТекстыЗапроса, Регистры, Документ)
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента") Тогда
Возврат "";
КонецЕсли;
ИмяРегистра = "БонусныеБаллы";
Если НЕ БонусныеБаллыСервер.ТребуетсяДобавитьДвиженияПоРегиструБонусныеБаллы(Документ) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтБонусныеБаллы", ТекстыЗапроса) Тогда
ТекстЗапросаВтБонусныеБаллы(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| БонусныеБаллы.Период КАК Период,
| БонусныеБаллы.ДатаКОбработке КАК ДатаКОбработке,
| БонусныеБаллы.ВидДвижения КАК ВидДвижения,
| БонусныеБаллы.БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| БонусныеБаллы.Партнер КАК Партнер,
| СУММА(БонусныеБаллы.Начислено) КАК Начислено,
| СУММА(БонусныеБаллы.КСписанию) КАК КСписанию
|ИЗ
| ВтБонусныеБаллы КАК БонусныеБаллы
|
|СГРУППИРОВАТЬ ПО
| БонусныеБаллы.БонуснаяПрограммаЛояльности,
| БонусныеБаллы.Партнер,
| БонусныеБаллы.Период,
| БонусныеБаллы.ДатаКОбработке,
| БонусныеБаллы.ВидДвижения
|ИМЕЮЩИЕ
| СУММА(БонусныеБаллы.Начислено) <> 0 ИЛИ
| СУММА(БонусныеБаллы.КСписанию) <> 0
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтБонусныеБаллы(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтБонусныеБаллы";
ТекстЗапроса =
"ВЫБРАТЬ
| НачалоПериода(&Период, ДЕНЬ) КАК Период,
| &ТекущаяДата КАК ДатаКОбработке,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| &Партнер КАК Партнер,
| ТабличнаяЧасть.СуммаБонусныхБалловКСписанию КАК Начислено,
| 0 КАК КСписанию
|ПОМЕСТИТЬ ВтБонусныеБаллы
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.Ссылка = &Ссылка
| И ТабличнаяЧасть.СуммаБонусныхБалловКСписанию <> 0
| И НЕ ТабличнаяЧасть.Отменено
| И НЕ ТабличнаяЧасть.Ссылка.ЭтоЗаказКакСчет
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ЗапланироватьПоступлениеТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДокумента =
"ВЫБРАТЬ
| ИсточникДанных.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ИсточникДанных.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Договор,
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| ИсточникДанных.Ссылка.ВариантПриемкиТоваров КАК ВариантПриемкиТоваров,
| ИсточникДанных.ДатаПоступления КАК Дата,
| ВЫБОР
| КОГДА ИсточникДанных.Порча
| ТОГДА ИсточникДанных.НоменклатураОприходование
| ИНАЧЕ ИсточникДанных.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ИсточникДанных.Порча
| ТОГДА ИсточникДанных.ХарактеристикаОприходование
| ИНАЧЕ ИсточникДанных.Характеристика
| КОНЕЦ КАК Характеристика,
| ИсточникДанных.Назначение КАК Назначение,
| ИсточникДанных.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ИсточникДанных.Серия КАК Серия,
| ЛОЖЬ КАК СверхЗаказа,
| ИсточникДанных.Склад КАК Склад,
| ИсточникДанных.Ссылка.Партнер КАК Отправитель,
| ИсточникДанных.Ссылка.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ИсточникДанных.Количество КАК Количество,
| ЛОЖЬ КАК ЭтоНакладная,
| ЛОЖЬ КАК ПоступлениеПоЗаказам
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК ИсточникДанных
|ГДЕ
| ИсточникДанных.Ссылка В (&Ссылка)
| И НЕ ИсточникДанных.Отменено
| И ИсточникДанных.Ссылка.Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена))";
ПараметрыМетода = СкладыСервер.ПараметрыМодульногоПроведения();
ПараметрыМетода.ТребуетсяУчитыватьСерииКОформлениюНакладныхПоРаспоряжению = Истина;
СкладыСервер.ЗапланироватьПоступлениеТоваровСНастройками(Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаДокумента,
ПараметрыМетода);
КонецПроцедуры
Функция ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| НачалоПериода(&Период, День) КАК Период,
| &Ссылка КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| ТОГДА ТаблицаТовары.Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ КАК Склад,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя)
| )
| ИЛИ ТаблицаТовары.СтатусУказанияСерий В(10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ВЫБОР
| КОГДА ТаблицаТовары.Отменено
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отменено)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Заказано)
| КОНЕЦ КАК Показатель,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.СуммаСНДС КАК Сумма,
| ВЫБОР
| КОГДА ТаблицаТовары.Отменено
| ТОГДА ТаблицаТовары.ПричинаОтмены
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка)
| КОНЕЦ КАК ПричинаОтмены
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.ДатаОтгрузки КАК Период,
| &Ссылка КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаПоказателей.Ссылка = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке)
| ТОГДА ВЫБОР
| КОГДА ТаблицаТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| ТОГДА ТаблицаТовары.Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ КАК Склад,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя)
| )
| ИЛИ ТаблицаПоказателей.Ссылка = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке)
| И ТаблицаТовары.СтатусУказанияСерий В(10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ТаблицаПоказателей.Ссылка КАК Показатель,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.СуммаСНДС КАК Сумма,
| ЗНАЧЕНИЕ(Справочник.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка) КАК ПричинаОтмены
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат КАК ТаблицаПоказателей
| ПО ТаблицаПоказателей.Ссылка В (ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОформлению),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке))
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И &Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена))
| И НЕ ТаблицаТовары.Отменено
| И ТаблицаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаВозвращаемыеТовары.НомерСтроки КАК НомерСтроки,
| &Период КАК Период,
| ТаблицаВозвращаемыеТовары.Ссылка КАК Распоряжение,
| ВЫБОР
| КОГДА ТаблицаВозвращаемыеТовары.Порча
| И
| ТаблицаВозвращаемыеТовары.Ссылка.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| ТОГДА ТаблицаВозвращаемыеТовары.НоменклатураОприходование
| ИНАЧЕ ТаблицаВозвращаемыеТовары.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаВозвращаемыеТовары.Порча
| И
| ТаблицаВозвращаемыеТовары.Ссылка.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| ТОГДА ТаблицаВозвращаемыеТовары.ХарактеристикаОприходование
| ИНАЧЕ ТаблицаВозвращаемыеТовары.Характеристика
| КОНЕЦ КАК Характеристика,
| ТаблицаВозвращаемыеТовары.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаВозвращаемыеТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| ТОГДА ТаблицаВозвращаемыеТовары.Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ КАК Склад,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ТаблицаПоказателей.Ссылка КАК Показатель,
| ТаблицаВозвращаемыеТовары.Количество КАК Количество,
| ТаблицаВозвращаемыеТовары.СуммаСНДС КАК Сумма,
| ЗНАЧЕНИЕ(Справочник.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка) КАК ПричинаОтмены
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК ТаблицаВозвращаемыеТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат КАК ТаблицаПоказателей
| ПО ТаблицаПоказателей.Ссылка В (ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ЗаявленоНаВозврат),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОформлениюПоВозвратам),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КПриемке))
|ГДЕ
| ТаблицаВозвращаемыеТовары.Ссылка = &Ссылка
| И НЕ ТаблицаВозвращаемыеТовары.Отменено
| И &Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена))
| И &ХозяйственнаяОперация НЕ В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаВозвращаемыеТовары.НомерСтроки КАК НомерСтроки,
| &Период КАК Период,
| ТаблицаВозвращаемыеТовары.Ссылка КАК Распоряжение,
| ТаблицаВозвращаемыеТовары.Номенклатура КАК Номенклатура,
| ТаблицаВозвращаемыеТовары.Характеристика КАК Характеристика,
| ТаблицаВозвращаемыеТовары.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаВозвращаемыеТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| ТОГДА ТаблицаВозвращаемыеТовары.Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ КАК Склад,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отменено) КАК Показатель,
| ТаблицаВозвращаемыеТовары.Количество КАК Количество,
| ТаблицаВозвращаемыеТовары.СуммаСНДС КАК Сумма,
| ЗНАЧЕНИЕ(Справочник.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка) КАК ПричинаОтмены
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК ТаблицаВозвращаемыеТовары
|ГДЕ
| ТаблицаВозвращаемыеТовары.Ссылка = &Ссылка
| И ТаблицаВозвращаемыеТовары.Отменено
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаВозвращаемыеТовары.НомерСтроки КАК НомерСтроки,
| &Период КАК Период,
| ТаблицаВозвращаемыеТовары.Ссылка КАК Распоряжение,
| ВЫБОР
| КОГДА ТаблицаВозвращаемыеТовары.Порча
| И
| ТаблицаВозвращаемыеТовары.Ссылка.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| ТОГДА ТаблицаВозвращаемыеТовары.НоменклатураОприходование
| ИНАЧЕ ТаблицаВозвращаемыеТовары.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА ТаблицаВозвращаемыеТовары.Порча
| И
| ТаблицаВозвращаемыеТовары.Ссылка.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| ТОГДА ТаблицаВозвращаемыеТовары.ХарактеристикаОприходование
| ИНАЧЕ ТаблицаВозвращаемыеТовары.Характеристика
| КОНЕЦ КАК Характеристика,
| ВЫБОР
| КОГДА &ЭтоВозвратОтКомиссионера
| И НЕ ДоговорыКонтрагентов.Ссылка ЕСТЬ NULL
| И ДоговорыКонтрагентов.КомиссионныеПродажи25
| ТОГДА 0
| КОГДА &ЭтоВозвратОтХранителя
| ТОГДА 0
| ИНАЧЕ ТаблицаВозвращаемыеТовары.КодСтроки
| КОНЕЦ КАК КодСтроки,
| ВЫБОР
| КОГДА ТаблицаВозвращаемыеТовары.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| ТОГДА ТаблицаВозвращаемыеТовары.Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ КАК Склад,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ТаблицаПоказателей.Ссылка КАК Показатель,
| ТаблицаВозвращаемыеТовары.Количество КАК Количество,
| ТаблицаВозвращаемыеТовары.СуммаСНДС КАК Сумма,
| ЗНАЧЕНИЕ(Справочник.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка) КАК ПричинаОтмены
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК ТаблицаВозвращаемыеТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
| ПО ДоговорыКонтрагентов.Ссылка = ТаблицаВозвращаемыеТовары.Ссылка.Договор
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат КАК ТаблицаПоказателей
| ПО ТаблицаПоказателей.Ссылка В (ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ЗаявленоНаВозврат),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОформлениюПоВозвратам),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КПриемке))
|ГДЕ
| ТаблицаВозвращаемыеТовары.Ссылка = &Ссылка
| И НЕ ТаблицаВозвращаемыеТовары.Отменено
| И &Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена))
| И &ХозяйственнаяОперация В (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера))
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки,
| Показатель";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтКонтрольОплаты(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтКонтрольОплаты";
ТекстЗапроса =
"ВЫБРАТЬ
| МИНИМУМ(
| ВЫБОР
| КОГДА ДанныеШапки.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке)) ТОГДА
|
| НЕ ТаблицаТовары.ВариантОбеспечения В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.РезервироватьПоМереПоступления),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ) КАК ИсключатьПриКонтролеАванс,
| МИНИМУМ(
| ВЫБОР
| КОГДА ДанныеШапки.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке)) ТОГДА
|
| ТаблицаТовары.ВариантОбеспечения <> ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ) КАК ИсключатьПриКонтролеПредоплату
|ПОМЕСТИТЬ ВтКонтрольОплаты
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ДанныеШапки
| ПО ТаблицаТовары.Ссылка = ДанныеШапки.Ссылка
|ГДЕ
| ТаблицаТовары.Ссылка В (&Ссылка)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ДанныеШапки.Дата КАК Период,
| ТоварыДокумента.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеШапки.Партнер КАК Получатель,
| ТоварыДокумента.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТоварыДокумента.Обособленно
| ТОГДА ДанныеШапки.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ЛОЖЬ КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ЛОЖЬ КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И НЕ ТоварыДокумента.Отменено
| И (ТоварыДокумента.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ИЛИ ТоварыДокумента.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
| И ДанныеШапки.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату))
| И ТоварыДокумента.Количество <> 0";
СкладыСервер.ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ТоварыДокумента.ДатаОтгрузки КАК Период,
| ТоварыДокумента.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеШапки.Партнер КАК Получатель,
| ТоварыДокумента.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТоварыДокумента.Обособленно
| ТОГДА ДанныеШапки.Назначение
| ИНАЧЕ &НазначениеПоУмолчанию
| КОНЕЦ КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ТоварыДокумента.Отменено КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ЛОЖЬ КАК ОтгрузкаПоЗаказу
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|
|ГДЕ
| ТоварыДокумента.Ссылка В(&Ссылка)
| И НЕ ТоварыДокумента.Отменено
| И ДанныеШапки.Статус В (
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена))
| И ТоварыДокумента.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ТоварыДокумента.Количество <> 0";
ТекстЗапросаДанныхДокумента = СтрЗаменить(ТекстЗапросаДанныхДокумента,
"&НазначениеПоУмолчанию",
"ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)");
СкладыСервер.ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос();
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.ЗаявкаНаВозвратТоваровОтКлиента";
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", """""");
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоДоговору", """""");
ПереопределениеРасчетаПараметров.Вставить("ДвиженияПоСкладскимРегистрам",
"ЕСТЬNULL(ТаблицаТовары.Ссылка.Назначение.ДвиженияПоСкладскимРегистрам, ЛОЖЬ)");
ПереопределениеРасчетаПараметров.Вставить("ОрдернаяСхемаПриПоступлении",
" ВЫБОР
| КОГДА ТаблицаТовары.Склад.ИспользоватьОрдернуюСхемуПриПоступлении
| И ТаблицаТовары.Ссылка.Дата >= ТаблицаТовары.Склад.ДатаНачалаОрдернойСхемыПриПоступлении
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ");
ПереопределениеРасчетаПараметров.Вставить("ЭтоВозвратОтКомиссионера",
" ВЫБОР
| КОГДА ТаблицаВозвращаемыеТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ");
ПереопределениеРасчетаПараметров.Вставить("ЭтоВозвратОтХранителя",
" ВЫБОР
| КОГДА ТаблицаВозвращаемыеТовары.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтХранителя)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ");
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
Если ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "ТаблицаТовары";
ИначеЕсли ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
ВЗапросеЕстьИсточник = Ложь;
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Партнер КАК Партнер,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Склад КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Менеджер КАК Ответственный,
| &Автор КАК Автор,
| &Комментарий КАК Комментарий,
| &Валюта КАК Валюта,
| &СуммаДокумента КАК Сумма,
| &Статус КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| &ИнформацияПоДоговору КАК Дополнительно,
| &Период КАК ДатаПервичногоДокумента,
| &НомерНаПечать КАК НомерПервичногоДокумента,
| ЛОЖЬ КАК СторноИсправление,
| НЕОПРЕДЕЛЕНО КАК СторнируемыйДокумент,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| &Период КАК ДатаОтраженияВУчете,
| &Приоритет КАК Приоритет";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры)
#Область КурсыВалютДокумента
ИмяРегистра = "ВременнаяТаблицаКурсыВалютДокумента";
ТекстЗапросаКурсыВалютДокумента =
"ВЫБРАТЬ
| ДанныеДокументаШапка.Ссылка КАК Ссылка,
| ДанныеДокументаШапка.Организация КАК Организация,
| ДанныеДокументаШапка.Дата КАК ДатаКурса,
| ДанныеДокументаШапка.ОбъектРасчетов КАК ОбъектРасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаДокумента,
| ДанныеДокументаШапка.Валюта КАК ВалютаВзаиморасчетов
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ДанныеДокументаШапка
|ГДЕ
| ДанныеДокументаШапка.Ссылка В (&Ссылка)";
ТекстЗапросаКурсыВалютДокумента = ВзаиморасчетыСервер.ПолучитьТаблицуКурсовВалютНаправленийДеятельности(ТекстЗапросаКурсыВалютДокумента);
ТекстыЗапроса.Добавить(ТекстЗапросаКурсыВалютДокумента, ИмяРегистра);
#КонецОбласти
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтКонтрольОплаты", ТекстыЗапроса) Тогда
ТекстЗапросаВтКонтрольОплаты(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстПланыОплат =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Ссылка.Организация КАК Организация,
| Таблица.Ссылка.Партнер КАК Партнер,
|
| Таблица.Ссылка.ОбъектРасчетов КАК ОбъектРасчетов,
| Таблица.Ссылка.Дата КАК ДатаРегистратора,
| Таблица.Ссылка.Номер КАК НомерРегистратора,
| Таблица.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаВзаиморасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаДокумента,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПланированиеПоЗаказуКлиента) КАК ХозяйственнаяОперация,
| Таблица.Ссылка.ФормаОплаты КАК ФормаОплаты,
| Таблица.ДатаПлатежа КАК ДатаПлатежа,
| Таблица.ВариантОплаты КАК ВариантОплаты,
| Таблица.СуммаПлатежа + Таблица.СуммаЗалогаЗаТару КАК КОплате,
| Таблица.СуммаОтклоненияМерныхТоваров КАК СуммаОтклоненияМерныхТоваров,
| ВЫБОР
| КОГДА Таблица.ВариантОплаты = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроляОплатыКлиентом.АвансДоОбеспечения)
| ТОГДА КонтрольОплаты.ИсключатьПриКонтролеАванс
| КОГДА Таблица.ВариантОплаты = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроляОплатыКлиентом.ПредоплатаДоОтгрузки)
| ТОГДА КонтрольОплаты.ИсключатьПриКонтролеПредоплату
| КОГДА Таблица.Ссылка.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена))
| ТОГДА ИСТИНА
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ИсключатьПриКонтроле
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЭтапыГрафикаОплаты КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВтКонтрольОплаты КАК КонтрольОплаты
| ПО ИСТИНА
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
| И Таблица.Ссылка.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена))
| И Таблица.Ссылка.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)";
ТекстПланыОтгрузок =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Ссылка.Организация КАК Организация,
| Таблица.Ссылка.Партнер КАК Партнер,
|
| Таблица.Ссылка.ОбъектРасчетов КАК ОбъектРасчетов,
| КОНЕЦПЕРИОДА(Таблица.ДатаОтгрузки, ДЕНЬ) КАК ДатаОтгрузки,
| Таблица.СуммаСНДС КАК УвеличитьКОтгрузке,
| ВЫБОР КОГДА Таблица.Ссылка.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| ТОГДА Таблица.СуммаСНДС
| ИНАЧЕ 0
| КОНЕЦ КАК УвеличитьОтгружается,
| Таблица.Ссылка.Дата КАК ДатаРегистратора,
| Таблица.Ссылка.Номер КАК НомерРегистратора,
| Таблица.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаВзаиморасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаДокумента,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПланированиеПоЗаказуКлиента) КАК ХозяйственнаяОперация,
| Таблица.Ссылка.ФормаОплаты КАК ФормаОплаты
|
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК Таблица
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
| И НЕ Таблица.Отменено
| И Таблица.Ссылка.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена))
| И НЕ Таблица.Ссылка.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)
| И (Таблица.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ Таблица.Ссылка.ТребуетсяЗалогЗаТару
| ИЛИ НЕ Таблица.Ссылка.ВернутьМногооборотнуюТару)
| И Таблица.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И Таблица.Ссылка.СпособКомпенсации = ЗНАЧЕНИЕ(Перечисление.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары)";
ВзаиморасчетыСервер.ПроведениеЗаказаКлиента(Запрос, ТекстыЗапроса, Регистры, ТекстПланыОплат, ТекстПланыОтгрузок);
ВзаиморасчетыСервер.ПроведениеРасчетыСКлиентамиПланОплат(Запрос, ТекстыЗапроса, Регистры, ТекстПланыОплат);
ВзаиморасчетыСервер.ПроведениеРасчетыСКлиентамиПланОтгрузок(Запрос, ТекстыЗапроса, Регистры, ТекстПланыОтгрузок);
ТекстВозврат = "
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Ссылка.Организация КАК Организация,
| Таблица.Ссылка.Партнер КАК Партнер,
|
| Таблица.Ссылка.ОбъектРасчетов КАК ОбъектРасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаВзаиморасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаДокумента,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК Сумма,
| Таблица.СуммаСНДС КАК КОплате,
|
| Таблица.Ссылка.Дата КАК ДатаРегистратора,
| Таблица.Ссылка.Номер КАК НомерРегистратора,
| Таблица.Ссылка.Дата КАК ДатаКурса,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПланированиеПоЗаказуКлиента) КАК ХозяйственнаяОперация,
| НЕОПРЕДЕЛЕНО КАК СтатьяДвиженияДенежныхСредств
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК Таблица
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
| И Таблица.Ссылка.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| И Таблица.Ссылка.СпособКомпенсации = ЗНАЧЕНИЕ(Перечисление.СпособыКомпенсацииВозвратовТоваров.ВернутьДенежныеСредства)
| И Таблица.Ссылка.ПорядокРасчетов <> ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)
| И (Таблица.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ Таблица.Ссылка.ТребуетсяЗалогЗаТару
| ИЛИ НЕ Таблица.Ссылка.ВернутьМногооборотнуюТару)
| И НЕ Таблица.Ссылка.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоНакладным)";
ВзаиморасчетыСервер.ПроведениеВозвратаТоваровОтКлиента(Запрос, ТекстыЗапроса, Регистры, ТекстВозврат);
КонецПроцедуры
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) ТОГДА
| ТабЧасть.Подразделение
| ИНАЧЕ
| ТабЧасть.Склад
| КОНЕЦ КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Обособленно ТОГДА
|
| ТабЧасть.Ссылка.Назначение
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.Ссылка КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ТабЧасть
|ГДЕ
| НЕ ТабЧасть.Отменено
| И ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена))
| И ТабЧасть.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) ТОГДА
| ТабЧасть.Подразделение
| ИНАЧЕ
| ТабЧасть.Склад
| КОНЕЦ КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Обособленно ТОГДА
|
| ТабЧасть.Ссылка.Назначение
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.ВариантОбеспечения КАК ВариантОбеспечения,
| ТабЧасть.Ссылка КАК Заказ,
|
| ВЫБОР КОГДА ТабЧасть.Ссылка.НеОтгружатьЧастями ТОГДА
| ТабЧасть.Ссылка.ДатаОтгрузки
| ИНАЧЕ
| ТабЧасть.ДатаОтгрузки
| КОНЕЦ КАК ЖелаемаяДатаОтгрузки,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ТабЧасть
|ГДЕ
| НЕ ТабЧасть.Отменено
| И ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена))
| И ТабЧасть.ВариантОбеспечения <> ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)";
РаспределениеЗапасовДвижения.ЗапланироватьРасходЗапаса(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаТабЧасть,
Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) ТОГДА
| ТабЧасть.Подразделение
| ИНАЧЕ
| ТабЧасть.Склад
| КОНЕЦ КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Обособленно ТОГДА
|
| ТабЧасть.Ссылка.Назначение
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
|
| ВЫБОР
| КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) И ТабЧасть.Обособленно
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.КОбеспечению)
| КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) И НЕ ТабЧасть.Обособленно
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.НеТребуется)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| КОНЕЦ КАК ВариантОбеспечения,
|
| ТабЧасть.Ссылка КАК Заказ,
|
| ВЫБОР КОГДА ТабЧасть.Ссылка.НеОтгружатьЧастями ТОГДА
| ТабЧасть.Ссылка.ДатаОтгрузки
| ИНАЧЕ
| ТабЧасть.ДатаОтгрузки
| КОНЕЦ КАК ЖелаемаяДатаОтгрузки,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ТабЧасть
|ГДЕ
| НЕ ТабЧасть.Отменено
| И ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату))
| И ТабЧасть.ВариантОбеспечения В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада))";
РаспределениеЗапасовДвижения.ЗапланироватьРасходЗапаса(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаТабЧасть,
Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
|
| ВЫБОР КОГДА ТабЧасть.Порча И ТабЧасть.Ссылка.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера) ТОГДА
| ТабЧасть.НоменклатураОприходование
| ИНАЧЕ
| ТабЧасть.Номенклатура
| КОНЕЦ КАК Номенклатура,
|
| ВЫБОР КОГДА ТабЧасть.Порча И ТабЧасть.Ссылка.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера) ТОГДА
| ТабЧасть.ХарактеристикаОприходование
| ИНАЧЕ
| ТабЧасть.Характеристика
| КОНЕЦ КАК Характеристика,
|
| ТабЧасть.Склад КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.Ссылка КАК Заказ,
| ТабЧасть.ДатаПоступления КАК ДатаПоступления,
| ИСТИНА КАК ДоступенДляРасхода,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Ссылка.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена))
| И НЕ ТабЧасть.Отменено";
РаспределениеЗапасовДвижения.ЗапланироватьПриходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть, Ложь);
КонецПроцедуры
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Если ПраваПользователяПовтИсп.ЭтоПартнер() Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ЗаявкаНаВозврат";
КомандаПечати.Представление = НСтр("ru = 'Заявка на возврат'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплату";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуСФаксимиле";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату с факсимиле'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьФаксимиле", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
Возврат;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("НеВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ЗаявкаНаВозврат";
КомандаПечати.Представление = НСтр("ru = 'Заявка на возврат'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ЗаявкаНаВозвратБезСкидок";
КомандаПечати.Представление = НСтр("ru = 'Заявка на возврат (не выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "ЗаявкаНаВозврат";
КомандаПечати.Представление = НСтр("ru = 'Заявка на возврат (выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
КонецЕсли;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьЗаявленияНаВозвратТоваровОтКлиента";
КомандаПечати.Идентификатор = "ЗаявлениеНаВозвратТоваровОтКлиента";
КомандаПечати.Представление = НСтр("ru = 'Заявление на возврат товаров'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
Если ПолучитьФункциональнуюОпцию("НеВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплату";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуБезСкидок";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату (не выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплату";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату (выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("НеВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуСФаксимиле";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату с факсимиле'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьФаксимиле", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуСФаксимилеБезСкидок";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату с факсимиле (не выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьФаксимиле", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуСФаксимиле";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату с факсимиле (выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьФаксимиле", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если Константы.ИспользоватьМеждународныеПечатныеФормы.Получить() Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "ProformaInvoiceEn";
КомандаПечати.Представление = НСтр("ru = 'Proforma invoice (en)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
КомандаПечати = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати, "ЗаданиеНаОтбор");
КомандаПечати.ДополнительныеПараметры.Вставить("ПечатьПоДаннымДокумента");
СтатусыЗаявки = Новый Массив;
СтатусыЗаявки.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению);
СтатусыЗаявки.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке);
СтатусыЗаявки.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"Статус",
СтатусыЗаявки,
ВидСравненияКомпоновкиДанных.ВСписке);
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ЗаявкаНаВозврат") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ЗаявкаНаВозврат",
НСтр("ru = 'Заявка на возврат (выводить скидки)'"),
СформироватьПечатнуюФормуЗаявкиНаВозврат(МассивОбъектов, ОбъектыПечати, ПараметрыПечати, ПараметрыВывода.КодЯзыка),,
"Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПФ_MXL_ЗаявкаНаВозврат");
ОписаниеПечатнойФормы = КоллекцияПечатныхФорм.Найти(ВРег("ЗаявкаНаВозврат"), "ИмяВРЕГ");
Если ОписаниеПечатнойФормы <> Неопределено Тогда
ОписаниеПечатнойФормы.ДоступенВыводНаДругихЯзыках = Истина;
КонецЕсли;
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ЗаявкаНаВозвратБезСкидок") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ЗаявкаНаВозвратБезСкидок",
НСтр("ru = 'Заявка на возврат (не выводить скидки)'"),
СформироватьПечатнуюФормуЗаявкиНаВозврат(МассивОбъектов, ОбъектыПечати, ПараметрыПечати, ПараметрыВывода.КодЯзыка),,
"Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПФ_MXL_ЗаявкаНаВозврат");
ОписаниеПечатнойФормы = КоллекцияПечатныхФорм.Найти(ВРег("ЗаявкаНаВозврат"), "ИмяВРЕГ");
Если ОписаниеПечатнойФормы <> Неопределено Тогда
ОписаниеПечатнойФормы.ДоступенВыводНаДругихЯзыках = Истина;
КонецЕсли;
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "КомплектДокументов") Тогда
КоллекцияПечатныхФорм.Очистить();
СформироватьКомплектПечатныхФорм(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати);
КонецЕсли;
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
КонецПроцедуры
Функция СформироватьПечатнуюФормуЗаявкиНаВозврат(МассивОбъектов, ОбъектыПечати, ПараметрыПечати, КодЯзыка = Неопределено)
УстановитьПривилегированныйРежим(Истина);
Если ПараметрыПечати <> Неопределено И ПараметрыПечати.Свойство("ОтображатьСкидки") Тогда
ОтображатьСкидки = ПараметрыПечати.ОтображатьСкидки;
Иначе
ОтображатьСкидки = (Константы.ОтображениеСкидокВПечатныхФормахДокументовПродажи.Получить()
<> Перечисления.ВариантыВыводаСкидокВПечатныхФормах.НеВыводитьСкидки);
КонецЕсли;
ТабличныйДокумент = Новый ТабличныйДокумент;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ОтображатьСкидки", ОтображатьСкидки);
Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка);
Запрос.Текст =
"ВЫБРАТЬ
| ЗаявкаНаВозврат.Ссылка КАК Ссылка,
| ЗаявкаНаВозврат.Номер КАК Номер,
| ЗаявкаНаВозврат.Дата КАК Дата,
| ЗаявкаНаВозврат.Организация КАК Организация,
| ВЫБОР
| КОГДА ЗаявкаНаВозврат.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
| ИЛИ ЗаявкаНаВозврат.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяЕНВД)
| ИЛИ ЗаявкаНаВозврат.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК УчитыватьНДС,
| ЗаявкаНаВозврат.Организация.Префикс КАК Префикс,
| ЗаявкаНаВозврат.Контрагент КАК Контрагент,
| ЗаявкаНаВозврат.БанковскийСчет КАК БанковскийСчет,
| ЗаявкаНаВозврат.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| ЗаявкаНаВозврат.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ЗаявкаНаВозврат.Валюта КАК Валюта,
| ЗаявкаНаВозврат.Менеджер.ФизическоеЛицо КАК Менеджер,
| ЗаявкаНаВозврат.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
| ЗаявкаНаВозврат.СуммаДокумента КАК СуммаКВозврату,
| ВЫБОР
| КОГДА ЗаявкаНаВозврат.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ВозвратОтКомиссионера,
| ВЫБОР
| КОГДА ЗаявкаНаВозврат.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ВозвратОтРозничногоПокупателя
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ЗаявкаНаВозврат
|ГДЕ
| ЗаявкаНаВозврат.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|;
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
|
| ВариантыКомплектацииНоменклатуры.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектацииНоменклатуры.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектацииНоменклатуры.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
|
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.НоменклатураОприходование КАК НоменклатураОприходование,
| Таблица.ХарактеристикаОприходование КАК ХарактеристикаОприходование,
| Таблица.Порча КАК Порча,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Количество КАК Количество,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| Таблица.Отменено КАК Отменено,
| Таблица.Цена КАК Цена,
| Таблица.Сумма КАК Сумма,
| Таблица.СтавкаНДС КАК СтавкаНДС,
| Таблица.СуммаНДС КАК СуммаНДС,
| ВЫБОР
| КОГДА
| Таблица.Ссылка.ВернутьМногооборотнуюТару
| И Таблица.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара
|ПОМЕСТИТЬ Товары
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК Таблица
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
| ПО ВариантыКомплектацииНоменклатуры.Владелец = Таблица.НоменклатураНабора
| И ВариантыКомплектацииНоменклатуры.Характеристика = Таблица.ХарактеристикаНабора
| И ВариантыКомплектацииНоменклатуры.Основной
|ГДЕ
| Таблица.Ссылка В(&МассивОбъектов)
| И НЕ Таблица.Отменено
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| МИНИМУМ(Таблица.НомерСтроки) КАК НомерСтроки,
| СУММА(Таблица.Сумма) КАК Сумма,
| СУММА(Таблица.СуммаНДС) КАК СуммаНДС
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыПодготовка
|ИЗ
| Товары КАК Таблица
|
|ГДЕ
| Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТоваров.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ТоварыРазличные
|ИЗ
| Товары КАК ТаблицаТоваров
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Товары.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Товары.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Товары.НоменклатураНабора,
| Товары.ХарактеристикаНабора,
| Товары.Номенклатура,
| Товары.Характеристика,
| ВЫБОР КОГДА Товары.ВариантКомплектацииНоменклатуры.НоменклатураОсновногоКомпонента = Товары.Номенклатура
| И Товары.ВариантКомплектацииНоменклатуры.ХарактеристикаОсновногоКомпонента = Товары.Характеристика ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ОсновнаяКомплектующая,
| Товары.СтавкаНДС КАК СтавкаНДС,
| 0 КАК КоличествоПоУмолчанию,
| Товары.Количество КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьПервая
|ИЗ
| Товары КАК Товары
|
|ГДЕ
| Товары.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыРазличные.Ссылка КАК Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец КАК НоменклатураНабора,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика КАК ХарактеристикаНабора,
| ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК Номенклатура,
| ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
| ЛОЖЬ КАК ОсновнаяКомплектующая,
| NULL КАК СтавкаНДС,
| СУММА(ВариантыКомплектацииНоменклатурыТовары.Количество) КАК КоличествоПоУмолчанию,
| 0 КАК Количество
|ИЗ
| Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыРазличные КАК ТоварыРазличные
| ПО ИСТИНА
|ГДЕ
| ВариантыКомплектацииНоменклатурыТовары.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ Т.ВариантКомплектацииНоменклатуры ИЗ Товары КАК Т)
|
|СГРУППИРОВАТЬ ПО
| ТоварыРазличные.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика,
| ВариантыКомплектацииНоменклатурыТовары.Номенклатура,
| ВариантыКомплектацииНоменклатурыТовары.Характеристика,
| ВариантыКомплектацииНоменклатурыТовары.Упаковка
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика,
| МАКСИМУМ(Таблица.СтавкаНДС) КАК СтавкаНДС,
| МАКСИМУМ(Таблица.ОсновнаяКомплектующая) КАК ОсновнаяКомплектующая,
| СУММА(Таблица.КоличествоПоУмолчанию) КАК КоличествоПоУмолчанию,
| СУММА(Таблица.Количество) КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьВторая
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьПервая КАК Таблица
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика
|;
|
|
|ВЫБРАТЬ
| Результат.Ссылка,
| Результат.ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора,
| Результат.ХарактеристикаНабора,
| МАКСИМУМ(ВЫБОР
| КОГДА Результат.ОсновнаяКомплектующая
| ТОГДА Результат.СтавкаНДС
| ИНАЧЕ null
| КОНЕЦ) КАК СтавкаНДС,
| ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0 И Результат.ОсновнаяКомплектующая
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ null
| КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительно
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьВторая КАК Результат
|СГРУППИРОВАТЬ ПО
| Результат.Ссылка,
| Результат.ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора,
| Результат.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| ВременнаяТаблицаНаборыДополнительно.ВариантКомплектацииНоменклатуры,
|
| ВЫБОР КОГДА Таблица.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию) ТОГДА
| ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
|
| ВЫБОР КОГДА Таблица.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию) ТОГДА
| ВЫБОР КОГДА
| ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| И ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора В (ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоЦенам),ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоДолям)) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.РассчитываетсяИзЦенКомплектующих)
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
| КОНЕЦ
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
|
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.НомерСтроки КАК НомерСтроки,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК КоличествоУпаковок,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК Количество,
| Таблица.Сумма КАК Сумма,
| Таблица.СуммаНДС КАК СуммаНДС,
| ВременнаяТаблицаНаборыДополнительно.СтавкаНДС КАК СтавкаНДС
|ПОМЕСТИТЬ ВременнаяТаблицаНаборы
|ИЗ
| ВременнаяТаблицаНаборыПодготовка КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборыДополнительно КАК ВременнаяТаблицаНаборыДополнительно
| ПО Таблица.НоменклатураНабора = ВременнаяТаблицаНаборыДополнительно.НоменклатураНабора
| И Таблица.ХарактеристикаНабора = ВременнаяТаблицаНаборыДополнительно.ХарактеристикаНабора
| И Таблица.Ссылка = ВременнаяТаблицаНаборыДополнительно.Ссылка
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Таблица.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| ЕСТЬNULL(НоменклатураНабораПредставления.НаименованиеПолное, Таблица.НоменклатураНабора.НаименованиеПолное) КАК НоменклатураНабораНаименованиеПолное,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ЕСТЬNULL(ХарактеристикиНоменклатурыНабораПредставления.НаименованиеПолное, ЕСТЬNULL(Таблица.ХарактеристикаНабора.НаименованиеПолное, """")) КАК ХарактеристикаНабораНаименованиеПолное,
| Таблица.ЭтоКомплектующие КАК ЭтоКомплектующие,
| Таблица.ЭтоНабор КАК ЭтоНабор,
|
| Таблица.НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА Таблица.Порча
| ТОГДА Таблица.НоменклатураОприходование
| ИНАЧЕ Таблица.Номенклатура
| КОНЕЦ КАК Номенклатура,
| ВЫБОР
| КОГДА Таблица.Порча
| ТОГДА ЕСТЬNULL(ХарактеристикиНоменклатурыОприходованияПредставления.НаименованиеПолное, ЕСТЬNULL(Таблица.ХарактеристикаОприходование.НаименованиеПолное, """"))
| ИНАЧЕ ЕСТЬNULL(ХарактеристикиНоменклатурыПредставления.НаименованиеПолное, ЕСТЬNULL(Таблица.Характеристика.НаименованиеПолное, """"))
| КОНЕЦ КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ Таблица.Упаковка
| КОНЕЦ КАК Упаковка,
| Таблица.Номенклатура.Код КАК Код,
| Таблица.Номенклатура.Артикул КАК Артикул,
| ЕСТЬNULL(НоменклатураПредставления.НаименованиеПолное, Таблица.Номенклатура.НаименованиеПолное) КАК НаименованиеПолное,
| ВЫБОР
| КОГДА Таблица.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕ(Таблица.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(Таблица.Упаковка)
| КОНЕЦ КАК ЕдиницаИзмерения,
| Таблица.КоличествоУпаковок КАК Количество,
| Таблица.Цена КАК Цена,
| Таблица.Сумма КАК Сумма,
| Таблица.СтавкаНДС КАК СтавкаНДС,
| Таблица.СуммаНДС КАК СуммаНДС,
| Таблица.ЭтоВозвратнаяТара КАК ЭтоВозвратнаяТара
|ИЗ
|(
| ВЫБРАТЬ
| Таблица.Ссылка,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ПустаяСсылка)
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ПустаяСсылка)
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоКомплектующие,
| ЛОЖЬ КАК ЭтоНабор,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.НомерСтроки
| ИНАЧЕ
| Таблица.НомерСтроки
| КОНЕЦ КАК НомерСтроки,
| Таблица.Номенклатура,
| Таблица.НоменклатураОприходование,
| Таблица.Количество,
| Таблица.КоличествоУпаковок,
| Таблица.Цена,
| Таблица.Сумма,
| Таблица.СуммаНДС,
| Таблица.СтавкаНДС,
| Таблица.Характеристика,
| Таблица.ХарактеристикаОприходование,
| Таблица.Упаковка,
| Таблица.ЭтоВозвратнаяТара,
| Таблица.Порча
| ИЗ
| Товары КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ПО ВременнаяТаблицаНаборы.НоменклатураНабора = Таблица.НоменклатураНабора
| И ВременнаяТаблицаНаборы.ХарактеристикаНабора = Таблица.ХарактеристикаНабора
| И ВременнаяТаблицаНаборы.Ссылка = Таблица.Ссылка
|
| ГДЕ
| Таблица.НоменклатураНабора = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ИЛИ (Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоКомплектующие),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ВременнаяТаблицаНаборы.Ссылка,
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах,
| ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВременнаяТаблицаНаборы.НоменклатураНабора,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора,
| ЛОЖЬ КАК ЭтоКомплектующие,
| ИСТИНА КАК ЭтоНабор,
| ВременнаяТаблицаНаборы.НомерСтроки,
| ВременнаяТаблицаНаборы.НоменклатураНабора,
| Неопределено,
| ВременнаяТаблицаНаборы.Количество,
| ВременнаяТаблицаНаборы.КоличествоУпаковок,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1) <> 0 ТОГДА
| (ВременнаяТаблицаНаборы.Сумма) / ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1)
| ИНАЧЕ
| 0
| КОНЕЦ КАК Цена,
| ВременнаяТаблицаНаборы.Сумма КАК Сумма,
| ВременнаяТаблицаНаборы.СуммаНДС,
| ВременнаяТаблицаНаборы.СтавкаНДС,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора,
| Неопределено,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка,
| Ложь,
| ЛОЖЬ
| ИЗ
| ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ГДЕ
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие))
|) КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураПредставления
| ПО (Таблица.Номенклатура = НоменклатураПредставления.Ссылка
| И НоменклатураПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыПредставления
| ПО (Таблица.Характеристика = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураНабораПредставления
| ПО (Таблица.НоменклатураНабора = НоменклатураНабораПредставления.Ссылка
| И НоменклатураНабораПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыНабораПредставления
| ПО (Таблица.ХарактеристикаНабора = ХарактеристикиНоменклатурыНабораПредставления.Ссылка
| И ХарактеристикиНоменклатурыНабораПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыОприходованияПредставления
| ПО (Таблица.ХарактеристикаОприходование = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
|
|УПОРЯДОЧИТЬ ПО
| Таблица.НомерСтроки,
| ЭтоНабор УБЫВ
|;
|УНИЧТОЖИТЬ Товары
|;
|УНИЧТОЖИТЬ ВременнаяТаблицаНаборы
|;
|УНИЧТОЖИТЬ ВременнаяТаблицаНаборыПодготовка
|;
|УНИЧТОЖИТЬ ВременнаяТаблицаНаборыДополнительноЧастьПервая
|;
|УНИЧТОЖИТЬ ВременнаяТаблицаНаборыДополнительноЧастьВторая
|;
|УНИЧТОЖИТЬ ВременнаяТаблицаНаборыДополнительно
|;
|УНИЧТОЖИТЬ ТоварыРазличные
|;
|
|ВЫБРАТЬ
|
| Таблица.Ссылка КАК Ссылка,
|
| ВариантыКомплектацииНоменклатуры.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектацииНоменклатуры.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектацииНоменклатуры.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
|
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Количество КАК Количество,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| ВЫБОР
| КОГДА &ОтображатьСкидки ТОГДА
| Цена
| ИНАЧЕ Таблица.Сумма/Таблица.КоличествоУпаковок
| КОНЕЦ КАК Цена,
| ВЫБОР
| КОГДА &ОтображатьСкидки ТОГДА
| Таблица.СуммаРучнойСкидки + Таблица.СуммаАвтоматическойСкидки
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаСкидки,
| Таблица.Сумма + Таблица.СуммаРучнойСкидки + Таблица.СуммаАвтоматическойСкидки КАК СуммаБезСкидки,
| Таблица.Сумма КАК Сумма,
| Таблица.СтавкаНДС КАК СтавкаНДС,
| Таблица.СуммаНДС КАК СуммаНДС,
| Таблица.Упаковка,
| Таблица.ДатаОтгрузки,
| Таблица.Отменено КАК Отменено,
| Таблица.Содержание КАК Содержание,
| ВЫБОР
| КОГДА
| Таблица.Ссылка.ВернутьМногооборотнуюТару
| И Таблица.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара
|ПОМЕСТИТЬ Товары
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК Таблица
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
| ПО ВариантыКомплектацииНоменклатуры.Владелец = Таблица.НоменклатураНабора
| И ВариантыКомплектацииНоменклатуры.Характеристика = Таблица.ХарактеристикаНабора
| И ВариантыКомплектацииНоменклатуры.Основной
|ГДЕ
| Таблица.Ссылка В(&МассивОбъектов)
| И НЕ Таблица.Отменено
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| МИНИМУМ(Таблица.НомерСтроки) КАК НомерСтроки,
| СУММА(Таблица.Сумма) КАК Сумма,
| СУММА(Таблица.СуммаНДС) КАК СуммаНДС,
| СУММА(Таблица.СуммаСкидки) КАК СуммаСкидки,
| СУММА(Таблица.Сумма - Таблица.СуммаСкидки) КАК СуммаБезСкидки
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыПодготовка
|ИЗ
| Товары КАК Таблица
|
|ГДЕ
| Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТоваров.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ТоварыРазличные
|ИЗ
| Товары КАК ТаблицаТоваров
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Товары.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Товары.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Товары.НоменклатураНабора,
| Товары.ХарактеристикаНабора,
| Товары.Номенклатура,
| Товары.Характеристика,
| ВЫБОР КОГДА Товары.ВариантКомплектацииНоменклатуры.НоменклатураОсновногоКомпонента = Товары.Номенклатура
| И Товары.ВариантКомплектацииНоменклатуры.ХарактеристикаОсновногоКомпонента = Товары.Характеристика ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ОсновнаяКомплектующая,
| Товары.СтавкаНДС КАК СтавкаНДС,
| 0 КАК КоличествоПоУмолчанию,
| Товары.Количество КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьПервая
|ИЗ
| Товары КАК Товары
|
|ГДЕ
| Товары.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыРазличные.Ссылка КАК Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец КАК НоменклатураНабора,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика КАК ХарактеристикаНабора,
| ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК Номенклатура,
| ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
| ЛОЖЬ КАК ОсновнаяКомплектующая,
| NULL КАК СтавкаНДС,
| СУММА(ВариантыКомплектацииНоменклатурыТовары.Количество) КАК КоличествоПоУмолчанию,
| 0 КАК Количество
|ИЗ
| Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыРазличные КАК ТоварыРазличные
| ПО ИСТИНА
|ГДЕ
| ВариантыКомплектацииНоменклатурыТовары.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ Т.ВариантКомплектацииНоменклатуры ИЗ Товары КАК Т)
|
|СГРУППИРОВАТЬ ПО
| ТоварыРазличные.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика,
| ВариантыКомплектацииНоменклатурыТовары.Номенклатура,
| ВариантыКомплектацииНоменклатурыТовары.Характеристика,
| ВариантыКомплектацииНоменклатурыТовары.Упаковка
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика,
| МАКСИМУМ(Таблица.СтавкаНДС) КАК СтавкаНДС,
| МАКСИМУМ(Таблица.ОсновнаяКомплектующая) КАК ОсновнаяКомплектующая,
| СУММА(Таблица.КоличествоПоУмолчанию) КАК КоличествоПоУмолчанию,
| СУММА(Таблица.Количество) КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьВторая
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьПервая КАК Таблица
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика
|;
|
|
|ВЫБРАТЬ
| Результат.Ссылка,
| Результат.ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора,
| Результат.ХарактеристикаНабора,
| МАКСИМУМ(ВЫБОР
| КОГДА Результат.ОсновнаяКомплектующая
| ТОГДА Результат.СтавкаНДС
| ИНАЧЕ null
| КОНЕЦ) КАК СтавкаНДС,
| ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0 И Результат.ОсновнаяКомплектующая
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ null
| КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительно
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьВторая КАК Результат
|СГРУППИРОВАТЬ ПО
| Результат.Ссылка,
| Результат.ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора,
| Результат.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| ВременнаяТаблицаНаборыДополнительно.ВариантКомплектацииНоменклатуры,
|
| ВЫБОР КОГДА Таблица.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию) ТОГДА
| ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
|
| ВЫБОР КОГДА Таблица.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию) ТОГДА
| ВЫБОР КОГДА
| ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| И ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора В (ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоЦенам),ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоДолям)) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.РассчитываетсяИзЦенКомплектующих)
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
| КОНЕЦ
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
|
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.НомерСтроки КАК НомерСтроки,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК КоличествоУпаковок,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК Количество,
| Таблица.Сумма КАК Сумма,
| Таблица.СуммаНДС КАК СуммаНДС,
| Таблица.СуммаСкидки КАК СуммаСкидки,
| Таблица.СуммаБезСкидки КАК СуммаБезСкидки,
| ВременнаяТаблицаНаборыДополнительно.СтавкаНДС КАК СтавкаНДС
|ПОМЕСТИТЬ ВременнаяТаблицаНаборы
|ИЗ
| ВременнаяТаблицаНаборыПодготовка КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборыДополнительно КАК ВременнаяТаблицаНаборыДополнительно
| ПО Таблица.НоменклатураНабора = ВременнаяТаблицаНаборыДополнительно.НоменклатураНабора
| И Таблица.ХарактеристикаНабора = ВременнаяТаблицаНаборыДополнительно.ХарактеристикаНабора
| И Таблица.Ссылка = ВременнаяТаблицаНаборыДополнительно.Ссылка
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Таблица.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| ЕСТЬNULL(НоменклатураНабораПредставления.НаименованиеПолное, Таблица.НоменклатураНабора.НаименованиеПолное) КАК НоменклатураНабораНаименованиеПолное,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ЕСТЬNULL(ХарактеристикиНоменклатурыНабораПредставления.НаименованиеПолное, ЕСТЬNULL(Таблица.ХарактеристикаНабора.НаименованиеПолное, """")) КАК ХарактеристикаНабораНаименованиеПолное,
| Таблица.ЭтоКомплектующие КАК ЭтоКомплектующие,
| Таблица.ЭтоНабор КАК ЭтоНабор,
|
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Номенклатура.Код КАК Код,
| Таблица.Номенклатура.Артикул КАК Артикул,
| ЕСТЬNULL(НоменклатураПредставления.НаименованиеПолное, Таблица.Номенклатура.НаименованиеПолное) КАК НаименованиеПолное,
| ВЫБОР
| КОГДА Таблица.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕ(Таблица.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(Таблица.Упаковка)
| КОНЕЦ КАК ЕдиницаИзмерения,
| Таблица.КоличествоУпаковок КАК Количество,
| Таблица.Цена,
| Таблица.СуммаСкидки,
| Таблица.СуммаБезСкидки,
| Таблица.Сумма КАК Сумма,
| Таблица.СтавкаНДС КАК СтавкаНДС,
| Таблица.СуммаНДС КАК СуммаНДС,
| Таблица.ДатаОтгрузки КАК ДатаОтгрузки,
| ЕСТЬNULL(ХарактеристикиНоменклатурыПредставления.НаименованиеПолное, ЕСТЬNULL(Таблица.Характеристика.НаименованиеПолное, """")) КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ Таблица.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
| Таблица.Отменено КАК Отменено,
| Таблица.Содержание КАК Содержание,
| Таблица.ЭтоВозвратнаяТара
|ИЗ
|(
| ВЫБРАТЬ
| Таблица.Ссылка,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ПустаяСсылка)
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
|
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ПустаяСсылка)
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоКомплектующие,
| ЛОЖЬ КАК ЭтоНабор,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.НомерСтроки
| ИНАЧЕ
| Таблица.НомерСтроки
| КОНЕЦ КАК НомерСтроки,
| Таблица.Номенклатура,
| Таблица.Количество,
| Таблица.КоличествоУпаковок,
| Таблица.Цена,
| Таблица.Сумма,
| Таблица.СуммаНДС,
| Таблица.Характеристика,
| Таблица.Упаковка,
| Таблица.СуммаСкидки,
| Таблица.СуммаБезСкидки,
| Таблица.ЭтоВозвратнаяТара,
| Таблица.СтавкаНДС,
| Таблица.ДатаОтгрузки,
| Таблица.Отменено,
| Таблица.Содержание
| ИЗ
| Товары КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ПО ВременнаяТаблицаНаборы.НоменклатураНабора = Таблица.НоменклатураНабора
| И ВременнаяТаблицаНаборы.ХарактеристикаНабора = Таблица.ХарактеристикаНабора
| И ВременнаяТаблицаНаборы.Ссылка = Таблица.Ссылка
|
| ГДЕ
| Таблица.НоменклатураНабора = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ИЛИ (Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоКомплектующие),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ВременнаяТаблицаНаборы.Ссылка,
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах,
| ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВременнаяТаблицаНаборы.НоменклатураНабора,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора,
| ЛОЖЬ КАК ЭтоКомплектующие,
| ИСТИНА КАК ЭтоНабор,
| ВременнаяТаблицаНаборы.НомерСтроки,
| ВременнаяТаблицаНаборы.НоменклатураНабора,
| ВременнаяТаблицаНаборы.Количество,
| ВременнаяТаблицаНаборы.КоличествоУпаковок,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.СуммаБезСкидки / ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1)
| ИНАЧЕ
| 0
| КОНЕЦ КАК Цена,
| ВременнаяТаблицаНаборы.Сумма КАК Сумма,
| ВременнаяТаблицаНаборы.СуммаНДС,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка,
| ВременнаяТаблицаНаборы.СуммаСкидки,
| ВременнаяТаблицаНаборы.СуммаБезСкидки,
| Ложь,
| ВременнаяТаблицаНаборы.СтавкаНДС,
| Неопределено,
| Ложь,
| """"
| ИЗ
| ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ГДЕ
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие))
|) КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураПредставления
| ПО (Таблица.Номенклатура = НоменклатураПредставления.Ссылка
| И НоменклатураПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыПредставления
| ПО (Таблица.Характеристика = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураНабораПредставления
| ПО (Таблица.НоменклатураНабора = НоменклатураНабораПредставления.Ссылка
| И НоменклатураНабораПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыНабораПредставления
| ПО (Таблица.ХарактеристикаНабора = ХарактеристикиНоменклатурыНабораПредставления.Ссылка
| И ХарактеристикиНоменклатурыНабораПредставления.КодЯзыка = &КодЯзыка)
|
|УПОРЯДОЧИТЬ ПО
| Таблица.НомерСтроки,
| ЭтоНабор УБЫВ
|";
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Таблица.Упаковка",
"Таблица.Номенклатура"));
ЗаполнитьТабличныйДокументЗаявкиНаВозврат(ТабличныйДокумент, Запрос, ОбъектыПечати, КодЯзыка);
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции
Процедура ЗаполнитьТабличныйДокументЗаявкиНаВозврат(ТабличныйДокумент, Запрос, ОбъектыПечати, КодЯзыка)
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаявкаНаВозвратТоваровОтКлиента_ЗаявкаНаВозврат";
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
РезультатЗапроса = ПакетРезультатовЗапроса[0];
ДанныеПечати = РезультатЗапроса.Выбрать();
РезультатПоТабличнойЧастиВозвращаемыеТовары = ПакетРезультатовЗапроса[8];
РезультатПоТабличнойЧастиЗаменяющиеТовары = ПакетРезультатовЗапроса[ПакетРезультатовЗапроса.Количество() - 1];
ИспользоватьРучныеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
ИспользоватьАвтоматическиеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
ПервыйДокумент = Истина;
КолонкаКодов = ФормированиеПечатныхФорм.ДополнительнаяКолонкаПечатныхФормДокументов();
ИмяКолонкиКодов = КолонкаКодов.ИмяКолонки;
ВыводитьКоды = ЗначениеЗаполнено(ИмяКолонкиКодов);
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаявкаНаВозвратТоваровОтКлиента.ПФ_MXL_ЗаявкаНаВозврат", КодЯзыка);
ОбластьЗаголовокЗаменаИсправление = Макет.ПолучитьОбласть("ЗаголовокЗаменаИсправление");
ОбластьЗаголовокВозвратИсправление = Макет.ПолучитьОбласть("ЗаголовокВозвратИсправление");
ОбластьЗаголовокЗамена = Макет.ПолучитьОбласть("ЗаголовокЗамена");
ОбластьЗаголовокВозврат = Макет.ПолучитьОбласть("ЗаголовокВозврат");
ОбластьПоставщик = Макет.ПолучитьОбласть("Поставщик");
ОбластьПокупатель = Макет.ПолучитьОбласть("Покупатель");
ОбластьДополнительнаяИнформация = Макет.ПолучитьОбласть("ДополнительнаяИнформация");
ОбластьПодвалЗаказа = Макет.ПолучитьОбласть("ПодвалЗаказа");
Если Не ЗначениеЗаполнено(ИмяКолонкиКодов) Тогда
ОбластьПервойКолонкиТовара = Макет.Область("ПерваяКолонкаТовара");
ОбластьПервойКолонкиТовара.ШиринаКолонки = ОбластьПервойКолонкиТовара.ШиринаКолонки + 12;
КонецЕсли;
Пока ДанныеПечати.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
Иначе
ПервыйДокумент = Ложь;
КонецЕсли;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
ЗаменяющиеТоварыТЧ = РезультатПоТабличнойЧастиЗаменяющиеТовары.Выгрузить();
ВозвращаемыеТоварыТЧ = РезультатПоТабличнойЧастиВозвращаемыеТовары.Выгрузить();
ЕстьНаценки = Ложь;
ЕстьСкидки = Ложь;
Товары = ЗаменяющиеТоварыТЧ.НайтиСтроки(СтруктураПоиска);
Скидки = Новый Структура;
Если ИспользоватьРучныеСкидки Или ИспользоватьАвтоматическиеСкидки Тогда
Если ТипЗнч(Товары) = Тип("ТаблицаЗначений") Или ТипЗнч(Товары) = Тип("Массив") Тогда
Для Каждого СтрокаТоваров Из Товары Цикл
Если СтрокаТоваров.СуммаСкидки>0 Тогда
ЕстьСкидки = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаТоваров Из Товары Цикл
Если СтрокаТоваров.СуммаСкидки<0 Тогда
ЕстьНаценки = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
ИначеЕсли ТипЗнч(Товары) = Тип("ВыборкаИзРезультатаЗапроса") Тогда
Пока Товары.Следующий() Цикл
Если Товары.СуммаСкидки>0 Тогда
ЕстьСкидки = Истина;
ИначеЕсли Товары.СуммаСкидки<0 Тогда
ЕстьНаценки = Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ЕстьНаценки И ЕстьСкидки Тогда
Скидки.Вставить("ПостфиксКолонки", "СкидкаНаценка");
ИначеЕсли ЕстьНаценки И НЕ ЕстьСкидки Тогда
Скидки.Вставить("ПостфиксКолонки", "Наценка");
ИначеЕсли ЕстьСкидки Тогда
Скидки.Вставить("ПостфиксКолонки", "Скидка");
КонецЕсли;
КонецЕсли;
Скидки.Вставить("ЕстьСкидки", ЕстьНаценки ИЛИ ЕстьСкидки);
Скидки.Вставить("ЕстьСкидка", ЕстьСкидки);
Скидки.Вставить("ЕстьНаценка", ЕстьНаценки);
ЕстьСкидки = Скидки.ЕстьСкидки;
ДанныеОИсправлении = Новый Структура("НомерИсправляемогоДокумента, ДатаИсправляемогоДокумента");
ЗаполнитьЗначенияСвойств(ДанныеОИсправлении, ДанныеПечати);
ИсправительныйДокумент = ЗначениеЗаполнено(ДанныеОИсправлении.НомерИсправляемогоДокумента)
И ЗначениеЗаполнено(ДанныеОИсправлении.ДатаИсправляемогоДокумента);
НомерНаПечать = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДанныеПечати.Номер);
Если ИсправительныйДокумент Тогда
НомерИсправляемогоДокументаНаПечать = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(
ДанныеОИсправлении.НомерИсправляемогоДокумента);
КонецЕсли;
СтруктураДанныхШапки = Новый Структура;
СтруктураДанныхШапки.Вставить("НомерДокумента", НомерНаПечать);
СтруктураДанныхШапки.Вставить("ДатаДокумента", Формат(ДанныеПечати.Дата, СтрШаблон("Л=%1;ДЛФ=DD", КодЯзыка)));
ЕстьТоварыНаЗамену = ЗаменяющиеТоварыТЧ.НайтиСтроки(Новый Структура("Отменено, Ссылка", Ложь, ДанныеПечати.Ссылка)).Количество() > 0;
Если ИсправительныйДокумент Тогда
СтруктураДанныхШапки.Вставить("НомерИсправляемогоДокумента", НомерИсправляемогоДокументаНаПечать);
СтруктураДанныхШапки.Вставить("ДатаИсправляемогоДокумента", Формат(ДанныеОИсправлении.ДатаИсправляемогоДокумента, СтрШаблон("Л=%1;ДЛФ=DD", КодЯзыка)));
ОбластьЗаголовокДляВывода = ?(ЕстьТоварыНаЗамену, ОбластьЗаголовокЗаменаИсправление, ОбластьЗаголовокВозвратИсправление);
Иначе
ОбластьЗаголовокДляВывода = ?(ЕстьТоварыНаЗамену, ОбластьЗаголовокЗамена, ОбластьЗаголовокВозврат);
КонецЕсли;
ОбластьЗаголовокДляВывода.Параметры.Заполнить(СтруктураДанныхШапки);
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьЗаголовокДляВывода, ДанныеПечати.Ссылка);
ТабличныйДокумент.Вывести(ОбластьЗаголовокДляВывода);
СведенияОЮрФизЛице = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата);
Если НЕ ЗначениеЗаполнено(КодЯзыка)
ИЛИ КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка() Тогда
ИмяРеквизитаНаименования = "ПолноеНаименование";
ИмяРеквизитаАдрес = "ЮридическийАдрес";
Иначе
ИмяРеквизитаНаименования = ?(ЗначениеЗаполнено(СведенияОЮрФизЛице.НаименованиеМеждународное),
"НаименованиеМеждународное",
"ПолноеНаименование");
ИмяРеквизитаАдрес = ?(ЗначениеЗаполнено(СведенияОЮрФизЛице.МеждународныйАдрес),
"МеждународныйАдрес",
"ЮридическийАдрес");
КонецЕсли;
Реквизиты = СтрШаблон("%1,ИНН,КПП,%2,Телефоны,", ИмяРеквизитаНаименования, ИмяРеквизитаАдрес);
СтруктураДанныхПоставщик = Новый Структура;
СтруктураДанныхПоставщик.Вставить("ПредставлениеПоставщика",
ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОЮрФизЛице, Реквизиты));
ОбластьПоставщик.Параметры.Заполнить(СтруктураДанныхПоставщик);
ТабличныйДокумент.Вывести(ОбластьПоставщик);
СведенияОЮрФизЛице = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Контрагент, ДанныеПечати.Дата);
Если НЕ ЗначениеЗаполнено(КодЯзыка)
ИЛИ КодЯзыка = ОбщегоНазначения.КодОсновногоЯзыка() Тогда
ИмяРеквизитаНаименования = "ПолноеНаименование";
ИмяРеквизитаАдрес = "ЮридическийАдрес";
Иначе
ИмяРеквизитаНаименования = ?(ЗначениеЗаполнено(СведенияОЮрФизЛице.НаименованиеМеждународное),
"НаименованиеМеждународное",
"ПолноеНаименование");
ИмяРеквизитаАдрес = ?(ЗначениеЗаполнено(СведенияОЮрФизЛице.МеждународныйАдрес),
"МеждународныйАдрес",
"ЮридическийАдрес");
КонецЕсли;
Реквизиты = СтрШаблон("%1,ИНН,КПП,%2,Телефоны,", ИмяРеквизитаНаименования, ИмяРеквизитаАдрес);
СтруктураДанныхПокупатель = Новый Структура;
СтруктураДанныхПокупатель.Вставить("ПредставлениеПокупателя",
ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОЮрФизЛице, Реквизиты));
ОбластьПокупатель.Параметры.Заполнить(СтруктураДанныхПокупатель);
ТабличныйДокумент.Вывести(ОбластьПокупатель);
ПараметрыВывода = Новый Структура;
ПараметрыВывода.Вставить("ВыводитьКоды", ВыводитьКоды);
ПараметрыВывода.Вставить("ТолькоКоличество", ДанныеПечати.ВозвратОтКомиссионера);
ПараметрыВывода.Вставить("УчитыватьНДС", ДанныеПечати.УчитыватьНДС);
ПараметрыВывода.Вставить("ЦенаВключаетНДС", ДанныеПечати.ЦенаВключаетНДС);
ПараметрыВывода.Вставить("ВыводитьПодвалНДС", Ложь);
ПараметрыВывода.Вставить("ЕстьСкидки", Ложь);
ПараметрыВывода.Вставить("КодЯзыка", КодЯзыка);
ВывестиТаблицуТоваровВТабличныйДокументЗаявкиНаВозврат(
ТабличныйДокумент,
Макет,
ВозвращаемыеТоварыТЧ,
ИмяКолонкиКодов,
"ВозвращаемыйТовар",
ДанныеПечати,
ПараметрыВывода
);
Если ЕстьТоварыНаЗамену Тогда
ПараметрыВывода = Новый Структура;
ПараметрыВывода.Вставить("ВыводитьКоды", ВыводитьКоды);
ПараметрыВывода.Вставить("ТолькоКоличество", Ложь);
ПараметрыВывода.Вставить("УчитыватьНДС", ДанныеПечати.УчитыватьНДС);
ПараметрыВывода.Вставить("ЦенаВключаетНДС", ДанныеПечати.ЦенаВключаетНДС);
ПараметрыВывода.Вставить("ВыводитьПодвалНДС", Истина);
ПараметрыВывода.Вставить("ЕстьСкидки", НЕ ДанныеПечати.ВозвратОтКомиссионера И ЕстьСкидки);
ПараметрыВывода.Вставить("Скидки", Скидки);
ПараметрыВывода.Вставить("КодЯзыка", КодЯзыка);
ВывестиТаблицуТоваровВТабличныйДокументЗаявкиНаВозврат(
ТабличныйДокумент,
Макет,
ЗаменяющиеТоварыТЧ,
ИмяКолонкиКодов,
"ЗаменяющийТовар",
ДанныеПечати,
ПараметрыВывода
);
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеПечати.ДополнительнаяИнформация) Тогда
ОбластьДополнительнаяИнформация.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьДополнительнаяИнформация);
КонецЕсли;
СтруктураДанныхМенеджер = Новый Структура;
СтруктураДанныхМенеджер.Вставить("Менеджер", ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.Менеджер, ДанныеПечати.Дата));
ОбластьПодвалЗаказа.Параметры.Заполнить(СтруктураДанныхМенеджер);
ТабличныйДокумент.Вывести(ОбластьПодвалЗаказа);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(
ТабличныйДокумент,
НомерСтрокиНачало,
ОбъектыПечати,
ДанныеПечати.Ссылка);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
КонецПроцедуры
Процедура УстановитьПараметр(ОбластьМакета, ИмяПараметра, ЗначениеПараметра)
ОбластьМакета.Параметры.Заполнить(Новый Структура(ИмяПараметра, ЗначениеПараметра));
КонецПроцедуры
Процедура ВывестиТаблицуТоваровВТабличныйДокументЗаявкиНаВозврат(ТабличныйДокумент,
Макет, Таблица, ИмяКолонкиКодов, ИмяКолонкиТоваров,
ДанныеПечати, ПараметрыВывода)
Валюта = ДанныеПечати.Валюта;
ПоказыватьНДС = Константы.ВыводитьДопКолонкиНДС.Получить();
ЭтоСтрокиНДССоСкидкой = Ложь;
ЭтоСтрокиСоСкидкой = Ложь;
Если ПараметрыВывода.ТолькоКоличество Тогда
ШапкаТаблицы = ?(ИмяКолонкиТоваров = "ВозвращаемыйТовар", "ШапкаТаблицыБезСуммВозвращаемый", "ШапкаТаблицыБезСуммЗаменяющий");
ПодвалТаблицы = "ПодвалТаблицыБезСумм";
СтрокаТаблицы = "СтрокаТаблицыБезСумм";
СтрокаТаблицыНабор = "СтрокаТаблицыБезСуммНабор";
СтрокаТаблицыКомплектующие = "СтрокаТаблицыБезСуммКомплектующие";
Иначе
Если ПараметрыВывода.УчитыватьНДС И ПоказыватьНДС И ПараметрыВывода.ЕстьСкидки Тогда
ШапкаТаблицы = ?(ИмяКолонкиТоваров = "ВозвращаемыйТовар", "ШапкаТаблицыСНДССоСкидкойВозвращаемый", "ШапкаТаблицыСНДССоСкидкойЗаменяющий");
ПодвалТаблицы = "ПодвалТаблицыСНДССоСкидкой";
СтрокаТаблицы = "СтрокаТаблицыСНДССоСкидкой";
СтрокаТаблицыНабор = "СтрокаТаблицыСНДССоСкидкойНабор";
СтрокаТаблицыКомплектующие = "СтрокаТаблицыСНДССоСкидкойКомплектующие";
ЭтоСтрокиНДССоСкидкой = Истина;
ИначеЕсли ПараметрыВывода.УчитыватьНДС И ПоказыватьНДС И Не ПараметрыВывода.ЕстьСкидки Тогда
ШапкаТаблицы = ?(ИмяКолонкиТоваров = "ВозвращаемыйТовар", "ШапкаТаблицыСНДСВозвращаемый", "ШапкаТаблицыСНДСЗаменяющий");
ПодвалТаблицы = "ПодвалТаблицыСНДС";
СтрокаТаблицы = "СтрокаТаблицыСНДС";
СтрокаТаблицыНабор = "СтрокаТаблицыСНДСНабор";
СтрокаТаблицыКомплектующие = "СтрокаТаблицыСНДСКомплектующие";
ИначеЕсли Не (ПараметрыВывода.УчитыватьНДС И ПоказыватьНДС) И ПараметрыВывода.ЕстьСкидки Тогда
ШапкаТаблицы = ?(ИмяКолонкиТоваров = "ВозвращаемыйТовар", "ШапкаТаблицыСоСкидкойВозвращаемый", "ШапкаТаблицыСоСкидкойЗаменяющий");
ПодвалТаблицы = "ПодвалТаблицыСоСкидкой";
СтрокаТаблицы = "СтрокаТаблицыСоСкидкой";
СтрокаТаблицыНабор = "СтрокаТаблицыСоСкидкойНабор";
СтрокаТаблицыКомплектующие = "СтрокаТаблицыСоСкидкойКомплектующие";
ЭтоСтрокиСоСкидкой = Истина;
Иначе
ШапкаТаблицы = ?(ИмяКолонкиТоваров = "ВозвращаемыйТовар", "ШапкаТаблицыВозвращаемый", "ШапкаТаблицыЗаменяющий");
ПодвалТаблицы = "ПодвалТаблицы";
СтрокаТаблицы = "СтрокаТаблицы";
СтрокаТаблицыНабор = "СтрокаТаблицыНабор";
СтрокаТаблицыКомплектующие = "СтрокаТаблицыКомплектующие";
КонецЕсли;
КонецЕсли;
УчитыватьОтмены = (Таблица.Колонки.Найти("Отменено") <> Неопределено);
Если ЭтоСтрокиНДССоСкидкой Тогда
КолонкаНомерСтроки = "КолонкаНДСНомерСтроки";
КолонкаАртикул = "КолонкаНДСАртикул";
КолонкаКод = "КолонкаНДСКод";
КолонкаДанныеТоварКоличество = "КолонкаНДСДанныеТоварКоличествоЦена";
КолонкаДанныеНДССкидкаНаценка = "ДанныеНДССкидкаНаценка";
КолонкаДанныеНДСНаценка = "ДанныеНДСНаценка";
КолонкаДанныеНДССкидка = "ДанныеНДССкидка";
КолонкаДанныеСумма = "КолонкаНДСДанныеСумма";
ПерваяКолонкаТовараНДС = "ПерваяКолонкаТовараНДС";
ОбластьШапкаНомер = Макет.ПолучитьОбласть(ШапкаТаблицы + "|" + КолонкаНомерСтроки);
ОбластьПодвалНомер = Макет.ПолучитьОбласть(ПодвалТаблицы + "|" + КолонкаНомерСтроки);
ОбластьНДСНомер = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|" + КолонкаНомерСтроки);
ОбластьШапкаКод = Макет.ПолучитьОбласть(ШапкаТаблицы + "|" + КолонкаКод);
ОбластьШапкаАртикул = Макет.ПолучитьОбласть(ШапкаТаблицы + "|" + КолонкаАртикул);
ОбластьПодвалКод = Макет.ПолучитьОбласть(ПодвалТаблицы + "|" + КолонкаКод);
ОбластьНДСКод = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|" + КолонкаКод);
ОбластьШапкаДанные = Новый Структура;
ОбластьШапкаДанные.Вставить("КоличествоЦена", Макет.ПолучитьОбласть(ШапкаТаблицы + "|КолонкаНДСДанныеТоварКоличествоЦена"));
ОбластьШапкаДанные.Вставить("Скидка", Макет.ПолучитьОбласть(ШапкаТаблицы + "|ДанныеНДС" + ПараметрыВывода.Скидки.ПостфиксКолонки));
ОбластьШапкаДанные.Вставить("Сумма", Макет.ПолучитьОбласть(ШапкаТаблицы + "|КолонкаНДСДанныеСумма"));
ОбластьПодвалДанные = Новый Структура;
ОбластьПодвалДанные.Вставить("КоличествоЦена", Макет.ПолучитьОбласть(ПодвалТаблицы + "|КолонкаНДСДанныеТоварКоличествоЦена"));
ОбластьПодвалДанные.Вставить("Скидка", Макет.ПолучитьОбласть(ПодвалТаблицы + "|ДанныеНДС" + ПараметрыВывода.Скидки.ПостфиксКолонки));
ОбластьПодвалДанные.Вставить("Сумма", Макет.ПолучитьОбласть(ПодвалТаблицы + "|КолонкаНДСДанныеСумма"));
ОбластьБезНДСДанные = Макет.ПолучитьОбласть("ПодвалТаблицыНДСБезНДС|КолонкаДанные");
ОбластьВТЧНДСДанные = Макет.ПолучитьОбласть("ПодвалТаблицыВТЧНДС|КолонкаДанные");
ОбластьНДСДанные = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|КолонкаДанные");
ОбластьСуммаПрописью = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьСуммаПрописьюТолькоКоличество = Макет.ПолучитьОбласть("СуммаПрописьюТолькоКоличество");
ОбластьСтрокаНомерСтандарт = Макет.ПолучитьОбласть(СтрокаТаблицы + "|" + КолонкаНомерСтроки);
ОбластьСтрокаДанныеСтандарт = Новый Структура;
ОбластьСтрокаДанныеСтандарт.Вставить("КоличествоЦена", Макет.ПолучитьОбласть(СтрокаТаблицы + "|КолонкаНДСДанныеТоварКоличествоЦена"));
ОбластьСтрокаДанныеСтандарт.Вставить("Скидка", Макет.ПолучитьОбласть(СтрокаТаблицы + "|ДанныеНДС" + ПараметрыВывода.Скидки.ПостфиксКолонки));
ОбластьСтрокаДанныеСтандарт.Вставить("Сумма", Макет.ПолучитьОбласть(СтрокаТаблицы + "|КолонкаНДСДанныеСумма"));
ОбластьСтрокаКодСтандарт = Макет.ПолучитьОбласть(СтрокаТаблицы + "|" + КолонкаКод);
ИспользоватьНаборы = Ложь;
Если Таблица.Колонки.Найти("ЭтоНабор") <> Неопределено Тогда
ИспользоватьНаборы = Истина;
ОбластьСтрокаНомерНабор = Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|" + КолонкаНомерСтроки);
ОбластьСтрокаДанныеНабор = Новый Структура;
ОбластьСтрокаДанныеНабор.Вставить("КоличествоЦена", Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|КолонкаНДСДанныеТоварКоличествоЦена"));
ОбластьСтрокаДанныеНабор.Вставить("Скидка", Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|ДанныеНДС" + ПараметрыВывода.Скидки.ПостфиксКолонки));
ОбластьСтрокаДанныеНабор.Вставить("Сумма", Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|КолонкаНДСДанныеСумма"));
ОбластьСтрокаКодНабор = Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|" + КолонкаКод);
ОбластьСтрокаНомерКомплектующие = Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|" + КолонкаНомерСтроки);
ОбластьСтрокаДанныеКомплектующие = Новый Структура;
ОбластьСтрокаДанныеКомплектующие.Вставить("КоличествоЦена", Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|КолонкаНДСДанныеТоварКоличествоЦена"));
ОбластьСтрокаДанныеКомплектующие.Вставить("Скидка", Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|ДанныеНДС" + ПараметрыВывода.Скидки.ПостфиксКолонки));
ОбластьСтрокаДанныеКомплектующие.Вставить("Сумма", Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|КолонкаНДСДанныеСумма"));
ОбластьСтрокаКодКомплектующие = Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|" + КолонкаКод);
КонецЕсли;
ИначеЕсли ЭтоСтрокиСоСкидкой Тогда
КолонкаНомерСтроки = "КолонкаСкидкаНомерСтроки";
КолонкаАртикул = "КолонкаСкидкаАртикул";
КолонкаКод = "КолонкаСкидкаКод";
КолонкаДанныеТоварКоличество = "КолонкаСкидкаДанныеТоварКоличествоЦена";
КолонкаДанныеНДССкидкаНаценка = "ДанныеСкидкаНаценка";
КолонкаДанныеНДСНаценка = "ДанныеНаценка";
КолонкаДанныеНДССкидка = "ДанныеСкидка";
КолонкаДанныеСумма = "КолонкаСкидкаДанныеСумма";
ПерваяКолонкаТовараНДС = "ПерваяКолонкаТовараСкидка";
ОбластьШапкаНомер = Макет.ПолучитьОбласть(ШапкаТаблицы + "|" + КолонкаНомерСтроки);
ОбластьПодвалНомер = Макет.ПолучитьОбласть(ПодвалТаблицы + "|" + КолонкаНомерСтроки);
ОбластьНДСНомер = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|" + КолонкаНомерСтроки);
ОбластьШапкаКод = Макет.ПолучитьОбласть(ШапкаТаблицы + "|" + КолонкаКод);
ОбластьШапкаАртикул = Макет.ПолучитьОбласть(ШапкаТаблицы + "|" + КолонкаАртикул);
ОбластьПодвалКод = Макет.ПолучитьОбласть(ПодвалТаблицы + "|" + КолонкаКод);
ОбластьНДСКод = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|" + КолонкаКод);
ОбластьШапкаДанные = Новый Структура;
ОбластьШапкаДанные.Вставить("КоличествоЦена", Макет.ПолучитьОбласть(ШапкаТаблицы + "|КолонкаСкидкаДанныеТоварКоличествоЦена"));
ОбластьШапкаДанные.Вставить("Скидка", Макет.ПолучитьОбласть(ШапкаТаблицы + "|Данные" + ПараметрыВывода.Скидки.ПостфиксКолонки));
ОбластьШапкаДанные.Вставить("Сумма", Макет.ПолучитьОбласть(ШапкаТаблицы + "|КолонкаСкидкаДанныеСумма"));
ОбластьПодвалДанные = Новый Структура;
ОбластьПодвалДанные.Вставить("КоличествоЦена", Макет.ПолучитьОбласть(ПодвалТаблицы + "|КолонкаСкидкаДанныеТоварКоличествоЦена"));
ОбластьПодвалДанные.Вставить("Скидка", Макет.ПолучитьОбласть(ПодвалТаблицы + "|Данные" + ПараметрыВывода.Скидки.ПостфиксКолонки));
ОбластьПодвалДанные.Вставить("Сумма", Макет.ПолучитьОбласть(ПодвалТаблицы + "|КолонкаСкидкаДанныеСумма"));
ОбластьБезНДСДанные = Макет.ПолучитьОбласть("ПодвалТаблицыНДСБезНДС|КолонкаДанные");
ОбластьВТЧНДСДанные = Макет.ПолучитьОбласть("ПодвалТаблицыВТЧНДС|КолонкаДанные");
ОбластьНДСДанные = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|КолонкаДанные");
ОбластьСуммаПрописью = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьСуммаПрописьюТолькоКоличество = Макет.ПолучитьОбласть("СуммаПрописьюТолькоКоличество");
ОбластьСтрокаНомерСтандарт = Макет.ПолучитьОбласть(СтрокаТаблицы + "|" + КолонкаНомерСтроки);
ОбластьСтрокаДанныеСтандарт = Новый Структура;
ОбластьСтрокаДанныеСтандарт.Вставить("КоличествоЦена", Макет.ПолучитьОбласть(СтрокаТаблицы + "|КолонкаСкидкаДанныеТоварКоличествоЦена"));
ОбластьСтрокаДанныеСтандарт.Вставить("Скидка", Макет.ПолучитьОбласть(СтрокаТаблицы + "|Данные" + ПараметрыВывода.Скидки.ПостфиксКолонки));
ОбластьСтрокаДанныеСтандарт.Вставить("Сумма", Макет.ПолучитьОбласть(СтрокаТаблицы + "|КолонкаСкидкаДанныеСумма"));
ОбластьСтрокаКодСтандарт = Макет.ПолучитьОбласть(СтрокаТаблицы + "|" + КолонкаКод);
ИспользоватьНаборы = Ложь;
Если Таблица.Колонки.Найти("ЭтоНабор") <> Неопределено Тогда
ИспользоватьНаборы = Истина;
ОбластьСтрокаНомерНабор = Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|" + КолонкаНомерСтроки);
ОбластьСтрокаДанныеНабор = Новый Структура;
ОбластьСтрокаДанныеНабор.Вставить("КоличествоЦена", Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|КолонкаСкидкаДанныеТоварКоличествоЦена"));
ОбластьСтрокаДанныеНабор.Вставить("Скидка", Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|Данные" + ПараметрыВывода.Скидки.ПостфиксКолонки));
ОбластьСтрокаДанныеНабор.Вставить("Сумма", Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|КолонкаСкидкаДанныеСумма"));
ОбластьСтрокаКодНабор = Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|" + КолонкаКод);
ОбластьСтрокаНомерКомплектующие = Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|" + КолонкаНомерСтроки);
ОбластьСтрокаДанныеКомплектующие = Новый Структура;
ОбластьСтрокаДанныеКомплектующие.Вставить("КоличествоЦена", Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|КолонкаСкидкаДанныеТоварКоличествоЦена"));
ОбластьСтрокаДанныеКомплектующие.Вставить("Скидка", Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|Данные" + ПараметрыВывода.Скидки.ПостфиксКолонки));
ОбластьСтрокаДанныеКомплектующие.Вставить("Сумма", Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|КолонкаСкидкаДанныеСумма"));
ОбластьСтрокаКодКомплектующие = Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|" + КолонкаКод);
КонецЕсли;
Иначе
ОбластьШапкаНомер = Макет.ПолучитьОбласть(ШапкаТаблицы + "|КолонкаНомерСтроки");
ОбластьПодвалНомер = Макет.ПолучитьОбласть(ПодвалТаблицы + "|КолонкаНомерСтроки");
ОбластьНДСНомер = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|КолонкаНомерСтроки");
ОбластьШапкаКод = Макет.ПолучитьОбласть(ШапкаТаблицы + "|КолонкаКод");
ОбластьШапкаАртикул = Макет.ПолучитьОбласть(ШапкаТаблицы + "|КолонкаАртикул");
ОбластьПодвалКод = Макет.ПолучитьОбласть(ПодвалТаблицы + "|КолонкаКод");
ОбластьНДСКод = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|КолонкаКод");
ОбластьШапкаДанные = Макет.ПолучитьОбласть(ШапкаТаблицы + "|КолонкаДанные");
ОбластьПодвалДанные = Макет.ПолучитьОбласть(ПодвалТаблицы + "|КолонкаДанные");
ОбластьБезНДСДанные = Макет.ПолучитьОбласть("ПодвалТаблицыНДСБезНДС|КолонкаДанные");
ОбластьВТЧНДСДанные = Макет.ПолучитьОбласть("ПодвалТаблицыВТЧНДС|КолонкаДанные");
ОбластьНДСДанные = Макет.ПолучитьОбласть("ПодвалТаблицыНДС|КолонкаДанные");
ОбластьСуммаПрописью = Макет.ПолучитьОбласть("СуммаПрописью");
ОбластьСуммаПрописьюТолькоКоличество = Макет.ПолучитьОбласть("СуммаПрописьюТолькоКоличество");
ОбластьСтрокаНомерСтандарт = Макет.ПолучитьОбласть(СтрокаТаблицы + "|КолонкаНомерСтроки");
ОбластьСтрокаДанныеСтандарт = Макет.ПолучитьОбласть(СтрокаТаблицы + "|КолонкаДанные");
ОбластьСтрокаКодСтандарт = Макет.ПолучитьОбласть(СтрокаТаблицы + "|КолонкаКод");
ИспользоватьНаборы = Ложь;
Если Таблица.Колонки.Найти("ЭтоНабор") <> Неопределено Тогда
ИспользоватьНаборы = Истина;
ОбластьСтрокаНомерНабор = Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|КолонкаНомерСтроки");
ОбластьСтрокаДанныеНабор = Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|КолонкаДанные");
ОбластьСтрокаКодНабор = Макет.ПолучитьОбласть(СтрокаТаблицыНабор + "|КолонкаКод");
ОбластьСтрокаНомерКомплектующие = Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|КолонкаНомерСтроки");
ОбластьСтрокаДанныеКомплектующие = Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|КолонкаДанные");
ОбластьСтрокаКодКомплектующие = Макет.ПолучитьОбласть(СтрокаТаблицыКомплектующие + "|КолонкаКод");
КонецЕсли;
КонецЕсли;
ПустыеДанные = НаборыСервер.ПустыеДанные();
ТабличныйДокумент.Вывести(ОбластьШапкаНомер);
Если ПараметрыВывода.ВыводитьКоды Тогда
Если ИмяКолонкиКодов = "Код" Тогда
ТабличныйДокумент.Присоединить(ОбластьШапкаКод);
ИначеЕсли ИмяКолонкиКодов = "Артикул" Тогда
ТабличныйДокумент.Присоединить(ОбластьШапкаАртикул);
КонецЕсли;
КонецЕсли;
Если ТипЗнч(ОбластьШапкаДанные) = Тип("Структура") Тогда
ТабличныйДокумент.Присоединить(ОбластьШапкаДанные.КоличествоЦена);
ТабличныйДокумент.Присоединить(ОбластьШапкаДанные.Скидка);
ТабличныйДокумент.Присоединить(ОбластьШапкаДанные.Сумма);
Иначе
ТабличныйДокумент.Присоединить(ОбластьШапкаДанные);
КонецЕсли;
СтруктураИтогов = Новый Структура;
Если НЕ ПараметрыВывода.ТолькоКоличество Тогда
СтруктураИтогов.Вставить("Всего", 0);
КонецЕсли;
Если ПараметрыВывода.УчитыватьНДС Тогда
СтруктураИтогов.Вставить("ВсегоНДС", 0);
КонецЕсли;
Если ПараметрыВывода.ЕстьСкидки Тогда
СтруктураИтогов.Вставить("ВсегоБезСкидки", 0);
СтруктураИтогов.Вставить("ВсегоСкидка", 0);
КонецЕсли;
Если ПараметрыВывода.УчитыватьНДС Тогда
СоответствиеСтавокНДС = ФормированиеПечатныхФорм.СоответствиеСтавокИСуммНДС();
КонецЕсли;
СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
ТЧ = Таблица.НайтиСтроки(СтруктураПоиска);
НомерСтроки = 0;
Для Каждого Строка Из ТЧ Цикл
Если УчитыватьОтмены И Строка.Отменено Тогда
Продолжить;
КонецЕсли;
Если НаборыСервер.ИспользоватьОбластьНабор(Строка, ИспользоватьНаборы) Тогда
ОбластьСтрокаНомер = ОбластьСтрокаНомерНабор;
ОбластьСтрокаДанные = ОбластьСтрокаДанныеНабор;
ОбластьСтрокаКод = ОбластьСтрокаКодНабор;
ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(Строка, ИспользоватьНаборы) Тогда
ОбластьСтрокаНомер = ОбластьСтрокаНомерКомплектующие;
ОбластьСтрокаДанные = ОбластьСтрокаДанныеКомплектующие;
ОбластьСтрокаКод = ОбластьСтрокаКодКомплектующие;
Иначе
ОбластьСтрокаНомер = ОбластьСтрокаНомерСтандарт;
ОбластьСтрокаДанные = ОбластьСтрокаДанныеСтандарт;
ОбластьСтрокаКод = ОбластьСтрокаКодСтандарт;
КонецЕсли;
Если НаборыСервер.ВыводитьТолькоЗаголовок(Строка, ИспользоватьНаборы) Тогда
УстановитьПараметр(ОбластьСтрокаНомер, "НомерСтроки", Неопределено);
Иначе
НомерСтроки = НомерСтроки + 1;
УстановитьПараметр(ОбластьСтрокаНомер, "НомерСтроки", НомерСтроки);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьСтрокаНомер);
Если ПараметрыВывода.ВыводитьКоды Тогда
СтруктураДанныхАртикул = Новый Структура("Артикул", Строка[ИмяКолонкиКодов]);
ОбластьСтрокаКод.Параметры.Заполнить(СтруктураДанныхАртикул);
ТабличныйДокумент.Присоединить(ОбластьСтрокаКод);
КонецЕсли;
Если ТипЗнч(ОбластьСтрокаДанные) = Тип("Структура") Тогда
Если НаборыСервер.ВыводитьТолькоЗаголовок(Строка, ИспользоватьНаборы) Тогда
ДанныеДляЗаполнения = ПустыеДанные;
Иначе
ДанныеДляЗаполнения = Строка;
КонецЕсли;
ОбластьСтрокаДанные.КоличествоЦена.Параметры.Заполнить(ДанныеДляЗаполнения);
ОбластьСтрокаДанные.Скидка.Параметры.Заполнить(ДанныеДляЗаполнения);
ОбластьСтрокаДанные.Сумма.Параметры.Заполнить(ДанныеДляЗаполнения);
Если ПараметрыВывода.ЕстьСкидки Тогда
СуммаСкидки = ?(ДанныеДляЗаполнения.СуммаСкидки = "", 0, ДанныеДляЗаполнения.СуммаСкидки);
КонецЕсли;
Иначе
Если НаборыСервер.ВыводитьТолькоЗаголовок(Строка, ИспользоватьНаборы) Тогда
ОбластьСтрокаДанные.Параметры.Заполнить(ПустыеДанные);
Иначе
ОбластьСтрокаДанные.Параметры.Заполнить(Строка);
КонецЕсли;
Если ПараметрыВывода.ЕстьСкидки Тогда
СуммаСкидки = ОбластьСтрокаДанные.Параметры.СуммаСкидки;
КонецЕсли;
КонецЕсли;
ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(Строка, ИспользоватьНаборы);
СтруктураДанныхСтроки = Новый Структура;
Если ИмяКолонкиТоваров = "ЗаменяющийТовар" Тогда
ПараметрыПредставлениеНоменклатурыДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ПараметрыПредставлениеНоменклатурыДляПечати.ВозвратнаяТара = Строка.ЭтоВозвратнаяТара;
ПараметрыПредставлениеНоменклатурыДляПечати.Содержание = Строка.Содержание;
ПараметрыПредставлениеНоменклатурыДляПечати.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Товар = ПрефиксИПостфикс.Префикс + НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
Строка.НаименованиеПолное,
Строка.Характеристика,
,
,
ПараметрыПредставлениеНоменклатурыДляПечати) + ПрефиксИПостфикс.Постфикс;
СтруктураДанныхСтроки.Вставить("Товар", Товар);
Если ПараметрыВывода.ЕстьСкидки Тогда
СтруктураДанныхСтроки.Вставить("СуммаСкидки",
?(ПараметрыВывода.Скидки.ЕстьНаценка И НЕ ПараметрыВывода.Скидки.ЕстьСкидка,
- СуммаСкидки,
СуммаСкидки));
КонецЕсли;
Иначе
ПараметрыПредставлениеНоменклатурыДляПечати = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ПараметрыПредставлениеНоменклатурыДляПечати.ВозвратнаяТара = Строка.ЭтоВозвратнаяТара;
ПараметрыПредставлениеНоменклатурыДляПечати.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
Товар = ПрефиксИПостфикс.Префикс + НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
Строка.НаименованиеПолное,
Строка.Характеристика,
,
,
ПараметрыПредставлениеНоменклатурыДляПечати) + ПрефиксИПостфикс.Постфикс;
СтруктураДанныхСтроки.Вставить("Товар", Товар);
КонецЕсли;
Если ТипЗнч(ОбластьСтрокаДанные) = Тип("Структура") Тогда
ОбластьСтрокаДанные.КоличествоЦена.Параметры.Заполнить(СтруктураДанныхСтроки);
ТабличныйДокумент.Присоединить(ОбластьСтрокаДанные.КоличествоЦена);
ОбластьСтрокаДанные.Скидка.Параметры.Заполнить(СтруктураДанныхСтроки);
ТабличныйДокумент.Присоединить(ОбластьСтрокаДанные.Скидка);
ОбластьСтрокаДанные.Сумма.Параметры.Заполнить(СтруктураДанныхСтроки);
ТабличныйДокумент.Присоединить(ОбластьСтрокаДанные.Сумма);
Иначе
ОбластьСтрокаДанные.Параметры.Заполнить(СтруктураДанныхСтроки);
ТабличныйДокумент.Присоединить(ОбластьСтрокаДанные);
КонецЕсли;
Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(Строка, ИспользоватьНаборы) Тогда
Если НЕ ПараметрыВывода.ТолькоКоличество Тогда
СтруктураИтогов.Всего = СтруктураИтогов.Всего + Строка.Сумма;
Если ПараметрыВывода.УчитыватьНДС Тогда
СтруктураИтогов.ВсегоНДС = СтруктураИтогов.ВсегоНДС + Строка.СуммаНДС;
СуммаПоТекущейСтавкеНДС = СоответствиеСтавокНДС[Строка.СтавкаНДС];
Если СуммаПоТекущейСтавкеНДС <> Неопределено Тогда
СоответствиеСтавокНДС[Строка.СтавкаНДС] = СуммаПоТекущейСтавкеНДС + Строка.СуммаНДС;
КонецЕсли;
КонецЕсли;
Если ПараметрыВывода.ЕстьСкидки Тогда
СтруктураИтогов.ВсегоБезСкидки = СтруктураИтогов.ВсегоБезСкидки + Строка.СуммаБезСкидки;
СтруктураИтогов.ВсегоСкидка = СтруктураИтогов.ВсегоСкидка + Строка.СуммаСкидки;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТабличныйДокумент.Вывести(ОбластьПодвалНомер);
Если ПараметрыВывода.ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьПодвалКод);
КонецЕсли;
Если ТипЗнч(ОбластьПодвалДанные) = Тип("Структура") Тогда
ТабличныйДокумент.Присоединить(ОбластьПодвалДанные.КоличествоЦена);
СтруктураДанныхПодвалСкидки = Новый Структура;
СтруктураДанныхПодвалСкидки.Вставить("ВсегоСкидка", ?(ПараметрыВывода.Скидки.ЕстьНаценка И НЕ ПараметрыВывода.Скидки.ЕстьСкидка,-СтруктураИтогов.ВсегоСкидка, СтруктураИтогов.ВсегоСкидка));
СтруктураДанныхПодвалСкидки.Вставить("ВсегоБезСкидки", СтруктураИтогов.ВсегоБезСкидки);
ОбластьПодвалДанные.Скидка.Параметры.Заполнить(СтруктураДанныхПодвалСкидки);
ТабличныйДокумент.Присоединить(ОбластьПодвалДанные.Скидка);
ОбластьПодвалДанные.Сумма.Параметры.Заполнить(СтруктураИтогов);
ТабличныйДокумент.Присоединить(ОбластьПодвалДанные.Сумма);
Иначе
ОбластьПодвалДанные.Параметры.Заполнить(СтруктураИтогов);
Если ПараметрыВывода.ЕстьСкидки Тогда
СтруктураДанныхПодвал = Новый Структура;
СтруктураДанныхПодвал.Вставить("ВсегоСкидка", ?(ПараметрыВывода.Скидки.ЕстьНаценка И НЕ ПараметрыВывода.Скидки.ЕстьСкидка,-СтруктураИтогов.ВсегоСкидка, СтруктураИтогов.ВсегоСкидка));
СтруктураДанныхПодвал.Вставить("ВсегоБезСкидки", СтруктураИтогов.ВсегоБезСкидки);
ОбластьПодвалДанные.Параметры.Заполнить(СтруктураДанныхПодвал);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьПодвалДанные);
КонецЕсли;
Если ПараметрыВывода.ВыводитьПодвалНДС И НЕ ПараметрыВывода.ТолькоКоличество Тогда
Если ПараметрыВывода.УчитыватьНДС Тогда
Для Каждого Ставка Из СоответствиеСтавокНДС Цикл
Если Ставка.Значение = 0 Тогда
Продолжить;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьНДСНомер);
Если ПараметрыВывода.ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьНДСКод);
КонецЕсли;
СтруктураДанныхНДС = Новый Структура;
СтруктураДанныхНДС.Вставить("ИмяСтавкиНДС", Ставка.Ключ);
СтруктураДанныхНДС.Вставить("ВсегоНДС", Ставка.Значение);
ОбластьНДСДанныеДляВывода = ?(ПараметрыВывода.ЦенаВключаетНДС, ОбластьВТЧНДСДанные, ОбластьНДСДанные);
ОбластьНДСДанныеДляВывода.Параметры.Заполнить(СтруктураДанныхНДС);
ТабличныйДокумент.Присоединить(ОбластьНДСДанныеДляВывода);
КонецЦикла;
Иначе
ТабличныйДокумент.Вывести(ОбластьНДСНомер);
Если ПараметрыВывода.ВыводитьКоды Тогда
ТабличныйДокумент.Присоединить(ОбластьНДСКод);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьБезНДСДанные);
КонецЕсли;
КонецЕсли;
Если ПараметрыВывода.ТолькоКоличество Тогда
ОбластьСуммаПрописьюДляВывода = ОбластьСуммаПрописьюТолькоКоличество;
Сумма = "";
СуммаПрописью = "";
Иначе
ОбластьСуммаПрописьюДляВывода = ОбластьСуммаПрописью;
СуммаКПрописи = СтруктураИтогов.Всего + ?(ПараметрыВывода.УчитыватьНДС И НЕ ПараметрыВывода.ЦенаВключаетНДС, СтруктураИтогов.ВсегоНДС, 0);
Сумма = ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, Валюта,,,ПараметрыВывода.КодЯзыка);
СуммаПрописью = РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(СуммаКПрописи, Валюта,,ПараметрыВывода.КодЯзыка);
КонецЕсли;
СтруктураДанныхИтоговаяСтрока = Новый Структура;
СтруктураДанныхИтоговаяСтрока.Вставить("Количество", НомерСтроки);
СтруктураДанныхИтоговаяСтрока.Вставить("Сумма", Сумма);
СтруктураДанныхИтоговаяСтрока.Вставить("СуммаПрописью", СуммаПрописью);
ОбластьСуммаПрописьюДляВывода.Параметры.Заполнить(СтруктураДанныхИтоговаяСтрока);
ТабличныйДокумент.Вывести(ОбластьСуммаПрописьюДляВывода);
КонецПроцедуры
Функция ПолучитьДанныеДляПечатнойФормыСчетаНаОплату(ПараметрыПечати, МассивОбъектов, КодЯзыка = Неопределено) Экспорт
Возврат ДанныеДляПечатныхФормСчетаНаОплатуИзвещения(ПараметрыПечати, МассивОбъектов, КодЯзыка);
КонецФункции
Функция ПолучитьДанныеДляПечатнойФормыЗаявлениеНаВозвратТоваровОтКлиента(МассивОбъектов) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| ВариантыКомплектацииНоменклатуры.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектацииНоменклатуры.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектацииНоменклатуры.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.НомерСтроки КАК НомерСтроки,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Количество КАК Количество,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| Таблица.СуммаСНДС КАК Сумма,
| ВЫБОР
| КОГДА
| Таблица.Ссылка.ВернутьМногооборотнуюТару
| И Таблица.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара
|ПОМЕСТИТЬ Товары
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК Таблица
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
| ПО ВариантыКомплектацииНоменклатуры.Владелец = Таблица.НоменклатураНабора
| И ВариантыКомплектацииНоменклатуры.Характеристика = Таблица.ХарактеристикаНабора
| И ВариантыКомплектацииНоменклатуры.Основной
|
|ГДЕ
| НЕ Таблица.Отменено
| И Таблица.Ссылка В(&МассивОбъектов)
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| МИНИМУМ(Таблица.НомерСтроки) КАК НомерСтроки,
| СУММА(Таблица.Сумма) КАК Сумма
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыПодготовка
|ИЗ
| Товары КАК Таблица
|
|ГДЕ
| Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТоваров.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ТоварыРазличные
|ИЗ
| Товары КАК ТаблицаТоваров
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Товары.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Товары.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Товары.НоменклатураНабора,
| Товары.ХарактеристикаНабора,
| Товары.Номенклатура,
| Товары.Характеристика,
| ВЫБОР КОГДА Товары.ВариантКомплектацииНоменклатуры.НоменклатураОсновногоКомпонента = Товары.Номенклатура
| И Товары.ВариантКомплектацииНоменклатуры.ХарактеристикаОсновногоКомпонента = Товары.Характеристика ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ОсновнаяКомплектующая,
| 0 КАК КоличествоПоУмолчанию,
| Товары.Количество КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьПервая
|ИЗ
| Товары КАК Товары
|
|ГДЕ
| Товары.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыРазличные.Ссылка КАК Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец КАК НоменклатураНабора,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика КАК ХарактеристикаНабора,
| ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК Номенклатура,
| ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
| ЛОЖЬ КАК ОсновнаяКомплектующая,
| СУММА(ВариантыКомплектацииНоменклатурыТовары.Количество) КАК КоличествоПоУмолчанию,
| 0 КАК Количество
|ИЗ
| Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыРазличные КАК ТоварыРазличные
| ПО ИСТИНА
|ГДЕ
| ВариантыКомплектацииНоменклатурыТовары.Ссылка В (ВЫБРАТЬ РАЗЛИЧНЫЕ Т.ВариантКомплектацииНоменклатуры ИЗ Товары КАК Т)
|
|СГРУППИРОВАТЬ ПО
| ТоварыРазличные.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика,
| ВариантыКомплектацииНоменклатурыТовары.Номенклатура,
| ВариантыКомплектацииНоменклатурыТовары.Характеристика,
| ВариантыКомплектацииНоменклатурыТовары.Упаковка
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика,
| МАКСИМУМ(Таблица.ОсновнаяКомплектующая) КАК ОсновнаяКомплектующая,
| СУММА(Таблица.КоличествоПоУмолчанию) КАК КоличествоПоУмолчанию,
| СУММА(Таблица.Количество) КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьВторая
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьПервая КАК Таблица
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика
|;
|
|
|ВЫБРАТЬ
| Результат.Ссылка,
| Результат.ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора,
| Результат.ХарактеристикаНабора,
| ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0 И Результат.ОсновнаяКомплектующая
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ null
| КОНЕЦ) + 0.5 КАК Число(10,0)) - 1 КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительно
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьВторая КАК Результат
|СГРУППИРОВАТЬ ПО
| Результат.Ссылка,
| Результат.ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора,
| Результат.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| ВременнаяТаблицаНаборыДополнительно.ВариантКомплектацииНоменклатуры,
| ВЫБОР КОГДА Таблица.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию) ТОГДА
| ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
|
| ВЫБОР КОГДА Таблица.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию) ТОГДА
| ВЫБОР КОГДА
| ВЫБОР КОГДА ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах
| КОНЕЦ = ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)
| И ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора В (ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоЦенам),ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ЦенаЗадаетсяЗаНаборРаспределяетсяПоДолям)) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.РассчитываетсяИзЦенКомплектующих)
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
| КОНЕЦ
| ИНАЧЕ
| ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.НомерСтроки КАК НомерСтроки,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК КоличествоУпаковок,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК Количество,
| Таблица.Сумма КАК Сумма
|ПОМЕСТИТЬ ВременнаяТаблицаНаборы
|ИЗ
| ВременнаяТаблицаНаборыПодготовка КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборыДополнительно КАК ВременнаяТаблицаНаборыДополнительно
| ПО Таблица.НоменклатураНабора = ВременнаяТаблицаНаборыДополнительно.НоменклатураНабора
| И Таблица.ХарактеристикаНабора = ВременнаяТаблицаНаборыДополнительно.ХарактеристикаНабора
| И Таблица.Ссылка = ВременнаяТаблицаНаборыДополнительно.Ссылка
|;
|
|
|ВЫБРАТЬ
| ЗаявкаНаВозврат.Ссылка КАК Ссылка,
| ЗаявкаНаВозврат.Дата КАК Дата,
| ЗаявкаНаВозврат.СуммаДокумента КАК Сумма,
| ЗаявкаНаВозврат.Валюта КАК Валюта,
| ЗаявкаНаВозврат.Организация КАК Организация,
| ЗаявкаНаВозврат.ПричинаВозврата КАК ПричинаВозврата,
| ЗаявкаНаВозврат.Покупатель КАК Покупатель,
| ЗаявкаНаВозврат.ЧекККМ.Номер КАК ЧекККМНомер,
| ЗаявкаНаВозврат.ЧекККМ.Дата КАК ЧекККМДата,
| ЗаявкаНаВозврат.ДатаРожденияПокупателя КАК ДатаРождения,
| ЗаявкаНаВозврат.ВидДокументаПокупателя КАК ВидДокумента,
| ЗаявкаНаВозврат.СерияДокументаПокупателя КАК Серия,
| ЗаявкаНаВозврат.НомерДокументаПокупателя КАК Номер,
| ЗаявкаНаВозврат.ДатаВыдачиДокументаПокупателя КАК ДатаВыдачи,
| ЗаявкаНаВозврат.СрокДействияДокументаПокупателя КАК СрокДействия,
| ЗаявкаНаВозврат.КемВыданДокументПокупателя КАК КемВыдан,
| ЗаявкаНаВозврат.КодПодразделенияДокументаПокупателя КАК КодПодразделения
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ЗаявкаНаВозврат
|ГДЕ
| ЗаявкаНаВозврат.Ссылка В(&МассивОбъектов)
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Товары.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Товары.НоменклатураНабора КАК НоменклатураНабора,
| Товары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Товары.ЭтоНабор КАК ЭтоНабор,
| Товары.ЭтоКомплектующие КАК ЭтоКомплектующие,
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура.НаименованиеПолное КАК ПолноеНаименованиеНоменклатуры,
| Товары.Характеристика.НаименованиеПолное КАК ПолноеНаименованиеХарактеристики,
| ВЫБОР
| КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ Товары.Упаковка
| КОНЕЦ КАК НаименованиеУпаковки,
| Товары.Номенклатура.Код КАК Код,
| Товары.Номенклатура.Артикул КАК Артикул,
| ВЫБОР
| КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(Товары.Упаковка)
| КОНЕЦ КАК ЕдиницаИзмерения,
| Товары.КоличествоУпаковок КАК Количество,
| Товары.Сумма КАК Сумма,
| Товары.ЭтоВозвратнаяТара КАК ЭтоВозвратнаяТара
|
|ИЗ (
|
| ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ПустаяСсылка)
| КОНЕЦ КАК ВариантПредставленияНабораВПечатныхФормах,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ВариантыРасчетаЦенНаборов.ПустаяСсылка)
| КОНЕЦ КАК ВариантРасчетаЦеныНабора,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоКомплектующие,
| ЛОЖЬ КАК ЭтоНабор,
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0 ТОГДА
| ВременнаяТаблицаНаборы.НомерСтроки
| ИНАЧЕ
| Таблица.НомерСтроки
| КОНЕЦ КАК НомерСтроки,
| Таблица.Номенклатура,
| Таблица.Количество,
| Таблица.КоличествоУпаковок,
| Таблица.Сумма,
| Таблица.Характеристика,
| Таблица.Упаковка,
| Таблица.ЭтоВозвратнаяТара
| ИЗ
| Товары КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ПО ВременнаяТаблицаНаборы.НоменклатураНабора = Таблица.НоменклатураНабора
| И ВременнаяТаблицаНаборы.ХарактеристикаНабора = Таблица.ХарактеристикаНабора
| И ВременнаяТаблицаНаборы.Ссылка = Таблица.Ссылка
|
| ГДЕ
| Таблица.НоменклатураНабора = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ИЛИ (Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоКомплектующие),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ВременнаяТаблицаНаборы.Ссылка,
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах,
| ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВременнаяТаблицаНаборы.НоменклатураНабора,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора,
| ЛОЖЬ КАК ЭтоКомплектующие,
| ИСТИНА КАК ЭтоНабор,
| ВременнаяТаблицаНаборы.НомерСтроки,
| ВременнаяТаблицаНаборы.НоменклатураНабора,
| ВременнаяТаблицаНаборы.Количество,
| ВременнаяТаблицаНаборы.КоличествоУпаковок,
| ВременнаяТаблицаНаборы.Сумма КАК Сумма,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка,
| ЛОЖЬ
| ИЗ
| ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ГДЕ
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие))
|) КАК Товары
|
|УПОРЯДОЧИТЬ ПО
| Товары.НомерСтроки,
| ЭтоНабор УБЫВ
|";
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
УстановитьПривилегированныйРежим(Истина);
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[7]);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", ПакетРезультатовЗапроса[ПакетРезультатовЗапроса.Количество() - 1]);
Возврат СтруктураДанныхДляПечати;
КонецФункции
Функция ПолучитьДанныеДляПечатнойФормыОтборРазмещениеТоваров(ПараметрыПечати, МассивОбъектов) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеЗадания.Ссылка КАК Ссылка,
| ДанныеЗадания.Номер КАК Номер,
| ДанныеЗадания.Дата КАК Дата,
| НЕОПРЕДЕЛЕНО КАК НомерИсправляемогоДокумента,
| НЕОПРЕДЕЛЕНО КАК ДатаИсправляемогоДокумента,
| ТоварыДокумента.Склад КАК Склад,
| &ПомещениеПоУмолчанию КАК Помещение,
| ИСТИНА КАК ЭтоНакладная,
| ЛОЖЬ КАК ИспользуетсяАдресноеХранение,
| ВЫБОР
| КОГДА ТоварыДокумента.Склад.ИспользоватьАдресноеХранениеСправочно
| И (НЕ ТоварыДокумента.Склад.ИспользоватьАдресноеХранение
| ИЛИ ДанныеЗадания.Дата < ТоварыДокумента.Склад.ДатаНачалаАдресногоХраненияОстатков)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ИспользуетсяСправочноеХранение,
| ЕСТЬNULL(ТоварыДокумента.Склад.ИспользованиеРабочихУчастков, ЛОЖЬ) КАК ИспользованиеРабочихУчастков,
| ВЫБОР
| КОГДА ТоварыДокумента.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И ДанныеЗадания.Дата >= ТоварыДокумента.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ИспользуетсяОрдернаяСхема
|ПОМЕСТИТЬ ДанныеЗадания
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ДанныеЗадания
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ТоварыДокумента
| ПО ДанныеЗадания.Ссылка = ТоварыДокумента.Ссылка
|
|ГДЕ
| ДанныеЗадания.Ссылка В(&МассивОбъектов)
| И ТоварыДокумента.Склад <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| И ДанныеЗадания.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена))
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| Склад
|;
|
|
|ВЫБРАТЬ
| ТоварыКОтгрузке.ДокументОтгрузки КАК Ссылка,
| ТоварыКОтгрузке.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузке.Характеристика КАК Характеристика,
| ТоварыКОтгрузке.Серия КАК Серия,
| ТоварыКОтгрузке.Склад КАК Склад,
| ТоварыКОтгрузке.КОтгрузкеОстаток КАК Количество
|ПОМЕСТИТЬ ТоварыКОтгрузке
|ИЗ
| РегистрНакопления.ТоварыКОтгрузке.Остатки(
| ,
| (Склад, ДокументОтгрузки) В
| (ВЫБРАТЬ
| ДанныеЗадания.Склад КАК Склад,
| ДанныеЗадания.Ссылка КАК ДокументОтгрузки
| ИЗ
| ДанныеЗадания КАК ДанныеЗадания
| ГДЕ
| НЕ ДанныеЗадания.ИспользуетсяОрдернаяСхема)) КАК ТоварыКОтгрузке
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| Номенклатура
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| МИНИМУМ(ТаблицаТовары.НомерСтроки) КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Склад КАК Склад
|ПОМЕСТИТЬ ТоварыЗаявкиНаВозврат
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеЗадания КАК ДанныеЗадания
| ПО ТаблицаТовары.Ссылка = ДанныеЗадания.Ссылка
| И ТаблицаТовары.Склад = ДанныеЗадания.Склад
|ГДЕ
| НЕ ТаблицаТовары.Отменено
| И НЕ ДанныеЗадания.ИспользуетсяОрдернаяСхема
| И ТаблицаТовары.Номенклатура.ТипНоменклатуры В(ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И ТаблицаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
|
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Ссылка,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Склад
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| Номенклатура,
| Характеристика,
| Серия,
| Склад
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТоварыЗаявкиНаВозврат.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ВЫРАЗИТЬ(ТаблицаТовары.Номенклатура КАК Справочник.Номенклатура).НаборУпаковок КАК НаборУпаковок,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Количество КАК Количество
|ПОМЕСТИТЬ ТоварыЗадания
|ИЗ
| ТоварыКОтгрузке КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТоварыЗаявкиНаВозврат КАК ТоварыЗаявкиНаВозврат
| ПО ТаблицаТовары.Ссылка = ТоварыЗаявкиНаВозврат.Ссылка
| И ТаблицаТовары.Номенклатура = ТоварыЗаявкиНаВозврат.Номенклатура
| И ТаблицаТовары.Характеристика = ТоварыЗаявкиНаВозврат.Характеристика
| И ТаблицаТовары.Серия = ТоварыЗаявкиНаВозврат.Серия
| И ТаблицаТовары.Склад = ТоварыЗаявкиНаВозврат.Склад
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Склад
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.Склад КАК Склад,
| ДанныеЗадания.Помещение КАК Помещение,
| МИНИМУМ(ТаблицаТовары.НомерСтроки) КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА Товары.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий
| ТОГДА ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ИНАЧЕ ТаблицаТовары.Серия
| КОНЕЦ КАК Серия,
| Товары.НаборУпаковок КАК НаборУпаковок,
| ВЫБОР
| КОГДА Товары.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий
| ТОГДА Товары.ЕдиницаИзмерения
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| КОНЕЦ КАК Упаковка,
| МИНИМУМ(ТаблицаТовары.Количество) КАК Количество
|ПОМЕСТИТЬ ТаблицаТоваровСуммированная
|ИЗ
| ТоварыЗадания КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗадания КАК ДанныеЗадания
| ПО ТаблицаТовары.Ссылка = ДанныеЗадания.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары
| ПО ТаблицаТовары.Номенклатура = Товары.Ссылка
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Ссылка,
| ТаблицаТовары.Склад,
| ДанныеЗадания.Помещение,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ВЫБОР
| КОГДА Товары.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий
| ТОГДА ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ИНАЧЕ ТаблицаТовары.Серия
| КОНЕЦ,
| Товары.НаборУпаковок,
| ВЫБОР
| КОГДА Товары.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий
| ТОГДА Товары.ЕдиницаИзмерения
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| КОНЕЦ
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Склад
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеДокумента.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗадания КАК ДанныеЗадания
| ПО ДанныеДокумента.Ссылка = ДанныеЗадания.Ссылка
|ГДЕ
| ДанныеДокумента.Ссылка В(&МассивОбъектов)
| И ДанныеЗадания.Ссылка ЕСТЬ NULL
|;
|
|
|ВЫБРАТЬ
| ДанныеЗадания.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ДанныеЗадания.Ссылка) КАК СсылкаПредставление,
| ДанныеЗадания.Номер КАК Номер,
| ДанныеЗадания.Дата КАК Дата,
| ДанныеЗадания.НомерИсправляемогоДокумента КАК НомерИсправляемогоДокумента,
| ДанныеЗадания.ДатаИсправляемогоДокумента КАК ДатаИсправляемогоДокумента,
| ДанныеЗадания.Склад КАК Склад,
| ПРЕДСТАВЛЕНИЕ(ДанныеЗадания.Склад) КАК СкладПредставление,
| ДанныеЗадания.Помещение КАК Помещение,
| ПРЕДСТАВЛЕНИЕ(&ПомещениеПоУмолчанию) КАК ПомещениеПредставление,
| ДанныеЗадания.ЭтоНакладная КАК ЭтоНакладная,
| ДанныеЗадания.ИспользуетсяАдресноеХранение КАК ИспользуетсяАдресноеХранение,
| ДанныеЗадания.ИспользуетсяСправочноеХранение КАК ИспользуетсяСправочноеХранение,
| ДанныеЗадания.ИспользованиеРабочихУчастков КАК ИспользованиеРабочихУчастков,
| ДанныеЗадания.ИспользуетсяОрдернаяСхема КАК ИспользуетсяОрдернаяСхема
|ИЗ
| ДанныеЗадания КАК ДанныеЗадания
|
|УПОРЯДОЧИТЬ ПО
| ДанныеЗадания.Ссылка,
| ДанныеЗадания.Склад
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| ТаблицаТоваров.Склад КАК Склад,
| ЕСТЬNULL(ОсновныеЯчейки.Ячейка.РабочийУчасток, &РабочийУчастокПоУмолчанию) КАК РабочийУчасток,
| ПРЕДСТАВЛЕНИЕ(ОсновныеЯчейки.Ячейка.РабочийУчасток) КАК ПредставлениеРабочегоУчастка,
| ЕСТЬNULL(ОсновныеЯчейки.Ячейка.ПорядокОбхода, 0) КАК ПорядокОбхода,
| ЕСТЬNULL(ОсновныеЯчейки.Ячейка, &ЯчейкаПоУмолчанию) КАК ОсновнаяЯчейка,
| ЕСТЬNULL(ОсновныеЯчейки.Ячейка.Код, """") КАК ОсновнаяЯчейкаПредставление,
| ЕСТЬNULL(ОстальныеЯчейки.Ячейка.ПорядокОбхода, 0) КАК ПорядокОбходаДополнительнаяЯчейка,
| ЕСТЬNULL(ОстальныеЯчейки.Ячейка.Код, """") КАК ЯчейкаПредставление,
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| Товары.Код КАК Код,
| Товары.Артикул КАК Артикул,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| Товары.НаименованиеПолное КАК ПредставлениеНоменклатуры,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Характеристика.НаименованиеПолное КАК ПредставлениеХарактеристики,
| Товары.ВидНоменклатуры.НастройкаИспользованияСерий КАК НастройкаИспользованияСерий,
| ТаблицаТоваров.Серия КАК Серия,
| ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Серия) КАК ПредставлениеСерии,
| ТаблицаТоваров.Упаковка КАК Упаковка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Упаковка) КАК ПредставлениеЕдиницыИзмеренияУпаковки,
| ПРЕДСТАВЛЕНИЕ(Товары.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.Количество КАК КоличествоУпаковок
|ИЗ
| ТаблицаТоваровСуммированная КАК ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары
| ПО ТаблицаТоваров.Номенклатура = Товары.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам КАК ОсновныеЯчейки
| ПО ТаблицаТоваров.Номенклатура = ОсновныеЯчейки.Номенклатура
| И ОсновныеЯчейки.ОсновнаяЯчейка
| И ТаблицаТоваров.Склад = ОсновныеЯчейки.Склад
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам КАК ОстальныеЯчейки
| ПО ТаблицаТоваров.Номенклатура = ОстальныеЯчейки.Номенклатура
| И НЕ ОстальныеЯчейки.ОсновнаяЯчейка
| И ТаблицаТоваров.Склад = ОстальныеЯчейки.Склад
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Склад,
| РабочийУчасток,
| НомерСтроки,
| Номенклатура,
| Характеристика,
| Серия
|
|ИТОГИ ПО
| Ссылка,
| Склад,
| РабочийУчасток
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| ТаблицаТоваров.Склад КАК Склад,
| ЕСТЬNULL(ОсновныеЯчейки.Ячейка.РабочийУчасток, &РабочийУчастокПоУмолчанию) КАК РабочийУчасток,
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия КАК Серия,
| ЕСТЬNULL(УпаковкиНоменклатуры.Ссылка, &УпаковкаПоУмолчанию) КАК Упаковка,
| ЕСТЬNULL(ПРЕДСТАВЛЕНИЕ(УпаковкиНоменклатуры.Ссылка), ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Номенклатура.ЕдиницаИзмерения)) КАК ПредставлениеЕдиницыИзмеренияУпаковки,
| ЕСТЬNULL(&ТекстКоэффициентаУпаковки, 1) КАК КоличествоВУпаковке
|ИЗ
| ТаблицаТоваровСуммированная КАК ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
| ПО (ТаблицаТоваров.Номенклатура = УпаковкиНоменклатуры.Владелец
| ИЛИ ТаблицаТоваров.НаборУпаковок = УпаковкиНоменклатуры.Владелец)
| И НЕ УпаковкиНоменклатуры.ПометкаУдаления
| И ТаблицаТоваров.Количество >= &ТекстКоэффициентаУпаковки
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам КАК ОсновныеЯчейки
| ПО ТаблицаТоваров.Номенклатура = ОсновныеЯчейки.Номенклатура
| И ОсновныеЯчейки.ОсновнаяЯчейка
| И ТаблицаТоваров.Склад = ОсновныеЯчейки.Склад
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Склад,
| РабочийУчасток,
| НомерСтроки,
| Номенклатура,
| Характеристика,
| Серия,
| КоличествоВУпаковке УБЫВ";
ТекстКоэффициентаУпаковки = Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"УпаковкиНоменклатуры",
"ТаблицаТоваров.Номенклатура");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&ПомещениеПоУмолчанию",
"ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка)");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&НастройкаИспользованияСерий",
"ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&РабочийУчастокПоУмолчанию",
"ЗНАЧЕНИЕ(Справочник.РабочиеУчастки.ПустаяСсылка)");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&ЯчейкаПоУмолчанию",
"ЗНАЧЕНИЕ(Справочник.СкладскиеЯчейки.ПустаяСсылка)");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&УпаковкаПоУмолчанию",
"ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКоэффициентаУпаковки", ТекстКоэффициентаУпаковки);
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
УстановитьПривилегированныйРежим(Истина);
Результаты = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
МаксимальныйИндекс = Результаты.ВГраница();
ДанныеЗадания = Новый Структура;
ДанныеЗадания.Вставить("РезультатПоОшибкам", Результаты[МаксимальныйИндекс - 3]);
ДанныеЗадания.Вставить("РезультатПоРаспоряжениям", Неопределено);
ДанныеЗадания.Вставить("РезультатПоШапке", Результаты[МаксимальныйИндекс - 2]);
ДанныеЗадания.Вставить("РезультатПоТабличнойЧасти", Результаты[МаксимальныйИндекс - 1]);
ДанныеЗадания.Вставить("РезультатПоУпаковкам", Результаты[МаксимальныйИндекс]);
ДанныеЗадания.Вставить("РезультатПоСериям", Неопределено);
Возврат ДанныеЗадания;
КонецФункции
Процедура ЗаполнитьСтруктуруПолучателейПечатныхФорм(СтруктураДанныхОбъектаПечати) Экспорт
СтруктураДанныхОбъектаПечати.ОсновнойПолучатель = "Партнер";
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Партнер");
Если ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов") Тогда
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Контрагент");
КонецЕсли;
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("КонтактноеЛицо");
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Грузоотправитель");
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Грузополучатель");
Если ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеДоставкой") Тогда
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("ПеревозчикПартнер");
КонецЕсли;
КонецПроцедуры
Функция ДанныеДляПечатныхФормСчетаНаОплатуИзвещения(ПараметрыПечати, МассивОбъектов, КодЯзыка = Неопределено) Экспорт
Если ПараметрыПечати <> Неопределено И ПараметрыПечати.Свойство("ОтображатьСкидки") Тогда
ОтображатьСкидки = ПараметрыПечати.ОтображатьСкидки;
Иначе
ОтображатьСкидки = (Константы.ОтображениеСкидокВПечатныхФормахДокументовПродажи.Получить()
<> Перечисления.ВариантыВыводаСкидокВПечатныхФормах.НеВыводитьСкидки);
КонецЕсли;
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов(МассивОбъектов, МенеджерВременныхТаблиц);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Номер КАК Номер,
| Документы.Дата КАК Дата,
| НЕОПРЕДЕЛЕНО КАК ДокументОснование,
| Документы.Организация КАК Организация,
| Документы.Организация КАК ОрганизацияПоставщик,
| ТаблицаОтветственныеЛица.РуководительНаименование КАК Руководитель,
| ТаблицаОтветственныеЛица.РуководительДолжность КАК ДолжностьРуководителя,
| ТаблицаОтветственныеЛица.ГлавныйБухгалтерНаименование КАК ГлавныйБухгалтер,
| ВЫБОР
| КОГДА Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
| ИЛИ Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяЕНВД)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК УчитыватьНДС,
| Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя) КАК ОперацияОблагаетсяНДСУПокупателя,
| Документы.Контрагент КАК Контрагент,
| Документы.Контрагент.ЮрФизЛицо КАК КонтрагентЮрФизЛицо,
| Документы.БанковскийСчет КАК БанковскийСчет,
|
| ВЫБОР КОГДА Документы.БанковскийСчет.ИностранныйБанк
| ИЛИ Документы.БанковскийСчет.ВалютаДенежныхСредств <> Документы.Организация.ВалютаРегламентированногоУчета
| ИЛИ Документы.БанковскийСчетКонтрагента.ИностранныйБанк ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ПлатежЗаРубеж,
| Документы.БанковскийСчет.ВалютаДенежныхСредств КАК ВалютаДенежныхСредств,
|
| ВЫБОР КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка ТОГДА Документы.БанковскийСчет.НаименованиеБанкаМеждународное
| ИНАЧЕ Документы.БанковскийСчет.Банк.МеждународноеНаименование КОНЕЦ КАК НаименованиеБанкаМеждународное,
| ВЫБОР КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка ТОГДА Документы.БанковскийСчет.НаименованиеБанкаДляРасчетовМеждународное
| ИНАЧЕ Документы.БанковскийСчет.БанкДляРасчетов.МеждународноеНаименование КОНЕЦ КАК НаименованиеБанкаДляРасчетовМеждународное,
| ВЫБОР КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка ТОГДА Документы.БанковскийСчет.СВИФТБанка
| ИНАЧЕ Документы.БанковскийСчет.Банк.СВИФТБИК КОНЕЦ КАК СВИФТБанка,
| ВЫБОР КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов ТОГДА Документы.БанковскийСчет.СВИФТБанкаДляРасчетов
| ИНАЧЕ Документы.БанковскийСчет.БанкДляРасчетов.СВИФТБИК КОНЕЦ КАК СВИФТБанкаДляРасчетов,
| ВЫБОР КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка ТОГДА Документы.БанковскийСчет.АдресБанкаМеждународный
| ИНАЧЕ Документы.БанковскийСчет.Банк.АдресМеждународный КОНЕЦ КАК АдресБанка,
| ВЫБОР КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов ТОГДА Документы.БанковскийСчет.АдресБанкаДляРасчетовМеждународный
| ИНАЧЕ Документы.БанковскийСчет.БанкДляРасчетов.АдресМеждународный КОНЕЦ КАК АдресБанкаДляРасчетов,
|
| Документы.БанковскийСчет.СчетВБанкеДляРасчетов КАК СчетВБанкеДляРасчетов,
| ЕСТЬNULL(Документы.БанковскийСчет.СчетЦифровогоРубля, ЛОЖЬ) КАК ЭтоСчетЦифровогоРубля,
| ВЫБОР
| КОГДА ЕСТЬNULL(Документы.БанковскийСчет.СчетЦифровогоРубля, ЛОЖЬ)
| ТОГДА Документы.БанковскийСчет.ИдентификаторСчетаЦифровогоРубля
| ИНАЧЕ Документы.БанковскийСчет.НомерСчета
| КОНЕЦ КАК НомерБанковскогоСчета,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчет.БИКБанка
| ИНАЧЕ КлассификаторБанков.Код
| КОНЕЦ КАК БИКБанк,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчет.НаименованиеБанка
| ИНАЧЕ КлассификаторБанков.Наименование
| КОНЕЦ КАК НаименованиеБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчет.КоррСчетБанка
| ИНАЧЕ КлассификаторБанков.КоррСчет
| КОНЕЦ КАК КоррСчетБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчет.ГородБанка
| ИНАЧЕ КлассификаторБанков.Город
| КОНЕЦ КАК ГородБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.БИКБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.Код
| КОНЕЦ КАК БИКБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.НаименованиеБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.Наименование
| КОНЕЦ КАК НаименованиеБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.КоррСчетБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.КоррСчет
| КОНЕЦ КАК КоррСчетБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.ГородБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.Город
| КОНЕЦ КАК ГородБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.ГородБанкаМеждународный
| ИНАЧЕ КлассификаторБанков.ГородМеждународный
| КОНЕЦ КАК ГородБанкаМеждународный,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.СтранаБанка
| ИНАЧЕ СтраныБанков.Ссылка
| КОНЕЦ КАК СтранаБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.ГородБанкаДляРасчетовМеждународный
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.ГородМеждународный
| КОНЕЦ КАК ГородБанкаДляРасчетовМеждународный,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.СтранаБанкаДляРасчетов
| ИНАЧЕ СтраныБанковКорреспондентовРФ.Ссылка
| КОНЕЦ КАК СтранаБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(КлассификаторБанков.БИКРКЦ.Наименование, """")
| КОНЕЦ КАК НаименованиеРКЦБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(КлассификаторБанковКорреспондентовРФ.БИКРКЦ.Наименование, """")
| КОНЕЦ КАК НаименованиеРКЦБанкаДляРасчетов,
| Документы.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| Документы.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| Документы.Валюта КАК Валюта,
| Документы.Менеджер.ФизическоеЛицо КАК Менеджер,
| Документы.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
| Документы.СуммаДокумента КАК СуммаКВозврату,
| ЛОЖЬ КАК ЧастичнаяОплата,
| """" КАК НазначениеПлатежа,
| 100 КАК ПроцентОплаты,
| Документы.СуммаЗамены КАК СуммаДокумента,
| Документы.Грузоотправитель КАК Грузоотправитель,
| Документы.Грузополучатель КАК Грузополучатель,
| Документы.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
| ИСТИНА КАК СчетКВозврату
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК Документы
| ЛЕВОЕ СОЕДИНЕНИЕ
| ТаблицаОтветственныеЛица КАК ТаблицаОтветственныеЛица
| ПО Документы.Ссылка = ТаблицаОтветственныеЛица.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторБанков КАК КлассификаторБанков
| ПО Документы.БанковскийСчет.Банк = КлассификаторБанков.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК СтраныБанков
| ПО КлассификаторБанков.КодСтраны = СтраныБанков.Код
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторБанков КАК КлассификаторБанковКорреспондентовРФ
| ПО Документы.БанковскийСчет.БанкДляРасчетов = КлассификаторБанковКорреспондентовРФ.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК СтраныБанковКорреспондентовРФ
| ПО КлассификаторБанковКорреспондентовРФ.КодСтраны = СтраныБанковКорреспондентовРФ.Код
| ЛЕВОЕ СОЕДИНЕНИЕ Константы
| ПО ИСТИНА
|ГДЕ
| Документы.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Документы.МоментВремени
|;
|
|
|ВЫБРАТЬ
| 1 КАК Порядок,
| ЭтапыГрафикаОплаты.Ссылка КАК Ссылка,
| ЭтапыГрафикаОплаты.НомерСтроки КАК НомерСтроки,
| ЭтапыГрафикаОплаты.ДатаПлатежа КАК ДатаПлатежа,
| ЭтапыГрафикаОплаты.ПроцентПлатежа КАК ПроцентПлатежа,
| ЭтапыГрафикаОплаты.СуммаПлатежа КАК СуммаПлатежа,
| ЛОЖЬ КАК ЭтоЗалогЗаТару
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЭтапыГрафикаОплаты КАК ЭтапыГрафикаОплаты
|ГДЕ
| ЭтапыГрафикаОплаты.Ссылка В(&МассивОбъектов)
| И ЭтапыГрафикаОплаты.СуммаПлатежа <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2 КАК Порядок,
| ЭтапыГрафикаОплаты.Ссылка КАК Ссылка,
| ЭтапыГрафикаОплаты.НомерСтроки КАК НомерСтроки,
| ЭтапыГрафикаОплаты.ДатаПлатежа КАК ДатаПлатежа,
| ЭтапыГрафикаОплаты.ПроцентЗалогаЗаТару КАК ПроцентПлатежа,
| ЭтапыГрафикаОплаты.СуммаЗалогаЗаТару КАК СуммаПлатежа,
| ИСТИНА КАК ЭтоЗалогЗаТару
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЭтапыГрафикаОплаты КАК ЭтапыГрафикаОплаты
|ГДЕ
| ЭтапыГрафикаОплаты.Ссылка В(&МассивОбъектов)
| И ЭтапыГрафикаОплаты.Ссылка.ТребуетсяЗалогЗаТару
| И ЭтапыГрафикаОплаты.СуммаЗалогаЗаТару <> 0
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки,
| Порядок
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Номенклатура.Код КАК Код,
| Товары.Номенклатура.Артикул КАК Артикул,
| ЕСТЬNULL(НоменклатураПредставления.НаименованиеПолное, Товары.Номенклатура.НаименованиеПолное) КАК НаименованиеПолное,
| ВЫБОР
| КОГДА Товары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| ТОГДА ПРЕДСТАВЛЕНИЕ(Товары.Номенклатура.ЕдиницаИзмерения)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(Товары.Упаковка)
| КОНЕЦ КАК ЕдиницаИзмерения,
| Товары.КоличествоУпаковок КАК Количество,
| ВЫБОР
| КОГДА &ОтображатьСкидки ТОГДА
| Товары.Цена
| ИНАЧЕ Товары.Сумма/Товары.КоличествоУпаковок
| КОНЕЦ КАК Цена,
| Товары.Сумма КАК Сумма,
| Товары.СтавкаНДС КАК СтавкаНДС,
| Товары.СуммаНДС КАК СуммаНДС,
| Товары.ДатаОтгрузки КАК ДатаОтгрузки,
| ЕСТЬNULL(ХарактеристикиНоменклатурыПредставления.НаименованиеПолное, ЕСТЬNULL(Товары.Характеристика.НаименованиеПолное, """")) КАК Характеристика,
| ВЫБОР
| КОГДА ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки, 1) = 1
| ТОГДА НЕОПРЕДЕЛЕНО
| ИНАЧЕ Товары.Упаковка.Наименование
| КОНЕЦ КАК Упаковка,
| ВЫБОР
| КОГДА &ОтображатьСкидки ТОГДА
| Товары.СуммаРучнойСкидки + Товары.СуммаАвтоматическойСкидки
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаСкидки,
| Товары.Сумма + Товары.СуммаРучнойСкидки + Товары.СуммаАвтоматическойСкидки КАК СуммаБезСкидки,
| ВЫБОР
| КОГДА
| Товары.Ссылка.ВернутьМногооборотнуюТару
| И Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ЭтоВозвратнаяТара,
| Товары.Содержание КАК Содержание
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураПредставления
| ПО (Товары.Номенклатура = НоменклатураПредставления.Ссылка
| И НоменклатураПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыПредставления
| ПО (Товары.Характеристика = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
|ГДЕ
| Товары.Ссылка В(&МассивОбъектов)
| И Товары.Отменено = ЛОЖЬ
| И (Товары.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И (НЕ Товары.Ссылка.ВернутьМногооборотнуюТару ИЛИ Товары.Ссылка.ТребуетсяЗалогЗаТару))
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ОтображатьСкидки", ОтображатьСкидки);
Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка);
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[0]);
СтруктураДанныхДляПечати.Вставить("РезультатПоЭтапамОплаты", ПакетРезультатовЗапроса[1]);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", ПакетРезультатовЗапроса[2]);
Возврат СтруктураДанныхДляПечати;
КонецФункции
Функция ДобавлятьКомандыПечатиКомплектаДокументов() Экспорт
Возврат Не ПраваПользователяПовтИсп.ЭтоПартнер();
КонецФункции
#КонецОбласти
#Область Комплекты_Печати
Функция КомплектПечатныхФорм() Экспорт
КомплектПечатныхФорм = РегистрыСведений.НастройкиПечатиОбъектов.ПодготовитьКомплектПечатныхФорм();
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "ЗаявкаНаВозврат", НСтр("ru = 'Заявка на возврат (выводить скидки)'"), 1);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "ЗаявкаНаВозвратБезСкидок", НСтр("ru = 'Заявка на возврат (не выводить скидки)'"), 0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплату", НСтр("ru = 'Счет на оплату (выводить скидки)'"), 1);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплатуБезСкидок", НСтр("ru = 'Счет на оплату (не выводить скидки)'"), 0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплатуСФаксимиле", НСтр("ru = 'Счет на оплату с факсимиле (выводить скидки)'"), 0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплатуСФаксимилеБезСкидок", НСтр("ru = 'Счет на оплату с факсимиле (не выводить скидки)'"), 0);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("НеВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "ЗаявкаНаВозврат", НСтр("ru = 'Заявка на возврат'"), 1);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплату", НСтр("ru = 'Счет на оплату'"), 1);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплатуСФаксимиле", НСтр("ru = 'Счет на оплату с факсимиле'"), 0);
КонецЕсли;
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"ЗаявлениеНаВозвратТоваровОтКлиента",
НСтр("ru = 'Заявление на возврат товаров'"),0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"ЗаданиеНаОтборРазмещениеТовара",
НСтр("ru = 'Задание на отбор товаров'"),0);
Если Константы.ИспользоватьМеждународныеПечатныеФормы.Получить() Тогда
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "ProformaInvoiceEn", НСтр("ru = 'Proforma invoice'"), 1);
КонецЕсли;
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.КомплектПечатныхФорм(КомплектПечатныхФорм);
Возврат КомплектПечатныхФорм;
КонецФункции
Функция СформироватьКомплектПечатныхФорм(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати) Экспорт
Перем АдресКомплектаПечатныхФорм;
Если ТипЗнч(ПараметрыПечати) = Тип("Структура") И ПараметрыПечати.Свойство("АдресКомплектаПечатныхФорм", АдресКомплектаПечатныхФорм) Тогда
КомплектПечатныхФорм = ПолучитьИзВременногоХранилища(АдресКомплектаПечатныхФорм);
Иначе
КомплектПечатныхФорм = РегистрыСведений.НастройкиПечатиОбъектов.КомплектПечатныхФорм(
Метаданные.Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПолноеИмя(),
МассивОбъектов, Неопределено);
КонецЕсли;
Если КомплектПечатныхФорм = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаявкаНаВозвратТоваровОтКлиента", МассивОбъектов);
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"ЗаявкаНаВозврат");
ПараметрыПечати.Удалить("ОтображатьСкидки");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
СформироватьПечатнуюФормуЗаявкиНаВозврат(КомплектПечати.Объекты, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"ЗаявкаНаВозвратБезСкидок");
ПараметрыПечати.Вставить("ОтображатьСкидки", Ложь);
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
СформироватьПечатнуюФормуЗаявкиНаВозврат(КомплектПечати.Объекты, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СчетНаОплату");
ПараметрыПечати.Удалить("ОтображатьСкидки");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаявкаНаВозвратТоваровОтКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СчетНаОплатуБезСкидок");
ПараметрыПечати.Вставить("ОтображатьСкидки", Ложь);
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаявкаНаВозвратТоваровОтКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СчетНаОплатуСФаксимиле");
ПараметрыПечати.Удалить("ОтображатьСкидки");
ПараметрыПечати.Вставить("ОтображатьФаксимиле", Истина);
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаявкаНаВозвратТоваровОтКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СчетНаОплатуСФаксимилеБезСкидок");
ПараметрыПечати.Вставить("ОтображатьСкидки", Ложь);
ПараметрыПечати.Вставить("ОтображатьФаксимиле", Истина);
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаявкаНаВозвратТоваровОтКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"ProformaInvoiceEn");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаявкаНаВозвратТоваровОтКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуProformaInvoice(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"ЗаявлениеНаВозвратТоваровОтКлиента");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаявкаНаВозвратТоваровОтКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьЗаявленияНаВозвратТоваровОтКлиента.СформироватьПечатнуюФормуЗаявленияНаВозвратТоваровОтКлиента(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"ЗаданиеНаОтборРазмещениеТовара");
ПараметрыПечати.Вставить("ТипЗадания", "ЗаданиеНаОтбор");
ПараметрыПечати.Вставить("ПечатьПоДаннымДокумента", Истина);
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаявкаНаВозвратТоваровОтКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.СформироватьЗаданиеНаОтборРазмещениеТовара(СтруктураТипов,
ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
РегистрыСведений.НастройкиПечатиОбъектов.СформироватьКомплектВнешнихПечатныхФорм(
"Документ.ЗаявкаНаВозвратТоваровОтКлиента",
МассивОбъектов,
ПараметрыПечати,
КоллекцияПечатныхФорм,
ОбъектыПечати);
ЗаявкаНаВозвратТоваровОтКлиентаЛокализация.СформироватьКомплектПечатныхФорм(МассивОбъектов,
ПараметрыПечати,
КоллекцияПечатныхФорм,
ОбъектыПечати,
КомплектПечатныхФорм);
КонецФункции
#КонецОбласти
#Область ТекущиеДела
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
ИмяФормы = "Документ.ЗаявкаНаВозвратТоваровОтКлиента.Форма.ФормаСпискаДокументов";
ОбщиеПараметрыЗапросов = ТекущиеДелаСлужебный.ОбщиеПараметрыЗапросов();
Доступность =
(ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или ПравоДоступа("Просмотр", Метаданные.Документы.ЗаявкаНаВозвратТоваровОтКлиента))
И ПравоДоступа("Добавление", Метаданные.Документы.ЗаявкаНаВозвратТоваровОтКлиента)
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.РасчетыСКлиентами)
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат)
И ПолучитьФункциональнуюОпцию("ИспользоватьЗаявкиНаВозвратТоваровОтКлиентов");
Если НЕ Доступность Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДокументЗаявка.Ссылка) КАК ЗаявкиНаВозвратТоваровОтКлиентовВсегоВРаботе,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1)
| И &ДатаАктуальности >= СостоянияЗаказовКлиентов.ДатаСобытия ТОГДА
| СостоянияЗаказовКлиентов.Заказ
| КОНЕЦ) КАК ЗаявкиНаВозвратТоваровОтКлиентовНаСегодня,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1)
| И &ДатаАктуальности > СостоянияЗаказовКлиентов.ДатаСобытия
| И СостоянияЗаказовКлиентов.Состояние В (
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяАвансИлиВозвратДоОбеспечения),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяПредоплатаИлиВозвратДоОтгрузки),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяОплатаИлиВозвратПослеОтгрузки)) ТОГДА
| СостоянияЗаказовКлиентов.Заказ
| КОНЕЦ) КАК ЗаявкиНаВозвратТоваровОтКлиентовПросроченаОплата,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1)
| И &ДатаАктуальности > СостоянияЗаказовКлиентов.ДатаСобытия
| И СостоянияЗаказовКлиентов.Состояние В (
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяСогласование),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяВыполнение),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ГотоваКВозврату),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ГотоваКОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ОжидаетсяОбеспечение),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ГотоваКОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.ВПроцессеОтгрузки)) ТОГДА
| СостоянияЗаказовКлиентов.Заказ
| КОНЕЦ) КАК ЗаявкиНаВозвратТоваровОтКлиентовПросроченоИсполнение
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ДокументЗаявка
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
| ПО (СостоянияЗаказовКлиентов.Заказ = ДокументЗаявка.Ссылка)}
|ГДЕ
| ((НЕ (СостоянияЗаказовКлиентов.Заказ ЕСТЬ NULL)
| И НЕ СостоянияЗаказовКлиентов.Состояние В (ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.Выполнена),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаявокНаВозвратТоваровОтКлиентов.Отклонена)))
| ИЛИ НЕ ДокументЗаявка.Проведен)
| И ДокументЗаявка.Менеджер = &Пользователь
| И НЕ ДокументЗаявка.ПометкаУдаления";
Результат = ТекущиеДелаСлужебный.ЧисловыеПоказателиТекущихДел(Запрос, ОбщиеПараметрыЗапросов);
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = "ЗаявкиНаВозвратТоваровОтКлиентов";
ДелоРодитель.Представление = НСтр("ru = 'Заявки на возврат товаров от клиентов'");
ДелоРодитель.Владелец = Метаданные.Подсистемы.Продажи;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", "ВсеОткрытые");
ПараметрыОтбора.Вставить("Актуальность", "");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Приоритет", "");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ЗаявкиНаВозвратТоваровОтКлиентовВсегоВРаботе";
Дело.ЕстьДела = Результат.ЗаявкиНаВозвратТоваровОтКлиентовВсегоВРаботе > 0;
Дело.Представление = НСтр("ru = 'Всего заявок в работе'");
Дело.Количество = Результат.ЗаявкиНаВозвратТоваровОтКлиентовВсегоВРаботе;
Дело.Важное = Ложь;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ЗаявкиНаВозвратТоваровОтКлиентов";
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", "ВсеОткрытые");
ПараметрыОтбора.Вставить("Актуальность", "Сегодня");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Приоритет", "");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ЗаявкиНаВозвратТоваровОтКлиентовНаСегодня";
Дело.ЕстьДела = Результат.ЗаявкиНаВозвратТоваровОтКлиентовНаСегодня > 0;
Дело.Представление = НСтр("ru = 'На сегодня'");
Дело.Количество = Результат.ЗаявкиНаВозвратТоваровОтКлиентовНаСегодня;
Дело.Важное = Ложь;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ЗаявкиНаВозвратТоваровОтКлиентов";
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", "ВсеОжидающиеОплаты");
ПараметрыОтбора.Вставить("Актуальность", "Просроченные");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Приоритет", "");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ЗаявкиНаВозвратТоваровОтКлиентовПросроченаОплата";
Дело.ЕстьДела = Результат.ЗаявкиНаВозвратТоваровОтКлиентовПросроченаОплата > 0;
Дело.Представление = НСтр("ru = 'Просрочена оплата по заявкам'");
Дело.Количество = Результат.ЗаявкиНаВозвратТоваровОтКлиентовПросроченаОплата;
Дело.Важное = Истина;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ЗаявкиНаВозвратТоваровОтКлиентов";
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", "ВсеОжидающиеИсполнения");
ПараметрыОтбора.Вставить("Актуальность", "Просроченные");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Приоритет", "");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ЗаявкиНаВозвратТоваровОтКлиентовПросроченоИсполнение";
Дело.ЕстьДела = Результат.ЗаявкиНаВозвратТоваровОтКлиентовПросроченоИсполнение > 0;
Дело.Представление = НСтр("ru = 'Просрочено исполнение заявок'");
Дело.Количество = Результат.ЗаявкиНаВозвратТоваровОтКлиентовПросроченоИсполнение;
Дело.Важное = Истина;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ЗаявкиНаВозвратТоваровОтКлиентов";
Если Результат.ЗаявкиНаВозвратТоваровОтКлиентовВсегоВРаботе > 0 Тогда
ДелоРодитель.ЕстьДела = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
КонецПроцедуры
#КонецОбласти
#Область Прочее
Функция ТекстЗапросаТоварыДокумента(Отбор, ТекстСоединения = "", ДополнятьПоТаблицеСерий = Ложь) Экспорт
ТекстЗапросаСоединениеТаблиц = " Таблица.Ссылка = ДанныеУчета.ЗаказПоставщику
| И Таблица.КодСтроки = ДанныеУчета.КодСтроки";
Если ЗначениеЗаполнено(ТекстСоединения) Тогда
ТекстЗапросаСоединениеТаблиц = ТекстСоединения;
КонецЕсли;
Если ДополнятьПоТаблицеСерий Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Ссылка КАК ЗаказПоставщику,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| ВЫБОР
| КОГДА НЕ ТаблицаСерии.Номенклатура ЕСТЬ NULL
| ТОГДА ТаблицаСерии.Серия
| ИНАЧЕ Таблица.Серия
| КОНЕЦ КАК Серия,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.ДатаПоступления КАК ДатаПоступления,
| ВЫБОР
| КОГДА НЕ ТаблицаСерии.Номенклатура ЕСТЬ NULL
| ТОГДА ТаблицаСерии.Количество
| ИНАЧЕ Таблица.Количество
| КОНЕЦ КАК Количество,
| ДанныеУчета.КОформлению КАК КОформлению,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Цена КАК Цена,
| Таблица.СтавкаНДС КАК СтавкаНДС,
| Таблица.Склад КАК Склад,
| Таблица.ДокументРеализации КАК ДокументРеализации,
| Таблица.НоменклатураОприходование КАК НоменклатураОприходование,
| Таблица.ХарактеристикаОприходование КАК ХарактеристикаОприходование,
| Таблица.Порча КАК Порча,
| Таблица.Сумма КАК Сумма,
| Таблица.СуммаНДС КАК СуммаНДС,
| Таблица.СуммаСНДС КАК СуммаСНДС
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО &МетодСоединения
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеСерии КАК ТаблицаСерии
| ПО Таблица.Ссылка = ТаблицаСерии.Ссылка
| И Таблица.Номенклатура = ТаблицаСерии.Номенклатура
| И Таблица.Характеристика = ТаблицаСерии.Характеристика
| И Таблица.НоменклатураОприходование = ТаблицаСерии.НоменклатураОприходование
| И Таблица.ХарактеристикаОприходование = ТаблицаСерии.ХарактеристикаОприходование
| И Таблица.Назначение = ТаблицаСерии.Назначение
| И Таблица.Склад = ТаблицаСерии.Склад
|
|ГДЕ
| НЕ Таблица.Отменено И
| НЕ ДанныеУчета.Номенклатура ЕСТЬ NULL
| И &Отбор";
Иначе
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Ссылка КАК ЗаказПоставщику,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.Серия КАК Серия,
| Таблица.КодСтроки КАК КодСтроки,
| Таблица.ДатаПоступления КАК ДатаПоступления,
| Таблица.Количество КАК Количество,
| ДанныеУчета.КОформлению КАК КОформлению,
| Таблица.Упаковка КАК Упаковка,
| Таблица.Цена КАК Цена,
| Таблица.СтавкаНДС КАК СтавкаНДС,
| Таблица.Склад КАК Склад,
| Таблица.ДокументРеализации КАК ДокументРеализации,
| Таблица.НоменклатураОприходование КАК НоменклатураОприходование,
| Таблица.ХарактеристикаОприходование КАК ХарактеристикаОприходование,
| Таблица.Порча КАК Порча,
| Таблица.Сумма КАК Сумма,
| Таблица.СуммаНДС КАК СуммаНДС,
| Таблица.СуммаСНДС КАК СуммаСНДС
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ВозвращаемыеТовары КАК Таблица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДанныеУчета КАК ДанныеУчета
| ПО &МетодСоединения
|
|ГДЕ
| НЕ Таблица.Отменено И
| НЕ ДанныеУчета.Номенклатура ЕСТЬ NULL
| И &Отбор";
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&МетодСоединения", ТекстЗапросаСоединениеТаблиц);
ТекстОтбора = ОбщегоНазначенияУТ.ТекстОтбораПоКоллекцииОтборов(Отбор);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Отбор", ТекстОтбора);
Возврат ТекстЗапроса;
КонецФункции
Функция СуммыПоЗаказам(СсылкаОбъект, ЗначенияРеквизитов = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| &Ссылка КАК Заказ,
| &Дата КАК Дата,
| &ДатаСогласования КАК ДатаСогласования,
| Товары.ДатаОтгрузки КАК ДатаОтгрузки,
| Товары.СуммаСНДС КАК Сумма,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
| Товары.Отменено КАК Отменено,
| &ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару,
| &ТребуетсяЗалогЗаТару КАК ТребуетсяЗалогЗаТару
|ПОМЕСТИТЬ ВТТовары
|ИЗ &ТаблицаЗначений КАК Товары
|ГДЕ &УсловиеСсылка
|;
|ВЫБРАТЬ
| Товары.Заказ КАК Заказ,
| Товары.Дата КАК Дата,
| Товары.ДатаСогласования КАК ДатаСогласования,
| Товары.ДатаОтгрузки КАК ДатаОтгрузки,
| ЛОЖЬ КАК СверхЗаказа,
| СУММА(ВЫБОР
| КОГДА Товары.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ НЕ Товары.ВернутьМногооборотнуюТару
| ТОГДА Товары.Сумма
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаПлатежа,
| 0 КАК СуммаВзаиморасчетов,
| СУММА(ВЫБОР
| КОГДА Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И Товары.ТребуетсяЗалогЗаТару
| ТОГДА Товары.Сумма
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаЗалогаЗаТару,
| 0 КАК СуммаВзаиморасчетовПоТаре
|ИЗ ВТТовары КАК Товары
|ГДЕ
| НЕ Товары.Отменено
|СГРУППИРОВАТЬ ПО
| Товары.ДатаОтгрузки,
| Товары.Заказ,
| Товары.Дата,
| Товары.ДатаСогласования
|;";
Если ЗначенияРеквизитов = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТаблицаЗначений", "Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ВернутьМногооборотнуюТару", "Товары.Ссылка.ВернутьМногооборотнуюТару");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТребуетсяЗалогЗаТару", "Товары.Ссылка.ТребуетсяЗалогЗаТару");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Дата", "Товары.Ссылка.Дата");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ДатаСогласования", "Товары.Ссылка.ДатаСогласования");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеСсылка", "Товары.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка",СсылкаОбъект);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеСсылка", "ИСТИНА");
Для Каждого КлючЗначение Из ЗначенияРеквизитов Цикл
Запрос.УстановитьПараметр(КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;
КонецЕсли;
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#КонецОбласти
#Область ФормированиеГиперссылкиВЖурналеДокументыПродажи
Функция ТекстЗапросаЗаказыВРаботе()
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| СостоянияЗаказов.Заказ,
| СостоянияЗаказов.Состояние
|ИЗ
| РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказов
|ГДЕ
| СостоянияЗаказов.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт)";
Возврат ТекстЗапроса
КонецФункции
Функция СформироватьГиперссылкуСмТакжеВРаботе(Параметры) Экспорт
Если Не (ПравоДоступа("Чтение", Метаданные.РегистрыСведений.СостоянияЗаказовКлиентов)
И ПравоДоступа("Изменение", Метаданные.Документы.ЗаявкаНаВозвратТоваровОтКлиента)
И ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента")
И ПолучитьФункциональнуюОпцию("ИспользоватьЗаявкиНаВозвратТоваровОтКлиентов")) Тогда
Возврат Неопределено;
КонецЕсли;
ТекстГиперссылки = НСтр("ru = 'Заявки на возврат'");
Запрос = Новый Запрос(ТекстЗапросаЗаказыВРаботе());
Если Запрос.Выполнить().Пустой() Тогда
Возврат Новый ФорматированнаяСтрока(ТекстГиперссылки,,ЦветаСтиля.НезаполненноеПолеТаблицы,,
ИмяФормыРабочееМесто());
Иначе
Возврат Новый ФорматированнаяСтрока(ТекстГиперссылки,,,,
ИмяФормыРабочееМесто());
КонецЕсли;
КонецФункции
Функция ИмяФормыРабочееМесто() Экспорт
Возврат "Документ.ЗаявкаНаВозвратТоваровОтКлиента.Форма.ФормаСпискаДокументов";
КонецФункции
#КонецОбласти
#Область Назначения
Функция ШаблонНазначения(Объект) Экспорт
ШаблонНазначения = Справочники.Назначения.ШаблонНового();
Если НаправленияДеятельностиСервер.ЭтоНаправлениеДеятельностиСОбособлениемТоваровИРабот(Объект.НаправлениеДеятельности) Тогда
ШаблонНазначения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЕсли;
ВариантОбособления = Константы.ВариантОбособленияТоваровВПродажах.Получить();
Если ВариантОбособления <> Перечисления.ВариантыОбособленияТоваровВПродажах.НаправлениеДеятельности
Или Не ЗначениеЗаполнено(ШаблонНазначения.НаправлениеДеятельности) Тогда
ШаблонНазначения.Заказ = Объект.Ссылка;
КонецЕсли;
Возврат ШаблонНазначения;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли