#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если Параметры.Свойство("Партнер") Тогда
Партнер = Параметры.Партнер;
КонецЕсли;
Если Параметры.Свойство("Соглашение") Тогда
Соглашение = Параметры.Соглашение;
КонецЕсли;
Если Параметры.Свойство("ДанныеКорзины") Тогда
КорзинаПокупателя.Загрузить(Параметры.ДанныеКорзины.Выгрузить(,"Номенклатура,Характеристика,Упаковка,КоличествоУпаковок"));
КонецЕсли;
Если Параметры.Свойство("Валюта") Тогда
Валюта = Параметры.Валюта;
КонецЕсли;
Если Параметры.Свойство(ЦенаВключаетНДС) Тогда
ЦенаВключаетНДС = Параметры.ЦенаВключаетНДС;
КонецЕсли;
Если Параметры.Свойство(НалогообложениеНДС) Тогда
НалогообложениеНДС = Параметры.НалогообложениеНДС;
КонецЕсли;
Если Не ЗначениеЗаполнено(Валюта) Тогда
Валюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Соглашение, "Организация"));
КонецЕсли;
СформироватьНаСервере();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Сформировать(Команда)
СформироватьНаСервере();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СформироватьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДокументСоглашениеСКлиентом.Ссылка,
| ДокументСоглашениеСКлиентом.Валюта,
| ДокументСоглашениеСКлиентом.Наименование,
| ДокументСоглашениеСКлиентом.Склад,
| ДокументСоглашениеСКлиентом.ЦенаВключаетНДС,
| ДокументСоглашениеСКлиентом.Контрагент,
| ЕСТЬNULL(ГрафикиОплаты.Наименование, """") КАК ГрафикОплатыНаименование,
| ГрафикиОплаты.Ссылка КАК ГрафикОплаты,
| ЕСТЬNULL(Склады.Наименование, &СтрокаБезОграничений) КАК СкладНаименование,
| ЕСТЬNULL(Контрагенты.Наименование, &СтрокаБезОграничений) КАК КонтрагентНаименование,
| ДокументСоглашениеСКлиентом.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| Валюты.Наименование КАК ВалютаНаименование
|ПОМЕСТИТЬ ДоступныеСоглашенияПартнера
|ИЗ
| Справочник.СоглашенияСКлиентами КАК ДокументСоглашениеСКлиентом
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГрафикиОплаты КАК ГрафикиОплаты
| ПО ДокументСоглашениеСКлиентом.ГрафикОплаты = ГрафикиОплаты.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
| ПО ДокументСоглашениеСКлиентом.Склад = Склады.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
| ПО ДокументСоглашениеСКлиентом.Контрагент = Контрагенты.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты
| ПО ДокументСоглашениеСКлиентом.Валюта = Валюты.Ссылка
|ГДЕ
| ДокументСоглашениеСКлиентом.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
| И (ДокументСоглашениеСКлиентом.Партнер = &Партнер
| ИЛИ ДокументСоглашениеСКлиентом.СегментПартнеров В
| (ВЫБРАТЬ
| ПартнерыСегмента.Сегмент
| ИЗ
| РегистрСведений.ПартнерыСегмента КАК ПартнерыСегмента
| ГДЕ
| ПартнерыСегмента.Партнер = &Партнер) ИЛИ (ДокументСоглашениеСКлиентом.Типовое
| И ДокументСоглашениеСКлиентом.СегментПартнеров = ЗНАЧЕНИЕ(Справочник.СегментыПартнеров.ПустаяСсылка)))
| И (ДокументСоглашениеСКлиентом.ДатаНачалаДействия = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ НАЧАЛОПЕРИОДА(&ТекущаяДата, ДЕНЬ) >= ДокументСоглашениеСКлиентом.ДатаНачалаДействия)
| И (ДокументСоглашениеСКлиентом.ДатаОкончанияДействия = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ НАЧАЛОПЕРИОДА(&ТекущаяДата, ДЕНЬ) <= ДокументСоглашениеСКлиентом.ДатаОкончанияДействия)
| И НЕ ДокументСоглашениеСКлиентом.ПометкаУдаления И ДокументСоглашениеСКлиентом.ДоступноВнешнимПользователям
| И ВЫБОР
| КОГДА &ТолькоТиповые = ИСТИНА
| И &ТолькоИндивидуальные = ЛОЖЬ
| И ДокументСоглашениеСКлиентом.Типовое
| ТОГДА ИСТИНА
| КОГДА &ТолькоИндивидуальные = ИСТИНА
| И НЕ &ТолькоТиповые = ИСТИНА
| И НЕ ДокументСоглашениеСКлиентом.Типовое
| ТОГДА ИСТИНА
| КОГДА &ТолькоТиповые = ЛОЖЬ
| И &ТолькоИндивидуальные = ЛОЖЬ
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
|;
|
|
|ВЫБРАТЬ
| ВЫРАЗИТЬ (КорзинаПокупателя.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура,
| КорзинаПокупателя.Характеристика,
| КорзинаПокупателя.Упаковка,
| КорзинаПокупателя.ДатаПомещения,
| КорзинаПокупателя.КоличествоУпаковок
|ПОМЕСТИТЬ КорзинаПокупателя
|ИЗ
| &КорзинаПокупателя КАК КорзинаПокупателя
|;
|
|
|ВЫБРАТЬ
| КорзинаПокупателя.Номенклатура,
| КорзинаПокупателя.Характеристика,
| КорзинаПокупателя.Упаковка,
| КорзинаПокупателя.КоличествоУпаковок,
| КорзинаПокупателя.ДатаПомещения,
| СпрНоменклатура.ЦеноваяГруппа,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки1, 0) КАК КоэффициентУпаковки
|ПОМЕСТИТЬ ДанныеКорзины
|ИЗ
| КорзинаПокупателя КАК КорзинаПокупателя
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО КорзинаПокупателя.Номенклатура = СпрНоменклатура.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
| ПО КорзинаПокупателя.Упаковка = УпаковкиНоменклатуры.Ссылка
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СоглашениеСКлиентом.Ссылка КАК Соглашение,
| СоглашениеСКлиентомТовары.Номенклатура,
| СоглашениеСКлиентомТовары.Характеристика,
| СоглашениеСКлиентомТовары.Упаковка,
| СоглашениеСКлиентомТовары.Цена,
| ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка) КАК ВидЦены,
| СоглашениеСКлиентом.Валюта КАК Валюта,
| СоглашениеСКлиентом.ЦенаВключаетНДС
|ПОМЕСТИТЬ ЦенаПоТоваруСоглашение
|ИЗ
| ДанныеКорзины КАК ДанныеКорзины
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СоглашенияСКлиентами.Товары КАК СоглашениеСКлиентомТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СоглашенияСКлиентами КАК СоглашениеСКлиентом
| ПО СоглашениеСКлиентомТовары.Ссылка = СоглашениеСКлиентом.Ссылка
| ПО ДанныеКорзины.Номенклатура = СоглашениеСКлиентомТовары.Номенклатура
| И ДанныеКорзины.Характеристика = СоглашениеСКлиентомТовары.Характеристика
|ГДЕ
| СоглашениеСКлиентомТовары.Ссылка В
| (ВЫБРАТЬ
| ДоступныеСоглашенияПартнера.Ссылка
| ИЗ
| ДоступныеСоглашенияПартнера КАК ДоступныеСоглашенияПартнера)
| И СоглашениеСКлиентомТовары.Цена > 0
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДанныеКорзины.Номенклатура,
| ДанныеКорзины.Характеристика,
| СоглашениеСКлиентомТовары.ВидЦены,
| СоглашениеСКлиентом.Ссылка
|ПОМЕСТИТЬ ВидЦеныУсловияСоглашения
|ИЗ
| ДанныеКорзины КАК ДанныеКорзины
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СоглашенияСКлиентами.Товары КАК СоглашениеСКлиентомТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СоглашенияСКлиентами КАК СоглашениеСКлиентом
| ПО СоглашениеСКлиентомТовары.Ссылка = СоглашениеСКлиентом.Ссылка
| ПО ДанныеКорзины.Номенклатура = СоглашениеСКлиентомТовары.Номенклатура
| И ДанныеКорзины.Характеристика = СоглашениеСКлиентомТовары.Характеристика
|ГДЕ
| СоглашениеСКлиентомТовары.Цена = 0
| И СоглашениеСКлиентомТовары.Ссылка В
| (ВЫБРАТЬ
| ДоступныеСоглашенияПартнера.Ссылка
| ИЗ
| ДоступныеСоглашенияПартнера КАК ДоступныеСоглашенияПартнера)
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СоглашениеСКлиентомЦеновыеГруппы.Ссылка КАК ДокументСоглашение,
| ДанныеКорзины.Номенклатура,
| ДанныеКорзины.Характеристика,
| СоглашениеСКлиентомЦеновыеГруппы.ВидЦен
|ПОМЕСТИТЬ ДанныеПоЦеновымГруппам
|ИЗ
| ДанныеКорзины КАК ДанныеКорзины
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СоглашенияСКлиентами.ЦеновыеГруппы КАК СоглашениеСКлиентомЦеновыеГруппы
| ПО ДанныеКорзины.ЦеноваяГруппа = СоглашениеСКлиентомЦеновыеГруппы.ЦеноваяГруппа
|ГДЕ
| СоглашениеСКлиентомЦеновыеГруппы.Ссылка В
| (ВЫБРАТЬ
| ДоступныеСоглашенияПартнера.Ссылка
| ИЗ
| ДоступныеСоглашенияПартнера КАК ДоступныеСоглашенияПартнера)
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДанныеПоЦеновымГруппам.ДокументСоглашение,
| ДанныеПоЦеновымГруппам.Номенклатура,
| ДанныеПоЦеновымГруппам.Характеристика,
| ДанныеПоЦеновымГруппам.ВидЦен
|ПОМЕСТИТЬ ВидЦеныПоЦеновойГруппе
|ИЗ
| ДанныеПоЦеновымГруппам КАК ДанныеПоЦеновымГруппам
| ЛЕВОЕ СОЕДИНЕНИЕ ЦенаПоТоваруСоглашение КАК ЦенаПоТовару
| ПО ДанныеПоЦеновымГруппам.ДокументСоглашение = ЦенаПоТовару.Соглашение
| И ДанныеПоЦеновымГруппам.Номенклатура = ЦенаПоТовару.Номенклатура
| И ДанныеПоЦеновымГруппам.Характеристика = ЦенаПоТовару.Характеристика
| ЛЕВОЕ СОЕДИНЕНИЕ ВидЦеныУсловияСоглашения КАК ВидЦеныУсловияСоглашения
| ПО ДанныеПоЦеновымГруппам.Номенклатура = ВидЦеныУсловияСоглашения.Номенклатура
| И ДанныеПоЦеновымГруппам.Характеристика = ВидЦеныУсловияСоглашения.Характеристика
| И ДанныеПоЦеновымГруппам.ДокументСоглашение = ВидЦеныУсловияСоглашения.Ссылка
|ГДЕ
| ДанныеПоЦеновымГруппам.ДокументСоглашение В
| (ВЫБРАТЬ
| ДоступныеСоглашенияПартнера.Ссылка
| ИЗ
| ДоступныеСоглашенияПартнера КАК ДоступныеСоглашенияПартнера)
| И ВидЦеныУсловияСоглашения.Номенклатура ЕСТЬ NULL
| И ЦенаПоТовару.Номенклатура ЕСТЬ NULL
|;
|
|
|ВЫБРАТЬ
| КурсыВалютСрезПоследних.Валюта,
| КурсыВалютСрезПоследних.КурсЧислитель,
| КурсыВалютСрезПоследних.КурсЗнаменатель
|ПОМЕСТИТЬ КурсыВалют
|ИЗ
| РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(, БазоваяВалюта = &БазоваяВалюта) КАК КурсыВалютСрезПоследних
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ
| ДанныеКорзины.Номенклатура,
| ДанныеКорзины.Характеристика,
| СоглашениеСКлиентом.Ссылка,
| СоглашениеСКлиентом.ВидЦен
|ПОМЕСТИТЬ ДанныеВидЦеныСоглашение
|ИЗ
| ДанныеКорзины КАК ДанныеКорзины,
| Справочник.СоглашенияСКлиентами КАК СоглашениеСКлиентом
|ГДЕ
| СоглашениеСКлиентом.Ссылка В
| (ВЫБРАТЬ
| ДоступныеСоглашенияПартнера.Ссылка
| ИЗ
| ДоступныеСоглашенияПартнера КАК ДоступныеСоглашенияПартнера)
|;
|
|
|ВЫБРАТЬ
| ДанныеВидЦеныСоглашение.Номенклатура,
| ДанныеВидЦеныСоглашение.Характеристика,
| ДанныеВидЦеныСоглашение.Ссылка,
| ДанныеВидЦеныСоглашение.ВидЦен
|ПОМЕСТИТЬ ВидЦеныПоСоглашению
|ИЗ
| ДанныеВидЦеныСоглашение КАК ДанныеВидЦеныСоглашение
| ЛЕВОЕ СОЕДИНЕНИЕ ВидЦеныПоЦеновойГруппе КАК ВидЦеныПоЦеновойГруппе
| ПО ДанныеВидЦеныСоглашение.Номенклатура = ВидЦеныПоЦеновойГруппе.Номенклатура
| И ДанныеВидЦеныСоглашение.Характеристика = ВидЦеныПоЦеновойГруппе.Характеристика
| И ДанныеВидЦеныСоглашение.Ссылка = ВидЦеныПоЦеновойГруппе.ДокументСоглашение
| ЛЕВОЕ СОЕДИНЕНИЕ ЦенаПоТоваруСоглашение КАК ЦенаПоТовару
| ПО ДанныеВидЦеныСоглашение.Номенклатура = ЦенаПоТовару.Номенклатура
| И ДанныеВидЦеныСоглашение.Характеристика = ЦенаПоТовару.Характеристика
| И ДанныеВидЦеныСоглашение.Ссылка = ЦенаПоТовару.Соглашение
| ЛЕВОЕ СОЕДИНЕНИЕ ВидЦеныУсловияСоглашения КАК ВидЦеныУсловияСоглашения
| ПО ДанныеВидЦеныСоглашение.Номенклатура = ВидЦеныУсловияСоглашения.Номенклатура
| И ДанныеВидЦеныСоглашение.Характеристика = ВидЦеныУсловияСоглашения.Характеристика
| И ДанныеВидЦеныСоглашение.Ссылка = ВидЦеныУсловияСоглашения.Ссылка
|ГДЕ
| ЦенаПоТовару.Номенклатура ЕСТЬ NULL
| И ВидЦеныПоЦеновойГруппе.Номенклатура ЕСТЬ NULL
| И ВидЦеныУсловияСоглашения.Номенклатура ЕСТЬ NULL
|;
|
|
|ВЫБРАТЬ
| ВидЦеныУсловияСоглашения.Ссылка КАК Соглашение,
| ВидЦеныУсловияСоглашения.Номенклатура,
| ВидЦеныУсловияСоглашения.Характеристика,
| ВидЦеныУсловияСоглашения.ВидЦены КАК ВидЦены
|ПОМЕСТИТЬ ТоварыПоВидамЦен
|ИЗ
| ВидЦеныУсловияСоглашения КАК ВидЦеныУсловияСоглашения
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВидЦеныПоЦеновойГруппе.ДокументСоглашение,
| ВидЦеныПоЦеновойГруппе.Номенклатура,
| ВидЦеныПоЦеновойГруппе.Характеристика,
| ВидЦеныПоЦеновойГруппе.ВидЦен
|ИЗ
| ВидЦеныПоЦеновойГруппе КАК ВидЦеныПоЦеновойГруппе
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВидЦеныПоСоглашению.Ссылка,
| ВидЦеныПоСоглашению.Номенклатура,
| ВидЦеныПоСоглашению.Характеристика,
| ВидЦеныПоСоглашению.ВидЦен
|ИЗ
| ВидЦеныПоСоглашению КАК ВидЦеныПоСоглашению
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТоварыПоВидамЦен.Соглашение,
| ТоварыПоВидамЦен.Номенклатура,
| ТоварыПоВидамЦен.Характеристика,
| ТоварыПоВидамЦен.ВидЦены,
| МАКСИМУМ(ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)) КАК Цена,
| МАКСИМУМ(ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка))) КАК Валюта,
| МАКСИМУМ(ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Упаковка, ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка))) КАК Упаковка
|ПОМЕСТИТЬ ТоварыЦеныВВалютеЦен
|ИЗ
| ТоварыПоВидамЦен КАК ТоварыПоВидамЦен
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДоступныеСоглашенияПартнера КАК ДоступныеСоглашенияПартнера
| ПО ТоварыПоВидамЦен.Соглашение = ДоступныеСоглашенияПартнера.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| КОНЕЦПЕРИОДА(&ТекущаяДата, ДЕНЬ),
| Номенклатура В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыПоВидамЦен.Номенклатура
| ИЗ
| ТоварыПоВидамЦен КАК ТоварыПоВидамЦен)
| И Характеристика В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыПоВидамЦен.Характеристика
| ИЗ
| ТоварыПоВидамЦен КАК ТоварыПоВидамЦен)
| И ВидЦены В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыПоВидамЦен.ВидЦены
| ИЗ
| ТоварыПоВидамЦен КАК ТоварыПоВидамЦен)) КАК ЦеныНоменклатурыСрезПоследних
| ПО ТоварыПоВидамЦен.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
| И ТоварыПоВидамЦен.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
| И ТоварыПоВидамЦен.ВидЦены = ЦеныНоменклатурыСрезПоследних.ВидЦены
|
|СГРУППИРОВАТЬ ПО
| ТоварыПоВидамЦен.Соглашение,
| ТоварыПоВидамЦен.Номенклатура,
| ТоварыПоВидамЦен.Характеристика,
| ТоварыПоВидамЦен.ВидЦены
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЦенаПоТоваруСоглашение.Соглашение,
| ЦенаПоТоваруСоглашение.Номенклатура,
| ЦенаПоТоваруСоглашение.Характеристика,
| ЦенаПоТоваруСоглашение.ВидЦены,
| ЦенаПоТоваруСоглашение.Цена,
| ЦенаПоТоваруСоглашение.Валюта,
| ЦенаПоТоваруСоглашение.Упаковка
|ИЗ
| ЦенаПоТоваруСоглашение КАК ЦенаПоТоваруСоглашение
|;
|
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ТоварыЦеныВВалютеЦен.Соглашение КАК Соглашение,
| ТоварыЦеныВВалютеЦен.Номенклатура КАК Номенклатура,
| ТоварыЦеныВВалютеЦен.Характеристика,
| ТоварыЦеныВВалютеЦен.Упаковка,
| ВЫБОР
| КОГДА &Валюта = ТоварыЦеныВВалютеЦен.Валюта
| ТОГДА ТоварыЦеныВВалютеЦен.Цена
| КОГДА ТоварыЦеныВВалютеЦен.Цена = 0
| ТОГДА 0
| ИНАЧЕ ТоварыЦеныВВалютеЦен.Цена * ВЫБОР
| КОГДА ЕСТЬNULL(КурсыВалют.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалют.КурсЧислитель, 0) > 0
| И ЕСТЬNULL(КурсыВалютВидЦены.КурсЗнаменатель, 0) > 0
| И ЕСТЬNULL(КурсыВалютВидЦены.КурсЧислитель, 0) > 0
| ТОГДА КурсыВалютВидЦены.КурсЧислитель * КурсыВалют.КурсЗнаменатель / (КурсыВалют.КурсЧислитель * КурсыВалютВидЦены.КурсЗнаменатель)
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ КАК Цена,
| ТоварыЦеныВВалютеЦен.ВидЦены,
| ЕСТЬNULL(&ТекстЗапросаКоэффициентУпаковки2, 0) КАК Коэффициент
|ПОМЕСТИТЬ ВсеЦеныВВалютеОтчета
|ИЗ
| ТоварыЦеныВВалютеЦен КАК ТоварыЦеныВВалютеЦен
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалют
| ПО (&Валюта = КурсыВалют.Валюта)
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалютВидЦены
| ПО ТоварыЦеныВВалютеЦен.Валюта = КурсыВалютВидЦены.Валюта
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.УпаковкиЕдиницыИзмерения КАК УпаковкиНоменклатуры
| ПО ТоварыЦеныВВалютеЦен.Упаковка = УпаковкиНоменклатуры.Ссылка
|;
|
|
|ВЫБРАТЬ
| ВсеЦеныВВалютеОтчета.Соглашение,
| ВсеЦеныВВалютеОтчета.Номенклатура,
| ВсеЦеныВВалютеОтчета.Характеристика,
| ВсеЦеныВВалютеОтчета.ВидЦены,
| ВЫБОР
| КОГДА ДанныеКорзины.КоэффициентУпаковки = ВсеЦеныВВалютеОтчета.Коэффициент
| ТОГДА ВсеЦеныВВалютеОтчета.Цена
| КОГДА ДанныеКорзины.КоэффициентУпаковки = 0
| И ВсеЦеныВВалютеОтчета.Коэффициент <> 0
| ТОГДА ВсеЦеныВВалютеОтчета.Цена / ВсеЦеныВВалютеОтчета.Коэффициент
| КОГДА ДанныеКорзины.КоэффициентУпаковки <> 0
| И ВсеЦеныВВалютеОтчета.Коэффициент = 0
| ТОГДА ВсеЦеныВВалютеОтчета.Цена * ДанныеКорзины.КоэффициентУпаковки
| ИНАЧЕ ВсеЦеныВВалютеОтчета.Цена / ВсеЦеныВВалютеОтчета.Коэффициент * ДанныеКорзины.КоэффициентУпаковки
| КОНЕЦ КАК Цена,
| ДанныеКорзины.Упаковка
|ПОМЕСТИТЬ ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам
|ИЗ
| ВсеЦеныВВалютеОтчета КАК ВсеЦеныВВалютеОтчета
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеКорзины КАК ДанныеКорзины
| ПО (ДанныеКорзины.Характеристика = ВсеЦеныВВалютеОтчета.Характеристика)
| И (ДанныеКорзины.Номенклатура = ВсеЦеныВВалютеОтчета.Номенклатура)
|;
|
|
|ВЫБРАТЬ
| ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Соглашение КАК Соглашение,
| ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Номенклатура КАК Номенклатура,
| ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Характеристика КАК Характеристика,
| ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Упаковка КАК Упаковка,
| ВЫБОР
| КОГДА ДоступныеСоглашенияПартнера.ЦенаВключаетНДС = &ЦенаВключаетНДС
| ТОГДА ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Цена
| ИНАЧЕ ВЫБОР
| КОГДА ДоступныеСоглашенияПартнера.ЦенаВключаетНДС
| И (НЕ &ЦенаВключаетНДС)
| ТОГДА ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Цена * (1
| / (1 + (ЕСТЬNULL(СтавкиНДСНоменклатуры.СтавкаНДС, ЕСТЬNULL(ОсновныеСтавкиНДС.СтавкаНДС, ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка)))).Ставка))
| ИНАЧЕ ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Цена
| * (1 + (ЕСТЬNULL(СтавкиНДСНоменклатуры.СтавкаНДС, ЕСТЬNULL(ОсновныеСтавкиНДС.СтавкаНДС, ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка)))).Ставка)
| КОНЕЦ
| КОНЕЦ КАК Цена,
| ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.ВидЦены,
| ДанныеКорзины.КоличествоУпаковок КАК КоличествоУпаковок,
| ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Цена * ДанныеКорзины.КоличествоУпаковок КАК Сумма,
| ВЫБОР
| КОГДА &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
| ТОГДА ЕСТЬNULL(СтавкиНДСНоменклатуры.СтавкаНДС, ЕСТЬNULL(ОсновныеСтавкиНДС.СтавкаНДС, ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка)))
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС)
| КОНЕЦ КАК СтавкаНДС,
| ВЫБОР
| КОГДА &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
| ТОГДА ВЫБОР
| КОГДА ДоступныеСоглашенияПартнера.ЦенаВключаетНДС
| ТОГДА ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Цена * ДанныеКорзины.КоличествоУпаковок
| * (ЕСТЬNULL(СтавкиНДСНоменклатуры.СтавкаНДС, ЕСТЬNULL(ОсновныеСтавкиНДС.СтавкаНДС, ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка)))).Ставка
| / (1 + (ЕСТЬNULL(СтавкиНДСНоменклатуры.СтавкаНДС, ЕСТЬNULL(ОсновныеСтавкиНДС.СтавкаНДС, ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка)))).Ставка)
| ИНАЧЕ ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Цена * ДанныеКорзины.КоличествоУпаковок * (ЕСТЬNULL(СтавкиНДСНоменклатуры.СтавкаНДС, ЕСТЬNULL(ОсновныеСтавкиНДС.СтавкаНДС, ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка)))).Ставка
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаНДС,
| ДанныеКорзины.КоличествоУпаковок * ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Цена + ВЫБОР
| КОГДА &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
| ТОГДА ВЫБОР
| КОГДА ДоступныеСоглашенияПартнера.ЦенаВключаетНДС
| ТОГДА 0
| ИНАЧЕ ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Цена * ДанныеКорзины.КоличествоУпаковок
| * (ЕСТЬNULL(СтавкиНДСНоменклатуры.СтавкаНДС, ЕСТЬNULL(ОсновныеСтавкиНДС.СтавкаНДС, ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка)))).Ставка
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаВсего,
| ДанныеКорзины.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения
|ИЗ
| ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам КАК ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеКорзины КАК ДанныеКорзины
| ПО ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Номенклатура = ДанныеКорзины.Номенклатура
| И ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Характеристика = ДанныеКорзины.Характеристика
| И ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Упаковка = ДанныеКорзины.Упаковка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДоступныеСоглашенияПартнера КАК ДоступныеСоглашенияПартнера
| ПО ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Соглашение = ДоступныеСоглашенияПартнера.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтавкиНДСНоменклатуры.СрезПоследних(&ТекущаяДата, Страна = &СтранаРегистрации ИЛИ Страна = ЗНАЧЕНИЕ(Справочник.СтраныМира.ПустаяСсылка)) КАК СтавкиНДСНоменклатуры
| ПО ТоварыКорзиныЦеныВалютаОтчетаПоУпаковкам.Номенклатура = СтавкиНДСНоменклатуры.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОсновныеСтавкиНДС.СрезПоследних(&ТекущаяДата, Страна = &СтранаРегистрации ИЛИ Страна = ЗНАЧЕНИЕ(Справочник.СтраныМира.ПустаяСсылка)) КАК ОсновныеСтавкиНДС
| ПО Истина
|
|УПОРЯДОЧИТЬ ПО
| ДоступныеСоглашенияПартнера.Наименование,
| ДанныеКорзины.ДатаПомещения
|ИТОГИ ПО
| Номенклатура,
| Характеристика,
| Упаковка,
| ЕдиницаИзмерения,
| КоличествоУпаковок,
| Соглашение
|;
|
|
|ВЫБРАТЬ
| ДоступныеСоглашенияПартнера.Ссылка КАК Ссылка,
| ДоступныеСоглашенияПартнера.Наименование КАК Наименование,
| ДоступныеСоглашенияПартнера.ХозяйственнаяОперация КАК ВидСоглашения,
| ДоступныеСоглашенияПартнера.ВалютаНаименование КАК Валюта,
| ДоступныеСоглашенияПартнера.СкладНаименование КАК Склад,
| ДоступныеСоглашенияПартнера.ГрафикОплатыНаименование КАК ГрафикОплаты,
| ДоступныеСоглашенияПартнера.ЦенаВключаетНДС,
| ДоступныеСоглашенияПартнера.КонтрагентНаименование КАК Контрагент,
| 0 КАК Всего
|ИЗ
| ДоступныеСоглашенияПартнера КАК ДоступныеСоглашенияПартнера
|
|УПОРЯДОЧИТЬ ПО
| Наименование";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки1",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"УпаковкиНоменклатуры",
"СпрНоменклатура"));
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстЗапросаКоэффициентУпаковки2",
Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки(
"УпаковкиНоменклатуры",
"ТоварыЦеныВВалютеЦен.Номенклатура"));
Таблица = КорзинаПокупателя.Выгрузить();
Таблица.Свернуть("Номенклатура, Характеристика, Упаковка, ДатаПомещения", "КоличествоУпаковок");
Запрос.УстановитьПараметр("Партнер",Партнер);
Запрос.УстановитьПараметр("КорзинаПокупателя", Таблица);
Запрос.УстановитьПараметр("ТекущаяДата",ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("Валюта",Валюта);
Запрос.УстановитьПараметр("ЦенаВключаетНДС",ЦенаВключаетНДС);
Запрос.УстановитьПараметр("НалогообложениеНДС",НалогообложениеНДС);
Запрос.УстановитьПараметр("СтрокаБезОграничений",НСтр("ru = 'Без ограничений'"));
Запрос.УстановитьПараметр("БазоваяВалюта", ЗначениеНастроекПовтИсп.БазоваяВалютаПоУмолчанию());
Запрос.УстановитьПараметр("СтранаРегистрации", ЗначениеНастроекКлиентСерверПовтИсп.СтранаРегистрацииОрганизации(
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Соглашение, "Организация")));
ИспользоватьТиповыеСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьТиповыеСоглашенияСКлиентами");
ИспользоватьИндивидуальныеСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьИндивидуальныеСоглашенияСКлиентами");
ТолькоТиповые = ИспользоватьТиповыеСоглашенияСКлиентами И НЕ ИспользоватьИндивидуальныеСоглашенияСКлиентами;
ТолькоИндивидуальные = НЕ ИспользоватьТиповыеСоглашенияСКлиентами И ИспользоватьИндивидуальныеСоглашенияСКлиентами;
Запрос.УстановитьПараметр("ТолькоТиповые",ТолькоТиповые);
Запрос.УстановитьПараметр("ТолькоИндивидуальные",ТолькоИндивидуальные);
МассивРезультатовЗапросов = Запрос.ВыполнитьПакет();
Если МассивРезультатовЗапросов[15].Пустой() Тогда
Возврат;
КонецЕсли;
Если Не МассивРезультатовЗапросов[14].Пустой() Тогда
ВывестиВТабличныйДокумент(МассивРезультатовЗапросов[14], МассивРезультатовЗапросов[15]);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ИмяУсловия(Имя)
Если Имя = "ГрафикОплаты" Тогда
Возврат НСтр("ru = 'График оплаты'");
ИначеЕсли Имя = "НалогообложениеНДС" Тогда
Возврат НСтр("ru = 'Налогообложение'");
ИначеЕсли Имя = "ВидСоглашения" Тогда
Возврат НСтр("ru = 'Вид соглашения'");
ИначеЕсли Имя = "ЦенаВключаетНДС" Тогда
Возврат НСтр("ru = 'Цена включает НДС'");
Иначе
Возврат Имя;
КонецЕсли;
КонецФункции
&НаСервере
Процедура ВывестиВТабличныйДокумент(РезультатЗапроса,РезультатЗапросаСоглашения)
ТабличныйДокумент.Очистить();
Макет = Обработки.СамообслуживаниеПартнеров.ПолучитьМакет("ЦеныИСуммыПоСоглашениям");
ОбластьПустаяСтрока = Макет.ПолучитьОбласть("ПустаяСтрока");
ОбластьПодзаголовок = Макет.ПолучитьОбласть("Подзаголовок|Заголовок");
ТабличныйДокумент.Вывести(ОбластьПустаяСтрока);
ОбластьПодзаголовок.Параметры.Текст = НСтр("ru='Условия, зависящие от соглашения'");
ТабличныйДокумент.Вывести(ОбластьПодзаголовок);
ТабличныйДокумент.Вывести(ОбластьПустаяСтрока);
ОбластьШапкаУсловие = Макет.ПолучитьОбласть("ШапкаУсловие|Условие");
ОбластьШапкаСоглашение = Макет.ПолучитьОбласть("ШапкаУсловие|СоглашениеУсловие");
ОбластьСтрокаУсловие = Макет.ПолучитьОбласть("СтрокаУсловие|Условие");
ОбластьСтрокаСоглашение = Макет.ПолучитьОбласть("СтрокаУсловие|СоглашениеУсловие");
ТабличныйДокумент.Вывести(ОбластьШапкаУсловие);
ВыборкаСоглашения = РезультатЗапросаСоглашения.Выбрать();
Пока ВыборкаСоглашения.Следующий() Цикл
ОбластьШапкаСоглашение.Параметры.Соглашение = ВыборкаСоглашения.Наименование;
ТабличныйДокумент.Присоединить(ОбластьШапкаСоглашение);
КонецЦикла;
ТаблицаСоглашения = РезультатЗапросаСоглашения.Выгрузить();
Для инд = 2 По ТаблицаСоглашения.Колонки.Количество()-2 Цикл
КолонкаТаблицы = ТаблицаСоглашения.Колонки[инд];
ОбластьСтрокаУсловие.Параметры.Условие = ИмяУсловия(КолонкаТаблицы.Имя);
ТабличныйДокумент.Вывести(ОбластьСтрокаУсловие);
Для индСоглашений = 0 По ТаблицаСоглашения.Количество() - 1 Цикл
ОбластьСтрокаСоглашение.Параметры.ЗначениеУсловие = ТаблицаСоглашения[индСоглашений][инд];
ТабличныйДокумент.Присоединить(ОбластьСтрокаСоглашение);
КонецЦикла;
КонецЦикла;
ТабличныйДокумент.Вывести(ОбластьПустаяСтрока);
ОбластьПодзаголовок.Параметры.Текст = НСтр("ru='Цены и суммы в зависимости от соглашения'");
ТабличныйДокумент.Вывести(ОбластьПодзаголовок);
ТабличныйДокумент.Вывести(ОбластьПустаяСтрока);
ИспользованиеХарактеристикНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьХарактеристикиНоменклатуры");
ОбластьШапкаНоменклатура = Макет.ПолучитьОбласть("Шапка|Номенклатура");
ОбластьШапкаХарактеристика = Макет.ПолучитьОбласть("Шапка|Характеристика");
ОбластьШапкаУпаковкаКоличество = Макет.ПолучитьОбласть("Шапка|УпаковкаКоличество");
ОбластьШапкаСоглашение = Макет.ПолучитьОбласть("Шапка|Соглашение");
ОбластьСтрокаНоменклатура = Макет.ПолучитьОбласть("Строка|Номенклатура");
ОбластьСтрокаХарактеристика = Макет.ПолучитьОбласть("Строка|Характеристика");
ОбластьСтрокаУпаковкаКоличество = Макет.ПолучитьОбласть("Строка|УпаковкаКоличество");
ОбластьСтрокаСоглашение = Макет.ПолучитьОбласть("Строка|Соглашение");
ТабличныйДокумент.Вывести(ОбластьШапкаНоменклатура);
Если ИспользованиеХарактеристикНоменклатуры Тогда
ТабличныйДокумент.Присоединить(ОбластьШапкаХарактеристика);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьШапкаУпаковкаКоличество);
ВыборкаСоглашения = РезультатЗапросаСоглашения.Выбрать();
Пока ВыборкаСоглашения.Следующий() Цикл
ОбластьШапкаСоглашение.Параметры.Соглашение = ВыборкаСоглашения.Наименование;
ТабличныйДокумент.Присоединить(ОбластьШапкаСоглашение);
КонецЦикла;
НомерСтроки = 0;
ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНоменклатура.Следующий() Цикл
ВыборкаХарактеристика = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаХарактеристика.Следующий() Цикл
ВыборкаУпаковка = ВыборкаХарактеристика.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаУпаковка.Следующий() Цикл
ВыборкаЕдИзм = ВыборкаУпаковка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаЕдИзм.Следующий() Цикл
ВыборкаКоличество = ВыборкаЕдИзм.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаКоличество.Следующий() Цикл
НомерСтроки = НомерСтроки + 1;
ОбластьСтрокаНоменклатура.Параметры.НомерСтроки = НомерСтроки;
ОбластьСтрокаНоменклатура.Параметры.Номенклатура = ВыборкаНоменклатура.Номенклатура;
ТабличныйДокумент.Вывести(ОбластьСтрокаНоменклатура);
Если ИспользованиеХарактеристикНоменклатуры Тогда
ОбластьСтрокаХарактеристика.Параметры.Характеристика = ВыборкаХарактеристика.Характеристика;
ТабличныйДокумент.Присоединить(ОбластьСтрокаХарактеристика);
КонецЕсли;
ОбластьСтрокаУпаковкаКоличество.Параметры.Упаковка = ?(ВыборкаКоличество.Упаковка = Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка(),
ВыборкаКоличество.ЕдиницаИзмерения,
Строка(ВыборкаКоличество.Упаковка)+ ","+ Строка(ВыборкаКоличество.ЕдиницаИзмерения));
ОбластьСтрокаУпаковкаКоличество.Параметры.Количество = ВыборкаКоличество.КоличествоУпаковок;
ТабличныйДокумент.Присоединить(ОбластьСтрокаУпаковкаКоличество);
ВыборкаСоглашение = ВыборкаКоличество.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСоглашение.Следующий() Цикл
ТекущаяСтрокаТаблицаСоглашений = ТаблицаСоглашения.Найти(ВыборкаСоглашение.Соглашение,"Ссылка");
ВыборкаДетали = ВыборкаСоглашение.Выбрать();
Пока ВыборкаДетали.Следующий() Цикл
ОбластьСтрокаСоглашение.Параметры.Цена = ВыборкаДетали.Цена;
ОбластьСтрокаСоглашение.Параметры.Всего = ВыборкаДетали.СуммаВсего;
ТекущаяСтрокаТаблицаСоглашений.Всего = ТекущаяСтрокаТаблицаСоглашений.Всего + ВыборкаДетали.СуммаВсего;
ТабличныйДокумент.Присоединить(ОбластьСтрокаСоглашение);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ОбластьИтогоНоменклатура = Макет.ПолучитьОбласть("Итого|Номенклатура");
ОбластьИтогоХарактеристика = Макет.ПолучитьОбласть("Итого|Характеристика");
ОбластьИтогоУпаковкаКоличество = Макет.ПолучитьОбласть("Итого|УпаковкаКоличество");
ОбластьИтогоСоглашение = Макет.ПолучитьОбласть("Итого|Соглашение");
ТабличныйДокумент.Вывести(ОбластьИтогоНоменклатура);
Если ИспользованиеХарактеристикНоменклатуры Тогда
ТабличныйДокумент.Присоединить(ОбластьИтогоХарактеристика);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьИтогоУпаковкаКоличество);
Для каждого СтрокаТаблицыСоглашения Из ТаблицаСоглашения Цикл
ОбластьИтогоСоглашение.Параметры.Всего = СтрокаТаблицыСоглашения.Всего;
ТабличныйДокумент.Присоединить(ОбластьИтогоСоглашение);
КонецЦикла;
КонецПроцедуры
#КонецОбласти