#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтаФорма);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ЗаполнитьСписокВыбораОпераций();
УправлениеСвязямиПараметровВыбораРеквизитовФормы();
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ИначеЕсли Параметры.ЗначенияЗаполнения.Свойство("ЗаполнятьПоОрдеру") Тогда
ПерезаполнитьПоОрдерам(Параметры.ЗначенияЗаполнения.МассивЗаказов);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
Модифицированность = Истина;
КонецЕсли;
ПродажиСервер.УстановитьРежимВыбораГруппЭлементовСклада(Элементы.Склад);
ПродажиСервер.УстановитьОтметкуНезаполненногоДоговора(Элементы, "Договор");
МассивЭлементов = Новый Массив;
Если ЗначениеЗаполнено(Объект.ЗаявкаНаВозвратТоваровОтКлиента) Тогда
МассивЭлементов.Добавить("ТоварыСкопировать");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюСкопировать");
МассивЭлементов.Добавить("ТоварыОткрытьПодбор");
МассивЭлементов.Добавить("ТоварыДополнитьМногооборотнойТарой");
МассивЭлементов.Добавить("ТоварыПодобратьТоварыПоРеализациям");
МассивЭлементов.Добавить("ТоварыЗаполнитьРеализацииИЦены");
МассивЭлементов.Добавить("ТоварыПоискПоШтрихкоду");
МассивЭлементов.Добавить("ТоварыРазбитьСтроку");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюРазбитьСтроку");
МассивЭлементов.Добавить("ВозвратПорчи");
МассивЭлементов.Добавить("ТоварыЗагрузитьИзВнешнегоФайла");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Ложь);
Иначе
МассивЭлементов.Добавить("ЗаявкаНаВозвратТоваровОтКлиента");
МассивЭлементов.Добавить("ЗакрытьЗаявку");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", Ложь);
КонецЕсли;
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
КонецЕсли;
ОбновитьОприходованныеТовары();
ИспользоватьРасширенныеВозможностиЗаказаКлиента = ИспользоватьРасширенныеВозможностиЗаказаКлиента();
Элементы.ЗакрытьЗаявку.Видимость = Элементы.ЗакрытьЗаявку.Видимость И ИспользоватьРасширенныеВозможностиЗаказаКлиента;
Элементы.ЗакрытьЗаявку.Доступность = ПравоДоступа("Изменение",Метаданные.Документы.ЗаявкаНаВозвратТоваровОтКлиента);
УстановитьДоступностьКомандБуфераОбмена();
УчетПрослеживаемыхТоваровЛокализация.УстановитьВидимостьКоличестваРНПТ(ЭтаФорма, Объект.Дата);
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтаФорма);
ФормированиеФискальныхЧековСервер.ФормаПриСозданииНаСервере(ЭтотОбъект);
РассчитатьСуммуКомпенсации(ЭтаФорма);
ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
ПроверкаКонтрагентовВызовСервераПереопределяемыйУТ.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтаФорма);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументССылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
УчетПрослеживаемыхТоваровЛокализация.УстановитьЗаголовокНомерГТД(Элементы, "ТоварыНомерГТД");
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
ВозвратТоваровОтКлиентаЛокализация.ОбработкаПроверкиЗаполненияНаСервере(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);
ФормированиеФискальныхЧековСервер.ФормаПриЧтенииНаСервере(ЭтотОбъект);
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
ПриЧтенииСозданииНаСервере();
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Перем ВыполняемаяОперация;
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") И ВыбранноеЗначение.Свойство("ВыполняемаяОперация", ВыполняемаяОперация) Тогда
Если ВРег(ВыполняемаяОперация) = ВРег("ПодборТоваровИзЗаказа") Тогда
ОбработкаПодбораТоваровИзЗаказа(ВыбранноеЗначение.АдресВХранилище);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.ВидыЗапасов.Форма.ФормаВводаВидовЗапасов" Тогда
ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.ПодборТоваровПоРеализациямИПередачам" Тогда
ОбработкаВыбораПодборПоРеализацииСервер(ВыбранноеЗначение);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПечатьЗаявленияНаВозвратТоваровОтКлиента.Форма.РеквизитыПечатиЗаявленияНаВозврат" Тогда
Если ВыбранноеЗначение <> Неопределено Тогда
Модифицированность = Истина;
ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение);
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(ВыбранноеЗначение.АдресМногооборотнойТарыВХранилище);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
ТоварыСерияПересчитатьЦены();
ИначеЕсли ЗакупкиКлиент.ЭтоПодборНомераГТД(ИсточникВыбора) Тогда
ОбработатьПодборНомераГТД(ВыбранноеЗначение);
ИначеЕсли УчетНДСУПКлиент.ЗаконченоРедактированиеСчетаФактурыПолученного(ВыбранноеЗначение, ИсточникВыбора) Тогда
ОбновитьТекстСчетаФактурыПолученные();
ИначеЕсли УчетНДСУПКлиент.ЗаконченоРедактированиеСчетаФактурыВыданного(ВыбранноеЗначение, ИсточникВыбора) Тогда
ОбновитьТекстСчетаФактурыПолученные();
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
ПроверкаКонтрагентов.ПередЗаписьюНаСервереДокумент(ЭтотОбъект, ТекущийОбъект);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ЗаполнитьСлужебныеРеквизитыТабличнойЧасти();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
ОбновитьТекстСчетаФактурыПолученные();
УстановитьПредставлениеСебестоимости();
ПроверкаКонтрагентов.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект.ДополнительныеСвойства);
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
РассчитатьСуммуКомпенсации(ЭтаФорма);
РазблокироватьДанныеФормыДляРедактирования();
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Если ЗначениеЗаполнено(Объект.ЗаявкаНаВозвратТоваровОтКлиента) Тогда
ПараметрыЗаписи.Вставить("Сделка", Объект.Сделка);
КонецЕсли;
ВзаиморасчетыКлиент.ФормаПослеЗаписи(ЭтаФорма);
ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_ВозвратТоваровОтКлиента", ПараметрыЗаписи, Объект.Ссылка);
СобытияФормКлиент.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаДокумента(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(
Неопределено,
ЭтотОбъект,
"СканерШтрихкода,ФискальныйРегистратор");
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПроверкаКонтрагентовКлиент.ПриОткрытииДокумент(ЭтотОбъект);
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
ЗакрытьСессиюПроверкиКМНаККТ(Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ДанныеШтрихкодов = МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр);
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
Если ИмяСобытия = "Закрытие_РедактированиеКомплекта"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПриОкончанииРедактированияНабора(Параметр.АдресВоВременномХранилище);
КонецЕсли;
Если ИмяСобытия = "РедактироватьНабор"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПараметрыКомплекта = Новый Структура;
ПараметрыКомплекта.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыКомплекта.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
ПараметрыКомплекта.Вставить("КолонкиНабора", КолонкиНабора());
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыКомплекта);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОткрытия.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
Если ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
ПараметрыОткрытия.Вставить("ВидЦены", ЭтаФорма.ВидЦеныЧекаККМ);
ПараметрыОткрытия.Вставить("ЗапретРедактированияЦены", Истина);
КонецЕсли;
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
ПроверкаКонтрагентовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия,ЭтотОбъект);
Если ИмяСобытия = "ПроверитьКоличествоВДокументе"
И ТипЗнч(Источник) = Тип("ФормаКлиентскогоПриложения")
И Источник.УникальныйИдентификатор = УникальныйИдентификатор Тогда
ПроверитьКоличествоВДокументеКлиент();
КонецЕсли;
Если ИмяСобытия = "ПриИзмененииДоговора"
И Источник = ЭтотОбъект Тогда
Модифицированность = Истина;
ДоговорПриИзменении(Элементы[Параметр]);
КонецЕсли;
Если ИмяСобытия = "ПриИзмененииДоговораКлиента"
И Источник = ЭтотОбъект Тогда
Модифицированность = Истина;
КлиентДоговорПриИзменении(Элементы[Параметр]);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаЗаписиНового(НовыйОбъект, Источник, СтандартнаяОбработка)
Если ЗакупкиКлиент.ЭтоУказаниеНомераГТД(Источник) Тогда
Действия = Новый Структура;
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтотОбъект, Действия);
ЗакупкиКлиент.ОбработатьУказаниеНомераГТД(ЭтотОбъект, НовыйОбъект, , , Действия);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение
И Не ЗначениеЗаполнено(Объект.ЗаявкаНаВозвратТоваровОтКлиента) Тогда
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество",
Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение", ЭтотОбъект, ДополнительныеПараметры));
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ, ПараметрыЗаписи.Свойство("ПараметрыВыполненияПодключаемойКоманды"));
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение(Результат, ДополнительныеПараметры) Экспорт
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверкаКонтрагентов.ПриЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ЭтотОбъект.ПараметрыСвойств.Свойство(ТекущаяСтраница.Имя)
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыВыбораСоглашения = ПродажиКлиент.ПараметрыНачалаВыбораСоглашенияСКлиентом();
ПараметрыВыбораСоглашения.Элемент = Элемент;
ПараметрыВыбораСоглашения.Партнер = Объект.Партнер;
ПараметрыВыбораСоглашения.Документ = Объект.Соглашение;
ПараметрыВыбораСоглашения.ДатаДокумента = Объект.Дата;
ПараметрыВыбораСоглашения.ДанныеФормыСтруктура = Объект;
ПараметрыВыбораСоглашения.ХозяйственнаяОперация = ХозяйственнаяОперацияСоглашения;
ПродажиКлиент.НачалоВыбораСоглашенияСКлиентом(ПараметрыВыбораСоглашения, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
Если Не ЗначениеЗаполнено (Объект.Партнер) Тогда
ПартнерОчисткаСервер();
Возврат;
КонецЕсли;
ПартнерПриИзмененииСервер();
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
Если Не ЗначениеЗаполнено (Объект.Соглашение) Тогда
СоглашениеОчисткаСервер();
КомиссионерНеВедетУчетПоРНПТ = Ложь;
Возврат;
КонецЕсли;
СоглашениеПриИзмененииСервер();
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтотОбъект);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродаж();
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
СкладПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииСервер();
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииЧекаККМСервер(ПерезаполнитьТовары)
ДокументРеализации = ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(Объект.ЧекККМ);
Объект.ДокументРеализации = ДокументРеализации;
Для каждого СтрокаТовары Из Объект.Товары Цикл
СтрокаТовары.ДокументРеализации = ДокументРеализации;
СтрокаТовары.СпособОпределенияСебестоимости = ПредопределенноеЗначение("Перечисление.СпособыОпределенияСебестоимостиВозврата.ИзДокументаПродажи");
КонецЦикла;
Объект.Партнер = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ЧекККМ, "Партнер");
Объект.Контрагент = Справочники.Контрагенты.РозничныйПокупатель;
Если ИспользоватьСоглашенияСКлиентами Тогда
ЗаполнитьУсловияПродаж();
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Партнер", "ТолькоПросмотр", ЗначениеЗаполнено(Объект.ЧекККМ));
ОбновитьТекстСчетаФактурыПолученные();
Если ПерезаполнитьТовары Тогда
ЗаполнитьВозвращаемыеТоварыПоЧеку();
КонецЕсли;
ЗаполнитьРеквизитыФормыИзЧекаККМ(Объект.ЧекККМ, Новый Структура("ВидЦеныЧекаККМ", "ВидЦены"));
ЗаполнитьСлужебныеРеквизитыТабличнойЧасти();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.Валюта) Тогда
ВалютаПриИзмененииСервер(Объект.Валюта, ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект,ВалютаДокумента));
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтактноеЛицоПриИзменении(Элемент)
Если Объект.КонтактноеЛицо.Пустая() Тогда
Возврат;
ИначеЕсли Не Объект.Партнер.Пустая() Тогда
Возврат;
КонецЕсли;
ПартнерИзменился = Ложь;
КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился);
Если Не ПартнерИзменился Тогда
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено (Объект.Партнер) Тогда
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
ПриИнтерактивномИзмененииХозяйственнойОперацииСервер();
ОчиститьДокументыРеализации();
КонецПроцедуры
&НаКлиенте
Процедура ПокупательНеПлательщикНДСПриИзменении(Элемент)
ОбновитьТекстСчетаФактурыПолученные();
КонецПроцедуры
&НаКлиенте
Процедура ВыданыДенежныеСредстваПриИзменении(Элемент)
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ДатаРасходногоКассовогоОрдера", "Доступность", Объект.ВыданыДенежныеСредства);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НомерРасходногоКассовогоОрдера", "Доступность", Объект.ВыданыДенежныеСредства);
КонецПроцедуры
&НаКлиенте
Процедура ЧекККМПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
Если СменаЧекаККМОткрыта(Объект.ЧекККМ) Тогда
Объект.ЧекККМ = Неопределено;
ВызватьИсключение НСтр("ru='Кассовая смена открыта! Ввод на основании чека документа ""Возврат товаров от клиента"" при открытой кассовой смене запрещен.'");
КонецЕсли;
ВариантыОтветов = Новый СписокЗначений;
ВариантыОтветов.Добавить(КодВозвратаДиалога.Да, НСтр("ru='Перезаполнить'"));
ВариантыОтветов.Добавить(КодВозвратаДиалога.Нет, НСтр("ru='Не перезаполнять'"));
ПоказатьВопрос(
Новый ОписаниеОповещения("ЧекККМПриИзмененииЗавершение", ЭтотОбъект),
НСтр("ru = 'Перезаполнить возвращаемые товары по выбранному чеку ККМ?'"),
ВариантыОтветов);
Возврат;
Иначе
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Партнер", "ТолькоПросмотр", Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СменаЧекаККМОткрыта(ЧекККМ)
ЧекККМРеквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЧекККМ, "Дата, КассоваяСмена");
Возврат РозничныеПродажи.СменаОткрыта(ЧекККМРеквизиты.КассоваяСмена, ТекущаяДатаСеанса())
КонецФункции
&НаКлиенте
Процедура ЧекККМПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОтветНаВопрос = РезультатВопроса;
ПерезаполнитьТовары = (ОтветНаВопрос = КодВозвратаДиалога.Да);
ЧекККМПриИзмененииФрагмент();
ПриИзмененииЧекаККМСервер(ПерезаполнитьТовары);
КонецПроцедуры
&НаКлиенте
Процедура ЧекККМПриИзмененииФрагмент()
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
ОбновитьИнформациюПоРеализациям();
КонецПроцедуры
&НаКлиенте
Процедура ДокументРеализацииПриИзменении(Элемент)
ЭтоВозвратОтРозничногоПокупателя = (Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя"));
Если ЭтоВозвратОтРозничногоПокупателя Тогда
Если ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
Если ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(Объект.ЧекККМ) <> Объект.ДокументРеализации Тогда
Объект.ЧекККМ = Неопределено;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПараметрыРегистрацииСчетовФактурПолученныхСервер(Знач Объект)
Возврат Документы.ВозвратТоваровОтКлиента.ПараметрыРегистрацииСчетовФактурПолученных(Объект);
КонецФункции
&НаСервереБезКонтекста
Функция ПараметрыРегистрацииСчетовФактурВыданныхСервер(Знач Объект)
Возврат Документы.ВозвратТоваровОтКлиента.ПараметрыРегистрацииСчетовФактурВыданных(Объект);
КонецФункции
&НаКлиенте
Процедура ТекстДокументыНаОснованииПодвалОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
ПараметрыРегистрации = ПараметрыРегистрацииСчетовФактурПолученныхСервер(Объект);
УчетНДСУПКлиент.ОбработкаНавигационнойСсылкиСчетаФактурыПолученные(
ЭтаФорма,
НавигационнаяСсылка,
СтандартнаяОбработка,
ПараметрыРегистрации);
ПараметрыРегистрации = ПараметрыРегистрацииСчетовФактурВыданныхСервер(Объект);
УчетНДСУПКлиент.ОбработкаНавигационнойСсылкиСчетаФактурыВыданные(
ЭтаФорма,
НавигационнаяСсылка,
СтандартнаяОбработка,
ПараметрыРегистрации);
ФискальнаяОперацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииСервер();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗаголовокРеализацииНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФорму(
"ОбщаяФорма.ПросмотрСпискаДокументов",
Новый Структура("СписокДокументов, Заголовок",
СписокРеализаций,
НСтр("ru='Реализации клиентам (%КоличествоДокументов%)'")
),
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратПереданнойМногооборотнойТарыПриИзменении(Элемент)
ВозвратПереданнойМногооборотнойТарыПриИзмененииСервер();
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура УменьшенДолгСтрокойНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыПроверки = РаботаСТабличнымиЧастямиКлиент.ПараметрыПроверкиЗаполнения();
ПараметрыПроверки.ПроверятьРаспроведенность = Ложь;
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Организация", НСтр("ru = 'Организация'"));
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Партнер", НСтр("ru = 'Клиент'"));
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Валюта", НСтр("ru = 'Валюта'"));
Если Не ИспользоватьПартнеровКакКонтрагентов Тогда
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("Контрагент", НСтр("ru = 'Контрагент'"));
КонецЕсли;
ПараметрыПроверки.ПроверяемыеРеквизиты.Вставить("ХозяйственнаяОперация", НСтр("ru = 'Операция'"));
Оповещение = Новый ОписаниеОповещения("УменьшенДолгСтрокойНажатиеПослеПроверки", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПроверитьВозможностьЗаполнения(ЭтаФорма, Оповещение, ПараметрыПроверки);
КонецПроцедуры
&НаКлиенте
Процедура УменьшенДолгСтрокойНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
Модифицированность = Истина;
ПолучитьРасшифровкуПлатежаИзХранилища(Результат);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПредусмотренЗалогЗаТаруПриИзменении(Элемент)
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорСоздание(Элемент, СтандартнаяОбработка)
ПродажиКлиент.ОткрытьФормуСозданияДоговора(ЭтотОбъект, Элемент, "Объект.Договор", Объект.Партнер, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ДоговорПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
ЗаполнитьНалогообложениеНДСПродажи();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
Если Не Элемент.ТекущийЭлемент = Элементы.ТоварыШтрихкод
И Не Элемент.ТекущийЭлемент = Элементы.ТоварыНомерГТД Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Элементы.ТоварыШтрихкод.СписокВыбора.Очистить();
Возврат;
КонецЕсли;
Если Элемент.ТекущийЭлемент = Элементы.ТоварыШтрихкод Тогда
Структура = Новый Структура;
Структура.Вставить("Номенклатура", ТекущиеДанные.Номенклатура);
Структура.Вставить("Характеристика", ТекущиеДанные.Характеристика);
Структура.Вставить("Упаковка", ТекущиеДанные.Упаковка);
Элементы.ТоварыШтрихкод.СписокВыбора.ЗагрузитьЗначения(РозничныеПродажиВызовСервера.ПолучитьШтрихкодыНоменклатуры(Структура));
ИначеЕсли Элемент.ТекущийЭлемент = Элементы.ТоварыНомерГТД Тогда
ЗакупкиКлиент.ЗаполнитьСписокВыбораНомеровГТД(
Элементы.Товары.ТекущиеДанные, Элементы.ТоварыНомерГТД.СписокВыбора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтаФорма, "Товары", Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
НеобходимоОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий, Истина);
ТоварыПослеУдаленияНаСервере(НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения);
Если НеобходимоОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Если ЗначениеЗаполнено(Объект.ЗаявкаНаВозвратТоваровОтКлиента) Тогда
Отказ = Истина;
ОткрытьПодборПоРаспоряжениямОрдерам();
КонецЕсли;
Если Копирование Тогда
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтаФорма, "Товары", Отказ, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий, Копирование);
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если Копирование Тогда
ТекущаяСтрока.ИдентификаторСтроки = "";
КонецЕсли;
Если НоваяСтрока Тогда
ТекущаяСтрока.СпособОпределенияСебестоимости = ПредопределенноеЗначение("Перечисление.СпособыОпределенияСебестоимостиВозврата.ИзТекущегоДокумента");
УстановитьПредставлениеСебестоимостиВСтроке(ТекущаяСтрока);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий) Тогда
ТекущаяСтрокаИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
Если НЕ ЗначениеЗаполнено(ТекущиеДанные.ДокументРеализации) Тогда
ТекущиеДанные.ДокументРеализации = ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(Объект.ЧекККМ);
ТекущиеДанные.СпособОпределенияСебестоимости = ПредопределенноеЗначение("Перечисление.СпособыОпределенияСебестоимостиВозврата.ИзДокументаПродажи");
КонецЕсли;
КонецЕсли;
Если Не ОтменаРедактирования Тогда
КэшСтроки = ?(НоваяСтрока, Неопределено, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.Товары, ЭтотОбъект));
СкладыКлиент.ОбновитьТаблицуСкладов(ТаблицаСкладов, ТекущиеДанные, КэшСтроки, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
КонецЕсли;
УстановитьПредставлениеСебестоимостиВСтроке(ТекущиеДанные);
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ДополнительныеПараметры = Новый Структура;
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элементы.Товары, ДополнительныеПараметры);
Если ДополнительныеПараметры.Свойство("ТребуетсяСерверныйВызов") Тогда
ПодключитьОбработчикОжидания("ТоварыПриОкончанииРедактированияДляСерверногоВызова", 0.5, Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ТоварыПриОкончанииРедактированияНаСервере()
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураОприходованиеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущиеДанные.Характеристика);
Если ЗначениеЗаполнено(ТекущиеДанные.Характеристика) Тогда
СтруктураДействий.Вставить("ЗаполнитьХарактеристикуНекачественногоТовара");
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура, НоменклатураИсходногоКачества", "Артикул", "АртикулОприходование"));
СкладыКлиент.ИзменитьКачество(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПорчаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если Не ТекущаяСтрока.Порча Тогда
ТекущаяСтрока.НоменклатураОприходование = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикаОприходование = ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикиИспользуютсяОприходование = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураОприходованиеПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока = Новый Структура;
ТекущаяСтрока.Вставить("Номенклатура", ТекущиеДанные.НоменклатураОприходование);
ТекущаяСтрока.Вставить("ХарактеристикиИспользуются", ТекущиеДанные.ХарактеристикиИспользуютсяОприходование);
ТекущаяСтрока.Вставить("Характеристика", ТекущиеДанные.Характеристика);
ТекущаяСтрока.Вставить("Артикул", ТекущиеДанные.Артикул);
ТекущаяСтрока.Вставить("Серия", ТекущиеДанные.Серия);
ТекущаяСтрока.Вставить("СтатусУказанияСерий", ТекущиеДанные.СтатусУказанияСерий);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущиеДанные.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, Неопределено);
ТекущиеДанные.ХарактеристикаОприходование = ТекущаяСтрока.Характеристика;
ТекущиеДанные.ХарактеристикиИспользуютсяОприходование = ТекущаяСтрока.ХарактеристикиИспользуются;
ТекущиеДанные.Серия = ТекущаяСтрока.Серия;
ТекущиеДанные.СтатусУказанияСерий = ТекущаяСтрока.СтатусУказанияСерий;
ТекущиеДанные.АртикулОприходование = ТекущаяСтрока.Артикул;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ИдентификаторТекущейСтроки = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
ТоварыНоменклатураПриИзмененииСервер(ИдентификаторТекущейСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ИдентификаторТекущейСтроки = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
ТоварыХарактеристикаПриИзмененииСервер(ИдентификаторТекущейСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуСкидкуПоСуммеВПродажах");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ВыбранноеЗначение.Значение = ТекущаяСтрока.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущаяСтрока.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
ТоварыСерияПересчитатьЦены(ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПересчитатьЦены(ТекущаяСтрока = Неопределено)
Если ТекущаяСтрока = Неопределено Тогда
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
КонецЕсли;
Если ЦенообразованиеКлиент.НеобходимПересчетЦеныПриИзменении(ТекущаяСтрока.Номенклатура, "Серия", Объект.Дата) Тогда
ИдентификаторТекущейСтроки = ТекущаяСтрока.ПолучитьИдентификатор();
ТоварыСерияПересчитатьЦеныСервер(ИдентификаторТекущейСтроки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ТоварыСерияПересчитатьЦеныСервер(ИдентификаторТекущейСтроки)
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ИдентификаторТекущейСтроки);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, Неопределено);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если НаборыКлиент.БлокируемыйЭлемент(Поле) Тогда
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПараметрОповещения = Новый Структура;
ПараметрОповещения.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрОповещения.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрОповещения.Вставить("ФормаВладелец", УникальныйИдентификатор);
Оповестить("РедактироватьНабор", ПараметрОповещения, ЭтаФорма);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыНоменклатураНабора Тогда
ПоказатьЗначение(Неопределено, Элементы.Товары.ТекущиеДанные.НоменклатураНабора);
ИначеЕсли Поле = Элементы.ТоварыСпособОпределенияСебестоимостиСтрокой Тогда
ЗаполнитьСебестоимостьВТаблице();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСпособОпределенияСебестоимостиСтрокойПриИзменении(Элемент)
ОбновитьИнформациюПоРеализациям();
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыДокументРеализацииПриИзменении(Элемент)
ОбновитьИнформациюПоРеализациям();
Если Элементы.Товары.ТекущиеДанные.ДокументРеализации <> Неопределено И Не ЗначениеЗаполнено(Элементы.Товары.ТекущиеДанные.ДокументРеализации)
И Не ЗначениеЗаполнено(Объект.ЧекККМ)
И Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера") Тогда
Элементы.Товары.ТекущиеДанные.СпособОпределенияСебестоимости = ПредопределенноеЗначение("Перечисление.СпособыОпределенияСебестоимостиВозврата.ИзТекущегоДокумента");
ИначеЕсли Элементы.Товары.ТекущиеДанные.ДокументРеализации <> Неопределено И ЗначениеЗаполнено(Элементы.Товары.ТекущиеДанные.ДокументРеализации)
И Не ЗначениеЗаполнено(Объект.ЧекККМ)
И (Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера")) Тогда
Элементы.Товары.ТекущиеДанные.СпособОпределенияСебестоимости = ПредопределенноеЗначение("Перечисление.СпособыОпределенияСебестоимостиВозврата.ИзДокументаПродажи");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНомерГТДПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыЗаполнения = Новый Структура("НомерГТД", ТекущиеДанные.НомерГТД);
Действия = Новый Структура;
Действия.Вставить("ЗаполнитьТипНомераГТД", ПараметрыЗаполнения);
Действия.Вставить("ЗаполнитьСтрануПроисхожденияДляНомераГТД", ПараметрыЗаполнения);
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтотОбъект, Действия);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, Действия, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНомерГТДСоздание(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = ЗакупкиКлиент.ДополнительныеПараметрыСозданияНомераГТД();
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, Объект);
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, ЭтотОбъект);
ПараметрыСоздания = ЗакупкиКлиент.ПараметрыСозданияНомераГТД(ТекущиеДанные,
Элемент.ТекстРедактирования,
ДополнительныеПараметры);
ЗакупкиКлиент.ОткрытьФормуСозданияНомераГТД(ЭтотОбъект, ПараметрыСоздания);
КонецПроцедуры
&НаКлиенте
Процедура СпособКомпенсацииПриИзменении(Элемент)
СпособКомпенсацииПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект,Элементы.ДекорацияСостояниеОригинала);
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура КлиентПартнерПриИзменении(Элемент)
КлиентПартнерПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура КлиентКонтрагентПриИзменении(Элемент)
КлиентКонтрагентПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура КлиентДоговорСоздание(Элемент, СтандартнаяОбработка)
ПродажиКлиент.ОткрытьФормуСозданияДоговора(ЭтотОбъект, Элемент, "Объект.Договор", Объект.Партнер,
СтандартнаяОбработка, "ПриИзмененииДоговораКлиента");
КонецПроцедуры
&НаКлиенте
Процедура КлиентДоговорПриИзменении(Элемент)
КлиентДоговорПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкладПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
Если Не Объект.Ссылка.Пустая() Тогда
ОткрытьФорму("Документ.ВозвратТоваровОтКлиента.Форма.РазблокированиеРеквизитов",,,,,,
Новый ОписаниеОповещения("Подключаемый_РазрешитьРедактированиеРеквизитовОбъектаЗавершение", ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъектаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если ТипЗнч(Результат) = Тип("Массив") И Результат.Количество() > 0 Тогда
ЗапретРедактированияРеквизитовОбъектовКлиент.УстановитьДоступностьЭлементовФормы(ЭтаФорма, Результат);
УстановитьДоступностьКомандФормы(Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработчикОжиданияЭДО()
ОбменСКонтрагентамиКлиент.ОбработчикОжиданияЭДО(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьВидыЗапасов(Команда)
ПараметрыРедактированияВидовЗапасов = ПоместитьТоварыИВидыЗапасовВХранилище();
ФинансыКлиент.ОткрытьВидыЗапасов(ЭтотОбъект, ПараметрыРедактированияВидовЗапасов);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыПоРеализациям(Команда)
ПодборТоваровПоРеализациям();
ОбновитьИнформациюПоРеализациям();
КонецПроцедуры
&НаКлиенте
Процедура ПодборТоваровПоРеализациям()
Отказ = Ложь;
ОчиститьСообщения();
ВозвратОтРозничногоПокупателя = Ложь;
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя") Тогда
ВозвратОтРозничногоПокупателя = Истина;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Поле ""Валюта"" не заполнено'"),
Объект.Ссылка, "Объект.Валюта",
,
Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.НалогообложениеНДС)
И Не Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера") Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Поле ""Налогообложение НДС"" не заполнено'"),
Объект.Ссылка, "Объект.НалогообложениеНДС",
,
Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Поле ""Организация"" не заполнено'"),
Объект.Ссылка, "Объект.Организация",
,
Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Партнер) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Поле ""Клиент"" не заполнено'"),
Объект.Ссылка, "Объект.Партнер",
,
Отказ);
КонецЕсли;
Если Не ИспользоватьПартнеровКакКонтрагентов Тогда
Если НЕ ЗначениеЗаполнено(Объект.Контрагент) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Поле ""Контрагент"" не заполнено'"),
Объект.Ссылка, "Объект.Контрагент",
,
Отказ);
КонецЕсли;
КонецЕсли;
Если ВозвратТоваровЧерезКомиссионера
И НЕ ЗначениеЗаполнено(Объект.КлиентПартнер) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Поле ""Конечный клиент"" не заполнено'"),
Объект.Ссылка, "Объект.КлиентПартнер",
,
Отказ);
КонецЕсли;
Если Не ИспользоватьПартнеровКакКонтрагентов
И ВозвратТоваровЧерезКомиссионера Тогда
Если НЕ ЗначениеЗаполнено(Объект.КлиентКонтрагент) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'Поле ""Контрагент конечного клиента"" не заполнено'"),
Объект.Ссылка, "Объект.КлиентКонтрагент",
,
Отказ);
КонецЕсли;
КонецЕсли;
Если Не Отказ Тогда
ПараметрыПодбора = Новый Структура;
ПараметрыПодбора.Вставить("ДокументВозврата", Объект.Ссылка);
ПараметрыПодбора.Вставить("Валюта", Объект.Валюта);
ПараметрыПодбора.Вставить("Дата", ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ОбщегоНазначенияКлиент.ДатаСеанса()));
ПараметрыПодбора.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыПодбора.Вставить("Склад", Объект.Склад);
ПараметрыПодбора.Вставить("ОтборПоСкладу", Истина);
ПараметрыПодбора.Вставить("НеПоказыватьСклад", ВозвратТоваровЧерезКомиссионера);
ПараметрыПодбора.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыПодбора.Вставить("Партнер", Объект.Партнер);
ПараметрыПодбора.Вставить("Контрагент", Объект.Контрагент);
ПараметрыПодбора.Вставить("Соглашение", Объект.Соглашение);
ПараметрыПодбора.Вставить("Договор", Объект.Договор);
ПараметрыПодбора.Вставить("Организация", Объект.Организация);
ПараметрыПодбора.Вставить("ВозвратОтРозничногоПокупателя", ВозвратОтРозничногоПокупателя);
ПараметрыПодбора.Вставить("ЧекККМ", Объект.ЧекККМ);
ПараметрыПодбора.Вставить("ПоказыватьТовары", Истина);
ПараметрыПодбора.Вставить("ПоказыватьТару", Не ВозвратОтРозничногоПокупателя И Объект.ВозвратПереданнойМногооборотнойТары);
ПараметрыПодбора.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ПараметрыПодбора.Вставить("ПредусмотренЗалогЗаТару", Объект.ПредусмотренЗалогЗаТару);
ПараметрыПодбора.Вставить("КлиентПартнер", Объект.КлиентПартнер);
ПараметрыПодбора.Вставить("КлиентКонтрагент", Объект.КлиентКонтрагент);
ПараметрыПодбора.Вставить("КлиентДоговор", Объект.КлиентДоговор);
ОткрытьФорму(
"ОбщаяФорма.ПодборТоваровПоРеализациямИПередачам",
ПараметрыПодбора,
ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодбор(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ВозвратТоваровОтКлиента.ФормаДокумента.Команда.ОткрытьПодбор");
Отказ = Ложь;
Если (ИспользоватьСоглашенияСКлиентами И Не ЗначениеЗаполнено(Объект.Соглашение))
Или Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
СообщитьОбОшибкахОткрытияПодбора(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрЗаголовок = НСтр("ru = 'Подбор товаров в %Документ%'");
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", Объект.Ссылка);
Иначе
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", НСтр("ru = 'возврат товаров от клиента'"));
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыФормы.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыФормы.Вставить("ВозвращатьМногооборотнуюТару", Объект.ВозвратПереданнойМногооборотнойТары);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("Заголовок", ПараметрЗаголовок);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Истина)));
ПараметрыФормы.Вставить("ПараметрыУказанияСерий",ПараметрыУказанияСерий);
ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыПоЗаказамОрдерам(Команда)
ОткрытьПодборПоРаспоряжениямОрдерам();
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВес(Команда)
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтаФорма);
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(
Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект, ТекущаяСтрока),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, ТекущаяСтрока) Экспорт
Если РезультатВыполнения.Результат Тогда
ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратПорчи(Команда)
Если Объект.ВозвратПорчи Тогда
ЕстьСтрокиСПорчей = ПроверитьОтключитьНастроитьФормуПоПорче();
Если ЕстьСтрокиСПорчей Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("ВозвратПорчиЗавершение", ЭтотОбъект), НСтр("ru='При выполнении операции будет очищена информация о качестве возвращаемых товаров. Продолжить?'"),РежимДиалогаВопрос.ДаНет,,КодВозвратаДиалога.Да);
КонецЕсли;
Иначе
Объект.ВозвратПорчи = Истина;
НастроитьФормуПоПорче();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратПорчиЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
Иначе
ОчиститьОтключитьНастроитьФормуПоПорче();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(Результат, Параметры) Экспорт
Если Результат.Результат Тогда
ОбработатьШтрихкоды(Результат.ТаблицаТоваров, Истина);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
ДополнительныеПараметры = УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеПараметровРазбиенияСтрокиТабличнойЧасти(ТаблицаФормы.ТекущиеДанные);
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект, ДополнительныеПараметры);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерии(Команда)
ОткрытьПодборСерий();
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыПечатиЗаявленияНаВозврат(Команда)
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("ТолькоПросмотр", ТолькоПросмотр);
СтруктураПараметров.Вставить("Контрагент", Объект.Контрагент);
СтруктураПараметров.Вставить("Покупатель", Объект.Покупатель);
СтруктураПараметров.Вставить("ДатаРожденияПокупателя", Объект.ДатаРожденияПокупателя);
СтруктураПараметров.Вставить("ПричинаВозврата", Объект.ПричинаВозврата);
СтруктураПараметров.Вставить("ВидДокументаПокупателя", Объект.ВидДокументаПокупателя);
СтруктураПараметров.Вставить("СерияДокументаПокупателя", Объект.СерияДокументаПокупателя);
СтруктураПараметров.Вставить("НомерДокументаПокупателя", Объект.НомерДокументаПокупателя);
СтруктураПараметров.Вставить("ДатаВыдачиДокументаПокупателя", Объект.ДатаВыдачиДокументаПокупателя);
СтруктураПараметров.Вставить("СрокДействияДокументаПокупателя", Объект.СрокДействияДокументаПокупателя);
СтруктураПараметров.Вставить("КемВыданДокументПокупателя", Объект.КемВыданДокументПокупателя);
СтруктураПараметров.Вставить("КодПодразделенияДокументаПокупателя", Объект.КодПодразделенияДокументаПокупателя);
СтруктураПараметров.Вставить("ДатаДокумента", Объект.Дата);
СтруктураПараметров.Вставить("Организация", Объект.Организация);
ОткрытьФорму("Обработка.ПечатьЗаявленияНаВозвратТоваровОтКлиента.Форма.РеквизитыПечатиЗаявленияНаВозврат", СтруктураПараметров, ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьРеализацииИЦены(Команда)
Если Объект["Товары"].Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru='В документе не заполнен список Товары. Документы продажи и цены не могут быть заполнены.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ЗаполнитьРеализацииИЦеныСервер();
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена();
КоличествоВставленных = Объект.Товары.Количество()-КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество");
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
ПараметрыЗагрузки.Организация = Объект.Организация;
ПараметрыЗагрузки.ЗагружатьЦены = Истина;
ПараметрыЗагрузки.ЗагружатьГТД = Истина;
ПараметрыЗагрузки.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыЗагрузки.НалогообложениеНДС = Объект.НалогообложениеНДС;
ПараметрыЗагрузки.ДатаЗаполнения = Объект.Дата;
ПараметрыЗагрузки.ЭтоВозвратнаяТара = Объект.ВозвратПереданнойМногооборотнойТары;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Дата = Объект.Дата;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Валюта = Объект.Валюта;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Соглашение = Объект.Соглашение;
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура СоставНабора(Команда)
ВыбраннаяСтрока = Элементы.Товары.ТекущаяСтрока;
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если НЕ ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПоказатьПредупреждение(,НСтр("ru = 'Открытие состава набора возможно только для набора.'"));
Возврат;
КонецЕсли;
ПараметрыКомплекта = Новый Структура;
ПараметрыКомплекта.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыКомплекта.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыКомплекта.Вставить("КолонкиНабора", КолонкиНабора());
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыКомплекта);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОткрытия.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ОтборПоТипуНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
Если ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
ПараметрыОткрытия.Вставить("ВидЦены", ЭтаФорма.ВидЦеныЧекаККМ);
ПараметрыОткрытия.Вставить("ЗапретРедактированияЦены", Истина);
КонецЕсли;
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСебестоимость(Команда)
Если Не РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
Возврат;
КонецЕсли;
ЗаполнитьСебестоимостьВТаблице();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияИС()
СоответствиеТребованиямГИСМТКлиент.ПроверитьВыполнениеЗадания(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаявку(Команда)
Если Модифицированность Или Не Объект.Проведен Тогда
Ответ = Неопределено;
ПоказатьВопрос(Новый ОписаниеОповещения("ЗакрытьЗаявкуЗавершение", ЭтотОбъект),
НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"),
РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗакрытьЗаявкуФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаявкуЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОчиститьСообщения();
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
ИначеЕсли Не Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение)) Тогда
Возврат;
КонецЕсли;
ЗакрытьЗаявкуФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаявкуФрагмент()
СписокЗаказовКЗакрытию = Новый СписокЗначений;
СписокЗаказовКЗакрытию.Добавить(Объект.ЗаявкаНаВозвратТоваровОтКлиента);
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия",
СтруктураЗакрытия,,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНомераГТДПоДокументамПродажиКоманда(Команда)
ЗаполнитьНомераГТД("ПоРаспоряжениям", "ДокументРеализации");
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНомераГТДПоПереданнымТоварамКоманда(Команда)
ЗаполнитьНомераГТД("ПоОстаткамПереданныхНаКомиссию");
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДС(Команда)
Если Объект.Товары.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'В список ""Товары"" не введено ни одной строки.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьСтавкуНДСЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ТипНалогообложенияНДС", Объект.НалогообложениеНДС);
ПараметрыФормы.Вставить("ДатаАктуальности", Объект.Дата);
ОткрытьФорму("Справочник.СтавкиНДС.ФормаВыбора", ПараметрыФормы,,,,, ОповещениеОЗакрытии);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьВидимостьЭлементовПоНесколькимСкладам()
Элементы.ГруппаНадписьИКартинкаНесколькоСкладов.Видимость = СкладГруппа;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСкладаВТабличнойЧастиСервер()
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Соглашение.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Соглашение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Соглашение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Соглашение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтотОбъект);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
ПараметрыУсловногоОформления = НоменклатураСервер.ПараметрыУстановкиУсловногоОформленияНомераГТД();
ПараметрыУсловногоОформления.ИмяПоляВводаНомераГТД = "ТоварыНомерГТДСтранаПроисхождения";
НоменклатураСервер.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект, ПараметрыУсловногоОформления);
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект);
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеУчетаПоГТДВДокументахКомиссионера(ЭтотОбъект, Ложь);
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеКоличестваПоРНПТ(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыХарактеристикаОприходование.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ХарактеристикиИспользуютсяОприходование");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Порча");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<характеристики не используются>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураОприходование.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыХарактеристикаОприходование.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Порча");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаСНДС.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаНДС.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтавкаНДС.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатура.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыХарактеристика.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураОприходование.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыХарактеристикаОприходование.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаявкаНаВозвратТоваровОтКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСпособОпределенияСебестоимостиСтрокой.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСпособОпределенияСебестоимостиСтрокой.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СпособОпределенияСебестоимости");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СпособыОпределенияСебестоимостиВозврата.ИзДокументаПродажи;
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДокументРеализации.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ДокументРеализации");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтавкаНДС.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратПереданнойМногооборотнойТары");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураОприходование.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураОприходованиеТипНоменклатуры.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураОприходованиеКод.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураОприходованиеАртикул.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыХарактеристикаОприходование.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПорча.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаявкаНаВозвратТоваровОтКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратПорчи");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Цена");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
ГруппаОтбора3 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратПереданнойМногооборотнойТары");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПредусмотренЗалогЗаТару");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Сумма");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
ГруппаОтбора3 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратПереданнойМногооборотнойТары");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПредусмотренЗалогЗаТару");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтотОбъект, Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтотОбъект, Ложь);
НаборыСервер.УстановитьУсловноеОформление(ЭтотОбъект, "Товары");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДокументРеализации.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСпособОпределенияСебестоимостиСтрокой.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЧекККМ");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДокументРеализации.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.МногооборотнаяТара;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратПереданнойМногооборотнойТары");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДокументРеализации.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.СпособОпределенияСебестоимости");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СпособыОпределенияСебестоимостиВозврата.ИзДокументаПродажи;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<заполнение не требуется>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтотОбъект);
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ПартнерПриИзмененииСервер()
МассивРеквизитов = Новый Массив;
Если ИспользоватьСоглашенияСКлиентами Тогда
ЗаполнитьУсловияПродаж();
МассивРеквизитов.Добавить("Валюта");
МассивРеквизитов.Добавить("Договор");
МассивРеквизитов.Добавить("НаправлениеДеятельности");
МассивРеквизитов.Добавить("Контрагент");
МассивРеквизитов.Добавить("Организация");
МассивРеквизитов.Добавить("Соглашение");
Иначе
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
ИспользоватьДоговорыСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
Если ИспользоватьДоговорыСКлиентами Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
КонецЕсли;
ЗаполнитьСлужебныеРеквизитыТабличнойЧасти();
УстановитьВидимостьДоговора();
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Партнер", "ТолькоПросмотр", ЗначениеЗаполнено(Объект.ЧекККМ));
ОбновитьТекстСчетаФактурыПолученные();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ОбновитьИнформациюПоРеализациям();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
МассивРеквизитов.Добавить("Партнер");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивРеквизитов);
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ДокументОснование = ПродажиСервер.ДокументОснование(Объект,
"ЗаявкаНаВозвратТоваровОтКлиента, ДокументРеализации, Товары.ДокументРеализации");
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, ДокументОснование);
КонецПроцедуры
&НаСервере
Процедура ПартнерОчисткаСервер()
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ДокументОснование = ПродажиСервер.ДокументОснование(Объект,
"ЗаявкаНаВозвратТоваровОтКлиента, ДокументРеализации, Товары.ДокументРеализации");
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, ДокументОснование);
КонецПроцедуры
&НаСервере
Процедура СоглашениеПриИзмененииСервер()
СтараяВалюта = ВалютаДокумента;
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоСоглашению();
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, ДокументПродажи);
ДокументОснование = ПродажиСервер.ДокументОснование(ДокументПродажи,
"ЗаявкаНаВозвратТоваровОтКлиента, ДокументРеализации, Товары.ДокументРеализации");
ОтветственныеЛицаСервер.УстановитьМенеджера(ДокументПродажи, ДокументОснование);
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
ВалютаДокумента = Объект.Валюта;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
ДатаРеализации = ?(ЗначениеЗаполнено(Объект.ДокументРеализации), ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ДокументРеализации, "Дата"), Объект.Дата);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
ПараметрыЗаполнитьСтавкуНДС.Дата = ДатаРеализации;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ЗаполнитьСпособОпределенияСебестоимостиСтрокой", ПараметрыОпределенияСебестоимости(ЭтотОбъект));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ВыполнитьПересчетСуммДокументаСервер(СтараяВалюта, ВалютаДокумента);
ХозяйственнаяОперацияПриИзмененииСервер();
ЗаполнитьСлужебныеРеквизитыТабличнойЧасти();
ЗаполнитьУстановитьВидимостьСерийДоступностьПерезаполненияПоПриемке();
УстановитьВидимостьДоговора();
ОбновитьТекстСчетаФактурыПолученные();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ПредусмотренЗалогЗаТару",
"Доступность",
Объект.ВозвратПереданнойМногооборотнойТары);
РассчитатьИтоговыеПоказателиВозврата(ЭтотОбъект);
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СоглашениеОчисткаСервер()
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ДокументОснование = ПродажиСервер.ДокументОснование(Объект,
"ЗаявкаНаВозвратТоваровОтКлиента, ДокументРеализации, Товары.ДокументРеализации");
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, ДокументОснование);
КонецПроцедуры
&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииСервер()
ВозвратТоваровЧерезКомиссионера = КомиссионнаяТорговляСервер.ВозвратТоваровЧерезКомиссионера(Объект.ХозяйственнаяОперация);
ИспользоватьНаправленияДеятельности = ИспользоватьНаправленияДеятельности И Не ВозвратТоваровЧерезКомиссионера;
ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере();
УстановитьСвязиПараметровВыбораДоговора();
ХозяйственнаяОперацияДоговора = ПолучитьХозяйственнуюОперациюДоговора(Объект.ХозяйственнаяОперация);
НоваяХозяйственнаяОперацияСоглашения = СамообслуживаниеКлиентСервер.ХозяйственнаяОперацияСоглашения(Объект.ХозяйственнаяОперация);
Если ИспользоватьСоглашенияСКлиентами
И НоваяХозяйственнаяОперацияСоглашения <> ХозяйственнаяОперацияСоглашения Тогда
ХозяйственнаяОперацияСоглашения = НоваяХозяйственнаяОперацияСоглашения;
Объект.Соглашение = Неопределено;
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
Объект.РасшифровкаПлатежа.Очистить();
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
Объект.Сделка = Справочники.СделкиСКлиентами.ПустаяСсылка();
Объект.ВозвратПереданнойМногооборотнойТары = Ложь;
Объект.ПредусмотренЗалогЗаТару = Ложь;
ВозвратПереданнойМногооборотнойТарыПриИзмененииСервер();
Объект.СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ВернутьДенежныеСредства;
КонецЕсли;
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
Объект.ВыданыДенежныеСредства = Ложь;
Объект.ДатаРасходногоКассовогоОрдера = Неопределено;
Объект.НомерРасходногоКассовогоОрдера = "";
КонецЕсли;
ОбновитьТекстСчетаФактурыПолученные();
УстановитьУсловноеОформление();
УстановитьВидимостьЭлементовПоОперацииСервер();
УстановитьДоступностьРеквизитовРасходногоКассовогоОрдераСервер();
УстановитьДоступностьСпособаКомпенсации(ЭтотОбъект);
РассчитатьИтоговыеПоказателиВозврата(ЭтотОбъект);
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИнтерактивномИзмененииХозяйственнойОперацииСервер()
Объект.ЧекККМ = Неопределено;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
ПартнерИзменен = Ложь;
Объект.ВозвратПереданнойМногооборотнойТары = Ложь;
Объект.ПредусмотренЗалогЗаТару = Ложь;
ВозвратПереданнойМногооборотнойТарыПриИзмененииСервер();
Если Объект.Партнер <> Справочники.Партнеры.РозничныйПокупатель Тогда
Объект.Партнер = Справочники.Партнеры.РозничныйПокупатель;
ПартнерИзменен = Истина;
КонецЕсли;
Если ПартнерИзменен Тогда
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
Объект.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
ПартнерПриИзмененииСервер();
УстановитьВидимостьЭлементовПоОперацииСервер();
ЗаполнитьДоговорПоУмолчанию();
ОбновитьИнформациюПоРеализациям();
Возврат;
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Партнер", "ТолькоПросмотр", ЗначениеЗаполнено(Объект.ЧекККМ));
ХозяйственнаяОперацияПриИзмененииСервер();
ЗаполнитьДоговорПоУмолчанию();
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
ОбновитьИнформациюПоРеализациям();
КонецПроцедуры
&НаСервере
Процедура ВалютаПриИзмененииСервер(НоваяВалюта, ПересчитатьЦены = Истина)
ЗаполнитьДоговорПоУмолчанию();
СтараяВалюта = ВалютаДокумента;
ВыполнитьПересчетСуммДокументаСервер(СтараяВалюта, НоваяВалюта);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Валюта");
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
УстановитьВидимостьДоговора();
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьДоговорПоУмолчанию();
ОбновитьТекстСчетаФактурыПолученные();
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
КонецЕсли;
Для каждого СтрокаТовары Из Объект.Товары Цикл
СтрокаТовары.СпособОпределенияСебестоимости = Перечисления.СпособыОпределенияСебестоимостиВозврата.ИзТекущегоДокумента;
КонецЦикла;
УстановитьПредставлениеСебестоимости();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Организация");
ДокументОснование = ПродажиСервер.ДокументОснование(Объект,
"ЗаявкаНаВозвратТоваровОтКлиента, ДокументРеализации, Товары.ДокументРеализации");
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, ДокументОснование);
ПересчитатьКоличествоРНПТ();
КонецПроцедуры
&НаСервере
Процедура СкладПриИзмененииСервер()
СкладГруппа = ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Объект.Склад);
УстановитьПараметрыВыбораТоварыСклад();
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.Товары, Истина);
ОпределитьНаличиеОрдернойСхемы();
УстановитьЗаголовокДоступностьПодобратьТоварыПоЗаказамОрдерам();
УстановитьВидимостьЭлементовПоНесколькимСкладам();
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
ЗаполнитьУстановитьВидимостьСерийДоступностьПерезаполненияПоПриемке();
ПересчитатьКоличествоРНПТ();
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
УстановитьВидимостьДоговора();
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Контрагент");
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
КонецПроцедуры
&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары,СтруктураДействий, КэшированныеЗначения);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер()
КэшированныеЗначенияСлужебный = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Ложь, Объект.ВозвратПереданнойМногооборотнойТары));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначенияСлужебный);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначенияСлужебный.ОбработанныеСтроки,
СтруктураДействий,
Объект.Товары,
Неопределено);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииСервер()
ИспользоватьУчетПрослеживаемыхИмпортныхТоваров =
УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(Объект.Дата);
УчетПрослеживаемыхТоваровЛокализация.УстановитьВидимостьКоличестваРНПТ(ЭтаФорма, Объект.Дата);
Если Не Элементы.ТоварыГруппаКоличествоПоРНПТ.Видимость Тогда
ПересчитатьКоличествоРНПТ();
КонецЕсли;
ОпределитьНаличиеОрдернойСхемы();
УстановитьЗаголовокДоступностьПодобратьТоварыПоЗаказамОрдерам();
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
ОбновитьТекстСчетаФактурыПолученные();
ЗаполнитьУстановитьВидимостьСерийДоступностьПерезаполненияПоПриемке();
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииСервер()
Если ЗначениеЗаполнено(Объект.Договор) Тогда
Объект.ОплатаВВалюте = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ОплатаВВалюте");
КонецЕсли;
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ЗаполнитьДоговорКонечногоКлиентаПоУмолчанию();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Договор");
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ДокументОснование = ПродажиСервер.ДокументОснование(Объект,
"ЗаявкаНаВозвратТоваровОтКлиента, ДокументРеализации, Товары.ДокументРеализации");
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, ДокументОснование);
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "НаправлениеДеятельности");
КонецПроцедуры
&НаСервере
Процедура КлиентПартнерПриИзмененииНаСервере()
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.КлиентПартнер, Объект.КлиентКонтрагент);
КлиентКонтрагентПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура КлиентКонтрагентПриИзмененииНаСервере()
ЗаполнитьДоговорКонечногоКлиентаПоУмолчанию();
КлиентДоговорПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура КлиентДоговорПриИзмененииНаСервере()
ОбновитьИнформациюПоРеализациям();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Договор");
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ВыборСпособаОпределенияСебестоимостиЗавершение(РезультатВыбора, ДополнительныеПараметры) Экспорт
Если ТипЗнч(РезультатВыбора) = Тип("Структура") Тогда
Строки = РезультатВыбора.СтрокиТаблицыТовары;
Для Каждого Строка Из Строки Цикл
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(Строка.Идентификатор);
Если СтрокаТаблицы <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(СтрокаТаблицы, Строка);
КонецЕсли;
КонецЦикла;
ОбновитьИнформациюПоРеализациям();
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаКлиенте
Процедура ОткрытьПодборПоРаспоряжениямОрдерам()
РеквизитыШапки = Новый Структура("Организация, Склад, Организация, Подразделение, ХозяйственнаяОперация, ВариантПриемкиТоваров, Ссылка");
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Объект);
ДополнительныеПоля = Новый Структура;
ДополнительныеПоля.Вставить("ДатаПоступления");
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("РеквизитыШапки", РеквизитыШапки);
ПараметрыФормы.Вставить("Заказ", Объект.ЗаявкаНаВозвратТоваровОтКлиента);
ПараметрыФормы.Вставить("ОрдернаяСхемаПриОтгрузке", Ложь);
ПараметрыФормы.Вставить("ОрдернаяСхемаПриПоступлении", ОрдернаяСхема);
ПараметрыФормы.Вставить("НакладнаяПоЗаказам", ЗначениеЗаполнено(Объект.ЗаявкаНаВозвратТоваровОтКлиента));
ПараметрыФормы.Вставить("АдресТовары", АдресТоварыНакладной());
ПараметрыФормы.Вставить("АдресШтрихкодыУпаковок", АдресШтрихкодыУпаковок());
ПараметрыФормы.Вставить("Накладная", Объект.Ссылка);
ПараметрыФормы.Вставить("ИспользоватьНакладныеПоНесколькимЗаказам", Ложь);
ПараметрыФормы.Вставить("ИспользуютсяЗаказы", Истина);
ПараметрыФормы.Вставить("ДополнительныеПоля", ДополнительныеПоля);
ОткрытьФорму("ОбщаяФорма.ПодборТоваровИзЗаказа",
ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументе(Команда)
ПроверитьКоличествоВДокументеКлиент();
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеКлиент()
ВыгруженаТолькоНеМаркируемаяПродукция = Истина;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресТоварыНакладной(ВыгруженаТолькоНеМаркируемаяПродукция));
ПараметрыОткрытия.Вставить("ИмяТабличнойЧасти", "Товары");
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ПревышениеКоличестваТоваровРазрешено", Не ЗначениеЗаполнено(Объект.ЗаявкаНаВозвратТоваровОтКлиента));
ПараметрыОткрытия.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("ВыгруженаТолькоНеМаркируемаяПродукция", ВыгруженаТолькоНеМаркируемаяПродукция);
ОткрытьФорму("ОбщаяФорма.ПроверкаЗаполненияДокументов", ПараметрыОткрытия,,,,, Новый ОписаниеОповещения("ПроверитьКоличествоВДокументеЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВозвращаемыеПараметры = Результат;
Если ВозвращаемыеПараметры <> Неопределено Тогда
ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, ?(КэшированныеЗначения = Неопределено, ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения(), КэшированныеЗначения));
Модифицированность = Истина;
ОбщегоНазначенияУТКлиент.ВывестиСообщениеПревышенияПоКоличеству(ВозвращаемыеПараметры, НСтр("ru = 'введенного на основании распоряжения.'"));
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СообщитьОбОшибкахОткрытияПодбора(Отказ)
Если ИспользоватьСоглашенияСКлиентами И Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Соглашение"" не заполнено'"), Объект.Ссылка, "Объект.Соглашение",,Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Валюта"" не заполнено'"), Объект.Ссылка, "Объект.Валюта",,Отказ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборПоРеализацииСервер(ВыбранноеЗначение)
СтруктураВозвращаемыхЗначений = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
ТаблицаТоваров = СтруктураВозвращаемыхЗначений.Товары;
СтруктураШапки = СтруктураВозвращаемыхЗначений.СтруктураШапки;
ВозвратОтРозничногоПокупателя = (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя);
КоличествоТоваровПервоначально = Объект.Товары.Количество();
СкладЭтоГруппа = Ложь;
Если ЗначениеЗаполнено(Объект.Склад) Тогда
СкладЭтоГруппа = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Склад, "ЭтоГруппа");
КонецЕсли;
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ТекущаяСтрока.ДокументРеализации = СтрокаТовара.ДокументРеализацииПередачи;
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ТекущаяСтрока.Цена = ТекущаяСтрока.Сумма / ТекущаяСтрока.КоличествоУпаковок;
Если ВозвратОтРозничногоПокупателя Тогда
ТекущаяСтрока.ДокументРеализации = ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(СтрокаТовара.ДокументРеализацииПередачи);
ТекущаяСтрока.СпособОпределенияСебестоимости = Перечисления.СпособыОпределенияСебестоимостиВозврата.ИзДокументаПродажи;
ИначеЕсли ЗначениеЗаполнено(ТекущаяСтрока.ДокументРеализации) Тогда
ТекущаяСтрока.СпособОпределенияСебестоимости = Перечисления.СпособыОпределенияСебестоимостиВозврата.ИзДокументаПродажи;
Иначе
ТекущаяСтрока.СпособОпределенияСебестоимости = Перечисления.СпособыОпределенияСебестоимостиВозврата.ИзТекущегоДокумента;
КонецЕсли;
Если Не ЗначениеЗаполнено(СтрокаТовара.Склад)
И ЗначениеЗаполнено(Объект.Склад)
И Не СкладГруппа Тогда
ТекущаяСтрока.Склад = Объект.Склад;
КонецЕсли;
КонецЦикла;
Объект.Партнер = СтруктураШапки.Партнер;
Если ЗначениеЗаполнено(СтруктураШапки.ЧекККМ) Тогда
Если НЕ ЗначениеЗаполнено(Объект.ЧекККМ) И КоличествоТоваровПервоначально=0 Тогда
Объект.ЧекККМ = СтруктураШапки.ЧекККМ;
Объект.Партнер = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ЧекККМ, "Партнер");
ПартнерПриИзмененииСервер();
КонецЕсли;
КонецЕсли;
ЗаполнитьСлужебныеРеквизитыТабличнойЧасти();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСпособОпределенияСебестоимостиСтрокой", ПараметрыОпределенияСебестоимости(ЭтаФорма));
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
ОбновитьИнформациюПоРеализациям();
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СписокСвойств = "НоменклатураНабора, ХарактеристикаНабора, Номенклатура, Характеристика,
|ХарактеристикиИспользуются, Упаковка, Цена, КоличествоУпаковок, Серия";
Если ЗначениеЗаполнено(Объект.Склад) Тогда
СписокСвойств = СписокСвойств + ", Склад";
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
СтруктураДействий.Вставить("ЗаполнитьСпособОпределенияСебестоимости",Перечисления.СпособыОпределенияСебестоимостиВозврата.ИзТекущегоДокумента);
СтруктураДействий.Вставить("ЗаполнитьСпособОпределенияСебестоимостиСтрокой", ПараметрыОпределенияСебестоимости(ЭтотОбъект));
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара,СписокСвойств);
ТекущаяСтрока.ИндексНабора = ?(ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора), 1, 0);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыТабличнойЧасти();
ПриИзмененииСкладаВТабличнойЧастиСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов, ЗагрузкаИзТСД = Ложь)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСпособОпределенияСебестоимости",
ПредопределенноеЗначение("Перечисление.СпособыОпределенияСебестоимостиВозврата.ИзТекущегоДокумента"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСпособОпределенияСебестоимостиСтрокой", ПараметрыОпределенияСебестоимости(ЭтаФорма));
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействийСДобавленнымиСтроками);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСДобавленнымиСтроками, ЭтаФорма);
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСИзмененнымиСтроками, ЭтаФорма);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
СтруктураДействий.ТолькоТовары = Истина;
СтруктураДействий.РассчитыватьНаборы = Истина;
СтруктураДействий.ШтрихкодыВТЧ = Истина;
СтруктураДействий.ЗагрузкаИзТСД = ЗагрузкаИзТСД;
ОбработатьШтрихкодыСервер(СтруктураДействий, КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий, КэшированныеЗначения, ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
Если ТекущиеДанныеИдентификатор <> Неопределено Тогда
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(, ТекущиеДанные);
КонецЕсли;
КонецЕсли;
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма, Объект,СтруктураПараметровДействия,КэшированныеЗначения);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ОбновлятьКоличествоТоваровПриРегистрацииСерий", Истина);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
НоменклатураСервер.ОбработатьУказаниеСерий(Объект,ПараметрыУказанияСерий,ПараметрыФормыУказанияСерий,СтруктураДействий);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект,
ПараметрыУказанияСерий, ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект, ПараметрыУказанияСерий, ТекущиеДанныеИдентификатор, ЭтаФорма);
КонецФункции
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено, ОповещениеПриЗавершении = Неопределено)
Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтотОбъект,ПараметрыУказанияСерий,Текст, ТекущиеДанные)Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий);
ДополнительныеПараметры.Вставить("ОповещениеПриЗавершении", ОповещениеПриЗавершении);
ОткрытьФорму(
ПараметрыФормыУказанияСерий.ИмяФормы,
ПараметрыФормыУказанияСерий,
ЭтотОбъект,,,,
Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение", ЭтотОбъект, ДополнительныеПараметры),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПараметрыФормыУказанияСерий = ДополнительныеПараметры.ПараметрыФормыУказанияСерий;
Если Результат <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий);
КонецЕсли;
Если ДополнительныеПараметры.Свойство("ОповещениеПриЗавершении") Тогда
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОповещениеПриЗавершении);
КонецЕсли;
ТоварыСерияПересчитатьЦены();
КонецПроцедуры
#КонецОбласти
#Область НомераГТД
&НаКлиенте
Процедура ОбработатьПодборНомераГТД(РезультатПодбора)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ИдентификаторСтроки = ТекущиеДанные.ПолучитьИдентификатор();
Если ИдентификаторСтроки = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполненыНомераГТД = Ложь;
НомерГТД = Неопределено;
ОбработатьУказаниеНомераГТДСервер(ИдентификаторСтроки, РезультатПодбора, ЗаполненыНомераГТД, НомерГТД);
ЗакупкиКлиент.ОповеститьОЗаполненииНомеровГТДВТабличнойЧасти(ЗаполненыНомераГТД, НомерГТД);
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеНомераГТДСервер(ИдентификаторСтроки,
РезультатПодбора,
ЗаполненыНомераГТД,
НомерГТД)
ДанныеПодбора = ПолучитьИзВременногоХранилища(РезультатПодбора.АдресВоВременномХранилище);
НомерГТД = ?(ДанныеПодбора.ОстаточныйНомерГТД <> Неопределено,
НомерГТД,
ДанныеПодбора.ОсновнойНомерГТД);
ДействияОбработки = Новый Структура;
Если ДанныеПодбора.ОстаточныйНомерГТД <> Неопределено Тогда
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ДействияОбработки, ЭтотОбъект);
Иначе
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ДействияОбработки, ЭтотОбъект);
КонецЕсли;
ЗакупкиСервер.ОбработатьУказаниеНомераГТД(ЭтотОбъект,
ИдентификаторСтроки,
ДанныеПодбора,
ЗаполненыНомераГТД,
Неопределено,
ДействияОбработки);
РассчитатьИтоговыеПоказателиВозврата(ЭтотОбъект);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНомераГТД(ВариантПолученияДанных, ИмяПоляРаспоряжение = "")
ЕстьЗаполненныеНомераГТД = Ложь;
Для Каждого СтрокаТоваров Из Объект.Товары Цикл
Если ЗначениеЗаполнено(СтрокаТоваров.НомерГТД) Тогда
ЕстьЗаполненныеНомераГТД = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЕстьЗаполненныеНомераГТД Тогда
ПараметрыОповещения = Новый Структура("ВариантПолученияДанных, ИмяПоляРаспоряжение",
ВариантПолученияДанных, ИмяПоляРаспоряжение);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьНомераГТДЗавершение", ЭтотОбъект, ПараметрыОповещения);
ТекстВопроса = НСтр("ru = 'Будут очищены и перезаполнены номера ГТД. Продолжить?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ЗаполнитьНомераГТДСервер(ВариантПолученияДанных, ИмяПоляРаспоряжение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНомераГТДЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ВариантПолученияДанных = ДополнительныеПараметры.ВариантПолученияДанных;
ИмяПоляРаспоряжение = ДополнительныеПараметры.ИмяПоляРаспоряжение;
ЗаполнитьНомераГТДСервер(ВариантПолученияДанных, ИмяПоляРаспоряжение);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНомераГТДСервер(ВариантПолученияДанных, ИмяПоляРаспоряжение)
ПараметрыЗаполнения = ЗакупкиСервер.ПараметрыЗаполненияНомеровГТДПоУчетнымДанным();
ПараметрыЗапроса = ПараметрыЗаполнения.ПараметрыЗапроса;
ПараметрыЗапроса.Ссылка = Объект.Ссылка;
Если ВариантПолученияДанных = "ПоРаспоряжениям" Тогда
ПараметрыЗаполнения.ИмяПоляРаспоряжение = ИмяПоляРаспоряжение;
Иначе
ДатаПериода = КонецДня(ТекущаяДатаСеанса());
Период = Новый Граница(ДатаПериода, ВидГраницы.Включая);
ПараметрыЗапроса.Период = Период;
ПараметрыЗапроса.Партнер = Объект.Партнер;
Если ВариантПолученияДанных = "ПоОстаткамПереданныхНаКомиссию" Тогда
ПараметрыЗапроса.Организация = Объект.Организация;
КонецЕсли;
КонецЕсли;
ПараметрыПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ДействияСоСтрокой = Новый Структура;
ДействияСоСтрокой.Вставить("ПересчитатьСумму");
ДействияСоСтрокой.Вставить("ПересчитатьСуммуНДС", ПараметрыПересчетаСуммы);
ДействияСоСтрокой.Вставить("ПересчитатьСуммуСНДС", ПараметрыПересчетаСуммы);
ДействияСоСтрокой.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтотОбъект, ДействияСоСтрокой);
ПараметрыЗаполнения.ДействияСоСтрокой = ДействияСоСтрокой;
ЗакупкиСервер.ЗаполнитьНомераГТДПоУчетнымДанным(Объект.Товары, ВариантПолученияДанных, ПараметрыЗаполнения);
РассчитатьИтоговыеПоказателиВозврата(ЭтотОбъект);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область Порча
&НаСервере
Функция ПроверитьОтключитьНастроитьФормуПоПорче()
ЕстьСтрокиСПорчей =
Объект.Товары.НайтиСтроки(Новый Структура("НоменклатураОприходование", Справочники.Номенклатура.ПустаяСсылка())).Количество()
<> Объект.Товары.Количество();
Если Не ЕстьСтрокиСПорчей Тогда
Объект.ВозвратПорчи = Ложь;
НастроитьФормуПоПорче();
КонецЕсли;
Возврат ЕстьСтрокиСПорчей;
КонецФункции
&НаСервере
Процедура НастроитьФормуПоПорче()
Элементы.ВозвратПорчи.Пометка = Объект.ВозвратПорчи;
Элементы.ТоварыГруппаРанееОтгруженныйТовар.ОтображатьВШапке = Объект.ВозвратПорчи;
Элементы.ТоварыГруппаВозвращаемыйТовар.Видимость = Объект.ВозвратПорчи;
КонецПроцедуры
&НаСервере
Процедура ОчиститьОтключитьНастроитьФормуПоПорче()
Объект.ВозвратПорчи = Ложь;
НастроитьФормуПоПорче();
Для Каждого СтрТабл Из Объект.Товары Цикл
СтрТабл.Порча = Ложь;
СтрТабл.НоменклатураОприходование = Справочники.Номенклатура.ПустаяСсылка();
СтрТабл.ХарактеристикаОприходование = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
КонецЦикла;
Если ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры Тогда
Для Каждого СтрТабл Из Объект.Серии Цикл
СтрТабл.НоменклатураОприходование = Справочники.Номенклатура.ПустаяСсылка();
СтрТабл.ХарактеристикаОприходование = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПроверитьНаличиеГрадацииСервер(ТоварИсходногоКачества, ТоварДругогоКачества)
Возврат РегистрыСведений.ТоварыДругогоКачества.ПроверитьНаличиеГрадации(ТоварИсходногоКачества, ТоварДругогоКачества);
КонецФункции
#КонецОбласти
#Область Наборы
&НаКлиентеНаСервереБезКонтекста
Функция КолонкиНабора()
Колонки = Новый Массив;
Колонки.Добавить("Номенклатура");
Колонки.Добавить("Характеристика");
Колонки.Добавить("Цена");
Колонки.Добавить("Упаковка");
Колонки.Добавить("Количество");
Колонки.Добавить("КоличествоУпаковок");
Колонки.Добавить("СтавкаНДС");
Колонки.Добавить("СуммаНДС");
Колонки.Добавить("СуммаСНДС");
Колонки.Добавить("Сумма");
Возврат Колонки;
КонецФункции
&НаКлиенте
Процедура ПриУдаленииКомплектующих(Действие, ДополнительныйПараметр) Экспорт
Если НаборыКлиент.ДействиеРедактироватьНабор(Действие) Тогда
НаборыКлиент.ПриУдаленииКомплектующих(ЭтаФорма, "Товары", ДополнительныйПараметр);
ИначеЕсли НаборыКлиент.ДействиеУдалитьВесьНабор(Действие) Тогда
ПриУдаленииКомплектующихНаСервере("Товары", ДополнительныйПараметр);
КонецЕсли;
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПриУдаленииКомплектующихНаСервере(ИмяТЧ, ДополнительныйПараметр)
НаборыСервер.ПриУдаленииКомплектующих(ЭтаФорма, ИмяТЧ, ДополнительныйПараметр);
КонецПроцедуры
&НаСервере
Функция АдресНабораВоВременномХранилище(Параметры)
Возврат НаборыСервер.АдресНабораВоВременномХранилище(ЭтаФорма, Параметры, "Товары");
КонецФункции
&НаСервере
Процедура ПриОкончанииРедактированияНабора(АдресВоВременномХранилище)
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействийСДобавленнымиСтроками);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПараметрыДанных = Новый Структура;
ПараметрыДанных.Вставить("Данные", ПолучитьИзВременногоХранилища(АдресВоВременномХранилище));
ПараметрыДанных.Вставить("СтруктураДействийСИзмененнымиСтроками", СтруктураДействийСИзмененнымиСтроками);
ПараметрыДанных.Вставить("СтруктураДействийСДобавленнымиСтроками", СтруктураДействийСДобавленнымиСтроками);
ПараметрыДанных.Вставить("КолонкиНабора", КолонкиНабора());
НаборыСервер.ПриОкончанииРедактированияНабора(ЭтаФорма, "Товары", ПараметрыДанных);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервереБезКонтекста
Функция ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Склад)
Возврат Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовПродажи(Склад);
КонецФункции
&НаСервере
Процедура ТоварыПослеУдаленияНаСервере(НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения)
Если НеобходимоОбновитьСтатусыСерий Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения);
КонецЕсли;
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
ОбновитьИнформациюПоРеализациям();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ИспользоватьЗаявкиНаВозврат = ПолучитьФункциональнуюОпцию("ИспользоватьЗаявкиНаВозвратТоваровОтКлиентов");
ИспользоватьСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности");
ВозвратТоваровЧерезКомиссионера = КомиссионнаяТорговляСервер.ВозвратТоваровЧерезКомиссионера(Объект.ХозяйственнаяОперация);
ИспользоватьНаправленияДеятельности = ИспользоватьНаправленияДеятельности И Не ВозвратТоваровЧерезКомиссионера;
ИспользоватьУчетПрослеживаемыхИмпортныхТоваров =
УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(Объект.Дата);
ВалютаУправленческогоУчета = Константы.ВалютаУправленческогоУчета.Получить();
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
ИспользоватьРеглУчет = ПолучитьФункциональнуюОпцию("ИспользоватьРеглУчет");
ВалютаДокумента = Объект.Валюта;
СкладГруппа = ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Объект.Склад);
УстановитьПараметрыВыбораТоварыСклад();
ОпределитьНаличиеОрдернойСхемы();
ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере();
УстановитьВидимостьЭлементовПоОперацииСервер();
УстановитьВидимостьЭлементовПоНесколькимСкладам();
УстановитьДоступностьРеквизитовРасходногоКассовогоОрдераСервер();
ЗаполнитьУстановитьВидимостьСерийДоступностьПерезаполненияПоПриемке();
ИспользоватьПартнеровКакКонтрагентов = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов");
ЗапретитьПоступлениеТоваровБезНомеровГТД = ПолучитьФункциональнуюОпцию("ЗапретитьПоступлениеТоваровБезНомеровГТД");
УстановитьЗаголовокДоступностьПодобратьТоварыПоЗаказамОрдерам();
ЗаполнитьРеквизитыФормыИзЧекаККМ(Объект.ЧекККМ, Новый Структура("ВидЦеныЧекаККМ", "ВидЦены"));
ЗаполнитьСлужебныеРеквизитыТабличнойЧасти();
УстановитьПредставлениеСебестоимости();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиВозврата(ЭтотОбъект);
РассчитатьСуммуКомпенсации(ЭтотОбъект);
ХозяйственнаяОперацияДоговора = ПолучитьХозяйственнуюОперациюДоговора(Объект.ХозяйственнаяОперация);
ХозяйственнаяОперацияСоглашения = СамообслуживаниеКлиентСервер.ХозяйственнаяОперацияСоглашения(Объект.ХозяйственнаяОперация);
УстановитьВидимостьДоговора();
УстановитьСвязиПараметровВыбораДоговора();
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
НастроитьФормуПоПорче();
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Партнер", "ТолькоПросмотр", ЗначениеЗаполнено(Объект.ЧекККМ));
ОбновитьТекстСчетаФактурыПолученные();
ОбновитьИнформациюПоРеализациям();
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ПредусмотренЗалогЗаТару",
"Доступность",
Объект.ВозвратПереданнойМногооборотнойТары);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ПараметрыЗаполнения = Документы.ВозвратТоваровОтКлиента.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьХозяйственнуюОперациюДоговора(ХозяйственнаяОперация)
Если ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера") Тогда
Возврат ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию");
ИначеЕсли ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента") Тогда
Возврат ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту");
ИначеЕсли ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратТоваровЧерезКомиссионера") Тогда
Возврат ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию");
Иначе
Возврат ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПустаяСсылка");
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Форма)
Объект = Форма.Объект;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС",СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС",СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(Форма, СтруктураДействий);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(Форма, СтруктураДействий)
Объект = Форма.Объект;
ЭтоВозвратОтКомиссионера = Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера");
Если ЭтоВозвратОтКомиссионера
И Форма.КомиссионерНеВедетУчетПоРНПТ Тогда
Возврат;
КонецЕсли;
ИмяПоляСклад = ?(ЭтоВозвратОтКомиссионера, "Партнер", "Склад");
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействий,
ИмяПоляСклад);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
Если Не ПравоДоступа("Чтение", Метаданные.Справочники.ДоговорыКонтрагентов) Тогда
Возврат;
КонецЕсли;
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
ВалютаВзаиморасчетовДляДоговора = ?(ВозвратТоваровЧерезКомиссионера, Неопределено, Объект.Валюта);
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
И ИспользоватьНаправленияДеятельности Тогда
Объект.Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(Объект,
ХозяйственнаяОперацияДоговора,
ВалютаВзаиморасчетовДляДоговора,
Объект.НаправлениеДеятельности,
ВозвратТоваровЧерезКомиссионера);
Иначе
Объект.Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(Объект,
ХозяйственнаяОперацияДоговора,
ВалютаВзаиморасчетовДляДоговора,
,
ВозвратТоваровЧерезКомиссионера);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорКонечногоКлиентаПоУмолчанию()
Если ВозвратТоваровЧерезКомиссионера Тогда
Объект.КлиентДоговор = КомиссионнаяТорговляСервер.ПолучитьДоговорПоУмолчанию(Объект,
Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПолучитьРасшифровкуПлатежаИзХранилища(АдресПлатежейВХранилище)
Объект.РасшифровкаПлатежа.Загрузить(ПолучитьИзВременногоХранилища(АдресПлатежейВХранилище));
ВзаиморасчетыСервер.ОбновитьРаспределеннуюСуммаРасшифровки(ЭтаФорма);
КонецПроцедуры
&НаСервере
Функция ПоместитьТоварыИВидыЗапасовВХранилище()
ПараметрыРедактированияВидовЗапасов = ЗапасыСервер.ПараметрыРедактированияВидовЗапасов();
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера") Тогда
ПараметрыРедактированияВидовЗапасов.ОтображатьДокументыРеализации = Ложь;
Иначе
ПараметрыРедактированияВидовЗапасов.ОтображатьДокументыРеализации = Истина;
КонецЕсли;
Возврат ЗапасыСервер.ПоместитьТоварыИВидыЗапасовВХранилище(ЭтотОбъект, ПараметрыРедактированияВидовЗапасов);
КонецФункции
&НаСервере
Процедура ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение)
ЗапасыСервер.ОбработатьВводВидовЗапасовВручную(ВыбранноеЗначение, ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьПересчетСуммДокументаСервер(СтараяВалюта, НоваяВалюта)
Если СтараяВалюта <> НоваяВалюта Тогда
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата,ТекущаяДатаСеанса());
СтруктурыКурсов = ВзаиморасчетыСервер.КурсыВалютДляПересчета(ЭтаФорма, СтараяВалюта, НоваяВалюта, ВалютаРегламентированногоУчета, ДатаДокумента);
СтруктураКурсовСтаройВалюты = СтруктурыКурсов.СтруктураКурсовСтаройВалюты;
СтруктураКурсовНовойВалюты = СтруктурыКурсов.СтруктураКурсовНовойВалюты;
Ценообразование.ПересчитатьСуммыТабличнойЧастиВВалюту(
Объект.Товары,
Объект.ЦенаВключаетНДС,
СтараяВалюта,
НоваяВалюта,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты);
КонецЕсли;
СуммаТоваров = ?(Объект.ПредусмотренЗалогЗаТару ИЛИ Не Объект.ВозвратПереданнойМногооборотнойТары,
Объект.Товары.Итог("СуммаСНДС"),
Объект.Товары.Итог("СуммаСНДСБезВозвратнойТары"));
ВзаиморасчетыСервер.ПересчитатьСуммыВВалютуРасшифровкаПлатежа(Объект, СуммаТоваров);
КонецПроцедуры
&НаСервере
Процедура УправлениеСвязямиПараметровВыбораРеквизитовФормы()
Если ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
НовыйМассивСвязей = Новый Массив();
Для Каждого СвязьПараметров Из Элементы.ТоварыДокументРеализации.СвязиПараметровВыбора Цикл
СвязьПараметровИзменениеЗначения = СвязьПараметров.ИзменениеЗначения;
СвязьПараметровИмя = СвязьПараметров.Имя;
СвязьПараметровПутьКДанным = СвязьПараметров.ПутьКДанным;
ДобавитьСвязьПараметров = Истина;
Если (СвязьПараметровИмя = "Отбор.Договор") ИЛИ (СвязьПараметровИмя = "Отбор.Контрагент") Тогда
СвязьПараметровИзменениеЗначения = РежимИзмененияСвязанногоЗначения.НеИзменять;
КонецЕсли;
Если ДобавитьСвязьПараметров Тогда
НовыйМассивСвязей.Добавить(Новый СвязьПараметраВыбора(СвязьПараметровИмя, СвязьПараметровПутьКДанным, СвязьПараметровИзменениеЗначения));
КонецЕсли;
КонецЦикла;
Элементы.ТоварыДокументРеализации.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассивСвязей);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораОпераций()
ЭлементВозвратОтКомиссионера =
Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера);
ЭлементВозвратТоваровЧерезКомиссионера =
Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ВозвратТоваровЧерезКомиссионера);
Если ПолучитьФункциональнуюОпциюФормы("ИспользоватьКомиссиюПриПродажах") Тогда
Шаблон = НСтр("ru = '%1 (%2)'");
Если ПолучитьФункциональнуюОпциюФормы("ТолькоКомиссионныеПродажи25") Тогда
Если ЭлементВозвратОтКомиссионера <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементВозвратОтКомиссионера);
ЭлементВозвратОтКомиссионера = Неопределено;
КонецЕсли;
Иначе
Если ЭлементВозвратОтКомиссионера <> Неопределено Тогда
ЭлементВозвратОтКомиссионера.Представление = СтрШаблон(Шаблон,
Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера, КомиссионнаяТорговляСервер.ПостфиксСхемыКомиссии());
КонецЕсли;
Если ЭлементВозвратТоваровЧерезКомиссионера <> Неопределено Тогда
ЭлементВозвратТоваровЧерезКомиссионера.Представление = СтрШаблон(Шаблон,
Перечисления.ХозяйственныеОперации.ВозвратТоваровЧерезКомиссионера,
КомиссионнаяТорговляСервер.ПостфиксСхемыКомиссии25());
КонецЕсли;
КонецЕсли;
Иначе
Если ЭлементВозвратОтКомиссионера <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементВозвратОтКомиссионера);
ЭлементВозвратОтКомиссионера = Неопределено;
КонецЕсли;
Если ЭлементВозвратТоваровЧерезКомиссионера <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементВозвратТоваровЧерезКомиссионера);
КонецЕсли;
КонецЕсли;
Если Не ПолучитьФункциональнуюОпцию("ВыбиратьВерсиюКомиссионныхПродаж")
И Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
Если ЭлементВозвратОтКомиссионера <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементВозвратОтКомиссионера);
КонецЕсли;
КонецЕсли;
Если Не ПолучитьФункциональнуюОпциюФормы("ИспользоватьРозничныеПродажи") Тогда
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя);
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ХозяйственнаяОперация",
"ТолькоПросмотр",
Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1 И ЗначениеЗаполнено(Объект.ХозяйственнаяОперация));
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовПоОперацииСервер()
Перем МассивВсехРеквизитов;
Перем МассивРеквизитовОперации;
Документы.ВозвратТоваровОтКлиента.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
Объект.ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ДенежныеСредстваСервер.УстановитьВидимостьЭлементовПоМассиву(
Элементы,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
УстановитьВидимостьДоговора();
ЭтоВозвратОтКомиссионера = (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера);
ЭтоВозвратОтРозничногоПокупателя = (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Сделка", "Видимость", Не ЭтоВозвратОтРозничногоПокупателя);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ЧекККМ", "Видимость", ЭтоВозвратОтРозничногоПокупателя);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "УменьшенДолгСтрокой", "Видимость", Не ЭтоВозвратОтКомиссионера);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаРасходныйКассовыйОрдер", "Видимость", ЭтоВозвратОтРозничногоПокупателя);
Элементы.ТоварыЗаполнитьСебестоимость.Видимость = Не ЭтоВозвратОтРозничногоПокупателя И Не ЭтоВозвратОтКомиссионера;
Элементы.ДекорацияОтступПредусмотренЗалогЗаТару.Видимость = Не ЭтоВозвратОтРозничногоПокупателя И Не ЭтоВозвратОтКомиссионера;
Элементы.ТоварыСпособОпределенияСебестоимостиСтрокой.Видимость = Не ЭтоВозвратОтКомиссионера;
Если ЭтоВозвратОтРозничногоПокупателя Тогда
ТипСсылкаОтчетОРозничныхПродажах = Новый ОписаниеТипов("ДокументСсылка.ОтчетОРозничныхПродажах");
Элементы.ТоварыДокументРеализации.ОграничениеТипа = ТипСсылкаОтчетОРозничныхПродажах;
Иначе
ТипСсылкаРеализацияТоваровУслуг = Новый ОписаниеТипов("ДокументСсылка.РеализацияТоваровУслуг");
Элементы.ТоварыДокументРеализации.ОграничениеТипа = ТипСсылкаРеализацияТоваровУслуг;
КонецЕсли;
Элементы.ТоварыЗаполнитьНомераГТДПоДокументамПродажи.Видимость = Не ЭтоВозвратОтКомиссионера;
Элементы.ТоварыЗаполнитьНомераГТДПоПереданнымТоварам.Видимость = ЭтоВозвратОтКомиссионера
И Не КомиссионерНеВедетУчетПоРНПТ;
Элементы.ГруппаДанныеКлиента.Видимость = ВозвратТоваровЧерезКомиссионера;
Элементы.Партнер.Заголовок = ?(ВозвратТоваровЧерезКомиссионера, НСтр("ru = 'Комиссионер'"), "");
Элементы.Контрагент.Заголовок = ?(ВозвратТоваровЧерезКомиссионера, НСтр("ru = 'Контрагент комиссионера'"), "");
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Видимость = Не ВозвратТоваровЧерезКомиссионера;
Элементы.ВозвратПорчи.Видимость = Не ВозвратТоваровЧерезКомиссионера;
Элементы.ДатаПоступления.Видимость = Не ВозвратТоваровЧерезКомиссионера;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьРеквизитовРасходногоКассовогоОрдераСервер()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ДатаРасходногоКассовогоОрдера", "Доступность", Объект.ВыданыДенежныеСредства);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НомерРасходногоКассовогоОрдера", "Доступность", Объект.ВыданыДенежныеСредства);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьСпособаКомпенсации(Форма)
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"СпособКомпенсации",
"Доступность",
Форма.СуммаКомпенсации <> 0
И Форма.Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента"));
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказателиВозврата(Форма)
Форма.СуммаВсего = ?(Форма.Объект.ПредусмотренЗалогЗаТару,
Форма.Объект.Товары.Итог("СуммаСНДС"),
Форма.Объект.Товары.Итог("СуммаСНДСБезВозвратнойТары"));
Форма.СуммаНДС = ?(Форма.Объект.ПредусмотренЗалогЗаТару,
Форма.Объект.Товары.Итог("СуммаНДС"),
Форма.Объект.Товары.Итог("СуммаНДСБезВозвратнойТары"));
Форма.СуммаЗалогаЗаТару = Форма.Объект.Товары.Итог("СуммаСНДС") - Форма.Объект.Товары.Итог("СуммаСНДСБезВозвратнойТары");
ОтображатьИтогСуммыНДС = УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаПродажи(Форма.Объект.НалогообложениеНДС);
Если ОтображатьИтогСуммыНДС Тогда
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаСНДС;
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДС;
Иначе
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаБезНДС;
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДС;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьСуммуКомпенсации(Форма)
Форма.СуммаКомпенсации = Форма.СуммаВсего - Форма.РаспределеннаяСуммаРасшифровки;
Форма.УменьшенДолгСтрокой = НСтр("ru='Уменьшен долг клиента:'") + " " + Формат(Форма.РаспределеннаяСуммаРасшифровки, "ЧДЦ=2; ЧН=0,00")
+ " " + Форма.Объект.Валюта;
УстановитьДоступностьСпособаКомпенсации(Форма);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДанныеВыбораСкладов(Склад)
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Склады.Ссылка КАК Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка В ИЕРАРХИИ(&ГруппаСкладов)
| И Склады.ЭтоГруппа = ЛОЖЬ
| И Склады.ВыборГруппы <> ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.Запретить)");
Запрос.УстановитьПараметр("ГруппаСкладов", Склад);
МассивСкладов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивСкладов;
КонецФункции
&НаСервере
Процедура УстановитьПараметрыВыбораТоварыСклад()
Элементы.ТоварыСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(Элементы.ТоварыСклад, "Ссылка", ДанныеВыбораСкладов(Объект.Склад));
КонецПроцедуры
#Область Заполнение
&НаСервере
Процедура ПерезаполнитьПоОрдерам(МассивЗаказов)
ПараметрыЗаполнения = Документы.ВозвратТоваровОтКлиента.ПараметрыЗаполненияДокумента();
ПараметрыЗаполнения.ФормаОткрыта = Истина;
ПараметрыЗаполнения.ЗаполнятьПоОрдеру = Истина;
ТаблицаНакладная = Документы.ВозвратТоваровОтКлиента.ДанныеТаблицыТоварыДокумента(Объект.Ссылка);
РеквизитыШапки = Новый Структура("Организация, Подразделение, Склад, Сделка,
|ХозяйственнаяОперация, Ссылка, НаправлениеДеятельности, ЦенаВключаетНДС");
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Объект);
Документы.ВозвратТоваровОтКлиента.ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения,
РеквизитыШапки, МассивЗаказов);
ТаблицаШтрихкодыУпаковок = ВозвратТоваровОтКлиентаЛокализация.СформироватьСтруктуруШтрихкодыУпаковок();
Документы.ВозвратТоваровОтКлиента.ЗаполнитьПоЗаказамОрдерам(
ТаблицаНакладная, Объект.Ссылка, ПараметрыЗаполнения, ТаблицаШтрихкодыУпаковок);
КоличествоИндексов = ТаблицаНакладная.Количество() - 1;
Для Индекс = 0 По КоличествоИндексов Цикл
Строка = ТаблицаНакладная[КоличествоИндексов - Индекс];
Если Строка.КоличествоВОрдере = 0 Тогда
ТаблицаНакладная.Удалить(Строка);
Иначе
Строка.Количество = Строка.КоличествоВОрдере;
КонецЕсли;
КонецЦикла;
Объект.Товары.Загрузить(ТаблицаНакладная);
Если ПараметрыЗаполнения.ЗаполнятьПоОрдеру И ТаблицаШтрихкодыУпаковок.Количество() > 0 Тогда
Объект.ШтрихкодыУпаковок.Загрузить(ТаблицаШтрихкодыУпаковок);
КонецЕсли;
Документы.ВозвратТоваровОтКлиента.ОбновитьЗависимыеРеквизитыТабличнойЧасти(Объект.Товары, ПараметрыЗаполнения);
ЗаполнитьСлужебныеРеквизитыТабличнойЧасти();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
Для каждого СтрокаТовары Из Объект.Товары Цикл
СтрокаТовары.СпособОпределенияСебестоимости = Перечисления.СпособыОпределенияСебестоимостиВозврата.ИзТекущегоДокумента;
КонецЦикла;
УстановитьПредставлениеСебестоимости();
ОбновитьИнформациюПоРеализациям();
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура ЗаполнитьУстановитьВидимостьСерийДоступностьПерезаполненияПоПриемке()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ВозвратТоваровОтКлиента));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
УстановитьВидимостьЭлементовСерий();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьРеквизитыФормыИзЧекаККМ(ЧекККМ, Реквизиты)
Если ЗначениеЗаполнено(ЧекККМ) Тогда
УстановитьПривилегированныйРежим(Истина);
ЗначенияРеквизитоЧекаККМ = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЧекККМ, Реквизиты);
УстановитьПривилегированныйРежим(Ложь);
Для каждого ЗначениеРеквизита Из ЗначенияРеквизитоЧекаККМ Цикл
ЭтаФорма[ЗначениеРеквизита.Ключ] = ЗначениеРеквизита.Значение;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция АдресТоварыНакладной(ВыгруженаТолькоНеМаркируемаяПродукция = Ложь)
Таблица = Объект.Товары.Выгрузить();
Если ВыгруженаТолькоНеМаркируемаяПродукция И Таблица.Колонки.Найти("МаркируемаяПродукция") <> Неопределено Тогда
ВыгруженаТолькоНеМаркируемаяПродукция = Ложь;
НомерТекущейСтроки = Таблица.Количество()-1;
Пока НомерТекущейСтроки >= 0 Цикл
Если Таблица[НомерТекущейСтроки].МаркируемаяПродукция Тогда
Таблица.Удалить(НомерТекущейСтроки);
ВыгруженаТолькоНеМаркируемаяПродукция = Истина;
КонецЕсли;
НомерТекущейСтроки = НомерТекущейСтроки - 1;
КонецЦикла;
КонецЕсли;
Таблица.Колонки.Добавить("ДатаОтгрузки", Новый ОписаниеТипов("Дата"));
Таблица.Колонки.Добавить("ДатаПоступления", Новый ОписаниеТипов("Дата"));
Таблица.Колонки.Добавить("Распоряжение", Новый ОписаниеТипов("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента,
|ДокументСсылка.ВозвратТоваровОтКлиента"));
Для Каждого Строка Из Таблица Цикл
Строка.Распоряжение = ?(ЗначениеЗаполнено(Объект.ЗаявкаНаВозвратТоваровОтКлиента), Объект.ЗаявкаНаВозвратТоваровОтКлиента, Объект.Ссылка);
КонецЦикла;
Таблица.ЗаполнитьЗначения(ТекущаяДатаСеанса(), "ДатаОтгрузки");
Таблица.ЗаполнитьЗначения(ТекущаяДатаСеанса(), "ДатаПоступления");
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Таблица, УникальныйИдентификатор);
Возврат АдресВоВременномХранилище;
КонецФункции
&НаСервере
Функция АдресШтрихкодыУпаковок()
Таблица = Объект.ШтрихкодыУпаковок.Выгрузить();
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Таблица, УникальныйИдентификатор);
Возврат АдресВоВременномХранилище;
КонецФункции
&НаСервере
Процедура ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, КэшированныеЗначения)
ТаблицаТовары = ПолучитьИзВременногоХранилища(ВозвращаемыеПараметры.Товары);
УдаляемыеСтроки = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив();
НовыеСтроки = Новый Массив();
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
СтруктураДействийДляНовыхСтрок = Новый Структура;
СтруктураДействийДляНовыхСтрок.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийДляНовыхСтрок.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийДляНовыхСтрок.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействийДляНовыхСтрок.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействийДляНовыхСтрок.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействийДляНовыхСтрок.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийДляНовыхСтрок, ЭтотОбъект);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействийДляНовыхСтрок);
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействийДляНовыхСтрок.Вставить(
"ЗаполнитьУсловияПродаж",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
Для Каждого СтрокаИсточник Из ТаблицаТовары Цикл
Отбор = Новый Структура("ИдентификаторСтроки, НоменклатураНабора, ХарактеристикаНабора, Номенклатура, Характеристика, Серия, Упаковка");
ЗаполнитьЗначенияСвойств(Отбор, СтрокаИсточник);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
Если СтрокаИсточник.КоличествоУпаковок = 0 Тогда
Прервать;
КонецЕсли;
Если СтрокаИсточник.КоличествоУпаковок >= 0 Тогда
СтрокаТЧ.КоличествоУпаковок = СтрокаТЧ.КоличествоУпаковок + СтрокаИсточник.КоличествоУпаковок;
СтрокаИсточник.КоличествоУпаковок = 0;
Иначе
КоличествоКСписанию = -СтрокаИсточник.КоличествоУпаковок;
КоличествоВСтроке = СтрокаТЧ.КоличествоУпаковок;
Если КоличествоКСписанию > КоличествоВСтроке Тогда
СтрокаИсточник.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
СтрокаТЧ.КоличествоУпаковок = 0;
Иначе
СтрокаИсточник.КоличествоУпаковок = 0;
СтрокаТЧ.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
КонецЕсли;
КонецЕсли;
Если СтрокаТЧ.КоличествоУпаковок = 0 Тогда
УдаляемыеСтроки.Добавить(СтрокаТЧ);
Иначе
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТЧ = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаИсточник);
НовыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаТЧ Из УдаляемыеСтроки Цикл
Объект.Товары.Удалить(СтрокаТЧ);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
НовыеСтроки,
СтруктураДействийДляНовыхСтрок,
Объект.Товары,
КэшированныеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьРеализацииИЦеныНаСервере()
ПродажиСервер.ЗаполнитьРеализацииИЦены(Объект, "Товары");
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюПоРеализациям()
Если НЕ ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
ПродажиСервер.ОбновитьИнформациюПоРеализациямВФорме(
СписокРеализаций,
Объект.ДокументРеализации,
НадписьЗаголовокРеализации,
Элементы,
Элементы.ТоварыДокументРеализации,
Объект.Товары,
"ДокументРеализации");
Иначе
Объект.ДокументРеализации = ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(Объект.ЧекККМ);
Для Каждого СтрТабл Из Объект.Товары Цикл
СтрТабл.СпособОпределенияСебестоимости = Перечисления.СпособыОпределенияСебестоимостиВозврата.ИзДокументаПродажи;
СтрТабл.ДокументРеализации = Объект.ДокументРеализации;
КонецЦикла;
Элементы.СтраницыРеализации.ТекущаяСтраница = Элементы.СтраницаРеализация;
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
УстановитьПредставлениеСебестоимости();
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстСчетаФактурыПолученные()
ПараметрыРегистрацииВыданныхСФ = ПараметрыРегистрацииСчетовФактурВыданныхСервер(Объект);
ПараметрыРегистрацииПолученныхСФ = ПараметрыРегистрацииСчетовФактурПолученныхСервер(Объект);
СчетФактураНаОсновании = УчетНДСУП.СчетаФактурыОбщиеНаОсновании(ПараметрыРегистрацииВыданныхСФ, ПараметрыРегистрацииПолученныхСФ);
ТекстДокументыНаОснованииПодвал = ПродажиСервер.СформироватьПредставлениеКомандФормированияСчетаФактурыНаОсновании(Объект.Ссылка, СчетФактураНаОсновании);
ФормированиеФискальныхЧековСервер.ОбновитьГиперссылкуПробитияФискальногоЧека(Объект.Ссылка, ЭтотОбъект, ТекстДокументыНаОснованииПодвал);
Элементы.ПокупательНеПлательщикНДС.Видимость = СчетФактураНаОсновании.СчетаФактуры.Количество() = 0;
КонецПроцедуры
&НаСервере
Процедура ОчиститьДокументыРеализации()
Объект.ДокументРеализации = Неопределено;
Для каждого СтрокаТовары Из Объект.Товары Цикл
СтрокаТовары.ДокументРеализации = Неопределено;
КонецЦикла;
НадписьЗаголовокРеализации = Неопределено;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВозвращаемыеТоварыПоЧеку()
Объект.Товары.Очистить();
ПродажиСервер.ЗаполнитьВозвращаемыеТоварыПоЧеку(Объект, "Товары");
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
ОбновитьИнформациюПоРеализациям();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУсловияПродаж()
СтараяВалюта = ВалютаДокумента;
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоУмолчанию();
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
ВалютаДокумента = Объект.Валюта;
ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере();
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ВыполнитьПересчетСуммДокументаСервер(СтараяВалюта, ВалютаДокумента);
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
ХозяйственнаяОперацияПриИзмененииСервер();
РассчитатьИтоговыеПоказателиВозврата(ЭтотОбъект);
ЗаполнитьУстановитьВидимостьСерийДоступностьПерезаполненияПоПриемке();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
УстановитьВидимостьДоговора();
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ПредусмотренЗалогЗаТару",
"Доступность",
Объект.ВозвратПереданнойМногооборотнойТары);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(ЧекККМ)
Возврат РозничныеПродажи.ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(ЧекККМ);
КонецФункции
&НаСервере
Процедура ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(АдресТарыВХранилище)
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСумму");
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтотОбъект, СтруктураДействийИзмененныеСтроки);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействийИзмененныеСтроки);
СтруктураДействийДобавленныеСтроки = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(СтруктураДействийИзмененныеСтроки);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьСпособОпределенияСебестоимости", Перечисления.СпособыОпределенияСебестоимостиВозврата.ИзТекущегоДокумента);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьСпособОпределенияСебестоимостиСтрокой", ПараметрыОпределенияСебестоимости(ЭтаФорма));
СтруктураДействийДобавленныеСтроки.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(
Объект,
АдресТарыВХранилище,
"Товары",
"Номенклатура,Характеристика",
СтруктураДействийИзмененныеСтроки,
СтруктураДействийДобавленныеСтроки);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура,НоменклатураОприходование", "ХарактеристикиИспользуются", "ХарактеристикиИспользуютсяОприходование"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ОбновитьИнформациюПоРеализациям();
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецПроцедуры
&НаСервере
Процедура ВозвратПереданнойМногооборотнойТарыПриИзмененииСервер()
Если Не Объект.ВозвратПереданнойМногооборотнойТары Тогда
Объект.ПредусмотренЗалогЗаТару = Ложь;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ПредусмотренЗалогЗаТару",
"Доступность",
Объект.ВозвратПереданнойМногооборотнойТары);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизиты()
Возврат Новый Структура(
"БезВозвратнойТары",
"Сумма,СуммаНДС,СуммаСНДС");
КонецФункции
&НаСервере
Процедура УстановитьВидимостьДоговора()
Перем МассивВсехРеквизитов;
Перем МассивРеквизитовОперации;
Документы.ВозвратТоваровОтКлиента.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
Объект.ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ВидимостьДоговораПоОперации = МассивРеквизитовОперации.Найти("Договор") <> Неопределено;
ВидимостьДоговора = Ложь;
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, ВидимостьДоговора, Объект.Договор);
Элементы.Договор.Видимость = ВидимостьДоговора И ВидимостьДоговораПоОперации;
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище)
ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействий.Вставить("ЗаполнитьСпособОпределенияСебестоимости", Перечисления.СпособыОпределенияСебестоимостиВозврата.ИзТекущегоДокумента);
СтруктураДействий.Вставить("ЗаполнитьСпособОпределенияСебестоимостиСтрокой", ПараметрыОпределенияСебестоимости(ЭтаФорма));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
СтрокаТЧТовары = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров,, "КодСтроки");
ОбрабатываемыеСтроки.Добавить(СтрокаТЧТовары);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ПриИзмененииСкладаВТабличнойЧастиСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ОбновитьОприходованныеТовары()
Если ХозяйственнаяОперацияДоговора = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВозвратТоваровОтКлиентаТовары.НоменклатураОприходование
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК ВозвратТоваровОтКлиентаТовары
|;
|
|
|ВЫБРАТЬ
| Товары.НоменклатураОприходование.Артикул КАК АртикулОприходование,
| ВЫБОР
| КОГДА Товары.НоменклатураОприходование.ИспользованиеХарактеристик ЕСТЬ NULL
| ИЛИ Товары.НоменклатураОприходование.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ПустаяСсылка)
| ИЛИ Товары.НоменклатураОприходование.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
|
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ХарактеристикиИспользуютсяОприходование
|ИЗ
| Товары КАК Товары";
Запрос.УстановитьПараметр("Товары",Объект.Товары.Выгрузить());
ВыборкаНоменклатураОприходование = Запрос.Выполнить().Выбрать();
Для Каждого СтрокаТовары Из Объект.Товары Цикл
ВыборкаНоменклатураОприходование.Следующий();
СтрокаТовары.ХарактеристикиИспользуютсяОприходование = ВыборкаНоменклатураОприходование.ХарактеристикиИспользуютсяОприходование;
СтрокаТовары.АртикулОприходование = ВыборкаНоменклатураОприходование.АртикулОприходование;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандФормы(УстанавливаемаяДоступность)
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ВозвратПорчи");
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыДополнитьМногооборотнойТарой");
МассивЭлементов.Добавить("ТоварыЗагрузитьДанныеИзТСД");
МассивЭлементов.Добавить("ТоварыЗагрузитьИзВнешнегоФайла");
МассивЭлементов.Добавить("ТоварыЗаполнитьРеализацииИЦены");
МассивЭлементов.Добавить("ФормаОткрытьВидыЗапасов");
МассивЭлементов.Добавить("ТоварыОткрытьПодбор");
МассивЭлементов.Добавить("ТоварыПодобратьТоварыИзЗаявки");
МассивЭлементов.Добавить("ТоварыПодобратьТоварыПоРеализациям");
МассивЭлементов.Добавить("ТоварыПоискПоШтрихкоду");
МассивЭлементов.Добавить("ТоварыПолучитьВес");
МассивЭлементов.Добавить("ТоварыПроверитьКоличествоВДокументе");
МассивЭлементов.Добавить("ТоварыРазбитьСтроку");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюРазбитьСтроку");
МассивЭлементов.Добавить("РеквизитыПечатиЗаявленияНаВозврат");
МассивЭлементов.Добавить("ТоварыСкопироватьСтроки");
МассивЭлементов.Добавить("ТоварыСоставНабора");
МассивЭлементов.Добавить("ТоварыУказатьСерии");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", УстанавливаемаяДоступность);
КонецПроцедуры
&НаСервере
Процедура УстановитьПредставлениеСебестоимости()
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСпособОпределенияСебестоимостиСтрокой", ПараметрыОпределенияСебестоимости(ЭтаФорма));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПредставлениеСебестоимостиВСтроке(ТекущаяСтрока)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСпособОпределенияСебестоимостиСтрокой", ПараметрыОпределенияСебестоимости(ЭтаФорма));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДСПродажи()
ПараметрыЗаполнения = Документы.ВозвратТоваровОтКлиента.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСебестоимостьВТаблице()
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Контрагент", Объект.Контрагент);
ПараметрыФормы.Вставить("Договор", Объект.Договор);
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормы.Вставить("ВалютаДокумента", Объект.Валюта);
ПараметрыФормы.Вставить("ТипНалогообложения", Объект.НалогообложениеНДС);
ПараметрыФормы.Вставить("ПоказыватьРеализации",
Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя"));
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
СтрокиТаблицыТовары = Новый Массив();
Для Каждого ТекущийИдентификаторСтроки Из ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(ТекущийИдентификаторСтроки);
ПараметрыСтроки = Новый Структура();
ПараметрыСтроки.Вставить("Идентификатор", ТекущийИдентификаторСтроки);
ПараметрыСтроки.Вставить("СпособОпределенияСебестоимости", СтрокаТаблицы.СпособОпределенияСебестоимости);
ПараметрыСтроки.Вставить("ВидЦены", СтрокаТаблицы.ВидЦеныСебестоимости);
ПараметрыСтроки.Вставить("ДатаЗаполненияСебестоимостиПоВидуЦены", СтрокаТаблицы.ДатаЗаполненияСебестоимостиПоВидуЦены);
ПараметрыСтроки.Вставить("КоличествоУпаковок", СтрокаТаблицы.Количество);
ПараметрыСтроки.Вставить("Упаковка", СтрокаТаблицы.Упаковка);
ПараметрыСтроки.Вставить("ДокументПродажи", СтрокаТаблицы.ДокументРеализации);
ПараметрыСтроки.Вставить("Номенклатура", СтрокаТаблицы.Номенклатура);
ПараметрыСтроки.Вставить("Характеристика", СтрокаТаблицы.Характеристика);
ПараметрыСтроки.Вставить("СтавкаНДС", СтрокаТаблицы.СтавкаНДС);
ПараметрыСтроки.Вставить("СуммаСНДС", СтрокаТаблицы.Себестоимость);
ПараметрыСтроки.Вставить("СуммаБезНДС", СтрокаТаблицы.СебестоимостьБезНДС);
СтрокиТаблицыТовары.Добавить(ПараметрыСтроки);
КонецЦикла;
ПараметрыФормы.Вставить("СтрокиТаблицыТовары", СтрокиТаблицыТовары);
ОткрытьФорму("Документ.ВозвратТоваровОтКлиента.Форма.ФормаВыбораСпособаОпределенияСебестоимости",
ПараметрыФормы,
ЭтаФорма,,,,
Новый ОписаниеОповещения("ВыборСпособаОпределенияСебестоимостиЗавершение",
ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Процедура УстановитьСвязиПараметровВыбораДоговора()
СвязиПараметровДоговора = Новый Массив;
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.Контрагент"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.КомиссионныеПродажи25", "ВозвратТоваровЧерезКомиссионера"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.ХозяйственнаяОперация", "ХозяйственнаяОперацияДоговора"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Партнер", "Объект.Партнер"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Соглашение", "Объект.Соглашение",
РежимИзмененияСвязанногоЗначения.НеИзменять));
Если Не ВозвратТоваровЧерезКомиссионера Тогда
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.ВалютаВзаиморасчетов", "Объект.Валюта"));
КонецЕсли;
Элементы.Договор.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметровДоговора);
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,Цена,НомерГТД,СпособОпределенияСебестоимости,
|Порча,НоменклатураОприходование,ХарактеристикаОприходование,ДокументРеализации,
|НоменклатураНабора,ХарактеристикаНабора";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
НаборыСервер.УдалитьСтрокиНаборовСогласноОтбору(ТаблицаТоваров, ПараметрыОтбора["Номенклатура.ТипНоменклатуры"]);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьСпособОпределенияСебестоимостиСтрокой", ПараметрыОпределенияСебестоимости(ЭтаФорма));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
Если Не Объект.ВозвратПорчи
И ТекущаяСтрока.Порча Тогда
ТекущаяСтрока.Порча = Ложь;
ТекущаяСтрока.НоменклатураОприходование = Справочники.Номенклатура.ПустаяСсылка();
ТекущаяСтрока.ХарактеристикаОприходование = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
ЗаполнитьСлужебныеРеквизитыТабличнойЧасти();
ПриИзмененииСкладаВТабличнойЧастиСервер();
СтруктураХарактеристикиНоменклатуры = Новый Структура;
СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура,НоменклатураОприходование", "ХарактеристикиИспользуются", "ХарактеристикиИспользуютсяОприходование"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураХарактеристикиНоменклатуры);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена() И НЕ ЗначениеЗаполнено(Объект.ЗаявкаНаВозвратТоваровОтКлиента));
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
НЕ ЗначениеЗаполнено(Объект.ЗаявкаНаВозвратТоваровОтКлиента));
КонецПроцедуры
&НаСервере
Процедура КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился)
ВладелецКонтактногоЛица = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КонтактноеЛицо, "Владелец");
Если ВладелецКонтактногоЛица <> Объект.Партнер Тогда
Объект.Партнер = ВладелецКонтактногоЛица;
ПартнерПриИзмененииСервер();
ПартнерИзменился = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьРезультатПроверкиКонтрагентов()
ПроверкаКонтрагентовКлиент.ОбработатьРезультатПроверкиКонтрагентовВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт
ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
ПроверкаКонтрагентовКлиент.ПроверитьКонтрагентовВДокументеПоКнопке(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура УменьшенДолгСтрокойНажатиеПослеПроверки(Результат, ДополнительныеПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения("УменьшенДолгСтрокойНажатиеЗавершение", ЭтотОбъект);
ПоместитьРасшифровкуПлатежаВоВременноеХранилище();
ВзаиморасчетыКлиент.ВзаиморасчетыПоВозвратуТоваров(ЭтаФорма, Элементы.УменьшенДолгСтрокой, Оповещение);
КонецПроцедуры
&НаСервере
Процедура ПоместитьРасшифровкуПлатежаВоВременноеХранилище()
ВзаиморасчетыСервер.ПоместитьРасшифровкуПлатежаВоВременноеХранилище(ЭтаФорма, "УменьшенДолгСтрокой");
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
НоваяСтрока.КодСтроки = 0;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтаФорма);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецЕсли;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьРеализацииИЦеныСервер()
ЗаполнитьРеализацииИЦеныНаСервере();
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
ОбновитьИнформациюПоРеализациям();
КонецПроцедуры
&НаСервере
Процедура ОпределитьНаличиеОрдернойСхемы()
ОрдернаяСхема = СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.Склад, Объект.Дата);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПодбораТоваровИзЗаказа(АдресВХранилище)
Таблица = ПолучитьИзВременногоХранилища(АдресВХранилище).Товары;
ТаблицаШтрихкодыУпаковок = ПолучитьИзВременногоХранилища(АдресВХранилище).ШтрихкодыУпаковок;
ИменаПолей = "НомерСтроки";
СтруктураПоиска = Новый Структура(ИменаПолей);
Таблица.Сортировать(ИменаПолей + " Убыв");
ДеревоСтрок = Новый Массив();
Для Каждого СтрокаТаблицы Из Таблица Цикл
Если СтруктураПоиска.НомерСтроки <> СтрокаТаблицы.НомерСтроки Тогда
МассивСтрок = Новый Массив();
ДеревоСтрок.Добавить(МассивСтрок);
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТаблицы);
КонецЕсли;
МассивСтрок.Добавить(СтрокаТаблицы);
КонецЦикла;
ПоляСвязиСЗаказом = Новый Структура("КодСтроки", 0);
НакладныеСервер.ЗаполнитьТоварыПодобраннымиИзЗаказа(ДеревоСтрок, ИменаПолей, Объект.Товары, ПоляСвязиСЗаказом);
Для Каждого ТекущаяСтрока Из Объект.Товары Цикл
Если ЗначениеЗаполнено(ТекущаяСтрока.ДокументРеализации) Тогда
ТекущаяСтрока.СпособОпределенияСебестоимости = Перечисления.СпособыОпределенияСебестоимостиВозврата.ИзДокументаПродажи;
ИначеЕсли Не ЗначениеЗаполнено(ТекущаяСтрока.СпособОпределенияСебестоимости) Тогда
ТекущаяСтрока.СпособОпределенияСебестоимости = Перечисления.СпособыОпределенияСебестоимостиВозврата.ИзТекущегоДокумента;
КонецЕсли;
КонецЦикла;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтотОбъект, СтруктураДействий);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, ЭтотОбъект);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
ЗаполнитьНомераГТДСервер("ПоРаспоряжениям", "ДокументРеализации");
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ОбновитьИнформациюПоРеализациям();
РассчитатьИтоговыеПоказателиВозврата(ЭтотОбъект);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтотОбъект);
ПродажиСерверЛокализация.ПеренестиШтрихкодыУпаковок(ЭтотОбъект, ТаблицаШтрихкодыУпаковок);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ТоварыНоменклатураПриИзмененииСервер(ИдентификаторТекущейСтроки)
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ИдентификаторТекущейСтроки);
Если ТекущаяСтрока.Порча
И ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураОприходование) Тогда
ЕстьГрадация = ПроверитьНаличиеГрадацииСервер(ТекущаяСтрока.Номенклатура, ТекущаяСтрока.НоменклатураОприходование);
Если Не ЕстьГрадация Тогда
ТекущаяСтрока.НоменклатураОприходование = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикаОприходование = ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикиИспользуютсяОприходование = Ложь;
КонецЕсли;
КонецЕсли;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполнитьСтавкуНДС = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект);
СтруктураДействий = Новый Структура;
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПараметрыЗаполнитьСтавкуНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействий.Вставить("ЗаполнитьСтрануПроисхожденияНоменклатуры",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтраныПроисхождения());
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, Неопределено);
Если Не ТекущаяСтрока.ВедетсяУчетПоГТД Тогда
ТекущаяСтрока.НомерГТД = Неопределено;
ТекущаяСтрока.ТипНомераГТД = Неопределено;
ТекущаяСтрока.СтранаПроисхождения = Неопределено;
КонецЕсли;
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ТоварыХарактеристикаПриИзмененииСервер(ИдентификаторТекущейСтроки)
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ИдентификаторТекущейСтроки);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, Неопределено);
РассчитатьИтоговыеПоказателиВозврата(ЭтаФорма);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыТабличнойЧасти()
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура,НоменклатураОприходование", "ХарактеристикиИспользуются", "ХарактеристикиИспользуютсяОприходование"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул",Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовокДоступностьПодобратьТоварыПоЗаказамОрдерам()
ВозвратПоЗаявке = ИспользоватьЗаявкиНаВозврат
И ЗначениеЗаполнено(Объект.ЗаявкаНаВозвратТоваровОтКлиента);
ЗаголовокКнопки = НСтр("ru = 'Подобрать по распоряжениям/ордерам'");
Если Не ОрдернаяСхема
И ВозвратПоЗаявке Тогда
ЗаголовокКнопки = НСтр("ru = 'Подобрать по распоряжениям'");
ИначеЕсли Не ВозвратПоЗаявке Тогда
ЗаголовокКнопки = НСтр("ru = 'Подобрать по ордерам'");
КонецЕсли;
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Заголовок = ЗаголовокКнопки;
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Доступность = ОрдернаяСхема
Или ВозвратПоЗаявке;
КонецПроцедуры
&НаСервере
Процедура СпособКомпенсацииПриИзмененииСервер()
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПересчитатьКоличествоРНПТ()
ЭтоВозвратОтКомиссионера = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
Если (Не ЭтоВозвратОтКомиссионера
И ЗначениеЗаполнено(Объект.Склад))
Или (ЭтоВозвратОтКомиссионера
И Не КомиссионерНеВедетУчетПоРНПТ
И ЗначениеЗаполнено(Объект.Партнер))
И ЗначениеЗаполнено(Объект.Организация) Тогда
ИмяПоляСклад = ?(ЭтоВозвратОтКомиссионера, "Партнер", "Склад");
ПараметрыПолученияКоэффициентаРНПТ = УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ПараметрыПолученияКоэффициентаРНПТ(
Объект,
ИмяПоляСклад);
УчетПрослеживаемыхТоваровЛокализация.ЗаполнитьКоличествоПоРНПТВТабличнойЧасти(ПараметрыПолученияКоэффициентаРНПТ,
Объект.Товары);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактированияДляСерверногоВызова()
ТоварыПриОкончанииРедактированияНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере()
КомиссионерНеВедетУчетПоРНПТ = Не Справочники.СоглашенияСКлиентами.КомиссионерВедетУчетПоРНПТ(Объект.Соглашение)
Или Не Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДСЗавершение(СтавкаНДС, ДополнительныеПараметры) Экспорт
Если СтавкаНДС = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиВозврата(ЭтотОбъект);
ФинансыКлиентСервер.ПересчитатьСуммыВСтрокеРасшифровкиПлатежа(Объект, СуммаВсего);
РассчитатьСуммуКомпенсации(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ВыделенныеСтроки = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(
Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
Для каждого СтрокаТабличнойЧасти Из ВыделенныеСтроки Цикл
СтрокаТабличнойЧасти.СтавкаНДС = СтавкаНДС;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ВыделенныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
#Область Прочее
#Область ФискальнаяОперация
&НаКлиенте
Процедура ФискальнаяОперацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
Если "ПробитьЧек" = НавигационнаяСсылка Тогда
СтандартнаяОбработка = Ложь;
ФормированиеФискальныхЧековКлиент.ОтобразитьЧек(
ЭтотОбъект,
Новый ОписаниеОповещения("ФискальнаяОперацияЗавершение", ЭтотОбъект));
ИначеЕсли "ОткрытьЗаписьФискальнойОперации" = НавигационнаяСсылка Тогда
СтандартнаяОбработка = Ложь;
ПодключаемоеОборудованиеУТКлиент.ОткрытьЗаписьФискальнойОперации(ЭтотОбъект, Объект.Ссылка);
ИначеЕсли "НастроитьОборудование" = НавигационнаяСсылка Тогда
СтандартнаяОбработка = Ложь;
ОткрытьФорму("Обработка.ПредпросмотрЧека.Форма.ОшибкаПодключенияККТ");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ФискальнаяОперацияЗавершение(Результат, ДополнительныеПараметры) Экспорт
ОбновитьТекстСчетаФактурыПолученные();
КонецПроцедуры
#Область Свойства
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыОпределенияСебестоимости(Форма)
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("НалогообложениеНДС", Форма.Объект.НалогообложениеНДС);
СтруктураПараметров.Вставить("ВалютаУправленческогоУчета", Форма.ВалютаУправленческогоУчета);
СтруктураПараметров.Вставить("ВалютаРегламентированногоУчета", Форма.ВалютаРегламентированногоУчета);
СтруктураПараметров.Вставить("ИспользоватьРеглУчет", Форма.ИспользоватьРеглУчет);
Возврат СтруктураПараметров;
КонецФункции
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
#КонецОбласти
#Область Локализация
&НаКлиенте
Процедура ЗакрытьСессиюПроверкиКМНаККТ(Знач Отказ)
Если НЕ Отказ И ВозможноПробитиеЧекаПоДокументу() Тогда
ОборудованиеПодключенноеПоОрганизации = ПодключаемоеОборудованиеУТВызовСервера.ОборудованиеПодключенноеПоОрганизации(Объект.Организация);
СписокПодключенныхККТ = ОборудованиеПодключенноеПоОрганизации.ККТ;
Если СписокПодключенныхККТ.Количество() = 1
И МенеджерОборудованияВызовСервера.ФискальноеУстройствоПоддерживаетПроверкуКодовМаркировки(СписокПодключенныхККТ[0]) Тогда
РозничныеПродажиКлиент.ЗакрытьСессиюПроверкиКМНаККТ(ЭтотОбъект.УникальныйИдентификатор, СписокПодключенныхККТ[0]);
КонецЕсли;
КонецЕсли;
Возврат;
КонецПроцедуры
&НаСервере
Функция ВозможноПробитиеЧекаПоДокументу()
Возврат ВозвратТоваровОтКлиентаЛокализация.РазрешеноПробитиеФискальныхЧековПоДокументу(ЭтотОбъект);
КонецФункции
&НаСервере
Функция ИспользоватьРасширенныеВозможностиЗаказаКлиента()
Если ЗначениеЗаполнено(Объект.ЗаявкаНаВозвратТоваровОтКлиента) Тогда
Возврат Не ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ЗаявкаНаВозвратТоваровОтКлиента, "ЭтоЗаказКакСчет");
Иначе
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
КонецЕсли;
КонецФункции
#КонецОбласти