#Область ОписаниеПеременных
&НаКлиенте
Перем ФормаМодифицирована;
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПараметрыВстраивания = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ДоступныеОстаткиПараметрыВстраивания();
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриСозданииНаСервере(ЭтотОбъект, ПараметрыВстраивания);
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
ИспользоватьПодразделения = ПолучитьФункциональнуюОпцию("ИспользоватьПодразделения");
ИспользоватьРучныеСкидкиВПродажах = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
ИспользоватьАвтоматическиеСкидкиВПродажах = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
ИспользоватьОграниченияРучныхСкидок = ПолучитьФункциональнуюОпцию("ИспользоватьОграниченияРучныхСкидокВПродажахПоПользователям")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьОграниченияРучныхСкидокВПродажахПоСоглашениям");
ИспользоватьПричиныОтменыЗаказовКлиентов = ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовКлиентов");
ИспользоватьПартнеровКакКонтрагентов = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов");
ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();
ИспользоватьСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
ИспользоватьДоговорыСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
ВыбиратьВерсиюКомиссионныхПродаж = ПолучитьФункциональнуюОпцию("ВыбиратьВерсиюКомиссионныхПродаж");
ТолькоКомиссионныеПродажи25 = ИспользоватьДоговорыСКлиентами И (ПолучитьФункциональнуюОпцию("ТолькоКомиссионныеПродажи25")
ИЛИ НЕ ИспользоватьСоглашенияСКлиентами ИЛИ НЕ ВыбиратьВерсиюКомиссионныхПродаж);
ИспользоватьКартыЛояльности = ПолучитьФункциональнуюОпцию("ИспользоватьКартыЛояльности");
ИспользоватьБонусныеПрограммыЛояльности = ИспользоватьБонусныеПрограммыЛояльности(Объект.КартаЛояльности);
УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности();
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма, "ВозвращаемыеТовары,ЗаменяющиеТовары");
ДоговорОбязателен = ?(Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера
И Не ИспользоватьСоглашенияСКлиентами, Истина, Ложь);
ПродажиСервер.УстановитьРежимВыбораГруппЭлементовСклада(Элементы.Склад);
ПродажиСервер.УстановитьОтметкуНезаполненногоДоговора(Элементы, "Договор", ДоговорОбязателен);
УстановитьПризнакКомиссионнойПродажи();
ЗаполнитьСписокВыбораОпераций();
УстановитьВидимостьКомандЗаполнения();
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбновитьСпособКомпенсации();
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Заменяющие);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Возвращаемые);
АвтоЗаголовок = Ложь;
СформироватьЗависимыеОтХозоперацииЗаголовки();
ЗаполнитьПустыеДатыПоступления();
КонецЕсли;
Если Не ИспользоватьПодразделения Тогда
Элементы.ЗаменяющиеТоварыПодразделение.Видимость = Ложь;
Иначе
Элементы.ЗаменяющиеТоварыПодразделение.Заголовок = НСтр("ru = 'Подразделение-отправитель'");
КонецЕсли;
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
КонецЕсли;
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения, НЕ Объект.ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым);
Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.ЗаполнитьСписокВыбора(Элементы.Статус.СписокВыбора, Объект.Статус);
Элементы.ЗакрытьЗаявку.Доступность = ПравоДоступа("Изменение",Метаданные.Документы.ЗаявкаНаВозвратТоваровОтКлиента);
Элементы.ЗаменяющиеТоварыОтменитьНепоставленныеСтроки.Видимость = Не Объект.ЭтоЗаказКакСчет;
УстановитьДоступностьКомандБуфераОбмена();
ЭлементыДляЗаполнения = Новый Массив;
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиС);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиПо);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиС1);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиПо1);
ДоставкаТоваровКлиентСервер.ЗаполнитьСписокВыбораПоляВремени(ЭлементыДляЗаполнения);
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтаФорма);
ОповеститьОСозданииОбъектаРасчетов = Параметры.ОповеститьОСозданииОбъектаРасчетов;
Элементы.ЗаменяющиеТоварыВидЦены.БыстрыйВыбор = Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен");
УстановитьВидимостьКомандыЗаполнитьСтавкуНДС();
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтаФорма);
СервисДоставки.ПриСозданииНаСервере(ЭтаФорма);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
УстановитьЗапретВыбораГруппыСклада(Элементы.Склад);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПараметрыВстраивания = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ДоступныеОстаткиПараметрыВстраивания();
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВстраивания);
ПриЧтенииСозданииНаСервере();
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(
ЭтаФорма,
"ВозвращаемыеТовары",
"Номенклатура,Характеристика,Количество,,ДатаПоступления",
Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение", ЭтотОбъект, ДополнительныеПараметры));
Возврат;
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение(Результат, ДополнительныеПараметры) Экспорт
Отказ = Ложь;
НадоЗаменитьТовары =
Объект.СпособКомпенсации = ПредопределенноеЗначение("Перечисление.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары");
Если ИспользоватьАвтоматическиеСкидкиВПродажах
И Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера")
И Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтХранителя")
И НадоЗаменитьТовары
И Объект.ЗаменяющиеТовары.Количество() > 0 Тогда
Если Не Объект.СкидкиРассчитаны И СкидкиИзменились() Тогда
ПрименитьИзмененияСкидокНаценокНаКлиенте(Отказ);
Иначе
Объект.СкидкиРассчитаны = Истина;
КонецЕсли;
КонецЕсли;
Если Не Объект.НеОтгружатьЧастями Тогда
ЭтапыОплатыКлиент.ПредложитьЗаполнитьГрафикОплатПоУмолчанию(
ЭтотОбъект,
Новый ОписаниеОповещения(
"ПередЗаписьюПредложитьЗаполнитьГрафикОплатПоУмолчаниюЗавершение",
ЭтотОбъект,
ДополнительныеПараметры),
Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
КонецЕсли;
ПередЗаписьюНаКлиентеСервер();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
Если Не Отказ Тогда
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьЗаполнитьГрафикОплатПоУмолчаниюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Отказ = Ложь;
Если Результат = КодВозвратаДиалога.Да Тогда
Объект.ЭтапыГрафикаОплаты.Очистить();
КонецЕсли;
ПередЗаписьюНаКлиентеСервер();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
Если Не Отказ Тогда
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаКлиентеСервер()
ВзаиморасчетыВызовСервера.ФормаПередЗаписьюНаКлиентеСервер(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
УстановитьДоступностьЭлементовПоСтатусуСервер();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ЗаменяющиеТовары, СтруктураДействий);
СтруктураДействий.ЗаполнитьПризнакХарактеристикиИспользуются.Вставить("НоменклатураОприходование", "ХарактеристикиИспользуютсяОприходование");
СтруктураДействий.Удалить("ЗаполнитьПризнакВариантОформленияПродажи");
СтруктураДействий.Удалить("ЗаполнитьПризнакАртикул");
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура, НоменклатураОприходование", "Артикул", "АртикулОприходование"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ВозвращаемыеТовары, СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ВозвращаемыеТовары");
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ЗаменяющиеТовары");
ОбновитьДубликатыЗависимыхРеквизитов();
ОбеспечениеВДокументахСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
УстановитьВидимостьОбеспечения();
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ДополнительноеУсловиеПроверки = ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента")
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.РасчетыСКлиентами)
И Не Объект.ЭтоЗаказКакСчет;
СостоянияДокументов.ПослеЗаписиНаСервере(
ЭтотОбъект,
ПараметрыЗаписи,,,
ДополнительноеУсловиеПроверки);
Если СостоянияДокументов.ПроверкаЗаданияКОтражениюСостоянияЗаказовНеЗапущена(ЭтотОбъект) Тогда
ОбновитьСостояниеСервер();
КонецЕсли;
НастроитьЭлементыФормы();
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект.ДополнительныеСвойства);
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
СкрыватьОтмененныеСтроки = Настройки.Получить("СкрыватьОтмененныеСтроки");
Если СкрыватьОтмененныеСтроки Тогда
Элементы.ЗаменяющиеТовары.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.ЗаменяющиеТовары.ОтборСтрок = Неопределено;
КонецЕсли;
СкрыватьОтмененныеСтрокиВозвращаемыеТовары = Настройки.Получить("СкрыватьОтмененныеСтрокиВозвращаемыеТовары");
Если СкрыватьОтмененныеСтрокиВозвращаемыеТовары Тогда
Элементы.ВозвращаемыеТовары.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.ВозвращаемыеТовары.ОтборСтрок = Неопределено;
КонецЕсли;
Элементы.ВозвращаемыеТоварыСкрыватьОтмененныеСтроки.Пометка = СкрыватьОтмененныеСтрокиВозвращаемыеТовары;
Если НЕ Объект.Ссылка.Пустая() ИЛИ НЕ ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента Тогда
Настройки.Удалить("Объект.НеОтгружатьЧастями");
Если НЕ Объект.Ссылка.Пустая() Тогда
Настройки.Удалить("Объект.ПоступлениеОднойДатой");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
НастроитьЭлементыФормы();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
Данные = МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр);
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаЗаменяющиеТовары Тогда
ОбработатьШтрихкоды(Данные, "ЗаменяющиеТовары");
Иначе
ОбработатьШтрихкоды(Данные, "ВозвращаемыеТовары");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаЗаменяющиеТовары Тогда
ОбработатьШтрихкоды(ДанныеШтрихкодов, "ЗаменяющиеТовары");
Иначе
ОбработатьШтрихкоды(ДанныеШтрихкодов, "ВозвращаемыеТовары");
КонецЕсли;
КонецЕсли;
Если ВзаиморасчетыКлиент.НуженВызовОбработкиОповещения(ЭтаФорма, ИмяСобытия, Параметр)
Или ИмяСобытия = "Запись_ВозвратТоваровОтКлиента" Тогда
ЗачтенаОплатаСервер(ИмяСобытия, Параметр, Источник);
КонецЕсли;
Если ИмяСобытия = "СчитанаКартаЛояльности"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
СчитанаКартаЛояльности(Новый ОписаниеОповещения("ОбработкаОповещенияЗавершение", ЭтотОбъект, Новый Структура("ИмяСобытия, Параметр", ИмяСобытия, Параметр)), Параметр.КартаЛояльности);
Возврат;
КонецЕсли;
ОбработкаОповещенияФрагмент(ИмяСобытия, Параметр);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещенияЗавершение(Результат, ДополнительныеПараметры) Экспорт
ИмяСобытия = ДополнительныеПараметры.ИмяСобытия;
Параметр = ДополнительныеПараметры.Параметр;
ОбработкаОповещенияФрагмент(ИмяСобытия, Параметр);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещенияФрагмент(Знач ИмяСобытия, Знач Параметр)
Если ИмяСобытия = "ПолученыСообщения"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПолученыСообщения(Параметр.Сообщения);
КонецЕсли;
Если ИмяСобытия = "ИзмененРеквизитЗависящийОтСтатуса"
И Параметр.УникальныйИдентификатор = УникальныйИдентификатор Тогда
Если Объект.Согласован Тогда
Объект.Согласован = Ложь;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса", 0.1, Истина);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
Если ИмяСобытия = "ДобавлениеПартнераВСегмент"
ИЛИ ИмяСобытия = "УдалениеПартнераИзСегмента" Тогда
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
КонецЕсли;
Если ИмяСобытия = "Закрытие_РедактированиеКомплекта"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПриОкончанииРедактированияНабора(Параметр.АдресВоВременномХранилище);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.ЗаменяющиеТовары,
ДатаОтгрузкиОбязательна, СкладОбязателен);
КонецЕсли;
Если ИмяСобытия = "РедактироватьНабор"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПараметрыКомплекта = Новый Структура;
ПараметрыКомплекта.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыКомплекта.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
Если Параметр.ИмяТЧ = "ВозвращаемыеТовары" Тогда
ПараметрыКомплекта.Вставить("ДокументРеализации", Параметр.ДокументРеализации);
ПараметрыКомплекта.Вставить("КолонкиНабора", КолонкиНабораВозвращаемыеТовары(ЭтаФорма));
Иначе
ПараметрыКомплекта.Вставить("КолонкиНабора", КолонкиНабораЗаменяющиеТовары(ЭтаФорма));
КонецЕсли;
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыКомплекта, Параметр.ИмяТЧ);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОткрытия.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("ИмяТЧ", Параметр.ИмяТЧ);
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
Если Параметр.ИмяТЧ = "ВозвращаемыеТовары" Тогда
ПараметрыОткрытия.Вставить("ДокументРеализации", Параметр.ДокументРеализации);
ПараметрыОткрытия.Вставить("ОтборПоТипуНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
КонецЕсли;
Если Параметр.ИмяТЧ = "ЗаменяющиеТовары" Тогда
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтХранителя") Тогда
ПараметрыОткрытия.Вставить("ОтборПоТипуНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
КонецЕсли;
КонецЕсли;
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
Если ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
ПараметрыОткрытия.Вставить("ВидЦены", ЭтаФорма.ВидЦеныЧекаККМ);
ПараметрыОткрытия.Вставить("ЗапретРедактированияЦены", Истина);
КонецЕсли;
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииМодифицированностиФормы", 1);
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
ЗаменяющиеТоварыАвтоОтметкаНезаполненного();
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
ПодключитьОбработчикОжиданияПолучениеПеревозчиков();
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
Если Не ЗавершениеРаботы
И ЗначениеЗаполнено(Объект.Ссылка)
И ОповеститьОСозданииОбъектаРасчетов Тогда
ВзаиморасчетыКлиент.ФормаПриЗакрытии(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Заголовок = "";
АвтоЗаголовок = Истина;
ФормаМодифицирована = Неопределено;
Подключаемый_ПриИзмененииМодифицированностиФормы();
ВзаиморасчетыКлиент.ФормаПослеЗаписи(ЭтаФорма);
ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_ЗаявкаНаВозвратТоваровОтКлиента", ПараметрыЗаписи, Объект.Ссылка);
ОбеспечениеВДокументахКлиент.ПослеЗаписи(ЭтотОбъект, "Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов");
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
Если ПараметрыЗаписи.Свойство("СозданиеКорректировки") Тогда
ДополнительныеПараметры = ПараметрыЗаписи.СозданиеКорректировки;
Если Объект.Проведен Тогда
ОбъектыОснований = Новый Массив();
ОбъектыОснований.Добавить(Объект.Ссылка);
ДополнительныеПараметры.ОписаниеКоманды.Вставить("ОбъектыОснований", ОбъектыОснований);
ДополнительныеПараметры.ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОбеспечениеВДокументахКлиент.ОткрытьЗаполнениеКорректировкиНазначения(
ДополнительныеПараметры.Резервирование,
Объект.Ссылка,
ДополнительныеПараметры.ОписаниеКоманды);
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
СостоянияДокументовКлиент.ПослеЗаписи(ЭтотОбъект, "Подключаемый_ПроверитьЗаданияКОтражениюСостоянияЗаказов");
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаявкаНаВозвратТоваровОтКлиента.Форма.ФормаДокумента.Событие.ОбработкаВыбора");
Если ИсточникВыбора.ИмяФормы = "Обработка.СостояниеОбеспеченияЗаказов.Форма.Форма" Тогда
АдресТаблицыДвижений = ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(
ВыбранноеЗначение.КодДействия,
ВыбранноеЗначение.АдресАналитик,
ВыбранноеЗначение.ПараметрыЗаполнения);
ВыполнитьОбработкуОповещения(ВыбранноеЗначение.ВыполняемоеОповещение, АдресТаблицыДвижений);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Документ.ЗаказКлиента.Форма.РеквизитыПечати" Тогда
Если ВыбранноеЗначение <> Неопределено Тогда
Модифицированность = Истина;
ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение);
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПечатьЗаявленияНаВозвратТоваровОтКлиента.Форма.РеквизитыПечатиЗаявленияНаВозврат" Тогда
Если ВыбранноеЗначение <> Неопределено Тогда
Модифицированность = Истина;
ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение);
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.ПодборТоваровПоРеализациямИПередачам" Тогда
ОбработкаВыбораПодборПоРеализацииСервер(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровПереданныхНаОтветственноеХранение.Форма.Форма" Тогда
ОбработкаВыбораПодборПереданныхТоваров(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(ВыбранноеЗначение.АдресМногооборотнойТарыВХранилище);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ИсточникВыбора.ПараметрыУказанияСерий, ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.СтруктураПредприятия.Форма.ФормаВыбора" Тогда
ПродажиКлиент.ОбработкаВыбораПодразделения(Объект.ЗаменяющиеТовары, Элементы.ЗаменяющиеТовары.ВыделенныеСтроки, ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия" Тогда
СкорректироватьСтрокиЗаказа(ВыбранноеЗначение);
КонецЕсли;
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.ЗаменяющиеТовары, ДатаОтгрузкиОбязательна, СкладОбязателен);
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
#Область Обеспечение
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияОтгружаетсяНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияПроблемаНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
ВзаиморасчетыКлиент.ОбновитьТекстГиперссылкиЭтапыОплаты(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыВыбораСоглашения = ПродажиКлиент.ПараметрыНачалаВыбораСоглашенияСКлиентом();
ПараметрыВыбораСоглашения.Элемент = Элемент;
ПараметрыВыбораСоглашения.Партнер = Объект.Партнер;
ПараметрыВыбораСоглашения.Документ = Объект.Соглашение;
ПараметрыВыбораСоглашения.ДатаДокумента = Объект.Дата;
ПараметрыВыбораСоглашения.ДанныеФормыСтруктура = Объект;
ПараметрыВыбораСоглашения.ХозяйственнаяОперация = ХозяйственнаяОперацияСоглашения;
ПродажиКлиент.НачалоВыбораСоглашенияСКлиентом(ПараметрыВыбораСоглашения, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
СкладПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
Если Не ЗначениеЗаполнено (Объект.Партнер) Тогда
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы,Объект);
ПартнерОчисткаСервер();
Возврат;
КонецЕсли;
ПартнерПриИзмененииСервер();
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтактноеЛицоПриИзменении(Элемент)
Если Объект.КонтактноеЛицо.Пустая() Тогда
Возврат;
ИначеЕсли Не Объект.Партнер.Пустая() Тогда
Возврат;
КонецЕсли;
ПартнерИзменился = Ложь;
КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился);
Если Не ПартнерИзменился Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено (Объект.Партнер) Тогда
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы,Объект);
Иначе
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ДоговорПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
Если Не ЗначениеЗаполнено (Объект.Соглашение) Тогда
СоглашениеОчисткаСервер();
Возврат;
КонецЕсли;
УстановитьПризнакКомиссионнойПродажи();
Если Объект.СпособКомпенсации = ПредопределенноеЗначение("Перечисление.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары")
И Объект.ВозвращаемыеТовары.Количество() > 0 Тогда
ТекстВопроса = НСтр("ru='При изменении соглашения будут пересчитаны цены возвращаемых товаров.
|Перезаполнить заменяющие товары по возвращаемым?'");
ПоказатьВопрос(Новый ОписаниеОповещения("СоглашениеПриИзмененииЗавершение", ЭтотОбъект),
ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
СоглашениеПриИзмененииСервер();
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродаж();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
СоглашениеПриИзмененииСервер(РезультатВопроса=КодВозвратаДиалога.Да);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродаж();
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
Если Объект.Согласован
И Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована")
И Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена") Тогда
Объект.Согласован = Ложь;
КонецЕсли;
Если Объект.ВозвращаемыеТовары.Количество() > 0 Тогда
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату") Или
Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению") Или
Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке") Или
Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена") Тогда
ЗаполнитьПустыеДатыПоступления();
КонецЕсли;
КонецЕсли;
СтатусПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.Валюта) Тогда
ПересчитатьСуммы = ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента,"ВозвращаемыеТовары") Или ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента,"ЗаменяющиеТовары");
ВалютаПриИзмененииСервер(Объект.Валюта, ПересчитатьСуммы);
Если ПересчитатьСуммы Тогда
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
ХозяйственнаяОперацияПриИзмененииСервер();
ОчиститьДокументыРеализации();
ЗаменяющиеТоварыАвтоОтметкаНезаполненного();
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЧекККМПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
ВариантыОтветов = Новый СписокЗначений;
ВариантыОтветов.Добавить(КодВозвратаДиалога.Да, НСтр("ru='Перезаполнить'"));
ВариантыОтветов.Добавить(КодВозвратаДиалога.Нет, НСтр("ru='Не перезаполнять'"));
ПоказатьВопрос(Новый ОписаниеОповещения("ЧекККМПриИзмененииЗавершение", ЭтотОбъект), НСтр("ru = 'Перезаполнить возвращаемые товары по выбранному чеку ККМ?'"), ВариантыОтветов);
Иначе
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Партнер", "ТолькоПросмотр", Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЧекККМПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОтветНаВопрос = РезультатВопроса;
ПерезаполнитьТовары = (ОтветНаВопрос = КодВозвратаДиалога.Да);
ЧекККМПриИзмененииСервер(ПерезаполнитьТовары);
КонецПроцедуры
&НаКлиенте
Процедура ДокументРеализацииПриИзменении(Элемент)
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя") Тогда
Если ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
Если ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(Объект.ЧекККМ) <> Объект.ДокументРеализации Тогда
Объект.ЧекККМ = Неопределено;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ПерезаполнитьЦены = Ложь;
Если ИспользоватьСоглашенияСКлиентами
И ЗначениеЗаполнено(Объект.Соглашение)
И ЗначениеЗаполнено(Объект.Валюта)
И Объект.ВозвращаемыеТовары.Количество() <> 0
И Объект.ЗаменяющиеТовары.Количество() <> 0 Тогда
Оповещение = Новый ОписаниеОповещения("ДатаПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект, Оповещение,"ЗаменяющиеТовары");
Возврат;
КонецЕсли;
ДатаПриИзмененииФрагмент(ПерезаполнитьЦены);
РозничныеПродажиКлиентСервер.УстановитьДоступностьКомандОплатыБонуснымиБаллами(Элементы, Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = Истина Тогда
ПерезаполнитьЦены = Истина;
Иначе
ПерезаполнитьЦены = Ложь;
КонецЕсли;
ДатаПриИзмененииФрагмент(ПерезаполнитьЦены);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзмененииФрагмент(Знач ПерезаполнитьЦены)
Перем ЦеныРассчитаны;
ЦеныРассчитаны = ДатаПриИзмененииСервер(ПерезаполнитьЦены);
Если ПерезаполнитьЦены Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДатаСогласованияПриИзменении(Элемент)
ДатаСогласованияПриИзмененииНаСервере()
КонецПроцедуры
&НаКлиенте
Процедура КартаЛояльностиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
КартыЛояльностиКлиент.НачалоВыбораКартыЛояльности(Элемент, СтандартнаяОбработка, Объект.Партнер, Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура КартаЛояльностиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СчитанаКартаЛояльности(Неопределено, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура КартаЛояльностиОчистка(Элемент, СтандартнаяОбработка)
СчитанаКартаЛояльности(Неопределено, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ДатаОтгрузкиПриИзменении(Элемент)
ЗаполнитьДатуОтгрузкиСервер(Объект.ДатаОтгрузки, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура НеОтгружатьЧастямиПриИзменении(Элемент)
НеОтгружатьЧастямиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПоступлениеОднойДатойПриИзменении(Элемент)
ПоступлениеОднойДатойПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПоступленияПриИзменении(Элемент)
ЗаполнитьДатыПоступленияСервер(Объект.ДатаПоступления);
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗаголовокРеализацииНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФорму(
"ОбщаяФорма.ПросмотрСпискаДокументов",
Новый Структура("СписокДокументов, Заголовок",
СписокРеализаций,
НСтр("ru='Продажи клиентам (%КоличествоДокументов%)'")
),
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ТекстОстатокДопустимогоКредитаНажатие(Элемент, СтандартнаяОбработка)
ВзаиморасчетыКлиент.ОграниченияЗадолженностиНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВернутьМногооборотнуюТаруПриИзменении(Элемент)
ВернутьМногооборотнуюТаруПриИзмененииСервер();
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратПереданнойМногооборотнойТарыПриИзменении(Элемент)
ВернутьМногооборотнуюТаруПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ТекстОтгрузкаПартнеруЗапрещенаНажатие(Элемент)
ОткрытьФорму("Справочник.Партнеры.Форма.ФормаСегментовЗапретаОтгрузки", Новый Структура("Партнер", Объект.Партнер));
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьЭтапыОплатыНажатиеЗавершение", ЭтотОбъект);
ПоместитьЭтапыОплатыВоВременноеХранилище(Элемент.Имя);
ВзаиморасчетыКлиент.НадписьЭтапыОплатыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка, Оповещение );
КонецПроцедуры
&НаСервере
Процедура ПоместитьЭтапыОплатыВоВременноеХранилище(ИмяЭлемента)
ВзаиморасчетыСервер.ПоместитьЭтапыОплатыВоВременноеХранилище(ЭтаФорма, ИмяЭлемента);
КонецПроцедуры
&НаСервере
Процедура ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты)
ВзаиморасчетыСервер.ЗагрузитьЭтапыОплатыИзВременногоХранилища(ЭтаФорма);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, ИзмененныеРеквизиты, Истина);
УстановитьДоступностьЭлементовПоСтатусуСервер();
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ИзмененныеРеквизиты = Результат.СтарыеЗначенияИзмененныхРеквизитов;
ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты);
Если ИзмененныеРеквизиты.Количество() > 0 Тогда
Если ИзмененныеРеквизиты.Свойство("ФормаОплаты") Тогда
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецЕсли;
КонецЕсли;
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СпособКомпенсацииПриИзменении(Элемент)
Если Не Объект.СпособКомпенсации=ПредопределенноеЗначение("Перечисление.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары")
И Объект.ЗаменяющиеТовары.Количество() <> 0 Тогда
ТекстВопроса = НСтр("ru='Табличная часть заменяющих товары будет очищена, продолжить?'");
ПоказатьВопрос(Новый ОписаниеОповещения("СпособКомпенсацииПриИзмененииЗавершение", ЭтотОбъект),
ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
СпособКомпенсацииПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура СпособКомпенсацииПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса=КодВозвратаДиалога.Да Тогда
ОчиститьЗаменяющиеТовары();
СпособКомпенсацииПриИзмененииСервер();
Иначе
Объект.СпособКомпенсации=ПредопределенноеЗначение("Перечисление.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТребуетсяЗалогЗаТаруПриИзменении(Элемент)
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СостояниеНажатие(Элемент, СтандартнаяОбработка)
ПродажиКлиент.СостояниеВФормеДокументаНажатие(СтандартнаяОбработка, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнятьЦеныЗаменяющихТоваровПоСоглашениюПриИзменении(Элемент)
ТекстВопроса = НСтр("ru='Табличная часть заменяющих товары будет перезаполнена, продолжить?'");
ПоказатьВопрос(Новый ОписаниеОповещения("ЗаполнятьЦеныЗаменяющихТоваровПоСоглашениюПриИзмененииЗавершение", ЭтотОбъект),
ТекстВопроса,
РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнятьЦеныЗаменяющихТоваровПоСоглашениюПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса=КодВозвратаДиалога.Да Тогда
ЗаполнитьЗаменяющиеТоварыПоВозвращаемымСервер();
ИначеЕсли РезультатВопроса=КодВозвратаДиалога.Нет Тогда
УстановитьВидимостьАвтоматическихСкидок();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытий
&НаКлиенте
Процедура ДекорацияСервисДоставкиСоздатьНажатие(Элемент)
СервисДоставкиКлиентПереопределяемый.ОткрытьФормуНовогоЗаказаНаДоставку(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиСписокЗаказовНажатие(Элемент)
СервисДоставкиКлиент.ОткрытьФормуСервисаДоставкиИзОснования(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиДобавитьВЗаказНаДоставкуНажатие(Элемент)
СервисДоставкиКлиент.ОткрытьФормуСервисаДоставкиИзОснования(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСервисДоставкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Форма", ЭтотОбъект);
ПараметрыОткрытия.Вставить("ДокументОснование", Объект.Ссылка);
СервисДоставкиКлиент.ОткрытьФормуПодчиненныхЗаказовНаДоставку(ПараметрыОткрытия);
КонецПроцедуры
&НаКлиенте
Процедура СпособМестоДоставкиПеревозчикПриИзменении(Элемент)
ЗаполнитьУстановитьРеквизитыДоставкиСервер(Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПриИзменении(Элемент)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОчистка(Элемент, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
АдресДоставкиПриИзменении(Элемент);
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаПриИзменении(Элемент)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОчистка(Элемент, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
АдресДоставкиПеревозчикаПриИзменении(Элемент);
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
ЗаполнитьНалогообложениеНДСПродажи();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыВозвращаемыеТовары
&НаКлиенте
Процедура ВозвращаемыеТоварыПриИзменении(Элемент)
ЗаполнитьПустыеДатыПоступления();
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы.ВозвращаемыеТоварыЦена Тогда
ТекущиеДанные = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.ВидЦены) И НЕ Объект.Согласован Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru='Для редактирования цены очистите вид цены'"),
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.ВозвращаемыеТовары", ТекущиеДанные.НомерСтроки, "ВидЦены"),);
КонецЕсли;
ИначеЕсли НаборыКлиент.БлокируемыйЭлемент(Поле) Тогда
ТекущаяСтрока = Объект.ВозвращаемыеТовары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПараметрОповещения = Новый Структура;
ПараметрОповещения.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрОповещения.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрОповещения.Вставить("ДокументРеализации", ТекущаяСтрока.ДокументРеализации);
ПараметрОповещения.Вставить("ИмяТЧ", "ВозвращаемыеТовары");
ПараметрОповещения.Вставить("ФормаВладелец", УникальныйИдентификатор);
Оповестить("РедактироватьНабор", ПараметрОповещения, ЭтаФорма);
КонецЕсли;
ИначеЕсли Поле = Элементы.ВозвращаемыеТоварыНоменклатураНабора Тогда
ПоказатьЗначение(Неопределено, Элементы.ВозвращаемыеТовары.ТекущиеДанные.НоменклатураНабора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыПослеУдаления(Элемент)
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий.Возвращаемые,Истина) Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения,"Возвращаемые");
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий.Возвращаемые);
КонецЕсли;
ОбновитьИнформациюПоРеализациям();
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ПриИзмененииСкладаВТабличнойЧастиВозвращаемыеТоварыСервер();
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.ВозвращаемыеТовары, ЭтотОбъект);
ТекущаяСтрока = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
ПродажиКлиент.СтрокаНоменклатурыПриНачалеРедактирования(ЭтаФорма, "ВозвращаемыеТовары", ТекущаяСтрока, НоваяСтрока, Копирование);
Если НоваяСтрока Тогда
ТекущаяСтрока.КодСтроки = 0;
КонецЕсли;
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий.Возвращаемые, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
ТекущиеДанные = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий.Возвращаемые) Тогда
ТекущаяСтрокаИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения,"Возвращаемые");
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент,КэшированныеЗначения,ПараметрыУказанияСерий.Возвращаемые);
КонецЕсли;
Если Не ОтменаРедактирования Тогда
КэшСтроки = ?(НоваяСтрока, Неопределено, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.ВозвращаемыеТовары, ЭтотОбъект));
СкладыКлиент.ОбновитьТаблицуСкладов(ТаблицаСкладовВозвращаемыеТовары, ТекущиеДанные, КэшСтроки, СкладГруппа);
ВсегоСкладов = ТаблицаСкладовВозвращаемыеТовары.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладовВозвращаемыеТовары, Элементы.КартинкаНесколькоСкладовВозвращаемыеТовары, ВсегоСкладов);
КонецЕсли;
Если ТекущиеДанные <> Неопределено Тогда
Если Объект.ПоступлениеОднойДатой Тогда
ТекущиеДанные.ДатаПоступления = Объект.ДатаПоступления;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
Если НЕ ЗначениеЗаполнено(ТекущиеДанные.ДокументРеализации) Тогда
ТекущиеДанные.ДокументРеализации = ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(Объект.ЧекККМ);
КонецЕсли;
КонецЕсли;
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыПередУдалением(Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.ВозвращаемыеТовары, ЭтотОбъект);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий.Возвращаемые);
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтаФорма, "ВозвращаемыеТовары", Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыНоменклатураОприходованиеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущиеДанные.Характеристика);
Если ЗначениеЗаполнено(ТекущиеДанные.Характеристика) Тогда
СтруктураДействий.Вставить("ЗаполнитьХарактеристикуНекачественногоТовара", ТекущиеДанные.Характеристика);
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура, НоменклатураИсходногоКачества", "Артикул", "АртикулОприходование"));
СкладыКлиент.ИзменитьКачество(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
Если ТекущаяСтрока.Порча
И ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураОприходование) Тогда
ЕстьГрадация = ПроверитьНаличиеГрадацииСервер(ТекущаяСтрока.Номенклатура, ТекущаяСтрока.НоменклатураОприходование);
Если Не ЕстьГрадация Тогда
ТекущаяСтрока.НоменклатураОприходование = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикаОприходование = ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикиИспользуютсяОприходование = Ложь;
КонецЕсли;
КонецЕсли;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура, НоменклатураОприходование", "Артикул", "АртикулОприходование"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий.Возвращаемые));
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "ВозвращаемыеТовары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыСкладПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий.Возвращаемые));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "ВозвращаемыеТовары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ТекущаяСтрока.Количество > 0 И Не ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
ИначеЕсли ТекущаяСтрока.Количество > 0 И ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) Тогда
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
ИначеЕсли (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыПорчаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
Если Не ТекущаяСтрока.Порча Тогда
ТекущаяСтрока.НоменклатураОприходование = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикаОприходование = ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикиИспользуютсяОприходование = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокВозвращаемыеТовары(СтруктураДействий, Объект);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыВидЦеныПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыСтавкаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуСкидкуПоСуммеВПродажах");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыНоменклатураОприходованиеПриИзменении(Элемент)
ТекущиеДанные = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
ТекущаяСтрока = Новый Структура;
ТекущаяСтрока.Вставить("Номенклатура", ТекущиеДанные.НоменклатураОприходование);
ТекущаяСтрока.Вставить("ХарактеристикиИспользуются");
ТекущаяСтрока.Вставить("Характеристика", ТекущиеДанные.Характеристика);
ТекущаяСтрока.Вставить("Артикул", ТекущиеДанные.Артикул);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущиеДанные.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, Неопределено);
ТекущиеДанные.ХарактеристикиИспользуютсяОприходование = ТекущаяСтрока.ХарактеристикиИспользуются;
ТекущаяСтрока.Свойство("Характеристика", ТекущиеДанные.ХарактеристикаОприходование);
ТекущиеДанные.АртикулОприходование = ТекущаяСтрока.Артикул;
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыОтмененоПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыДокументРеализацииНачалоВыбора(Элемент)
Если КомиссионныеПродажи25
И Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера") Тогда
НовыйМассив = Новый Массив();
НовыйМассив.Добавить(Новый ПараметрВыбора("Отбор.Договор", Объект.Договор));
НовыйМассив.Добавить(Новый ПараметрВыбора("ХозяйственнаяОперацияДокумента", Объект.ХозяйственнаяОперация));
Элементы.ВозвращаемыеТоварыДокументРеализации.ПараметрыВыбора = Новый ФиксированныйМассив(НовыйМассив);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыДокументРеализацииПриИзменении(Элемент)
ОбновитьИнформациюПоРеализациям();
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий("Возвращаемые", Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Элементы.ВозвращаемыеТовары.ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = Элементы.ВозвращаемыеТовары.ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий.Возвращаемые, ВыбранноеЗначение);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыЗаменяющиеТовары
&НаКлиенте
Процедура ЗаменяющиеТоварыПослеУдаления(Элемент)
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.ЗаменяющиеТовары,
ДатаОтгрузкиОбязательна, СкладОбязателен);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбновитьКолонкуДоступноСервер();
ПриИзмененииСкладаВТабличнойЧастиЗаменяющиеТоварыСервер();
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
ТекущиеДанные = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
Если Не ОтменаРедактирования Тогда
КэшСтроки = ?(НоваяСтрока, Неопределено, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.ЗаменяющиеТовары, ЭтотОбъект));
СкладыКлиент.ОбновитьТаблицуСкладов(ТаблицаСкладовЗаменяющиеТовары, ТекущиеДанные, КэшСтроки, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладовЗаменяющиеТовары.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладовЗаменяющиеТовары, Элементы.КартинкаНесколькоСкладовЗаменяющиеТовары, ВсегоСкладов);
КонецЕсли;
Если ТекущиеДанные <> Неопределено И Объект.НеОтгружатьЧастями Тогда
ТекущиеДанные.ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.ЗаменяющиеТовары, ЭтотОбъект);
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
Если НоваяСтрока И Не Копирование Тогда
ТекущаяСтрока.Подразделение = Объект.Подразделение;
КонецЕсли;
ПродажиКлиент.СтрокаНоменклатурыПриНачалеРедактирования(ЭтаФорма, "ЗаменяющиеТовары", ТекущаяСтрока, НоваяСтрока, Копирование);
Если НоваяСтрока Тогда
ТекущаяСтрока.КодСтроки = 0;
КонецЕсли;
Если Копирование Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий,
"ВариантОбеспечения,Доступно,СкладОбязателен,ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.ЗаменяющиеТовары,
ДатаОтгрузкиОбязательна, СкладОбязателен);
КонецЕсли;
ВзаиморасчетыКлиент.ТабличнаяЧастьПриНачалеРедактирования(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(
Истина, "Документ.ЗаявкаНаВозвратТоваровОтКлиента.Форма.ФормаДокумента.Элементы.ЗаменяющиеТовары.Выбор");
Если Элемент.ТекущийЭлемент = Элементы.ЗаменяющиеТоварыДоступно И Не ТолькоПросмотр Тогда
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(Неопределено);
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму("Обработка.ЗапросКоличестваИСерий.Форма", ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
ИначеЕсли Элемент.ТекущийЭлемент = Элементы.ЗаменяющиеТоварыПроцентАвтоматическойСкидки
Или Элемент.ТекущийЭлемент = Элементы.ЗаменяющиеТоварыСуммаАвтоматическойСкидки Тогда
СтандартнаяОбработка = Ложь;
Если НЕ Объект.СкидкиРассчитаны Тогда
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Истина);
СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки);
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(АдресПримененныхСкидокВоВременномХранилище) Тогда
РассчитатьСкидкиБезПримененияКОбъекту();
КонецЕсли;
ТекущиеДанные = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуПримененныеСкидки(ТекущиеДанные, Объект, ЭтаФорма);
ИначеЕсли Поле = Элементы.ЗаменяющиеТоварыЦена Тогда
ТекущиеДанные = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.ВидЦены) И НЕ Объект.Согласован Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru='Для редактирования цены очистите вид цены'"),
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.ЗаменяющиеТовары", ТекущиеДанные.НомерСтроки, "ВидЦены"),);
КонецЕсли;
ИначеЕсли НаборыКлиент.БлокируемыйЭлемент(Поле) Тогда
ТекущаяСтрока = Объект.ЗаменяющиеТовары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПараметрОповещения = Новый Структура;
ПараметрОповещения.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрОповещения.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрОповещения.Вставить("ИмяТЧ", "ЗаменяющиеТовары");
ПараметрОповещения.Вставить("ФормаВладелец", УникальныйИдентификатор);
Оповестить("РедактироватьНабор", ПараметрОповещения, ЭтаФорма);
КонецЕсли;
ИначеЕсли Поле = Элементы.ЗаменяющиеТоварыНоменклатураНабора Тогда
ПоказатьЗначение(Неопределено, Элементы.ЗаменяющиеТовары.ТекущиеДанные.НоменклатураНабора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыПередУдалением(Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.ЗаменяющиеТовары, ЭтотОбъект);
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтаФорма, "ЗаменяющиеТовары", Отказ);
ВзаиморасчетыКлиент.ТабличнаяЧастьПередУдалением(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение);
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыСодержаниеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(
Элемент.ТекстРедактирования,
ЭтотОбъект,
"Элементы.ЗаменяющиеТовары.ТекущиеДанные.Содержание",
НСтр("ru='Содержание услуги'"));
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействий.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий.Заменяющие));
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий,
"ВариантОбеспечения,ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "ЗаменяющиеТовары"));
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
СписокТипов = ПродажиКлиент.ТипыНоменклатурыСАналитикойПодразделение();
Если СписокТипов.НайтиПоЗначению(ТекущаяСтрока.ТипНоменклатуры) = Неопределено Тогда
ТекущаяСтрока.Подразделение = ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка");
КонецЕсли;
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.ЗаменяющиеТовары,
ДатаОтгрузкиОбязательна, СкладОбязателен);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыСкладПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий.Заменяющие));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий,
"ВариантОбеспечения,ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "ЗаменяющиеТовары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.ЗаменяющиеТовары,
ДатаОтгрузкиОбязательна, СкладОбязателен);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ТекущаяСтрока.Количество > 0 И Не ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
ИначеЕсли ТекущаяСтрока.Количество > 0 И ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) Тогда
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
ИначеЕсли (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат( ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокЗаменяющиеТовары(СтруктураДействий, Объект);
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыВидЦеныПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыСтавкаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыОтмененоПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
Если Не ТекущаяСтрока.Отменено Тогда
ТекущаяСтрока.ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка");
Объект.Согласован = Ложь;
КонецЕсли;
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.ЗаменяющиеТовары,
ДатаОтгрузкиОбязательна, СкладОбязателен);
ПриИзмененииСкладаВТабличнойЧастиЗаменяющиеТоварыСервер();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыПодразделениеПриИзменении(Элемент)
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыПроцентРучнойСкидкиПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыСуммаРучнойСкидкиПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы =ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьПроцентРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать, ПересчитыватьСуммуРучнойСкидки", Ложь, Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
ЭтоПередачаНаКомиссию = Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтХранителя");
СтруктураПересчетаЦены = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаЦеныСкидкиВПродажахВТЧ(Объект,
ЭтоПередачаНаКомиссию);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуСкидкуПоСуммеВПродажах", СтруктураПересчетаЦены);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыСуммаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий("Заменяющие", Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Элементы.ЗаменяющиеТовары.ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = Элементы.ЗаменяющиеТовары.ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий.Заменяющие, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыАвтоОтметкаНезаполненного()
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера") Тогда
Элементы.ЗаменяющиеТовары.АвтоОтметкаНезаполненного = Ложь;
Иначе
Элементы.ЗаменяющиеТовары.АвтоОтметкаНезаполненного = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыВариантОбеспеченияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияОбработкаВыбора(
ЭтотОбъект,
Элементы.ЗаменяющиеТовары.ТекущиеДанные,
ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыВариантОбеспеченияПриИзменении(Элемент)
Перем ПараметрыФормы;
Если ОбеспечениеВДокументахКлиент.ОткрытьФормуВыбораСкладаИСерий(ЭтотОбъект) Тогда
ВариантПолученияПараметров = ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия();
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(ВариантПолученияПараметров);
КонецЕсли;
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияПриИзменении(
ЭтотОбъект,
ПараметрыФормы,
"ОбработатьВыборСкладаИСерии",
Истина,
"ЗаменяющиеТоварыВариантОбеспеченияПриИзмененииПослеВопроса");
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыВариантОбеспеченияОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыОбособленноПриИзменении(Элемент)
СтрокаТаблицы = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
ОбеспечениеВДокументахКлиент.ОбособленноПриИзменении(СтрокаТаблицы);
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(СтрокаТаблицы, СтруктураДействий, Неопределено);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыПриИзменении(Элемент)
Если ВзаиморасчетыКлиент.ТабличнаяЧастьПриИзмененииЕстьИзменениеДатОтгрузок(ЭтотОбъект) Тогда
ЗаменяющиеТоварыПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратПорчи(Команда)
Если Объект.ВозвратПорчи Тогда
ЕстьСтрокиСПорчей = ПроверитьОтключитьНастроитьФормуПоПорче();
Если ЕстьСтрокиСПорчей Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("ВозвратПорчиЗавершение", ЭтотОбъект), НСтр("ru='При выполнении операции будет очищена информация о качестве возвращаемых товаров. Продолжить?'"),РежимДиалогаВопрос.ДаНет,,КодВозвратаДиалога.Да);
КонецЕсли;
Иначе
Объект.ВозвратПорчи = Истина;
НастроитьЭлементыФормы();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратПорчиЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
Иначе
ОчиститьОтключитьНастроитьФормуПоПорче();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыЗаполнитьЦеныПоСоглашению()
Если КомиссионныеПродажи25 Тогда
ВидЦеныДоговора = УчетныйВидЦеныДоговора();
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВиду(Объект, ВидЦеныДоговора) Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ВозвращаемыеТоварыЗаполнитьЦеныПоСоглашениюСервер(, ТекстОшибки);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
ИначеЕсли ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоСоглашению(Объект, "ВозвращаемыеТовары", НСтр("ru='Возвращаемые товары'")) Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ВозвращаемыеТоварыЗаполнитьЦеныПоСоглашениюСервер(, ТекстОшибки);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция УчетныйВидЦеныДоговора()
СтруктураПараметров = ЦеныПредприятияЗаполнениеСервер.НовыйПараметрыПроверкиВидаЦенДоговора();
СтруктураПараметров.ПолеВидаЦен = "ВидЦенУчетный";
СтруктураПараметров.ИмяТабличнойЧасти = "ВозвращаемыеТовары";
Если ЗначениеЗаполнено(Объект.Договор) Тогда
ВидЦены = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, СтруктураПараметров.ПолеВидаЦен);
Если ЗначениеЗаполнено(ВидЦены) Тогда
СтруктураПараметров.ВидЦены = ВидЦены;
КонецЕсли;
КонецЕсли;
Возврат СтруктураПараметров;
КонецФункции
&НаКлиенте
Процедура ВозвращаемыеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦен(Команда)
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦен(Объект, "ВозвращаемыеТовары", НСтр("ru='Возвращаемые товары'")) Тогда
ПараметрыВыбораЦен = ЦеныПредприятияЗаполнениеКлиент.НовыйПараметрыЗаполненияВыбратьВидЦен();
ПараметрыВыбораЦен.ОписаниеОповещения =
Новый ОписаниеОповещения("ВозвращаемыеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦенЗавершение", ЭтотОбъект);
Если Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтХранителя")
И Не КомиссионныеПродажи25 Тогда
ПараметрыВыбораЦен.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
КонецЕсли;
ПараметрыВыбораЦен.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораЦен.ВладелецИндивидуальногоВидаЦен = ?(ИспользоватьСоглашенияСКлиентами,Объект.Соглашение,Объект.Партнер);
ЦеныПредприятияЗаполнениеКлиент.ВыбратьВидЦен(ПараметрыВыбораЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦенЗавершение(ВидЦен, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ВидЦен) Тогда
ЦеныРассчитаны = ВозвращаемыеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(ВидЦен);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, ВидЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыЗаполнитьДатуПоступленияДляВыделенныхСтрок(Команда)
Если Элементы.ВозвращаемыеТовары.ВыделенныеСтроки.Количество() > 0 Тогда
ЗаполнитьДатуПоступления(Элементы.ВозвращаемыеТовары.ВыделенныеСтроки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ВозвращаемыеТоварыПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода, "ВозвращаемыеТовары");
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыПоРеализациям(Команда)
Отказ = Ложь;
ОчиститьСообщения();
ВозвратОтРозничногоПокупателя = Ложь;
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя") Тогда
ВозвратОтРозничногоПокупателя = Истина;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Валюта) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Поле ""Валюта"" не заполнено'"),
Объект.Ссылка, "Объект.Валюта",
,
Отказ);
КонецЕсли;
Если Не Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера")
И Не ЗначениеЗаполнено(Объект.НалогообложениеНДС) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Поле ""Налогообложение НДС"" не заполнено'"),
Объект.Ссылка, "Объект.НалогообложениеНДС",
,
Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Поле ""Организация"" не заполнено'"),
Объект.Ссылка, "Объект.Организация",
,
Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Партнер) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Поле ""Клиент"" не заполнено'"),
Объект.Ссылка, "Объект.Партнер",
,
Отказ);
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Контрагент) И НЕ ИспользоватьПартнеровКакКонтрагентов Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Поле ""Контрагент"" не заполнено'"),
Объект.Ссылка, "Объект.Контрагент",
,
Отказ);
КонецЕсли;
Если Не Отказ Тогда
ПараметрыПодбора = Новый Структура;
ПараметрыПодбора.Вставить("ДокументВозврата", Объект.Ссылка);
ПараметрыПодбора.Вставить("Партнер", Объект.Партнер);
ПараметрыПодбора.Вставить("Документ", Объект.Ссылка);
ПараметрыПодбора.Вставить("Валюта", Объект.Валюта);
ПараметрыПодбора.Вставить("Дата", ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ОбщегоНазначенияКлиент.ДатаСеанса()));
ПараметрыПодбора.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыПодбора.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыПодбора.Вставить("Соглашение", Объект.Соглашение);
ПараметрыПодбора.Вставить("Договор", Объект.Договор);
ПараметрыПодбора.Вставить("Организация", Объект.Организация);
ПараметрыПодбора.Вставить("Контрагент", Объект.Контрагент);
ПараметрыПодбора.Вставить("ВозвратОтРозничногоПокупателя", ВозвратОтРозничногоПокупателя);
ПараметрыПодбора.Вставить("ЧекККМ", Объект.ЧекККМ);
ПараметрыПодбора.Вставить("ПоказыватьТовары", Истина);
ПараметрыПодбора.Вставить("ПоказыватьТару", Не ВозвратОтРозничногоПокупателя И Объект.ВернутьМногооборотнуюТару);
ПараметрыПодбора.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ПараметрыПодбора.Вставить("ВозвратОтХранителя",
Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтХранителя"));
ОткрытьФорму(
"ОбщаяФорма.ПодборТоваровПоРеализациямИПередачам",
ПараметрыПодбора,
ЭтотОбъект);
КонецЕсли;
ОбновитьИнформациюПоРеализациям();
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьПереданныеТовары(Команда)
Отказ = Ложь;
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Партнер"" не заполнено'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Партнер", "", Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Организация) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Организация"" не заполнено'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Организация", "", Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Договор) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Договор"" не заполнено'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Договор", "", Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Владелец", Объект.Партнер);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("Договор", Объект.Договор);
ОткрытьФорму("Обработка.ПодборТоваровПереданныхНаОтветственноеХранение.Форма.Форма", ПараметрыФормы, ЭтаФорма,
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыЗаполнитьЦеныПоСоглашению()
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоСоглашению(Объект,"ЗаменяющиеТовары", НСтр("ru='Заменяющие товары'")) Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаменяющиеТоварыЗаполнитьЦеныПоСоглашениюСервер(, ТекстОшибки);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦен(Команда)
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦен(Объект, "ЗаменяющиеТовары", НСтр("ru='Заменяющие товары'")) Тогда
ПараметрыВыбораЦен = ЦеныПредприятияЗаполнениеКлиент.НовыйПараметрыЗаполненияВыбратьВидЦен();
ПараметрыВыбораЦен.ОписаниеОповещения =
Новый ОписаниеОповещения("ЗаменяющиеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦенЗавершение", ЭтотОбъект);
ПараметрыВыбораЦен.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораЦен.ИспользоватьПриПродаже = Истина;
ЦеныПредприятияЗаполнениеКлиент.ВыбратьВидЦен(ПараметрыВыбораЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦенЗавершение(ВидЦен, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ВидЦен) Тогда
ЦеныРассчитаны = ЗаменяющиеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(ВидЦен);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, ВидЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыОтменитьВыделенныеСтроки(Команда)
Если Не ПродажиКлиент.НеобходимоЗаполнениеПричиныОтменыВыделенныхСтрок(Объект.ЗаменяющиеТовары, НСтр("ru='Заменяющие товары'"), Элементы.ЗаменяющиеТовары.ВыделенныеСтроки) Тогда
Возврат;
КонецЕсли;
ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка");
Если ИспользоватьПричиныОтменыЗаказовКлиентов Тогда
ОткрытьФорму("Справочник.ПричиныОтменыЗаказовКлиентов.ФормаВыбора",,,,,, Новый ОписаниеОповещения("ЗаменяющиеТоварыОтменитьВыделенныеСтрокиЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
ЗаменяющиеТоварыОтменитьВыделенныеСтрокиФрагмент(ПричинаОтмены);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыОтменитьВыделенныеСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПричинаОтмены = Результат;
Если Не ЗначениеЗаполнено(ПричинаОтмены) Тогда
Возврат;
КонецЕсли;
ЗаменяющиеТоварыОтменитьВыделенныеСтрокиФрагмент(ПричинаОтмены);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыОтменитьВыделенныеСтрокиФрагмент(Знач ПричинаОтмены)
Перем ВыделенныеСтроки, СтруктураДействий;
СтруктураДействий = Новый Структура();
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ВыделенныеСтроки = ДополнитьДоПолногоНабора("ЗаменяющиеТовары");
ПродажиКлиент.ОтменитьВыделенныеСтроки(
Объект.ЗаменяющиеТовары,
ВыделенныеСтроки,
ПричинаОтмены,
СтруктураДействий);
ПродажиКлиент.ОповеститьОбОтменеВыделенныхСтрок(ПричинаОтмены);
ЗаменяющиеТоварыОтменитьВыделенныеСтрокиСервер(ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыОтменитьВыделенныеСтроки(Команда)
Если Объект.ВозвращаемыеТовары.Количество() = 0 Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru='Таблица возвращаемых товаров не заполнена.'"));
Возврат;
ИначеЕсли Элементы.ВозвращаемыеТовары.ВыделенныеСтроки.Количество() = 0 Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru='В таблице товаров отсутствуют выделенные строки.'"));
Возврат;
КонецЕсли;
ЕстьОтмененныеСтроки = ВозвращаемыеТоварыОтменитьВыделенныеСтрокиФрагмент();
Если ЕстьОтмененныеСтроки Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Выделенные строки отменены'"),
,
НСтр("ru='Выделенные строки заявки отменены.'"),
БиблиотекаКартинок.Информация32);
Иначе
ПоказатьПредупреждение(Неопределено, НСтр("ru='Выделенные строки уже отменены.'"));
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ВозвращаемыеТоварыОтменитьВыделенныеСтрокиФрагмент()
ОбрабатываемыеСтроки = Новый Массив;
СтруктураДействий = Новый Структура();
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ЕстьОтмененныеСтроки = Ложь;
ВыделенныеСтроки = ДополнитьДоПолногоНабора("ВозвращаемыеТовары");
Для Каждого ТекСтрока Из ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.ВозвращаемыеТовары.НайтиПоИдентификатору(ТекСтрока);
Если СтрокаТаблицы <> Неопределено Тогда
Если Не СтрокаТаблицы.Отменено Тогда
СтрокаТаблицы.Отменено = Истина;
ЕстьОтмененныеСтроки = Истина;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(СтрокаТаблицы);
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.ВозвращаемыеТовары,
Неопределено);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтотОбъект);
Если ПараметрыУказанияСерий.Возвращаемые.ИспользоватьСерииНоменклатуры Тогда
ЗаполнитьСтатусыУказанияСерийСервер("Возвращаемые");
КонецЕсли;
ПриИзмененииСкладаВТабличнойЧастиВозвращаемыеТоварыСервер();
Возврат ЕстьОтмененныеСтроки
КонецФункции
&НаКлиенте
Процедура ВозвращаемыеТоварыОтменитьНевозвращенныеСтроки(Команда)
Если Объект.ВозвращаемыеТовары.Количество() = 0 Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru='Таблица возвращаемых товаров не заполнена.'"));
Возврат;
КонецЕсли;
ЕстьНеотмененныеСтроки = Ложь;
Для Каждого ТекСтрока Из Объект.ВозвращаемыеТовары Цикл
Если Не ТекСтрока.Отменено Тогда
ЕстьНеотмененныеСтроки = Истина;
КонецЕсли;
КонецЦикла;
Если Не ЕстьНеотмененныеСтроки Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru='Все строки уже отменены.'"));
Возврат;
КонецЕсли;
ПроверятьОстатки = Истина;
Если Не Объект.Проведен Тогда
ПроверятьОстатки = Ложь;
ИначеЕсли Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена") Тогда
ПроверятьОстатки = Истина;
КонецЕсли;
КоличествоСтрокОтменено = ОтменитьНевозвращенныеСтрокиСервер(ПроверятьОстатки);
Если КоличествоСтрокОтменено = 0 Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки не отменены'"),
,
НСтр("ru='По всем строкам заказа оформлен возврат. Строки не могут быть отменены.'"),
БиблиотекаКартинок.Информация32);
Иначе
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
Если ПроверятьОстатки Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки отменены'"),
,
НСтр("ru='Все невозвращенные строки заявки отменены.'"),
БиблиотекаКартинок.Информация32);
Иначе
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки отменены'"),
,
НСтр("ru='Все возвращаемые строки заявки отменены.'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЗаменяющиеТоварыПоВозвращаемым(Команда)
Если Объект.ВозвращаемыеТовары.Количество() = 0 Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru='Таблица возвращаемых товаров не заполнена. Заполнение невозможно.'"));
Возврат;
КонецЕсли;
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить("ПоСоглашению", НСтр("ru='По условиям продаж'"));
СписокКнопок.Добавить("ПоТоварам", НСтр("ru='По возвращаемым товарам'"));
СписокКнопок.Добавить("Отмена", НСтр("ru='Отмена'"));
ТекстВопроса = НСтр("ru='Табличная часть заменяющих товаров будет перезаполнена.
|Заполнить цены по условиям продаж или по возвращаемым товарам?'");
ПоказатьВопрос(Новый ОписаниеОповещения("ЗаполнитьЗаменяющиеТоварыПоВозвращаемымЗавершение", ЭтотОбъект),
ТекстВопроса, СписокКнопок);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЗаменяющиеТоварыПоВозвращаемымЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса<>"Отмена" Тогда
Объект.ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым = РезультатВопроса="ПоТоварам";
ЗаполнитьЗаменяющиеТоварыПоВозвращаемымСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыОтменитьНепоставленныеСтроки(Команда)
Если Не ПродажиКлиент.НеобходимоЗаполнениеПричиныОтменыНепоставленныхСтрок(Объект.ЗаменяющиеТовары, НСтр("ru='Заменяющие товары'")) Тогда
Возврат;
КонецЕсли;
ПроверятьОстатки = Истина;
Если Не Объект.Проведен Тогда
ПроверятьОстатки = Ложь;
ИначеЕсли Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению") Тогда
ПроверятьОстатки = Истина;
КонецЕсли;
ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка");
Если ИспользоватьПричиныОтменыЗаказовКлиентов Тогда
ОткрытьФорму("Справочник.ПричиныОтменыЗаказовКлиентов.ФормаВыбора",,,,,, Новый ОписаниеОповещения("ЗаменяющиеТоварыОтменитьНепоставленныеСтрокиЗавершение", ЭтотОбъект, Новый Структура("ПроверятьОстатки", ПроверятьОстатки)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
ЗаменяющиеТоварыОтменитьНепоставленныеСтрокиФрагмент(ПричинаОтмены, ПроверятьОстатки);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыОтменитьНепоставленныеСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПроверятьОстатки = ДополнительныеПараметры.ПроверятьОстатки;
ПричинаОтмены = Результат;
Если Не ЗначениеЗаполнено(ПричинаОтмены) Тогда
Возврат;
КонецЕсли;
ЗаменяющиеТоварыОтменитьНепоставленныеСтрокиФрагмент(ПричинаОтмены, ПроверятьОстатки);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыОтменитьНепоставленныеСтрокиФрагмент(Знач ПричинаОтмены, Знач ПроверятьОстатки)
Перем КоличествоСтрокОтменено;
КоличествоСтрокОтменено = ЗаменяющиеТоварыОтменитьНепоставленныеСтрокиСервер(ПричинаОтмены, ПроверятьОстатки);
Если КоличествоСтрокОтменено = 0 Тогда
ПродажиКлиент.ОповеститьОбОтменеНепоставленныхСтрок(ПричинаОтмены, КоличествоСтрокОтменено, ПроверятьОстатки);
Иначе
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
ПродажиКлиент.ОповеститьОбОтменеНепоставленныхСтрок(ПричинаОтмены, КоличествоСтрокОтменено, ПроверятьОстатки);
КонецЕсли;
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.ЗаменяющиеТовары,
ДатаОтгрузкиОбязательна, СкладОбязателен);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыСкрыватьОтмененныеСтроки(Команда)
СкрыватьОтмененныеСтроки = Не СкрыватьОтмененныеСтроки;
Если СкрыватьОтмененныеСтроки Тогда
Элементы.ЗаменяющиеТовары.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.ЗаменяющиеТовары.ОтборСтрок = Неопределено;
КонецЕсли;
Элементы.ЗаменяющиеТоварыСкрыватьОтмененныеСтроки.Пометка = СкрыватьОтмененныеСтроки;
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыСкрыватьОтмененныеСтроки(Команда)
СкрыватьОтмененныеСтрокиВозвращаемыеТовары = Не СкрыватьОтмененныеСтрокиВозвращаемыеТовары;
Если СкрыватьОтмененныеСтрокиВозвращаемыеТовары Тогда
Элементы.ВозвращаемыеТовары.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.ВозвращаемыеТовары.ОтборСтрок = Неопределено;
КонецЕсли;
Элементы.ВозвращаемыеТоварыСкрыватьОтмененныеСтроки.Пометка = СкрыватьОтмененныеСтрокиВозвращаемыеТовары;
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСкидкиНаценки(Команда)
РассчитатьСкидкиНаценкиКлиент();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьИнформациюОСкидках(Команда)
Если Не Объект.СкидкиРассчитаны Тогда
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Истина);
СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки);
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
Если Не ЗначениеЗаполнено(АдресПримененныхСкидокВоВременномХранилище) Тогда
РассчитатьСкидкиБезПримененияКОбъекту();
КонецЕсли;
ТекущиеДанные = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуПримененныеСкидки(ТекущиеДанные, Объект, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидку(Команда)
Если Не СкидкиНаценкиЗаполнениеКлиент.ВозможноНазначениеРучнойСкидкиНаценки(Объект, "ЗаменяющиеТовары", НСтр("ru='Заменяющие товары'")) Тогда
Возврат;
КонецЕсли;
АдресВоВременномХранилище = АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(Ложь);
Оповещение = Новый ОписаниеОповещения(
"НазначитьРучнуюСкидкуЗавершение",
ЭтотОбъект,
Новый Структура("АдресВоВременномХранилище", АдресВоВременномХранилище));
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуНазначенияРучныхСкидок(
АдресВоВременномХранилище,
Объект.Валюта,
Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидкуЗавершение(СуммаРучнойСкидкиНаценки, ДополнительныеПараметры) Экспорт
АдресВоВременномХранилище = ДополнительныеПараметры.АдресВоВременномХранилище;
Если СуммаРучнойСкидкиНаценки <> Неопределено Тогда
НазначитьРучнуюСкидкуНаСервере(СуммаРучнойСкидкиНаценки, Неопределено, АдресВоВременномХранилище);
СкидкиНаценкиЗаполнениеКлиент.ОповеститьОбОкончанииНазначенияРучныхСкидокНаценок(СуммаРучнойСкидкиНаценки, Объект.Валюта);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидкуДляВыделенныхСтрок(Команда)
Если Не СкидкиНаценкиЗаполнениеКлиент.ВозможноНазначениеРучнойСкидкиНаценки(Объект, "ЗаменяющиеТовары", НСтр("ru='Заменяющие товары'")) Тогда
Возврат;
КонецЕсли;
АдресВоВременномХранилище = АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(Истина);
Оповещение = Новый ОписаниеОповещения(
"НазначитьРучнуюСкидкуДляВыделенныхСтрокЗавершение",
ЭтотОбъект,
Новый Структура("АдресВоВременномХранилище", АдресВоВременномХранилище));
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуНазначенияРучныхСкидок(
АдресВоВременномХранилище,
Объект.Валюта,
Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидкуДляВыделенныхСтрокЗавершение(СуммаРучнойСкидкиНаценки, ДополнительныеПараметры) Экспорт
АдресВоВременномХранилище = ДополнительныеПараметры.АдресВоВременномХранилище;
Если СуммаРучнойСкидкиНаценки <> Неопределено Тогда
НазначитьРучнуюСкидкуНаСервере(СуммаРучнойСкидкиНаценки, Элементы.ЗаменяющиеТовары.ВыделенныеСтроки, АдресВоВременномХранилище);
СкидкиНаценкиЗаполнениеКлиент.ОповеститьОбОкончанииНазначенияРучныхСкидокНаценок(СуммаРучнойСкидкиНаценки, Объект.Валюта);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НазначитьАвтоматическиеСкидки(Команда)
АдресВХранилище = ВыполнитьПредварительныйРасчетСкидокНаСервере();
Оповещение = Новый ОписаниеОповещения("НазначитьАвтоматическиеСкидкиЗавершение", ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуНазначенияУправляемыхСкидокНаценок(АдресВХранилище, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьАвтоматическиеСкидкиЗавершение(ВозвращенноеЗначение, ДополнительныеПараметры) Экспорт
Если ВозвращенноеЗначение <> Неопределено Тогда
УправляемыеСкидки = ВозвращенноеЗначение;
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Ложь);
СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки);
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
Если НЕ Объект.ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Скидки (наценки)'"),
,
НСтр("ru = 'Скидки (наценки) рассчитаны'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьРучныеСкидки(Команда)
Если Не СкидкиНаценкиЗаполнениеКлиент.ВозможнаОтменаРучныхСкидокНаценок(Объект, "ЗаменяющиеТовары", НСтр("ru='Заменяющие товары'")) Тогда
Возврат;
КонецЕсли;
ОтменитьРучныеСкидкиНаСервере();
СкидкиНаценкиЗаполнениеКлиент.ОповеститьОбОкончанииНазначенияРучныхСкидокНаценок();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ЗаменяющиеТоварыПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода, "ЗаменяющиеТовары");
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыОткрытьПодбор(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаявкаНаВозвратТоваровОтКлиента.ФормаДокумента.Команда.ЗаменяющиеТоварыОткрытьПодбор");
Отказ = Ложь;
Если (ИспользоватьСоглашенияСКлиентами И Не ЗначениеЗаполнено(Объект.Соглашение))
Или Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
СообщитьОбОшибкахОткрытияПодбора(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрЗаголовок = НСтр("ru = 'Подбор товаров в %Документ%'");
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", Объект.Ссылка);
Иначе
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", НСтр("ru = 'заявку на возврат товаров от клиента'"));
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтХранителя") Тогда
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре()));
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
КонецЕсли;
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыФормы.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыФормы.Вставить("СкрыватьПодакцизныеТовары", Объект.НалогообложениеНДС = ПредопределенноеЗначение("Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяЕНВД"));
ПараметрыФормы.Вставить("ОтображатьФлагСкрыватьПодакцизныеТовары", Объект.НалогообложениеНДС = ПредопределенноеЗначение("Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяЕНВД"));
ПараметрыФормы.Вставить("ИспользоватьДатыОтгрузки", Истина);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("Заголовок", ПараметрЗаголовок);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий.Заменяющие);
ПараметрыФормы.Вставить("Назначение", Объект.Назначение);
ПараметрыФормы.Вставить("Подразделение", Объект.Подразделение);
ПараметрыФормы.Вставить("ПодборВариантовОбеспечения", ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента);
ПараметрыФормы.Вставить("ВозвращатьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыФормы.Вставить("ВариантОбеспеченияИФлагОбособленно", ВариантОбеспеченияИФлагОбособленно);
ПараметрыФормы.Вставить("ОграничиватьВариантыОбеспечения", Не ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента);
ПараметрыФормы.Вставить("ДоступныеОстаткиПараметрыДокумента",
ОбеспечениеВДокументахКлиент.ДоступныеОстаткиПараметрыДокумента(ЭтотОбъект));
ПараметрыФормы.Вставить("ВариантОбеспеченияИФлагОбособленно", ВариантОбеспеченияИФлагОбособленно);
ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.ЗаменяющиеТовары;
ДанныеТаблицы = Объект.ЗаменяющиеТовары;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.СтруктураПересчетаСуммы(
"Количество, Сумма, СуммаНДС, СуммаСНДС, СуммаРучнойСкидки, СуммаАвтоматическойСкидки, "
+ ЗависимыеРеквизитыЗаменяющиеТоварыСтрокой(), "КоличествоУпаковок");
Если Не ТаблицаФормы.ТекущиеДанные = Неопределено Тогда
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ЗаполнитьСтруктуруПересчетаСуммы(СтруктураПересчетаСуммы, ТаблицаФормы.ТекущиеДанные);
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("СтруктураПересчетаСуммы", СтруктураПересчетаСуммы);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы,
Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект, ДополнительныеПараметры));
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.ЗаменяющиеТовары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
НоваяСтрока.КодСтроки = 0;
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ДобавитьСтрокуДляПересчетаСуммы(ДополнительныеПараметры.СтруктураПересчетаСуммы, ТекущаяСтрока);
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ДобавитьСтрокуДляПересчетаСуммы(ДополнительныеПараметры.СтруктураПересчетаСуммы, НоваяСтрока);
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПересчитатьСуммы(ДополнительныеПараметры.СтруктураПересчетаСуммы);
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ОбновитьКэшНоменклатура");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуВозвращаемые(Команда)
ТаблицаФормы = Элементы.ВозвращаемыеТовары;
ДанныеТаблицы = Объект.ВозвращаемыеТовары;
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуВозвращаемыеЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуВозвращаемыеЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.ВозвращаемыеТовары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
НоваяСтрока.КодСтроки = 0;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокВозвращаемыеТовары(СтруктураДействий, Объект);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(Результат, Параметры) Экспорт
Если Результат.Результат Тогда
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ЗаменяющиеТовары Тогда
ОбработатьШтрихкоды(Результат.ТаблицаТоваров, "ЗаменяющиеТовары");
Иначе
ОбработатьШтрихкоды(Результат.ТаблицаТоваров, "ВозвращаемыеТовары");
КонецЕсли;
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерииВозвращаемые(Команда)
ОткрытьПодборСерий("Возвращаемые");
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьСообщения(Команда)
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуСообщений(СтруктураСообщений(), ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СчитатьКартуЛояльности(Команда)
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ОткрытьФорму(
"Справочник.КартыЛояльности.Форма.СчитываниеКартыЛояльности",
ПараметрыОткрытия,
ЭтаФорма,
ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыПечати(Команда)
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
ДанныеРаспоряженияНаДоставку = ДоставкаТоваровКлиентСервер.ПараметрыРаспоряжения();
ЗаполнитьЗначенияСвойств(ДанныеРаспоряженияНаДоставку, Объект);
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("ТолькоПросмотр", ТолькоПросмотр);
СтруктураПараметров.Вставить("АдресДоставки", Объект.АдресДоставки);
СтруктураПараметров.Вставить("БанковскийСчетГрузоотправителя", Объект.БанковскийСчетГрузоотправителя);
СтруктураПараметров.Вставить("БанковскийСчетГрузополучателя", Объект.БанковскийСчетГрузополучателя);
СтруктураПараметров.Вставить("БанковскийСчетКонтрагента", Объект.БанковскийСчетКонтрагента);
СтруктураПараметров.Вставить("БанковскийСчет", Объект.БанковскийСчет);
СтруктураПараметров.Вставить("Грузоотправитель", Объект.Грузоотправитель);
СтруктураПараметров.Вставить("Грузополучатель", Объект.Грузополучатель);
СтруктураПараметров.Вставить("Партнер", Объект.Партнер);
СтруктураПараметров.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
СтруктураПараметров.Вставить("Контрагент", Объект.Контрагент);
СтруктураПараметров.Вставить("Организация", Объект.Организация);
СтруктураПараметров.Вставить("Дата", Объект.Дата);
СтруктураПараметров.Вставить("Руководитель", Объект.Руководитель);
СтруктураПараметров.Вставить("ГлавныйБухгалтер", Объект.ГлавныйБухгалтер);
СтруктураПараметров.Вставить("Ссылка", Объект.Ссылка);
СтруктураПараметров.Вставить("ДанныеРаспоряженияНаДоставку", ДанныеРаспоряженияНаДоставку);
ОткрытьФорму("Документ.ЗаказКлиента.Форма.РеквизитыПечати", СтруктураПараметров, ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыПечатиЗаявленияНаВозврат(Команда)
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("ТолькоПросмотр", ТолькоПросмотр);
СтруктураПараметров.Вставить("Контрагент", Объект.Контрагент);
СтруктураПараметров.Вставить("Покупатель", Объект.Покупатель);
СтруктураПараметров.Вставить("ДатаРожденияПокупателя", Объект.ДатаРожденияПокупателя);
СтруктураПараметров.Вставить("ПричинаВозврата", Объект.ПричинаВозврата);
СтруктураПараметров.Вставить("ВидДокументаПокупателя", Объект.ВидДокументаПокупателя);
СтруктураПараметров.Вставить("СерияДокументаПокупателя", Объект.СерияДокументаПокупателя);
СтруктураПараметров.Вставить("НомерДокументаПокупателя", Объект.НомерДокументаПокупателя);
СтруктураПараметров.Вставить("ДатаВыдачиДокументаПокупателя", Объект.ДатаВыдачиДокументаПокупателя);
СтруктураПараметров.Вставить("СрокДействияДокументаПокупателя", Объект.СрокДействияДокументаПокупателя);
СтруктураПараметров.Вставить("КемВыданДокументПокупателя", Объект.КемВыданДокументПокупателя);
СтруктураПараметров.Вставить("КодПодразделенияДокументаПокупателя", Объект.КодПодразделенияДокументаПокупателя);
СтруктураПараметров.Вставить("Организация", Объект.Организация);
СтруктураПараметров.Вставить("ДатаДокумента", Объект.Дата);
ОткрытьФорму("Обработка.ПечатьЗаявленияНаВозвратТоваровОтКлиента.Форма.РеквизитыПечатиЗаявленияНаВозврат", СтруктураПараметров, ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьРеализацииИЦены(Команда)
Если Объект["ВозвращаемыеТовары"].Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru='В документе не заполнен список Возвращаемые товары. Документы продажи и цены не могут быть заполнены.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ЗаполнитьРеализацииИЦеныСервер();
КонецПроцедуры
&НаКлиенте
Процедура ВставитьЗаменяющиеСтроки(Команда)
КоличествоТоваровДоВставки = Объект.ЗаменяющиеТовары.Количество();
ПолучитьЗаменяющиеСтрокиИзБуфераОбмена();
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.ЗаменяющиеТовары,
ДатаОтгрузкиОбязательна, СкладОбязателен);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КоличествоВставленных = Объект.ЗаменяющиеТовары.Количество()-КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура ВставитьВозвращаемыеСтроки(Команда)
КоличествоТоваровДоВставки = Объект.ВозвращаемыеТовары.Количество();
ПолучитьВозвращаемыеСтрокиИзБуфераОбмена();
КоличествоВставленных = Объект.ВозвращаемыеТовары.Количество()-КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьЗаменяющиеСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.ЗаменяющиеТовары) Тогда
СкопироватьСтрокиНаСервере("ЗаменяющиеТовары");
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.ЗаменяющиеТовары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьВозвращаемыеСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.ВозвращаемыеТовары) Тогда
СкопироватьСтрокиНаСервере("ВозвращаемыеТовары");
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.ВозвращаемыеТовары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(
ЭтаФорма,
"ВозвращаемыеТовары",
"Номенклатура,Характеристика,Количество,,ДатаПоступления");
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(
ЭтаФорма,
"ЗаменяющиеТовары",
"Номенклатура,Характеристика,Количество,,ДатаОтгрузки");
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
ПараметрыЗагрузки.Организация = Объект.Организация;
ПараметрыЗагрузки.ЗагружатьЦены = Истина;
ПараметрыЗагрузки.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыЗагрузки.НалогообложениеНДС = Объект.НалогообложениеНДС;
ПараметрыЗагрузки.ДатаЗаполнения = Объект.Дата;
ПараметрыЗагрузки.ЭтоВозвратнаяТара = Объект.ВернутьМногооборотнуюТару;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Дата = Объект.Дата;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Валюта = Объект.Валюта;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Соглашение = Объект.Соглашение;
Если Команда.Имя = "ЗагрузитьВозвращаемыеТоварыИзВнешнегоФайла" Тогда
ИмяТЧ = "ВозвращаемыеТовары";
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
Иначе
ИмяТЧ = "ЗаменяющиеТовары";
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтХранителя") Тогда
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
КонецЕсли;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект, ИмяТЧ);
РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных, ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаявку(Команда)
Если Модифицированность Или Не Объект.Проведен Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("ЗакрытьЗаявкуЗавершение", ЭтотОбъект),
НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"), РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗакрытьЗаявкуФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаявкуФрагмент(Результат = Неопределено,ДополнительныеПараметры = Неопределено) Экспорт
СписокЗаказовКЗакрытию = Новый СписокЗначений;
СписокЗаказовКЗакрытию.Добавить(Объект.Ссылка);
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
СтруктураЗакрытия.Вставить("ТаблицаТоваровПриход", ПоместитьВоВременноеХранилищеНаСервере("ВозвращаемыеТовары", Новый УникальныйИдентификатор));
СтруктураЗакрытия.Вставить("ТаблицаТоваровРасход", ПоместитьВоВременноеХранилищеНаСервере("ЗаменяющиеТовары", Новый УникальныйИдентификатор));
ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия", СтруктураЗакрытия,
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаявкуЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытьЗаявкуФрагмент", ЭтотОбъект);
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("ДействиеПослеЗаписи",ОписаниеОповещения);
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
ОчиститьСообщения();
Если Не Записать(ПараметрыЗаписи) Тогда
Возврат;
КонецЕсли;
КонецЕсли;
ЗакрытьЗаявкуФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗачетОплаты(Команда)
ВзаиморасчетыКлиент.ЗачетОплаты(ЭтаФорма, Элементы.ЗачетОплатыФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьОплатуБонуснымиБаллами(Команда)
ПрименитьОплатуБонуснымиБаллами(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьОплатуБонуснымиБаллами(Команда) Экспорт
Если РозничныеПродажиКлиент.ПроверитьВозможностьДобавленияОплатыБонуснымиБаллами(ЭтотОбъект, Ложь) Тогда
ОписаниеОповещенияЗавершения = Новый ОписаниеОповещения("ДобавитьОплатуБонуснымиБалламиПродолжение", ЭтотОбъект);
Если Объект.Проведен Тогда
РозничныеПродажиКлиент.ОтобразитьВопросОНеобходимостиНепроведенногоДокумента(ЭтотОбъект, ОписаниеОповещенияЗавершения);
Иначе
ВыполнитьОбработкуОповещения(ОписаниеОповещенияЗавершения, Истина);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьОплатуБонуснымиБалламиПродолжение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Истина Тогда
Отказ = Ложь;
Если Не Объект.СкидкиРассчитаны И СкидкиИзменились() Тогда
ПрименитьИзмененияСкидокНаценокНаКлиенте(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыОткрытияФормы = Новый Структура;
ПараметрыОткрытияФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытияФормы.Вставить("КартаЛояльности", Объект.КартаЛояльности);
ПараметрыОткрытияФормы.Вставить("АдресТабличнойЧастиТовары", АдресТабличнойЧастиТовары());
ПараметрыОткрытияФормы.Вставить("Валюта", Объект.Валюта);
ОткрытьФорму(
"Справочник.БонусныеПрограммыЛояльности.Форма.ОплатаБонуснымиБаллами",
ПараметрыОткрытияФормы,
ЭтотОбъект,,,,
Новый ОписаниеОповещения("ДобавитьОплатуБонуснымиБалламиЗавершение", ЭтотОбъект));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьОплатуБонуснымиБалламиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(Результат) Тогда
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
Возврат;
КонецЕсли;
ПрименитьОплатуБонуснымиБаллами(Результат.АдресВоВременномХранилище);
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыЗаполнитьСтавкуНДС(Команда)
Если Объект.ВозвращаемыеТовары.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'В список ""Возвращаемые товары"" не введено ни одной строки.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура("ИмяТабличнойЧасти", "ВозвращаемыеТовары");
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьСтавкуНДСЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ТипНалогообложенияНДС", Объект.НалогообложениеНДС);
ОткрытьФорму("Справочник.СтавкиНДС.ФормаВыбора", ПараметрыФормы,,,,, ОповещениеОЗакрытии);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыЗаполнитьСтавкуНДС(Команда)
Если Объект.ЗаменяющиеТовары.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'В список ""Заменяющие товары"" не введено ни одной строки.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура("ИмяТабличнойЧасти", "ЗаменяющиеТовары");
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьСтавкуНДСЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ТипНалогообложенияНДС", Объект.НалогообложениеНДС);
ОткрытьФорму("Справочник.СтавкиНДС.ФормаВыбора", ПараметрыФормы,,,,, ОповещениеОЗакрытии);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДСЗавершение(СтавкаНДС, ДополнительныеПараметры) Экспорт
Если СтавкаНДС = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения, ДополнительныеПараметры.ИмяТабличнойЧасти);
Если ДополнительныеПараметры.ИмяТабличнойЧасти = "ЗаменяющиеТовары" Тогда
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения, ИмяТабличнойЧасти)
Перем ВыделенныеСтроки;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
Если ИмяТабличнойЧасти = "ВозвращаемыеТовары" Тогда
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
ВыделенныеСтроки = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(Объект.ВозвращаемыеТовары, Элементы.ВозвращаемыеТовары.ВыделенныеСтроки);
ИначеЕсли ИмяТабличнойЧасти = "ЗаменяющиеТовары" Тогда
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ВыделенныеСтроки = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(Объект.ЗаменяющиеТовары, Элементы.ЗаменяющиеТовары.ВыделенныеСтроки);
КонецЕсли;
Если Не ЗначениеЗаполнено(ВыделенныеСтроки) Тогда
Возврат;
КонецЕсли;
Для каждого СтрокаТабличнойЧасти Из ВыделенныеСтроки Цикл
СтрокаТабличнойЧасти.СтавкаНДС = СтавкаНДС;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ВыделенныеСтроки,
СтруктураДействий,
Объект[ИмяТабличнойЧасти],
КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьЗапретВыбораГруппыСклада(СкладЭлемент)
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьСкладыВТабличнойЧастиДокументовПродажи") Тогда
Возврат;
КонецЕсли;
Если КомиссионныеПродажи25
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя Тогда
Если СкладЭлемент.ВыборГруппИЭлементов = ГруппыИЭлементы.ГруппыИЭлементы Тогда
СкладЭлемент.ВыборГруппИЭлементов = ГруппыИЭлементы.Элементы;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Склад)
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Склад, "ЭтоГруппа") Тогда
Объект.Склад = Справочники.Склады.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДанныеВыбораСкладов(Склад)
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Склады.Ссылка КАК Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка В ИЕРАРХИИ(&ГруппаСкладов)
| И Склады.ЭтоГруппа = ЛОЖЬ
| И Склады.ВыборГруппы <> ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.Запретить)");
Запрос.УстановитьПараметр("ГруппаСкладов", Склад);
МассивСкладов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивСкладов;
КонецФункции
&НаСервере
Процедура УстановитьПараметрыВыбораТоварыСклад()
Элементы.ВозвращаемыеТоварыСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
Элементы.ЗаменяющиеТоварыСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
СписокСкладов = ДанныеВыбораСкладов(Объект.Склад);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(Элементы.ВозвращаемыеТоварыСклад, "Ссылка", СписокСкладов);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(Элементы.ЗаменяющиеТоварыСклад, "Ссылка", СписокСкладов);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовПоНесколькимСкладам()
Элементы.ГруппаНадписьИКартинкаНесколькоСкладовВозвращаемыеТовары.Видимость = СкладГруппа;
Элементы.ГруппаНадписьИКартинкаНесколькоСкладовЗаменяющиеТовары.Видимость = СкладГруппа;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Склад)
Возврат Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовПродажи(Склад);
КонецФункции
&НаСервере
Процедура ПриИзмененииСкладаВТабличнойЧастиВозвращаемыеТоварыСервер()
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.ВозвращаемыеТовары, ТаблицаСкладовВозвращаемыеТовары, СкладГруппа);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Возвращаемые);
ВсегоСкладов = ТаблицаСкладовВозвращаемыеТовары.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладовВозвращаемыеТовары, Элементы.КартинкаНесколькоСкладовВозвращаемыеТовары, ВсегоСкладов);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСкладаВТабличнойЧастиЗаменяющиеТоварыСервер()
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.ЗаменяющиеТовары, ТаблицаСкладовЗаменяющиеТовары, СкладГруппа);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Заменяющие);
ВсегоСкладов = ТаблицаСкладовЗаменяющиеТовары.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладовЗаменяющиеТовары, Элементы.КартинкаНесколькоСкладовЗаменяющиеТовары, ВсегоСкладов);
КонецПроцедуры
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтаФорма, "ВозвращаемыеТоварыСклад");
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтаФорма, "ЗаменяющиеТоварыСклад");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвращаемыеТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвращаемыеТовары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвращаемыеТовары.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗаменяющиеТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаменяющиеТовары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаменяющиеТовары.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
ОбеспечениеВДокументахСервер.УстановитьУсловноеОформлениеОбособленно(
УсловноеОформление,
Элементы.ЗаменяющиеТоварыОбособленно,
"Объект.ЗаменяющиеТовары.ВариантОбеспечения",
"Объект.ЗаменяющиеТовары.ТипНоменклатуры");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "ДатаОтгрузки", "Объект.ДатаОтгрузки", "ДатаОтгрузкиОбязательна");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "Склад", "Объект.Склад", "СкладОбязателен");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "ЗаменяющиеТоварыДатаОтгрузки", "Объект.ЗаменяющиеТовары.ДатаОтгрузки", "Объект.ЗаменяющиеТовары.ДатаОтгрузкиОбязательна");
ОбеспечениеВДокументахСервер.ДоступныеОстаткиДобавитьОформлениеКолонкиДоступно(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("Склад");
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
Отбор.ПравоеЗначение = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована;
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Склад");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СостояниеПросрочено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныйДокумент);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Состояние");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.Выполнена;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЗакрытыйДокумент);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвращаемыеТоварыДатаПоступления.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату);
СписокЗначений.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению);
СписокЗначений.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке);
СписокЗначений.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвращаемыеТовары.ДатаПоступления");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвращаемыеТовары.Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Состояние");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СостоянияЗаявокНаВозвратТоваровОтКлиентов.Отклонена;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЗакрытыйДокумент);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗаменяющиеТоварыПроцентАвтоматическойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗаменяющиеТоварыПроцентРучнойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗаменяющиеТоварыСуммаАвтоматическойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗаменяющиеТоварыСуммаРучнойСкидки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаменяющиеТовары.Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ВыделятьОтрицательные", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗаменяющиеТоварыЦена.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаменяющиеТовары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗаменяющиеТоварыСумма.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаменяющиеТовары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьРучныеСкидкиВПродажах");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвращаемыеТоварыЦена.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвращаемыеТовары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвращаемыеТоварыСумма.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвращаемыеТовары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗаменяющиеТоварыПроцентРучнойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗаменяющиеТоварыСуммаРучнойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗаменяющиеТоварыПроцентАвтоматическойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЗаменяющиеТоварыСуммаАвтоматическойСкидки.Имя);
ОперацииВозвратаБезСкидок = Новый СписокЗначений();
ОперацииВозвратаБезСкидок.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера);
ОперацииВозвратаБезСкидок.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтХранителя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = ОперацииВозвратаБезСкидок;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтаФорма,
"ВозвращаемыеТоварыСтавкаНДС",
"ВозвращаемыеТоварыСуммаНДС",
"ВозвращаемыеТоварыСуммаСНДС");
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтаФорма,
"ЗаменяющиеТоварыСтавкаНДС",
"ЗаменяющиеТоварыСуммаНДС",
"ЗаменяющиеТоварыСуммаСНДС");
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтаФорма, "ВозвращаемыеТоварыСуммаСНДС");
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтаФорма, "ЗаменяющиеТоварыСуммаСНДС");
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = "ВозвращаемыеТоварыНоменклатураЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Объект.ВозвращаемыеТовары.Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма, ПараметрыУсловногоОформления);
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = "ЗаменяющиеТоварыНоменклатураЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Объект.ЗаменяющиеТовары.Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма, ПараметрыУсловногоОформления);
ОбщегоНазначенияУТ.УстановитьУсловноеОформлениеПриоритета(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма,
"ЗаменяющиеТоварыХарактеристика",
"Объект.ЗаменяющиеТовары.ХарактеристикиИспользуются");
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма,
"ВозвращаемыеТоварыХарактеристика",
"Объект.ВозвращаемыеТовары.ХарактеристикиИспользуются");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвращаемыеТоварыХарактеристикаОприходование.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвращаемыеТовары.ХарактеристикиИспользуютсяОприходование");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвращаемыеТовары.Порча");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<характеристики не используются>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвращаемыеТоварыХарактеристикаОприходование.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвращаемыеТовары.ХарактеристикиИспользуютсяОприходование");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвращаемыеТовары.Порча");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвращаемыеТоварыНоменклатураОприходование.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвращаемыеТоварыХарактеристикаОприходование.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвращаемыеТовары.Порча");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
ДополнительныеПараметрыУстановитьУсловноеОформлениеСодержания = НоменклатураСервер.ДополнительныеПараметрыУстановитьУсловноеОформлениеСодержания();
ДополнительныеПараметрыУстановитьУсловноеОформлениеСодержания.ИмяПоляВводаСодержания = "ЗаменяющиеТоварыСодержание";
ДополнительныеПараметрыУстановитьУсловноеОформлениеСодержания.ИмяПоляВводаУпаковки = "ЗаменяющиеТоварыУпаковка";
ДополнительныеПараметрыУстановитьУсловноеОформлениеСодержания.ПутьКПолюОтбораВариантаОформления = "Объект.ЗаменяющиеТовары.ВариантОформленияПродажи";
ДополнительныеПараметрыУстановитьУсловноеОформлениеСодержания.ПутьКПолюОтбораСодержания = "Объект.ЗаменяющиеТовары.Содержание";
НоменклатураСервер.УстановитьУсловноеОформлениеСодержания(ЭтаФорма, ДополнительныеПараметрыУстановитьУсловноеОформлениеСодержания);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(ЭтаФорма,
"ВозвращаемыеТоварыВидЦены",
"Объект.ВозвращаемыеТовары.ВидЦены");
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(ЭтаФорма,
"ЗаменяющиеТоварыВидЦены",
"Объект.ЗаменяющиеТовары.ВидЦены");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаПоступления.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату);
СписокЗначений.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению);
СписокЗначений.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке);
СписокЗначений.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДатаПоступления");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВсеСтрокиВозвратаОтменены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаПоступления.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату);
СписокЗначений.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению);
СписокЗначений.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке);
СписокЗначений.Добавить(Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДатаПоступления");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеОднойДатой");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВсеСтрокиВозвратаОтменены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвращаемыеТоварыДокументРеализации.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЧекККМ");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ПараметрыУстановки = МногооборотнаяТараСервер.ПараметрыУстановкиУсловногоОформленияДляСтрокСМногооборотнойТарой();
ПараметрыУстановки.Форма = ЭтаФорма;
ПараметрыУстановки.ЭтоПоступление = Истина;
ПараметрыУстановки.ЭтоПередача = ?(Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера, Истина, Ложь);
ПараметрыУстановки.ИмяПоляВводаСтавкиНДС = "ВозвращаемыеТоварыСтавкаНДС";
ПараметрыУстановки.ИмяПоляВводаЦены = "ВозвращаемыеТоварыЦена";
ПараметрыУстановки.ИмяПоляВводаСуммы = "ВозвращаемыеТоварыСумма";
ПараметрыУстановки.ПутьКТЧОтбора = "Объект.ВозвращаемыеТовары";
МногооборотнаяТараСервер.УстановитьУсловноеОформлениеДляСтрокСМногооборотнойТарой(ПараметрыУстановки);
ПараметрыУстановки = МногооборотнаяТараСервер.ПараметрыУстановкиУсловногоОформленияДляСтрокСМногооборотнойТарой();
ПараметрыУстановки.Форма = ЭтаФорма;
ПараметрыУстановки.ЭтоПоступление = Истина;
ПараметрыУстановки.ИмяПоляВводаСтавкиНДС = "ЗаменяющиеТоварыСтавкаНДС";
ПараметрыУстановки.ИмяПоляВводаЦены = "ЗаменяющиеТоварыЦена";
ПараметрыУстановки.ИмяПоляВводаСуммы = "ЗаменяющиеТоварыСумма";
ПараметрыУстановки.ПутьКТЧОтбора = "Объект.ЗаменяющиеТовары";
МногооборотнаяТараСервер.УстановитьУсловноеОформлениеДляСтрокСМногооборотнойТарой(ПараметрыУстановки);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, Ложь,
"ВозвращаемыеТоварыСерия",
"Объект.ВозвращаемыеТовары.СтатусУказанияСерий",
"Объект.ВозвращаемыеТовары.ТипНоменклатуры");
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, "СерииВсегдаВТЧТовары",
"ЗаменяющиеТоварыСерия",
"Объект.ЗаменяющиеТовары.СтатусУказанияСерий",
"Объект.ЗаменяющиеТовары.ТипНоменклатуры");
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма, Ложь,
"ВозвращаемыеТоварыСтатусУказанияСерий",
"Объект.ВозвращаемыеТовары.СтатусУказанияСерий");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Склад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
НаборыСервер.УстановитьУсловноеОформление(ЭтаФорма, "ЗаменяющиеТовары");
НаборыСервер.УстановитьУсловноеОформление(ЭтаФорма, "ВозвращаемыеТовары");
СкладыСервер.УстановитьУсловноеОформлениеПодразделенияВТЧ(ЭтаФорма, "ЗаменяющиеТовары", Ложь);
ЗаказыСервер.УстановитьОформлениеОтмененнойСтроки(УсловноеОформление,
Элементы.ЗаменяющиеТовары,
Элементы.ЗаменяющиеТоварыОтменено.Имя,
Элементы.ЗаменяющиеТоварыПричинаОтмены.Имя,
Элементы.ЗаменяющиеТоварыЦена.Имя,
Элементы.ЗаменяющиеТоварыСумма.Имя);
ЗаказыСервер.УстановитьОформлениеОтмененнойСтроки(УсловноеОформление,
Элементы.ВозвращаемыеТовары,
Элементы.ВозвращаемыеТоварыОтменено.Имя);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКомандыЗаполнитьСтавкуНДС()
КомандыЗаполненияСтавкиНДС = Новый Массив;
КомандыЗаполненияСтавкиНДС.Добавить("ВозвращаемыеТоварыЗаполнитьСтавкуНДС");
КомандыЗаполненияСтавкиНДС.Добавить("ЗаменяющиеТоварыЗаполнитьСтавкуНДС");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Элементы,
КомандыЗаполненияСтавкиНДС,
"Видимость",
ЗначениеЗаполнено(Объект.НалогообложениеНДС)
И Объект.НалогообложениеНДС <> Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС);
КонецПроцедуры
#Область Обеспечение
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов()
Ошибка = Ложь;
Если ОбеспечениеВДокументахКлиент.НужноОбновитьДоступностьПослеЗаписи(ЭтотОбъект,
"Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов", Ошибка) Тогда
ОбеспечениеВДокументахКлиент.НастроитьГиперссылкиСостояниеОбеспеченияПослеЗаписи(ЭтотОбъект, Ошибка);
ОбновлятьКолонку = ОбеспечениеВДокументахКлиент.ОбновлятьКолонкуДоступноПослеРаспределенияЗапасов(ЭтотОбъект);
Если ОбновлятьКолонку Тогда
ОбновитьКолонкуДоступноПослеРаспределенияЗапасов();
Иначе
ОбновитьСостояниеКлиент();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьКолонкуДоступноПослеРаспределенияЗапасов()
ОбеспечениеВДокументахСервер.ОбновитьДоступностьПослеЗаписи(ЭтотОбъект);
ОбновитьСостояниеСервер();
КонецПроцедуры
&НаСервере
Функция ПараметрыВыбораОбеспечения(Режим)
ПараметрыФормы = ОбеспечениеВДокументахСервер.ПараметрыВыбораОбеспечения(
ЭтотОбъект,
Элементы.ЗаменяющиеТовары.ТекущаяСтрока,
Режим);
Возврат ПараметрыФормы;
КонецФункции
&НаКлиенте
Функция ПараметрыФормыЗапросаКоличестваИСерий(Режим)
ПараметрыПроверки = ОбеспечениеКлиентСервер.ИнициализироватьПараметрыПроверкиЗаполнения("ЗаменяющиеТовары",
НСтр("ru = 'Заменяющие товары'"));
Если Не ОбеспечениеКлиент.ПроверитьЗаполнение(
Объект,
Объект.ЗаменяющиеТовары,
Элементы.ЗаменяющиеТовары.ТекущаяСтрока,
ПараметрыПроверки,
Объект.Склад,
Режим) Тогда
Возврат Неопределено;
КонецЕсли;
ПараметрыФормы = ПараметрыВыбораОбеспечения(Режим);
ПараметрыФормы.ПараметрыУказанияСерий = ПараметрыУказанияСерий.Заменяющие;
Возврат ПараметрыФормы;
КонецФункции
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
ОчиститьСообщения();
Записать(Новый Структура("РежимЗаписи,СозданиеКорректировки", РежимЗаписиДокумента.Проведение, ДополнительныеПараметры));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьОбеспечения()
ЕстьПраво = ОбеспечениеВДокументахСервер.ЕстьПравоПросмотраГиперссылкиСостоянияОбеспечения();
НадоЗаменитьТовары = Объект.СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары;
Элементы.СтраницыГиперссылкаСостояниеОбеспечения.Видимость = ЕстьПраво И ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента
И НадоЗаменитьТовары;
Если Не ПравоДоступа("Добавление", Метаданные.Документы.КорректировкаНазначенияТоваров)
Или Не ПолучитьФункциональнуюОпцию("ИспользоватьОбособленноеОбеспечениеЗаказов")
Или Объект.ЭтоЗаказКакСчет
Или Не ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента Тогда
Элементы.СоздатьКорректировкуНазначенияСнятиеРезерва.Видимость = Ложь;
Элементы.СоздатьКорректировкуНазначенияРезервирование.Видимость = Ложь;
КонецЕсли;
ОбеспечениеВДокументахСервер.НастроитьГиперссылкиСостояниеОбеспечения(ЭтотОбъект);
Элементы.ДатаОтгрузки.Подсказка = ОбеспечениеВДокументахСервер.ПодсказкаДатаОтгрузки();
МожноСнятьФлагОбособленно = Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала");
УправлениеФлагом = ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента И МожноСнятьФлагОбособленно;
ВидимостьФлага = ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыВключитьОбособленноеОбеспечение",
"Видимость",
УправлениеФлагом);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыВыключитьОбособленноеОбеспечение",
"Видимость",
УправлениеФлагом);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыОбособленно",
"Видимость",
ВидимостьФлага);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыОбособленно",
"Доступность",
УправлениеФлагом);
ВидимостьОбеспечения = ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента И Не Объект.ЭтоЗаказКакСчет;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыВариантОбеспечения",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыДоступно",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыКОбеспечению",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыКонтекстноеМенюКОбеспечению",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыНеОбеспечивать",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыКонтекстноеМенюНеОбеспечивать",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыОтгрузить",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыКонтекстноеМенюОтгрузить",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыРезервировать",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыКонтекстноеМенюРезервировать",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыРезервироватьПоМереПоступления",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ЗаменяющиеТоварыКонтекстноеМенюРезервироватьПоМереПоступления",
"Видимость",
ВидимостьОбеспечения);
КонецПроцедуры
&НаСервере
Процедура УстановитьПризнакКомиссионнойПродажи()
ПризнакКомиссионнойПродажиДоОбновления = КомиссионныеПродажи25;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
Если ТолькоКомиссионныеПродажи25 Тогда
КомиссионныеПродажи25 = Истина;
ИначеЕсли ЗначениеЗаполнено(Объект.Соглашение) Тогда
КомиссионныеПродажи25 = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "КомиссионныеПродажи25");
ИначеЕсли ЗначениеЗаполнено(Объект.Договор) Тогда
КомиссионныеПродажи25 = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "КомиссионныеПродажи25");
КонецЕсли;
Иначе
КомиссионныеПродажи25 = Ложь;
КонецЕсли;
Если НЕ ПризнакКомиссионнойПродажиДоОбновления = КомиссионныеПродажи25 Тогда
ОбновитьСпособКомпенсации();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ПартнерПриИзмененииСервер()
ЗаполнитьУсловияПродаж();
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
ИспользоватьДоговорыСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
Если ИспользоватьДоговорыСКлиентами Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Партнер", "ТолькоПросмотр", ЗначениеЗаполнено(Объект.ЧекККМ));
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ЗаменяющиеТовары, СтруктураДействий);
СтруктураДействий.ЗаполнитьПризнакХарактеристикиИспользуются.Вставить("НоменклатураОприходование", "ХарактеристикиИспользуютсяОприходование");
СтруктураДействий.Удалить("ЗаполнитьПризнакВариантОформленияПродажи");
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ВозвращаемыеТовары, СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ВозвращаемыеТовары");
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ЗаменяющиеТовары");
ОбновитьДубликатыЗависимыхРеквизитов();
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент);
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
МассивИзмененныхРеквизитов = Новый Массив;
МассивИзмененныхРеквизитов.Добавить("Соглашение");
МассивИзмененныхРеквизитов.Добавить("Партнер");
МассивИзмененныхРеквизитов.Добавить("Договор");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивИзмененныхРеквизитов);
НастроитьЭлементыФормы();
УстановитьВидимостьДоговора();
ОбновитьСостояниеСервер();
ЗаполнитьУстановитьРеквизитыДоставкиСервер("Партнер");
ОбновитьИнформациюПоРеализациям();
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
УстановитьВидимостьКомандЗаполнения();
ПродажиСервер.ПартнерПриИзменении(Объект);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ПродажиСервер.ДокументОснование(Объект, "ДокументРеализации, ВозвращаемыеТовары.ДокументРеализации"));
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПартнерОчисткаСервер()
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ПродажиСервер.ДокументОснование(Объект, "ДокументРеализации, ВозвращаемыеТовары.ДокументРеализации"));
КонецПроцедуры
&НаСервере
Процедура КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился)
ВладелецКонтактногоЛица = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КонтактноеЛицо, "Владелец");
Если ВладелецКонтактногоЛица <> Объект.Партнер Тогда
Объект.Партнер = ВладелецКонтактногоЛица;
ПартнерПриИзмененииСервер();
ПартнерИзменился = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СоглашениеПриИзмененииСервер(ПерезаполнитьЗаменяюшиеТовары = Ложь)
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоСоглашению(НЕ Объект.ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым);
ДокументОснование =
ПродажиСервер.ДокументОснование(ДокументПродажи, "ДокументРеализации, ВозвращаемыеТовары.ДокументРеализации");
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, ДокументПродажи);
ОтветственныеЛицаСервер.УстановитьМенеджера(ДокументПродажи, ДокументОснование);
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
ВалютаДокумента = Объект.Валюта;
НастроитьЭлементыПоОперацииСервер();
ХозяйственнаяОперацияДоговора = СамообслуживаниеКлиентСервер.ХозяйственнаяОперацияДоговора(Объект.ХозяйственнаяОперация);
Если (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя)
И (ИспользоватьРучныеСкидкиВПродажах Или ИспользоватьАвтоматическиеСкидкиВПродажах)Тогда
СкидкиНаценкиЗаполнениеСервер.ОтменитьСкидки(Объект, "ЗаменяющиеТовары", Истина);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения, Ложь);
ОбновитьДубликатыЗависимыхРеквизитов(Истина);
КонецЕсли;
УстановитьПризнакКомиссионнойПродажи();
ОбновитьСпособКомпенсации();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ЗаменяющиеТовары, СтруктураДействий);
СтруктураДействий.ЗаполнитьПризнакХарактеристикиИспользуются.Вставить("НоменклатураОприходование", "ХарактеристикиИспользуютсяОприходование");
СтруктураДействий.Удалить("ЗаполнитьПризнакВариантОформленияПродажи");
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ВозвращаемыеТовары, СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ВозвращаемыеТовары");
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ЗаменяющиеТовары");
ОбновитьДубликатыЗависимыхРеквизитов();
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент);
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(Объект.Организация, Объект.БанковскийСчет, , Объект.НаправлениеДеятельности);
ДенежныеСредстваСервер.ПроверитьЗаполнитьКассуОрганизацииПоВладельцу(Объект.Организация, Объект.Касса, Объект.ФормаОплаты, Объект.НаправлениеДеятельности);
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
Если ПерезаполнитьЗаменяюшиеТовары И Объект.СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары Тогда
ЗаполнитьЗаменяющиеТоварыПоВозвращаемымСервер();
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
ОбновитьИнформациюПоРеализациям();
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("Договор");
МассивРеквизитов.Добавить("Соглашение");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивРеквизитов);
НастроитьЭлементыФормы();
УстановитьВидимостьДоговора();
ОбновитьСостояниеСервер();
ОбновитьСпособКомпенсации();
УстановитьВидимостьКомандЗаполнения();
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ВариантОбеспеченияИФлагОбособленно = ПродажиСервер.ВариантОбеспеченияИФлагОбособленноПоУмолчанию(Объект.Соглашение, Объект.Статус, , Не Объект.ЭтоЗаказКакСчет);
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
УстановитьЗапретВыбораГруппыСклада(Элементы.Склад);
КонецПроцедуры
&НаСервере
Процедура СоглашениеОчисткаСервер()
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ПродажиСервер.ДокументОснование(Объект, "ДокументРеализации, ВозвращаемыеТовары.ДокументРеализации"));
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииСервер()
ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчет, Объект.БанковскийСчетКонтрагента);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
Если ЗначениеЗаполнено(Объект.Договор) Тогда
Объект.ОплатаВВалюте = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор,"ОплатаВВалюте");
КонецЕсли;
УстановитьПризнакКомиссионнойПродажи();
Если КомиссионныеПродажи25 Тогда
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ВозвращаемыеТовары, СтруктураДействий);
КонецЕсли;
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ПродажиСервер.ДокументОснование(Объект, "ДокументРеализации, ВозвращаемыеТовары.ДокументРеализации"));
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
ОбновитьСпособКомпенсации();
НастроитьЭлементыФормы();
ОбновитьСостояниеСервер();
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ВалютаПриИзмененииСервер(НоваяВалюта, ПересчитатьСуммы)
ЗаполнитьДоговорПоУмолчанию();
Если ПересчитатьСуммы Тогда
СтараяВалюта = ВалютаДокумента;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
СтруктурыКурсов = ВзаиморасчетыСервер.КурсыВалютДляПересчета(ЭтаФорма, СтараяВалюта, НоваяВалюта, ВалютаРегламентированногоУчета, ДатаДокумента);
СтруктураКурсовСтаройВалюты = СтруктурыКурсов.СтруктураКурсовСтаройВалюты;
СтруктураКурсовНовойВалюты = СтруктурыКурсов.СтруктураКурсовНовойВалюты;
Ценообразование.ПересчитатьСуммыТабличнойЧастиВВалюту(
Объект.ВозвращаемыеТовары,
Объект.ЦенаВключаетНДС,
СтараяВалюта,
НоваяВалюта,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты);
Ценообразование.ПересчитатьСуммыТабличнойЧастиВВалюту(
Объект.ЗаменяющиеТовары,
Объект.ЦенаВключаетНДС,
СтараяВалюта,
НоваяВалюта,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты,
Истина,
Истина);
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
Ценообразование.РаспределитьСуммуПоЭтапамОплаты(Объект, СуммаЗаменяющихТоваров, СуммаЗалогаЗаТару);
КонецЕсли;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Валюта");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Валюта");
КонецПроцедуры
&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииСервер()
ХозяйственнаяОперацияДоговора = СамообслуживаниеКлиентСервер.ХозяйственнаяОперацияДоговора(Объект.ХозяйственнаяОперация);
НоваяХозяйственнаяОперацияСоглашения = СамообслуживаниеКлиентСервер.ХозяйственнаяОперацияСоглашения(Объект.ХозяйственнаяОперация);
Если ИспользоватьСоглашенияСКлиентами И НоваяХозяйственнаяОперацияСоглашения <> ХозяйственнаяОперацияСоглашения Тогда
ХозяйственнаяОперацияСоглашения = НоваяХозяйственнаяОперацияСоглашения;
Объект.Соглашение = Неопределено;
КонецЕсли;
УстановитьПризнакКомиссионнойПродажи();
ЗаполнитьДоговорПоУмолчанию();
Объект.ЧекККМ = Неопределено;
Если (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя) Тогда
Если (ИспользоватьРучныеСкидкиВПродажах Или ИспользоватьАвтоматическиеСкидкиВПродажах)Тогда
СкидкиНаценкиЗаполнениеСервер.ОтменитьСкидки(Объект, "ЗаменяющиеТовары", Истина);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения, Ложь);
ОбновитьДубликатыЗависимыхРеквизитов(Истина);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецЕсли;
Объект.ЭтапыГрафикаОплаты.Очистить();
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
Объект.СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ПустаяСсылка();
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя Тогда
Объект.СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ПустаяСсылка();
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
УсловияПродаж = ПродажиСервер.ПолучитьУсловияПродаж(Объект.Соглашение, Истина);
Если ПродажиСервер.ПолучитьХозяйственнуюОперациюВозвратаПоРеализации(УсловияПродаж.ХозяйственнаяОперация) <> Объект.ХозяйственнаяОперация Тогда
Объект.Соглашение = Неопределено;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ((Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера
И КомиссионныеПродажи25) Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя)
И Объект.ВернутьМногооборотнуюТару Тогда
Объект.ВернутьМногооборотнуюТару = Ложь;
ВернутьМногооборотнуюТаруПриИзмененииСервер();
КонецЕсли;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
ПартнерИзменен = Ложь;
Если Объект.Партнер <> Справочники.Партнеры.РозничныйПокупатель Тогда
Объект.Партнер = Справочники.Партнеры.РозничныйПокупатель;
ПартнерИзменен = Истина;
КонецЕсли;
Если ПартнерИзменен Тогда
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
Объект.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
КонецЕсли;
ПартнерПриИзмененииСервер();
КонецЕсли;
Объект.ВернутьМногооборотнуюТару = Ложь;
ВернутьМногооборотнуюТаруПриИзмененииСервер();
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратТоваровОтКлиента Тогда
Если Не ЗначениеЗаполнено(Объект.СпособКомпенсации) Тогда
Объект.СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары;
КонецЕсли;
КонецЕсли;
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Партнер", "ТолькоПросмотр", ЗначениеЗаполнено(Объект.ЧекККМ));
НастроитьЭлементыПоОперацииСервер();
НастроитьЭлементыФормы();
УстановитьВидимостьСпособовКомпенсации();
УстановитьВидимостьДоговора();
УстановитьВидимостьКомандЗаполнения();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
УстановитьЗапретВыбораГруппыСклада(Элементы.Склад);
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
ПродажиСервер.ПартнерПриИзменении(Объект);
Если Не ЗначениеЗаполнено(Объект.БанковскийСчетКонтрагента) Тогда
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент);
КонецЕсли;
КонецЕсли;
ОбновитьИнформациюПоРеализациям();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Контрагент");
ЗаполнитьУстановитьРеквизитыДоставкиСервер("Партнер");
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
НастроитьЭлементыФормы();
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьДоговорПоУмолчанию();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
КонецЕсли;
ОбновитьИнформациюПоРеализациям();
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(Объект.Организация, Объект.БанковскийСчет, , Объект.НаправлениеДеятельности);
ДенежныеСредстваСервер.ПроверитьЗаполнитьКассуОрганизацииПоВладельцу(Объект.Организация, Объект.Касса, Объект.ФормаОплаты, Объект.НаправлениеДеятельности);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ПродажиСервер.ДокументОснование(Объект, "ДокументРеализации, ВозвращаемыеТовары.ДокументРеализации"));
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Организация");
НастроитьЭлементыФормы();
УстановитьВидимостьДоговора();
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СкладПриИзмененииСервер()
СкладГруппа = ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Объект.Склад);
Склад = Объект.Склад;
УстановитьПараметрыВыбораТоварыСклад();
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.ВозвращаемыеТовары, Истина);
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.ЗаменяющиеТовары, Истина);
УстановитьВидимостьЭлементовПоНесколькимСкладам();
ПриИзмененииСкладаВТабличнойЧастиВозвращаемыеТоварыСервер();
ПриИзмененииСкладаВТабличнойЧастиЗаменяющиеТоварыСервер();
КонецПроцедуры
&НаСервере
Процедура ЧекККМПриИзмененииСервер(ПерезаполнитьТовары)
ДокументРеализации = ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(Объект.ЧекККМ);
Для каждого СтрокаТовары Из Объект.ВозвращаемыеТовары Цикл
СтрокаТовары.ДокументРеализации = ДокументРеализации;
КонецЦикла;
Объект.Партнер = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ЧекККМ, "Партнер");
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ВалютаДокумента = Объект.Валюта;
Если (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя)
И (ИспользоватьРучныеСкидкиВПродажах Или ИспользоватьАвтоматическиеСкидкиВПродажах)Тогда
СкидкиНаценкиЗаполнениеСервер.ОтменитьСкидки(Объект, "ЗаменяющиеТовары", Истина);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения, Ложь);
КонецЕсли;
НастроитьЭлементыПоОперацииСервер();
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент, Истина);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Партнер", "ТолькоПросмотр", ЗначениеЗаполнено(Объект.ЧекККМ));
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ЗаменяющиеТовары, СтруктураДействий);
СтруктураДействий.ЗаполнитьПризнакХарактеристикиИспользуются.Вставить("НоменклатураОприходование", "ХарактеристикиИспользуютсяОприходование");
СтруктураДействий.Удалить("ЗаполнитьПризнакВариантОформленияПродажи");
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ВозвращаемыеТовары, СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ВозвращаемыеТовары");
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ЗаменяющиеТовары");
ЗаполнитьРеквизитыФормыИзЧекаККМ(Объект.ЧекККМ, Новый Структура("ВидЦеныЧекаККМ", "ВидЦены"));
ОбновитьДубликатыЗависимыхРеквизитов();
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент);
Если ПерезаполнитьТовары Тогда
ЗаполнитьВозвращаемыеТоварыПоЧеку();
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
МассивИзмененныхРеквизитов = Новый Массив;
МассивИзмененныхРеквизитов.Добавить("Соглашение");
МассивИзмененныхРеквизитов.Добавить("Партнер");
МассивИзмененныхРеквизитов.Добавить("Договор");
МассивИзмененныхРеквизитов.Добавить("Валюта");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивИзмененныхРеквизитов);
НастроитьЭлементыФормы();
УстановитьВидимостьДоговора();
КонецПроцедуры
&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ВозвращаемыеТовары, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ЗаменяющиеТовары, СтруктураДействий, КэшированныеЗначения);
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
Если НЕ ИспользоватьСоглашенияСКлиентами Тогда
ПараметрыВыбораВидаЦены = ЗначениеНастроекПовтИсп.ПараметрыВыбораВидаЦеныПоУмолчанию();
ПараметрыВыбораВидаЦены.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораВидаЦены.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораВидаЦены.Статус = Перечисления.СтатусыДействияВидовЦен.Действует;
ВидЦеныПоУмолчанию = ЗначениеНастроекПовтИсп.ВидЦеныПоУмолчанию(ПараметрыВыбораВидаЦены);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер()
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Ложь, Объект.ВернутьМногооборотнуюТару));
КэшированныеЗначенияВозвращаемыеТовары = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ВозвращаемыеТовары, СтруктураДействий, КэшированныеЗначенияВозвращаемыеТовары);
КэшированныеЗначенияЗаменяющиеТовары = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ЗаменяющиеТовары, СтруктураДействий, КэшированныеЗначенияЗаменяющиеТовары);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначенияВозвращаемыеТовары.ОбработанныеСтроки,
СтруктураДействий,
Объект.ВозвращаемыеТовары,
Неопределено);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначенияЗаменяющиеТовары.ОбработанныеСтроки,
СтруктураДействий,
Объект.ЗаменяющиеТовары,
Неопределено);
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
УстановитьВидимостьКомандыЗаполнитьСтавкуНДС();
КонецПроцедуры
&НаСервере
Процедура ПоступлениеОднойДатойПриИзмененииСервер()
Если Объект.ПоступлениеОднойДатой Тогда
Объект.ДатаПоступления = МаксимальнаяДатаПоступления();
ЗаполнитьДатыПоступленияСервер(Объект.ДатаПоступления);
КонецЕсли;
НастроитьЭлементыФормы();
КонецПроцедуры
&НаСервере
Функция ДатаПриИзмененииСервер(ПересчитыватьЦены)
Если ПересчитыватьЦены Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер();
Иначе
ЦеныРассчитаны = Ложь;
КонецЕсли;
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма,"Дата");
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Процедура ДатаСогласованияПриИзмененииНаСервере()
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "ДатаСогласования");
КонецПроцедуры
&НаСервере
Процедура СпособКомпенсацииПриИзмененииСервер()
Если НЕ ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента
И Объект.СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары Тогда
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ЗаменяющиеТовары, СтруктураДействий, Неопределено);
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Заменяющие);
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
НастроитьЭлементыФормы();
КонецПроцедуры
&НаСервере
Процедура СтатусПриИзмененииСервер()
ВариантОбеспеченияИФлагОбособленно = ПродажиСервер.ВариантОбеспеченияИФлагОбособленноПоУмолчанию(Объект.Соглашение, Объект.Статус, , Не Объект.ЭтоЗаказКакСчет);
Если НЕ ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента
И Объект.СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары Тогда
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "ВариантОбеспечения");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ЗаменяющиеТовары, СтруктураДействий, Неопределено);
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
КонецЕсли;
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
УстановитьДоступностьЭлементовПоСтатусуСервер();
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "НаправлениеДеятельности");
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СкорректироватьСтрокиЗаказа(СтруктураДополнительныхПараметров)
СтруктураКорректировкиСтрокЗаказа = ЗаказыСервер.СтруктураКорректировкиСтрокЗаказа();
ЗаполнитьЗначенияСвойств(СтруктураКорректировкиСтрокЗаказа, СтруктураДополнительныхПараметров);
ЗаказОбъект = РеквизитФормыВЗначение("Объект");
СтруктураКорректировкиСтрокЗаказа.ДокументОбъект = ЗаказОбъект;
СтруктураКорректировкиСтрокЗаказа.ПроверятьОстатки = Истина;
СтруктураКорректировкиСтрокЗаказа.ИмяТабличнойЧасти = "ВозвращаемыеТовары";
СтруктураРезультата = ЗаказОбъект.СкорректироватьСтрокиЗаказа(СтруктураКорректировкиСтрокЗаказа);
СтруктураКорректировкиСтрокЗаказа.ИмяТабличнойЧасти = "ЗаменяющиеТовары";
СтруктураРезультата = ПродажиСервер.СкорректироватьСтрокиЗаказа(СтруктураКорректировкиСтрокЗаказа);
Если СтруктураРезультата.КоличествоСтрок > 0 ИЛИ СтруктураРезультата.СуммаКорректировки > 0 Тогда
ВзаиморасчетыСервер.ПроверитьЗаполнитьЭтапыГрафикаОплаты(ЗаказОбъект);
КонецЕсли;
Если СтруктураКорректировкиСтрокЗаказа.ЗакрыватьЗаказы Тогда
ЗаказОбъект.Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена;
КонецЕсли;
ЗначениеВРеквизитФормы(ЗаказОбъект, "Объект");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ЗаменяющиеТовары, СтруктураДействий);
СтруктураДействий.ЗаполнитьПризнакХарактеристикиИспользуются.Вставить("НоменклатураОприходование", "ХарактеристикиИспользуютсяОприходование");
СтруктураДействий.Удалить("ЗаполнитьПризнакВариантОформленияПродажи");
СтруктураДействий.Удалить("ЗаполнитьПризнакАртикул");
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаявкаНаВозвратТоваровОтКлиента));
УстановитьВидимостьЭлементовСерий();
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура, НоменклатураОприходование", "Артикул", "АртикулОприходование"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ВозвращаемыеТовары, СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтотОбъект, "ВозвращаемыеТовары");
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтотОбъект, "ЗаменяющиеТовары");
ЗаполнитьРеквизитыФормыИзЧекаККМ(Объект.ЧекККМ, Новый Структура("ВидЦеныЧекаККМ", "ВидЦены"));
ОбновитьДубликатыЗависимыхРеквизитов();
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура ЗаменяющиеТоварыПриИзмененииНаСервере()
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "ЗаменяющиеТовары.ДатаОтгрузки");
КонецПроцедуры
#КонецОбласти
#Область ЦенообразованиеИСкидки
&НаСервере
Функция ЗаполнитьЦеныПоСоглашениюСервер()
ЦеныРассчитаны = ЗаменяющиеТоварыЗаполнитьЦеныПоСоглашениюСервер(Истина);
ЦеныРассчитаны = ЦеныРассчитаны Или ВозвращаемыеТоварыЗаполнитьЦеныПоСоглашениюСервер(Истина);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция СтруктураСообщений()
Возврат СкидкиНаценкиЗаполнениеСервер.СтруктураСообщений(Объект);
КонецФункции
&НаСервере
Процедура ПолученыСообщения(Сообщения)
СкидкиНаценкиЗаполнениеСервер.СохранитьОтработанныеСообщения(Объект, Сообщения);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения);
КонецПроцедуры
&НаСервере
Процедура РассчитатьСкидкиБезПримененияКОбъекту()
СтруктураПараметры = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыРассчитать();
СтруктураПараметры.ПрименятьКОбъекту = Ложь;
СтруктураПараметры.ТолькоПредварительныйРасчет = Ложь;
СтруктураПараметры.ВосстанавливатьУправляемыеСкидки = Истина;
СтруктураПараметры.УправляемыеСкидки = УправляемыеСкидки;
ПримененныеСкидки = СкидкиНаценкиЗаполнениеСервер.Рассчитать(Объект, СтруктураПараметры);
АдресПримененныхСкидокВоВременномХранилище = ПоместитьВоВременноеХранилище(ПримененныеСкидки, УникальныйИдентификатор);
КонецПроцедуры
&НаСервере
Функция РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры, ВзятьИзВременногоХранилища = Ложь)
Если Объект.ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым Тогда
СтруктураСообщений = СкидкиНаценкиЗаполнениеСервер.СтруктураСообщений(Объект);
Возврат СтруктураСообщений;
КонецЕсли;
Если ВзятьИзВременногоХранилища Тогда
ПримененныеСкидки = ПолучитьИзВременногоХранилища(АдресПримененныхСкидокВоВременномХранилище);
СкидкиНаценкиЗаполнениеСервер.ПрименитьРезультатРасчета(Объект, ПримененныеСкидки);
Иначе
ПримененныеСкидки = СкидкиНаценкиЗаполнениеСервер.Рассчитать(Объект, СтруктураПараметры);
АдресПримененныхСкидокВоВременномХранилище = ПоместитьВоВременноеХранилище(ПримененныеСкидки, УникальныйИдентификатор);
КонецЕсли;
Объект.СкидкиРассчитаны = Истина;
ОбновитьДубликатыЗависимыхРеквизитов(Истина);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
СтруктураСообщений = СкидкиНаценкиЗаполнениеСервер.СтруктураСообщений(Объект);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения);
Возврат СтруктураСообщений;
КонецФункции
&НаСервере
Функция ВыполнитьПредварительныйРасчетСкидокНаСервере()
СтруктураПараметры = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыРассчитать();
СтруктураПараметры.ПрименятьКОбъекту = Ложь;
СтруктураПараметры.ТолькоПредварительныйРасчет = Истина;
СтруктураПараметры.ВосстанавливатьУправляемыеСкидки = Истина;
СтруктураПараметры.УправляемыеСкидки = УправляемыеСкидки;
Возврат ПоместитьВоВременноеХранилище(
СкидкиНаценкиЗаполнениеСервер.Рассчитать(Объект, СтруктураПараметры), УникальныйИдентификатор);
КонецФункции
&НаСервере
Процедура ОтменитьРучныеСкидкиНаСервере()
СкидкиНаценкиЗаполнениеСервер.ОтменитьРучныеСкидки(Объект, "ЗаменяющиеТовары", Истина, Истина);
ОбновитьДубликатыЗависимыхРеквизитов(Истина);
КонецПроцедуры
&НаСервере
Процедура НазначитьРучнуюСкидкуНаСервере(СуммаСкидкиНаценки, Знач ВыделенныеСтроки, АдресВоВременномХранилище)
ПараметрыСкидки = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыНазначитьРучнуюСкидку();
ПараметрыСкидки.ИспользуютсяАвтоматическиеСкидки = Истина;
ПараметрыСкидки.РассчитыватьСуммуСНДС = Истина;
ПараметрыСкидки.ВыделенныеСтроки = ВыделенныеСтроки;
ПараметрыСкидки.АдресВоВременномХранилище = АдресВоВременномХранилище;
СкидкиНаценкиЗаполнениеСервер.НазначитьРучнуюСкидку(Объект, "ЗаменяющиеТовары", СуммаСкидкиНаценки, ПараметрыСкидки);
ОбновитьДубликатыЗависимыхРеквизитов(Истина);
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСкидкиНаценкиКлиент()
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Истина);
СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки);
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
Если НЕ Объект.ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Скидки (наценки)'"),
,
НСтр("ru = 'Скидки (наценки) рассчитаны'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПрименитьИзмененияСкидокНаценокНаКлиенте(Отказ)
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(Неопределено, Истина);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
Отказ = Истина;
КонецЕсли;
Если НЕ Объект.ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Скидки (наценки)'"),
,
НСтр("ru = 'Скидки (наценки) рассчитаны'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ВозвращаемыеТоварыЗаполнитьЦеныПоСоглашениюСервер(ПоВсемСтрокам = Ложь, ТекстОшибки = "")
Если ПоВсемСтрокам Тогда
МассивСтрок = Неопределено;
Иначе
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.ВозвращаемыеТовары.ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект.ВозвращаемыеТовары.НайтиПоИдентификатору(Строка));
КонецЦикла;
КонецЕсли;
НаборыВызовСервера.ДополнитьДоПолногоНабора(Объект.ВозвращаемыеТовары, МассивСтрок);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("Партнер", Объект.Партнер);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыЗаполнения.Вставить("ВозвращатьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦены");
Если КомиссионныеПродажи25 Тогда
ПараметрыЗаполнения.Вставить("ВидЦены", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор,"ВидЦенУчетный"));
Иначе
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ЦенаВключаетНДС") <> Объект.ЦенаВключаетНДС Тогда
ТекстОшибки =
НСтр("ru = 'Установленные значения полей ""Цена включает НДС"" в документе и соглашении разные.'");
Возврат Ложь;
КонецЕсли;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.ВозвращаемыеТовары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.ВозвращаемыеТовары, ЗависимыеРеквизитыВозвращаемыеТовары());
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция ВозвращаемыеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(ВидЦен)
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.ВозвращаемыеТовары.ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект.ВозвращаемыеТовары.НайтиПоИдентификатору(Строка));
КонецЦикла;
НаборыВызовСервера.ДополнитьДоПолногоНабора(Объект.ВозвращаемыеТовары, МассивСтрок);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦены", ВидЦен);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦены");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.ВозвращаемыеТовары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.ВозвращаемыеТовары, ЗависимыеРеквизитыВозвращаемыеТовары());
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция ЗаменяющиеТоварыЗаполнитьЦеныПоСоглашениюСервер(ПоВсемСтрокам = Ложь, ТекстОшибки = "")
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ЦенаВключаетНДС") <> Объект.ЦенаВключаетНДС Тогда
ТекстОшибки =
НСтр("ru = 'Установленные значения полей ""Цена включает НДС"" в документе и соглашении разные.'");
Возврат Ложь;
КонецЕсли;
Если ПоВсемСтрокам Тогда
МассивСтрок = Неопределено;
Иначе
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.ЗаменяющиеТовары.ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект.ЗаменяющиеТовары.НайтиПоИдентификатору(Строка));
КонецЦикла;
КонецЕсли;
НаборыВызовСервера.ДополнитьДоПолногоНабора(Объект.ЗаменяющиеТовары, МассивСтрок);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("Партнер", Объект.Партнер);
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
Если КомиссионныеПродажи25 Тогда
ПараметрыЗаполнения.Вставить("ВидЦены", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ВидЦенУчетный"));
КонецЕсли;
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыЗаполнения.Вставить("ВозвращатьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦены, СрокПоставки");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки", "КоличествоУпаковок");
СтруктураДействий.Вставить("ОчиститьАвтоматическуюСкидку", Неопределено);
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.ЗаменяющиеТовары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.ЗаменяющиеТовары, ЗависимыеРеквизитыЗаменяющиеТовары());
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция ЗаменяющиеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(ВидЦен)
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.ЗаменяющиеТовары.ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект.ЗаменяющиеТовары.НайтиПоИдентификатору(Строка));
КонецЦикла;
НаборыВызовСервера.ДополнитьДоПолногоНабора(Объект.ЗаменяющиеТовары, МассивСтрок);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦены", ВидЦен);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦены");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки", "КоличествоУпаковок");
СтруктураДействий.Вставить("ОчиститьАвтоматическуюСкидку", Неопределено);
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.ЗаменяющиеТовары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.ЗаменяющиеТовары, ЗависимыеРеквизитыЗаменяющиеТовары());
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция СкидкиИзменились()
СкидкиИзменились = СкидкиНаценкиЗаполнениеСервер.НеобходимПерерасчетСкидок(
Объект,
УправляемыеСкидки,
УникальныйИдентификатор,
АдресПримененныхСкидокВоВременномХранилище);
Если Объект.ЗаменяющиеТовары.Итог("СуммаАвтоматическойСкидкиБезВозвратнойТары") <> Объект.СкидкиНаценки.Итог("Сумма") Тогда
СкидкиИзменились = Истина;
КонецЕсли;
Возврат СкидкиИзменились;
КонецФункции
&НаСервере
Процедура ПрименитьОплатуБонуснымиБаллами(АдресВоВременномХранилище)
УдалениеОплаты = Ложь;
Если АдресВоВременномХранилище <> Неопределено Тогда
ТаблицаТоваров = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
Иначе
ТаблицаТоваров = Объект.ЗаменяющиеТовары;
УдалениеОплаты = Истина;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать, ПересчитыватьСуммуРучнойСкидки", Ложь, Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТаблицы Из ТаблицаТоваров Цикл
Если УдалениеОплаты Тогда
СтрокаТЧ = СтрокаТаблицы;
СтрокаТЧ.СуммаБонусныхБалловКСписанию = 0;
СтрокаТЧ.СуммаБонусныхБалловКСписаниюВВалюте = 0;
Иначе
СтрокаТЧ = Объект.ЗаменяющиеТовары.НайтиСтроки(Новый Структура("КлючСвязи", СтрокаТаблицы.КлючСвязи))[0];
СтрокаТЧ.СуммаБонусныхБалловКСписанию = СтрокаТаблицы.СуммаБонусныхБалловКСписанию;
СтрокаТЧ.СуммаБонусныхБалловКСписаниюВВалюте = СтрокаТаблицы.СуммаБонусныхБалловКСписаниюВВалюте;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТаблицаТоваров);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаКлиенте
Процедура СообщитьОбОшибкахОткрытияПодбора(Отказ)
Если ИспользоватьСоглашенияСКлиентами И Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Соглашение"" не заполнено'"), Объект.Ссылка, "Объект.Соглашение",,Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Валюта"" не заполнено'"), Объект.Ссылка, "Объект.Валюта",,Отказ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СписокСвойств = "НоменклатураНабора,ХарактеристикаНабора,Номенклатура,Характеристика,Упаковка,ДатаОтгрузки,ВидЦены,Цена,
|КоличествоУпаковок, Количество, Сумма, СуммаРучнойСкидки,ПроцентРучнойСкидки,СрокПоставки,ВариантОбеспечения,Обособленно,Серия";
Если ЗначениеЗаполнено(Объект.Склад) Тогда
СписокСвойств = СписокСвойств + ", Склад";
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ОбрабатываемыеСтроки = Новый Массив;
ДатыОтгрузки = Новый Соответствие;
НачалоДня = НачалоДня(ТекущаяДатаСеанса());
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.ЗаменяющиеТовары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, СписокСвойств);
ТекущаяСтрока.ИндексНабора = ?(ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора), 1, 0);
ДатыОтгрузки.Вставить(ТекущаяСтрока, СтрокаТовара.ДатаОтгрузки);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.ЗаменяющиеТовары,
КэшированныеЗначения);
Для каждого ТекущаяСтрока Из ОбрабатываемыеСтроки Цикл
ТекущаяСтрока.ДатаОтгрузки = ОбеспечениеВДокументахСервер.ДатаОтгрузкиОбработкаВыбораПодбор(
ДатыОтгрузки.Получить(ТекущаяСтрока),
ТекущаяСтрока.ВариантОбеспечения,
НачалоДня);
КонецЦикла;
ОбеспечениеВДокументахСервер.АктуализироватьДатуОтгрузкиОднойДатой(
Объект.НеОтгружатьЧастями,
Объект.ДатаОтгрузки,
Объект.ЗаменяющиеТовары,
"ДатаОтгрузки");
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
ПриИзмененииСкладаВТабличнойЧастиЗаменяющиеТоварыСервер();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ЗаменяющиеТовары,СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ЗаменяющиеТовары");
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Заменяющие);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение)
Если Не ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеПодбора(
ЭтотОбъект,
ВыбранноеЗначение,
"ОбработкаВыбораПодборНаКлиентеПослеВопроса");
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиентеПослеВопроса(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Отмена Тогда
Возврат;
КонецЕсли;
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.НеОтгружатьЧастями = Ложь;
УстановитьВидимостьЭлементовФормыДатОтгрузки();
КонецЕсли;
ОбработкаВыбораПодборНаСервере(ДополнительныеПараметры);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборПоРеализацииСервер(ВыбранноеЗначение)
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураВозвращаемыхЗначений = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
ТаблицаТоваров = СтруктураВозвращаемыхЗначений.Товары;
СтруктураШапки = СтруктураВозвращаемыхЗначений.СтруктураШапки;
ВозвратОтРозничногоПокупателя = (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя);
ВозвратОтКомиссионера = (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера);
КоличествоТоваровПервоначально = Объект.ВозвращаемыеТовары.Количество();
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.ВозвращаемыеТовары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ТекущаяСтрока.Цена = ТекущаяСтрока.Сумма / ТекущаяСтрока.КоличествоУпаковок;
ТекущаяСтрока.ИндексНабора = ?(ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора), 1, 0);
Если ВозвратОтКомиссионера Тогда
ТекущаяСтрока.СтавкаНДС = Справочники.СтавкиНДС.ПустаяСсылка();
КонецЕсли;
Если Объект.ПоступлениеОднойДатой Тогда
ТекущаяСтрока.ДатаПоступления = Объект.ДатаПоступления;
КонецЕсли;
Если ВозвратОтРозничногоПокупателя Тогда
ТекущаяСтрока.ДокументРеализации = ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(СтрокаТовара.ДокументРеализацииПередачи);
Иначе
ТекущаяСтрока.ДокументРеализации = СтрокаТовара.ДокументРеализацииПередачи;
КонецЕсли;
Если Не ЗначениеЗаполнено(СтрокаТовара.Склад)
И ЗначениеЗаполнено(Объект.Склад)
И Не СкладГруппа Тогда
ТекущаяСтрока.Склад = Объект.Склад;
КонецЕсли;
КонецЦикла;
Объект.Партнер = СтруктураШапки.Партнер;
Если ЗначениеЗаполнено(СтруктураШапки.ЧекККМ) Тогда
Если НЕ ЗначениеЗаполнено(Объект.ЧекККМ) И КоличествоТоваровПервоначально=0 Тогда
Объект.ЧекККМ = СтруктураШапки.ЧекККМ;
Объект.Партнер = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ЧекККМ, "Партнер");
ПартнерПриИзмененииСервер();
КонецЕсли;
КонецЕсли;
ЗаполнениеСлужбныхРеквизитовПослеЗаполненияИзФормыПодбора(КэшированныеЗначения);
ПриИзмененииСкладаВТабличнойЧастиВозвращаемыеТоварыСервер();
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборПереданныхТоваров(ВыбранноеЗначение)
МассивСтрок = Новый Массив;
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПараметрыЗаполненияЦен = Новый Структура();
ПараметрыЗаполненияЦен.Вставить("ПоляЗаполнения", "Цена");
ПараметрыЗаполненияЦен.Вставить("Дата", Объект.Дата);
ПараметрыЗаполненияЦен.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполненияЦен.Вставить("Организация", Объект.Организация);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
ПараметрыЗаполненияЦен.Вставить("ВидЦены", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор,"ВидЦенУчетный"));
ПараметрыЗаполненияЦен.Вставить("ПоляЗаполнения", "ВидЦены, Цена");
Иначе
ПараметрыЗаполненияЦен.Вставить("Соглашение", Объект.Соглашение);
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.ВозвращаемыеТовары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ТекущаяСтрока.Количество = СтрокаТовара.КоличествоПодобрано;
ТекущаяСтрока.Склад = Объект.Склад;
МассивСтрок.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
МассивСтрок,
СтруктураДействий,
Объект.ВозвращаемыеТовары);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийРасчетаЦен = Новый Структура;
СтруктураДействийРасчетаЦен.Вставить("ПересчитатьСумму");
СтруктураДействийРасчетаЦен.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийРасчетаЦен.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(Объект.ВозвращаемыеТовары,
МассивСтрок,
ПараметрыЗаполненияЦен,
СтруктураДействийРасчетаЦен);
ЗаполнениеСлужбныхРеквизитовПослеЗаполненияИзФормыПодбора(КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ЗаполнениеСлужбныхРеквизитовПослеЗаполненияИзФормыПодбора(КэшированныеЗначения)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ЗаменяющиеТовары, СтруктураДействий);
СтруктураДействий.ЗаполнитьПризнакХарактеристикиИспользуются.Вставить("НоменклатураОприходование", "ХарактеристикиИспользуютсяОприходование");
СтруктураДействий.Удалить("ЗаполнитьПризнакВариантОформленияПродажи");
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ВозвращаемыеТовары, СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ВозвращаемыеТовары");
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ЗаменяющиеТовары");
ОбновитьДубликатыЗависимыхРеквизитов();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.Возвращаемые);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
ОбновитьИнформациюПоРеализациям();
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ЗаменяющиеТовары, СтруктураДействий, КэшированныеЗначения);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов, ИмяТабличнойЧасти = "")
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
Если ИмяТабличнойЧасти = "ЗаменяющиеТовары" Тогда
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокЗаменяющиеТовары(СтруктураДействийСДобавленнымиСтроками, Объект);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокЗаменяющиеТовары(СтруктураДействийСИзмененнымиСтроками, Объект);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий.Заменяющие;
СтруктураДействий.ИмяТЧ = ИмяТабличнойЧасти;
СтруктураДействий.ИзменятьКоличество = Истина;
СтруктураДействий.РассчитыватьНаборы = Истина;
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтХранителя") Тогда
СтруктураДействий.ТолькоТовары = Истина;
КонецЕсли;
ОбработатьШтрихкодыСервер(СтруктураДействий, КэшированныеЗначения, ИмяТабличнойЧасти);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.ЗаменяющиеТовары,
ДатаОтгрузкиОбязательна, СкладОбязателен);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатурыЗаменяющие",0.1,Истина);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.ЗаменяющиеТовары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
Иначе
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокВозвращаемыеТовары(СтруктураДействийСДобавленнымиСтроками, Объект);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокВозвращаемыеТовары(СтруктураДействийСИзмененнымиСтроками, Объект);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий.Возвращаемые;
СтруктураДействий.ИмяТЧ = ИмяТабличнойЧасти;
СтруктураДействий.ИзменятьКоличество = Истина;
СтруктураДействий.ТолькоТовары = Истина;
СтруктураДействий.РассчитыватьНаборы = Истина;
ОбработатьШтрихкодыСервер(СтруктураДействий, КэшированныеЗначения, ИмяТабличнойЧасти);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатурыВозвращаемые",0.1,Истина);
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.ВозвращаемыеТовары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения, ИмяТабличнойЧасти)
Если ИмяТабличнойЧасти = "ЗаменяющиеТовары" Тогда
ДобавитьДействияОбеспеченияНаСервере(
СтруктураПараметровДействия.СтруктураДействийСДобавленнымиСтроками,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
КонецЕсли;
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма,Объект,СтруктураПараметровДействия,КэшированныеЗначения);
Если ИмяТабличнойЧасти = "ЗаменяющиеТовары" Тогда
ОбеспечениеВДокументахКлиентСервер.УдалитьДействияОбеспечения(СтруктураПараметровДействия.СтруктураДействийСДобавленнымиСтроками);
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор,ИмяТЧ)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект, ПараметрыУказанияСерий[ИмяТЧ], ТекущиеДанныеИдентификатор, ЭтаФорма);
КонецФункции
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатурыВозвращаемые()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.ВозвращаемыеТовары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий("Возвращаемые",,ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатурыЗаменяющие()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.ЗаменяющиеТовары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий("Заменяющие",,ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(ИмяТЧ, Текст = "", ТекущиеДанные = Неопределено)
Если ИмяТЧ = "Заменяющие" Тогда
ИмяЭлементаФормы = "ЗаменяющиеТовары";
Иначе
ИмяЭлементаФормы = "ВозвращаемыеТовары";
КонецЕсли;
Если ИмяЭлементаФормы = "ЗаменяющиеТовары" Тогда
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(ОбеспечениеВДокументахКлиентСервер.РежимПодборСерий());
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму(
"Обработка.ЗапросКоличестваИСерий.Форма",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
Новый ОписаниеОповещения("ОбработатьВыборСкладаИСерии", ЭтотОбъект, ПараметрыФормы));
КонецЕсли;
Возврат;
КонецЕсли;
Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтаФорма,ПараметрыУказанияСерий[ИмяТЧ],Текст, ТекущиеДанные) Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы[ИмяЭлементаФормы].ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор, ИмяТЧ);
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы,ПараметрыФормыУказанияСерий,ЭтаФорма,,,, Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение", ЭтотОбъект, Новый Структура("ИмяТЧ, ПараметрыФормыУказанияСерий", ИмяТЧ, ПараметрыФормыУказанияСерий)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
ИмяТЧ = ДополнительныеПараметры.ИмяТЧ;
ПараметрыФормыУказанияСерий = ДополнительныеПараметры.ПараметрыФормыУказанияСерий;
ЗначениеВозврата = Результат;
Если ЗначениеВозврата <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий,ИмяТЧ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ВозвращаемыеТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.Возвращаемые.ИспользоватьСерииНоменклатуры;
Элементы.ВозвращаемыеТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.Возвращаемые.ИспользоватьСерииНоменклатуры;
Элементы.ЗаменяющиеТоварыСерия.Видимость = ПараметрыУказанияСерий.Заменяющие.ИспользоватьСерииНоменклатуры;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий, ИмяТЧ)
СтруктураДействий = Новый Структура;
Если ИмяТЧ = "Возвращаемые" Тогда
СтруктураДействий.Вставить("ОбновлятьКоличествоТоваровПриРегистрацииСерий", Истина);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокВозвращаемыеТовары(СтруктураДействий, Объект);
КонецЕсли;
НоменклатураСервер.ОбработатьУказаниеСерий(Объект,ПараметрыУказанияСерий[ИмяТЧ],ПараметрыФормыУказанияСерий,СтруктураДействий);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийСервер(ИмяТЧ)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий[ИмяТЧ]);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения, ИмяТЧ)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект,
ПараметрыУказанияСерий[ИмяТЧ], ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере(ИмяТЧ)
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект[ИмяТЧ], Элементы[ИмяТЧ].ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗаменяющиеСтрокиИзБуфераОбмена()
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтХранителя") Тогда
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
Иначе
ПараметрыОтбора = Неопределено;
КонецЕсли;
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,Цена,ДатаОтгрузки,
|НоменклатураНабора,ХарактеристикаНабора,ПроцентРучнойСкидки,СуммаРучнойСкидки";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокЗаменяющиеТовары(СтруктураДействий, Объект);
Если ТаблицаТоваров.Колонки.Найти("СуммаРучнойСкидки") <> Неопределено Тогда
СтруктураДействий.ПересчитатьСуммуСУчетомРучнойСкидки.Вставить("ПересчитыватьСуммуРучнойСкидки", Ложь);
КонецЕсли;
ОбрабатываемыеСтроки = Новый Массив;
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.ЗаменяющиеТовары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
Если Объект.НеОтгружатьЧастями Тогда
ТекущаяСтрока.ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.ЗаменяющиеТовары);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ЗаменяющиеТовары, СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ЗаменяющиеТовары");
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Заменяющие);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура ПолучитьВозвращаемыеСтрокиИзБуфераОбмена()
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,Цена,ДатаПоступления,ДокументРеализации,Порча,
|НоменклатураНабора,ХарактеристикаНабора,НоменклатураОприходование,ХарактеристикаОприходование";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
НаборыСервер.УдалитьСтрокиНаборовСогласноОтбору(ТаблицаТоваров, ПараметрыОтбора["Номенклатура.ТипНоменклатуры"]);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокВозвращаемыеТовары(СтруктураДействий,Объект);
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.ВозвращаемыеТовары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
Если Объект.ПоступлениеОднойДатой Тогда
ТекущаяСтрока.ДатаПоступления = Объект.ДатаПоступления;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.ВозвращаемыеТовары);
СтруктураХарактеристикиНоменклатуры = Новый Структура;
СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ВозвращаемыеТовары, СтруктураХарактеристикиНоменклатуры);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ВозвращаемыеТовары");
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.Возвращаемые);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ВставитьЗаменяющиеСтроки");
МассивЭлементов.Добавить("КонтекстноеМенюВставитьЗаменяющиеСтроки");
МассивЭлементов.Добавить("ВставитьВозвращаемыеСтроки");
МассивЭлементов.Добавить("КонтекстноеМенюВставитьВозвращаемыеСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ВставитьЗаменяющиеСтроки");
МассивЭлементов.Добавить("КонтекстноеМенюВставитьЗаменяющиеСтроки");
МассивЭлементов.Добавить("ВставитьВозвращаемыеСтроки");
МассивЭлементов.Добавить("КонтекстноеМенюВставитьВозвращаемыеСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
#КонецОбласти
#Область Доставка
&НаСервере
Процедура ЗаполнитьУстановитьРеквизитыДоставкиСервер(ИмяЭлементаФормы);
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, ИмяЭлементаФормы, Объект);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ВалютаДокумента = Объект.Валюта;
ХозяйственнаяОперацияДоговора = СамообслуживаниеКлиентСервер.ХозяйственнаяОперацияДоговора(Объект.ХозяйственнаяОперация);
ХозяйственнаяОперацияСоглашения = СамообслуживаниеКлиентСервер.ХозяйственнаяОперацияСоглашения(Объект.ХозяйственнаяОперация);
ИспользоватьСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
ИспользоватьУпрощеннуюСхемуОплаты = ПолучитьФункциональнуюОпцию("ИспользоватьУпрощеннуюСхемуОплатыВПродажах");
ИспользоватьГрафикиОплаты = ПолучитьФункциональнуюОпцию("ИспользоватьГрафикиОплаты");
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности");
ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента = ПолучитьФункциональнуюОпцию("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента")
И Не Объект.ЭтоЗаказКакСчет;
УстановитьДоступностьЭлементовПоСтатусуСервер();
НастроитьЭлементыПоОперацииСервер();
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
Если НЕ ИспользоватьСоглашенияСКлиентами Тогда
ПараметрыВыбораВидаЦены = ЗначениеНастроекПовтИсп.ПараметрыВыбораВидаЦеныПоУмолчанию();
ПараметрыВыбораВидаЦены.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораВидаЦены.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораВидаЦены.Статус = Перечисления.СтатусыДействияВидовЦен.Действует;
ВидЦеныПоУмолчанию = ЗначениеНастроекПовтИсп.ВидЦеныПоУмолчанию(ПараметрыВыбораВидаЦены);
КонецЕсли;
СкладГруппа = ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Объект.Склад);
Склад = Объект.Склад;
УстановитьПараметрыВыбораТоварыСклад();
УстановитьВидимостьЭлементовПоНесколькимСкладам();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ЗаменяющиеТовары, СтруктураДействий);
СтруктураДействий.ЗаполнитьПризнакХарактеристикиИспользуются.Вставить("НоменклатураОприходование", "ХарактеристикиИспользуютсяОприходование");
СтруктураДействий.Удалить("ЗаполнитьПризнакВариантОформленияПродажи");
СтруктураДействий.Удалить("ЗаполнитьПризнакАртикул");
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаявкаНаВозвратТоваровОтКлиента));
УстановитьВидимостьЭлементовСерий();
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура, НоменклатураОприходование", "Артикул", "АртикулОприходование"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ВозвращаемыеТовары, СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ВозвращаемыеТовары");
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ЗаменяющиеТовары");
ЗаполнитьРеквизитыФормыИзЧекаККМ(Объект.ЧекККМ, Новый Структура("ВидЦеныЧекаККМ", "ВидЦены"));
ОбновитьДубликатыЗависимыхРеквизитов();
ДанныеПоФоновомуЗаданию = ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект,,,,Истина);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
ОбновитьСостояниеСервер();
НастроитьЭлементыФормы();
УстановитьВидимостьДоговора();
ОбновитьИнформациюПоРеализациям();
ЗаполнитьСписокВыбораДатаОтгрузки();
ЗаполнитьНалогообложениеНДСПродажи();
УстановитьВидимостьСпособовКомпенсации();
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
УстановитьВидимостьОбеспечения();
УстановитьВидимостьКомандЗаполнения();
УстановитьПривилегированныйРежим(Истина);
ВариантОбеспеченияИФлагОбособленно = ПродажиСервер.ВариантОбеспеченияИФлагОбособленноПоУмолчанию(Объект.Соглашение, Объект.Статус, , Не Объект.ЭтоЗаказКакСчет);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.ЗаменяющиеТовары);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.ВозвращаемыеТовары);
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
ПриИзмененииСкладаВТабличнойЧастиВозвращаемыеТоварыСервер();
ПриИзмененииСкладаВТабличнойЧастиЗаменяющиеТоварыСервер();
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(Форма)
КоллекцияВозвращаемыеТовары = Форма.Объект.ВозвращаемыеТовары;
Форма.СуммаНДСВозвращаемыхТоваров = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияВозвращаемыеТовары.Итог("СуммаНДС"),
КоллекцияВозвращаемыеТовары.Итог("СуммаНДСБезВозвратнойТары") - КоллекцияВозвращаемыеТовары.Итог("СуммаНДСОтмененоБезВозвратнойТары"));
Форма.СуммаВозвращаемыхТоваров = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияВозвращаемыеТовары.Итог("СуммаСНДС"),
КоллекцияВозвращаемыеТовары.Итог("СуммаСНДСБезВозвратнойТары") - КоллекцияВозвращаемыеТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары"));
Форма.СуммаОтмененоВозвращаемыхТоваров = КоллекцияВозвращаемыеТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары");
Если Форма.Объект.СпособКомпенсации = ПредопределенноеЗначение("Перечисление.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары") Тогда
КоллекцияЗаменяющиеТовары = Форма.Объект.ЗаменяющиеТовары;
Форма.СуммаНДСЗаменяющихТоваров = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияЗаменяющиеТовары.Итог("СуммаНДС") - КоллекцияЗаменяющиеТовары.Итог("СуммаНДСОтменено"),
КоллекцияЗаменяющиеТовары.Итог("СуммаНДСБезВозвратнойТары") - КоллекцияЗаменяющиеТовары.Итог("СуммаНДСОтмененоБезВозвратнойТары"));
Форма.СуммаЗаменяющихТоваров = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияЗаменяющиеТовары.Итог("СуммаСНДС") - КоллекцияЗаменяющиеТовары.Итог("СуммаСНДСОтменено"),
КоллекцияЗаменяющиеТовары.Итог("СуммаСНДСБезВозвратнойТары") - КоллекцияЗаменяющиеТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары"));
Форма.СуммаЗалогаЗаТару = ?(Форма.Объект.ТребуетсяЗалогЗаТару,(КоллекцияЗаменяющиеТовары.Итог("СуммаСНДС") - КоллекцияЗаменяющиеТовары.Итог("СуммаСНДСОтменено"))
- (КоллекцияЗаменяющиеТовары.Итог("СуммаСНДСБезВозвратнойТары") - КоллекцияЗаменяющиеТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары")),0);
Форма.СуммаОтмененоЗаменяющихТоваров = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияЗаменяющиеТовары.Итог("СуммаСНДСОтменено"),
КоллекцияЗаменяющиеТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары"));
СуммаАвтоСкидки = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияЗаменяющиеТовары.Итог("СуммаАвтоматическойСкидки") - КоллекцияЗаменяющиеТовары.Итог("СуммаАвтоматическойСкидкиОтменено"),
КоллекцияЗаменяющиеТовары.Итог("СуммаАвтоматическойСкидкиБезВозвратнойТары") - КоллекцияЗаменяющиеТовары.Итог("СуммаАвтоматическойСкидкиОтмененоБезВозвратнойТары"));
СуммаРучнойСкидки = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияЗаменяющиеТовары.Итог("СуммаРучнойСкидки") - КоллекцияЗаменяющиеТовары.Итог("СуммаРучнойСкидкиОтменено"),
КоллекцияЗаменяющиеТовары.Итог("СуммаРучнойСкидкиБезВозвратнойТары") - КоллекцияЗаменяющиеТовары.Итог("СуммаРучнойСкидкиОтмененоБезВозвратнойТары"));
СуммаСуммаБонусныхБалловКСписаниюВВалюте = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияЗаменяющиеТовары.Итог("СуммаБонусныхБалловКСписаниюВВалюте") - КоллекцияЗаменяющиеТовары.Итог("СуммаБонусныхБалловКСписаниюВВалютеОтменено"),
КоллекцияЗаменяющиеТовары.Итог("СуммаБонусныхБалловКСписаниюВВалютеБезВозвратнойТары") - КоллекцияЗаменяющиеТовары.Итог("СуммаБонусныхБалловКСписаниюВВалютеОтмененоБезВозвратнойТары"));
Форма.СуммаСкидки = СуммаАвтоСкидки + СуммаРучнойСкидки + СуммаСуммаБонусныхБалловКСписаниюВВалюте;
СуммаЗаказано = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияЗаменяющиеТовары.Итог("Сумма") - КоллекцияЗаменяющиеТовары.Итог("СуммаОтменено"),
КоллекцияЗаменяющиеТовары.Итог("СуммаБезВозвратнойТары") - КоллекцияЗаменяющиеТовары.Итог("СуммаОтмененоБезВозвратнойТары"));
Если КоллекцияЗаменяющиеТовары.Количество() > 0 И СуммаЗаказано = 0 Тогда
Форма.ВсеСтрокиОтменены = Истина;
Иначе
Форма.ВсеСтрокиОтменены = Ложь;
КонецЕсли;
КонецЕсли;
Если КоллекцияВозвращаемыеТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары") = КоллекцияВозвращаемыеТовары.Итог("СуммаСНДС") Тогда
Форма.ВсеСтрокиВозвратаОтменены = Истина;
Иначе
Форма.ВсеСтрокиВозвратаОтменены = Ложь;
КонецЕсли;
ОтображатьИтогСуммыНДС = УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаПродажи(Форма.Объект.НалогообложениеНДС);
Если ОтображатьИтогСуммыНДС Тогда
Форма.Элементы.ГруппаСтраницыВсегоВозвращаемыеТовары.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДСВозвращаемыеТовары;
Форма.Элементы.ГруппаСтраницыВсегоЗаменяющиеТовары.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДСЗаменяющиеТовары;
Иначе
Форма.Элементы.ГруппаСтраницыВсегоВозвращаемыеТовары.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДСВозвращаемыеТовары;
Форма.Элементы.ГруппаСтраницыВсегоЗаменяющиеТовары.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДСЗаменяющиеТовары;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизитыЗаменяющиеТовары()
Возврат Новый Структура(
"БезВозвратнойТары,ОтмененоБезВозвратнойТары,Отменено",
"Сумма,СуммаНДС,СуммаСНДС,СуммаАвтоматическойСкидки,СуммаРучнойСкидки,СуммаБонусныхБалловКСписаниюВВалюте",
"Сумма,СуммаНДС,СуммаСНДС,СуммаАвтоматическойСкидки,СуммаРучнойСкидки,СуммаБонусныхБалловКСписаниюВВалюте",
"Сумма,СуммаНДС,СуммаСНДС,СуммаАвтоматическойСкидки,СуммаРучнойСкидки,СуммаБонусныхБалловКСписаниюВВалюте");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизитыЗаменяющиеТоварыСтрокой()
Возврат "СуммаБезВозвратнойТары, СуммаНДСБезВозвратнойТары, СуммаСНДСБезВозвратнойТары,
|СуммаАвтоматическойСкидкиБезВозвратнойТары, СуммаРучнойСкидкиБезВозвратнойТары,
|СуммаБонусныхБалловКСписаниюВВалютеБезВозвратнойТары,
|СуммаОтмененоБезВозвратнойТары, СуммаНДСОтмененоБезВозвратнойТары, СуммаСНДСОтмененоБезВозвратнойТары,
|СуммаАвтоматическойСкидкиОтмененоБезВозвратнойТары, СуммаРучнойСкидкиОтмененоБезВозвратнойТары,
|СуммаБонусныхБалловКСписаниюВВалютеОтмененоБезВозвратнойТары,
|СуммаОтменено, СуммаНДСОтменено, СуммаСНДСОтменено,
|СуммаАвтоматическойСкидкиОтменено, СуммаРучнойСкидкиОтменено,
|СуммаБонусныхБалловКСписаниюВВалютеОтменено";
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизитыВозвращаемыеТовары()
Возврат Новый Структура(
"БезВозвратнойТары,ОтмененоБезВозвратнойТары",
"Сумма,СуммаНДС,СуммаСНДС",
"Сумма,СуммаНДС,СуммаСНДС");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокВозвращаемыеТовары(СтруктураДействий, Объект)
СамообслуживаниеКлиентСервер.ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокВозвращаемыеТоварыОбщее(СтруктураДействий, Объект);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокЗаменяющиеТовары(СтруктураДействий, Объект)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьАвтоматическихСкидок()
ЭтоВозвратОтКомиссионера = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
ЭтоВозвратОтХранителя = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя;
ЭтоВозвратОтКомиссионераИлиХранителя = ЭтоВозвратОтКомиссионера Или ЭтоВозвратОтХранителя;
ВидимостьЭлемента = Не ЭтоВозвратОтКомиссионераИлиХранителя И НЕ Объект.ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым;
ЗаполнятьПоСоглашению = НЕ Объект.ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым;
Элементы.ЗаменяющиеТоварыРассчитатьСкидкиНаценки.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыОткрытьИнформациюОСкидках.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыНазначитьАвтоматическиеСкидки.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыПроцентАвтоматическойСкидки.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыСуммаАвтоматическойСкидки.Видимость = ВидимостьЭлемента;
Элементы.СчитатьКартуЛояльности.Видимость = ВидимостьЭлемента;
Элементы.КартаЛояльности.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦен.Видимость = ЗаполнятьПоСоглашению;
Элементы.ЗаменяющиеТоварыЗаполнитьЦеныПоСоглашению.Видимость = ЗаполнятьПоСоглашению;
УстановитьВидимостьПоляПартнер();
Если Объект.ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым Тогда
СкидкиНаценкиЗаполнениеСервер.ОтменитьСкидки(Объект, "ЗаменяющиеТовары", Истина, , Истина);
ОбновитьДубликатыЗависимыхРеквизитов(Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
И ИспользоватьНаправленияДеятельности Тогда
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(Объект,
ХозяйственнаяОперацияДоговора,
Объект.Валюта,
Объект.НаправлениеДеятельности,
КомиссионныеПродажи25);
Иначе
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(Объект,
ХозяйственнаяОперацияДоговора,
Объект.Валюта,
,
КомиссионныеПродажи25);
КонецЕсли;
Если Договор <> Объект.Договор Тогда
Объект.Договор = Договор;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчет, Объект.БанковскийСчетКонтрагента);
КонецЕсли;
ОбновитьСпособКомпенсации();
НастроитьЭлементыФормы();
ОбновитьСостояниеСервер();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораОпераций()
Если Не ПолучитьФункциональнуюОпциюФормы("ИспользоватьКомиссиюПриПродажах") Тогда
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера);
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
Если Не ПолучитьФункциональнуюОпциюФормы("ИспользоватьРозничныеПродажи") Тогда
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя);
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
ЕдинственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ХозяйственнаяОперация",
"ТолькоПросмотр",
ЕдинственнаяОперация И ЗначениеЗаполнено(Объект.ХозяйственнаяОперация));
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКомандЗаполнения()
Элементы.ВозвращаемыеТоварыПодобратьТоварыПоРеализациям.Видимость = Ложь;
Элементы.ВозвращаемыеТоварыЗаполнитьРеализацииИЦены.Видимость = Ложь;
Элементы.ВозвращаемыеТоварыЗаполнитьРеализацииИЦены.Видимость = Ложь;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя
ИЛИ (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера
И КомиссионныеПродажи25) Тогда
Элементы.ВозвращаемыеТоварыПодобратьТоварыПоРеализациям.Видимость = Ложь;
Элементы.ВозвращаемыеТоварыЗаполнитьРеализацииИЦены.Видимость = Ложь;
Элементы.ВозвращаемыеТоварыПодобратьПереданныеТовары.Видимость = Истина;
Если Не ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.ТоварыОрганизаций) Тогда
Элементы.ВозвращаемыеТоварыПодобратьПереданныеТовары.Видимость = Ложь;
КонецЕсли;
Иначе
Элементы.ВозвращаемыеТоварыПодобратьТоварыПоРеализациям.Видимость = Истина;
Элементы.ВозвращаемыеТоварыЗаполнитьРеализацииИЦены.Видимость = Истина;
Элементы.ВозвращаемыеТоварыПодобратьПереданныеТовары.Видимость = Ложь;
Если Не ПравоДоступа("Чтение", Метаданные.Документы.РеализацияТоваровУслуг) Или
Не ПравоДоступа("Чтение", Метаданные.Документы.ЧекККМ) Или
Не ПравоДоступа("Чтение", Метаданные.Документы.ЧекККМВозврат) Или
Не ПравоДоступа("Чтение", Метаданные.Документы.КорректировкаРеализации) Или
Не ПравоДоступа("Чтение", Метаданные.Документы.ВозвратТоваровОтКлиента) Тогда
Элементы.ВозвращаемыеТоварыПодобратьТоварыПоРеализациям.Видимость = Ложь;
Элементы.ВозвращаемыеТоварыЗаполнитьРеализацииИЦены.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьЭлементовПоСтатусуСервер()
УстановитьПодписку = Ложь;
Если (Объект.Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована И ИспользоватьСтатусы)
ИЛИ Объект.Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Отклонена Тогда
УстановитьПодписку = Ложь;
ИначеЕсли (Объект.Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована И НЕ ИспользоватьСтатусы)
ИЛИ Объект.Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату
ИЛИ Объект.Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению
ИЛИ Объект.Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке
ИЛИ Объект.Статус = Перечисления.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена Тогда
УстановитьПодписку = Объект.Согласован;
КонецЕсли;
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Дата");
МассивЭлементов.Добавить("Соглашение");
МассивЭлементов.Добавить("Договор");
МассивЭлементов.Добавить("Валюта");
МассивЭлементов.Добавить("ЦенаВключаетНДС");
МассивЭлементов.Добавить("НалогообложениеНДС");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("Склад");
МассивЭлементов.Добавить("ЖелаемаяДатаПоступления");
МассивЭлементов.Добавить("ДатаСогласования");
МассивЭлементов.Добавить("НеОтгружатьЧастями");
МассивЭлементов.Добавить("ДатаОтгрузки");
МассивЭлементов.Добавить("ХозяйственнаяОперация");
МассивЭлементов.Добавить("ДокументРеализации");
МассивЭлементов.Добавить("КартаЛояльности");
МассивЭлементов.Добавить("ПоступлениеОднойДатой");
МассивЭлементов.Добавить("ДатаПоступления");
МассивЭлементов.Добавить("ЧекККМ");
МассивЭлементов.Добавить("ВернутьМногооборотнуюТару");
МассивЭлементов.Добавить("СрокВозвратаМногооборотнойТары");
МассивЭлементов.Добавить("ТребуетсяЗалогЗаТару");
МассивЭлементов.Добавить("ПредусмотренЗалогЗаТару");
МассивЭлементов.Добавить("ВозвратПереданнойМногооборотнойТары");
МассивЭлементов.Добавить("ВозвращаемыеТоварыНоменклатура");
МассивЭлементов.Добавить("ВозвращаемыеТоварыПорча");
МассивЭлементов.Добавить("ВозвращаемыеТоварыНоменклатураОприходование");
МассивЭлементов.Добавить("ВозвращаемыеТоварыХарактеристика");
МассивЭлементов.Добавить("ВозвращаемыеТоварыХарактеристикаОприходование");
МассивЭлементов.Добавить("ВозвращаемыеТоварыКоличествоУпаковок");
МассивЭлементов.Добавить("ВозвращаемыеТоварыУпаковка");
МассивЭлементов.Добавить("ВозвращаемыеТоварыВидЦены");
МассивЭлементов.Добавить("ВозвращаемыеТоварыЦена");
МассивЭлементов.Добавить("ВозвращаемыеТоварыСтавкаНДС");
МассивЭлементов.Добавить("ВозвращаемыеТоварыСумма");
МассивЭлементов.Добавить("ЗаменяющиеТоварыНоменклатура");
МассивЭлементов.Добавить("ЗаменяющиеТоварыХарактеристика");
МассивЭлементов.Добавить("ЗаменяющиеТоварыКоличествоУпаковок");
МассивЭлементов.Добавить("ЗаменяющиеТоварыУпаковка");
МассивЭлементов.Добавить("ЗаменяющиеТоварыВидЦены");
МассивЭлементов.Добавить("ЗаменяющиеТоварыЦена");
МассивЭлементов.Добавить("ЗаменяющиеТоварыСтавкаНДС");
МассивЭлементов.Добавить("ЗаменяющиеТоварыПроцентРучнойСкидки");
МассивЭлементов.Добавить("ЗаменяющиеТоварыСуммаРучнойСкидки");
МассивЭлементов.Добавить("ЗаменяющиеТоварыСумма");
МассивЭлементов.Добавить("ЗаменяющиеТоварыСуммаНДС");
МассивЭлементов.Добавить("ЗаменяющиеТоварыСодержание");
ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтаФорма, МассивЭлементов, УстановитьПодписку);
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ВозвращаемыеТовары;ПередНачаломДобавления,ПередУдалением");
МассивЭлементов.Добавить("ЗаменяющиеТовары;ПередНачаломДобавления,ПередУдалением");
МассивЭлементов.Добавить("ВозвращаемыеТоварыКонтекстноеМенюДобавить");
МассивЭлементов.Добавить("ВозвращаемыеТоварыКонтекстноеМенюСкопировать");
МассивЭлементов.Добавить("ВозвращаемыеТоварыКонтекстноеМенюУдалить");
МассивЭлементов.Добавить("ВозвращаемыеТоварыДобавить");
МассивЭлементов.Добавить("ВозвращаемыеТоварыИзменить");
МассивЭлементов.Добавить("ВозвращаемыеТоварыСкопировать");
МассивЭлементов.Добавить("ВозвращаемыеТоварыУдалить");
МассивЭлементов.Добавить("ВозвращаемыеТоварыЗаполнитьЦеныПоСоглашению");
МассивЭлементов.Добавить("ВозвращаемыеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦен");
МассивЭлементов.Добавить("ВозвращаемыеТоварыПоискПоШтрихкоду");
МассивЭлементов.Добавить("ВозвращаемыеТоварыЗагрузитьДанныеИзТСД");
МассивЭлементов.Добавить("ВозвращаемыеТоварыПодобратьТоварыПоРеализациям");
МассивЭлементов.Добавить("ВозвращаемыеТоварыЗаполнитьРеализацииИЦены");
МассивЭлементов.Добавить("ВозвратПорчи");
МассивЭлементов.Добавить("ВозвращаемыеТоварыЗагрузитьВозвращаемыеТоварыИзВнешнегоФайла");
МассивЭлементов.Добавить("ЗаменяющиеТоварыКонтекстноеМенюДобавить");
МассивЭлементов.Добавить("ЗаменяющиеТоварыКонтекстноеМенюСкопировать");
МассивЭлементов.Добавить("ЗаменяющиеТоварыКонтекстноеМенюУдалить");
МассивЭлементов.Добавить("ЗаменяющиеТоварыДобавить");
МассивЭлементов.Добавить("ЗаменяющиеТоварыИзменить");
МассивЭлементов.Добавить("ЗаменяющиеТоварыСкопировать");
МассивЭлементов.Добавить("ЗаменяющиеТоварыУдалить");
МассивЭлементов.Добавить("ЗаменяющиеТоварыРассчитатьСкидкиНаценки");
МассивЭлементов.Добавить("ЗаменяющиеТоварыОтменитьРучныеСкидки");
МассивЭлементов.Добавить("ЗаменяющиеТоварыНазначитьРучнуюСкидку");
МассивЭлементов.Добавить("ЗаменяющиеТоварыНазначитьРучнуюСкидкуВыделенныхСтрок");
МассивЭлементов.Добавить("ЗаменяющиеТоварыНазначитьАвтоматическиеСкидки");
МассивЭлементов.Добавить("СчитатьКартуЛояльности");
МассивЭлементов.Добавить("КартаЛояльности");
МассивЭлементов.Добавить("ЗаменяющиеТоварыЗаполнитьЦеныПоСоглашению");
МассивЭлементов.Добавить("ЗаменяющиеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦен");
МассивЭлементов.Добавить("ЗаменяющиеТоварыЗаменяющиеТоварыОткрытьПодбор");
МассивЭлементов.Добавить("ЗаменяющиеТоварыЗагрузитьЗаменяющиеТоварыИзВнешнегоФайла");
МассивЭлементов.Добавить("ЗаменяющиеТоварыПоискПоШтрихкоду");
МассивЭлементов.Добавить("ЗаменяющиеТоварыЗагрузитьДанныеИзТСД");
МассивЭлементов.Добавить("ЗаменяющиеТоварыЗаполнитьЗаменяющиеТоварыПоВозвращаемым");
ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтаФорма, МассивЭлементов, УстановитьПодписку);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Партнер", "ТолькоПросмотр", ЗначениеЗаполнено(Объект.ЧекККМ));
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ИзменитьДокументСервер()
УстановитьДоступностьЭлементовПоСтатусуСервер();
НастроитьЭлементыПоОперацииСервер();
НастроитьЭлементыФормы();
КонецПроцедуры
&НаСервере
Функция ПроверитьНаличиеГрадацииСервер(ТоварИсходногоКачества, ТоварДругогоКачества)
Возврат РегистрыСведений.ТоварыДругогоКачества.ПроверитьНаличиеГрадации(ТоварИсходногоКачества, ТоварДругогоКачества);
КонецФункции
&НаСервере
Функция ЗаменяющиеТоварыОтменитьНепоставленныеСтрокиСервер(ПричинаОтмены, Знач ПроверятьОстатки = Ложь)
СтруктураКорректировки = ЗаказыСервер.СтруктураКорректировкиСтрокЗаказа();
СтруктураКорректировки.ДокументОбъект = Объект;
СтруктураКорректировки.ПричинаОтмены = ПричинаОтмены;
СтруктураКорректировки.ПроверятьОстатки = ПроверятьОстатки;
СтруктураКорректировки.ИмяТабличнойЧасти = "ЗаменяющиеТовары";
СтруктураКорректировки.ОтменитьНеотработанныеСтроки = Истина;
СтруктураРезультата = ПродажиСервер.СкорректироватьСтрокиЗаказа(СтруктураКорректировки);
КоличествоОтмененныхСтрок = СтруктураРезультата.КоличествоСтрок;
ОбновитьДубликатыЗависимыхРеквизитов(Истина);
Если КоличествоОтмененныхСтрок > 0 Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.Заменяющие);
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
ПриИзмененииСкладаВТабличнойЧастиЗаменяющиеТоварыСервер();
Возврат КоличествоОтмененныхСтрок;
КонецФункции
&НаСервере
Процедура ЗаполнитьЗаменяющиеТоварыПоВозвращаемымСервер()
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
Объект.ЗаменяющиеТовары.Загрузить(
Объект.ВозвращаемыеТовары.Выгрузить(
Новый Структура("Отменено", Ложь),
"НоменклатураНабора,
|ХарактеристикаНабора,
|Номенклатура,
|Характеристика,
|Упаковка,
|КоличествоУпаковок,
|Количество,ВидЦены,
|Цена,
|Склад,
|Сумма,
|СуммаСНДС,
|СтавкаНДС,
|СуммаНДС"));
Если НЕ Объект.ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым Тогда
ЗаполнитьЦеныПоСоглашениюСервер();
КонецЕсли;
Если Объект.НеОтгружатьЧастями И ЗначениеЗаполнено(Объект.ДатаОтгрузки) Тогда
Для каждого СтрокаТЧ Из Объект.ЗаменяющиеТовары Цикл
СтрокаТЧ.ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЦикла;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ЗаменяющиеТовары,СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ЗаменяющиеТовары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ЗаменяющиеТовары, СтруктураДействий, КэшированныеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Заменяющие);
ОбновитьДубликатыЗависимыхРеквизитов(Истина);
УстановитьВидимостьАвтоматическихСкидок();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
ОбновитьКолонкуДоступноСервер();
ПриИзмененииСкладаВТабличнойЧастиЗаменяющиеТоварыСервер();
КонецПроцедуры
&НаСервере
Процедура ОбновитьСостояниеСервер()
Документы.ЗаявкаНаВозвратТоваровОтКлиента.РассчитатьСостояние(Объект.Ссылка, Объект.Договор, ЭтотОбъект);
Элементы.Состояние.Гиперссылка = ПравоДоступа("Просмотр", Метаданные.Отчеты.СостояниеВыполненияДокументов);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСостояниеКлиент(ПроверитьЗаданияКОтражениюСостоянияЗаказов = Ложь, СостояниеЗаказа = Неопределено)
СостояниеЗаказа = ПродажиКлиент.СтруктураСостоянияЗаказа();
Если ПроверитьЗаданияКОтражениюСостоянияЗаказов Тогда
СостоянияДокументовКлиент.ДополнитьСтруктуруСостоянияЗаказа(СостояниеЗаказа);
КонецЕсли;
ЗаполнитьЗначенияСвойств(СостояниеЗаказа, ЭтотОбъект);
РассчитатьСостояниеЗаказа(
Объект.Ссылка,
Объект.Договор,
СостояниеЗаказа,
Элементы.Состояние.Гиперссылка,
ПроверитьЗаданияКОтражениюСостоянияЗаказов);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, СостояниеЗаказа);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура РассчитатьСостояниеЗаказа(
Ссылка,
Договор,
СостояниеЗаказа,
Гиперссылка,
ПроверитьЗаданияКОтражениюСостоянияЗаказов = Ложь)
Документы.ЗаявкаНаВозвратТоваровОтКлиента.РассчитатьСостояние(
Ссылка,
Договор,
СостояниеЗаказа,
ПроверитьЗаданияКОтражениюСостоянияЗаказов);
Гиперссылка = ПравоДоступа("Просмотр", Метаданные.Отчеты.СостояниеВыполненияДокументов);
КонецПроцедуры
&НаСервере
Процедура ОбновитьСпособКомпенсации()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
Объект.СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ПустаяСсылка();
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Контрагент)
Возврат ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент);
КонецФункции
&НаСервере
Процедура ЗаполнитьПустыеДатыПоступления()
Если Объект.ВозвращаемыеТовары.Количество() > 0 Тогда
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату") Или
Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОбеспечению") Или
Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КОтгрузке") Или
Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.Выполнена") Тогда
Документы.ЗаявкаНаВозвратТоваровОтКлиента.ЗаполнитьПустыеДатыПоступления(Объект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуПоступления(МассивВыделенныхСтрок = Неопределено)
ДатаПоступления = Объект.ЖелаемаяДатаПоступления;
Оповещение = Новый ОписаниеОповещения("ЗаполнитьДатуПоступленияЗавершение", ЭтотОбъект, Новый Структура("МассивВыделенныхСтрок", МассивВыделенныхСтрок));
ОбщегоНазначенияУТКлиент.ВвестиДатуСКонтролемПустогоЗначения(ДатаПоступления, НСтр("ru='Введите дату поступления'"), ЧастиДаты.Дата, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуПоступленияЗавершение(ВыбраннаяДата, ДополнительныеПараметры) Экспорт
Если ВыбраннаяДата <> Неопределено И ЗначениеЗаполнено(ВыбраннаяДата) Тогда
ДатаПоступления = ВыбраннаяДата;
МассивВыделенныхСтрок = ДополнительныеПараметры.МассивВыделенныхСтрок;
Если МассивВыделенныхСтрок = Неопределено Тогда
Для Каждого СтрокаТЧ Из Объект.ВозвращаемыеТовары Цикл
СтрокаТЧ.ДатаПоступления = ДатаПоступления;
КонецЦикла;
Иначе
Для Каждого ИдентификаторСтроки Из МассивВыделенныхСтрок Цикл
СтрокаТЧ = Объект.ВозвращаемыеТовары.НайтиПоИдентификатору(ИдентификаторСтроки);
СтрокаТЧ.ДатаПоступления = ДатаПоступления;
КонецЦикла;
КонецЕсли;
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияДатПоступления(ДатаПоступления, (МассивВыделенныхСтрок <> Неопределено));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СчитанаКартаЛояльностиНаСервере(ДанныеКартыЛояльности)
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Партнер) И ДанныеКартыЛояльности.Партнер <> Объект.Партнер Тогда
Объект.Партнер = ДанныеКартыЛояльности.Партнер;
Объект.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
Объект.Соглашение = Справочники.СоглашенияСКлиентами.ПустаяСсылка();
ПартнерПриИзмененииСервер();
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Соглашение)
И ДанныеКартыЛояльности.Соглашение <> Объект.Соглашение
И ДанныеКартыЛояльности.СоглашениеДоступно Тогда
Объект.Соглашение = ДанныеКартыЛояльности.Соглашение;
СоглашениеПриИзмененииСервер();
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Контрагент)
И ДанныеКартыЛояльности.Контрагент <> Объект.Контрагент
И ДанныеКартыЛояльности.КонтрагентДоступен Тогда
Объект.Контрагент = ДанныеКартыЛояльности.Контрагент;
КонтрагентПриИзмененииСервер();
КонецЕсли;
ИспользоватьБонусныеПрограммыЛояльности = ИспользоватьБонусныеПрограммыЛояльности(Объект.КартаЛояльности);
УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ИспользоватьБонусныеПрограммыЛояльности(КартаЛояльности)
Если Не ЗначениеЗаполнено(КартаЛояльности) Тогда
Возврат Ложь;
КонецЕсли;
Возврат СкидкиНаценкиСервер.ИспользоватьБонусныеПрограммыЛояльности(КартаЛояльности);
КонецФункции
&НаКлиенте
Процедура СчитанаКартаЛояльности(Знач Оповещение, КартаЛояльности)
ДанныеКартыЛояльности = КартыЛояльностиВызовСервера.ПолучитьДанныеКартыЛояльности(КартаЛояльности);
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Ссылка) Тогда
Если Не ДанныеКартыЛояльности.ПартнерДоступен Тогда
ПоказатьПредупреждение(Новый ОписаниеОповещения("СчитанаКартаЛояльностиЗавершение", ЭтотОбъект, Новый Структура("Оповещение", Оповещение)), НСтр("ru = 'Нет доступа к партнеру-владельцу карты лояльности.'"));
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(ДанныеКартыЛояльности.Партнер) Тогда
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Модифицированность = Истина;
Объект.КартаЛояльности = КартаЛояльности;
ВыполнитьОбработкуОповещения(Оповещение);
Возврат;
ИначеЕсли Объект.Партнер <> ДанныеКартыЛояльности.Партнер Тогда
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Оповещение", Оповещение);
ДополнительныеПараметры.Вставить("КартаЛояльности", КартаЛояльности);
ДополнительныеПараметры.Вставить("ДанныеКартыЛояльности", ДанныеКартыЛояльности);
ПоказатьВопрос(
Новый ОписаниеОповещения("СчитанаКартаЛояльностиВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Карта лояльности принадлежит партнеру ""%1"". Изменить партнера в документе?'"), ДанныеКартыЛояльности.Партнер),
РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
Иначе
ВопросОбИзмененииКонтрагента = Ложь;
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Контрагент)
И ЗначениеЗаполнено(Объект.Контрагент) И ДанныеКартыЛояльности.Контрагент <> Объект.Контрагент Тогда
ВопросОбИзмененииКонтрагента = Истина;
КонецЕсли;
ВопросОбИзмененииСоглашения = Ложь;
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(ДанныеКартыЛояльности.Соглашение)
И ЗначениеЗаполнено(Объект.Соглашение) И ДанныеКартыЛояльности.Соглашение <> Объект.Соглашение Тогда
ВопросОбИзмененииСоглашения = Истина;
КонецЕсли;
Если ВопросОбИзмененииКонтрагента Или ВопросОбИзмененииСоглашения Тогда
Если ВопросОбИзмененииКонтрагента И ВопросОбИзмененииСоглашения Тогда
ТекстВопроса = НСтр("ru = 'Для карты лояльности заданы контрагент ""%1"" и соглашение ""%2"". Применить карту лояльности и подставить в документ контрагента ""%1"" и соглашение ""%2""?'");
ИначеЕсли ВопросОбИзмененииКонтрагента Тогда
ТекстВопроса = НСтр("ru = 'Для карты лояльности задан контрагент ""%1"". Применить карту лояльности и подставить в документ контрагента ""%1""?'");
ИначеЕсли ВопросОбИзмененииСоглашения Тогда
ТекстВопроса = НСтр("ru = 'Для карты лояльности задано соглашение ""%2"". Применить карту лояльности и подставить в документ соглашение ""%2""?'");
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Оповещение", Оповещение);
ДополнительныеПараметры.Вставить("КартаЛояльности", КартаЛояльности);
ДополнительныеПараметры.Вставить("ДанныеКартыЛояльности", ДанныеКартыЛояльности);
ПоказатьВопрос(
Новый ОписаниеОповещения("СчитанаКартаЛояльностиВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, ДанныеКартыЛояльности.Контрагент, ДанныеКартыЛояльности.Соглашение),
РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Модифицированность = Истина;
Объект.КартаЛояльности = КартаЛояльности;
СчитанаКартаЛояльностиНаСервере(ДанныеКартыЛояльности);
Иначе
ИспользоватьБонусныеПрограммыЛояльности = ИспользоватьБонусныеПрограммыЛояльности(Неопределено);
ПрименитьОплатуБонуснымиБаллами(Неопределено);
УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности();
КонецЕсли;
ВыполнитьОбработкуОповещения(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура СчитанаКартаЛояльностиВопросЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Нет Тогда
ИспользоватьБонусныеПрограммыЛояльности = ИспользоватьБонусныеПрограммыЛояльности(Объект.КартаЛояльности);
УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности();
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.Оповещение);
ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Модифицированность = Истина;
Объект.КартаЛояльности = ДополнительныеПараметры.КартаЛояльности;
СчитанаКартаЛояльностиНаСервере(ДополнительныеПараметры.ДанныеКартыЛояльности);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СчитанаКартаЛояльностиЗавершение(ДополнительныеПараметры) Экспорт
Оповещение = ДополнительныеПараметры.Оповещение;
ВыполнитьОбработкуОповещения(Оповещение);
КонецПроцедуры
&НаСервере
Функция АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(ТолькоВыделенныеСтроки)
СтруктураПараметров = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыАдресДанныхДляРасчетаРучныхСкидок();
СтруктураПараметров.ИмяТаблицы = "ЗаменяющиеТовары";
СтруктураПараметров.ТолькоДляВыделенныхСтрок = ТолькоВыделенныеСтроки;
Возврат СкидкиНаценкиЗаполнениеСервер.АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(
ЭтаФорма, УникальныйИдентификатор, СтруктураПараметров);
КонецФункции
&НаСервере
Функция ПоместитьВоВременноеХранилищеНаСервере(ИмяТЧ, Идентификатор = "")
Возврат ПоместитьВоВременноеХранилище(Объект[ИмяТЧ].Выгрузить(), Идентификатор);
КонецФункции
&НаСервере
Процедура ЗаполнитьДатыПоступленияСервер(ДатаПоступления)
Для Каждого Товар Из Объект.ВозвращаемыеТовары Цикл
Товар.ДатаПоступления = ДатаПоступления;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция МаксимальнаяДатаПоступления()
МаксимальнаяДатаПоступления = Дата(1,1,1);
Для Каждого Товар Из Объект.ВозвращаемыеТовары Цикл
МаксимальнаяДатаПоступления = Макс(МаксимальнаяДатаПоступления, Товар.ДатаПоступления);
КонецЦикла;
Возврат МаксимальнаяДатаПоступления
КонецФункции
&НаСервере
Функция ОтменитьНевозвращенныеСтрокиСервер(ПроверятьОстатки = Ложь)
ДокументОбъект = РеквизитФормыВЗначение("Объект");
СтруктураКорректировкиСтрок = ЗаказыСервер.СтруктураКорректировкиСтрокЗаказа();
СтруктураКорректировкиСтрок.ОтменитьНеотработанныеСтроки = Истина;
СтруктураКорректировкиСтрок.ИмяТабличнойЧасти = "ВозвращаемыеТовары";
СтруктураКорректировкиСтрок.ПроверятьОстатки = Истина;
КоличествоОтмененныхСтрок = ДокументОбъект.СкорректироватьСтрокиЗаказа(СтруктураКорректировкиСтрок);
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура,НоменклатураОприходование", "ХарактеристикиИспользуются", "ХарактеристикиИспользуютсяОприходование"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(
Объект.ВозвращаемыеТовары,
СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ВозвращаемыеТовары");
ОбновитьДубликатыЗависимыхРеквизитов();
ОбновитьКолонкуДоступноСервер();
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ПриИзмененииСкладаВТабличнойЧастиВозвращаемыеТоварыСервер();
Возврат КоличествоОтмененныхСтрок;
КонецФункции
&НаСервере
Процедура ЗаполнитьРеализацииИЦеныНаСервере()
ПродажиСервер.ЗаполнитьРеализацииИЦены(Объект, "ВозвращаемыеТовары");
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.ВозвращаемыеТовары, ЗависимыеРеквизитыВозвращаемыеТовары());
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюПоРеализациям()
Если НЕ ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
ПродажиСервер.ОбновитьИнформациюПоРеализациямВФорме(
СписокРеализаций,
Объект.ДокументРеализации,
НадписьЗаголовокРеализации,
Элементы,
Элементы.ВозвращаемыеТоварыДокументРеализации,
Объект.ВозвращаемыеТовары,
"ДокументРеализации");
Иначе
Объект.ДокументРеализации = ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(Объект.ЧекККМ);
Элементы.СтраницыРеализации.ТекущаяСтраница = Элементы.СтраницаРеализация;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОчиститьДокументыРеализации()
Объект.ДокументРеализации = Неопределено;
Для каждого СтрокаТовары Из Объект.ВозвращаемыеТовары Цикл
СтрокаТовары.ДокументРеализации = Неопределено;
КонецЦикла;
НадписьЗаголовокРеализации = Неопределено;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВозвращаемыеТоварыПоЧеку()
Объект.ВозвращаемыеТовары.Очистить();
ПродажиСервер.ЗаполнитьВозвращаемыеТоварыПоЧеку(Объект, "ВозвращаемыеТовары");
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.ВозвращаемыеТовары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.ВозвращаемыеТовары, ЗависимыеРеквизитыВозвращаемыеТовары());
ОбновитьИнформациюПоРеализациям();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУсловияПродаж()
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоУмолчанию();
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
ЗаполнитьДоговорПоУмолчанию();
ХозяйственнаяОперацияДоговора = СамообслуживаниеКлиентСервер.ХозяйственнаяОперацияДоговора(Объект.ХозяйственнаяОперация);
НоваяХозяйственнаяОперацияСоглашения = СамообслуживаниеКлиентСервер.ХозяйственнаяОперацияСоглашения(Объект.ХозяйственнаяОперация);
Если ИспользоватьСоглашенияСКлиентами И НоваяХозяйственнаяОперацияСоглашения <> ХозяйственнаяОперацияСоглашения Тогда
ХозяйственнаяОперацияСоглашения = НоваяХозяйственнаяОперацияСоглашения;
Объект.Соглашение = Неопределено;
КонецЕсли;
УстановитьПризнакКомиссионнойПродажи();
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ВалютаДокумента = Объект.Валюта;
Если (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя)
И (ИспользоватьРучныеСкидкиВПродажах Или ИспользоватьАвтоматическиеСкидкиВПродажах)Тогда
СкидкиНаценкиЗаполнениеСервер.ОтменитьСкидки(Объект, "ЗаменяющиеТовары", Истина);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения, Ложь);
КонецЕсли;
НастроитьЭлементыПоОперацииСервер();
КонецЕсли;
УстановитьЗапретВыбораГруппыСклада(Элементы.Склад);
НастроитьЭлементыФормы();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЗапретаОтгрузкиПартнеру()
СегментыСервер.УстановитьВидимостьЗапретаОтгрузкиПартнеру(Объект.Партнер, Элементы);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(ЧекККМ)
Возврат РозничныеПродажи.ПолучитьОтчетОРозничныхПродажахПоЧекуККМ(ЧекККМ);
КонецФункции
&НаСервере
Процедура ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(АдресТарыВХранилище)
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаВозвращаемыеТовары Тогда
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСумму");
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
СтруктураДействийИзмененныеСтроки.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийДобавленныеСтроки = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(СтруктураДействийИзмененныеСтроки);;
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(
Объект,
АдресТарыВХранилище,
"ВозвращаемыеТовары",
"Номенклатура,Характеристика,,ДатаПоступления",
СтруктураДействийИзмененныеСтроки,
СтруктураДействийДобавленныеСтроки);
СтруктураХарактеристикиНоменклатуры = Новый Структура;
СтруктураХарактеристикиНоменклатуры.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ВозвращаемыеТовары, СтруктураХарактеристикиНоменклатуры);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ВозвращаемыеТовары");
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Возвращаемые);
ИначеЕсли Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаЗаменяющиеТовары Тогда
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСумму");
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
СтруктураДействийИзмененныеСтроки.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействийИзмененныеСтроки,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураДействийДобавленныеСтроки = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(СтруктураДействийИзмененныеСтроки);;
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(
Объект,
АдресТарыВХранилище,
"ЗаменяющиеТовары",
"Номенклатура,Характеристика,,ДатаОтгрузки",
СтруктураДействийИзмененныеСтроки,
СтруктураДействийДобавленныеСтроки,
КэшированныеЗначения);
ХарактеристикиИспользуются = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
ЗаполнитьПризнакВариантОформленияПродажи = Новый Структура("Номенклатура", "ВариантОформленияПродажи");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
СтруктураДействий = Новый Структура(
"ЗаполнитьПризнакХарактеристикиИспользуются, ЗаполнитьПризнакВариантОформленияПродажи, ЗаполнитьПризнакТипНоменклатуры",
ХарактеристикиИспользуются,
ЗаполнитьПризнакВариантОформленияПродажи,
ЗаполнитьПризнакТипНоменклатуры);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ЗаменяющиеТовары,СтруктураДействий);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма, "ЗаменяющиеТовары");
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Заменяющие);
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
ОбновитьИнформациюПоРеализациям();
КонецПроцедуры
&НаСервере
Процедура ВернутьМногооборотнуюТаруПриИзмененииСервер()
Если Не Объект.ВернутьМногооборотнуюТару Тогда
Объект.ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ВозвращаемыеТовары, СтруктураДействий, Неопределено);
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ЗаменяющиеТовары, СтруктураДействий, Неопределено);
ОбновитьДубликатыЗависимыхРеквизитов();
НастроитьЭлементыФормы();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ОбновитьДубликатыЗависимыхРеквизитов(ТолькоЗаменяющие = Ложь)
СтруктураДополнительныхДействий = Новый Структура;
СтруктураДополнительныхДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
Если НЕ ТолькоЗаменяющие Тогда
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.ВозвращаемыеТовары, Объект.ВернутьМногооборотнуюТару, СтруктураДополнительныхДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.ВозвращаемыеТовары, ЗависимыеРеквизитыВозвращаемыеТовары());
КонецЕсли;
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.ЗаменяющиеТовары, Объект.ВернутьМногооборотнуюТару, СтруктураДополнительныхДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.ЗаменяющиеТовары, ЗависимыеРеквизитыЗаменяющиеТовары());
КонецПроцедуры
&НаСервере
Процедура ЗачтенаОплатаСервер(ИмяСобытия, Параметр, Источник)
НастроитьЭлементыФормы();
ОбновитьСостояниеСервер();
ВзаиморасчетыСервер.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр);
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище, ИмяТЧ)
ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
СтруктураДействий = Новый Структура;
Если ИмяТЧ = "ЗаменяющиеТовары" Тогда
СтруктураДействий.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокЗаменяющиеТовары(СтруктураДействий, Объект);
ИначеЕсли ИмяТЧ = "ВозвращаемыеТовары" Тогда
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковокВозвращаемыеТовары(СтруктураДействий, Объект);
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
ОбъектТабличнаяЧасть = Объект[ИмяТЧ];
СтрокаТЧТовары = ОбъектТабличнаяЧасть.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров, , "КодСтроки");
Если ИмяТЧ = "ЗаменяющиеТовары" И Объект.НеОтгружатьЧастями Тогда
СтрокаТЧТовары.ДатаОтгрузки = Объект.ДатаОтгрузки;
ИначеЕсли ИмяТЧ = "ВозвращаемыеТовары" И Объект.ПоступлениеОднойДатой Тогда
СтрокаТЧТовары.ДатаПоступления = Объект.ДатаПоступления;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(СтрокаТЧТовары);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект[ИмяТЧ]);
Если ИмяТЧ = "ВозвращаемыеТовары" Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.Возвращаемые);
ИначеЕсли ИмяТЧ = "ЗаменяющиеТовары" Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Заменяющие);
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
ПриИзмененииСкладаВТабличнойЧастиВозвращаемыеТоварыСервер();
ПриИзмененииСкладаВТабличнойЧастиЗаменяющиеТоварыСервер();
КонецПроцедуры
&НаСервере
Процедура НастроитьЭлементыПоОперацииСервер()
МассивТипов = Новый Массив();
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
МассивТипов.Добавить(Тип("ДокументСсылка.ОтчетОРозничныхПродажах"));
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя
Или (КомиссионныеПродажи25
И Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера) Тогда
МассивТипов.Добавить(Тип("ДокументСсылка.ПередачаТоваровХранителю"));
Иначе
МассивТипов.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг"));
КонецЕсли;
Элементы.ВозвращаемыеТоварыДокументРеализации.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов);
КонецПроцедуры
&НаСервере
Процедура НастроитьЭлементыФормы()
ИспользоватьГрафикиОплаты = ПолучитьФункциональнуюОпцию("ИспользоватьГрафикиОплаты");
ИспользоватьСтатусы = Не Объект.ЭтоЗаказКакСчет;
ИспользоватьПричиныОтменыЗаказовКлиентов = ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовКлиентов");
ЭтоВозвратПорчи = Объект.ВозвратПорчи;
ОтгружатьОднойДатой = Объект.НеОтгружатьЧастями;
ПоступлениеОднойДатой = Объект.ПоступлениеОднойДатой;
ВернутьМногооборотнуюТару = Объект.ВернутьМногооборотнуюТару;
НадоЗаменитьТовары = Объект.СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ЗаменитьТовары;
НадоВернутьДенежныеСредства =
Объект.СпособКомпенсации = Перечисления.СпособыКомпенсацииВозвратовТоваров.ВернутьДенежныеСредства;
ЭтоВозвратОтКомиссионера = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
ЭтоВозвратОтХранителя = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя;
ЭтоВозвратОтКомиссионераИлиХранителя = ЭтоВозвратОтКомиссионера Или ЭтоВозвратОтХранителя;
ЭтоВозвратОтРозничногоПокупателя =
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя;
Элементы.Статус.Видимость = ИспользоватьСтатусы;
Элементы.ЗакрытьЗаявку.Видимость = ИспользоватьСтатусы;
УстановитьСвзязиВидовЦен(ЭтоВозвратОтКомиссионераИлиХранителя);
Элементы.ЦенаВключаетНДС.Видимость = Не ЭтоВозвратОтКомиссионераИлиХранителя;
Элементы.ЗаменяющиеТоварыОтменено.Видимость = ИспользоватьПричиныОтменыЗаказовКлиентов;
Элементы.ЗаменяющиеТоварыПричинаОтмены.Видимость = ИспользоватьПричиныОтменыЗаказовКлиентов;
Элементы.ЗаменяющиеТоварыОтмененоПричиныОтменыНеИспользуются.Видимость = Не ИспользоватьПричиныОтменыЗаказовКлиентов;
Элементы.ВозвращаемыеТоварыНоменклатураТипНоменклатуры1.Видимость = ЭтоВозвратПорчи;
Элементы.ВозвращаемыеТоварыНоменклатураОприходованиеКод.Видимость = ЭтоВозвратПорчи;
Элементы.ВозвращаемыеТоварыНоменклатураОприходованиеАртикул.Видимость = ЭтоВозвратПорчи;
Элементы.ВозвращаемыеТоварыНоменклатураОприходованиеТипНоменклатуры.Видимость = ЭтоВозвратПорчи;
Элементы.ВозвращаемыеТоварыПорча.Видимость = ЭтоВозвратПорчи;
Элементы.ВозвращаемыеТоварыНоменклатураОприходование.Видимость = ЭтоВозвратПорчи;
Элементы.ВозвращаемыеТоварыХарактеристикаОприходование.Видимость = ЭтоВозвратПорчи;
Элементы.ВозвратПорчи.Видимость = ЭтоВозвратПорчи Или Не ЭтоВозвратОтКомиссионера;
Элементы.СтраницаДоставка.Видимость = НадоЗаменитьТовары И ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеДоставкой");
Элементы.ГруппаЗаменяющиеТовары.Видимость = НадоЗаменитьТовары;
Элементы.НеОтгружатьЧастями.Видимость = НадоЗаменитьТовары
И ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента И Не Объект.ЭтоЗаказКакСчет;
Элементы.СтраницыГиперссылкаСостояниеОбеспечения.Видимость = НадоЗаменитьТовары
И ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента;
Элементы.СуммаВсегоСНДСЗаменяющихТоваров.Видимость = НадоЗаменитьТовары;
Элементы.СуммаВсегоБезНДСЗаменяющихТоваров.Видимость = НадоЗаменитьТовары;
Элементы.ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым.Видимость = НадоЗаменитьТовары;
Если НадоЗаменитьТовары Тогда
Элементы.СтраницыТара.ТекущаяСтраница = Элементы.СтраницаТараПриЗамене;
Иначе
Элементы.СтраницыТара.ТекущаяСтраница = Элементы.СтраницаТараБезЗамены;
КонецЕсли;
ВидимостьЭлемента = Не ЭтоВозвратОтКомиссионераИлиХранителя;
ПрименятьУсловияПродаж = НЕ Объект.ЗаполнятьЦеныЗаменяющихТоваровПоВозвращаемым;
Элементы.Подразделение.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыПроцентРучнойСкидки.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыСуммаРучнойСкидки.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыПроцентАвтоматическойСкидки.Видимость = ВидимостьЭлемента И ПрименятьУсловияПродаж;
Элементы.ЗаменяющиеТоварыСуммаАвтоматическойСкидки.Видимость = ВидимостьЭлемента И ПрименятьУсловияПродаж;
Элементы.ЗаменяющиеТоварыРассчитатьСкидкиНаценки.Видимость = ВидимостьЭлемента И ПрименятьУсловияПродаж;
Элементы.ЗаменяющиеТоварыОтменитьРучныеСкидки.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыНазначитьРучнуюСкидку.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыЗаменяющиеТоварыНазначитьРучнуюСкидкуВыделенныхСтрок.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыОткрытьИнформациюОСкидках.Видимость = ВидимостьЭлемента И ПрименятьУсловияПродаж;
Элементы.КонтекстноеМенюЗаменяющиеТоварыОткрытьИнформациюОСкидках.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыНазначитьАвтоматическиеСкидки.Видимость = ВидимостьЭлемента И ПрименятьУсловияПродаж;
Элементы.СчитатьКартуЛояльности.Видимость = ВидимостьЭлемента И ПрименятьУсловияПродаж;
Элементы.КартаЛояльности.Видимость = ВидимостьЭлемента И ПрименятьУсловияПродаж;
Элементы.СпособКомпенсации.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦен.Видимость = ПрименятьУсловияПродаж;
Элементы.ЗаменяющиеТоварыЗаполнитьЦеныПоСоглашению.Видимость = ПрименятьУсловияПродаж;
Элементы.ЧекККМ.Видимость = ЭтоВозвратОтРозничногоПокупателя;
ВидимостьЭлемента = Не ЭтоВозвратОтКомиссионераИлиХранителя И Не ЭтоВозвратОтРозничногоПокупателя;
Элементы.ВернутьМногооборотнуюТару.Видимость = (Не ЭтоВозвратОтРозничногоПокупателя
И Не (ЭтоВозвратОтКомиссионера И КомиссионныеПродажи25) И Не ЭтоВозвратОтХранителя) Или Объект.ВернутьМногооборотнуюТару;
Элементы.СрокВозвратаМногооборотнойТары.Видимость = (Не ЭтоВозвратОтРозничногоПокупателя
И Не (ЭтоВозвратОтКомиссионера И КомиссионныеПродажи25) И Не ЭтоВозвратОтХранителя) Или Объект.ВернутьМногооборотнуюТару;
Элементы.ТребуетсяЗалогЗаТару.Видимость = ВидимостьЭлемента;
Элементы.ПредусмотренЗалогЗаТару.Видимость = ВидимостьЭлемента;
Элементы.ВозвратПереданнойМногооборотнойТары.Видимость = (Не ЭтоВозвратОтРозничногоПокупателя
И Не (ЭтоВозвратОтКомиссионера И КомиссионныеПродажи25) И Не ЭтоВозвратОтХранителя) Или Объект.ВернутьМногооборотнуюТару;
ВидимостьЭлемента = Не ЭтоВозвратОтКомиссионераИлиХранителя И НадоЗаменитьТовары;
Элементы.СуммаСкидки.Видимость = ВидимостьЭлемента;
ВидимостьЭлемента = Не ЭтоВозвратОтКомиссионераИлиХранителя И НадоЗаменитьТовары;
ВидимостьЭлемента = Не ОтгружатьОднойДатой;
Элементы.ЗаменяющиеТоварыЗаполнитьДатуОтгрузки.Видимость = ВидимостьЭлемента;
Элементы.ЗаменяющиеТоварыДатаОтгрузки.Видимость = ВидимостьЭлемента
И ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента И Не Объект.ЭтоЗаказКакСчет;
ВидимостьЭлемента = ОтгружатьОднойДатой И НадоЗаменитьТовары;
Элементы.ДатаОтгрузки.Видимость = ВидимостьЭлемента;
Элементы.ДатаПоступления.Видимость = ПоступлениеОднойДатой;
Элементы.ВозвращаемыеТоварыЗаполнитьДатуПоступленияДляВыделенныхСтрок.Видимость = Не ПоступлениеОднойДатой;
Элементы.ВозвращаемыеТоварыДатаПоступления.Видимость = Не ПоступлениеОднойДатой;
Элементы.ДатаВозвратаДенежныхСредств.Видимость = НадоВернутьДенежныеСредства;
Элементы.СрокВозвратаМногооборотнойТары.Доступность = ВернутьМногооборотнуюТару;
Элементы.ТребуетсяЗалогЗаТару.Доступность = ВернутьМногооборотнуюТару;
Элементы.ПредусмотренЗалогЗаТару.Доступность = ВернутьМногооборотнуюТару;
Элементы.ВозвратПорчи.Пометка = Объект.ВозвратПорчи;
Элементы.ВозвращаемыеТоварыГруппаРанееОтгруженныйТовар.ОтображатьВШапке = Объект.ВозвратПорчи;
Элементы.ГруппаСостояние.Видимость = ИспользоватьСтатусы;
Элементы.ДекорацияЗаголовокОплата.Видимость = Элементы.ДекорацияЭтапыОплаты.Видимость ИЛИ Элементы.ДекорацияСостояниеРасчетов.Видимость ИЛИ Элементы.ЗачетОплатыФорма.Видимость;
УстановитьВидимостьПоляПартнер();
УстановитьВидимостьДоговора();
Если Объект.ЗаменяющиеТовары.Количество() > 0 И НЕ НадоЗаменитьТовары Тогда
ОчиститьЗаменяющиеТовары();
КонецЕсли;
ДатаДокумента = ?(Параметры.Ключ.Пустая(), ТекущаяДатаСеанса(), Объект.Дата);
РозничныеПродажиКлиентСервер.УстановитьДоступностьКомандОплатыБонуснымиБаллами(Элементы, ДатаДокумента);
КонецПроцедуры
&НаСервере
Процедура УстановитьСвзязиВидовЦен(ЭтоВозвратОтКомиссионераИлиХранителя)
МассивСвязейПараметровВыбора = Новый Массив;
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("ИспользоватьСоглашенияСКлиентами", "ИспользоватьСоглашенияСКлиентами", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Соглашение", "Объект.Соглашение", РежимИзмененияСвязанногоЗначения.Очищать));
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Партнер", "Объект.Партнер", РежимИзмененияСвязанногоЗначения.Очищать));
Если Не ЭтоВозвратОтКомиссионераИлиХранителя Тогда
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.ЦенаВключаетНДС", "Объект.ЦенаВключаетНДС", РежимИзмененияСвязанногоЗначения.Очищать));
КонецЕсли;
Элементы.ВозвращаемыеТоварыВидЦены.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязейПараметровВыбора);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьДоговора()
Перем МассивВсехРеквизитов;
Перем МассивРеквизитовОперации;
Документы.ЗаявкаНаВозвратТоваровОтКлиента.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
Объект.ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ВидимостьДоговораПоОперации = МассивРеквизитовОперации.Найти("Договор") <> Неопределено;
ВидимостьДоговора = Ложь;
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, ВидимостьДоговора, Объект.Договор);
Элементы.ГруппаДоговор.Видимость = (ВидимостьДоговора И ВидимостьДоговораПоОперации) ИЛИ КомиссионныеПродажи25;
Элементы.Договор.Видимость = (ВидимостьДоговора И ВидимостьДоговораПоОперации) ИЛИ КомиссионныеПродажи25;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьСпособовКомпенсации()
ОставитьВКачествеАванса = Элементы.СпособКомпенсации.СписокВыбора.НайтиПоЗначению(
Перечисления.СпособыКомпенсацииВозвратовТоваров.ОставитьВКачествеАванса);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя Тогда
Если ОставитьВКачествеАванса <> Неопределено Тогда
Элементы.СпособКомпенсации.СписокВыбора.Удалить(ОставитьВКачествеАванса);
КонецЕсли;
ИначеЕсли ОставитьВКачествеАванса = Неопределено Тогда
Элементы.СпособКомпенсации.СписокВыбора.Добавить(Перечисления.СпособыКомпенсацииВозвратовТоваров.ОставитьВКачествеАванса);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОчиститьЗаменяющиеТовары()
Объект.ЗаменяющиеТовары.Очистить();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьРеквизитыФормыИзЧекаККМ(ЧекККМ, Реквизиты)
Если ЗначениеЗаполнено(ЧекККМ) Тогда
ЗначенияРеквизитоЧекаККМ = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЧекККМ, Реквизиты);
Для каждого ЗначениеРеквизита Из ЗначенияРеквизитоЧекаККМ Цикл
ЭтаФорма[ЗначениеРеквизита.Ключ] = ЗначениеРеквизита.Значение;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПодразделение(Команда)
СкладыКлиент.ЗаполнитьПодразделениеВТабличнойЧасти(Объект, ЭтаФорма, Объект.ЗаменяющиеТовары, "Заменяющие товары",
Элементы.ЗаменяющиеТовары.ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьОбработчикОжиданияПолучениеПеревозчиков()
Если ДанныеПоФоновомуЗаданию.Свойство("ИдентификаторЗадания") Тогда
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбновитьСписокПеревозчиковОповещение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(
ДанныеПоФоновомуЗаданию, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСписокПеревозчиковОповещение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
ДоставкаТоваровКлиент.ОбновитьСписокПеревозчиков(Элементы.ПеревозчикПартнер.СписокВыбора, Результат);
ОбновитьОтображениеДанных(Элементы.ПеревозчикПартнер);
ДанныеПоФоновомуЗаданию = Новый Структура;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция АдресТабличнойЧастиТовары()
МассивСтрок = Новый Массив();
Для Каждого Строка Из Объект.ЗаменяющиеТовары Цикл
Если Строка.Отменено Тогда
Продолжить;
КонецЕсли;
МассивСтрок.Добавить(Строка);
КонецЦикла;
Возврат ПоместитьВоВременноеХранилище(Объект.ЗаменяющиеТовары.Выгрузить(МассивСтрок), УникальныйИдентификатор);
КонецФункции
&НаСервере
Процедура СформироватьЗависимыеОтХозоперацииЗаголовки()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
Заголовок = НСтр("ru = 'Заявка на возврат товаров от комиссионера (создание)'");
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтХранителя Тогда
Заголовок = НСтр("ru = 'Заявка на возврат товаров от хранителя (создание)'");
Иначе
Заголовок = НСтр("ru = 'Заявка на возврат товаров от клиента (создание)'");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьЗаданияКОтражениюСостоянияЗаказов()
Если СостоянияДокументовКлиент.ПроверкаЗаданияКОтражениюСостоянияЗаказовВыполняется(ЭтотОбъект) Тогда
СостояниеЗаказа = Неопределено;
ОбновитьСостояниеКлиент(Истина, СостояниеЗаказа);
СостоянияДокументовКлиент.ОбработатьРезультатПроверкиЗаданияКОтражениюСостоянияЗаказов(
ЭтотОбъект,
СостояниеЗаказа.ЕстьЗаданияКОтражениюСостоянияЗаказов,
"Подключаемый_ПроверитьЗаданияКОтражениюСостоянияЗаказов");
ИначеЕсли СостоянияДокументовКлиент.СтартПроверкиЗаданияКОтражениюСостоянияЗаказов(ЭтотОбъект) Тогда
СостоянияДокументовКлиент.УстановитьПризнакПроверкаЗаданияКОтражениюСостоянияЗаказовВыполняется(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Обеспечение
&НаСервере
Функция АдресТаблицыДвиженийВХранилище()
Возврат ОбеспечениеВДокументахСервер.АдресТаблицыДвиженийВХранилище(ЭтотОбъект);
КонецФункции
&НаСервере
Функция ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(КодДействия, АдресАналитик, ПараметрыЗаполнения)
Модифицированность = Истина;
Изменения = ОбеспечениеВДокументахСервер.ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(
КодДействия,
АдресАналитик,
ЭтотОбъект);
Режим = ОбеспечениеВДокументахКлиентСервер.РежимСостоянияОбеспечения();
ПослеЗаполненияОбеспечения(Изменения, Режим, ПараметрыЗаполнения);
АдресТаблицыДвижений = АдресТаблицыДвиженийВХранилище();
Возврат АдресТаблицыДвижений;
КонецФункции
&НаСервере
Функция ОбеспечениеУстановитьДействие(КодДействия)
Результат = ОбеспечениеВДокументахСервер.ОбеспечениеУстановитьДействиеСтруктураРезультата();
Если КодДействия = "ФЛАГ_ОБОСОБЛЕННО" Или КодДействия = "ФЛАГ_НЕОБОСОБЛЕННО" Тогда
Изменения = ОбеспечениеВДокументахСервер.УстановитьДействиеОбособленно(
КодДействия,
ЭтотОбъект,
Элементы.ЗаменяющиеТовары.ВыделенныеСтроки);
ОбновитьКолонкуДоступноСервер();
Иначе
Изменения = ОбеспечениеВДокументахСервер.УстановитьДействие(
КодДействия,
ЭтотОбъект,
Элементы.ЗаменяющиеТовары.ВыделенныеСтроки);
ЗаполнитьЗначенияСвойств(Результат, Изменения);
Если Изменения.ТаблицаИзменений <> Неопределено Тогда
ПослеЗаполненияОбеспечения(
Изменения.ТаблицаИзменений,
ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия(),
Результат);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция ОбработатьВыборСкладаИСерииНаСервере(ВыбранноеЗначение, ПараметрыФормы, ПараметрыЗаполнения)
Модифицированность = Истина;
Изменения = ОбеспечениеВДокументахСервер.ПриВыбореСклада(
ВыбранноеЗначение,
ЭтотОбъект,
Элементы.ЗаменяющиеТовары.ТекущаяСтрока,
ПараметрыФормы.ЗаполняемыеПоля);
ПослеЗаполненияОбеспечения(Изменения, ПараметрыФормы.Режим, ПараметрыЗаполнения);
ТекстОбработаноСтрок = ОбеспечениеВДокументахСервер.ТекстОбработаноСтрок(Изменения.Количество());
Возврат ТекстОбработаноСтрок;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыДокументаДляДействийОбеспечения(Форма, ВариантОбеспеченияИФлагОбособленно, ДатаОтгрузки)
ПараметрыДокумента = Новый Структура();
ПараметрыДокумента.Вставить("Форма", Форма);
ПараметрыДокумента.Вставить("Коллекция", Форма.Объект.ЗаменяющиеТовары);
ПараметрыДокумента.Вставить("ВариантОбеспеченияИФлагОбособленно", ВариантОбеспеченияИФлагОбособленно);
Возврат ПараметрыДокумента;
КонецФункции
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияНажатиеОбщий()
ПараметрыФормы = ОбеспечениеВДокументахКлиент.ГиперссылкаСостояниеОбеспеченияНажатие(ЭтотОбъект);
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату") Тогда
ПараметрыФормы.ДопустимыеВариантыОбеспечения = ОбеспечениеВДокументахКлиент.ВсеДопустимыеВариантыОбеспечения();
ПараметрыФормы.ДопустимыеВариантыОбеспечения.Удалить(
ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.СоСклада"));
КонецЕсли;
Если ПараметрыФормы.КонтекстИспользования = "ТАБЛИЦА" Тогда
ПараметрыФормы.АдресТаблицыДвижений = АдресТаблицыДвиженийВХранилище();
КонецЕсли;
ОткрытьФорму("Обработка.СостояниеОбеспеченияЗаказов.Форма", ПараметрыФормы, ЭтотОбъект, УникальныйИдентификатор,,,,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, ПоляСтрокой)
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект, ВариантОбеспеченияИФлагОбособленно, Неопределено);
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
КонецПроцедуры
&НаСервере
Процедура ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, ПоляСтрокой, ДатаОтгрузки = Неопределено)
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект, ВариантОбеспеченияИФлагОбособленно, ДатаОтгрузки);
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
КонецПроцедуры
&НаСервере
Процедура ЗаменяющиеТоварыВариантОбеспеченияПриИзмененииНаСервере(ПараметрыЗаполнения)
Изменения = ОбеспечениеВДокументахСервер.ВариантОбеспеченияПриИзменении(
ЭтотОбъект,
Элементы.ЗаменяющиеТовары.ТекущаяСтрока);
Режим = ОбеспечениеВДокументахКлиентСервер.РежимВыборДействияНепосредственно();
ПослеЗаполненияОбеспечения(Изменения, Режим, ПараметрыЗаполнения);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыВариантОбеспеченияПриИзмененииПослеВопроса(Ответ, ДополнительныеПараметры) Экспорт
ПараметрыЗаполнения = ОбеспечениеВДокументахКлиент.ПараметрыОбработкиДатОтгрузкиПослеЗаполненияОбеспечения(Ответ);
ЗаменяющиеТоварыВариантОбеспеченияПриИзмененииНаСервере(ПараметрыЗаполнения);
КонецПроцедуры
&НаСервере
Процедура ЗаменяющиеТоварыОтменитьВыделенныеСтрокиСервер(ВыделенныеСтроки)
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "СкладОбязателен, ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(Объект.ЗаменяющиеТовары, ВыделенныеСтроки),
СтруктураДействий,
Объект.ЗаменяющиеТовары);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.ЗаменяющиеТовары,
ДатаОтгрузкиОбязательна, СкладОбязателен);
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтотОбъект);
Если ПараметрыУказанияСерий.Заменяющие.ИспользоватьСерииНоменклатуры Тогда
ЗаполнитьСтатусыУказанияСерийСервер("Заменяющие");
КонецЕсли;
ОбновитьКолонкуДоступноСервер();
ПриИзмененииСкладаВТабличнойЧастиЗаменяющиеТоварыСервер();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыФормыДокумента()
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект, ВариантОбеспеченияИФлагОбособленно, Неопределено);
ОбеспечениеВДокументахСервер.ЗаполнитьСлужебныеРеквизитыФормыДокумента(ПараметрыДокумента);
КонецПроцедуры
&НаСервере
Процедура ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат)
СтруктураРезультата = ОбеспечениеВДокументахСервер.УстановитьДействиеПослеВопроса(Ответ, Результат, ЭтотОбъект);
ПослеЗаполненияОбеспечения(
СтруктураРезультата.ТаблицаИзменений,
ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия(),
СтруктураРезультата);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеУстановитьДействиеСВопросом(КодДействия)
Результат = ОбеспечениеУстановитьДействие(КодДействия);
ВопросЗадан = ОбеспечениеВДокументахКлиент.ПоказатьВопросЗаполнятьОбеспечениеЦелымиУпаковками(
ЭтотОбъект,
Объект.ЗаменяющиеТовары,
Результат,
"ПослеВопросаЗаполнятьОбеспечениеЦелымиУпаковками");
Если Не ВопросЗадан Тогда
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатой(
ЭтотОбъект,
Объект.ЗаменяющиеТовары,
Результат,
"ПослеВопросаСнятьФлагОтгружатьОднойДатой");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьКолонкуДоступноСервер()
ОбеспечениеВДокументахСервер.ОбновитьКолонкуДоступно(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборСкладаИСерии(ВыбранноеЗначение, ПараметрыФормы) Экспорт
Если Не ОбеспечениеВДокументахКлиент.ЕстьПодобранныеТовары(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеВыбораОбеспечения(
ЭтотОбъект,
ВыбранноеЗначение,
ПараметрыФормы,
"ОбработатьВыборСкладаИСерииПослеВопроса");
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборСкладаИСерииПослеВопроса(Ответ, Параметры) Экспорт
ПараметрыЗаполнения = ОбеспечениеВДокументахКлиент.ПараметрыОбработкиДатОтгрузкиПослеЗаполненияОбеспечения(Ответ);
Оповещение = ОбработатьВыборСкладаИСерииНаСервере(
Параметры.ВыбранноеЗначение,
Параметры.ПараметрыФормы,
ПараметрыЗаполнения);
ТекстОповещения = ОбеспечениеВДокументахКлиент.ТекстОповещенияОбработкиВыборСкладаИСерии(Параметры.ПараметрыФормы.Режим);
ПоказатьОповещениеПользователя(ТекстОповещения, , Оповещение);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииМодифицированностиФормы()
Если ФормаМодифицирована <> Модифицированность Тогда
ФормаМодифицирована = Модифицированность;
ОбеспечениеВДокументахКлиент.НастроитьГиперссылкиСостояниеОбеспечения(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВопросаЗаполнятьОбеспечениеЦелымиУпаковками(Ответ, Результат) Экспорт
ВопросЗадан = ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеВопроса(
ЭтотОбъект,
Объект.ЗаменяющиеТовары,
Результат,
Ответ,
"ПослеВопросаСнятьФлагОтгружатьОднойДатой");
Если Не ВопросЗадан Тогда
ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВопросаСнятьФлагОтгружатьОднойДатой(Ответ, Результат) Экспорт
ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаполненияОбеспечения(Изменения, Режим = Неопределено, ПараметрыЗаполнения = Неопределено)
Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПослеЗаполненияОбеспечения(Объект, Изменения, Режим, ПараметрыЗаполнения);
УстановитьВидимостьЭлементовФормыДатОтгрузки();
ЗаказыСервер.ПересчитатьЗависимыеРеквизитыПослеРазбиенияСтрок(
Изменения, ЗависимыеРеквизитыЗаменяющиеТоварыСтрокой());
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "СкладОбязателен,ДатаОтгрузкиОбязательна");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
КоллекцияНаФорме = ОбеспечениеВДокументахКлиентСервер.КоллекцияНаФорме(
ЭтотОбъект, ДоступныеОстаткиПараметрыВстраивания);
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого Изменение Из Изменения Цикл
ОбрабатываемыеСтроки.Добавить(Изменение.Строка);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
КоллекцияНаФорме,
КэшированныеЗначения);
ОбновитьКолонкуДоступноСервер();
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(
Объект.ЗаменяющиеТовары,
ДатаОтгрузкиОбязательна,
СкладОбязателен);
ПриИзмененииСкладаВТабличнойЧастиЗаменяющиеТоварыСервер();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыЗаполнитьДатуОтгрузки(Команда)
МассивВыделенныхСтрок = Элементы.ЗаменяющиеТовары.ВыделенныеСтроки;
Если МассивВыделенныхСтрок.Количество() > 0 Тогда
ДатаОтгрузки = Объект.ДатаОтгрузки;
Оповещение = Новый ОписаниеОповещения("ЗаменяющиеТоварыЗаполнитьДатуОтгрузкиЗавершение", ЭтотОбъект, Новый Структура("МассивВыделенныхСтрок", МассивВыделенныхСтрок));
ОбщегоНазначенияУТКлиент.ВвестиДатуСКонтролемПустогоЗначения(ДатаОтгрузки, НСтр("ru='Введите дату отгрузки'"), ЧастиДаты.Дата, Оповещение);
Иначе
ТекстПредупреждения = НСтр("ru='В документе не выбраны строки для заполнения. Дата отгрузки не будет заполнена.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыЗаполнитьДатуОтгрузкиЗавершение(ВыбраннаяДата, ДополнительныеПараметры) Экспорт
Если ВыбраннаяДата <> Неопределено И ЗначениеЗаполнено(ВыбраннаяДата) Тогда
ДатаОтгрузки = ВыбраннаяДата;
МассивВыделенныхСтрок = ДополнительныеПараметры.МассивВыделенныхСтрок;
ЗаполнитьДатуОтгрузкиСервер(ДатаОтгрузки, МассивВыделенныхСтрок);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияДатОтгрузки(ДатаОтгрузки, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияРезервирование(Команда)
ОбъектыОснований = Новый Массив();
ОбъектыОснований.Добавить(Объект.Ссылка);
ОписаниеКоманды = Новый Структура();
ОписаниеКоманды.Вставить("ОбъектыОснований", ОбъектыОснований);
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату") Тогда
МинимальныйСтатус = НСтр("ru = 'К выполнению'");
ОбеспечениеКлиент.СообщитьОНеобходимомМинимальномСтатусеДокумента(Истина, МинимальныйСтатус);
ИначеЕсли Не Объект.Проведен Или Модифицированность Тогда
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Резервирование", Истина);
ДополнительныеПараметры.Вставить("ОписаниеКоманды", ОписаниеКоманды);
ТекстВопроса = НСтр("ru = 'Для резервирования под назначение необходимо предварительно провести документ. Выполнить проведение документа и продолжить?'");
ПоказатьВопрос(
Новый ОписаниеОповещения("СоздатьКорректировкуНазначенияЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОбеспечениеВДокументахКлиент.ОткрытьЗаполнениеКорректировкиНазначения(
Истина,
Объект.Ссылка,
ОписаниеКоманды);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияСнятиеРезерва(Команда)
ОбъектыОснований = Новый Массив();
ОбъектыОснований.Добавить(Объект.Ссылка);
ОписаниеКоманды = Новый Структура();
ОписаниеКоманды.Вставить("ОбъектыОснований", ОбъектыОснований);
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.НеСогласована")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаявокНаВозвратТоваровОтКлиентов.КВозврату") Тогда
МинимальныйСтатус = НСтр("ru = 'К выполнению'");
ОбеспечениеКлиент.СообщитьОНеобходимомМинимальномСтатусеДокумента(Ложь, МинимальныйСтатус);
ИначеЕсли Не Объект.Проведен Или Модифицированность Тогда
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Резервирование", Ложь);
ДополнительныеПараметры.Вставить("ОписаниеКоманды", ОписаниеКоманды);
ТекстВопроса = НСтр("ru = 'Для снятия резерва под назначение необходимо предварительно провести документ. Выполнить проведение документа и продолжить?'");
ПоказатьВопрос(
Новый ОписаниеОповещения("СоздатьКорректировкуНазначенияЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОбеспечениеВДокументахКлиент.ОткрытьЗаполнениеКорректировкиНазначения(
Ложь,
Объект.Ссылка,
ОписаниеКоманды);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыВключитьОбособленноеОбеспечение(Команда)
ОбеспечениеУстановитьДействие("ФЛАГ_ОБОСОБЛЕННО");
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыВыключитьОбособленноеОбеспечение(Команда)
ОбеспечениеУстановитьДействие("ФЛАГ_НЕОБОСОБЛЕННО");
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыКОбеспечению(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_КОБЕСПЕЧЕНИЮ");
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыРезервироватьПоМереПоступления(Команда)
ОбеспечениеУстановитьДействие("ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬПОМЕРЕПОСТУПЛЕНИЯ");
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыНеОбеспечивать(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_НЕОБЕСПЕЧИВАТЬ");
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыОтгрузить(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_ОТГРУЗИТЬ");
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыРезервировать(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬ");
КонецПроцедуры
#КонецОбласти
#Область ДатыОтгрузки
&НаСервере
Процедура УстановитьВидимостьЭлементовФормыДатОтгрузки()
Элементы.ЗаменяющиеТоварыДатаОтгрузки.Видимость = Не Объект.НеОтгружатьЧастями
И ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента
И Не Объект.ЭтоЗаказКакСчет;
Элементы.ДатаОтгрузки.Видимость = Объект.НеОтгружатьЧастями;
Элементы.ЗаменяющиеТоварыЗаполнитьДатуОтгрузки.Видимость = Не Объект.НеОтгружатьЧастями;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДатуОтгрузкиСервер(ДатаОтгрузки, МассивВыделенныхСтрок)
ОбеспечениеВДокументахСервер.ЗаполнитьРеквизитВКоллекции(Объект.ЗаменяющиеТовары, "ДатаОтгрузки", ДатаОтгрузки, МассивВыделенныхСтрок);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Товары.ДатаОтгрузки");
КонецПроцедуры
&НаСервере
Процедура НеОтгружатьЧастямиПриИзмененииСервер()
Если Объект.НеОтгружатьЧастями Тогда
Объект.ДатаОтгрузки = ОбеспечениеВДокументахСервер.МаксимальноеЗначениеВКоллекции(Объект.ЗаменяющиеТовары, "ДатаОтгрузки", '00010101');
ОбеспечениеВДокументахСервер.ЗаполнитьРеквизитВКоллекции(Объект.ЗаменяющиеТовары, "ДатаОтгрузки", Объект.ДатаОтгрузки);
КонецЕсли;
УстановитьВидимостьЭлементовФормыДатОтгрузки();
КонецПроцедуры
#КонецОбласти
#Область КонтрольНесогласованныхИзменений
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент)
Если Элемент.Имя = "Дата" Тогда
ДатаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Соглашение" Тогда
СоглашениеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Договор" Тогда
ДоговорПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Валюта" Тогда
ВалютаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЦенаВключаетНДС" Тогда
ЦенаВключаетНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "НалогообложениеНДС" Тогда
НалогообложениеНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Организация" Тогда
ОрганизацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Партнер" Тогда
ПартнерПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Контрагент" Тогда
КонтрагентПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Склад" Тогда
СкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "НеОтгружатьЧастями" Тогда
НеОтгружатьЧастямиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДатаОтгрузки" Тогда
ДатаОтгрузкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ХозяйственнаяОперация" Тогда
ХозяйственнаяОперацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДокументРеализации" Тогда
ДокументРеализацииПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПоступлениеОднойДатой" Тогда
ПоступлениеОднойДатойПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДатаПоступления" Тогда
ДатаПоступленияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДатаСогласования" Тогда
ДатаСогласованияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЧекККМ" Тогда
ЧекККМПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВернутьМногооборотнуюТару" Тогда
ВернутьМногооборотнуюТаруПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТребуетсяЗалогЗаТару" Тогда
ТребуетсяЗалогЗаТаруПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвратПереданнойМногооборотнойТары" Тогда
ВозвратПереданнойМногооборотнойТарыПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвращаемыеТоварыНоменклатура" Тогда
ВозвращаемыеТоварыНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвращаемыеТоварыПорча" Тогда
ВозвращаемыеТоварыПорчаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвращаемыеТоварыНоменклатураОприходование" Тогда
ВозвращаемыеТоварыНоменклатураОприходованиеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвращаемыеТоварыХарактеристика" Тогда
ВозвращаемыеТоварыХарактеристикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвращаемыеТоварыКоличествоУпаковок" Тогда
ВозвращаемыеТоварыКоличествоУпаковокПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвращаемыеТоварыУпаковка" Тогда
ВозвращаемыеТоварыУпаковкаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвращаемыеТоварыВидЦены" Тогда
ВозвращаемыеТоварыВидЦеныПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвращаемыеТоварыЦена" Тогда
ВозвращаемыеТоварыЦенаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвращаемыеТоварыСтавкаНДС" Тогда
ВозвращаемыеТоварыСтавкаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвращаемыеТоварыСумма" Тогда
ВозвращаемыеТоварыСуммаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТоварыНоменклатура" Тогда
ЗаменяющиеТоварыНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТоварыХарактеристика" Тогда
ЗаменяющиеТоварыХарактеристикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТоварыКоличествоУпаковок" Тогда
ЗаменяющиеТоварыКоличествоУпаковокПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТоварыУпаковка" Тогда
ЗаменяющиеТоварыУпаковкаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТоварыОбособленно" Тогда
ЗаменяющиеТоварыОбособленноПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТоварыВидЦены" Тогда
ЗаменяющиеТоварыВидЦеныПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТоварыЦена" Тогда
ЗаменяющиеТоварыЦенаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТоварыПодразделение" Тогда
ЗаменяющиеТоварыПодразделениеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТоварыСтавкаНДС" Тогда
ЗаменяющиеТоварыСтавкаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТоварыПроцентРучнойСкидки" Тогда
ЗаменяющиеТоварыПроцентРучнойСкидкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТоварыСуммаРучнойСкидки" Тогда
ЗаменяющиеТоварыСуммаРучнойСкидкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТоварыСумма" Тогда
ЗаменяющиеТоварыСуммаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТоварыСуммаНДС" Тогда
ЗаменяющиеТоварыСуммаНДСПриИзменении(Элемент);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ)
Если Элемент.Имя = "ВозвращаемыеТовары" Тогда
ВозвращаемыеТоварыПередУдалением(Элемент, Отказ);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТовары" Тогда
ЗаменяющиеТоварыПередУдалением(Элемент, Отказ);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Если Элемент.Имя = "ВозвращаемыеТовары" Тогда
ВозвращаемыеТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр);
ИначеЕсли Элемент.Имя = "ЗаменяющиеТовары" Тогда
ЗаменяющиеТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Нажатие_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Нажатие.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломИзменения.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередУдалением_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередУдалением.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломДобавления_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ, Копирование, Родитель, Группа)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломДобавления.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса()
ИзменитьДокументСервер();
ОбщегоНазначенияУТКлиент.ПослеИзмененияРеквизитаЗависящегоОтСтатуса(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПодготовитьЗаполнитьУстановитьВидимостьСерий()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаявкаНаВозвратТоваровОтКлиента));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.Заменяющие);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.Возвращаемые);
УстановитьВидимостьЭлементовСерий();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораДатаОтгрузки()
МаксДатаАванса = ПродажиСервер.МаксимальнаяДатаАванса(Объект.ЭтапыГрафикаОплаты);
ДатаОтгрузкиСписокВыбора = Элементы.ДатаОтгрузки.СписокВыбора;
Если ЗначениеЗаполнено(МаксДатаАванса) Тогда
ПредставлениеМаксДатаАванса = "%МаксДатаАванса%";
ПредставлениеМаксДатаАванса = СтрЗаменить(ПредставлениеМаксДатаАванса, "%МаксДатаАванса%", Формат(МаксДатаАванса,"ДЛФ=D"));
ДатаОтгрузкиСписокВыбора.Очистить();
ДатаОтгрузкиСписокВыбора.Добавить(МаксДатаАванса, ПредставлениеМаксДатаАванса);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Порча
&НаСервере
Функция ПроверитьОтключитьНастроитьФормуПоПорче()
ЕстьСтрокиСПорчей =
Объект.ВозвращаемыеТовары.НайтиСтроки(Новый Структура("НоменклатураОприходование", Справочники.Номенклатура.ПустаяСсылка())).Количество()
<> Объект.ВозвращаемыеТовары.Количество() ;
Если Не ЕстьСтрокиСПорчей Тогда
Объект.ВозвратПорчи = Ложь;
НастроитьЭлементыФормы();
КонецЕсли;
Возврат ЕстьСтрокиСПорчей;
КонецФункции
&НаСервере
Процедура ОчиститьОтключитьНастроитьФормуПоПорче()
Объект.ВозвратПорчи = Ложь;
Для Каждого СтрТабл Из Объект.ВозвращаемыеТовары Цикл
СтрТабл.Порча = Ложь;
СтрТабл.НоменклатураОприходование = Справочники.Номенклатура.ПустаяСсылка();
СтрТабл.ХарактеристикаОприходование = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
КонецЦикла;
Если ПараметрыУказанияСерий.Возвращаемые.ИспользоватьСерииНоменклатуры Тогда
Для Каждого СтрТабл Из Объект.ВозвращаемыеСерии Цикл
СтрТабл.НоменклатураОприходование = Справочники.Номенклатура.ПустаяСсылка();
СтрТабл.ХарактеристикаОприходование = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
КонецЦикла;
КонецЕсли;
НастроитьЭлементыФормы();
КонецПроцедуры
&НаКлиенте
Процедура ВозвращаемыеТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Если Копирование Тогда
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтаФорма, "ВозвращаемыеТовары", Отказ, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаменяющиеТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Если Копирование Тогда
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтаФорма, "ЗаменяющиеТовары", Отказ, Истина);
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СоставНабораВозвращаемыеТовары(Команда)
ВыбраннаяСтрока = Элементы.ВозвращаемыеТовары.ТекущаяСтрока;
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = Объект.ВозвращаемыеТовары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если Не ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПоказатьПредупреждение(,НСтр("ru = 'Открытие состава набора возможно только для набора.'"));
Возврат;
КонецЕсли;
ПараметрыКомплекта = Новый Структура;
ПараметрыКомплекта.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыКомплекта.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыКомплекта.Вставить("ДокументРеализации", ТекущаяСтрока.ДокументРеализации);
ПараметрыКомплекта.Вставить("КолонкиНабора", КолонкиНабораВозвращаемыеТовары(ЭтаФорма));
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыКомплекта, "ВозвращаемыеТовары");
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("ДокументРеализации", ТекущаяСтрока.ДокументРеализации);
ПараметрыОткрытия.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОткрытия.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ОтборПоТипуНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
Если ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
ПараметрыОткрытия.Вставить("ВидЦены", ЭтаФорма.ВидЦеныЧекаККМ);
ПараметрыОткрытия.Вставить("ЗапретРедактированияЦены", Истина);
КонецЕсли;
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура СоставНабораЗаменяющиеТовары(Команда)
ВыбраннаяСтрока = Элементы.ЗаменяющиеТовары.ТекущаяСтрока;
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = Объект.ЗаменяющиеТовары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если Не ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПоказатьПредупреждение(,НСтр("ru = 'Открытие состава набора возможно только для набора.'"));
Возврат;
КонецЕсли;
ПараметрыКомплекта = Новый Структура;
ПараметрыКомплекта.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыКомплекта.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыКомплекта.Вставить("КолонкиНабора", КолонкиНабораЗаменяющиеТовары(ЭтаФорма));
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыКомплекта, "ЗаменяющиеТовары");
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОткрытия.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ИмяТЧ", "ЗаменяющиеТовары");
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера")
Или Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтХранителя") Тогда
ПараметрыОткрытия.Вставить("ОтборПоТипуНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ЧекККМ) Тогда
ПараметрыОткрытия.Вставить("ВидЦены", ЭтаФорма.ВидЦеныЧекаККМ);
ПараметрыОткрытия.Вставить("ЗапретРедактированияЦены", Истина);
КонецЕсли;
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДСПродажи()
ПараметрыЗаполнения = Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
#КонецОбласти
#Область Наборы
&НаСервере
Функция ДополнитьДоПолногоНабора(ИмяТЧ)
ТабличнаяЧасть = Объект[ИмяТЧ];
ВыделенныеСтроки = Элементы[ИмяТЧ].ВыделенныеСтроки;
МассивСтрок = Новый Массив;
Для Каждого ТекСтрока Из ВыделенныеСтроки Цикл
СтрокаТаблицы = ТабличнаяЧасть.НайтиПоИдентификатору(ТекСтрока);
МассивСтрок.Добавить(СтрокаТаблицы);
КонецЦикла;
НаборыВызовСервера.ДополнитьДоПолногоНабора(ТабличнаяЧасть, МассивСтрок);
Результат = Новый Массив;
Для Каждого СтрокаТЧ Из МассивСтрок Цикл
Результат.Добавить(СтрокаТЧ.ПолучитьИдентификатор());
КонецЦикла;
Возврат Результат;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция КолонкиНабораВозвращаемыеТовары(Форма)
Колонки = Новый Массив;
Колонки.Добавить("Номенклатура");
Колонки.Добавить("Характеристика");
Колонки.Добавить("Цена");
Колонки.Добавить("ВидЦены");
Колонки.Добавить("Упаковка");
Колонки.Добавить("Количество");
Колонки.Добавить("КоличествоУпаковок");
Колонки.Добавить("Отменено");
Колонки.Добавить("СтавкаНДС");
Колонки.Добавить("СуммаНДС");
Колонки.Добавить("СуммаСНДС");
Колонки.Добавить("Сумма");
Колонки.Добавить("ДокументРеализации");
Возврат Колонки;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция КолонкиНабораЗаменяющиеТовары(Форма)
Колонки = Новый Массив;
Колонки.Добавить("Номенклатура");
Колонки.Добавить("Характеристика");
Колонки.Добавить("Цена");
Колонки.Добавить("ВидЦены");
Колонки.Добавить("Упаковка");
Колонки.Добавить("Количество");
Колонки.Добавить("КоличествоУпаковок");
Если Форма.Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию") Тогда
Если Форма.ИспользоватьРучныеСкидкиВПродажах Тогда
Колонки.Добавить("ПроцентРучнойСкидки");
Колонки.Добавить("СуммаРучнойСкидки");
КонецЕсли;
Если Форма.ИспользоватьАвтоматическиеСкидкиВПродажах Тогда
Колонки.Добавить("ПроцентАвтоматическойСкидки");
Колонки.Добавить("СуммаАвтоматическойСкидки");
КонецЕсли;
КонецЕсли;
Колонки.Добавить("Отменено");
Если Форма.ИспользоватьПричиныОтменыЗаказовКлиентов Тогда
Колонки.Добавить("ПричинаОтмены");
КонецЕсли;
Колонки.Добавить("СтавкаНДС");
Колонки.Добавить("СуммаНДС");
Колонки.Добавить("СуммаСНДС");
Колонки.Добавить("Сумма");
Возврат Колонки;
КонецФункции
&НаКлиенте
Процедура ПриУдаленииКомплектующих(Действие, ДополнительныйПараметр) Экспорт
Если НаборыКлиент.ДействиеРедактироватьНабор(Действие) Тогда
НаборыКлиент.ПриУдаленииКомплектующих(ЭтаФорма, ДополнительныйПараметр.ИмяТЧ, ДополнительныйПараметр);
ИначеЕсли НаборыКлиент.ДействиеУдалитьВесьНабор(Действие) Тогда
ПриУдаленииКомплектующихНаСервере(ДополнительныйПараметр.ИмяТЧ, ДополнительныйПараметр);
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПриУдаленииКомплектующихНаСервере(ИмяТЧ, ДополнительныйПараметр)
НаборыСервер.ПриУдаленииКомплектующих(ЭтаФорма, ИмяТЧ, ДополнительныйПараметр);
КонецПроцедуры
&НаСервере
Функция АдресНабораВоВременномХранилище(Параметры, ИмяТЧ)
Возврат НаборыСервер.АдресНабораВоВременномХранилище(ЭтаФорма, Параметры, ИмяТЧ);
КонецФункции
&НаСервере
Процедура ПриОкончанииРедактированияНабора(АдресВоВременномХранилище)
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
Данные = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
ПараметрыДанных = Новый Структура;
ПараметрыДанных.Вставить("Данные", Данные);
Если Данные.ИмяТЧ = "ЗаменяющиеТовары" Тогда
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействийСДобавленнымиСтроками,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыЗаменяющиеТовары());
ПараметрыДанных.Вставить("СтруктураДействийСИзмененнымиСтроками", СтруктураДействийСИзмененнымиСтроками);
ПараметрыДанных.Вставить("СтруктураДействийСДобавленнымиСтроками", СтруктураДействийСДобавленнымиСтроками);
ПараметрыДанных.Вставить("КолонкиНабора", КолонкиНабораЗаменяющиеТовары(ЭтаФорма));
НаборыСервер.ПриОкончанииРедактированияНабора(ЭтаФорма, "ЗаменяющиеТовары", ПараметрыДанных);
ОбновитьКолонкуДоступноСервер();
Иначе
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвращаемыеТовары());
ПараметрыДанных.Вставить("СтруктураДействийСИзмененнымиСтроками", СтруктураДействийСИзмененнымиСтроками);
ПараметрыДанных.Вставить("СтруктураДействийСДобавленнымиСтроками", СтруктураДействийСДобавленнымиСтроками);
ПараметрыДанных.Вставить("КолонкиНабора", КолонкиНабораВозвращаемыеТовары(ЭтаФорма));
НаборыСервер.ПриОкончанииРедактированияНабора(ЭтаФорма, "ВозвращаемыеТовары", ПараметрыДанных);
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура РасчетыНажатие(Элемент, СтандартнаяОбработка)
ВзаиморасчетыКлиент.РасчетыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура УстановитьВидимостьПоляПартнер()
ВидимостьКЛ = Элементы.СчитатьКартуЛояльностиКлиент.Видимость;
Если ВидимостьКЛ Тогда
ВидимостьКЛ = ПолучитьФункциональнуюОпцию("ИспользоватьКартыЛояльности");
КонецЕсли;
Элементы.ПартнерБезКЛ.Видимость = НЕ ВидимостьКЛ;
Элементы.Партнер.Видимость = ВидимостьКЛ;
КонецПроцедуры
&НаКлиенте
Процедура ОсобыеУсловияПеревозкиПриИзменении(Элемент)
ОсобыеУсловияПеревозкиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьИнформациюПоДоставкеКонтактами(Команда)
ДополнитьИнформациюПоДоставкеКонтактамиСервер();
КонецПроцедуры
&НаСервере
Процедура ОсобыеУсловияПеревозкиПриИзмененииСервер()
ДоставкаТоваров.ОсобыеУсловияПеревозкиПриИзменении(Элементы, Объект);
КонецПроцедуры
&НаСервере
Процедура ДополнитьИнформациюПоДоставкеКонтактамиСервер()
ДоставкаТоваров.ДополнитьИнформациюПоДоставкеКонтактами(Объект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьРеализацииИЦеныСервер()
ЗаполнитьРеализацииИЦеныНаСервере();
РассчитатьИтоговыеПоказателиЗаявкиНаВозврат(ЭтаФорма);
ОбновитьИнформациюПоРеализациям();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности()
Элементы.ГруппаТоварыБонусныеБаллы.Видимость = ИспользоватьБонусныеПрограммыЛояльности;
Элементы.ЗаменяющиеТоварыСуммаБонусныхБалловКСписаниюВВалюте.Видимость = ИспользоватьБонусныеПрограммыЛояльности;
Элементы.ЗаменяющиеТоварыСуммаНачисленныхБонусныхБалловВВалюте.Видимость = ИспользоватьБонусныеПрограммыЛояльности;
КонецПроцедуры
#КонецОбласти