#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция ПредставлениеОбъектаНаОсновномЯзыке() Экспорт
КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
ПредставлениеОбъекта = НСтр(
"ru = 'Заказ клиента'",
КодОсновногоЯзыка);
Возврат ПредставлениеОбъекта;
КонецФункции
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Организация, Склад", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор, ДокументОснование, Менеджер";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Подразделение", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Организация";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Договор, Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"БанковскийСчет", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор, Организация";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор, Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Касса", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Контрагент";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Договор, Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Контрагент";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"БанковскийСчетКонтрагента", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"ХозяйственнаяОперация", Параметры);
КонецПроцедуры
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("Взаиморасчеты");
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("Продажи");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("СуммыДокументовВВалютахУчета");
МеханизмыДокумента.Добавить("АдресныйСклад");
МеханизмыДокумента.Добавить("ЦеныИСкидки");
ЗаказКлиентаЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.ЗаказКлиента") Тогда
ДокументОбъект = Документ;
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументОбъект = Документ.ПолучитьОбъект();
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолучитьДанныеДокумента(Запрос, ДокументСсылка);
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаБонусныеБаллы(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Функция ТекстЗапросаРеквизитыДоставки() Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Шапка.Номер КАК Номер,
| Шапка.Проведен КАК Проведен,
| Шапка.Ссылка КАК Ссылка,
| Шапка.Дата КАК Дата,
| Шапка.Партнер КАК ПолучательОтправитель,
| Шапка.ПеревозчикПартнер КАК Перевозчик,
| ВЫБОР КОГДА (Шапка.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчика)
| И НЕ &ИспользоватьЗаданияНаПеревозкуДляУчетаДоставкиПеревозчиками)
| ИЛИ Шапка.СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.ДоКлиентаКурьером)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.Самовывоз)
| ИНАЧЕ Шапка.СпособДоставки
| КОНЕЦ КАК СпособДоставки,
| Шапка.ЗонаДоставки КАК Зона,
|
| ВЫБОР КОГДА СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаПоАдресу)
| ТОГДА Шапка.АдресДоставкиПеревозчика
| ИНАЧЕ Шапка.АдресДоставки
| КОНЕЦ КАК Адрес,
|
| ВЫБОР КОГДА СпособДоставки = ЗНАЧЕНИЕ(Перечисление.СпособыДоставки.СиламиПеревозчикаПоАдресу)
| ТОГДА Шапка.АдресДоставкиПеревозчикаЗначенияПолей
| ИНАЧЕ Шапка.АдресДоставкиЗначенияПолей
| КОНЕЦ КАК АдресЗначенияПолей,
|
| Шапка.ВремяДоставкиС КАК ВремяС,
| Шапка.ВремяДоставкиПо КАК ВремяПо,
| Шапка.ДополнительнаяИнформацияПоДоставке
| КАК ДополнительнаяИнформация,
| Т.Склад КАК Склад,
| Т.ДоставитьПолностью КАК ДоставитьПолностью,
| Шапка.ОсобыеУсловияПеревозки КАК ОсобыеУсловияПеревозки,
| Шапка.ОсобыеУсловияПеревозкиОписание КАК ОсобыеУсловияПеревозкиОписание,
| Шапка.Соглашение.РазбиватьРасходныеОрдераПоРаспоряжениям КАК РазбиватьРасходныеОрдераПоРаспоряжениям
|
|ИЗ
| (ВЫБРАТЬ
| Т.Ссылка КАК Ссылка,
| Т.Склад КАК Склад,
| МИНИМУМ(Т.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
| КАК ДоставитьПолностью
| ИЗ
| Документ.ЗаказКлиента.Товары КАК Т
| ГДЕ
| Т.Ссылка В (&Ссылки)
| И Т.Номенклатура.ТипНоменклатуры В (
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
|
| СГРУППИРОВАТЬ ПО
| Т.Ссылка,
| Т.Склад
|
| ИМЕЮЩИЕ
| МАКСИМУМ(Т.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)) = ИСТИНА
| ) КАК Т
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК Шапка
| ПО (Шапка.Ссылка = Т.Ссылка)";
Возврат ТекстЗапроса;
КонецФункции
#Область СозданиеНаОсновании
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Обработки.ЖурналДокументовПродажи.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.АктВыполненныхРабот.ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании);
Документы.ДоверенностьВыданная.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ЗаказНаПеремещение.ДобавитьКомандуСоздатьОбеспечивающийЗаказ(КомандыСозданияНаОсновании);
Документы.ЗаказНаСборку.ДобавитьКомандуСоздатьОбеспечивающийЗаказ(КомандыСозданияНаОсновании);
Документы.ЗаказПоставщику.ДобавитьКомандуСоздатьОбеспечивающийЗаказ(КомандыСозданияНаОсновании);
Документы.ЗаказПоставщику.ДобавитьКомандуСоздатьНаОснованииЗаказыПоставщикам(КомандыСозданияНаОсновании);
Документы.КорректировкаНазначенияТоваров.ДобавитьКомандуСоздатьНаОснованииЗаказаКлиента(КомандыСозданияНаОсновании);
Если ПолучитьФункциональнуюОпцию("ИспользоватьОказаниеАгентскихУслугПриЗакупке") Тогда
Документы.ОтгрузкаТоваровСХранения.ДобавитьКомандуСоздатьНаОснованииЗаказаКлиента(КомандыСозданияНаОсновании);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьКомиссиюПриПродажах") Тогда
КомандаСозданияНаОснованииЗаявка = Документы.ПередачаТоваровХранителю.ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании);
Если КомандаСозданияНаОснованииЗаявка <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСозданияНаОснованииЗаявка,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
ВидСравненияКомпоновкиДанных.Равно);
КомандаСозданияНаОснованииЗаявка.Представление = НСтр("ru = 'Передача товаров комиссионеру'");
КонецЕсли;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи") Тогда
КомандаСозданияНаОснованииЗаявка = Документы.ПередачаТоваровХранителю.ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании);
Если КомандаСозданияНаОснованииЗаявка <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСозданияНаОснованииЗаявка,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи,
ВидСравненияКомпоновкиДанных.Равно);
КомандаСозданияНаОснованииЗаявка.Представление = НСтр("ru = 'Передача товаров хранителю'");
КонецЕсли;
КонецЕсли;
Документы.ПоступлениеБезналичныхДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Справочники.Претензии.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ПриходныйКассовыйОрдер.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
КомандаСозданияНаОснованииЗаявка = Документы.РеализацияТоваровУслуг.ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании);
Если КомандаСозданияНаОснованииЗаявка <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСозданияНаОснованииЗаявка,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
ВидСравненияКомпоновкиДанных.Равно);
КомандаСозданияНаОснованииЗаявка.ФункциональныеОпции =
"ИспользуетсяКомиссионнаяПродажа20";
КонецЕсли;
КомандаСозданияНаОснованииЗаявка = Документы.РеализацияТоваровУслуг.ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании);
Если КомандаСозданияНаОснованииЗаявка <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСозданияНаОснованииЗаявка,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
ВидСравненияКомпоновкиДанных.НеРавно);
КонецЕсли;
КомандаСозданияНаОснованииПереходПраваСобственности =
Документы.РеализацияТоваровУслуг.ДобавитьКомандуСоздатьПереходПраваСобственностиНаОснованииЗаказа(
КомандыСозданияНаОсновании);
Если КомандаСозданияНаОснованииПереходПраваСобственности <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСозданияНаОснованииПереходПраваСобственности,
"ЭтоЗаказКакСчет",
Ложь,
ВидСравненияКомпоновкиДанных.Равно);
КонецЕсли;
Документы.РеализацияТоваровУслуг.ДобавитьКомандуСоздатьНаОснованииАктНаПередачуПрав(КомандыСозданияНаОсновании);
Документы.СчетНаОплатуКлиенту.ДобавитьКомандуСоздатьНаОснованииСчетаНаОплату(КомандыСозданияНаОсновании);
Документы.ОперацияПоПлатежнойКарте.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если ПолучитьФункциональнуюОпцию("ИспользоватьВнутреннееСогласованиеЗаказовКлиентов") Тогда
КомандаСоздатьНаОсновании = БизнесПроцессы.СогласованиеПродажи.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если КомандаСоздатьНаОсновании <> Неопределено Тогда
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.СоздатьНовоеСогласованиеЗаказаКлиента";
КомандаСоздатьНаОсновании.Идентификатор = "СоздатьНовоеСогласованиеЗаказаКлиента";
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Согласование заказа клиента'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьВнутреннееСогласованиеЗаказовКлиентов";
КонецЕсли;
КонецЕсли;
Документы.РасходныйОрдерНаТовары.ДобавитьКомандуСоздатьНаОснованииРасходныйОрдерНаТовары(КомандыСозданияНаОсновании);
Документы.ПоручениеЭкспедитору.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
ТорговыеПредложенияПереопределяемый.ДобавитьКомандуПоискаТорговыхПредложений(КомандыСозданияНаОсновании);
СервисДоставкиПереопределяемый.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, Параметры);
КомандаСозданияНаОснованииЗаявка = Документы.ЗаявкаНаРасходованиеДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если КомандаСозданияНаОснованииЗаявка <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСозданияНаОснованииЗаявка,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
ВидСравненияКомпоновкиДанных.НеРавно);
КонецЕсли;
КомандаСозданияНаОснованииРКО = Документы.РасходныйКассовыйОрдер.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если КомандаСозданияНаОснованииРКО <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСозданияНаОснованииРКО,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
ВидСравненияКомпоновкиДанных.НеРавно);
КонецЕсли;
КомандаСозданияНаОснованииСписаниеБДС = Документы.СписаниеБезналичныхДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Если КомандаСозданияНаОснованииСписаниеБДС <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСозданияНаОснованииСписаниеБДС,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
ВидСравненияКомпоновкиДанных.НеРавно);
КонецЕсли;
КомандаСозданияНаОснованииЭквайринговаяОперация = Документы.ОперацияПоПлатежнойКарте.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании, Перечисления.ХозяйственныеОперации.ВозвратОплатыКлиенту);
Если КомандаСозданияНаОснованииЭквайринговаяОперация <> Неопределено Тогда
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаСозданияНаОснованииЭквайринговаяОперация,
"ХозяйственнаяОперация",
Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
ВидСравненияКомпоновкиДанных.НеРавно);
КонецЕсли;
Документы.ОтгрузкаТоваровКлиенту.ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании);
ЗаказКлиентаЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаказКлиента) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ЗаказКлиента.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ЗаказКлиента);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.ФункциональныеОпции = "ИспользоватьЗаказыКлиентов";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
#КонецОбласти
Процедура ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(ХозяйственнаяОперация, МассивВсехРеквизитов, МассивРеквизитовОперации) Экспорт
МассивВсехРеквизитов = Новый Массив;
МассивВсехРеквизитов.Добавить("ТребуетсяЗалогЗаТару");
МассивВсехРеквизитов.Добавить("Товары.ПроцентРучнойСкидки");
МассивВсехРеквизитов.Добавить("Товары.СуммаРучнойСкидки");
МассивВсехРеквизитов.Добавить("Товары.ПроцентАвтоматическойСкидки");
МассивВсехРеквизитов.Добавить("Товары.СуммаАвтоматическойСкидки");
МассивРеквизитовОперации = Новый Массив;
Если ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту
Или ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности
Или Не ЗначениеЗаполнено(ХозяйственнаяОперация) Тогда
МассивРеквизитовОперации.Добавить("ТребуетсяЗалогЗаТару");
МассивРеквизитовОперации.Добавить("Товары.ПроцентРучнойСкидки");
МассивРеквизитовОперации.Добавить("Товары.СуммаРучнойСкидки");
МассивРеквизитовОперации.Добавить("Товары.ПроцентАвтоматическойСкидки");
МассивРеквизитовОперации.Добавить("Товары.СуммаАвтоматическойСкидки");
КонецЕсли;
КонецПроцедуры
Функция РеквизитыДокумента(ДокументСсылка) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| ДанныеДокумента.СуммаДокумента КАК СуммаВзаиморасчетов,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности
|ИЗ
| Документ.ЗаказКлиента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &ДокументСсылка
|");
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Дата = Выборка.Дата;
Организация = Выборка.Организация;
Партнер = Выборка.Партнер;
Контрагент = Выборка.Контрагент;
Договор = Выборка.Договор;
НаправлениеДеятельности = Выборка.НаправлениеДеятельности;
ПорядокРасчетов = Выборка.ПорядокРасчетов;
ВалютаВзаиморасчетов = Выборка.ВалютаВзаиморасчетов;
ХозяйственнаяОперация = ?(ЗначениеЗаполнено(Выборка.ХозяйственнаяОперация), Выборка.ХозяйственнаяОперация, Перечисления.ХозяйственныеОперации.РеализацияКлиенту);
СуммаДокумента = Выборка.СуммаДокумента;
СуммаВзаиморасчетов = ?(Выборка.Проведен, Выборка.СуммаВзаиморасчетов, 0);
Иначе
Дата = Дата(1,1,1);
Организация = Справочники.Организации.ПустаяСсылка();
Партнер = Справочники.Партнеры.ПустаяСсылка();
Контрагент = Справочники.Контрагенты.ПустаяСсылка();
Договор = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПустаяСсылка();
ВалютаВзаиморасчетов = Справочники.Валюты.ПустаяСсылка();
ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту;
СуммаДокумента = 0;
СуммаВзаиморасчетов = 0;
КонецЕсли;
СтруктураРеквизитов = Новый Структура;
СтруктураРеквизитов.Вставить("Дата", Дата);
СтруктураРеквизитов.Вставить("Организация", Организация);
СтруктураРеквизитов.Вставить("Партнер", Партнер);
СтруктураРеквизитов.Вставить("Контрагент", Контрагент);
СтруктураРеквизитов.Вставить("Договор", Договор);
СтруктураРеквизитов.Вставить("НаправлениеДеятельности", НаправлениеДеятельности);
СтруктураРеквизитов.Вставить("ПорядокРасчетов", ПорядокРасчетов);
СтруктураРеквизитов.Вставить("ВалютаВзаиморасчетов", ВалютаВзаиморасчетов);
СтруктураРеквизитов.Вставить("ХозяйственнаяОперация", ХозяйственнаяОперация);
СтруктураРеквизитов.Вставить("СуммаДокумента", СуммаДокумента);
СтруктураРеквизитов.Вставить("СуммаВзаиморасчетов", СуммаВзаиморасчетов);
Возврат СтруктураРеквизитов;
КонецФункции
#Область РасчетСостояний
Процедура РассчитатьСостояние(
Знач ЗаказКлиента,
Знач Договор,
СостояниеРасчетов,
ПроверитьЗаданияКОтражениюСостоянияЗаказов = Ложь) Экспорт
ЗаполнитьЗначенияСвойств(СостояниеРасчетов, ВзаиморасчетыКлиентСервер.СтруктураСостоянияРасчетов(Истина));
Если НЕ ЗначениеЗаполнено(ЗаказКлиента) ИЛИ НЕ ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента") Тогда
Возврат;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ВТ.Ссылка КАК Ссылка,
| ВТ.Проведен КАК Проведен,
| ВТ.Статус КАК Статус,
| ВТ.СуммаДокумента КАК СуммаДокумента,
| ВТ.ПорядокРасчетов КАК ПорядокРасчетов,
| ВТ.ОбъектРасчетов КАК ОбъектРасчетов
|ПОМЕСТИТЬ ВТ_ДокументЗаказ
|ИЗ
| Документ.ЗаказКлиента КАК ВТ
|ГДЕ
| ВТ.Ссылка = &ЗаказКлиента
| И НЕ ВТ.ЭтоЗаказКакСчет
|;
|
|ВЫБРАТЬ
| ВЫБОР
| КОГДА НЕ ДокументЗаказ.Проведен
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ПустаяСсылка)
| ИНАЧЕ
| ЕСТЬNULL(СостоянияЗаказовКлиентов.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт))
| КОНЕЦ КАК Состояние,
| ВЫБОР
| КОГДА (НЕ ДокументЗаказ.Проведен)
| ТОГДА ЛОЖЬ
| КОГДА ДокументЗаказ.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт)
| ТОГДА ЛОЖЬ
| КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1)
| И &ТекущаяДата > СостоянияЗаказовКлиентов.ДатаСобытия
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СостояниеПросрочено,
| ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОплаты,0) КАК СуммаОплаты,
| ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОплаты,0) КАК ПроцентОплаты,
| ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОтгрузки,0) КАК СуммаОтгрузки,
| ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентОтгрузки,0) КАК ПроцентОтгрузки,
| ЕСТЬNULL(СостоянияЗаказовКлиентов.ЕстьРасхожденияОрдерНакладная, ЛОЖЬ) КАК ЕстьРасхожденияОрдерНакладная,
| ЕСТЬNULL(СостоянияЗаказовКлиентов.ПроцентДолга,0) КАК ПроцентДолга
| ,&ПолеЕстьЗаданияКОтражениюСостоянияЗаказов
|ИЗ
| ВТ_ДокументЗаказ КАК ДокументЗаказ
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
|ПО
| СостоянияЗаказовКлиентов.Заказ = ДокументЗаказ.Ссылка
|ГДЕ
| &ПроверитьЗаданияКОтражениюСостоянияЗаказов
|
|";
ТекстЗапросаЕстьЗадания = "ВЫБРАТЬ ЛОЖЬ КАК ЕстьЗаданияКОтражениюСостоянияЗаказов";
Если ПроверитьЗаданияКОтражениюСостоянияЗаказов Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
",&ПолеЕстьЗаданияКОтражениюСостоянияЗаказов",
", ЛОЖЬ КАК ЕстьЗаданияКОтражениюСостоянияЗаказов");
ТекстЗапросаЕстьЗадания = СостоянияДокументов.ТекстЗапросаЕстьЗаданияКОтражениюСостоянияЗаказов("&ЗаказКлиента");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&ПроверитьЗаданияКОтражениюСостоянияЗаказов",
СтрШаблон("НЕ ИСТИНА В
| (%1)", ТекстЗапросаЕстьЗадания));
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",&ПолеЕстьЗаданияКОтражениюСостоянияЗаказов", "");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПроверитьЗаданияКОтражениюСостоянияЗаказов", "ИСТИНА");
КонецЕсли;
ТекстЗапросаРасчеты = "ВЫБРАТЬ 0 КАК СуммаДолга, 0 КАК СуммаКОплате";
Если ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.РасчетыСКлиентами) Тогда
ТекстЗапросаРасчеты = "
|ВЫБРАТЬ
| ВЫБОР
| КОГДА
| ДокументЗаказ.Проведен И
| ((ДокументЗаказ.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован) И ДокументЗаказ.СуммаДокумента > 0)
| ИЛИ НЕ (ДокументЗаказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам)
| ИЛИ ДокументЗаказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)))
| ТОГДА
| ВЫРАЗИТЬ (ЕСТЬNULL(РасчетыСКлиентамиОстатки.СуммаОстаток, 0) КАК ЧИСЛО(31,2))
| ИНАЧЕ
| 0
| КОНЕЦ КАК СуммаДолга,
| ВЫБОР
| КОГДА
| ДокументЗаказ.Проведен
| И (ДокументЗаказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамКонтрагентов)
| ИЛИ ДокументЗаказ.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамНакладным))
| ТОГДА
| ЕСТЬNULL(РасчетыСКлиентамиОстатки.КОплатеОстаток,0)
| ИНАЧЕ
| 0
| КОНЕЦ КАК СуммаКОплате
|ИЗ
| ВТ_ДокументЗаказ КАК ДокументЗаказ
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрНакопления.РасчетыСКлиентами.Остатки(,
| ОбъектРасчетов В (ВЫБРАТЬ ВТ.ОбъектРасчетов ИЗ ВТ_ДокументЗаказ КАК ВТ)
| ) КАК РасчетыСКлиентамиОстатки
|ПО
| ДокументЗаказ.ОбъектРасчетов = РасчетыСКлиентамиОстатки.ОбъектРасчетов
|";
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
ТекстыЗапроса = Новый Массив;
ТекстыЗапроса.Добавить(ТекстЗапроса);
ТекстыЗапроса.Добавить(ТекстЗапросаРасчеты);
ТекстыЗапроса.Добавить(ТекстЗапросаЕстьЗадания);
ТекстЗапроса = СтрСоединить(ТекстыЗапроса, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("ЗаказКлиента", ЗаказКлиента);
Запрос.УстановитьПараметр("ТекущаяДата", НачалоДня(ТекущаяДатаСеанса()));
РезультатыЗапроса = Запрос.ВыполнитьПакет();
РезультатСостояний = РезультатыЗапроса[1];
Если НЕ РезультатСостояний.Пустой() Тогда
ВыборкаСостояний = РезультатСостояний.Выбрать();
Если ВыборкаСостояний.Следующий() Тогда
ЗаполнитьЗначенияСвойств(СостояниеРасчетов, ВыборкаСостояний);
КонецЕсли;
ВыборкаРасчетов = РезультатыЗапроса[2].Выбрать();
Если ВыборкаРасчетов.Следующий() Тогда
ЗаполнитьЗначенияСвойств(СостояниеРасчетов, ВыборкаРасчетов);
КонецЕсли;
ИначеЕсли ПроверитьЗаданияКОтражениюСостоянияЗаказов Тогда
ВыборкаЕстьЗадания = РезультатыЗапроса[3].Выбрать();
Если ВыборкаЕстьЗадания.Следующий() Тогда
ЗаполнитьЗначенияСвойств(СостояниеРасчетов, ВыборкаЕстьЗадания);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ТекстЗапросаДляРасчетаСостоянийЗаказов() Экспорт
ТекстЗапроса ="
|ВЫБРАТЬ
|ВЫБОР
|
| КОГДА
| НЕ ДокументЗаказКлиента.Проведен
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ПустаяСсылка)
|
| КОГДА
| ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяСогласование)
|
| КОГДА
| (ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам)
| ИЛИ ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным))
| И ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению)
| И ДокументЗаказКлиента.СуммаАвансаДоОбеспечения > 0
| И ЕСТЬNULL(СостояниеВзаиморасчетов.ОплаченоПоЗаказу, 0) < ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
| И (ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) > 0 ИЛИ СостояниеВзаиморасчетов.Заказ ЕСТЬ NULL)
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяАвансДоОбеспечения)
|
| КОГДА
| ВТОбеспечениеЗаказа.ЕстьКОбеспечению
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКОбеспечению)
|
| КОГДА
| (ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам)
| ИЛИ ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным))
| И (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению) ИЛИ ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке))
| И ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки > 0
| И ЕСТЬNULL(СостояниеВзаиморасчетов.ОплаченоПоЗаказу, 0) < ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
| И (ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) > 0 ИЛИ СостояниеВзаиморасчетов.Заказ ЕСТЬ NULL)
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяПредоплатаДоОтгрузки)
|
| КОГДА
| НЕ ВтЧастичноВНаличии.Ссылка ЕСТЬ NULL
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяОбеспечение)
|
| КОГДА
| НЕ ВТОбеспечениеЗаказа.ВсеОтгрузить
| И (ДокументЗаказКлиента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала)
| И НЕ ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт)
| ИЛИ НЕ ДокументЗаказКлиента.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала))
| ИЛИ ВТРасхожденияОрдерНакладная.ТребуетсяОрдер
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКОтгрузке)
|
| КОГДА
| (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке)
| ИЛИ ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению))
| И (ЕСТЬNULL(СостояниеВзаиморасчетов.ОплаченоПоЗаказу, 0) >= ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
| ИЛИ НЕ ДокументЗаказКлиента.ПорядокРасчетов В (ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам), ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)))
| И ЕСТЬNULL(ЗаказыКлиентовОстатки.КОтгрузкеКонечныйОстаток, 0) = 0
| И ЕСТЬNULL(ЗаказыКлиентовОстатки.КОформлениюКонечныйОстаток, 0) > 0
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяПереходПраваСобственности)
|
| КОГДА
| (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке)
| ИЛИ ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению))
| И (ЕСТЬNULL(СостояниеВзаиморасчетов.ОплаченоПоЗаказу, 0) >= ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
| ИЛИ ЕСТЬNULL(СостояниеВзаиморасчетов.СуммаЗаказа, 0) - ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) >= ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
| ИЛИ НЕ ДокументЗаказКлиента.ПорядокРасчетов В (ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам), ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным)))
| И (ЕСТЬNULL(ЗаказыКлиентовОстатки.КОформлениюКонечныйОстаток, 0) <> 0
| ИЛИ ЕСТЬNULL(ЗаказыКлиентовОстатки.ЗаказаноКонечныйОстаток, 0) <> 0
| ИЛИ ЕСТЬNULL(ТоварыКОтгрузкеОстатки.КОтгрузкеОстаток, 0) <> 0)
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ВПроцессеОтгрузки)
|
| КОГДА
| (ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам)
| ИЛИ ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным))
| И (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке)
| ИЛИ ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению))
| И ДокументЗаказКлиента.СуммаДокумента - ДокументЗаказКлиента.СуммаАвансаДоОбеспечения - ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки > 0
| И ЕСТЬNULL(ЗаказыКлиентовОстатки.КОформлениюКонечныйОстаток, 0) = 0
| И ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) > 0
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяОплатаПослеОтгрузки)
|
| КОГДА
| ДокументЗаказКлиента.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт) И &КонтролироватьЗакрытиеЗаказа
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКЗакрытию)
|
| КОГДА
| ДокументЗаказКлиента.Статус В
| (ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт))
| ТОГДА
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт)
|КОНЕЦ КАК Состояние,
|ВЫБОР
|
| КОГДА
| НЕ ДокументЗаказКлиента.Проведен
| ТОГДА
| ДАТАВРЕМЯ(1,1,1)
|
| КОГДА
| ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
| ТОГДА
| ДокументЗаказКлиента.ДатаСогласования
|
| КОГДА
| (ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам)
| ИЛИ ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным))
| И ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению)
| И ДокументЗаказКлиента.СуммаАвансаДоОбеспечения > 0
| И ЕСТЬNULL(СостояниеВзаиморасчетов.ОплаченоПоЗаказу, 0) < ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
| И (ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) > 0 ИЛИ СостояниеВзаиморасчетов.Заказ ЕСТЬ NULL)
| ТОГДА
| ДатыАктуальностиРасчетов.ДатаАктуальности
|
| КОГДА
| (ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам)
| ИЛИ ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным))
| И ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению)
| И ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки > 0
| И ЕСТЬNULL(СостояниеВзаиморасчетов.ОплаченоПоЗаказу, 0) < ДокументЗаказКлиента.СуммаПредоплатыДоОтгрузки + ДокументЗаказКлиента.СуммаАвансаДоОбеспечения
| И (ЕСТЬNULL(СостояниеВзаиморасчетов.ОсталосьОплатить, 0) > 0 ИЛИ СостояниеВзаиморасчетов.Заказ ЕСТЬ NULL)
| ТОГДА
| ДатыАктуальностиРасчетов.ДатаАктуальности
|
| КОГДА
| (ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению)
| ИЛИ ДокументЗаказКлиента.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке))
| И ДокументЗаказКлиента.СуммаДокумента > 0
| И (ЕСТЬ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
| ТОГДА ВЫРАЗИТЬ((ЕСТЬNULL(ЗаказыКлиентовОстатки.СуммаРасходСУчетомМерныхТоваров, 0) - ДокументЗаказКлиента.СуммаВозвратнойТары) * 100 / ДокументЗаказКлиента.СуммаДокумента КАК ЧИСЛО(20, 10))
| ИНАЧЕ ЕСТЬNULL(СостояниеВзаиморасчетов.ПроцентОтгрузки, 0)
|КОНЕЦ КАК ПроцентОтгрузки",
"ВЫБОР
| КОГДА
| ДокументЗаказКлиента.Проведен
| И (ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказам)
| ИЛИ ДокументЗаказКлиента.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоЗаказамНакладным))
| И ЕСТЬNULL(ЗаказыКлиентовОстатки.СуммаРасход, 0) > 0
| И ДокументЗаказКлиента.СуммаДокумента > 0
| ТОГДА
| ВЫРАЗИТЬ((ЕСТЬNULL(ЗаказыКлиентовОстатки.СуммаРасходСУчетомМерныхТоваров, 0) - ДокументЗаказКлиента.СуммаВозвратнойТары) * 100 / ДокументЗаказКлиента.СуммаДокумента КАК ЧИСЛО(20, 10))
| ИНАЧЕ 0
|КОНЕЦ КАК ПроцентОтгрузки");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПроцентОтгрузки", ТекстПоляПроцентОтгрузки);
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
ИменаРеквизитов = "Склад, Дата, Статус, ЭтоЗаказКакСчет";
Возврат ИменаРеквизитов;
КонецФункции
Функция ПараметрыУказанияСерий(Объект) Экспорт
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.ЗаказКлиента";
ПараметрыУказанияСерий.ИмяТЧСерии = "Товары";
ПараметрыСерийСклада = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.Склад, Истина);
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры
И Не Объект.ЭтоЗаказКакСчет;
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям
И Не Объект.ЭтоЗаказКакСчет;
ПараметрыУказанияСерий.ИменаПолейДополнительные.Добавить("Склад");
ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ОтгрузкаКлиенту);
ПараметрыУказанияСерий.ЭтоЗаказ = Истина;
ПараметрыУказанияСерий.ПланированиеОтгрузки = Истина;
ПараметрыУказанияСерий.РегистрироватьСерии = Ложь;
ПараметрыУказанияСерий.Дата = Объект.Дата;
Возврат ПараметрыУказанияСерий;
КонецФункции
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Склад,
| Товары.Номенклатура,
| Товары.Серия,
| Товары.Отменено,
| Товары.ВариантОбеспечения,
| Товары.Количество,
| Товары.СтатусУказанияСерий,
| Товары.НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.СтатусУказанияСерий КАК СтарыйСтатусУказанияСерий,
| ВЫБОР
| КОГДА Товары.Отменено
| ИЛИ ПолитикиУчетаСерий.ПолитикаУчетаСерий ЕСТЬ NULL
| ИЛИ НЕ Товары.ВариантОбеспечения В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
| ТОГДА 0
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УчитыватьСебестоимостьПоСериям
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 14
| КОГДА Товары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ТОГДА 15
| ИНАЧЕ 13
| КОНЕЦ
| КОГДА ПолитикиУчетаСерий.ПолитикаУчетаСерий.УказыватьПриПланированииОтгрузки
| ТОГДА ВЫБОР
| КОГДА Товары.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 10
| КОГДА Товары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ТОГДА 11
| ИНАЧЕ 9
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СтатусУказанияСерий
|ПОМЕСТИТЬ Статусы
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетаСерий
| ПО (ПолитикиУчетаСерий.Склад = Товары.Склад)
| И ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура).ВидНоменклатуры = ПолитикиУчетаСерий.Ссылка
|;
|
|
|ВЫБРАТЬ
| Статусы.НомерСтроки КАК НомерСтроки,
| Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
|ИЗ
| Статусы КАК Статусы
|ГДЕ
| Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Возврат ТекстЗапроса;
КонецФункции
Функция СформироватьЗапросПроверкиПриСменеСтатуса(МассивДокументов, НовыйСтатус, ДополнительныеПараметры) Экспорт
ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаказовКлиентов[НовыйСтатус];
Если ДополнительныеПараметры <> Неопределено И ДополнительныеПараметры.Свойство("КонтрольВыполненияЗаказа") Тогда
ТекстЗапроса = ПродажиСервер.ТекстЗапросаКонтрольЗаказаПослеПроведения();
ТекстЗапроса = ТекстЗапроса +
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР
| КОГДА ТаблицаДокументов.Статус = &Статус
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ИСТИНА КАК ЗаписьПроведением,
| ТаблицаДокументов.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет,
| ЕСТЬNULL(СостоянияДокументовEDI.ТекущийСтатус, ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказаEDI.ПустаяСсылка)) КАК СтатусEDI,
| ВЫБОР
| КОГДА ВтОстаткиПоЗаказам.ЗаказКлиента ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ЕстьОстаткиПоЗаказу
|ИЗ
| Документ.ЗаказКлиента КАК ТаблицаДокументов
|ЛЕВОЕ СОЕДИНЕНИЕ
| ВтОстаткиПоЗаказам
|ПО
| ВтОстаткиПоЗаказам.ЗаказКлиента = ТаблицаДокументов.Ссылка
|ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.СостоянияДокументовEDI КАК СостоянияДокументовEDI
|ПО
| ТаблицаДокументов.Ссылка = СостоянияДокументовEDI.ПрикладнойОбъект
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)
|";
Иначе
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокументов.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Ссылка) КАК Представление,
| ПРЕДСТАВЛЕНИЕ(ТаблицаДокументов.Статус) КАК ПредставлениеТекущегоСтатуса,
| ПРЕДСТАВЛЕНИЕ(&Статус) КАК ПредставлениеНовогоСтатуса,
| ВЫБОР
| КОГДА ТаблицаДокументов.Статус = &Статус
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СтатусСовпадает,
| ТаблицаДокументов.Проведен КАК Проведен,
| ТаблицаДокументов.ПометкаУдаления КАК ПометкаУдаления,
| ТаблицаДокументов.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет,
| ЕСТЬNULL(СостоянияДокументовEDI.ТекущийСтатус, ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказаEDI.ПустаяСсылка)) КАК СтатусEDI,
| ИСТИНА КАК ЗаписьПроведением
|ИЗ
| Документ.ЗаказКлиента КАК ТаблицаДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияДокументовEDI КАК СостоянияДокументовEDI
| ПО ТаблицаДокументов.Ссылка = СостоянияДокументовEDI.ПрикладнойОбъект
|ГДЕ
| ТаблицаДокументов.Ссылка В(&МассивДокументов)";
КонецЕсли;
КонтролироватьОтгрузку = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОтгрузки");
КонтролироватьРасчеты = ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОплаты");
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Статус", ЗначениеНовогоСтатуса);
Запрос.УстановитьПараметр("МассивДокументов", МассивДокументов);
Запрос.УстановитьПараметр("КонтролироватьОтгрузку", КонтролироватьОтгрузку);
Запрос.УстановитьПараметр("КонтролироватьРасчеты", КонтролироватьРасчеты);
Возврат Запрос;
КонецФункции
Функция ПроверкаПередСменойСтатуса(ВыборкаПроверки, НовыйСтатус, ДополнительныеПараметры) Экспорт
Отказ = Ложь;
ЗначениеНовогоСтатуса = Перечисления.СтатусыЗаказовКлиентов[НовыйСтатус];
Если ВыборкаПроверки.ЭтоЗаказКакСчет Тогда
ТекстОшибки = НСтр("ru='У документа %Документ% статус ""%Статус%"" не установлен, т.к. для заказов клиентов, созданных в режиме ""Заказ как счет"" статусы не применимы'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Документ%", ВыборкаПроверки.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Статус%", ВыборкаПроверки.ПредставлениеНовогоСтатуса);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ВыборкаПроверки.Ссылка, , , Отказ);
КонецЕсли;
Если ДополнительныеПараметры = Неопределено Тогда
Возврат Не Отказ;
КонецЕсли;
Если ДополнительныеПараметры.Свойство("КонтрольВыполненияЗаказа")
И ВыборкаПроверки.ЕстьОстаткиПоЗаказу Тогда
ТекстОшибки = НСтр("ru = 'У документа %Документ% статус ""%Статус%"" не установлен, т.к. заказ поставлен не полностью'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Документ%", ВыборкаПроверки.Ссылка);
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Статус%", ВыборкаПроверки.ПредставлениеНовогоСтатуса);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ВыборкаПроверки.Ссылка);
Отказ = Истина;
КонецЕсли;
СервисEDIУТ.ПроверитьКорректностьСтатусовСтатусамEDI(ВыборкаПроверки, НовыйСтатус, Отказ);
Возврат Не Отказ;
КонецФункции
Процедура ПроверитьВозможностьВводаНаОсновании(ЗаказКлиента, Статус = Неопределено, ЕстьОшибкиПроведен = Ложь,
КВыполнению = Ложь) Экспорт
ЭтоЗаказКакСчет = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗаказКлиента, "ЭтоЗаказКакСчет");
МассивДопустимыхСтатусов = ДопустимыеСтатусыВводаНаОсновании(КВыполнению, Не ЭтоЗаказКакСчет);
ЕстьОшибкиСтатус = МассивДопустимыхСтатусов.Найти(Статус) = Неопределено;
ОбщегоНазначенияУТ.ПроверитьВозможностьВводаНаОсновании(
ЗаказКлиента,
Статус,
ЕстьОшибкиПроведен,
ЕстьОшибкиСтатус,
МассивДопустимыхСтатусов);
КонецПроцедуры
Функция ДопустимыеСтатусыВводаНаОсновании(КВыполнению = Ложь, ИспользоватьРасширенныеВозможностиЗаказаКлиента = Неопределено) Экспорт
МассивДопустимыхСтатусов = Новый Массив;
Если ИспользоватьРасширенныеВозможностиЗаказаКлиента = Неопределено Тогда
ИспользоватьРасширенныеВозможностиЗаказаКлиента = ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
КонецЕсли;
Если ИспользоватьРасширенныеВозможностиЗаказаКлиента Тогда
Если ПолучитьФункциональнуюОпцию("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента") Тогда
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовКлиентов.КОбеспечению);
Иначе
Если КВыполнению Тогда
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовКлиентов.КОбеспечению);
КонецЕсли;
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовКлиентов.КОтгрузке);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОплаты")
ИЛИ ПолучитьФункциональнуюОпцию("НеЗакрыватьЗаказыКлиентовБезПолнойОтгрузки") Тогда
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовКлиентов.Закрыт);
КонецЕсли;
Иначе
МассивДопустимыхСтатусов.Добавить(Перечисления.СтатусыЗаказовКлиентов.НеСогласован);
КонецЕсли;
Возврат МассивДопустимыхСтатусов;
КонецФункции
Функция ВыполнитьПроверкиРаспоряжения(Распоряжение, Склад) Экспорт
СтруктураВозврата = Новый Структура;
СтруктураВозврата.Вставить("Операция", "");
СтруктураВозврата.Вставить("ТекстОшибки", "");
СтруктураВозврата.Вставить("ГруппаСкладовВРаспоряжении", Ложь);
СтруктураВозврата.Вставить("ДатаОтгрузки");
СтруктураВозврата.Вставить("ИспользоватьОрдернуюСхему", Ложь);
Если Не ЗначениеЗаполнено(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Распоряжение, "Склад")) Тогда
ТекстОшибки = НСтр("ru = 'Не заполнено поле ""Склад"" в документе ""%Распоряжение%"". Невозможно создать ордер.'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Распоряжение%", Строка(Распоряжение));
СтруктураВозврата.ТекстОшибки = ТекстОшибки;
СтруктураВозврата.Операция = "Отказ";
Возврат СтруктураВозврата
КонецЕсли;
СтруктураГруппыСкладов = Новый Структура("ЭтоГруппа", "Склад.ЭтоГруппа");
ЗначениеГруппыСкладов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Распоряжение, СтруктураГруппыСкладов);
ГруппаСкладовВРаспоряжении = ЗначениеГруппыСкладов.ЭтоГруппа;
СтруктураВозврата.ГруппаСкладовВРаспоряжении = ГруппаСкладовВРаспоряжении;
Реквизиты = Новый Структура("ДатаОтгрузки, Склад, ИспользоватьОрдернуюСхему", "Дата");
Если Не ГруппаСкладовВРаспоряжении Тогда
Реквизиты.Склад = "Склад";
Реквизиты.ИспользоватьОрдернуюСхему ="
|ВЫБОР
| КОГДА ЕстьNULL(Склад.ИспользоватьОрдернуюСхемуПриОтгрузке, Ложь)
| И Дата >= ЕстьNULL(Склад.ДатаНачалаОрдернойСхемыПриОтгрузке, ДАТАВРЕМЯ(1,1,1))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
|КОНЕЦ";
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Распоряжение, Реквизиты);
ИспользоватьОрдернуюСхему = ЗначенияРеквизитов.ИспользоватьОрдернуюСхему;
СтруктураВозврата.ИспользоватьОрдернуюСхему = ИспользоватьОрдернуюСхему;
Если ИспользоватьОрдернуюСхему Тогда
Склад = ЗначенияРеквизитов.Склад;
ЗаполнитьЗначенияСвойств(СтруктураВозврата, ЗначенияРеквизитов, "ДатаОтгрузки");
Иначе
ТекстОшибки = НСтр("ru = 'Для склада ""%Склад%"" оформление расходных ордеров не требуется.
|Заполнение документа не выполнено.'");
СтруктураВозврата.ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Склад%", Строка(ЗначенияРеквизитов.Склад));
СтруктураВозврата.Операция = "Отказ";
Возврат СтруктураВозврата;
КонецЕсли;
КонецЕсли;
Статус = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Распоряжение, "Статус");
ПроверитьВозможностьВводаНаОсновании(Распоряжение, Статус);
Если ГруппаСкладовВРаспоряжении Тогда
Если Не ЗначениеЗаполнено(Склад) Тогда
МассивСкладов = Документы.РасходныйОрдерНаТовары.ОрдерныеСкладыПриОтгрузке(Распоряжение, Неопределено);
Если МассивСкладов.Количество() = 0 Тогда
ТекстОшибки = НСтр("ru = 'Для складов документа ""%Распоряжение%"" оформление приходных ордеров не требуется.
|Заполнение документа не выполнено.'");
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Распоряжение%", Строка(Распоряжение));
СтруктураВозврата.ТекстОшибки = ТекстОшибки;
СтруктураВозврата.Операция = "Отказ";
Возврат СтруктураВозврата;
ИначеЕсли МассивСкладов.Количество() = 1 Тогда
Склад = МассивСкладов[0];
Иначе
СтруктураВозврата.Операция = "Возврат";
Возврат СтруктураВозврата;
КонецЕсли;
Иначе
СтруктураВозврата.Операция = "Возврат";
Возврат СтруктураВозврата;
КонецЕсли;
КонецЕсли;
Возврат СтруктураВозврата
КонецФункции
Функция СтруктураСостояниеВыполненияДокумента() Экспорт
СтруктураСостояние = Отчеты.СостояниеВыполненияДокументов.ИнициализироватьСтруктуруСостояниеВыполненияДокумента();
СтруктураСостояние.Вставить("ВыводитьТаблицуРасчетыСКлиентами", 1);
СтруктураСостояние.Вставить("ВыводитьТаблицыОбеспечение", 2);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтгрузка", 3);
СтруктураСостояние.Вставить("ВыводитьТаблицыОтмененоОтгрузка", 4);
СтруктураСостояние.Вставить("ЭтоЗаказ", Истина);
СтруктураСостояние.Вставить("ЕстьСуммовыеПоказателиОтгрузки", Истина);
СтруктураСостояние.Вставить("ЕстьПричиныОтменыОтгрузки", ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовКлиентов"));
СтруктураСостояние.Вставить("ИмяТЧТоварыОтгрузка", "Товары");
СтруктураСостояние.Вставить("ИмяРегистраОтгрузкаУслуг", "РаспоряженияНаОтгрузкуИВозврат");
СтруктураСостояние.Вставить("ВыводитьТаблицуППС", 5);
Возврат СтруктураСостояние
КонецФункции
Функция ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект) Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСПродажи();
ПараметрыЗаполнения.Организация = Объект.Организация;
ПараметрыЗаполнения.Дата = ЗаказыСервер.ПолучитьМинимальнуюДатуОтгрузкиОбъекта(Объект);
ПараметрыЗаполнения.Склад = Объект.Склад;
ПараметрыЗаполнения.Договор = Объект.Договор;
ПараметрыЗаполнения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
ПараметрыЗаполнения.ЭтоЗаказ = Истина;
ПараметрыЗаполнения.Подразделение = Объект.Подразделение;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
ПараметрыЗаполнения.РеализацияТоваров = Истина;
ПараметрыЗаполнения.РеализацияРаботУслуг = Истина;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
ПараметрыЗаполнения.ПередачаНаКомиссию = Истина;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи Тогда
ПараметрыЗаполнения.ПередачаНаХранение = Истина;
КонецЕсли;
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ПараметрыВзаиморасчеты(ДанныеЗаполнения = Неопределено) Экспорт
Если ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь() Тогда
Возврат ПараметрыВзаиморасчетыСамообслуживание(ДанныеЗаполнения);
КонецЕсли;
Если ОбщегоНазначения.ЗначениеСсылочногоТипа(ДанныеЗаполнения) Тогда
СтруктураДанныеЗаполнения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
ДанныеЗаполнения,
"ХозяйственнаяОперация, ЭтоЗаказКакСчет");
ХозяйственнаяОперация = СтруктураДанныеЗаполнения.ХозяйственнаяОперация;
ЭтоЗаказКакСчет = СтруктураДанныеЗаполнения.ЭтоЗаказКакСчет;
ИначеЕсли ДанныеЗаполнения = Неопределено Тогда
ХозяйственнаяОперация = Неопределено;
ЭтоЗаказКакСчет = Неопределено;
Иначе
ХозяйственнаяОперация = ДанныеЗаполнения.ХозяйственнаяОперация;
ЭтоЗаказКакСчет = ДанныеЗаполнения.ЭтоЗаказКакСчет;
КонецЕсли;
ИспользоватьРасширенныеВозможностиЗаказаКлиента = ?(ЭтоЗаказКакСчет = Неопределено,
ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента"),
Не ЭтоЗаказКакСчет);
СтруктураПараметров = ВзаиморасчетыСервер.ПараметрыМеханизма();
#Область ОбязательныеПараметры
СтруктураПараметров.ЭтоЗаказ = Истина;
СтруктураПараметров.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом;
СтруктураПараметров.ИзменяетПланОплаты = (ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности
ИЛИ ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала)
И ИспользоватьРасширенныеВозможностиЗаказаКлиента;
СтруктураПараметров.ИзменяетПланОтгрузкиПоставки = Истина;
#КонецОбласти
#Область НеобязательныеПараметры
СтруктураПараметров.КурсЧислитель = "";
СтруктураПараметров.КурсЗнаменатель = "";
СтруктураПараметров.ГрафикОплаты = "Объект.ГрафикОплаты";
СтруктураПараметров.ПутьКДаннымТЧ = "Объект.Товары";
СтруктураПараметров.Менеджер = "Объект.Менеджер";
СтруктураПараметров.БанковскийСчетОрганизации = "Объект.БанковскийСчет";
СтруктураПараметров.СуммаДокументаФорма = "Форма.СуммаЗаказаноСЗалоговойТарой";
СтруктураПараметров.СуммаЗалогаЗаТаруФорма = "Форма.СуммаЗалогаЗаТару";
СтруктураПараметров.ОбъектРасчетов = "Объект.ОбъектРасчетов";
СтруктураПараметров.ЭлементыФормы.ЗачетОплаты = "ЗачетОплатыФорма";
СтруктураПараметров.ЭлементыФормы.ГруппаФинансовогоУчета = "ГруппаФинансовогоУчета";
СтруктураПараметров.ЭлементыФормы.НаправлениеДеятельности = "НаправлениеДеятельности";
СтруктураПараметров.НомерВходящегоДокумента = "Объект.НомерПоДаннымКлиента";
СтруктураПараметров.ДатаВходящегоДокумента = "Объект.ДатаПоДаннымКлиента";
#КонецОбласти
#Область ГрафикПлановойОплатыИДатаПлатежа
СтруктураПараметров.ПутьКДаннымТЧЭтапыОплаты = "Объект.ЭтапыГрафикаОплаты";
СтруктураПараметров.ДатаСогласования = "Объект.ДатаСогласования";
СтруктураПараметров.ДатаОтгрузки = "Объект.Товары.ДатаОтгрузки";
СтруктураПараметров.ЭлементыФормы.НадписьЭтапы = "ДекорацияЭтапыОплаты";
СтруктураПараметров.НадписьЭтапыОплаты = "Форма.НадписьЭтапыОплаты";
СтруктураПараметров.ЗаказКакСчет = НЕ ИспользоватьРасширенныеВозможностиЗаказаКлиента;
СтруктураПараметров.ЕстьДатаПереходаПраваСобственности =
ПолучитьФункциональнуюОпцию("ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0");
СтруктураПараметров.ИсточникСуммТабличнаяЧасть = Истина;
СтруктураПараметров.ОтгружатьОднойДатой = "Объект.НеОтгружатьЧастями";
#КонецОбласти
#Область СостояниеВзаиморасчетов
СтруктураПараметров.ЭлементыФормы.НадписьРасчеты = "ДекорацияСостояниеРасчетов";
#КонецОбласти
#Область ОграниченияЗадолженностиПоДоговору
СтруктураПараметров.ЭлементыФормы.ОграничениеЗадолженностиТекст = "ДекорацияОграничениеЗадолженности";
СтруктураПараметров.ЭлементыФормы.ОграничениеЗадолженностиКартинка = "КартинкаОтгрузкаЗапрещена";
#КонецОбласти
СтруктураПараметров.ВернутьМногооборотнуюТару = "Объект.ВернутьМногооборотнуюТару";
СтруктураПараметров.ТребуетсяЗалогЗаТару = "Объект.ТребуетсяЗалогЗаТару";
Возврат СтруктураПараметров;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Склад)
| И ЗначениеРазрешено(Партнер)
| И ЗначениеРазрешено(Подразделение)";
Ограничение.ТекстДляВнешнихПользователей =
"ПрисоединитьДополнительныеТаблицы
|ЭтотСписок КАК ЭтотСписок
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнешниеПользователи КАК ВнешниеПользователиПартнеры
| ПО ВнешниеПользователиПартнеры.ОбъектАвторизации = ЭтотСписок.Партнер
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
| ПО КонтактныеЛицаПартнеров.Владелец = ЭтотСписок.Партнер
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнешниеПользователи КАК ВнешниеПользователиКонтактныеЛица
| ПО ВнешниеПользователиКонтактныеЛица.ОбъектАвторизации = КонтактныеЛицаПартнеров.Ссылка
|;
|РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(ВнешниеПользователиПартнеры.Ссылка)
| ИЛИ ЗначениеРазрешено(ВнешниеПользователиКонтактныеЛица.Ссылка)";
КонецПроцедуры
Процедура ЗаполнитьТаблицуПараметровБлокировкиРеквизитовEDI(ТаблицаПараметров) Экспорт
Для Каждого СтрокаТаблицы Из ТаблицаПараметров Цикл
БлокируемыеЭлементы = Новый СписокЗначений;
Если СтрокаТаблицы.ИмяРеквизита = "Покупатель" Тогда
БлокируемыеЭлементы.Добавить("ПартнерБезКЛ");
БлокируемыеЭлементы.Добавить("Партнер");
БлокируемыеЭлементы.Добавить("Контрагент");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Поставщик" Тогда
БлокируемыеЭлементы.Добавить("Организация");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "ПоставщикБанковскийСчет" Тогда
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Валюта" Тогда
БлокируемыеЭлементы.Добавить("Валюта");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "ЦенаВключаетНДС" Тогда
БлокируемыеЭлементы.Добавить("ЦенаВключаетНДС");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "НалогообложениеНДС" Тогда
БлокируемыеЭлементы.Добавить("НалогообложениеНДС");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "СпособДоставки" Тогда
БлокируемыеЭлементы.Добавить("СпособДоставки");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "АдресДоставки" Тогда
БлокируемыеЭлементы.Добавить("АдресДоставкиСамовывоз");
БлокируемыеЭлементы.Добавить("АдресДоставкиПолучателя");
БлокируемыеЭлементы.Добавить("ЗонаДоставкиПолучателя");
БлокируемыеЭлементы.Добавить("ВремяДоставкиС");
БлокируемыеЭлементы.Добавить("ВремяДоставкиПо");
БлокируемыеЭлементы.Добавить("ДополнительнаяИнформацияПоДоставке");
БлокируемыеЭлементы.Добавить("ДополнитьИнформациюПоДоставкеКонтактами");
БлокируемыеЭлементы.Добавить("СпособДоставки");
БлокируемыеЭлементы.Добавить("ОсобыеУсловияПеревозки");
БлокируемыеЭлементы.Добавить("ОсобыеУсловияПеревозкиОписание");
БлокируемыеЭлементы.Добавить("АдресДоставкиПеревозчика");
БлокируемыеЭлементы.Добавить("ЗонаДоставкиПеревозчика");
БлокируемыеЭлементы.Добавить("СпособДоставки");
БлокируемыеЭлементы.Добавить("ВремяДоставкиС1");
БлокируемыеЭлементы.Добавить("ВремяДоставкиПо1");
БлокируемыеЭлементы.Добавить("ДополнительнаяИнформацияПоДоставке1");
БлокируемыеЭлементы.Добавить("ДополнитьИнформациюПоДоставкеКонтактами1");
БлокируемыеЭлементы.Добавить("АдресДоставкиПолучателя1");
БлокируемыеЭлементы.Добавить("ОсобыеУсловияПеревозки1");
БлокируемыеЭлементы.Добавить("ОсобыеУсловияПеревозкиОписание1");
БлокируемыеЭлементы.Добавить("АдресДоставкиПолучателя2");
БлокируемыеЭлементы.Добавить("ДополнительнаяИнформацияПоДоставке2");
БлокируемыеЭлементы.Добавить("ДополнитьИнформациюПоДоставкеКонтактами2");
БлокируемыеЭлементы.Добавить("ОсобыеУсловияПеревозкиДоставкаПеревозчиком");
БлокируемыеЭлементы.Добавить("ОсобыеУсловияПеревозкиОписаниеДоставкаПеревозчиком");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "СуммаДокумента" Тогда
БлокируемыеЭлементы.Добавить("ЗакрытьЗаказ");
БлокируемыеЭлементы.Добавить("Договор");
БлокируемыеЭлементы.Добавить("Соглашение");
БлокируемыеЭлементы.Добавить("ХозяйственнаяОперация");
БлокируемыеЭлементы.Добавить("КартаЛояльности");
БлокируемыеЭлементы.Добавить("СчитатьКартуЛояльностиКлиент");
БлокируемыеЭлементы.Добавить("СчитатьКартуЛояльности");
БлокируемыеЭлементы.Добавить("Товары");
БлокируемыеЭлементы.Добавить("ТоварыВставитьСтроки");
БлокируемыеЭлементы.Добавить("ТоварыПоискПоШтрихкоду");
БлокируемыеЭлементы.Добавить("ТоварыЗагрузитьДанныеИзТСД");
БлокируемыеЭлементы.Добавить("ТоварыОткрытьПодбор");
БлокируемыеЭлементы.Добавить("ТоварыДополнитьМногооборотнойТарой");
БлокируемыеЭлементы.Добавить("ТоварыЗагрузитьИзВнешнегоФайла");
БлокируемыеЭлементы.Добавить("ТоварыОтменитьВыделенныеСтроки");
БлокируемыеЭлементы.Добавить("ТоварыОтменитьНепоставленныеСтроки");
БлокируемыеЭлементы.Добавить("ТоварыЗаполнитьЦеныПоСоглашению");
БлокируемыеЭлементы.Добавить("ТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦен");
БлокируемыеЭлементы.Добавить("ТоварыРассчитатьСкидкиНаценки");
БлокируемыеЭлементы.Добавить("ТоварыНазначитьАвтоматическиеСкидки");
БлокируемыеЭлементы.Добавить("ТоварыНазначитьРучнуюСкидку");
БлокируемыеЭлементы.Добавить("ТоварыНазначитьРучнуюСкидкуВыделенныхСтрок");
БлокируемыеЭлементы.Добавить("ТоварыОтменитьРучныеСкидки");
БлокируемыеЭлементы.Добавить("ТоварыОтменено");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "ОтгружатьЗаказЦеликом" Тогда
БлокируемыеЭлементы.Добавить("НеОтгружатьЧастями");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "ПлановаяДатаПоставки" Тогда
БлокируемыеЭлементы.Добавить("ЗаполнитьДатуОтгрузки");
БлокируемыеЭлементы.Добавить("ДатаОтгрузки");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары" Тогда
БлокируемыеЭлементы.Добавить("Товары");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.ПокупательНоменклатура" Тогда
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.ПокупательУпаковка" Тогда
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.ПокупательКоличество" Тогда
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.ПокупательКоличествоУпаковок" Тогда
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.ПоставщикНоменклатура" Тогда
БлокируемыеЭлементы.Добавить("ТоварыНоменклатура");
БлокируемыеЭлементы.Добавить("ТоварыХарактеристика");
БлокируемыеЭлементы.Добавить("ТоварыСодержание");
БлокируемыеЭлементы.Добавить("ТоварыНоменклатураНабора");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.ПоставщикУпаковка" Тогда
БлокируемыеЭлементы.Добавить("ТоварыУпаковка");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.ПоставщикКоличество" Тогда
БлокируемыеЭлементы.Добавить("ТоварыКоличествоУпаковок");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.ПоставщикКоличествоУпаковок" Тогда
БлокируемыеЭлементы.Добавить("ТоварыКоличествоУпаковок");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.Цена" Тогда
БлокируемыеЭлементы.Добавить("ТоварыВидЦены");
БлокируемыеЭлементы.Добавить("ТоварыЦена");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.Сумма" Тогда
БлокируемыеЭлементы.Добавить("ТоварыСумма");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.СуммаСкидки" Тогда
БлокируемыеЭлементы.Добавить("ТоварыПроцентАвтоматическойСкидки");
БлокируемыеЭлементы.Добавить("ТоварыСуммаАвтоматическойСкидки");
БлокируемыеЭлементы.Добавить("ТоварыПроцентРучнойСкидки");
БлокируемыеЭлементы.Добавить("ТоварыСуммаРучнойСкидки");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.СтавкаНДС" Тогда
БлокируемыеЭлементы.Добавить("ТоварыСтавкаНДС");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.СуммаНДС" Тогда
БлокируемыеЭлементы.Добавить("ТоварыСуммаНДС");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.СуммаСНДС" Тогда
БлокируемыеЭлементы.Добавить("ТоварыСуммаСНДС");
ИначеЕсли СтрокаТаблицы.ИмяРеквизита = "Товары.СрокПоставки" Тогда
БлокируемыеЭлементы.Добавить("ТоварыЗаполнитьОбеспечение");
БлокируемыеЭлементы.Добавить("ТоварыДатаОтгрузки");
КонецЕсли;
СтрокаТаблицы.БлокируемыеЭлементы = БлокируемыеЭлементы;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
Функция ПараметрыВзаиморасчетыСамообслуживание(ДанныеЗаполнения = Неопределено) Экспорт
Если ОбщегоНазначения.ЗначениеСсылочногоТипа(ДанныеЗаполнения) Тогда
СтруктураДанныеЗаполнения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
ДанныеЗаполнения,
"ХозяйственнаяОперация,
|НеОтгружатьЧастями");
ХозяйственнаяОперация = СтруктураДанныеЗаполнения.ХозяйственнаяОперация;
НеОтгружатьЧастями = СтруктураДанныеЗаполнения.НеОтгружатьЧастями;
ИначеЕсли ДанныеЗаполнения = Неопределено Тогда
ХозяйственнаяОперация = Неопределено;
НеОтгружатьЧастями = Неопределено;
Иначе
ХозяйственнаяОперация = ДанныеЗаполнения.ХозяйственнаяОперация;
НеОтгружатьЧастями = ДанныеЗаполнения.НеОтгружатьЧастями;
КонецЕсли;
СтруктураПараметров = ВзаиморасчетыСервер.ПараметрыМеханизма();
СтруктураПараметров.ЭтоЗаказ = Истина;
СтруктураПараметров.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом;
СтруктураПараметров.ИзменяетПланОплаты = ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи;
СтруктураПараметров.ИзменяетПланОтгрузкиПоставки = Истина;
СтруктураПараметров.КурсЧислитель = "";
СтруктураПараметров.КурсЗнаменатель = "";
СтруктураПараметров.ГрафикОплаты = "Объект.ГрафикОплаты";
СтруктураПараметров.ПутьКДаннымТЧ = "Объект.Товары";
СтруктураПараметров.ПутьКДаннымТЧЭтапыОплаты = "Объект.ЭтапыГрафикаОплаты";
СтруктураПараметров.ДатаСогласования = "Объект.ДатаСогласования";
Если НеОтгружатьЧастями Тогда
СтруктураПараметров.ДатаОтгрузки = "Объект.ДатаОтгрузки";
Иначе
СтруктураПараметров.ДатаОтгрузки = "Объект.Товары.ДатаОтгрузки";
КонецЕсли;
СтруктураПараметров.НеУказыватьИсточникиОплаты = Истина;
СтруктураПараметров.Менеджер = "Объект.Менеджер";
СтруктураПараметров.БанковскийСчетОрганизации = "Объект.БанковскийСчет";
СтруктураПараметров.СуммаДокументаФорма = "Форма.СуммаЗаказано";
СтруктураПараметров.СуммаЗалогаЗаТаруФорма = "Форма.СуммаЗалогаЗаТару";
СтруктураПараметров.ЭлементыФормы.НадписьЭтапы = "ДекорацияЭтапыОплаты";
СтруктураПараметров.НадписьЭтапыОплаты = "Форма.НадписьЭтапыОплаты";
СтруктураПараметров.ОбъектРасчетов = "Объект.ОбъектРасчетов";
СтруктураПараметров.ОтгружатьОднойДатой = "Объект.НеОтгружатьЧастями";
Возврат СтруктураПараметров;
КонецФункции
Процедура ПередВыполнениемДействийВСпискеЗаказов(Заказы, КодДействия, СообщенияПользователю) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("Заказы", Заказы);
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказКлиента КАК Таблица
|ГДЕ
| Таблица.Ссылка В (&Заказы)
| И НЕ Таблица.ЭтоЗаказКакСчет
|;
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказКлиента КАК Таблица
|ГДЕ
| Таблица.Ссылка В (&Заказы)
| И Таблица.ЭтоЗаказКакСчет";
ПакетЗапросов = Запрос.ВыполнитьПакет();
ЗаказыКакСчет = ПакетЗапросов[1].Выгрузить().ВыгрузитьКолонку("Ссылка");
Текст = НСтр("ru = 'Для %1 команда не может быть выполнена, так как документ был создан в режиме ""Заказ как счет""'");
Для Каждого Ссылка Из ЗаказыКакСчет Цикл
СообщенияПользователю.Добавить(Новый Структура("Текст,Ссылка", СтрШаблон(Текст, Ссылка), Ссылка));
КонецЦикла;
Если ЗаказыКакСчет.Количество() > 0 Тогда
Заказы = ПакетЗапросов[0].Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецЕсли;
КонецПроцедуры
Функция ДоступныеОстаткиПараметрыВстраивания(ДокументОбъект = Неопределено) Экспорт
ПараметрыВстраивания = ОбеспечениеВДокументахСервер.ДоступныеОстаткиПараметрыВстраивания();
ПараметрыВстраивания.ИспользоватьПодпискиНаСобытия.ПередВыполнениемДействийВСпискеЗаказов = Истина;
ПараметрыВстраивания.ОчищаемыеРеквизиты = "КодСтроки";
ПараметрыВстраивания.ИмяТаблицыФормы = "Товары";
ЭлементыФормы = ПараметрыВстраивания.УсловноеОформление.ЭлементыФормы;
ЭлементыФормы.ВариантОбеспечения = "ТоварыВариантОбеспечения";
ЭлементыФормы.Доступно = "ТоварыДоступно";
ЭлементыФормы.Серия = "ТоварыСерия";
ЭлементыФормы.Обособленно = "ТоварыОбособленно";
ЭлементыФормы.Склад = "ТоварыСклад";
ПутиКДанным = ПараметрыВстраивания.УсловноеОформление.ПутиКДанным;
ПутиКДанным.ПерераспределятьЗапасы = "Объект.Товары.ПерераспределятьЗапасы";
ПутиКДанным.ЗапретРедактирования = "Объект.Товары.Отменено";
ПутиКДанным.ТипНоменклатуры = "Объект.Товары.ТипНоменклатуры";
Связи = ПараметрыВстраивания.СвязиПараметровВыбораВариантаОбеспечения;
Связи.Доступно = "Элементы.Товары.ТекущиеДанные.Доступно";
Связи.КоличествоУпаковок = "Элементы.Товары.ТекущиеДанные.КоличествоУпаковок";
Связи.Количество = "Элементы.Товары.ТекущиеДанные.Количество";
Связи.ОтгружатьЕслиДоступно = "Элементы.Товары.ТекущиеДанные.ОтгружатьЕслиДоступно";
Связи.Обособленно = "Элементы.Товары.ТекущиеДанные.Обособленно";
Связи.ТипНоменклатуры = "Элементы.Товары.ТекущиеДанные.ТипНоменклатуры";
Связи.Упаковка = "Элементы.Товары.ТекущиеДанные.Упаковка";
Связи.Номенклатура = "Элементы.Товары.ТекущиеДанные.Номенклатура";
Связи.ВариантОбеспечения = "Элементы.Товары.ТекущиеДанные.ВариантОбеспечения";
Связи.Склад = "Элементы.Товары.ТекущиеДанные.Склад";
Связи.НесколькоСкладов = "СкладГруппа";
ПараметрыВстраивания.ИмяРегистраОформленияОтгрузки = "РаспоряженияНаОтгрузкуИВозврат";
ПараметрыВстраивания.ИмяОбъекта = "Документ.ЗаказКлиента";
ПараметрыВстраивания.ИмяТаблицы = "Документ.ЗаказКлиента.Товары";
ПараметрыВстраивания.ОписаниеПолученияДанныхДокумента =
"ВЫБРАТЬ
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Подразделение КАК Подразделение,
| ТабЧасть.Склад КАК Склад,
| Реквизиты.Назначение КАК Назначение,
| Реквизиты.Ссылка КАК ЗаказНаОтгрузку,
| ТабЧасть.ВариантОбеспечения КАК ВариантОбеспечения,
| ТабЧасть.Обособленно КАК Обособленно,
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.КоличествоУпаковок КАК КоличествоУпаковок,
| ТабЧасть.Упаковка КАК Упаковка,
| Реквизиты.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт)
| ) КАК ГотовКОбеспечению,
| Реквизиты.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт)
| ) КАК ГотовКОтгрузке,
| ВЫБОР КОГДА Реквизиты.НеОтгружатьЧастями ТОГДА
| Реквизиты.ДатаОтгрузки
| ИНАЧЕ
| ТабЧасть.ДатаОтгрузки
| КОНЕЦ КАК ЖелаемаяДатаОтгрузки,
| ТабЧасть.Серия КАК Серия,
| ТабЧасть.КодСтроки КАК КодСтроки,
| ТабЧасть.Отменено КАК Отменено,
| ТабЧасть.НомерСтроки КАК НомерСтроки,
| Реквизиты.Ссылка КАК Регистратор,
| Реквизиты.Дата КАК ДатаДокумента,
| Реквизиты.Склад КАК ГруппаСкладов,
| Реквизиты.Приоритет КАК Приоритет,
| ВЫБОР КОГДА Реквизиты.НеОтгружатьЧастями ТОГДА
| Реквизиты.ДатаОтгрузки
| ИНАЧЕ
| НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ДатаОтгрузкиВсехСтрокОднойДатой
|ПОМЕСТИТЬ ВременнаяТаблицаДанныхДокумента
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ТабЧасть
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК Реквизиты
| ПО ИСТИНА";
Товары = Новый Структура();
Товары.Вставить("НомерСтроки", Новый ОписаниеТипов("Число"));
Товары.Вставить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Товары.Вставить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
Товары.Вставить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
Товары.Вставить("ВариантОбеспечения", Новый ОписаниеТипов("ПеречислениеСсылка.ВариантыОбеспечения"));
Товары.Вставить("Обособленно", Новый ОписаниеТипов("Булево"));
Товары.Вставить("КоличествоУпаковок", Новый ОписаниеТипов("Число"));
Товары.Вставить("Количество", Новый ОписаниеТипов("Число"));
Товары.Вставить("Упаковка", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
Товары.Вставить("ДатаОтгрузки", Новый ОписаниеТипов("Дата"));
Товары.Вставить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
Товары.Вставить("Отменено", Новый ОписаниеТипов("Булево"));
Товары.Вставить("КодСтроки", Новый ОписаниеТипов("Число"));
Товары.Вставить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
Объект = Новый Структура();
Объект.Вставить("Назначение", Новый ОписаниеТипов("СправочникСсылка.Назначения"));
Объект.Вставить("Ссылка", Новый ОписаниеТипов("ДокументСсылка.ЗаказКлиента"));
Объект.Вставить("Статус", Новый ОписаниеТипов("ПеречислениеСсылка.СтатусыЗаказовКлиентов"));
Объект.Вставить("НеОтгружатьЧастями", Новый ОписаниеТипов("Булево"));
Объект.Вставить("ДатаОтгрузки", Новый ОписаниеТипов("Дата"));
Объект.Вставить("Дата", Новый ОписаниеТипов("Дата"));
Объект.Вставить("Приоритет", Новый ОписаниеТипов("СправочникСсылка.Приоритеты"));
Объект.Вставить("Склад", Новый ОписаниеТипов("СправочникСсылка.Склады"));
Объект.Вставить("Товары", Товары);
ПараметрыВстраивания.ШаблонСериализацииДанныхФормы.Вставить("Объект", Объект);
Возврат ПараметрыВстраивания;
КонецФункции
Функция ХозяйственныеОперацииДокумента(ПроверятьФункциональныеОпции) Экспорт
ИспользоватьКомиссиюПриПродажах = Истина;
ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0 = Истина;
ИспользоватьПередачуТоваровНаХранение = Истина;
ИспользоватьОказаниеАгентскихУслугПриЗакупке = Истина;
ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента = Истина;
ВариантОбособленияТоваровВПродажах = Перечисления.ВариантыОбособленияТоваровВПродажах.ПустаяСсылка();
Если ПроверятьФункциональныеОпции Тогда
ИспользоватьКомиссиюПриПродажах =
ПолучитьФункциональнуюОпцию("ИспользоватьКомиссиюПриПродажах");
ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0 =
ПолучитьФункциональнуюОпцию("ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0");
ИспользоватьПередачуТоваровНаХранение =
ПолучитьФункциональнуюОпцию("ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи");
ИспользоватьОказаниеАгентскихУслугПриЗакупке =
ПолучитьФункциональнуюОпцию("ИспользоватьОказаниеАгентскихУслугПриЗакупке");
ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента =
ПолучитьФункциональнуюОпцию("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента");
ВариантОбособленияТоваровВПродажах = Константы.ВариантОбособленияТоваровВПродажах.Получить();
КонецЕсли;
Операции = Новый Массив();
Операции.Добавить(Перечисления.ХозяйственныеОперации.РеализацияКлиенту);
Если ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0 Тогда
Операции.Добавить(Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности);
КонецЕсли;
Если ИспользоватьКомиссиюПриПродажах Тогда
Операции.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
КонецЕсли;
Если ИспользоватьПередачуТоваровНаХранение Тогда
Операции.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи);
КонецЕсли;
Если ИспользоватьОказаниеАгентскихУслугПриЗакупке
И ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента
И ВариантОбособленияТоваровВПродажах <> Перечисления.ВариантыОбособленияТоваровВПродажах.Договор Тогда
Операции.Добавить(Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала);
КонецЕсли;
Возврат Операции;
КонецФункции
#Область ТекстыЗапросаРаспоряженияНакладных
Процедура ДобавитьОтборПоКлючевымРеквизитамРаспоряжения(Отбор) Экспорт
КлючевыеРеквизиты = Новый Массив;
КлючевыеРеквизиты.Добавить("Организация");
КлючевыеРеквизиты.Добавить("Партнер");
КлючевыеРеквизиты.Добавить("Контрагент");
КлючевыеРеквизиты.Добавить("Договор");
КлючевыеРеквизиты.Добавить("Склад");
КлючевыеРеквизиты.Добавить("Сделка");
КлючевыеРеквизиты.Добавить("Соглашение");
КлючевыеРеквизиты.Добавить("Валюта");
КлючевыеРеквизиты.Добавить("НаправлениеДеятельности");
КлючевыеРеквизиты.Добавить("ВернутьМногооборотнуюТару");
ОбщегоНазначенияУТ.ДобавитьОтборПоКлючевымРеквизитамРаспоряжения(КлючевыеРеквизиты, Отбор);
КонецПроцедуры
Функция ТекстЗапросаРаспоряженийНакладных(Параметры) Экспорт
ДобавитьОтборПоКлючевымРеквизитамРаспоряжения(Параметры.Отбор);
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаРаспоряжений.Ссылка КАК Распоряжение
|ИЗ
| Документ.ЗаказКлиента КАК ТаблицаРаспоряжений
|ГДЕ
| ТаблицаРаспоряжений.Проведен
| И &ТекстОтбора
|";
Если Параметры.СформироватьВТ Тогда
ТекстЗапроса = СхемыЗапросов.УстановитьВыборкуРазрешенныхЗаписей(ТекстЗапроса, Истина);
ТекстЗапроса = СхемыЗапросов.УстановитьПомещениеВоВременнуюТаблицу(ТекстЗапроса, Параметры.ИмяВТ);
ТекстЗапроса = СхемыЗапросов.УстановитьИндексациюПолейЗапроса(ТекстЗапроса, "Распоряжение");
КонецЕсли;
ТекстЗапроса =
СтрЗаменить(ТекстЗапроса, "&ТекстОтбора", ОбщегоНазначенияУТ.ТекстОтбораПоКоллекцииОтборов(Параметры.Отбор));
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область Печать
Функция ПравилаПечатиЗаданияНаОтборРазмещение() Экспорт
ПравилаПечатиЗадания = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ПравилаПечатиЗаданияНаОтборРазмещение();
ПравилаПечатиЗадания.СкладыВТЧ = Истина;
Возврат ПравилаПечатиЗадания;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
Если ВидФормы = "ФормаОбъекта" Тогда
Если ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь() Тогда
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "ФормаДокументаСамообслуживание";
КонецЕсли;
ИначеЕсли ВидФормы = "ФормаСписка" Тогда
Если ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь() Тогда
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "ФормаСпискаСамообслуживание";
ИначеЕсли Не ПравоДоступа("Чтение", Метаданные.РегистрыСведений.СостоянияЗаказовКлиентов)
Или Не ПравоДоступа("Чтение", Метаданные.РегистрыСведений.СостоянияПоОбъектамУчетаЭДО) Тогда
СтандартнаяОбработка = Ложь;
ВыбраннаяФорма = "ФормаСписка";
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область СлужебныйПрограммныйИнтерфейс
#Область Обеспечение
Процедура ТоварыДокументаДляСозданияОбеспечивающегоЗаказа(Ссылка, ПараметрыСоздания, МенеджерВременныхТаблиц) Экспорт
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Статус,Проведен");
ПроверитьВозможностьВводаНаОсновании(Ссылка, Реквизиты.Статус, Не Реквизиты.Проведен, Истина);
Запрос = Новый Запрос();
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ТипыНоменклатуры", ПараметрыСоздания.ТипыНоменклатуры);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| Товары.НомерСтроки КАК НомерСтроки,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Упаковка КАК Упаковка,
| Товары.Склад КАК Склад,
| Товары.Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА Товары.Обособленно
| ТОГДА Товары.Ссылка.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| Товары.ВариантОбеспечения КАК ВариантОбеспечения,
| Товары.Обособленно КАК Обособленно,
| Товары.ДатаОтгрузки КАК ДатаОтгрузки,
| Товары.Количество КАК КоличествоЕдиницПоДокументу,
| Товары.КоличествоУпаковок КАК КоличествоПоДокументу
|ПОМЕСТИТЬ ТоварыДокумента
|ИЗ
| Документ.ЗаказКлиента.Товары КАК Товары
|ГДЕ
| Товары.Ссылка = &Ссылка
| И НЕ Товары.Отменено
| И Товары.Номенклатура.ТипНоменклатуры В(&ТипыНоменклатуры)";
Запрос.Выполнить();
КонецПроцедуры
Функция ПараметрыДокументаДляДействийОбеспечения(Объект, ДатаОтгрузки = Неопределено) Экспорт
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
ВариантОбеспеченияИФлагОбособленно = ОбеспечениеВДокументахКлиентСервер.ВариантОбеспеченияИФлагОбособленноПоУмолчанию(Истина);
Иначе
ВариантОбеспеченияИФлагОбособленно = ПродажиСервер.ВариантОбеспеченияИФлагОбособленноПоУмолчанию(Объект.Соглашение, Объект.Статус, , Не Объект.ЭтоЗаказКакСчет);
КонецЕсли;
ПараметрыДокумента = Новый Структура();
ПараметрыДокумента.Вставить("ПараметрыВстраивания", ДоступныеОстаткиПараметрыВстраивания());
ПараметрыДокумента.Вставить("Объект", Объект);
ПараметрыДокумента.Вставить("ВариантОбеспеченияИФлагОбособленно", ВариантОбеспеченияИФлагОбособленно);
ОбеспечениеВДокументахСервер.ЗаполнитьСлужебныеПараметрыВстраивания(ПараметрыДокумента);
Возврат ПараметрыДокумента;
КонецФункции
Процедура ПослеЗаполненияОбеспечения(Объект, Изменения, Режим, ПараметрыЗаполнения, ЕстьИзмененияДатыОтгрузки = Ложь) Экспорт
ЕстьИзмененияДатыОтгрузки = ОбеспечениеВДокументахСервер.АктуализироватьДатуОтгрузки(
ПараметрыЗаполнения,
Объект.НеОтгружатьЧастями,
Объект.ДатаОтгрузки,
Объект.Товары,
"ДатаОтгрузки");
Если ОбеспечениеВДокументахКлиентСервер.НужноПроверитьЗаполнитьДатуОтгрузкиДляСтрокОтгрузить(Режим) Тогда
ЕстьИзмененияДатыОтгрузки = ЕстьИзмененияДатыОтгрузки Или ОбеспечениеВДокументахСервер.ПроверитьЗаполнитьДатуОтгрузкиДляСтрокОтгрузить(
Изменения.ВыгрузитьКолонку("Строка"),
"ДатаОтгрузки",
Объект.НеОтгружатьЧастями,
Объект.ДатаОтгрузки);
КонецЕсли;
Если ТипЗнч(Объект) <> Тип("ДанныеФормыСтруктура") И ЕстьИзмененияДатыОтгрузки Тогда
ЭтапыОплатыСервер.ПослеЗаполненияОбеспечения(Объект);
КонецЕсли;
ОбеспечениеВДокументахСервер.ПересчитатьКоличествоЕдиниц(Изменения, Объект.Товары);
Реквизиты = "Сумма, СуммаНДС, СуммаСНДС, СуммаРучнойСкидки, СуммаАвтоматическойСкидки";
ЗаказыСервер.ПересчитатьЗависимыеРеквизитыПослеРазбиенияСтрок(Изменения, Реквизиты);
ПараметрыУказанияСерий = ПараметрыУказанияСерий(Объект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
#КонецОбласти
#Область НаправленияДеятельности
Функция ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности(Форма) Экспорт
ПорядокОбработкиДокумента = НаправленияДеятельностиСервер.ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности();
ПорядокОбработкиДокумента.ЗаполнятьНазначениеВШапке = Истина;
Возврат ПорядокОбработкиДокумента;
КонецФункции
#КонецОбласти
#КонецОбласти
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеШапки.Дата КАК Период,
| ДанныеШапки.Партнер КАК Партнер,
| ДанныеШапки.Контрагент КАК Контрагент,
| ДанныеШапки.Организация КАК Организация,
| ДанныеШапки.Валюта КАК Валюта,
| ДанныеШапки.Склад КАК Склад,
| ДанныеШапки.Статус КАК Статус,
| ДанныеШапки.Ссылка КАК ЗаказКлиента,
| ДанныеШапки.Приоритет КАК Приоритет,
| ДанныеШапки.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеШапки.Договор КАК Договор,
| ДанныеШапки.Назначение КАК Назначение,
| ДанныеШапки.Подразделение КАК Подразделение,
|
| ДанныеШапки.ДопустимаяСуммаЗадолженности КАК ДопустимаяСуммаЗадолженности,
| ДанныеШапки.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеШапки.Номер КАК Номер,
| ДанныеШапки.Комментарий КАК Комментарий,
| ДанныеШапки.СуммаДокумента КАК СуммаДокумента,
| ДанныеШапки.Проведен КАК Проведен,
| ДанныеШапки.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеШапки.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
| ДанныеШапки.ДатаПоДаннымКлиента КАК ДатаПоДаннымКлиента,
| ДанныеШапки.Автор КАК Автор,
| ДанныеШапки.Менеджер КАК Менеджер,
| ДанныеШапки.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет,
| ДанныеШапки.КартаЛояльностиВладелецБонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| ДанныеШапки.КомиссионныеПродажи25 КАК КомиссионныеПродажи25
|
|ИЗ
| ДанныеДокументаШапка КАК ДанныеШапки";
Реквизиты = Запрос.Выполнить().Выбрать();
Реквизиты.Следующий();
Запрос.УстановитьПараметр("Период", Реквизиты.Период);
Запрос.УстановитьПараметр("ЗаказКлиента", Реквизиты.ЗаказКлиента);
Запрос.УстановитьПараметр("Период", Реквизиты.Период);
Запрос.УстановитьПараметр("Склад", Реквизиты.Склад);
Запрос.УстановитьПараметр("Партнер", Реквизиты.Партнер);
Запрос.УстановитьПараметр("Валюта", Реквизиты.Валюта);
Запрос.УстановитьПараметр("Статус", Реквизиты.Статус);
Запрос.УстановитьПараметр("Приоритет", Реквизиты.Приоритет);
Запрос.УстановитьПараметр("Организация", Реквизиты.Организация);
Запрос.УстановитьПараметр("ЦенаВключаетНДС", Реквизиты.ЦенаВключаетНДС);
Запрос.УстановитьПараметр("Назначение", Реквизиты.Назначение);
Запрос.УстановитьПараметр("Подразделение", Реквизиты.Подразделение);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", Реквизиты.ХозяйственнаяОперация);
Запрос.УстановитьПараметр("Договор", Реквизиты.Договор);
Запрос.УстановитьПараметр("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента",
ПолучитьФункциональнуюОпцию("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента"));
Запрос.УстановитьПараметр("ИспользоватьРасширенныеВозможностиЗаказаКлиента", Не Реквизиты.ЭтоЗаказКакСчет);
Запрос.УстановитьПараметр("ДопустимаяСуммаЗадолженности", Реквизиты.ДопустимаяСуммаЗадолженности);
Запрос.УстановитьПараметр("Контрагент", Реквизиты.Контрагент);
Запрос.УстановитьПараметр("НаправлениеДеятельности", Реквизиты.НаправлениеДеятельности);
Запрос.УстановитьПараметр("Номер", Реквизиты.Номер);
Запрос.УстановитьПараметр("Менеджер", Реквизиты.Менеджер);
Запрос.УстановитьПараметр("Автор", Реквизиты.Автор);
Запрос.УстановитьПараметр("Комментарий", Реквизиты.Комментарий);
Запрос.УстановитьПараметр("Проведен", Реквизиты.Проведен);
Запрос.УстановитьПараметр("ПометкаУдаления", Реквизиты.ПометкаУдаления);
Запрос.УстановитьПараметр("ДатаПоДаннымКлиента", Реквизиты.ДатаПоДаннымКлиента);
Запрос.УстановитьПараметр("НомерПоДаннымКлиента", Реквизиты.НомерПоДаннымКлиента);
Запрос.УстановитьПараметр("СуммаДокумента", Реквизиты.СуммаДокумента);
Запрос.УстановитьПараметр("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ТипЗнч(ДокументСсылка)));
Запрос.УстановитьПараметр("ХозОперацииПередачиТоваров", ПродажиСервер.ОперацииПередачиТоваров());
Запрос.УстановитьПараметр("БонуснаяПрограммаЛояльности", Реквизиты.БонуснаяПрограммаЛояльности);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяУниверсальнаяДата());
Запрос.УстановитьПараметр("КомиссионныеПродажи25",Реквизиты.КомиссионныеПродажи25);
ИнформацияПоДоговору = Неопределено;
Если ЗначениеЗаполнено(Реквизиты.Договор) Тогда
ШаблонСтроки = "ru = 'По договору ""%1""'";
ИнформацияПоДоговору = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, Реквизиты.Договор);
КонецЕсли;
Запрос.УстановитьПараметр("ИнформацияПоДоговору", ИнформацияПоДоговору);
КонецПроцедуры
Процедура ПолучитьДанныеДокумента(Запрос, ДокументСсылка)
СписокЗапросов = Новый Массив;
ТекстЗапросаДанныеДокументаШапка(СписокЗапросов);
ТекстЗапросаДанныеДокументаТаблицаТовары(СписокЗапросов);
ТекстЗапросаДанныеДокументаТаблицаЭтапыГрафикаОплаты(СписокЗапросов);
ТекстЗапроса = СтрСоединить(СписокЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.Текст = ТекстЗапроса;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Выполнить();
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаШапка(СписокЗапросов)
ТекстЗапросаШапка = "ВЫБРАТЬ
| ДанныеШапки.Дата КАК Дата,
| ДанныеШапки.Партнер КАК Партнер,
| ДанныеШапки.Контрагент КАК Контрагент,
| ДанныеШапки.Организация КАК Организация,
| ДанныеШапки.Валюта КАК Валюта,
| ДанныеШапки.Склад КАК Склад,
| ДанныеШапки.Статус КАК Статус,
| ДанныеШапки.Ссылка КАК Ссылка,
| ДанныеШапки.Приоритет КАК Приоритет,
| ДанныеШапки.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДанныеШапки.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ДанныеШапки.Договор КАК Договор,
| ДанныеШапки.Назначение КАК Назначение,
| ДанныеШапки.Подразделение КАК Подразделение,
| ЕСТЬNULL(ДанныеШапки.Договор.ДопустимаяСуммаЗадолженности, 0) КАК ДопустимаяСуммаЗадолженности,
| ДанныеШапки.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеШапки.Номер КАК Номер,
| ДанныеШапки.Комментарий КАК Комментарий,
| ДанныеШапки.СуммаДокумента КАК СуммаДокумента,
| ДанныеШапки.Проведен КАК Проведен,
| ДанныеШапки.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеШапки.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
| ДанныеШапки.ДатаПоДаннымКлиента КАК ДатаПоДаннымКлиента,
| ДанныеШапки.Автор КАК Автор,
| ДанныеШапки.Менеджер КАК Менеджер,
| ДанныеШапки.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет,
| ДанныеШапки.ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару,
| ДанныеШапки.ТребуетсяЗалогЗаТару КАК ТребуетсяЗалогЗаТару,
| ДанныеШапки.ОбъектРасчетов КАК ОбъектРасчетов,
| ДанныеШапки.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеШапки.ФормаОплаты КАК ФормаОплаты,
| ДанныеШапки.КартаЛояльности.Владелец.БонуснаяПрограммаЛояльности КАК
| КартаЛояльностиВладелецБонуснаяПрограммаЛояльности,
| ЕСТЬNULL(ДанныеШапки.Договор.КомиссионныеПродажи25, ЛОЖЬ) КАК КомиссионныеПродажи25,
| ДанныеШапки.НеОтгружатьЧастями КАК НеОтгружатьЧастями,
| ДанныеШапки.ДатаОТгрузки КАК ДатаОТгрузки
|ПОМЕСТИТЬ ДанныеДокументаШапка
|ИЗ
| Документ.ЗаказКлиента КАК ДанныеШапки
|ГДЕ
| ДанныеШапки.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаШапка);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаТаблицаТовары(СписокЗапросов)
ТекстЗапросаТаблицаТовары = "ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.ДатаОтгрузки КАК ДатаОтгрузки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Упаковка КАК Упаковка,
| ТаблицаТовары.КоличествоУпаковок КАК КоличествоУпаковок,
| ТаблицаТовары.Количество КАК Количество,
| ТаблицаТовары.ВидЦены КАК ВидЦены,
| ТаблицаТовары.Цена КАК Цена,
| ТаблицаТовары.Сумма КАК Сумма,
| ТаблицаТовары.СтавкаНДС КАК СтавкаНДС,
| ТаблицаТовары.СуммаНДС КАК СуммаНДС,
| ТаблицаТовары.СуммаСНДС КАК СуммаСНДС,
| ТаблицаТовары.ПроцентРучнойСкидки КАК ПроцентРучнойСкидки,
| ТаблицаТовары.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ТаблицаТовары.ПроцентАвтоматическойСкидки КАК ПроцентАвтоматическойСкидки,
| ТаблицаТовары.СуммаАвтоматическойСкидки КАК СуммаАвтоматическойСкидки,
| ТаблицаТовары.ПричинаОтмены КАК ПричинаОтмены,
| ТаблицаТовары.КодСтроки КАК КодСтроки,
| ТаблицаТовары.Отменено КАК Отменено,
| ТаблицаТовары.КлючСвязи КАК КлючСвязи,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.СрокПоставки КАК СрокПоставки,
| ТаблицаТовары.Содержание КАК Содержание,
| ТаблицаТовары.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТаблицаТовары.ВариантОбеспечения КАК ВариантОбеспечения,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТовары.Обособленно КАК Обособленно,
| ТаблицаТовары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ТаблицаТовары.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаТовары.Подразделение КАК Подразделение,
| ТаблицаТовары.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаТовары.СуммаБонусныхБалловКСписанию КАК СуммаБонусныхБалловКСписанию,
| ТаблицаТовары.СуммаБонусныхБалловКСписаниюВВалюте КАК СуммаБонусныхБалловКСписаниюВВалюте,
| ТаблицаТовары.СуммаНачисленныхБонусныхБалловВВалюте КАК СуммаНачисленныхБонусныхБалловВВалюте,
| ТаблицаТовары.Номенклатура.ТипНоменклатуры КАК НоменклатураТипНоменклатуры
|ПОМЕСТИТЬ ДанныеДокументаТаблицаТовары
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаТаблицаТовары);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаТаблицаЭтапыГрафикаОплаты(СписокЗапросов)
ТекстЗапросаТаблицаЭтапыГрафикаОплаты = "ВЫБРАТЬ
| ТаблицаЭтапыГрафикаОплаты.НомерСтроки КАК НомерСтроки,
| ТаблицаЭтапыГрафикаОплаты.Ссылка КАК Ссылка,
| ТаблицаЭтапыГрафикаОплаты.ВариантОплаты КАК ВариантОплаты,
| ТаблицаЭтапыГрафикаОплаты.ДатаПлатежа КАК ДатаПлатежа,
| ТаблицаЭтапыГрафикаОплаты.ПроцентПлатежа КАК ПроцентПлатежа,
| ТаблицаЭтапыГрафикаОплаты.СуммаПлатежа КАК СуммаПлатежа,
| ТаблицаЭтапыГрафикаОплаты.ПроцентЗалогаЗаТару КАК ПроцентЗалогаЗаТару,
| ТаблицаЭтапыГрафикаОплаты.СуммаЗалогаЗаТару КАК СуммаЗалогаЗаТару,
| ТаблицаЭтапыГрафикаОплаты.СуммаОтклоненияМерныхТоваров КАК СуммаОтклоненияМерныхТоваров,
| ТаблицаЭтапыГрафикаОплаты.Сдвиг КАК Сдвиг,
| ТаблицаЭтапыГрафикаОплаты.ВариантОтсчета КАК ВариантОтсчета
|ПОМЕСТИТЬ ДанныеДокументаТаблицаЭтапыГрафикаОплаты
|ИЗ
| Документ.ЗаказКлиента.ЭтапыГрафикаОплаты КАК ТаблицаЭтапыГрафикаОплаты
|ГДЕ
| ТаблицаЭтапыГрафикаОплаты.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка";
СписокЗапросов.Добавить(ТекстЗапросаТаблицаЭтапыГрафикаОплаты);
КонецПроцедуры
Процедура СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры = Неопределено, ДокументОбъект = Неопределено) Экспорт
ТекстЗапросаДанных =
"ВЫБРАТЬ
| ""Товары"" КАК ИсточникДанных,
| ЛОЖЬ КАК РаспределятьОбщуюСумму,
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Валюта КАК ВалютаДокумента,
| НЕОПРЕДЕЛЕНО КАК ВалютаВзаиморасчетов,
| ДАТАВРЕМЯ(1,1,1) КАК ПериодБазыНДС,
| ДанныеДокумента.Дата КАК ДатаКурса,
|
| ТаблицаДокумента.НомерСтроки КАК НомерСтроки,
| ТаблицаДокумента.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаДокумента.СуммаСНДС - ТаблицаДокумента.СуммаНДС КАК СуммаБезНДС,
| ТаблицаДокумента.СтавкаНДС КАК СтавкаНДС,
| ТаблицаДокумента.СуммаНДС КАК СуммаНДС,
| 0 КАК СуммаВзаиморасчетов,
| 0 КАК СуммаНДСВзаиморасчетов,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК СуммаБезНДСУпр,
|
| ВЫБОР
| КОГДА ДанныеДокумента.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи))
| ТОГДА ЛОЖЬ
| КОГДА ТаблицаДокумента.НоменклатураТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И ДанныеДокумента.ВернутьМногооборотнуюТару
| И НЕ ДанныеДокумента.ТребуетсяЗалогЗаТару
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ОтражаетсяВРасчетах,
| ДанныеДокумента.ОбъектРасчетов КАК ОбъектРасчетов,
| ЛОЖЬ КАК ПересчитыватьПоДаннымРасчетов
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеДокумента
| ПО ТаблицаДокумента.Ссылка = ДанныеДокумента.Ссылка
|
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И НЕ ТаблицаДокумента.Отменено
|";
Если ДокументОбъект = Неопределено Тогда
ТекстЗапросаДанных = СтрЗаменить(ТекстЗапросаДанных, "ДанныеДокументаТаблицаТовары", "Документ.ЗаказКлиента.Товары");
ТекстЗапросаДанных = СтрЗаменить(ТекстЗапросаДанных, "ДанныеДокументаШапка", "Документ.ЗаказКлиента");
ТекстЗапросаДанных = СтрЗаменить(ТекстЗапросаДанных, "ТаблицаДокумента.НоменклатураТипНоменклатуры", "ТаблицаДокумента.Номенклатура.ТипНоменклатуры");
КонецЕсли;
РегистрыСведений.СуммыДокументовВВалютахУчета.СформироватьПоДаннымДокумента(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанных);
КонецПроцедуры
Функция ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект = Неопределено)
ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если ДокументОбъект = Неопределено
Или (ДокументОбъект <> Неопределено
И ДокументОбъект.Статус <> Перечисления.СтатусыЗаказовКлиентов.НеСогласован) Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| НачалоПериода(&Период, День) КАК Период,
| &Ссылка КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала))
| ИЛИ ТаблицаТовары.СтатусУказанияСерий В(10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала)
| ТОГДА 0
| ИНАЧЕ ТаблицаТовары.КодСтроки
| КОНЕЦ КАК КодСтроки,
| ТаблицаТовары.Склад КАК Склад,
| ВЫБОР
| КОГДА ТаблицаТовары.Отменено
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отменено)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Заказано)
| КОНЕЦ КАК Показатель,
| ТаблицаТовары.Количество КАК Количество,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| ТОГДА ТаблицаТовары.Сумма
| ИНАЧЕ
| ТаблицаТовары.СуммаСНДС
| КОНЕЦ КАК Сумма,
| ВЫБОР
| КОГДА ТаблицаТовары.Отменено
| ТОГДА ТаблицаТовары.ПричинаОтмены
| ИНАЧЕ НЕОПРЕДЕЛЕНО
| КОНЕЦ КАК ПричинаОтмены
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И НЕ &Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.ДатаОтгрузки КАК Период,
| &Ссылка КАК Распоряжение,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала))
| ИЛИ ТаблицаПоказателей.Ссылка = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке)
| И ТаблицаТовары.СтатусУказанияСерий В(10, 14)
| ТОГДА ТаблицаТовары.Серия
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК Серия,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала)
| ТОГДА 0
| ИНАЧЕ ТаблицаТовары.КодСтроки
| КОНЕЦ КАК КодСтроки,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала))
| ИЛИ ТаблицаПоказателей.Ссылка = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке)
| ТОГДА ВЫБОР
| КОГДА ТаблицаТовары.НоменклатураТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| ТОГДА ТаблицаТовары.Склад
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| КОНЕЦ КАК Склад,
| ТаблицаПоказателей.Ссылка КАК Показатель,
| ТаблицаТовары.Количество КАК Количество,
| ВЫБОР
| КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| ТОГДА ТаблицаТовары.Сумма
| ИНАЧЕ
| ТаблицаТовары.СуммаСНДС
| КОНЕЦ КАК Сумма,
| ЗНАЧЕНИЕ(Справочник.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка) КАК ПричинаОтмены
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат КАК ТаблицаПоказателей
| ПО ТаблицаПоказателей.Ссылка В (ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОформлению),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке))
|ГДЕ
| ТаблицаТовары.Ссылка = &Ссылка
| И НЕ &Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
| И НЕ ТаблицаТовары.Отменено
| И ТаблицаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки,
| Показатель";
Иначе
Возврат "";
КонецЕсли;
Если ДокументОбъект = Неопределено Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ДанныеДокументаТаблицаТовары", "Документ.ЗаказКлиента.Товары");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ТаблицаТовары.НоменклатураТипНоменклатуры", "ТаблицаТовары.Номенклатура.ТипНоменклатуры");
КонецЕсли;
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтКонтрольОплаты(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтКонтрольОплаты";
ТекстЗапроса =
"ВЫБРАТЬ
| МИНИМУМ(
| ВЫБОР
| КОГДА ДанныеШапки.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке)) ТОГДА
|
| НЕ ТаблицаТовары.ВариантОбеспечения В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.РезервироватьПоМереПоступления),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить))
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ) КАК ИсключатьПриКонтролеАванс,
| МИНИМУМ(
| ВЫБОР
| КОГДА ДанныеШапки.Статус В(
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.КОтгрузке)) ТОГДА
|
| ТаблицаТовары.ВариантОбеспечения <> ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| ИНАЧЕ
| ИСТИНА
| КОНЕЦ) КАК ИсключатьПриКонтролеПредоплату
|ПОМЕСТИТЬ ВтКонтрольОплаты
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ДанныеШапки
| ПО ТаблицаТовары.Ссылка = ДанныеШапки.Ссылка
|ГДЕ
| ТаблицаТовары.Ссылка В(&Ссылка)";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
Если НЕ (НЕ ДокументОбъект.ЭтоЗаказКакСчет
И ДокументОбъект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.РеализацияКлиентуРеглУчет) Тогда
Возврат;
КонецЕсли;
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ВЫБОР
| КОГДА ТоварыДокумента.ДатаОтгрузки <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ТоварыДокумента.ДатаОтгрузки
| ИНАЧЕ ДанныеШапки.Дата
| КОНЕЦ КАК Период,
| ТоварыДокумента.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеШапки.Партнер КАК Получатель,
| ТоварыДокумента.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТоварыДокумента.Обособленно
| ТОГДА ДанныеШапки.Назначение
| ИНАЧЕ &НазначениеПоУмолчанию
| КОНЕЦ КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ТоварыДокумента.Отменено КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ИСТИНА КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|
|ГДЕ
| (ТоварыДокумента.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| ИЛИ ТоварыДокумента.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ДанныеШапки.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован))
| И ТоварыДокумента.Количество <> 0";
ТекстЗапросаДанныхДокумента = СтрЗаменить(ТекстЗапросаДанныхДокумента,
"&НазначениеПоУмолчанию",
"ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)");
СкладыСервер.ОтразитьРезерв(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
Если НЕ (НЕ ДокументОбъект.ЭтоЗаказКакСчет
И ДокументОбъект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.РеализацияКлиентуРеглУчет
И ДокументОбъект.Статус <> Перечисления.СтатусыЗаказовКлиентов.НеСогласован) Тогда
Возврат;
КонецЕсли;
ТекстЗапросаДанныхДокумента =
"ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| ТоварыДокумента.ДатаОтгрузки КАК Период,
| ТоварыДокумента.Ссылка КАК Заказ,
| НЕОПРЕДЕЛЕНО КАК Накладная,
| ЛОЖЬ КАК Исправление,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| ДанныеШапки.Партнер КАК Получатель,
| ТоварыДокумента.Склад КАК Склад,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТоварыДокумента.Обособленно
| ТОГДА ДанныеШапки.Назначение
| ИНАЧЕ &НазначениеПоУмолчанию
| КОНЕЦ КАК Назначение,
| ТоварыДокумента.Серия КАК Серия,
| ТоварыДокумента.СтатусУказанияСерий КАК СтатусУказанияСерий,
| ТоварыДокумента.Количество КАК Количество,
| ЛОЖЬ КАК СверхЗаказа,
| ТоварыДокумента.Отменено КАК Отменено,
| ЛОЖЬ КАК ЭтоНакладная,
| ИСТИНА КАК ОтгрузкаПоЗаказу
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТоварыДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеШапки
| ПО ТоварыДокумента.Ссылка = ДанныеШапки.Ссылка
|
|ГДЕ
| ТоварыДокумента.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И ТоварыДокумента.Количество <> 0";
ТекстЗапросаДанныхДокумента = СтрЗаменить(ТекстЗапросаДанныхДокумента,
"&НазначениеПоУмолчанию",
"ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)");
СкладыСервер.ЗапланироватьОтгрузкуТоваров(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокумента);
КонецПроцедуры
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) ТОГДА
| ТабЧасть.Подразделение
| ИНАЧЕ
| ТабЧасть.Склад
| КОНЕЦ КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Обособленно ТОГДА
|
| ТабЧасть.Ссылка.Назначение
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.Ссылка КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ИСТИНА КАК КонтрольСвободногоОстатка
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ТабЧасть
|ГДЕ
| НЕ ТабЧасть.Отменено
| И ТабЧасть.Ссылка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
| И ТабЧасть.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) ТОГДА
| ТабЧасть.Подразделение
| ИНАЧЕ
| ТабЧасть.Склад
| КОНЕЦ КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Обособленно ТОГДА
|
| ТабЧасть.Ссылка.Назначение
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
| ТабЧасть.ВариантОбеспечения КАК ВариантОбеспечения,
| ТабЧасть.Ссылка КАК Заказ,
|
| ВЫБОР КОГДА ТабЧасть.Ссылка.НеОтгружатьЧастями ТОГДА
| ТабЧасть.Ссылка.ДатаОтгрузки
| ИНАЧЕ
| ТабЧасть.ДатаОтгрузки
| КОНЕЦ КАК ЖелаемаяДатаОтгрузки,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ТабЧасть
|ГДЕ
| НЕ ТабЧасть.Отменено
| И ТабЧасть.Ссылка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
| И ТабЧасть.ВариантОбеспечения <> ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)";
РаспределениеЗапасовДвижения.ЗапланироватьРасходЗапаса(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаТабЧасть,
Ложь);
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
|
| ВЫБОР КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) ТОГДА
| ТабЧасть.Подразделение
| ИНАЧЕ
| ТабЧасть.Склад
| КОНЕЦ КАК Склад,
|
| ВЫБОР КОГДА ТабЧасть.Обособленно ТОГДА
|
| ТабЧасть.Ссылка.Назначение
|
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
|
| ТабЧасть.Количество КАК Количество,
|
| ВЫБОР
| КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) И ТабЧасть.Обособленно
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.КОбеспечению)
| КОГДА ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа) И НЕ ТабЧасть.Обособленно
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.НеТребуется)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада)
| КОНЕЦ КАК ВариантОбеспечения,
|
| ТабЧасть.Ссылка КАК Заказ,
|
| ВЫБОР КОГДА ТабЧасть.Ссылка.НеОтгружатьЧастями ТОГДА
| ТабЧасть.Ссылка.ДатаОтгрузки
| ИНАЧЕ
| ТабЧасть.ДатаОтгрузки
| КОНЕЦ КАК ЖелаемаяДатаОтгрузки,
| ЛОЖЬ КАК ПоГрафику,
| НЕОПРЕДЕЛЕНО КАК РаспоряжениеВГрафике,
| 0 КАК КоличествоВГрафике
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ТабЧасть
|ГДЕ
| НЕ ТабЧасть.Отменено
| И ТабЧасть.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
| И ТабЧасть.ВариантОбеспечения В(
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.СоСклада))";
РаспределениеЗапасовДвижения.ЗапланироватьРасходЗапаса(
Запрос,
ТекстыЗапроса,
Регистры,
ТекстЗапросаТабЧасть,
Ложь);
КонецПроцедуры
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос();
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.ЗаказКлиента";
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Истина;
ЗначенияПараметров = Новый Структура;
ЗначенияПараметров.Вставить("ИдентификаторМетаданных",
ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ПолноеИмяДокумента));
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоДоговору", """""");
ПереопределениеРасчетаПараметров.Вставить("НомерПоДаннымКлиента", """""");
Если ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "ТаблицаТовары";
ИначеЕсли ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
ВЗапросеЕстьИсточник = Ложь;
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
Процедура ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
#Область НаправленияДеятельности
ИмяРегистра = "ВременнаяТаблицаНаправленияДеятельности";
ТекстЗапросаНаправленияДеятельности =
"ВЫБРАТЬ
| ДанныеДокументаШапка.ОбъектРасчетов КАК ОбъектРасчетов
|ИЗ
| ДанныеДокументаШапка КАК ДанныеДокументаШапка";
ТекстЗапросаНаправленияДеятельности = ВзаиморасчетыСервер.ПолучитьТаблицуНаправленийДеятельности(ТекстЗапросаНаправленияДеятельности);
ТекстыЗапроса.Добавить(ТекстЗапросаНаправленияДеятельности, ИмяРегистра);
#КонецОбласти
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтКонтрольОплаты", ТекстыЗапроса) Тогда
ТекстЗапросаВтКонтрольОплаты(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ (ДокументОбъект.Статус <> Перечисления.СтатусыЗаказовКлиентов.НеСогласован
И НЕ (ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
ИЛИ ДокументОбъект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)) Тогда
ТекстПланыОплат = "";
Иначе
ТекстПланыОплат =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| ДанныеДокументаШапка.Организация КАК Организация,
| ДанныеДокументаШапка.Партнер КАК Партнер,
|
| ДанныеДокументаШапка.ОбъектРасчетов КАК ОбъектРасчетов,
| ДанныеДокументаШапка.Дата КАК ДатаРегистратора,
| ДанныеДокументаШапка.Номер КАК НомерРегистратора,
| ДанныеДокументаШапка.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаДокумента,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПланированиеПоЗаказуКлиента) КАК ХозяйственнаяОперация,
| ДанныеДокументаШапка.ФормаОплаты КАК ФормаОплаты,
|
| Таблица.ДатаПлатежа КАК ДатаПлатежа,
| Таблица.ВариантОплаты КАК ВариантОплаты,
| Таблица.СуммаПлатежа + Таблица.СуммаЗалогаЗаТару КАК КОплате,
| Таблица.СуммаОтклоненияМерныхТоваров КАК СуммаОтклоненияМерныхТоваров,
|
| ВЫБОР
| КОГДА ДанныеДокументаШапка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.Закрыт)
| И Таблица.ВариантОплаты В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроляОплатыКлиентом.АвансДоОбеспечения),
| ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроляОплатыКлиентом.ПредоплатаДоОтгрузки))
| ТОГДА ЛОЖЬ
| КОГДА Таблица.ВариантОплаты = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроляОплатыКлиентом.АвансДоОбеспечения)
| ТОГДА КонтрольОплаты.ИсключатьПриКонтролеАванс
| КОГДА Таблица.ВариантОплаты = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроляОплатыКлиентом.ПредоплатаДоОтгрузки)
| ТОГДА КонтрольОплаты.ИсключатьПриКонтролеПредоплату
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ИсключатьПриКонтроле
|
|ИЗ
| ДанныеДокументаТаблицаЭтапыГрафикаОплаты КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеДокументаШапка
| ПО Таблица.Ссылка = ДанныеДокументаШапка.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ ВтКонтрольОплаты КАК КонтрольОплаты
| ПО (ИСТИНА)
|ГДЕ
| ДанныеДокументаШапка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
| И НЕ ДанныеДокументаШапка.ХозяйственнаяОперация В(ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи))";
КонецЕсли;
Если НЕ ((ДокументОбъект.Статус = Перечисления.СтатусыЗаказовКлиентов.КОбеспечению
ИЛИ ДокументОбъект.Статус = Перечисления.СтатусыЗаказовКлиентов.КОтгрузке
ИЛИ ДокументОбъект.Статус = Перечисления.СтатусыЗаказовКлиентов.Закрыт)) Тогда
ТекстПланыОтгрузок = "";
Иначе
ТекстПланыОтгрузок =
"ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| ДанныеДокументаШапка.Организация КАК Организация,
| ДанныеДокументаШапка.Партнер КАК Партнер,
|
| ДанныеДокументаШапка.ОбъектРасчетов КАК ОбъектРасчетов,
| КОНЕЦПЕРИОДА(Таблица.ДатаОтгрузки, ДЕНЬ) КАК ДатаОтгрузки,
| Таблица.СуммаСНДС КАК УвеличитьКОтгрузке,
| ВЫБОР
| КОГДА ДанныеДокументаШапка.ХозяйственнаяОперация В (
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала))
| И Таблица.ВариантОбеспечения =
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| ТОГДА Таблица.СуммаСНДС
| ИНАЧЕ 0
| КОНЕЦ КАК УвеличитьОтгружается,
| ДанныеДокументаШапка.Дата КАК ДатаРегистратора,
| ДанныеДокументаШапка.Номер КАК НомерРегистратора,
| ДанныеДокументаШапка.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаВзаиморасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаДокумента,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПланированиеПоЗаказуКлиента) КАК ХозяйственнаяОперация,
| ДанныеДокументаШапка.ФормаОплаты КАК ФормаОплаты
|
|ИЗ
| ДанныеДокументаТаблицаТовары КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеДокументаШапка
| ПО Таблица.Ссылка = ДанныеДокументаШапка.Ссылка
|ГДЕ
| НЕ Таблица.Отменено
| И Таблица.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И (Таблица.НоменклатураТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ ДанныеДокументаШапка.ТребуетсяЗалогЗаТару
| ИЛИ НЕ ДанныеДокументаШапка.ВернутьМногооборотнуюТару)
| И НЕ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
| И НЕ (&ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию)
| И &КомиссионныеПродажи25)";
КонецЕсли;
ВзаиморасчетыСервер.ПроведениеЗаказаКлиента(Запрос, ТекстыЗапроса, Регистры, ТекстПланыОплат, ТекстПланыОтгрузок);
ВзаиморасчетыСервер.ПроведениеРасчетыСКлиентамиПланОплат(Запрос, ТекстыЗапроса, Регистры, ТекстПланыОплат);
ВзаиморасчетыСервер.ПроведениеРасчетыСКлиентамиПланОтгрузок(Запрос, ТекстыЗапроса, Регистры, ТекстПланыОтгрузок);
КонецПроцедуры
Функция СуммыПоЗаказам(СсылкаОбъект, ЗначенияРеквизитов = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Дата КАК Дата,
| &ДатаСогласования КАК ДатаСогласования,
| Товары.СуммаСНДС КАК Сумма,
| ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
| Товары.ДатаОтгрузки КАК ДатаОтгрузки,
| Товары.Отменено КАК Отменено,
| &ВернутьМногооборотнуюТару КАК ВернутьМногооборотнуюТару,
| &ТребуетсяЗалогЗаТару КАК ТребуетсяЗалогЗаТару
|ПОМЕСТИТЬ ВТТовары
|ИЗ &ТаблицаЗначений КАК Товары
|ГДЕ &УсловиеСсылка
|
|;
|ВЫБРАТЬ
| Товары.Ссылка КАК Заказ,
| Товары.Дата КАК Дата,
| Товары.ДатаСогласования КАК ДатаСогласования,
| Товары.ДатаОтгрузки КАК ДатаОтгрузки,
| СУММА(ВЫБОР
| КОГДА Товары.Номенклатура.ТипНоменклатуры <> ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| ИЛИ НЕ Товары.ВернутьМногооборотнуюТару
| ТОГДА Товары.Сумма
| ИНАЧЕ 0
| КОНЕЦ) КАК СуммаПлатежа,
| 0 КАК СуммаВзаиморасчетов,
| СУММА(ВЫБОР
| КОГДА Товары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара)
| И Товары.ТребуетсяЗалогЗаТару
| ТОГДА Товары.Сумма
| ИНАЧЕ 0
| КОНЕЦ ) КАК СуммаЗалогаЗаТару,
| 0 КАК СуммаВзаиморасчетовПоТаре
|ИЗ
| ВТТовары КАК Товары
|ГДЕ
| НЕ Товары.Отменено
|СГРУППИРОВАТЬ ПО
| Товары.ДатаОтгрузки,
| Товары.Ссылка,
| Товары.Дата,
| Товары.ДатаСогласования
|;";
Если ЗначенияРеквизитов = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТаблицаЗначений", "Документ.ЗаказКлиента.Товары");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ВернутьМногооборотнуюТару", "Товары.Ссылка.ВернутьМногооборотнуюТару");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТребуетсяЗалогЗаТару", "Товары.Ссылка.ТребуетсяЗалогЗаТару");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Дата", "Товары.Ссылка.Дата");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ДатаСогласования", "Товары.Ссылка.ДатаСогласования");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеСсылка", "Товары.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка",СсылкаОбъект);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеСсылка", "ИСТИНА");
Для Каждого КлючЗначение Из ЗначенияРеквизитов Цикл
Запрос.УстановитьПараметр(КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;
КонецЕсли;
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#Область Отчеты
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КомандаОтчет = Отчеты.АнализЦенПоставщиков.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСписка";
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.КарточкаРасчетовСКлиентом_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента,ФормаСписка";
КонецЕсли;
КомандаОтчет = Отчеты.ОтклоненияОтУсловийПродаж.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента";
КонецЕсли;
Отчеты.ВыручкаИСебестоимостьПродаж.ДобавитьКомандуПродажиПоЗаказу(КомандыОтчетов);
Если ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25() Тогда
Отчеты.ОценкаРентабельностиПродаж2_5.ДобавитьКомандуОтчета(КомандыОтчетов);
Иначе
Отчеты.ОценкаРентабельностиПродаж.ДобавитьКомандуОтчета(КомандыОтчетов);
КонецЕсли;
Отчеты.ПримененныеСкидкиВДокументе.ДобавитьКомандуОтчета(КомандыОтчетов);
КомандаОтчет = Отчеты.РезультатыСогласованияПродажи.ДобавитьКомандуРезультатыСогласованияЗаказаКлиента(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСписка";
КонецЕсли;
КомандаОтчет = Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияЗаказКлиента(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента, ";
КомандаОтчет.Порядок = 1;
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.ЗадолженностьКлиентов_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента,ФормаСписка";
КонецЕсли;
КомандаОтчет = Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияЗаказКлиента(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСпискаДокументов,ФормаСпискаСамообслуживание";
КомандаОтчет.Порядок = 1;
КонецЕсли;
КомандаОтчет = Обработки.СостояниеОбеспеченияЗаказов.ДобавитьКомандуСостояниеОбеспеченияСпискаЗаказовКлиента(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСпискаСамообслуживание";
КомандаОтчет.ПараметрыФормы.Вставить("ТолькоПросмотр", Истина);
КомандаОтчет.Порядок = 2;
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.ЗадолженностьКлиентов_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСпискаДокументов";
КомандаОтчет.Важность = "Обычное";
КомандаОтчет.Порядок = 1;
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.КарточкаРасчетовСКлиентом_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСпискаДокументов";
КомандаОтчет.Важность = "Обычное";
КомандаОтчет.Порядок = 2;
КонецЕсли;
КомандаОтчет = Отчеты.ОтклоненияОтУсловийПродаж.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСпискаДокументов";
КомандаОтчет.Важность = "СмТакже";
КомандаОтчет.Порядок = 1;
КонецЕсли;
КомандаОтчет = Отчеты.РезультатыСогласованияПродажи.ДобавитьКомандуРезультатыСогласованияЗаказаКлиента(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСпискаДокументов";
КомандаОтчет.Важность = "СмТакже";
КомандаОтчет.Порядок = 2;
КонецЕсли;
КомандаОтчет = Отчеты.АнализЦенПоставщиков.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСпискаДокументов";
КомандаОтчет.Важность = "СмТакже";
КомандаОтчет.Порядок = 3;
КонецЕсли;
ЗаказКлиентаЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Если ПраваПользователяПовтИсп.ЭтоПартнер() Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьЗаказовНаТоварыУслуги";
КомандаПечати.Идентификатор = "ЗаказКлиента";
КомандаПечати.Представление = НСтр("ru = 'Заказ клиента'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплату";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуСФаксимиле";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату с факсимиле'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьФаксимиле", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
Возврат;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("НеВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьЗаказовНаТоварыУслуги";
КомандаПечати.Идентификатор = "ЗаказКлиента";
КомандаПечати.Представление = НСтр("ru = 'Заказ клиента'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьЗаказовНаТоварыУслуги";
КомандаПечати.Идентификатор = "ЗаказКлиентаБезСкидок";
КомандаПечати.Представление = НСтр("ru = 'Заказ клиента (не выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьЗаказовНаТоварыУслуги";
КомандаПечати.Идентификатор = "ЗаказКлиента";
КомандаПечати.Представление = НСтр("ru = 'Заказ клиента (выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("НеВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплату";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуБезСкидок";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату (не выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплату";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату (выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("НеВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуСФаксимиле";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату с факсимиле'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьФаксимиле", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуСФаксимилеБезСкидок";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату с факсимиле (не выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьФаксимиле", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуСФаксимиле";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату с факсимиле (выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьФаксимиле", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если Константы.ИспользоватьМеждународныеПечатныеФормы.Получить() Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "ProformaInvoiceEn";
КомандаПечати.Представление = НСтр("ru = 'Proforma invoice (en)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
КомандаПечати = Обработки.ПечатьЗаданияНаОтборРазмещениеТоваров.ДобавитьКомандуПечати(КомандыПечати, "ЗаданиеНаОтбор");
КомандаПечати.ДополнительныеПараметры.Вставить("ПечатьПоДаннымДокумента");
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"Статус",
Перечисления.СтатусыЗаказовКлиентов.НеСогласован,
ВидСравненияКомпоновкиДанных.НеРавно);
Если ПолучитьФункциональнуюОпцию("ИспользоватьИнтеграциюСOzon") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "ИнтеграцияСМаркетплейсомOzonКлиент.ПечатьЭтикеток";
КомандаПечати.МенеджерПечати = "";
КомандаПечати.Идентификатор = "ЭтикеткиOzon";
КомандаПечати.Представление = НСтр("ru = 'Этикетки Ozon'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
СписокХозяйственныхОпераций = Новый СписокЗначений();
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности);
ПодключаемыеКоманды.ДобавитьУсловиеВидимостиКоманды(КомандаПечати,
"ХозяйственнаяОперация",
СписокХозяйственныхОпераций,
ВидСравненияКомпоновкиДанных.ВСписке);
КонецЕсли;
ЗаказКлиентаЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "КомплектДокументов") Тогда
КоллекцияПечатныхФорм.Очистить();
СформироватьКомплектПечатныхФорм(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати);
КонецЕсли;
ЗаказКлиентаЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
КонецПроцедуры
Функция ПолучитьДанныеДляПечатнойФормыСчетаНаОплату(ПараметрыПечати, МассивОбъектов, КодЯзыка = Неопределено) Экспорт
Возврат ДанныеДляПечатныхФормСчетаНаОплатуИзвещения(ПараметрыПечати, МассивОбъектов, КодЯзыка);
КонецФункции
Функция ПолучитьДанныеДляПечатнойФормыЗаказаНаТоварыУслуги(МассивОбъектов, ПараметрыПечати, КодЯзыка = Неопределено) Экспорт
Если ПараметрыПечати <> Неопределено И ПараметрыПечати.Свойство("ОтображатьСкидки") Тогда
ОтображатьСкидки = ПараметрыПечати.ОтображатьСкидки;
Иначе
ОтображатьСкидки = (Константы.ОтображениеСкидокВПечатныхФормахДокументовПродажи.Получить()
<> Перечисления.ВариантыВыводаСкидокВПечатныхФормах.НеВыводитьСкидки);
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Номер КАК Номер,
| Документы.Дата КАК Дата,
| Документы.АдресДоставки КАК АдресДоставки,
| Документы.Организация КАК Организация,
| Документы.Организация КАК Исполнитель,
| ВЫБОР КОГДА Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
| ИЛИ Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяЕНВД)
| ИЛИ Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаПоПатенту)
| ИЛИ Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК УчитыватьНДС,
| Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя) КАК ОперацияОблагаетсяНДСУПокупателя,
| ИСТИНА КАК ПоказыватьНДС,
| ИСТИНА КАК ИспользоватьАвтоСкидки,
| &ВыводитьДопКолонкиНДС КАК ПоказыватьНДСВСтроках,
| """" КАК Тип,
| &ПредставлениеДокумента КАК ПредставлениеДокумента,
| &ПредставлениеВОшибке КАК ПредставлениеВОшибке,
| Документы.Организация.Префикс КАК Префикс,
| Документы.Контрагент КАК Контрагент,
| Документы.Контрагент КАК Заказчик,
| Документы.БанковскийСчет КАК БанковскийСчет,
| Документы.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| Документы.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| Документы.Валюта КАК Валюта,
| Документы.Менеджер.ФизическоеЛицо КАК Менеджер,
| Документы.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
| Документы.Грузоотправитель КАК Грузоотправитель,
| Документы.Грузополучатель КАК Грузополучатель
|ИЗ
| Документ.ЗаказКлиента КАК Документы
|ГДЕ
| Документы.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Документы.МоментВремени
|;
|
|
|ВЫБРАТЬ
| 1 КАК Порядок,
| ЭтапыГрафикаОплаты.Ссылка КАК Ссылка,
| ЭтапыГрафикаОплаты.НомерСтроки КАК НомерСтроки,
| ЭтапыГрафикаОплаты.ДатаПлатежа КАК ДатаПлатежа,
| ЭтапыГрафикаОплаты.ВариантОплаты КАК ВариантОплаты,
| ЭтапыГрафикаОплаты.ПроцентПлатежа КАК ПроцентПлатежа,
| ЭтапыГрафикаОплаты.СуммаПлатежа КАК СуммаПлатежа,
| ЛОЖЬ КАК ЭтоЗалогЗаТару
|ИЗ
| Документ.ЗаказКлиента.ЭтапыГрафикаОплаты КАК ЭтапыГрафикаОплаты
|ГДЕ
| ЭтапыГрафикаОплаты.Ссылка В(&МассивОбъектов)
| И ЭтапыГрафикаОплаты.СуммаПлатежа <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2 КАК Порядок,
| ЭтапыГрафикаОплаты.Ссылка КАК Ссылка,
| ЭтапыГрафикаОплаты.НомерСтроки КАК НомерСтроки,
| ЭтапыГрафикаОплаты.ДатаПлатежа КАК ДатаПлатежа,
| ЭтапыГрафикаОплаты.ВариантОплаты КАК ВариантОплаты,
| ЭтапыГрафикаОплаты.ПроцентЗалогаЗаТару КАК ПроцентПлатежа,
| ЭтапыГрафикаОплаты.СуммаЗалогаЗаТару КАК СуммаПлатежа,
| ИСТИНА КАК ЭтоЗалогЗаТару
|ИЗ
| Документ.ЗаказКлиента.ЭтапыГрафикаОплаты КАК ЭтапыГрафикаОплаты
|ГДЕ
| ЭтапыГрафикаОплаты.Ссылка В(&МассивОбъектов)
| И ЭтапыГрафикаОплаты.Ссылка.ТребуетсяЗалогЗаТару
| И ЭтапыГрафикаОплаты.СуммаЗалогаЗаТару <> 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
| КОНЕЦ
| ИНАЧЕ
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1) <> 0 ТОГДА
| (ВременнаяТаблицаНаборы.Сумма) / ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1)
| ИНАЧЕ
| 0
| КОНЕЦ
| КОНЕЦ КАК Цена,
| ВременнаяТаблицаНаборы.Сумма КАК Сумма,
| ВременнаяТаблицаНаборы.СтавкаНДС,
| ВременнаяТаблицаНаборы.СуммаНДС,
| ВременнаяТаблицаНаборы.ДатаОтгрузки,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка,
| ВременнаяТаблицаНаборы.СуммаСкидки,
| ВременнаяТаблицаНаборы.СуммаБезСкидки,
| """",
| ЛОЖЬ
| ИЗ
| ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ГДЕ
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие))
|) КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураПредставления
| ПО (Товары.Номенклатура = НоменклатураПредставления.Ссылка
| И НоменклатураПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыПредставления
| ПО (Товары.Характеристика = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураНабораПредставления
| ПО (Товары.НоменклатураНабора = НоменклатураНабораПредставления.Ссылка
| И НоменклатураНабораПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыНабораПредставления
| ПО (Товары.ХарактеристикаНабора = ХарактеристикиНоменклатурыНабораПредставления.Ссылка
| И ХарактеристикиНоменклатурыНабораПредставления.КодЯзыка = &КодЯзыка)
|
|УПОРЯДОЧИТЬ ПО
| Товары.НомерСтроки,
| ЭтоНабор УБЫВ
|";
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ОтображатьСкидки", ОтображатьСкидки);
Запрос.УстановитьПараметр("ПредставлениеДокумента", НСтр("ru = 'Заказ клиента'", ОбщегоНазначения.КодОсновногоЯзыка()));
Запрос.УстановитьПараметр("ПредставлениеВОшибке", НСтр("ru = 'заказа клиента'"));
Запрос.УстановитьПараметр("ВыводитьДопКолонкиНДС", Константы.ВыводитьДопКолонкиНДС.Получить());
Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка);
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[0]);
СтруктураДанныхДляПечати.Вставить("РезультатПоЭтапамОплаты", ПакетРезультатовЗапроса[1]);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", ПакетРезультатовЗапроса[ПакетРезультатовЗапроса.Количество() - 1]);
Возврат СтруктураДанныхДляПечати;
КонецФункции
Функция ДанныеДляПечатныхФормСчетаНаОплатуИзвещения(ПараметрыПечати, МассивОбъектов, КодЯзыка = Неопределено) Экспорт
Если ПараметрыПечати <> Неопределено И ПараметрыПечати.Свойство("ОтображатьСкидки") Тогда
ОтображатьСкидки = ПараметрыПечати.ОтображатьСкидки;
Иначе
ОтображатьСкидки = (Константы.ОтображениеСкидокВПечатныхФормахДокументовПродажи.Получить()
<> Перечисления.ВариантыВыводаСкидокВПечатныхФормах.НеВыводитьСкидки);
КонецЕсли;
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов(МассивОбъектов, МенеджерВременныхТаблиц);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Номер КАК Номер,
| Документы.Дата КАК Дата,
| НЕОПРЕДЕЛЕНО КАК ДокументОснование,
| ЕСТЬNULL(Документы.БанковскийСчет.Владелец, Документы.Организация) КАК Организация,
| Документы.Организация КАК ОрганизацияПоставщик,
| ТаблицаОтветственныеЛица.РуководительНаименование КАК Руководитель,
| ТаблицаОтветственныеЛица.РуководительДолжность КАК ДолжностьРуководителя,
| ТаблицаОтветственныеЛица.ГлавныйБухгалтерНаименование КАК ГлавныйБухгалтер,
| ВЫБОР КОГДА Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
| ИЛИ Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяЕНВД)
| ИЛИ Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаПоПатенту)
| ИЛИ Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК УчитыватьНДС,
| Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя) КАК ОперацияОблагаетсяНДСУПокупателя,
| Документы.Контрагент КАК Контрагент,
| Документы.Контрагент.ЮрФизЛицо КАК КонтрагентЮрФизЛицо,
| Документы.БанковскийСчет КАК БанковскийСчет,
|
| ВЫБОР КОГДА Документы.БанковскийСчет.ИностранныйБанк
| ИЛИ Документы.БанковскийСчет.ВалютаДенежныхСредств <> Документы.Организация.ВалютаРегламентированногоУчета
| ИЛИ Документы.БанковскийСчетКонтрагента.ИностранныйБанк ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ПлатежЗаРубеж,
| Документы.БанковскийСчет.ВалютаДенежныхСредств КАК ВалютаДенежныхСредств,
|
| ВЫБОР КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка ТОГДА Документы.БанковскийСчет.НаименованиеБанкаМеждународное
| ИНАЧЕ Документы.БанковскийСчет.Банк.МеждународноеНаименование КОНЕЦ КАК НаименованиеБанкаМеждународное,
| ВЫБОР КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка ТОГДА Документы.БанковскийСчет.НаименованиеБанкаДляРасчетовМеждународное
| ИНАЧЕ Документы.БанковскийСчет.БанкДляРасчетов.МеждународноеНаименование КОНЕЦ КАК НаименованиеБанкаДляРасчетовМеждународное,
| ВЫБОР КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка ТОГДА Документы.БанковскийСчет.СВИФТБанка
| ИНАЧЕ Документы.БанковскийСчет.Банк.СВИФТБИК КОНЕЦ КАК СВИФТБанка,
| ВЫБОР КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов ТОГДА Документы.БанковскийСчет.СВИФТБанкаДляРасчетов
| ИНАЧЕ Документы.БанковскийСчет.БанкДляРасчетов.СВИФТБИК КОНЕЦ КАК СВИФТБанкаДляРасчетов,
| ВЫБОР КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка ТОГДА Документы.БанковскийСчет.АдресБанкаМеждународный
| ИНАЧЕ Документы.БанковскийСчет.Банк.АдресМеждународный КОНЕЦ КАК АдресБанка,
| ВЫБОР КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов ТОГДА Документы.БанковскийСчет.АдресБанкаДляРасчетовМеждународный
| ИНАЧЕ Документы.БанковскийСчет.БанкДляРасчетов.АдресМеждународный КОНЕЦ КАК АдресБанкаДляРасчетов,
|
| Документы.БанковскийСчет.СчетВБанкеДляРасчетов КАК СчетВБанкеДляРасчетов,
| ЕСТЬNULL(Документы.БанковскийСчет.СчетЦифровогоРубля, ЛОЖЬ) КАК ЭтоСчетЦифровогоРубля,
| ВЫБОР
| КОГДА ЕСТЬNULL(Документы.БанковскийСчет.СчетЦифровогоРубля, ЛОЖЬ)
| ТОГДА Документы.БанковскийСчет.ИдентификаторСчетаЦифровогоРубля
| ИНАЧЕ Документы.БанковскийСчет.НомерСчета
| КОНЕЦ КАК НомерБанковскогоСчета,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчет.БИКБанка
| ИНАЧЕ КлассификаторБанков.Код
| КОНЕЦ КАК БИКБанк,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчет.НаименованиеБанка
| ИНАЧЕ КлассификаторБанков.Наименование
| КОНЕЦ КАК НаименованиеБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчет.КоррСчетБанка
| ИНАЧЕ КлассификаторБанков.КоррСчет
| КОНЕЦ КАК КоррСчетБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчет.ГородБанка
| ИНАЧЕ КлассификаторБанков.Город
| КОНЕЦ КАК ГородБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.БИКБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.Код
| КОНЕЦ КАК БИКБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.НаименованиеБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.Наименование
| КОНЕЦ КАК НаименованиеБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.КоррСчетБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.КоррСчет
| КОНЕЦ КАК КоррСчетБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.ГородБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.Город
| КОНЕЦ КАК ГородБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.ГородБанкаМеждународный
| ИНАЧЕ КлассификаторБанков.ГородМеждународный
| КОНЕЦ КАК ГородБанкаМеждународный,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.СтранаБанка
| ИНАЧЕ СтраныБанков.Ссылка
| КОНЕЦ КАК СтранаБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.ГородБанкаДляРасчетовМеждународный
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.ГородМеждународный
| КОНЕЦ КАК ГородБанкаДляРасчетовМеждународный,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчет.СтранаБанкаДляРасчетов
| ИНАЧЕ СтраныБанковКорреспондентовРФ.Ссылка
| КОНЕЦ КАК СтранаБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанка
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(КлассификаторБанков.БИКРКЦ.Наименование, """")
| КОНЕЦ КАК НаименованиеРКЦБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчет.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(КлассификаторБанковКорреспондентовРФ.БИКРКЦ.Наименование, """")
| КОНЕЦ КАК НаименованиеРКЦБанкаДляРасчетов,
| Документы.БанковскийСчет.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| Документы.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| Документы.Валюта КАК Валюта,
| Документы.Менеджер.ФизическоеЛицо КАК Менеджер,
| Документы.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
| Документы.СуммаДокумента КАК СуммаКВозврату,
| ЛОЖЬ КАК ЧастичнаяОплата,
| Документы.НазначениеПлатежа КАК НазначениеПлатежа,
| 100 КАК ПроцентОплаты,
| Документы.СуммаДокумента КАК СуммаДокумента,
| Документы.Грузоотправитель КАК Грузоотправитель,
| Документы.Грузополучатель КАК Грузополучатель,
| Документы.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
| ЛОЖЬ КАК СчетКВозврату
|ИЗ
| Документ.ЗаказКлиента КАК Документы
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОтветственныеЛица КАК ТаблицаОтветственныеЛица
| ПО Документы.Ссылка = ТаблицаОтветственныеЛица.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторБанков КАК КлассификаторБанков
| ПО Документы.БанковскийСчет.Банк = КлассификаторБанков.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК СтраныБанков
| ПО КлассификаторБанков.КодСтраны = СтраныБанков.Код
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторБанков КАК КлассификаторБанковКорреспондентовРФ
| ПО Документы.БанковскийСчет.БанкДляРасчетов = КлассификаторБанковКорреспондентовРФ.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК СтраныБанковКорреспондентовРФ
| ПО КлассификаторБанковКорреспондентовРФ.КодСтраны = СтраныБанковКорреспондентовРФ.Код
| ЛЕВОЕ СОЕДИНЕНИЕ Константы
| ПО ИСТИНА
|ГДЕ
| Документы.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Документы.МоментВремени
|;
|
|
|ВЫБРАТЬ
| 1 КАК Порядок,
| ЭтапыГрафикаОплаты.Ссылка КАК Ссылка,
| ЭтапыГрафикаОплаты.НомерСтроки КАК НомерСтроки,
| ЭтапыГрафикаОплаты.ДатаПлатежа КАК ДатаПлатежа,
| ЭтапыГрафикаОплаты.ПроцентПлатежа КАК ПроцентПлатежа,
| ЭтапыГрафикаОплаты.СуммаПлатежа КАК СуммаПлатежа,
| ЛОЖЬ КАК ЭтоЗалогЗаТару
|ИЗ
| Документ.ЗаказКлиента.ЭтапыГрафикаОплаты КАК ЭтапыГрафикаОплаты
|ГДЕ
| ЭтапыГрафикаОплаты.Ссылка В(&МассивОбъектов)
| И ЭтапыГрафикаОплаты.СуммаПлатежа <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2 КАК Порядок,
| ЭтапыГрафикаОплаты.Ссылка КАК Ссылка,
| ЭтапыГрафикаОплаты.НомерСтроки КАК НомерСтроки,
| ЭтапыГрафикаОплаты.ДатаПлатежа КАК ДатаПлатежа,
| ЭтапыГрафикаОплаты.ПроцентЗалогаЗаТару КАК ПроцентПлатежа,
| ЭтапыГрафикаОплаты.СуммаЗалогаЗаТару КАК СуммаПлатежа,
| ИСТИНА КАК ЭтоЗалогЗаТару
|ИЗ
| Документ.ЗаказКлиента.ЭтапыГрафикаОплаты КАК ЭтапыГрафикаОплаты
|ГДЕ
| ЭтапыГрафикаОплаты.Ссылка В(&МассивОбъектов)
| И ЭтапыГрафикаОплаты.Ссылка.ТребуетсяЗалогЗаТару
| И ЭтапыГрафикаОплаты.СуммаЗалогаЗаТару <> 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
| КОНЕЦ
| ИНАЧЕ
| ВЫБОР КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1) <> 0 ТОГДА
| (ВременнаяТаблицаНаборы.Сумма) / ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1)
| ИНАЧЕ
| 0
| КОНЕЦ
| КОНЕЦ КАК Цена,
| ВременнаяТаблицаНаборы.Сумма КАК Сумма,
| ВременнаяТаблицаНаборы.СтавкаНДС,
| ВременнаяТаблицаНаборы.СуммаНДС,
| ВременнаяТаблицаНаборы.ДатаОтгрузки,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка,
| ВременнаяТаблицаНаборы.СуммаСкидки,
| ВременнаяТаблицаНаборы.СуммаБезСкидки,
| """",
| ЛОЖЬ
| ИЗ
| ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ГДЕ
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие))
|) КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураПредставления
| ПО (Товары.Номенклатура = НоменклатураПредставления.Ссылка
| И НоменклатураПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыПредставления
| ПО (Товары.Характеристика = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураНабораПредставления
| ПО (Товары.НоменклатураНабора = НоменклатураНабораПредставления.Ссылка
| И НоменклатураНабораПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыНабораПредставления
| ПО (Товары.ХарактеристикаНабора = ХарактеристикиНоменклатурыНабораПредставления.Ссылка
| И ХарактеристикиНоменклатурыНабораПредставления.КодЯзыка = &КодЯзыка)
|
|УПОРЯДОЧИТЬ ПО
| Товары.НомерСтроки,
| ЭтоНабор УБЫВ
|";
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаКоэффициентУпаковки",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&ТекстЗапросаНаименованиеЕдиницыИзмерения",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаЗначениеРеквизитаЕдиницыИзмерения(
"Наименование",
"Товары.Упаковка",
"Товары.Номенклатура"));
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ОтображатьСкидки", ОтображатьСкидки);
Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка);
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[0]);
СтруктураДанныхДляПечати.Вставить("РезультатПоЭтапамОплаты", ПакетРезультатовЗапроса[1]);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", ПакетРезультатовЗапроса[ПакетРезультатовЗапроса.Количество() - 1]);
Возврат СтруктураДанныхДляПечати;
КонецФункции
Функция ПолучитьДанныеДляПечатнойФормыОтборРазмещениеТоваров(ПараметрыПечати, МассивОбъектов) Экспорт
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеЗадания.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ДанныеЗадания.Ссылка) КАК СсылкаПредставление,
| ДанныеЗадания.Номер КАК Номер,
| ДанныеЗадания.Дата КАК Дата,
| НЕОПРЕДЕЛЕНО КАК НомерИсправляемогоДокумента,
| НЕОПРЕДЕЛЕНО КАК ДатаИсправляемогоДокумента,
| ТоварыДокумента.Склад КАК Склад,
| ПРЕДСТАВЛЕНИЕ(ДанныеЗадания.Склад) КАК СкладПредставление,
| &ПомещениеПоУмолчанию КАК Помещение,
| ПРЕДСТАВЛЕНИЕ(&ПомещениеПоУмолчанию) КАК ПомещениеПредставление,
| ИСТИНА КАК ЭтоНакладная,
| ЛОЖЬ КАК ИспользуетсяАдресноеХранение,
| ВЫБОР
| КОГДА ТоварыДокумента.Склад.ИспользоватьАдресноеХранениеСправочно
| И (НЕ ТоварыДокумента.Склад.ИспользоватьАдресноеХранение
| ИЛИ ДанныеЗадания.Дата < ТоварыДокумента.Склад.ДатаНачалаАдресногоХраненияОстатков)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ИспользуетсяСправочноеХранение,
| ЕСТЬNULL(ТоварыДокумента.Склад.ИспользованиеРабочихУчастков, ЛОЖЬ) КАК ИспользованиеРабочихУчастков,
| ВЫБОР
| КОГДА ТоварыДокумента.Склад.ИспользоватьОрдернуюСхемуПриОтгрузке
| И ДанныеЗадания.Дата >= ТоварыДокумента.Склад.ДатаНачалаОрдернойСхемыПриОтгрузке
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ИспользуетсяОрдернаяСхема
|ПОМЕСТИТЬ ДанныеЗадания
|ИЗ
| Документ.ЗаказКлиента КАК ДанныеЗадания
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ТоварыДокумента
| ПО ДанныеЗадания.Ссылка = ТоварыДокумента.Ссылка
|
|ГДЕ
| ДанныеЗадания.Ссылка В(&МассивОбъектов)
| И ТоварыДокумента.Склад <> ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| И ДанныеЗадания.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказовКлиентов.НеСогласован)
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| Склад
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.ДокументОтгрузки КАК Ссылка,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.КОтгрузкеОстаток КАК Количество
|ПОМЕСТИТЬ ТоварыКОтгрузке
|ИЗ
| РегистрНакопления.ТоварыКОтгрузке.Остатки(
| ,
| (Склад, ДокументОтгрузки) В
| (ВЫБРАТЬ
| ДанныеЗадания.Склад КАК Склад,
| ДанныеЗадания.Ссылка КАК ДокументОтгрузки
| ИЗ
| ДанныеЗадания КАК ДанныеЗадания
| ГДЕ
| НЕ ДанныеЗадания.ИспользуетсяОрдернаяСхема)) КАК ТаблицаТовары
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| Номенклатура
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| МИНИМУМ(ТаблицаТовары.НомерСтроки) КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ТаблицаТовары.Склад КАК Склад
|ПОМЕСТИТЬ ТоварыЗаказа
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеЗадания КАК ДанныеЗадания
| ПО ТаблицаТовары.Ссылка = ДанныеЗадания.Ссылка
| И ТаблицаТовары.Склад = ДанныеЗадания.Склад
|ГДЕ
| НЕ ТаблицаТовары.Отменено
| И НЕ ДанныеЗадания.ИспользуетсяОрдернаяСхема
| И ТаблицаТовары.Номенклатура.ТипНоменклатуры В(ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
| И ТаблицаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
|
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Ссылка,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ТаблицаТовары.Серия,
| ТаблицаТовары.Склад
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| Номенклатура,
| Характеристика,
| Серия,
| Склад
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТоварыЗаказа.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Серия КАК Серия,
| ВЫРАЗИТЬ(ТаблицаТовары.Номенклатура КАК Справочник.Номенклатура).НаборУпаковок КАК НаборУпаковок,
| ТаблицаТовары.Склад КАК Склад,
| ТаблицаТовары.Количество КАК Количество
|ПОМЕСТИТЬ ТоварыЗадания
|ИЗ
| ТоварыКОтгрузке КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТоварыЗаказа КАК ТоварыЗаказа
| ПО ТаблицаТовары.Ссылка = ТоварыЗаказа.Ссылка
| И ТаблицаТовары.Номенклатура = ТоварыЗаказа.Номенклатура
| И ТаблицаТовары.Характеристика = ТоварыЗаказа.Характеристика
| И ТаблицаТовары.Серия = ТоварыЗаказа.Серия
| И ТаблицаТовары.Склад = ТоварыЗаказа.Склад
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Склад
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.Ссылка КАК Ссылка,
| ТаблицаТовары.Склад КАК Склад,
| ДанныеЗадания.Помещение КАК Помещение,
| МИНИМУМ(ТаблицаТовары.НомерСтроки) КАК НомерСтроки,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА Товары.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий
| ТОГДА ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ИНАЧЕ ТаблицаТовары.Серия
| КОНЕЦ КАК Серия,
| Товары.НаборУпаковок КАК НаборУпаковок,
| ВЫБОР
| КОГДА Товары.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий
| ТОГДА Товары.ЕдиницаИзмерения
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| КОНЕЦ КАК Упаковка,
| МИНИМУМ(ТаблицаТовары.Количество) КАК Количество
|ПОМЕСТИТЬ ТаблицаТоваровСуммированная
|ИЗ
| ТоварыЗадания КАК ТаблицаТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗадания КАК ДанныеЗадания
| ПО ТаблицаТовары.Ссылка = ДанныеЗадания.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары
| ПО ТаблицаТовары.Номенклатура = Товары.Ссылка
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТовары.Ссылка,
| ТаблицаТовары.Склад,
| ДанныеЗадания.Помещение,
| ТаблицаТовары.Номенклатура,
| ТаблицаТовары.Характеристика,
| ВЫБОР
| КОГДА Товары.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий
| ТОГДА ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ИНАЧЕ ТаблицаТовары.Серия
| КОНЕЦ,
| Товары.НаборУпаковок,
| ВЫБОР
| КОГДА Товары.ВидНоменклатуры.НастройкаИспользованияСерий = &НастройкаИспользованияСерий
| ТОГДА Товары.ЕдиницаИзмерения
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
| КОНЕЦ
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Склад
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеДокумента.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказКлиента КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеЗадания КАК ДанныеЗадания
| ПО ДанныеДокумента.Ссылка = ДанныеЗадания.Ссылка
|ГДЕ
| ДанныеДокумента.Ссылка В(&МассивОбъектов)
| И ДанныеЗадания.Ссылка ЕСТЬ NULL
|;
|
|
|ВЫБРАТЬ
| ДанныеЗадания.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ДанныеЗадания.Ссылка) КАК СсылкаПредставление,
| ДанныеЗадания.Номер КАК Номер,
| ДанныеЗадания.Дата КАК Дата,
| ДанныеЗадания.НомерИсправляемогоДокумента КАК НомерИсправляемогоДокумента,
| ДанныеЗадания.ДатаИсправляемогоДокумента КАК ДатаИсправляемогоДокумента,
| ДанныеЗадания.Склад КАК Склад,
| ПРЕДСТАВЛЕНИЕ(ДанныеЗадания.Склад) КАК СкладПредставление,
| ДанныеЗадания.Помещение КАК Помещение,
| ПРЕДСТАВЛЕНИЕ(ДанныеЗадания.Помещение) КАК ПомещениеПредставление,
| ДанныеЗадания.ЭтоНакладная КАК ЭтоНакладная,
| ДанныеЗадания.ИспользуетсяАдресноеХранение КАК ИспользуетсяАдресноеХранение,
| ДанныеЗадания.ИспользуетсяСправочноеХранение КАК ИспользуетсяСправочноеХранение,
| ДанныеЗадания.ИспользованиеРабочихУчастков КАК ИспользованиеРабочихУчастков,
| ДанныеЗадания.ИспользуетсяОрдернаяСхема КАК ИспользуетсяОрдернаяСхема
|ИЗ
| ДанныеЗадания КАК ДанныеЗадания
|
|УПОРЯДОЧИТЬ ПО
| ДанныеЗадания.Ссылка,
| ДанныеЗадания.Склад
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| ТаблицаТоваров.Склад КАК Склад,
| ЕСТЬNULL(ОсновныеЯчейки.Ячейка.РабочийУчасток, &РабочийУчастокПоУмолчанию) КАК РабочийУчасток,
| ПРЕДСТАВЛЕНИЕ(ОсновныеЯчейки.Ячейка.РабочийУчасток) КАК ПредставлениеРабочегоУчастка,
| ЕСТЬNULL(ОсновныеЯчейки.Ячейка.ПорядокОбхода, 0) КАК ПорядокОбхода,
| ЕСТЬNULL(ОсновныеЯчейки.Ячейка, &ЯчейкаПоУмолчанию) КАК ОсновнаяЯчейка,
| ЕСТЬNULL(ОсновныеЯчейки.Ячейка.Код, """") КАК ОсновнаяЯчейкаПредставление,
| ЕСТЬNULL(ОстальныеЯчейки.Ячейка.ПорядокОбхода, 0) КАК ПорядокОбходаДополнительнаяЯчейка,
| ЕСТЬNULL(ОстальныеЯчейки.Ячейка.Код, """") КАК ЯчейкаПредставление,
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| Товары.Код КАК Код,
| Товары.Артикул КАК Артикул,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| Товары.НаименованиеПолное КАК ПредставлениеНоменклатуры,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Характеристика.НаименованиеПолное КАК ПредставлениеХарактеристики,
| Товары.ВидНоменклатуры.НастройкаИспользованияСерий КАК НастройкаИспользованияСерий,
| ТаблицаТоваров.Серия КАК Серия,
| ТаблицаТоваров.Серия.Наименование КАК ПредставлениеСерии,
| ТаблицаТоваров.Упаковка КАК Упаковка,
| ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Упаковка) КАК ПредставлениеЕдиницыИзмеренияУпаковки,
| ПРЕДСТАВЛЕНИЕ(Товары.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
| ТаблицаТоваров.Количество КАК Количество,
| ТаблицаТоваров.Количество КАК КоличествоУпаковок
|ИЗ
| ТаблицаТоваровСуммированная КАК ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары
| ПО ТаблицаТоваров.Номенклатура = Товары.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам КАК ОсновныеЯчейки
| ПО ТаблицаТоваров.Номенклатура = ОсновныеЯчейки.Номенклатура
| И ОсновныеЯчейки.ОсновнаяЯчейка
| И ТаблицаТоваров.Склад = ОсновныеЯчейки.Склад
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам КАК ОстальныеЯчейки
| ПО ТаблицаТоваров.Номенклатура = ОстальныеЯчейки.Номенклатура
| И НЕ ОстальныеЯчейки.ОсновнаяЯчейка
| И ТаблицаТоваров.Склад = ОстальныеЯчейки.Склад
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Склад,
| РабочийУчасток,
| НомерСтроки,
| Номенклатура,
| Характеристика,
| Серия
|
|ИТОГИ ПО
| Ссылка,
| Склад,
| РабочийУчасток
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| ТаблицаТоваров.Склад КАК Склад,
| ЕСТЬNULL(ОсновныеЯчейки.Ячейка.РабочийУчасток, &РабочийУчастокПоУмолчанию) КАК РабочийУчасток,
| ТаблицаТоваров.НомерСтроки КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия КАК Серия,
| ЕСТЬNULL(УпаковкиНоменклатуры.Ссылка, &УпаковкаПоУмолчанию) КАК Упаковка,
| ЕСТЬNULL(ПРЕДСТАВЛЕНИЕ(УпаковкиНоменклатуры.Ссылка), ПРЕДСТАВЛЕНИЕ(ТаблицаТоваров.Номенклатура.ЕдиницаИзмерения)) КАК ПредставлениеЕдиницыИзмеренияУпаковки,
| ЕСТЬNULL(&ТекстКоэффициентаУпаковки, 1) КАК КоличествоВУпаковке
|ИЗ
| ТаблицаТоваровСуммированная КАК ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
| ПО (ТаблицаТоваров.Номенклатура = УпаковкиНоменклатуры.Владелец
| ИЛИ ТаблицаТоваров.НаборУпаковок = УпаковкиНоменклатуры.Владелец)
| И НЕ УпаковкиНоменклатуры.ПометкаУдаления
| И ТаблицаТоваров.Количество >= &ТекстКоэффициентаУпаковки
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам КАК ОсновныеЯчейки
| ПО ТаблицаТоваров.Номенклатура = ОсновныеЯчейки.Номенклатура
| И ОсновныеЯчейки.ОсновнаяЯчейка
| И ТаблицаТоваров.Склад = ОсновныеЯчейки.Склад
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Склад,
| РабочийУчасток,
| НомерСтроки,
| Номенклатура,
| Характеристика,
| Серия,
| КоличествоВУпаковке УБЫВ";
ТекстКоэффициентаУпаковки = Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"УпаковкиНоменклатуры",
"ТаблицаТоваров.Номенклатура");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&ПомещениеПоУмолчанию",
"ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка)");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&НастройкаИспользованияСерий",
"ЗНАЧЕНИЕ(Перечисление.НастройкиИспользованияСерийНоменклатуры.ЭкземплярТовара)");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&РабочийУчастокПоУмолчанию",
"ЗНАЧЕНИЕ(Справочник.РабочиеУчастки.ПустаяСсылка)");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&ЯчейкаПоУмолчанию",
"ЗНАЧЕНИЕ(Справочник.СкладскиеЯчейки.ПустаяСсылка)");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
"&УпаковкаПоУмолчанию",
"ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКоэффициентаУпаковки", ТекстКоэффициентаУпаковки);
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
УстановитьПривилегированныйРежим(Истина);
Результат = Запрос.ВыполнитьПакет();
УстановитьПривилегированныйРежим(Ложь);
МаксимальныйИндекс = Результат.ВГраница();
ДанныеЗадания = Новый Структура;
ДанныеЗадания.Вставить("РезультатПоОшибкам", Результат[МаксимальныйИндекс - 3]);
ДанныеЗадания.Вставить("РезультатПоРаспоряжениям", Неопределено);
ДанныеЗадания.Вставить("РезультатПоШапке", Результат[МаксимальныйИндекс - 2]);
ДанныеЗадания.Вставить("РезультатПоТабличнойЧасти", Результат[МаксимальныйИндекс - 1]);
ДанныеЗадания.Вставить("РезультатПоУпаковкам", Результат[МаксимальныйИндекс]);
ДанныеЗадания.Вставить("РезультатПоСериям", Неопределено);
Возврат ДанныеЗадания;
КонецФункции
Функция СформироватьКомплектПечатныхФорм(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати) Экспорт
Перем АдресКомплектаПечатныхФорм;
Если ТипЗнч(ПараметрыПечати) = Тип("Структура") И ПараметрыПечати.Свойство("АдресКомплектаПечатныхФорм", АдресКомплектаПечатныхФорм) Тогда
КомплектПечатныхФорм = ПолучитьИзВременногоХранилища(АдресКомплектаПечатныхФорм);
Иначе
КомплектПечатныхФорм = РегистрыСведений.НастройкиПечатиОбъектов.КомплектПечатныхФорм(
Метаданные.Документы.ЗаказКлиента.ПолноеИмя(),
МассивОбъектов, Неопределено);
КонецЕсли;
Если КомплектПечатныхФорм = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"ЗаказКлиента");
ПараметрыПечати.Удалить("ОтображатьСкидки");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаказКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьЗаказовНаТоварыУслуги.СформироватьПечатнуюФормуЗаказаКлиента(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"ЗаказКлиентаБезСкидок");
ПараметрыПечати.Вставить("ОтображатьСкидки", Ложь);
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаказКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьЗаказовНаТоварыУслуги.СформироватьПечатнуюФормуЗаказаКлиента(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СчетНаОплату");
ПараметрыПечати.Удалить("ОтображатьСкидки");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаказКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СчетНаОплатуБезСкидок");
ПараметрыПечати.Вставить("ОтображатьСкидки", Ложь);
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаказКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СчетНаОплатуСФаксимиле");
ПараметрыПечати.Удалить("ОтображатьСкидки");
ПараметрыПечати.Вставить("ОтображатьФаксимиле", Истина);
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаказКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СчетНаОплатуСФаксимилеБезСкидок");
ПараметрыПечати.Вставить("ОтображатьСкидки", Ложь);
ПараметрыПечати.Вставить("ОтображатьФаксимиле", Истина);
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаказКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"ProformaInvoiceEn");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.ЗаказКлиента", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуProformaInvoice(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
РегистрыСведений.НастройкиПечатиОбъектов.СформироватьКомплектВнешнихПечатныхФорм(
"Документ.ЗаказКлиента",
МассивОбъектов,
ПараметрыПечати,
КоллекцияПечатныхФорм,
ОбъектыПечати);
ЗаказКлиентаЛокализация.СформироватьКомплектПечатныхФорм(МассивОбъектов,
ПараметрыПечати,
КоллекцияПечатныхФорм,
ОбъектыПечати,
КомплектПечатныхФорм);
КонецФункции
Функция КомплектПечатныхФорм() Экспорт
КомплектПечатныхФорм = РегистрыСведений.НастройкиПечатиОбъектов.ПодготовитьКомплектПечатныхФорм();
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "ЗаказКлиента", НСтр("ru = 'Заказ клиента (выводить скидки)'"), 1);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "ЗаказКлиентаБезСкидок", НСтр("ru = 'Заказ клиента (не выводить скидки)'"), 0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплату", НСтр("ru = 'Счет на оплату (выводить скидки)'"), 1);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплатуБезСкидок", НСтр("ru = 'Счет на оплату (не выводить скидки)'"), 0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплатуСФаксимиле", НСтр("ru = 'Счет на оплату с факсимиле (выводить скидки)'"), 0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплатуСФаксимилеБезСкидок", НСтр("ru = 'Счет на оплату с факсимиле (не выводить скидки)'"), 0);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("НеВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "ЗаказКлиента", НСтр("ru = 'Заказ клиента'"), 1);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплату", НСтр("ru = 'Счет на оплату'"), 1);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплатуСФаксимиле", НСтр("ru = 'Счет на оплату с факсимиле'"), 0);
КонецЕсли;
Если Константы.ИспользоватьМеждународныеПечатныеФормы.Получить() Тогда
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "ProformaInvoiceEn", НСтр("ru = 'Proforma invoice'"), 1);
КонецЕсли;
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм,
"ЗаданиеНаОтборРазмещениеТовара",
НСтр("ru = 'Задание на отбор товаров'"),0);
ЗаказКлиентаЛокализация.КомплектПечатныхФорм(КомплектПечатныхФорм);
Возврат КомплектПечатныхФорм;
КонецФункции
Процедура ЗаполнитьСтруктуруПолучателейПечатныхФорм(СтруктураДанныхОбъектаПечати) Экспорт
СтруктураДанныхОбъектаПечати.ОсновнойПолучатель = "Партнер";
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Партнер");
Если ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов") Тогда
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Контрагент");
КонецЕсли;
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("КонтактноеЛицо");
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Грузоотправитель");
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Грузополучатель");
КонецПроцедуры
Функция ДобавлятьКомандыПечатиКомплектаДокументов() Экспорт
Возврат Не ПраваПользователяПовтИсп.ЭтоПартнер();
КонецФункции
#КонецОбласти
#Область ШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
КонецПроцедуры
#КонецОбласти
#Область Прочее
Функция ОбособленноеОбеспечение(ЗаказКлиента) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос(
"
|ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА
|ИЗ
| Документ.ЗаказКлиента.Товары КАК Т
|ГДЕ
| Т.Ссылка = &ЗаказКлиента
| И Т.Обособленно
|");
Запрос.УстановитьПараметр("ЗаказКлиента", ЗаказКлиента);
Возврат НЕ Запрос.Выполнить().Пустой();
КонецФункции
Функция ЕстьОбособленныеЗаказыПоСделке(Сделка) Экспорт
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ИСТИНА
|ИЗ
| Документ.ЗаказКлиента.Товары КАК Товары
|ГДЕ
| Товары.Ссылка.Сделка = &Сделка
| И ИСТИНА В(
| ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА КАК ЕстьЗаписи
| ИЗ
| РегистрСведений.РаспределениеЗапасов КАК РаспределениеЗапасов
| ГДЕ
| РаспределениеЗапасов.ЗаказНаОтгрузку = Товары.Ссылка
| И РаспределениеЗапасов.Состояние = ЗНАЧЕНИЕ(Перечисление.РаспределениеЗапасовСостояния.Обеспечить))");
Запрос.УстановитьПараметр("Сделка", Сделка);
Возврат НЕ Запрос.Выполнить().Пустой();
КонецФункции
#КонецОбласти
#Область ТекущиеДела
Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт
ИмяФормы = "Документ.ЗаказКлиента.Форма.ФормаСпискаДокументов";
ОбщиеПараметрыЗапросов = ТекущиеДелаСлужебный.ОбщиеПараметрыЗапросов();
Доступность =
(ОбщиеПараметрыЗапросов.ЭтоПолноправныйПользователь
Или ПравоДоступа("Просмотр", Метаданные.Документы.ЗаказКлиента))
И ПравоДоступа("Добавление", Метаданные.Документы.ЗаказКлиента)
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.РасчетыСКлиентами)
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат)
И ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыКлиентов")
И ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
Если НЕ Доступность Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДокументЗаказКлиента.Ссылка) КАК ЗаказыКлиентовВсегоВРаботе,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1)
| И &ДатаАктуальности >= СостоянияЗаказовКлиентов.ДатаСобытия ТОГДА
| СостоянияЗаказовКлиентов.Заказ
| КОНЕЦ) КАК ЗаказыКлиентовНаСегодня,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1)
| И &ДатаАктуальности > СостоянияЗаказовКлиентов.ДатаСобытия
| И СостоянияЗаказовКлиентов.Состояние В (
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяАвансДоОбеспечения),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяПредоплатаДоОтгрузки),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяОплатаПослеОтгрузки)) ТОГДА
| СостоянияЗаказовКлиентов.Заказ
| КОНЕЦ) КАК ЗаказыКлиентовПросроченаОплата,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВЫБОР
| КОГДА СостоянияЗаказовКлиентов.ДатаСобытия <> ДАТАВРЕМЯ(1, 1, 1)
| И &ДатаАктуальности > СостоянияЗаказовКлиентов.ДатаСобытия
| И СостоянияЗаказовКлиентов.Состояние В (
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяСогласование),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКОбеспечению),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ВПроцессеОтгрузки),
| ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ОжидаетсяПереходПраваСобственности)) ТОГДА
| СостоянияЗаказовКлиентов.Заказ
| КОНЕЦ) КАК ЗаказыКлиентовПросроченоИсполнение
|ИЗ
| Документ.ЗаказКлиента КАК ДокументЗаказКлиента
| {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
| ПО (СостоянияЗаказовКлиентов.Заказ = ДокументЗаказКлиента.Ссылка)}
|ГДЕ
| ((НЕ (СостоянияЗаказовКлиентов.Заказ ЕСТЬ NULL)
| И СостоянияЗаказовКлиентов.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт))
| ИЛИ НЕ ДокументЗаказКлиента.Проведен)
| И ДокументЗаказКлиента.Менеджер = &Пользователь
| И НЕ ДокументЗаказКлиента.ПометкаУдаления
| И НЕ ДокументЗаказКлиента.ЭтоЗаказКакСчет";
Результат = ТекущиеДелаСлужебный.ЧисловыеПоказателиТекущихДел(Запрос, ОбщиеПараметрыЗапросов);
ДелоРодитель = ТекущиеДела.Добавить();
ДелоРодитель.Идентификатор = "ЗаказыКлиентов";
ДелоРодитель.Представление = НСтр("ru = 'Заказы клиентов'");
ДелоРодитель.Владелец = Метаданные.Подсистемы.Продажи;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", "ВсеОткрытые");
ПараметрыОтбора.Вставить("Актуальность", "");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Приоритет", "");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ЗаказыКлиентовВсегоВРаботе";
Дело.ЕстьДела = Результат.ЗаказыКлиентовВсегоВРаботе > 0;
Дело.Представление = НСтр("ru = 'Всего заказов в работе'");
Дело.Количество = Результат.ЗаказыКлиентовВсегоВРаботе;
Дело.Важное = Ложь;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ЗаказыКлиентов";
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", "ВсеОткрытые");
ПараметрыОтбора.Вставить("Актуальность", "Сегодня");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Приоритет", "");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ЗаказыКлиентовНаСегодня";
Дело.ЕстьДела = Результат.ЗаказыКлиентовНаСегодня > 0;
Дело.Представление = НСтр("ru = 'На сегодня'");
Дело.Количество = Результат.ЗаказыКлиентовНаСегодня;
Дело.Важное = Ложь;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ЗаказыКлиентов";
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", "ВсеОжидающиеОплаты");
ПараметрыОтбора.Вставить("Актуальность", "Просрочен");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Приоритет", "");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ЗаказыКлиентовПросроченаОплата";
Дело.ЕстьДела = Результат.ЗаказыКлиентовПросроченаОплата > 0;
Дело.Представление = НСтр("ru = 'Просрочена оплата по заказам'");
Дело.Количество = Результат.ЗаказыКлиентовПросроченаОплата;
Дело.Важное = Истина;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ЗаказыКлиентов";
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Состояние", "ВсеОжидающиеИсполнения");
ПараметрыОтбора.Вставить("Актуальность", "Просрочен");
ПараметрыОтбора.Вставить("ДатаСобытия", ОбщиеПараметрыЗапросов.ПустаяДата);
ПараметрыОтбора.Вставить("Менеджер", ОбщиеПараметрыЗапросов.Пользователь);
ПараметрыОтбора.Вставить("Приоритет", "");
Дело = ТекущиеДела.Добавить();
Дело.Идентификатор = "ЗаказыКлиентовПросроченоИсполнение";
Дело.ЕстьДела = Результат.ЗаказыКлиентовПросроченоИсполнение > 0;
Дело.Представление = НСтр("ru = 'Просрочено исполнение заказов'");
Дело.Количество = Результат.ЗаказыКлиентовПросроченоИсполнение;
Дело.Важное = Истина;
Дело.Форма = ИмяФормы;
Дело.ПараметрыФормы = Новый Структура("СтруктураБыстрогоОтбора", ПараметрыОтбора);
Дело.Владелец = "ЗаказыКлиентов";
Если Результат.ЗаказыКлиентовВсегоВРаботе > 0 Тогда
ДелоРодитель.ЕстьДела = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ФормированиеГиперссылкиВЖурналеДокументыПродажи
Функция ТекстЗапросаЗаказыВРаботе()
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| СостоянияЗаказов.Заказ,
| СостоянияЗаказов.Состояние
|ИЗ
| РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказов
|ГДЕ
| СостоянияЗаказов.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт)";
Возврат ТекстЗапроса
КонецФункции
Функция СформироватьГиперссылкуСмТакжеВРаботе(Параметры) Экспорт
Если Не (ПравоДоступа("Чтение", Метаданные.РегистрыСведений.СостоянияЗаказовКлиентов)
И ПравоДоступа("Изменение", Метаданные.Документы.ЗаказКлиента)
И ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыКлиентов")
И ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента")) Тогда
Возврат Неопределено;
КонецЕсли;
ТекстГиперссылки = НСтр("ru = 'Заказы клиентов'");
Запрос = Новый Запрос(ТекстЗапросаЗаказыВРаботе());
Если Запрос.Выполнить().Пустой() Тогда
Возврат Новый ФорматированнаяСтрока(ТекстГиперссылки,,ЦветаСтиля.НезаполненноеПолеТаблицы,,
ИмяФормыРабочееМесто());
Иначе
Возврат Новый ФорматированнаяСтрока(ТекстГиперссылки,,,,
ИмяФормыРабочееМесто());
КонецЕсли;
КонецФункции
Функция ИмяФормыРабочееМесто() Экспорт
Возврат "Документ.ЗаказКлиента.Форма.ФормаСпискаДокументов";
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Партнер КАК Партнер,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| &Склад КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Менеджер КАК Ответственный,
| &Автор КАК Автор,
| &Комментарий КАК Комментарий,
| &Валюта КАК Валюта,
| &СуммаДокумента КАК Сумма,
| &Статус КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| &ИнформацияПоДоговору КАК Дополнительно,
| &ДатаПоДаннымКлиента КАК ДатаПервичногоДокумента,
| ЛОЖЬ КАК СторноИсправление,
| НЕОПРЕДЕЛЕНО КАК СторнируемыйДокумент,
| НЕОПРЕДЕЛЕНО КАК ИсправляемыйДокумент,
| &НомерПоДаннымКлиента КАК НомерПервичногоДокумента,
| &Приоритет КАК Приоритет";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаБонусныеБаллы(Запрос, ТекстыЗапроса, Регистры, ДокументОбъект)
ИмяРегистра = "БонусныеБаллы";
Если НЕ БонусныеБаллыСервер.ТребуетсяДобавитьДвиженияПоРегиструБонусныеБаллы(ДокументОбъект.Ссылка) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если ДокументОбъект.ЭтоЗаказКакСчет Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтБонусныеБаллы", ТекстыЗапроса) Тогда
ТекстЗапросаВтБонусныеБаллы(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| БонусныеБаллы.Период КАК Период,
| БонусныеБаллы.ДатаКОбработке КАК ДатаКОбработке,
| БонусныеБаллы.ВидДвижения КАК ВидДвижения,
| БонусныеБаллы.БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| БонусныеБаллы.Партнер КАК Партнер,
| СУММА(БонусныеБаллы.Начислено) КАК Начислено,
| СУММА(БонусныеБаллы.КСписанию) КАК КСписанию,
| СУММА(БонусныеБаллы.Зарезервировано) КАК Зарезервировано
|ИЗ
| ВтБонусныеБаллы КАК БонусныеБаллы
|
|СГРУППИРОВАТЬ ПО
| БонусныеБаллы.БонуснаяПрограммаЛояльности,
| БонусныеБаллы.Партнер,
| БонусныеБаллы.Период,
| БонусныеБаллы.ДатаКОбработке,
| БонусныеБаллы.ВидДвижения
|ИМЕЮЩИЕ
| СУММА(БонусныеБаллы.Начислено) <> 0 ИЛИ
| СУММА(БонусныеБаллы.КСписанию) <> 0 ИЛИ
| СУММА(БонусныеБаллы.Зарезервировано) <> 0
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтБонусныеБаллы(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтБонусныеБаллы";
ТекстЗапроса =
"ВЫБРАТЬ
| НачалоПериода(&Период, ДЕНЬ) КАК Период,
| ВЫБОР
| КОГДА ТабличнаяЧасть.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| ТОГДА &ТекущаяДата
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаКОбработке,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| &Партнер КАК Партнер,
| ТабличнаяЧасть.СуммаБонусныхБалловКСписанию КАК Начислено,
| 0 КАК КСписанию,
| ВЫБОР
| КОГДА ТабличнаяЧасть.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| ТОГДА 0
| ИНАЧЕ ТабличнаяЧасть.СуммаБонусныхБалловКСписанию
| КОНЕЦ КАК Зарезервировано
|ПОМЕСТИТЬ ВтБонусныеБаллы
|ИЗ
| ДанныеДокументаТаблицаТовары КАК ТабличнаяЧасть
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаШапка КАК ДанныеДокументаШапка
| ПО ТабличнаяЧасть.Ссылка = ДанныеДокументаШапка.Ссылка
|ГДЕ
| ТабличнаяЧасть.СуммаБонусныхБалловКСписанию <> 0
| И НЕ ТабличнаяЧасть.Отменено
| И НЕ ДанныеДокументаШапка.ЭтоЗаказКакСчет
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
#КонецОбласти
#Область Назначения
Функция ШаблонНазначения(Объект) Экспорт
ШаблонНазначения = Справочники.Назначения.ШаблонНового();
Если НаправленияДеятельностиСервер.ЭтоНаправлениеДеятельностиСОбособлениемТоваровИРабот(Объект.НаправлениеДеятельности) Тогда
ШаблонНазначения.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
ШаблонНазначения.ТипНазначения = Перечисления.ТипыНазначений.ПоставкаПодПринципала;
ШаблонНазначения.Договор = Объект.Договор;
ШаблонНазначения.Партнер = Объект.Партнер;
КонецЕсли;
ВариантОбособления = Константы.ВариантОбособленияТоваровВПродажах.Получить();
Если ВариантОбособления <> Перечисления.ВариантыОбособленияТоваровВПродажах.НаправлениеДеятельности
Или Не ЗначениеЗаполнено(ШаблонНазначения.НаправлениеДеятельности) Тогда
ШаблонНазначения.Заказ = Объект.Ссылка;
КонецЕсли;
Возврат ШаблонНазначения;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли