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