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