#Область ОписаниеПеременных
&НаКлиенте
Перем ФормаМодифицирована;
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ПараметрыВстраивания = Документы.ЗаказКлиента.ДоступныеОстаткиПараметрыВстраивания();
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриСозданииНаСервере(ЭтотОбъект, ПараметрыВстраивания);
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
ИспользоватьДоговорыСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
ИспользоватьПодразделения = ПолучитьФункциональнуюОпцию("ИспользоватьПодразделения");
ИспользоватьРучныеСкидкиВПродажах = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
ИспользоватьАвтоматическиеСкидкиВПродажах = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
ИспользоватьОграниченияРучныхСкидок = ПолучитьФункциональнуюОпцию("ИспользоватьОграниченияРучныхСкидокВПродажахПоПользователям")
Или ПолучитьФункциональнуюОпцию("ИспользоватьОграниченияРучныхСкидокВПродажахПоСоглашениям");
ИспользоватьПричиныОтменыЗаказовКлиентов = ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовКлиентов");
ИспользоватьУпрощеннуюСхемуОплатыВПродажах = ПолучитьФункциональнуюОпцию("ИспользоватьУпрощеннуюСхемуОплатыВПродажах");
ИспользоватьСкладыВТабличнойЧастиДокументовПродажи = ПолучитьФункциональнуюОпцию("ИспользоватьСкладыВТабличнойЧастиДокументовПродажи");
ИспользоватьКартыЛояльности = ПолучитьФункциональнуюОпцию("ИспользоватьКартыЛояльности");
ИспользоватьБонусныеПрограммыЛояльности = ИспользоватьБонусныеПрограммыЛояльности(Объект.КартаЛояльности);
УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности();
ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();
ПараметрыВыбораРеквизитов = ЭтапыОплатыСервер.ПараметрыВыбораРеквизитовОплаты(Метаданные.Документы.ЗаказКлиента);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
ЗаполнитьУстановитьРеквизитыДоставкиСервер("Партнер");
КонецЕсли;
КонецЕсли;
Если Не ИспользоватьСкладыВТабличнойЧастиДокументовПродажи И Не ИспользоватьПодразделения Тогда
Элементы.ТоварыГруппаОтправитель.Видимость = Ложь;
ИначеЕсли Не СкладГруппа Тогда
Элементы.ТоварыГруппаОтправитель.Заголовок = НСтр("ru = 'Подразделение-отправитель'");
КонецЕсли;
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ДокументОснование", "Видимость", ЗначениеЗаполнено(Объект.ДокументОснование));
ИспользоватьДоговоры =
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала
Или (КомиссионныеПродажи25 И Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
ПродажиСервер.УстановитьОтметкуНезаполненногоДоговора(Элементы, "Договор", ИспользоватьДоговоры);
ПродажиСервер.УстановитьРежимВыбораГруппЭлементовСклада(Элементы.Склад);
ПравоНаЧтениеВидаЦены = ПравоДоступа("Просмотр", Метаданные.Документы.ЗаказКлиента.ТабличныеЧасти.Товары.Реквизиты.ВидЦены);
Элементы.ТоварыВидЦены.БыстрыйВыбор = Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен");
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения);
Элементы.ДекорацияДатаОтгрузки.Видимость = Не ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента И Объект.НеОтгружатьЧастями;
Элементы.ТоварыГруппаОтмена.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовКлиентов");
Элементы.ТоварыОтмененоПричиныОтменыНеИспользуются.Видимость = Не ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовКлиентов");
Перечисления.СтатусыЗаказовКлиентов.ЗаполнитьСписокВыбора(Элементы.Статус.СписокВыбора, Объект.Статус);
Элементы.ЗакрытьЗаказ.Доступность = ПравоДоступа("Изменение",Метаданные.Документы.ЗаказКлиента);
Элементы.ГруппаТоварыИнформацияОСкидках.Доступность = ПравоДоступа("Просмотр", Метаданные.Справочники.СкидкиНаценки);
Элементы.ТоварыНазначитьАвтоматическиеСкидки.Доступность = ПравоДоступа("Просмотр", Метаданные.Справочники.СкидкиНаценки);
Элементы.ТоварыОтменитьНепоставленныеСтроки.Видимость = Не Объект.ЭтоЗаказКакСчет;
УстановитьДоступностьКомандБуфераОбмена();
ЭлементыДляЗаполнения = Новый Массив;
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиС);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиПо);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиС1);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиПо1);
ДоставкаТоваровКлиентСервер.ЗаполнитьСписокВыбораПоляВремени(ЭлементыДляЗаполнения);
ПодготовитьЗаполнитьУстановитьВидимостьСборкиИДоставки();
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтаФорма);
ОповеститьОСозданииОбъектаРасчетов = Параметры.ОповеститьОСозданииОбъектаРасчетов;
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтаФорма);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументССылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
ПараметрыПроцедуры = Новый Структура("ВариантОтображения", "Однострочный");
СПАРКРиски.ПриСозданииНаСервере(
ЭтотОбъект,
Неопределено,
Объект.Контрагент,
Перечисления.ЮрФизЛицо.ВидКонтрагентаСПАРКРиски(Объект.Контрагент),
ПараметрыПроцедуры);
ПараметрыФормыДокумента = СопоставлениеНоменклатурыКонтрагентов.НовыеПараметрыПриСозданииФормыДокумента();
ПараметрыФормыДокумента.ИмяРеквизитаОрганизация = "Организация";
ПараметрыФормыДокумента.ИмяРеквизитаКонтрагент = "Контрагент";
ПараметрыФормыДокумента.ПредставлениеУчитыватьНоменклатуруВладельца = НСтр("ru = 'Учитывать номенклатуру клиента'");
ПараметрыФормыДокумента.ИмяЭлементаНоменклатураКонтрагента = Элементы.ТоварыНоменклатураПартнера.Имя;
ПараметрыФормыДокумента.ВариантУказанияНоменклатурыПоУмолчанию =
СопоставлениеНоменклатурыКонтрагентовКлиентСервер.ВариантУказанияНоменклатураОрганизации();
СопоставлениеНоменклатурыКонтрагентов.ПриСозданииФормыДокумента(ЭтотОбъект, ПараметрыФормыДокумента);
ПараметрыФормыДокумента = ДокументыEDIИнтеграция.ПараметрыПриСозданииФормыДокумента();
ПараметрыФормыДокумента.ФормаДокумента = ЭтотОбъект;
ПараметрыФормыДокумента.МестоРазмещенияКоманд = "ПодменюEDI";
НастройкиФормы = ПараметрыФормыДокумента.НастройкиФормы;
НастройкиФормы.ИмяРеквизитаОрганизация = "Организация";
НастройкиФормы.ИмяРеквизитаКонтрагент = "Контрагент";
НастройкиФормы.ИмяРеквизитаМенеджер = "Менеджер";
НастройкиФормы.ИмяГруппыФормыПанельСостояния = "ГруппаПанельСостоянияEDI";
НастройкиФормы.ИмяГруппыФормыПанельПротоколаВзаимодействия = "ГруппаПанельПротоколаВзаимодействия";
ДокументыEDIИнтеграция.ПриСозданииНаСервере(ПараметрыФормыДокумента);
EDIПриСозданииНаСервере(Отказ, СтандартнаяОбработка);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
СервисДоставки.ПриСозданииНаСервере(ЭтаФорма);
ЭлектронноеАктированиеЕИСУТ.УстановкаВидимостиГруппыГосконтракта(ЭтотОбъект, Истина);
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПараметрыВстраивания = Документы.ЗаказКлиента.ДоступныеОстаткиПараметрыВстраивания();
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВстраивания);
ПриЧтенииСозданииНаСервере();
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
ДокументыEDIИнтеграция.ПриЧтенииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество,Склад,ДатаОтгрузки",
Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение", ЭтотОбъект, ДополнительныеПараметры));
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение(Результат, ДополнительныеПараметры) Экспорт
Отказ = Ложь;
ОперацииПередачи = ОперацииПередачиТоваров();
Если ИспользоватьАвтоматическиеСкидкиВПродажах
И ОперацииПередачи.Найти(Объект.ХозяйственнаяОперация) = Неопределено Тогда
Если Не Объект.СкидкиРассчитаны И СкидкиИзменились() Тогда
ПрименитьИзмененияСкидокНаценокНаКлиенте(Отказ);
Иначе
Объект.СкидкиРассчитаны = Истина;
КонецЕсли;
КонецЕсли;
Если Не Объект.НеОтгружатьЧастями Тогда
ЭтапыОплатыКлиент.ПредложитьЗаполнитьГрафикОплатПоУмолчанию(
ЭтотОбъект,
Новый ОписаниеОповещения(
"ПередЗаписьюПредложитьЗаполнитьГрафикОплатПоУмолчаниюЗавершение",
ЭтотОбъект,
ДополнительныеПараметры),
Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
КонецЕсли;
ПередЗаписьюНаКлиентеСервер();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Если Не Отказ Тогда
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьЗаполнитьГрафикОплатПоУмолчаниюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
Объект.ЭтапыГрафикаОплаты.Очистить();
КонецЕсли;
ПередЗаписьюНаКлиентеСервер();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаКлиентеСервер()
ВзаиморасчетыВызовСервера.ФормаПередЗаписьюНаКлиентеСервер(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
ЭлектронноеАктированиеЕИСУТ.ПередЗаписьюНаСервереДокумент(ЭтаФорма, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
УстановитьДоступностьЭлементовПоСтатусуСервер();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ОбновитьДубликатыЗависимыхРеквизитов();
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ОбеспечениеВДокументахСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
УстановитьВидимостьОбеспечения();
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект.ДополнительныеСвойства);
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
ИнициироватьПолучениеДокументовНаОсновании();
СПАРКРиски.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ДополнительноеУсловиеПроверки = ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента")
И ПравоДоступа("Чтение", Метаданные.РегистрыНакопления.РасчетыСКлиентами)
И Не Объект.ЭтоЗаказКакСчет;
СостоянияДокументов.ПослеЗаписиНаСервере(
ЭтотОбъект,
ПараметрыЗаписи,,,
ДополнительноеУсловиеПроверки);
Если СостоянияДокументов.ПроверкаЗаданияКОтражениюСостоянияЗаказовНеЗапущена(ЭтотОбъект) Тогда
ОбновитьСостояниеСервер();
КонецЕсли;
РазблокироватьДанныеФормыДляРедактирования();
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ФормаМодифицирована = Неопределено;
Подключаемый_ПриИзмененииМодифицированностиФормы();
ПараметрыЗаписи.Вставить("Сделка", Объект.Сделка);
Оповестить("Запись_ЗаказКлиента", ПараметрыЗаписи, Объект.Ссылка);
ВзаиморасчетыКлиент.ФормаПослеЗаписи(ЭтаФорма);
ОбеспечениеВДокументахКлиент.ПослеЗаписи(ЭтотОбъект, "Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов");
ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаДокумента(ЭтаФорма, ПараметрыЗаписи);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
Если ПараметрыЗаписи.Свойство("СозданиеКорректировки") Тогда
ДополнительныеПараметры = ПараметрыЗаписи.СозданиеКорректировки;
Если Объект.Проведен Тогда
ОбъектыОснований = Новый Массив();
ОбъектыОснований.Добавить(Объект.Ссылка);
ДополнительныеПараметры.ОписаниеКоманды.Вставить("ОбъектыОснований", ОбъектыОснований);
ДополнительныеПараметры.ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОбеспечениеВДокументахКлиент.ОткрытьЗаполнениеКорректировкиНазначения(
ДополнительныеПараметры.Резервирование,
Объект.Ссылка,
ДополнительныеПараметры.ОписаниеКоманды);
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
ДокументыEDIИнтеграцияКлиент.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
ПодключитьОбработчикОжиданияДанныеДокументовНаОсновании();
СостоянияДокументовКлиент.ПослеЗаписи(ЭтотОбъект, "Подключаемый_ПроверитьЗаданияКОтражениюСостоянияЗаказов");
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
Если ВзаиморасчетыКлиент.НуженВызовОбработкиОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ЗачтенаОплатаСервер(ИмяСобытия, Параметр, Источник);
КонецЕсли;
Если ИмяСобытия = "ОбновитьДокументИБПослеЗаполнения" И Параметр.Найти(Объект.Ссылка) <> Неопределено Тогда
ЭтаФорма.Прочитать();
ИначеЕсли ИмяСобытия = "ОбновитьДокументИБПослеЗаполненияИзФайла" И Параметр.Найти(Объект.Ссылка) <> Неопределено Тогда
ПриЧтенииСозданииНаСервере();
КонецЕсли;
Если ИмяСобытия = "СчитанаКартаЛояльности"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
СчитанаКартаЛояльности(Новый ОписаниеОповещения("ОбработкаОповещенияЗавершение", ЭтотОбъект, Новый Структура("ИмяСобытия, Параметр", ИмяСобытия, Параметр)), Параметр.КартаЛояльности);
Возврат;
КонецЕсли;
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
СПАРКРискиКлиент.ОбработкаОповещения(ЭтотОбъект, Неопределено, ИмяСобытия, Параметр, Источник);
ОбработкаОповещенияФрагмент(ИмяСобытия, Параметр);
ДокументыEDIИнтеграцияКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
Если ИмяСобытия = "Запись_АктВыполненныхРабот"
Или ИмяСобытия = "Запись_ПриходныйКассовыйОрдер"
Или ИмяСобытия = "Запись_РеализацияТоваровУслуг"
Или ИмяСобытия = "Запись_ПередачаТоваровХранителю" Тогда
ИнициироватьПолучениеДокументовНаОсновании();
ПодключитьОбработчикОжиданияДанныеДокументовНаОсновании();
КонецЕсли;
Если ИмяСобытия = "ПриИзмененииДоговора"
И Источник = ЭтотОбъект Тогда
Модифицированность = Истина;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элементы[Параметр]);
Иначе
ДоговорПриИзменении(Элементы[Параметр]);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещенияЗавершение(Результат, ДополнительныеПараметры) Экспорт
ИмяСобытия = ДополнительныеПараметры.ИмяСобытия;
Параметр = ДополнительныеПараметры.Параметр;
ОбработкаОповещенияФрагмент(ИмяСобытия, Параметр);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещенияФрагмент(Знач ИмяСобытия, Знач Параметр)
Перем АдресНабораВоВременномХранилище, ПараметрыНабора, ПараметрыОткрытия;
Если ИмяСобытия = "ПолученыСообщения"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПолученыСообщения(Параметр.Сообщения);
КонецЕсли;
Если ИмяСобытия = "ИзмененРеквизитЗависящийОтСтатуса"
И Параметр.УникальныйИдентификатор = УникальныйИдентификатор Тогда
Если Объект.Согласован Тогда
Объект.Согласован = Ложь;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса", 0.1, Истина);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
Если ИмяСобытия = "ДобавлениеПартнераВСегмент"
ИЛИ ИмяСобытия = "УдалениеПартнераИзСегмента" Тогда
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
КонецЕсли;
Если ИмяСобытия = "Закрытие_РедактированиеКомплекта"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПриОкончанииРедактированияНабора(Параметр.АдресВоВременномХранилище);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
КонецЕсли;
Если ИмяСобытия = "РедактироватьНабор"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПараметрыНабора = Новый Структура;
ПараметрыНабора.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыНабора.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
ПараметрыНабора.Вставить("КолонкиНабора", КолонкиНабора(ЭтаФорма));
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыНабора);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОткрытия.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
Если Не РедактированиеРеквизитовEDIКлиентСервер.РеквизитДоступенДляРедактирования(ЭтотОбъект, "Товары.ПоставщикНоменклатура") Тогда
ПараметрыОткрытия.Вставить("ТолькоПросмотр", Истина);
КонецЕсли;
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииМодифицированностиФормы", 1);
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
СПАРКРискиКлиент.ПриОткрытии(ЭтотОбъект, Неопределено);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
ДокументыEDIИнтеграцияКлиент.ПриОткрытии(ЭтотОбъект);
ПодключитьОбработчикОжиданияПолучениеПеревозчиков();
ПодключитьОбработчикОжиданияДанныеДокументовНаОсновании();
КонецПроцедуры
&НаСервере
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
СкрыватьОтмененныеСтроки = Настройки.Получить("СкрыватьОтмененныеСтроки");
Если СкрыватьОтмененныеСтроки Тогда
Элементы.Товары.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.Товары.ОтборСтрок = Неопределено;
КонецЕсли;
Элементы.ТоварыСкрыватьОтмененныеСтроки.Пометка = СкрыватьОтмененныеСтроки;
Если НЕ Объект.Ссылка.Пустая() ИЛИ НЕ ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента Тогда
Настройки.Удалить("Объект.НеОтгружатьЧастями");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
УстановитьВидимостьЭлементовФормыДатОтгрузки();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(
Истина, "Документ.ЗаказКлиента.Форма.ФормаДокумента.Событие.ОбработкаВыбора");
Если ИсточникВыбора.ИмяФормы = "Обработка.СостояниеОбеспеченияЗаказов.Форма.Форма" Тогда
АдресТаблицыДвижений = ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(
ВыбранноеЗначение.КодДействия,
ВыбранноеЗначение.АдресАналитик,
ВыбранноеЗначение.ПараметрыЗаполнения);
ВыполнитьОбработкуОповещения(ВыбранноеЗначение.ВыполняемоеОповещение, АдресТаблицыДвижений);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Документ.ЗаказКлиента.Форма.РеквизитыПечати" Тогда
Если ВыбранноеЗначение <> Неопределено Тогда
Модифицированность = Истина;
ЗаполнитьУстановитьРеквизитыДоставки = Объект.Грузополучатель <> ВыбранноеЗначение.Грузополучатель;
ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение);
Если ЗаполнитьУстановитьРеквизитыДоставки Тогда
ЗаполнитьУстановитьРеквизитыДоставкиСервер("Грузополучатель");
КонецЕсли;
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(ВыбранноеЗначение.АдресМногооборотнойТарыВХранилище);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.СтруктураПредприятия.Форма.ФормаВыбора" Тогда
ПродажиКлиент.ОбработкаВыбораПодразделения(Объект.Товары, Элементы.Товары.ВыделенныеСтроки, ВыбранноеЗначение);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
ТоварыСерияПересчитатьЦены();
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия" Тогда
СкорректироватьСтрокиЗаказа(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.ФизическиеЛица.Форма.ФормаСписка" Тогда
Объект[ТекущийЭлемент.Имя] = ВыбранноеЗначение;
КонецЕсли;
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
Если Не ЗавершениеРаботы
И ЗначениеЗаполнено(Объект.Ссылка)
И ОповеститьОСозданииОбъектаРасчетов Тогда
ВзаиморасчетыКлиент.ФормаПриЗакрытии(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
СопоставлениеНоменклатурыКонтрагентов.ПриЗаписиНаСервереФормыДокумента(ЭтаФорма, ТекущийОбъект, Отказ);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно" Тогда
Если Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
ЗаполнитьСписокВыбораНалогообложенияНДСПродажи();
КонецЕсли;
ВзаиморасчетыКлиент.ОбновитьТекстГиперссылкиЭтапыОплаты(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыВыбораСоглашения = ПродажиКлиент.ПараметрыНачалаВыбораСоглашенияСКлиентом();
ПараметрыВыбораСоглашения.Элемент = Элемент;
ПараметрыВыбораСоглашения.Партнер = Объект.Партнер;
ПараметрыВыбораСоглашения.Документ = Объект.Соглашение;
ПараметрыВыбораСоглашения.ДатаДокумента = Объект.Дата;
ПараметрыВыбораСоглашения.ДанныеФормыСтруктура = Объект;
Если Не РедактированиеРеквизитовEDIКлиентСервер.РеквизитДоступенДляРедактирования(ЭтотОбъект, "Поставщик") Тогда
ПараметрыВыбораСоглашения.Организация = Объект.Организация;
КонецЕсли;
Если Не РедактированиеРеквизитовEDIКлиентСервер.РеквизитДоступенДляРедактирования(ЭтотОбъект, "Покупатель") Тогда
ПараметрыВыбораСоглашения.Контрагент = Объект.Контрагент;
КонецЕсли;
ПродажиКлиент.НачалоВыбораСоглашенияСКлиентом(ПараметрыВыбораСоглашения, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорСоздание(Элемент, СтандартнаяОбработка)
ПродажиКлиент.ОткрытьФормуСозданияДоговора(ЭтотОбъект, Элемент, "Объект.Договор", Объект.Партнер, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ПараметрыДоговора = ПараметрыДоговора(Объект.Договор, Объект.ХозяйственнаяОперация);
Если ПараметрыДоговора.ПоНовойКомиссии И ЗначениеЗаполнено(ПараметрыДоговора.УчетныйВидЦены) Тогда
Оповещение = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДоговора(Объект, Оповещение);
Иначе
ДоговорПриИзмененииСервер();
ДокументыEDIИнтеграцияКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
ПредложениеЗаполнитьПоГосконтрактуЕИС();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если НЕ РезультатВопроса = КодВозвратаДиалога.Отмена И РезультатВопроса Тогда
ВидЦеныДоговора = УчетныйВидЦеныДоговора(Объект.Договор);
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВиду(Объект, ВидЦеныДоговора) Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(Истина,ТекстОшибки);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
КонецЕсли;
ДоговорПриИзмененииСервер();
ДокументыEDIИнтеграцияКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииСервер()
ЗаполнитьПараметрыСвязиВидаЦенИПризнакЦенаВключаетНДС();
ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчет, Объект.БанковскийСчетКонтрагента);
ЗаполнитьГруппуФинУчета();
ИзмененныеРеквизиты = ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Договор");
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер(Неопределено);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, Объект.ДокументОснование);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
ПодготовитьЗаполнитьУстановитьВидимостьСборкиИДоставки();
УстановитьВидимостьКомандыЗаполненияВидаЦенПоДоговору();
ЗаполнитьПараметрыСвязиВидаЦенИПризнакЦенаВключаетНДС();
ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПредложениеЗаполнитьПоГосконтрактуЕИС()
Если ЭтоГосконтрактЕИС Тогда
ОповещениеОЗавершении = Новый ОписаниеОповещения("ЗаполнитьПоГосконтрактуЗавершение", ЭтотОбъект);
ТекстПредупреждения = НСтр("ru = 'Заполнить документ по данным госконтракта?'");
ПоказатьВопрос(ОповещениеОЗавершении, ТекстПредупреждения, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоГосконтрактуЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ЗаполнитьПоГосконтрактуСервер();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоГосконтрактуСервер()
ЭлектронноеАктированиеЕИСУТ.ЗаполнитьТабличнуюЧастьДокументаПоДаннымГосконтракта(Объект);
СтруктураДействий = Новый Структура();
ПараметрыДокумента = Документы.ЗаказКлиента.ПараметрыДокументаДляДействийОбеспечения(Объект);
ПоляСтрокой = "ВариантОбеспечения";
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействий.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПриИзмененииСкладаВТабличнойЧастиСервер();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
Если Не ЗначениеЗаполнено (Объект.Партнер) Тогда
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы,Объект);
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
Возврат;
КонецЕсли;
ПартнерПриИзмененииСервер();
ЭтотОбъект.ИндексыСПАРКРиски = Неопределено;
ОбновитьОтображениеИндексыСПАРК();
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
ДокументыEDIИнтеграцияКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
СопоставлениеНоменклатурыКонтрагентовКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
ПредложениеЗаполнитьПоГосконтрактуЕИС();
КонецПроцедуры
&НаКлиенте
Процедура КонтактноеЛицоПриИзменении(Элемент)
Если Объект.КонтактноеЛицо.Пустая() Тогда
Возврат;
ИначеЕсли Не Объект.Партнер.Пустая() Тогда
Возврат;
КонецЕсли;
ПартнерИзменился = Ложь;
КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился);
Если Не ПартнерИзменился Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено (Объект.Партнер) Тогда
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы,Объект);
Иначе
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
ЭтотОбъект.ИндексыСПАРКРиски = Неопределено;
ОбновитьОтображениеИндексыСПАРК();
ДокументыEDIИнтеграцияКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
СопоставлениеНоменклатурыКонтрагентовКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
ПредложениеЗаполнитьПоГосконтрактуЕИС();
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
Если Не ЗначениеЗаполнено (Объект.Соглашение) Тогда
СоглашениеОчисткаСервер();
Возврат;
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Если ПродажиВызовСервера.ЭтоСоглашениеПоНовойКомиссии(Объект.Соглашение) Тогда
ДоговорДоИзменения = Объект.Договор;
СоглашениеПриИзмененииСервер(Ложь);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродаж();
Если НЕ ДоговорДоИзменения = Объект.Договор И ЗначениеЗаполнено(Объект.Договор) И КомиссионныеПродажи25
И ЗначениеЗаполнено(УчетныйВидЦеныДоговора(Объект.Договор).ВидЦены) Тогда
Оповещение = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДоговора(Объект, Оповещение);
КонецЕсли;
Иначе
Оповещение = Новый ОписаниеОповещения("СоглашениеПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииСоглашения(Объект, Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если НЕ РезультатВопроса = КодВозвратаДиалога.Отмена И РезультатВопроса Тогда
ЦеныРассчитаны = СоглашениеПриИзмененииСервер(Истина);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродаж();
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
ПредложениеЗаполнитьПоГосконтрактуЕИС();
Иначе
СоглашениеПриИзмененииСервер(Ложь);
ПредложениеЗаполнитьПоГосконтрактуЕИС();
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродаж();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
Если Объект.Согласован
И Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовКлиентов.НеСогласован") Тогда
Объект.Согласован = Ложь;
КонецЕсли;
СтатусПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииСервер(КэшированныеЗначения);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
Если ОбновитьСписокНалогообложения Тогда
ЗаполнитьСписокВыбораНалогообложенияНДСПродажи();
ОбновитьСписокНалогообложения = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.Валюта) Тогда
ВалютаПриИзмененииСервер(
Объект.Валюта,
ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект,ВалютаДокумента));
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
ВалютаДокумента = Объект.Валюта;
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
ЗаполнитьНалогообложениеНДСНаСервере();
Оповещение = Новый ОписаниеОповещения("ДатаПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если НЕ РезультатВопроса = КодВозвратаДиалога.Отмена И РезультатВопроса Тогда
ПересчитыватьЦены = Истина;
ЦеныРассчитаны = ДатаПриИзмененииСервер(ПересчитыватьЦены);
Если ПересчитыватьЦены Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
Иначе
ДатаПриИзмененииСервер(Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ДоговорДоИзменения = Объект.Договор;
ОрганизацияПриИзмененииСервер();
ВалютаДокумента = Объект.Валюта;
Если НЕ ДоговорДоИзменения = Объект.Договор
И ЗначениеЗаполнено(Объект.Договор) И ДоговорПоНовойКомиссии
И ЗначениеЗаполнено(УчетныйВидЦеныДоговора(Объект.Договор).ВидЦены) Тогда
Оповещение = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДоговора(Объект, Оповещение);
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
ДокументыEDIИнтеграцияКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
СопоставлениеНоменклатурыКонтрагентовКлиент.ПриИзмененииКлючевыхРеквизитовДокумента(ЭтотОбъект);
ПредложениеЗаполнитьПоГосконтрактуЕИС();
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
СкладПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
ДоговорДоИзменения = Объект.Договор;
ХозяйственнаяОперацияПриИзмененииСервер();
Если НЕ ДоговорДоИзменения = Объект.Договор
И ЗначениеЗаполнено(Объект.Договор) И ДоговорПоНовойКомиссии
И ЗначениеЗаполнено(УчетныйВидЦеныДоговора(Объект.Договор).ВидЦены) Тогда
Оповещение = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДоговора(Объект, Оповещение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура КартаЛояльностиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДополнительныеПараметры = Неопределено;
Если Не РедактированиеРеквизитовEDIКлиентСервер.РеквизитДоступенДляРедактирования(ЭтотОбъект, "Покупатель") Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Контрагент", Объект.Контрагент);
ДополнительныеПараметры.Вставить("ИзменениеКонтрагентаНедоступно", Истина);
ДополнительныеПараметры.Вставить("ИзменениеПартнераНедоступно", Истина);
КонецЕсли;
КартыЛояльностиКлиент.НачалоВыбораКартыЛояльности(Элемент, СтандартнаяОбработка, Объект.Партнер, Объект.Дата,, ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура КартаЛояльностиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СчитанаКартаЛояльности(Неопределено, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура КартаЛояльностиОчистка(Элемент, СтандартнаяОбработка)
СчитанаКартаЛояльности(Неопределено, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ДатаОтгрузкиПриИзменении(Элемент)
ДатаОтгрузкиПриИзмененииСервер();
ОбновитьСписокНалогообложения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ДатаСогласованияПриИзменении(Элемент)
ДатаСогласованияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура НеОтгружатьЧастямиПриИзменении(Элемент)
НеОтгружатьЧастямиПриИзмененииСервер();
ОбновитьСписокНалогообложения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ТекстОстатокДопустимогоКредитаНажатие(Элемент, СтандартнаяОбработка)
ВзаиморасчетыКлиент.ОграниченияЗадолженностиНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияИндексыСПАРКРискиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СПАРКРискиКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьОтображениеИндексыСПАРК()
ОбновитьОтображениеИндексыСПАРК();
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьОтображениеИндексыСПАРК()
ПараметрыОтображения = Новый Структура("ВариантОтображения", "Однострочный");
СПАРКРискиКлиент.ОтобразитьИндексыСПАРК(
ЭтотОбъект.ИндексыСПАРКРиски,
Неопределено,
Объект.Контрагент,
ВидКонтрагентаСПАРК(Объект.Контрагент),
ЭтотОбъект,
ПараметрыОтображения);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ВидКонтрагентаСПАРК(Контрагент)
Возврат Перечисления.ЮрФизЛицо.ВидКонтрагентаСПАРКРиски(Контрагент);
КонецФункции
&НаКлиенте
Процедура ВернутьМногооборотнуюТаруПриИзменении(Элемент)
ВернутьМногооборотнуюТаруПриИзмененииСервер();
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТекстОтгрузкаПартнеруЗапрещенаНажатие(Элемент)
ОткрытьФорму("Справочник.Партнеры.Форма.ФормаСегментовЗапретаОтгрузки", Новый Структура("Партнер", Объект.Партнер));
КонецПроцедуры
&НаКлиенте
Процедура ТребуетсяЗалогЗаТаруПриИзменении(Элемент)
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СостояниеНажатие(Элемент, СтандартнаяОбработка)
ПродажиКлиент.СостояниеВФормеДокументаНажатие(СтандартнаяОбработка, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
ЗаполнитьНалогообложениеНДСНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ТекстДокументыНаОснованииОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОчиститьСообщения();
ПродажиКлиент.ОбработкаНавигационнойСсылкиПодчиненныхДокументов(ЭтотОбъект,
НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка);
ИнициироватьПолучениеДокументовНаОсновании();
ПодключитьОбработчикОжиданияДанныеДокументовНаОсновании();
КонецПроцедуры
#Область Обеспечение
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияОтгружаетсяНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияПроблемаНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ОбработкаНавигационнойСсылкиEDI(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ДокументыEDIИнтеграцияКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, Элемент, НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПротоколВзаимодействияПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)
ДокументыEDIИнтеграцияКлиент.ПротоколВзаимодействияПриНажатии(ЭтотОбъект, ДанныеСобытия, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПротоколВзаимодействияДокументСформирован(Элемент)
ДокументыEDIИнтеграцияКлиент.ПротоколВзаимодействияДокументСформирован(ЭтотОбъект, Элемент);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытий
&НаКлиенте
Процедура ДекорацияСервисДоставкиСоздатьНажатие(Элемент)
СервисДоставкиКлиентПереопределяемый.ОткрытьФормуНовогоЗаказаНаДоставку(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиСписокЗаказовНажатие(Элемент)
СервисДоставкиКлиент.ОткрытьФормуСервисаДоставкиИзОснования(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиДобавитьВЗаказНаДоставкуНажатие(Элемент)
СервисДоставкиКлиент.ОткрытьФормуСервисаДоставкиИзОснования(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСервисДоставкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Форма", ЭтотОбъект);
ПараметрыОткрытия.Вставить("ДокументОснование", Объект.Ссылка);
СервисДоставкиКлиент.ОткрытьФормуПодчиненныхЗаказовНаДоставку(ПараметрыОткрытия);
КонецПроцедуры
&НаКлиенте
Процедура СпособМестоДоставкиПеревозчикПриИзменении(Элемент)
ЗаполнитьУстановитьРеквизитыДоставкиСервер(Элемент.Имя);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура КурьерНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СкладыКлиент.ОткрытьФормуВыбораСотрудникаМагазина(ЭтаФорма, Элемент.Имя, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СборщикНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СкладыКлиент.ОткрытьФормуВыбораСотрудникаМагазина(ЭтаФорма, Элемент.Имя, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПриИзменении(Элемент)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОчистка(Элемент, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
АдресДоставкиПриИзменении(Элемент);
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаПриИзменении(Элемент)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОчистка(Элемент, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
АдресДоставкиПеревозчикаПриИзменении(Элемент);
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(
Истина, "Документ.ЗаказКлиента.Форма.ФормаДокумента.Элемент.НаправлениеДеятельности.ПриИзменении");
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ЭтапГосконтрактаЕИСНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Госконтракт", ГосКонтракт);
ОткрытьФорму("Справочник.ГосударственныеКонтракты.Форма.ФормаВыбораЭтапаГосконтракта", ПараметрыОткрытия,,,,, Новый ОписаниеОповещения("ВыборЭтапаГосКонтактаЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ЭтапГосконтрактаЕИСОчистка(Элемент, СтандартнаяОбработка)
Объект.ЭтапГосконтрактаЕИС = "";
КонецПроцедуры
&НаКлиенте
Процедура ВыборЭтапаГосКонтактаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ЭтапГосконтрактаЕИС = Результат.ЭтапГосконтрактаЕИС;
Объект.ЭтапГосконтрактаЕИС = ЭтапГосконтрактаЕИС;
ПредставлениеЭтапаГосконтрактаЕИС = ЭлектронноеВзаимодействиеУТВызовСервера.СформироватьПредставлениеЭтапаГосконтракта(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияФайлыЕИСНажатие(Элемент, СтандартнаяОбработка)
ЭлектронноеАктированиеЕИСКлиент.ОткрытьСписокПриложенныхФайловДокумента(Объект.Ссылка, ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(
Истина, "Документ.ЗаказКлиента.Форма.ФормаДокумента.Элементы.Товары.Выбор");
РедактированиеВозможноEDI = РедактированиеРеквизитовEDIКлиентСервер.РеквизитДоступенДляРедактирования(ЭтотОбъект, "Товары.ПоставщикНоменклатура");
Если Элемент.ТекущийЭлемент = Элементы.ТоварыДоступно И Не ТолькоПросмотр Тогда
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(Неопределено);
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму("Обработка.ЗапросКоличестваИСерий.Форма", ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
ИначеЕсли Элемент.ТекущийЭлемент = Элементы.ТоварыПроцентАвтоматическойСкидки
Или Элемент.ТекущийЭлемент = Элементы.ТоварыСуммаАвтоматическойСкидки
И РедактированиеВозможноEDI
Тогда
СтандартнаяОбработка = Ложь;
Если НЕ Объект.СкидкиРассчитаны Тогда
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Истина);
СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки);
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(АдресПримененныхСкидокВоВременномХранилище) Тогда
РассчитатьСкидкиБезПримененияКОбъекту();
КонецЕсли;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуПримененныеСкидки(ТекущиеДанные, Объект, ЭтаФорма);
ИначеЕсли Поле = Элементы.ТоварыЦена Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ПравоНаЧтениеВидаЦены Тогда
Если ЗначениеЗаполнено(ТекущиеДанные.ВидЦены)
И НЕ Объект.Согласован
И РедактированиеВозможноEDI
Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru='Для редактирования цены очистите вид цены'"),
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Товары", ТекущиеДанные.НомерСтроки, "ВидЦены"),);
КонецЕсли;
КонецЕсли;
ИначеЕсли НаборыКлиент.БлокируемыйЭлемент(Поле) Тогда
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПараметрОповещения = Новый Структура;
ПараметрОповещения.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрОповещения.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрОповещения.Вставить("ФормаВладелец", УникальныйИдентификатор);
Оповестить("РедактироватьНабор", ПараметрОповещения, ЭтаФорма);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыНоменклатураНабора Тогда
ПоказатьЗначение(Неопределено, Элементы.Товары.ТекущиеДанные.НоменклатураНабора);
ИначеЕсли Поле = Элементы.ТоварыНоменклатураПартнера Тогда
НоменклатураПартнеровКлиент.ПриВыбореНоменклатурыПартнера(Объект, Поле, "ТоварыНоменклатураПартнера", НСтр("ru = 'Клиент'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ПродажиКлиент.СтрокаНоменклатурыПриНачалеРедактирования(ЭтаФорма, "Товары", ТекущиеДанные, НоваяСтрока, Копирование);
Если НоваяСтрока И Не Копирование
И Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала") Тогда
ТекущиеДанные.Подразделение = Объект.Подразделение;
КонецЕсли;
Если НоваяСтрока Тогда
ТекущиеДанные.КодСтроки = 0;
Если Копирование Тогда
ТекущиеДанные.СуммаБонусныхБалловКСписанию = 0;
ТекущиеДанные.СуммаБонусныхБалловКСписаниюВВалюте = 0;
КонецЕсли;
КонецЕсли;
Если Копирование Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий,
"ВариантОбеспечения,Доступно,СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий", ТекущиеДанные.Склад, ПараметрыУказанияСерий));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
КонецЕсли;
ВзаиморасчетыКлиент.ТабличнаяЧастьПриНачалеРедактирования(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если Не ОтменаРедактирования Тогда
КэшСтроки = ?(НоваяСтрока, Неопределено, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.Товары, ЭтотОбъект));
СкладыКлиент.ОбновитьТаблицуСкладов(ТаблицаСкладов, ТекущиеДанные, КэшСтроки, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
КонецЕсли;
Если ТекущиеДанные <> Неопределено И Объект.НеОтгружатьЧастями Тогда
ТекущиеДанные.ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтаФорма, "Товары", Отказ);
ВзаиморасчетыКлиент.ТабличнаяЧастьПередУдалением(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
ТоварыПослеУдаленияСервер();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСодержаниеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(
Элемент.ТекстРедактирования,
ЭтотОбъект,
"Элементы.Товары.ТекущиеДанные.Содержание",
НСтр("ru='Содержание услуги'"));
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействий.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий,
"ВариантОбеспечения,ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
ДобавитьДействиеЗаполненияЦен(СтруктураДействий);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
Если Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала") Тогда
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий,
"ВариантОбеспечения,ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
ДобавитьДействиеЗаполненияЦен(СтруктураДействий);
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ТекущаяСтрока.Количество > 0 И Не ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
ИначеЕсли ТекущаяСтрока.Количество > 0 И ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) Тогда
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
ИначеЕсли (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПроверкаОплатыБонуснымиБаллами(ТекущаяСтрока);
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий,Объект);
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВидЦеныПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаНДСНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
ДатаОтгрузки = Объект.Дата;
Если Объект.НеОтгружатьЧастями Тогда
Если ЗначениеЗаполнено(Объект.ДатаОтгрузки) Тогда
ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
Иначе
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.ДатаОтгрузки) Тогда
ДатаОтгрузки = ТекущиеДанные.ДатаОтгрузки;
КонецЕсли;
КонецЕсли;
ПараметрВыбораДата = Новый ПараметрВыбора("Дата", ДатаОтгрузки);
ПараметрыВыбораСтавкиНДС = Новый Массив;
ПараметрыВыбораСтавкиНДС.Добавить(ПараметрВыбораДата);
Элемент.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораСтавкиНДС);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыОтмененоПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если Не ТекущаяСтрока.Отменено Тогда
ТекущаяСтрока.ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка");
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПроцентРучнойСкидкиПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаРучнойСкидкиПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьПроцентРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать, ПересчитыватьСуммуРучнойСкидки", Ложь, Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ОперацииПередачи = ОперацииПередачиТоваров();
ПередачаТоваров = ОперацииПередачи.Найти(Объект.ХозяйственнаяОперация) <> Неопределено;
СтруктураПересчетаЦены = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаЦеныСкидкиВПродажахВТЧ(Объект,
ПередачаТоваров);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуСкидкуПоСуммеВПродажах", СтруктураПересчетаЦены);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкладПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущаяСтрока;
ТоварыСкладПриИзмененииСервер(ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПодразделениеПриИзменении(Элемент)
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыДатаОтгрузкиПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ОбновитьСписокНалогообложения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВариантОбеспеченияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияОбработкаВыбора(
ЭтотОбъект,
Элементы.Товары.ТекущиеДанные,
ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВариантОбеспеченияПриИзменении(Элемент)
Перем ПараметрыФормы;
Если ОбеспечениеВДокументахКлиент.ОткрытьФормуВыбораСкладаИСерий(ЭтотОбъект) Тогда
ВариантПолученияПараметров = ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия();
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(ВариантПолученияПараметров);
КонецЕсли;
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияПриИзменении(
ЭтотОбъект,
ПараметрыФормы,
"ОбработатьВыборСкладаИСерии",
Истина,
"ТоварыВариантОбеспеченияПриИзмененииПослеВопроса");
КонецПроцедуры
&НаКлиенте
Процедура ТоварыОбособленноПриИзменении(Элемент)
СтрокаТаблицы = Элементы.Товары.ТекущиеДанные;
ОбеспечениеВДокументахКлиент.ОбособленноПриИзменении(СтрокаТаблицы);
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(СтрокаТаблицы, СтруктураДействий, Неопределено);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВариантОбеспеченияОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкладНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(ОбеспечениеВДокументахКлиентСервер.РежимПодборСкладов());
Если ТипЗнч(ПараметрыФормы) = Тип("Структура") Тогда
СтандартнаяОбработка = Ложь;
ОткрытьФорму(
"Обработка.ЗапросКоличестваИСерий.Форма",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
Новый ОписаниеОповещения("ОбработатьВыборСкладаИСерии", ЭтотОбъект, ПараметрыФормы));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КурьерПриИзменении(Элемент)
КурьерПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(Элемент.ПараметрыВыбора, ТекущаяСтрока);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПоНоменклатуреПартнера");
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействий.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий,
"ВариантОбеспечения,ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
Если Элемент.ТекущийЭлемент = Неопределено Тогда
Возврат
ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТоварыНоменклатураПартнера" Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
НоменклатураПартнеровКлиент.ЗаполнитьСписокВыбораНоменклатурыПартнера(
Объект.Партнер, ТекущиеДанные, Элементы.ТоварыНоменклатураПартнера.СписокВыбора);
НоменклатураПартнеровКлиент.УстановитьПараметрыВыбораУпаковки(
Элементы.ТоварыНоменклатураПартнера.ПараметрыВыбора, ТекущиеДанные);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЭлементФормы" , Элемент);
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ОповещениеОЗакрытие = Новый ОписаниеОповещения("ОбработатьРезультатВыбораНоменклатурыПартнера", ЭтотОбъект, ДополнительныеПараметры);
НоменклатураПартнеровКлиент.ОткрытьФормуВыбораНоменклатурыПартнера(ЭтотОбъект, Объект.Партнер, ТекущаяСтрока, Элемент.Заголовок, ОповещениеОЗакрытие);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
Если ВзаиморасчетыКлиент.ТабличнаяЧастьПриИзмененииЕстьИзменениеДатОтгрузок(ЭтотОбъект) Тогда
ТоварыПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#Область Обеспечение
&НаКлиенте
Процедура ВключитьОбособленноеОбеспечение(Команда)
ОбеспечениеУстановитьДействие("ФЛАГ_ОБОСОБЛЕННО");
КонецПроцедуры
&НаКлиенте
Процедура ВыключитьОбособленноеОбеспечение(Команда)
ОбеспечениеУстановитьДействие("ФЛАГ_НЕОБОСОБЛЕННО");
КонецПроцедуры
&НаКлиенте
Процедура РезервироватьПоМереПоступления(Команда)
ОбеспечениеУстановитьДействие("ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬПОМЕРЕПОСТУПЛЕНИЯ");
КонецПроцедуры
&НаКлиенте
Процедура КОбеспечению(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_КОБЕСПЕЧЕНИЮ");
КонецПроцедуры
&НаКлиенте
Процедура НеОбеспечивать(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_НЕОБЕСПЕЧИВАТЬ");
КонецПроцедуры
&НаКлиенте
Процедура Резервировать(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬ");
КонецПроцедуры
&НаКлиенте
Процедура Отгрузить(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_ОТГРУЗИТЬ");
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуОтгрузки(Команда)
МассивВыделенныхСтрок = Элементы.Товары.ВыделенныеСтроки;
Если МассивВыделенныхСтрок.Количество() > 0 Тогда
ДатаОтгрузки = Объект.ДатаОтгрузки;
Оповещение = Новый ОписаниеОповещения("ЗаполнитьДатуОтгрузкиЗавершение", ЭтотОбъект, Новый Структура("МассивВыделенныхСтрок", МассивВыделенныхСтрок));
ОбщегоНазначенияУТКлиент.ВвестиДатуСКонтролемПустогоЗначения(ДатаОтгрузки, НСтр("ru='Введите дату отгрузки'"), ЧастиДаты.Дата, Оповещение);
Иначе
ТекстПредупреждения = НСтр("ru='В документе не выбраны строки для заполнения. Дата отгрузки не будет заполнена.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПодразделение(Команда)
СкладыКлиент.ЗаполнитьПодразделениеВТабличнойЧасти(Объект, ЭтаФорма, Объект.Товары, "Товары",
Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДС(Команда)
Если Объект.Товары.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'В список ""Товары"" не введено ни одной строки.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьСтавкуНДСЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ТипНалогообложенияНДС", Объект.НалогообложениеНДС);
ПараметрыФормы.Вставить("ДатаАктуальности", ПродажиВызовСервера.МинимальнаяДатаОтгрузкиОбъекта(Объект));
ОткрытьФорму("Справочник.СтавкиНДС.ФормаВыбора", ПараметрыФормы,,,,, ОповещениеОЗакрытии);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияРезервирование(Команда)
ОбъектыОснований = Новый Массив();
ОбъектыОснований.Добавить(Объект.Ссылка);
ОписаниеКоманды = Новый Структура();
ОписаниеКоманды.Вставить("ОбъектыОснований", ОбъектыОснований);
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовКлиентов.НеСогласован") Тогда
МинимальныйСтатус = НСтр("ru = 'К выполнению'");
ОбеспечениеКлиент.СообщитьОНеобходимомМинимальномСтатусеДокумента(Истина, МинимальныйСтатус);
ИначеЕсли Не Объект.Проведен Или Модифицированность Тогда
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Резервирование", Истина);
ДополнительныеПараметры.Вставить("ОписаниеКоманды", ОписаниеКоманды);
ТекстВопроса = НСтр("ru = 'Для резервирования под назначение необходимо предварительно провести документ. Выполнить проведение документа и продолжить?'");
ПоказатьВопрос(
Новый ОписаниеОповещения("СоздатьКорректировкуНазначенияЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОбеспечениеВДокументахКлиент.ОткрытьЗаполнениеКорректировкиНазначения(
Истина,
Объект.Ссылка,
ОписаниеКоманды);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияСнятиеРезерва(Команда)
ОбъектыОснований = Новый Массив();
ОбъектыОснований.Добавить(Объект.Ссылка);
ОписаниеКоманды = Новый Структура();
ОписаниеКоманды.Вставить("ОбъектыОснований", ОбъектыОснований);
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовКлиентов.НеСогласован") Тогда
МинимальныйСтатус = НСтр("ru = 'К выполнению'");
ОбеспечениеКлиент.СообщитьОНеобходимомМинимальномСтатусеДокумента(Ложь, МинимальныйСтатус);
ИначеЕсли Не Объект.Проведен Или Модифицированность Тогда
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Резервирование", Ложь);
ДополнительныеПараметры.Вставить("ОписаниеКоманды", ОписаниеКоманды);
ТекстВопроса = НСтр("ru = 'Для снятия резерва под назначение необходимо предварительно провести документ. Выполнить проведение документа и продолжить?'");
ПоказатьВопрос(
Новый ОписаниеОповещения("СоздатьКорректировкуНазначенияЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОбеспечениеВДокументахКлиент.ОткрытьЗаполнениеКорректировкиНазначения(
Ложь,
Объект.Ссылка,
ОписаниеКоманды);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура АвтоТест_ЗаполнитьЦеныПоСоглашению(Команда) Экспорт
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоСоглашению(Объект, "Товары", НСтр("ru='Товары'")) Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(,ТекстОшибки);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокПоВидуЦен(Команда)
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦен(Объект, "Товары", НСтр("ru='Товары'")) Тогда
ПараметрыВыбораЦен = ЦеныПредприятияЗаполнениеКлиент.НовыйПараметрыЗаполненияВыбратьВидЦен();
ПараметрыВыбораЦен.ОписаниеОповещения =
Новый ОписаниеОповещения("ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенЗавершение", ЭтотОбъект);
ПараметрыВыбораЦен.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораЦен.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораЦен.ВладелецИндивидуальногоВидаЦен = ?(ИспользоватьСоглашенияСКлиентами,Объект.Соглашение,Объект.Партнер);
ЦеныПредприятияЗаполнениеКлиент.ВыбратьВидЦен(ПараметрыВыбораЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоДоговору(Команда)
ВидЦеныДоговора = УчетныйВидЦеныДоговора(Объект.Договор);
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВиду(Объект, ВидЦеныДоговора) Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(,ТекстОшибки);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны,ТекстОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенЗавершение(ВидЦен, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ВидЦен) Тогда
ЦеныРассчитаны = ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(ВидЦен);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, ВидЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьВыделенныеСтроки(Команда)
Если Не ПродажиКлиент.НеобходимоЗаполнениеПричиныОтменыВыделенныхСтрок(Объект.Товары, НСтр("ru='Товары'"), Элементы.Товары.ВыделенныеСтроки) Тогда
Возврат;
КонецЕсли;
ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка");
Если ИспользоватьПричиныОтменыЗаказовКлиентов Тогда
ОткрытьФорму("Справочник.ПричиныОтменыЗаказовКлиентов.ФормаВыбора",,,,,, Новый ОписаниеОповещения("ОтменитьВыделенныеСтрокиЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
ОтменитьВыделенныеСтрокиФрагмент(ПричинаОтмены);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьВыделенныеСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПричинаОтмены = Результат;
Если Не ЗначениеЗаполнено(ПричинаОтмены) Тогда
Возврат;
КонецЕсли;
ОтменитьВыделенныеСтрокиФрагмент(ПричинаОтмены);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьВыделенныеСтрокиФрагмент(Знач ПричинаОтмены)
Перем ВыделенныеСтроки, СтруктураДействий;
СтруктураДействий = Новый Структура();
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ВыделенныеСтроки = ДополнитьДоПолногоНабора();
ПродажиКлиент.ОтменитьВыделенныеСтроки(
Объект.Товары,
ВыделенныеСтроки,
ПричинаОтмены,
СтруктураДействий);
ОтменитьВыделенныеСтрокиДействияОбеспеченияСервер(ВыделенныеСтроки);
ПродажиКлиент.ОповеститьОбОтменеВыделенныхСтрок(ПричинаОтмены);
КонецПроцедуры
&НаСервере
Процедура ОтменитьВыделенныеСтрокиДействияОбеспеченияСервер(Знач ВыделенныеСтроки)
ОбрабатываемыеСтроки = Новый Массив;
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "СкладОбязателен,ДатаОтгрузкиОбязательна");
Для Каждого ТекСтрока Из ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
ОбрабатываемыеСтроки.Добавить(СтрокаТаблицы);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
Неопределено);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
РассчитатьИтоговыеПоказателиЗаказа(ЭтотОбъект);
ОтменитьВыделенныеСтрокиНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьНепоставленныеСтроки(Команда)
Если Не ПродажиКлиент.НеобходимоЗаполнениеПричиныОтменыВыделенныхСтрок(Объект.Товары, НСтр("ru='Товары'"), Элементы.Товары.ВыделенныеСтроки) Тогда
Возврат;
КонецЕсли;
ПроверятьОстатки = Истина;
Если Не Объект.Проведен Тогда
ПроверятьОстатки = Ложь;
ИначеЕсли Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовКлиентов.НеСогласован")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовКлиентов.КОбеспечению") Тогда
ПроверятьОстатки = Истина;
КонецЕсли;
ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовКлиентов.ПустаяСсылка");
Если ИспользоватьПричиныОтменыЗаказовКлиентов Тогда
ОткрытьФорму("Справочник.ПричиныОтменыЗаказовКлиентов.ФормаВыбора",,,,,, Новый ОписаниеОповещения("ОтменитьНепоставленныеСтрокиЗавершение", ЭтотОбъект, Новый Структура("ПроверятьОстатки", ПроверятьОстатки)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
ОтменитьНепоставленныеСтрокиФрагмент(ПричинаОтмены, ПроверятьОстатки);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьНепоставленныеСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПроверятьОстатки = ДополнительныеПараметры.ПроверятьОстатки;
ПричинаОтмены = Результат;
Если Не ЗначениеЗаполнено(ПричинаОтмены) Тогда
Возврат;
КонецЕсли;
ОтменитьНепоставленныеСтрокиФрагмент(ПричинаОтмены, ПроверятьОстатки);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьНепоставленныеСтрокиФрагмент(Знач ПричинаОтмены, Знач ПроверятьОстатки)
Перем КоличествоСтрокОтменено;
КоличествоСтрокОтменено = ОтменитьНепоставленныеСтрокиСервер(ПричинаОтмены, ПроверятьОстатки);
Если КоличествоСтрокОтменено = 0 Тогда
ПродажиКлиент.ОповеститьОбОтменеНепоставленныхСтрок(ПричинаОтмены, КоличествоСтрокОтменено, ПроверятьОстатки);
Иначе
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ПродажиКлиент.ОповеститьОбОтменеНепоставленныхСтрок(ПричинаОтмены, КоличествоСтрокОтменено, ПроверятьОстатки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкрыватьОтмененныеСтроки(Команда)
СкрыватьОтмененныеСтроки = Не СкрыватьОтмененныеСтроки;
Если СкрыватьОтмененныеСтроки Тогда
Элементы.Товары.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.Товары.ОтборСтрок = Неопределено;
КонецЕсли;
Элементы.ТоварыСкрыватьОтмененныеСтроки.Пометка = СкрыватьОтмененныеСтроки;
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСкидкиНаценки(Команда)
РассчитатьСкидкиНаценкиКлиент();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодбор(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказКлиента.ФормаДокумента.Команда.ОткрытьПодбор");
Отказ = Ложь;
Если (ИспользоватьСоглашенияСКлиентами И Не ЗначениеЗаполнено(Объект.Соглашение))
Или Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
СообщитьОбОшибкахОткрытияПодбора(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрЗаголовок = НСтр("ru = 'Подбор товаров в %Документ%'");
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", Объект.Ссылка);
Иначе
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", НСтр("ru='заказ клиента'"));
КонецЕсли;
ОперацииПередачи = ОперацииПередачиТоваров();
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыФормы.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыФормы.Вставить("ВозвращатьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
Если ОперацииПередачи.Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала") Тогда
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареРаботе()));
Иначе
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре()));
КонецЕсли;
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
КонецЕсли;
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
ПараметрыФормы.Вставить("ИспользоватьДатыОтгрузки", ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("Заголовок", ПараметрЗаголовок);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыФормы.Вставить("Назначение", Объект.Назначение);
ПараметрыФормы.Вставить("Подразделение", Объект.Подразделение);
ПараметрыФормы.Вставить("ПодборВариантовОбеспечения", ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента);
ПараметрыФормы.Вставить("ВариантОбеспеченияИФлагОбособленно", ВариантОбеспеченияИФлагОбособленно);
ПараметрыФормы.Вставить("ОграничиватьВариантыОбеспечения", Не ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента);
ПараметрыФормы.Вставить("ДоступныеОстаткиПараметрыДокумента",
ОбеспечениеВДокументахКлиент.ДоступныеОстаткиПараметрыДокумента(ЭтотОбъект));
ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьИнформациюОСкидках(Команда)
Если НЕ Объект.СкидкиРассчитаны Тогда
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Истина);
СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки);
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(АдресПримененныхСкидокВоВременномХранилище) Тогда
РассчитатьСкидкиБезПримененияКОбъекту();
КонецЕсли;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуПримененныеСкидки(ТекущиеДанные, Объект, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьАвтоматическиеСкидки(Команда)
АдресВХранилище = ВыполнитьПредварительныйРасчетСкидокНаСервере();
Оповещение = Новый ОписаниеОповещения("НазначитьАвтоматическиеСкидкиЗавершение", ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуНазначенияУправляемыхСкидокНаценок(АдресВХранилище, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьАвтоматическиеСкидкиЗавершение(ВозвращенноеЗначение, ДополнительныеПараметры) Экспорт
Если ВозвращенноеЗначение <> Неопределено Тогда
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
УправляемыеСкидки = ВозвращенноеЗначение;
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Ложь);
СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки);
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
ПоказатьОповещениеПользователя(
НСтр("ru = 'Скидки (наценки)'"),
,
НСтр("ru = 'Скидки (наценки) рассчитаны'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидку(Команда)
Если Не СкидкиНаценкиЗаполнениеКлиент.ВозможноНазначениеРучнойСкидкиНаценки(Объект, "Товары", НСтр("ru='Товары'")) Тогда
Возврат;
КонецЕсли;
АдресВоВременномХранилище = АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(Ложь);
Оповещение = Новый ОписаниеОповещения(
"НазначитьРучнуюСкидкуЗавершение",
ЭтотОбъект,
Новый Структура("АдресВоВременномХранилище", АдресВоВременномХранилище));
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуНазначенияРучныхСкидок(
АдресВоВременномХранилище,
Объект.Валюта,
Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидкуЗавершение(СуммаРучнойСкидкиНаценки, ДополнительныеПараметры) Экспорт
АдресВоВременномХранилище = ДополнительныеПараметры.АдресВоВременномХранилище;
Если СуммаРучнойСкидкиНаценки <> Неопределено Тогда
НазначитьРучнуюСкидкуНаСервере(СуммаРучнойСкидкиНаценки, Неопределено, АдресВоВременномХранилище);
СкидкиНаценкиЗаполнениеКлиент.ОповеститьОбОкончанииНазначенияРучныхСкидокНаценок(СуммаРучнойСкидкиНаценки, Объект.Валюта);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидкуДляВыделенныхСтрок(Команда)
Если Не СкидкиНаценкиЗаполнениеКлиент.ВозможноНазначениеРучнойСкидкиНаценки(Объект, "Товары", НСтр("ru='Товары'")) Тогда
Возврат;
КонецЕсли;
АдресВоВременномХранилище = АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(Истина);
Оповещение = Новый ОписаниеОповещения(
"НазначитьРучнуюСкидкуДляВыделенныхСтрокЗавершение",
ЭтотОбъект,
Новый Структура("АдресВоВременномХранилище", АдресВоВременномХранилище));
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуНазначенияРучныхСкидок(
АдресВоВременномХранилище,
Объект.Валюта,
Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидкуДляВыделенныхСтрокЗавершение(СуммаРучнойСкидкиНаценки, ДополнительныеПараметры) Экспорт
АдресВоВременномХранилище = ДополнительныеПараметры.АдресВоВременномХранилище;
Если СуммаРучнойСкидкиНаценки <> Неопределено Тогда
НазначитьРучнуюСкидкуНаСервере(СуммаРучнойСкидкиНаценки, Элементы.Товары.ВыделенныеСтроки, АдресВоВременномХранилище);
СкидкиНаценкиЗаполнениеКлиент.ОповеститьОбОкончанииНазначенияРучныхСкидокНаценок(СуммаРучнойСкидкиНаценки, Объект.Валюта);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьРучныеСкидки(Команда)
Если Не СкидкиНаценкиЗаполнениеКлиент.ВозможнаОтменаРучныхСкидокНаценок(Объект, "Товары", НСтр("ru='Товары'")) Тогда
Возврат;
КонецЕсли;
ОтменитьРучныеСкидкиНаСервере();
СкидкиНаценкиЗаполнениеКлиент.ОповеститьОбОкончанииНазначенияРучныхСкидокНаценок();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтроках(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если СкладыКлиент.ПроверитьВозможностьЗаполненияСкладовВТабличнойЧасти(Объект, Объект.Товары, НСтр("ru='Товары'"), ВыделенныеСтроки) Тогда
МассивОтбора = Новый Массив();
МассивОтбора.Добавить(ПредопределенноеЗначение("Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказах"));
МассивОтбора.Добавить(ПредопределенноеЗначение("Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказахИНакладных"));
СтруктураОтбора = Новый Структура("ВыборГруппы, ЭтоГруппа", МассивОтбора, Ложь);
СтруктураПараметров = Новый Структура("Отбор,ГруппаСкладов,ОтображениеТаблицы",
СтруктураОтбора, Объект.Склад, ОтображениеТаблицы.Список);
ВыбранныйСклад = Неопределено;
ОткрытьФорму(
"Справочник.Склады.ФормаВыбора",
СтруктураПараметров,
ЭтаФорма,
,
,
,
Новый ОписаниеОповещения("ЗаполнитьСкладВВыделенныхСтрокахЗавершение",
ЭтотОбъект,
Новый Структура("ВыделенныеСтроки", ВыделенныеСтроки)),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтрокахЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВыделенныеСтроки = ДополнительныеПараметры.ВыделенныеСтроки;
ВыбранныйСклад = Результат;
Если ЗначениеЗаполнено(ВыбранныйСклад) Тогда
ЗаполненоСтрок = ЗаполнитьСкладВВыделенныхСтрокахНаСервере(ВыделенныеСтроки, ВыбранныйСклад);
СкладыКлиент.ПоказатьОповещениеОЗаполненииСкладаВТабличнойЧасти(ВыбранныйСклад, ЗаполненоСтрок, ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.СтруктураПересчетаСуммы(
"Количество, Сумма, СуммаНДС, СуммаСНДС, СуммаРучнойСкидки, СуммаАвтоматическойСкидки,
|СуммаБонусныхБалловКСписанию, СуммаБонусныхБалловКСписаниюВВалюте, " + ЗависимыеРеквизитыСтрокой(),
"КоличествоУпаковок");
Если ТаблицаФормы.ТекущиеДанные <> Неопределено Тогда
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ЗаполнитьСтруктуруПересчетаСуммы(СтруктураПересчетаСуммы, ТаблицаФормы.ТекущиеДанные);
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("СтруктураПересчетаСуммы", СтруктураПересчетаСуммы);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы,
Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект, ДополнительныеПараметры));
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
НоваяСтрока.КодСтроки = 0;
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ДобавитьСтрокуДляПересчетаСуммы(ДополнительныеПараметры.СтруктураПересчетаСуммы, ТекущаяСтрока);
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ДобавитьСтрокуДляПересчетаСуммы(ДополнительныеПараметры.СтруктураПересчетаСуммы, НоваяСтрока);
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПересчитатьСуммы(ДополнительныеПараметры.СтруктураПересчетаСуммы);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СтруктураДействий = Новый Структура;
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий,"ОбновитьКэшНоменклатура");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(Результат, Параметры) Экспорт
Если Результат.Результат Тогда
ОбработатьШтрихкоды(Результат.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СтруктураСообщений()
Возврат СкидкиНаценкиЗаполнениеСервер.СтруктураСообщений(Объект);
КонецФункции
&НаКлиенте
Процедура ПоказатьСообщения(Команда)
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуСообщений(СтруктураСообщений(), ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СчитатьКартуЛояльности(Команда)
Если Объект.Согласован Тогда
Возврат;
КонецЕсли;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
Если Не РедактированиеРеквизитовEDIКлиентСервер.РеквизитДоступенДляРедактирования(ЭтотОбъект, "Покупатель") Тогда
ПараметрыОткрытия.Вставить("Контрагент", Объект.Контрагент);
ПараметрыОткрытия.Вставить("ИзменениеКонтрагентаНедоступно", Истина);
ПараметрыОткрытия.Вставить("ИзменениеПартнераНедоступно", Истина);
КонецЕсли;
ОткрытьФорму(
"Справочник.КартыЛояльности.Форма.СчитываниеКартыЛояльности",
ПараметрыОткрытия,
ЭтаФорма,
ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыПечати(Команда)
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
ДанныеРаспоряженияНаДоставку = ДоставкаТоваровКлиентСервер.ПараметрыРаспоряжения();
ЗаполнитьЗначенияСвойств(ДанныеРаспоряженияНаДоставку, Объект);
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("ТолькоПросмотр", ТолькоПросмотр);
СтруктураПараметров.Вставить("АдресДоставки", Объект.АдресДоставки);
СтруктураПараметров.Вставить("АдресДоставкиЗначенияПолей", Объект.АдресДоставкиЗначенияПолей);
СтруктураПараметров.Вставить("ЗонаДоставки", Объект.ЗонаДоставки);
СтруктураПараметров.Вставить("ВремяДоставкиС", Объект.ВремяДоставкиС);
СтруктураПараметров.Вставить("ВремяДоставкиПо", Объект.ВремяДоставкиПо);
СтруктураПараметров.Вставить("ДополнительнаяИнформацияПоДоставке", Объект.ДополнительнаяИнформацияПоДоставке);
СтруктураПараметров.Вставить("БанковскийСчетГрузоотправителя", Объект.БанковскийСчетГрузоотправителя);
СтруктураПараметров.Вставить("БанковскийСчетГрузополучателя", Объект.БанковскийСчетГрузополучателя);
СтруктураПараметров.Вставить("БанковскийСчетКонтрагента", Объект.БанковскийСчетКонтрагента);
СтруктураПараметров.Вставить("Грузоотправитель", Объект.Грузоотправитель);
СтруктураПараметров.Вставить("Грузополучатель", Объект.Грузополучатель);
СтруктураПараметров.Вставить("Партнер", Объект.Партнер);
СтруктураПараметров.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
СтруктураПараметров.Вставить("Контрагент", Объект.Контрагент);
СтруктураПараметров.Вставить("БанковскийСчет", Объект.БанковскийСчет);
СтруктураПараметров.Вставить("Организация", Объект.Организация);
СтруктураПараметров.Вставить("Дата", Объект.Дата);
СтруктураПараметров.Вставить("Руководитель", Объект.Руководитель);
СтруктураПараметров.Вставить("ГлавныйБухгалтер", Объект.ГлавныйБухгалтер);
СтруктураПараметров.Вставить("НазначениеПлатежа", Объект.НазначениеПлатежа);
СтруктураПараметров.Вставить("НомерЗаказа", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Объект.Номер));
СтруктураПараметров.Вставить("ДатаЗаказа", Формат(Объект.Дата, "ДЛФ = D"));
СтруктураПараметров.Вставить("ПараметрыВыбораРеквизитов", ПараметрыВыбораРеквизитов);
СтруктураПараметров.Вставить("Ссылка", Объект.Ссылка);
СтруктураПараметров.Вставить("ДанныеРаспоряженияНаДоставку", ДанныеРаспоряженияНаДоставку);
ОткрытьФорму("Документ.ЗаказКлиента.Форма.РеквизитыПечати", СтруктураПараметров, ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
ПолучитьСтрокиИзБуфераОбмена();
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КоличествоВставленных = Объект.Товары.Количество()-КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество,Склад,ДатаОтгрузки");
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
ПараметрыЗагрузки.Организация = Объект.Организация;
ПараметрыЗагрузки.ЗагружатьЦены = Истина;
ПараметрыЗагрузки.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыЗагрузки.НалогообложениеНДС = Объект.НалогообложениеНДС;
ПараметрыЗагрузки.ДатаЗаполнения = Объект.Дата;
ПараметрыЗагрузки.ЭтоВозвратнаяТара = Объект.ВернутьМногооборотнуюТару;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Дата = Объект.Дата;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Валюта = Объект.Валюта;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Соглашение = Объект.Соглашение;
ОперацииПередачи = ОперацииПередачиТоваров();
Если ОперацииПередачи.Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала") Тогда
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареРаботе());
Иначе
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
КонецЕсли;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
ОчиститьСообщения();
ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработчикОжиданияЭДО()
ОбменСКонтрагентамиКлиент.ОбработчикОжиданияЭДО(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуEDI(Команда)
ДокументыEDIИнтеграцияКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьСервернуюКоманду(ИмяКоманды, ДополнительныеПараметры) Экспорт
Подключаемый_ВыполнитьКомандуНаСервереEDI(ИмяКоманды, ДополнительныеПараметры);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервереEDI(ИмяКоманды, ДополнительныеПараметры)
ДокументыEDIИнтеграция.ВыполнитьКоманду(ЭтотОбъект, ИмяКоманды, ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьНоменклатуруПартнера(Команда)
НоменклатураПартнеровКлиент.ПоказатьНоменклатуруПартнера(Объект.Партнер, Объект.Ссылка, Элементы.Товары.ТекущиеДанные, НСтр("ru = 'Клиент'"));
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказ(Команда)
Если Модифицированность Или Не Объект.Проведен Тогда
ДополнительныеПараметры = Новый Структура;
Ответ = Неопределено;
ПоказатьВопрос(Новый ОписаниеОповещения("ЗакрытьЗаказЗавершение", ЭтотОбъект, ДополнительныеПараметры),
НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"), РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказФрагмент(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
СписокЗаказовКЗакрытию = Новый СписокЗначений;
СписокЗаказовКЗакрытию.Добавить(Объект.Ссылка);
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
СтруктураЗакрытия.Вставить("ТаблицаТоваровРасход", ПоместитьВоВременноеХранилищеНаСервере("Товары", Новый УникальныйИдентификатор));
ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия",
СтруктураЗакрытия, ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытьЗаказФрагмент", ЭтотОбъект);
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("ДействиеПослеЗаписи",ОписаниеОповещения);
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
ОчиститьСообщения();
Записать(ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПеречитатьДокумент(Команда)
ЭтаФорма.Прочитать();
ПодключитьОбработчикОжиданияПолучениеПеревозчиков();
ПодключитьОбработчикОжиданияДанныеДокументовНаОсновании();
КонецПроцедуры
&НаКлиенте
Процедура ЗачетОплаты(Команда)
ВзаиморасчетыКлиент.ЗачетОплаты(ЭтаФорма, Элементы.ЗачетОплатыФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьОплатуБонуснымиБаллами(Команда)
ПрименитьОплатуБонуснымиБалламиКлиент();
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьОплатуБонуснымиБаллами(Команда) Экспорт
Если РозничныеПродажиКлиент.ПроверитьВозможностьДобавленияОплатыБонуснымиБаллами(ЭтотОбъект, Ложь) Тогда
ОписаниеОповещенияЗавершения = Новый ОписаниеОповещения("ДобавитьОплатуБонуснымиБалламиПродолжение", ЭтотОбъект);
Если Объект.Проведен Тогда
РозничныеПродажиКлиент.ОтобразитьВопросОНеобходимостиНепроведенногоДокумента(ЭтотОбъект, ОписаниеОповещенияЗавершения);
Иначе
ВыполнитьОбработкуОповещения(ОписаниеОповещенияЗавершения, Истина);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьОплатуБонуснымиБалламиПродолжение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Истина Тогда
Отказ = Ложь;
Если Не Объект.СкидкиРассчитаны И СкидкиИзменились() Тогда
ПрименитьИзмененияСкидокНаценокНаКлиенте(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыОткрытияФормы = Новый Структура;
ПараметрыОткрытияФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытияФормы.Вставить("КартаЛояльности", Объект.КартаЛояльности);
ПараметрыОткрытияФормы.Вставить("АдресТабличнойЧастиТовары", АдресТабличнойЧастиТовары());
ПараметрыОткрытияФормы.Вставить("Валюта", Объект.Валюта);
ОткрытьФорму(
"Справочник.БонусныеПрограммыЛояльности.Форма.ОплатаБонуснымиБаллами",
ПараметрыОткрытияФормы,
ЭтотОбъект,,,,
Новый ОписаниеОповещения("ДобавитьОплатуБонуснымиБалламиЗавершение", ЭтотОбъект));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьОплатуБонуснымиБалламиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(Результат) Тогда
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Возврат;
КонецЕсли;
ПрименитьОплатуБонуснымиБалламиКлиент(Результат.АдресВоВременномХранилище);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииКлючевыхРеквизитовСостояниеЭДО()
ПараметрыПриИзменении = ОбменСКонтрагентами.ПараметрыПриИзмененииКлючевыхРеквизитовЭДО();
ПараметрыПриИзменении.Форма = ЭтотОбъект;
ПараметрыПриИзменении.ДокументСсылка = Объект.Ссылка;
ПараметрыПриИзменении.ДокументОбъект = РеквизитФормыВЗначение("Объект");
ПараметрыПриИзменении.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПриИзменении.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриИзмененииКлючевыхРеквизитовЭДО(ПараметрыПриИзменении);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
ОперацииПередачи = ПродажиСервер.ОперацииПередачиТоваров();
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "ДатаОтгрузки", "Объект.ДатаОтгрузки", "ДатаОтгрузкиОбязательна");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "ТоварыДатаОтгрузки", "Объект.Товары.ДатаОтгрузки", "Объект.Товары.ДатаОтгрузкиОбязательна");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "Склад", "Объект.Склад", "СкладОбязателен");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "ТоварыСклад", "Объект.Товары.Склад", "Объект.Товары.СкладОбязателен");
ОбеспечениеВДокументахСервер.УстановитьУсловноеОформлениеОбособленно(
УсловноеОформление,
Элементы.ТоварыОбособленно,
"Объект.Товары.ВариантОбеспечения",
"Объект.Товары.ТипНоменклатуры");
ОбеспечениеВДокументахСервер.ДоступныеОстаткиДобавитьОформлениеКолонкиДоступно(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СостояниеПросрочено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныйДокумент);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Состояние");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СостоянияЗаказовКлиентов.Закрыт;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЗакрытыйДокумент);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПроцентАвтоматическойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаАвтоматическойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПроцентРучнойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаРучнойСкидки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ВыделятьОтрицательные", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ГруппаОтбора3 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьРучныеСкидкиВПродажах");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = ОперацииПередачи;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтаФорма);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
ОбщегоНазначенияУТ.УстановитьУсловноеОформлениеПриоритета(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтаФорма);
СкладыСервер.УстановитьУсловноеОформлениеПодразделенияВТЧ(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладГруппа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеСодержания(ЭтаФорма);
ПараметрыУстановки = МногооборотнаяТараСервер.ПараметрыУстановкиУсловногоОформленияДляСтрокСМногооборотнойТарой();
ПараметрыУстановки.Форма = ЭтаФорма;
ПараметрыУстановки.ЭтоПоступление = Истина;
МногооборотнаяТараСервер.УстановитьУсловноеОформлениеДляСтрокСМногооборотнойТарой(ПараметрыУстановки);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, "СерииВсегдаВТЧТовары");
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Приоритеты.Ссылка КАК Приоритет,
| Приоритеты.Цвет КАК Цвет
|ИЗ
| Справочник.Приоритеты КАК Приоритеты");
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Приоритет.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Приоритет");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Выборка.Приоритет;
ВыборкаЦвет = Выборка.Цвет;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ВыборкаЦвет.Получить());
КонецЦикла;
КонецЕсли;
НаборыСервер.УстановитьУсловноеОформление(ЭтаФорма, "Товары");
ЗаказыСервер.УстановитьОформлениеОтмененнойСтроки(УсловноеОформление,
Элементы.Товары,
Элементы.ТоварыОтменено.Имя,
Элементы.ТоварыПричинаОтмены.Имя);
СписокОперацийПередачи = Новый СписокЗначений();
СписокОперацийПередачи.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию"));
СписокОперацийПередачи.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = СписокОперацийПередачи;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПодразделение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала");
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДСНаСервере()
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
#Область Обеспечение
&НаКлиенте
Процедура ЗаполнитьДатуОтгрузкиЗавершение(ВыбраннаяДата, ДополнительныеПараметры) Экспорт
Если ВыбраннаяДата <> Неопределено И ЗначениеЗаполнено(ВыбраннаяДата) Тогда
ДатаОтгрузки = ВыбраннаяДата;
МассивВыделенныхСтрок = ДополнительныеПараметры.МассивВыделенныхСтрок;
ЗаполнитьДатуОтгрузкиСервер(ДатаОтгрузки, МассивВыделенныхСтрок);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияДатОтгрузки(ДатаОтгрузки, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов()
Ошибка = Ложь;
Если ОбеспечениеВДокументахКлиент.НужноОбновитьДоступностьПослеЗаписи(ЭтотОбъект,
"Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов", Ошибка) Тогда
ОбеспечениеВДокументахКлиент.НастроитьГиперссылкиСостояниеОбеспеченияПослеЗаписи(ЭтотОбъект, Ошибка);
ОбновлятьКолонку = ОбеспечениеВДокументахКлиент.ОбновлятьКолонкуДоступноПослеРаспределенияЗапасов(ЭтотОбъект);
Если ОбновлятьКолонку Тогда
ОбновитьКолонкуДоступноПослеРаспределенияЗапасов();
Иначе
ОбновитьСостояниеКлиент();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьКолонкуДоступноПослеРаспределенияЗапасов()
ОбеспечениеВДокументахСервер.ОбновитьДоступностьПослеЗаписи(ЭтотОбъект);
ОбновитьСостояниеСервер();
КонецПроцедуры
&НаСервере
Функция АдресТаблицыДвиженийВХранилище()
Возврат ОбеспечениеВДокументахСервер.АдресТаблицыДвиженийВХранилище(ЭтотОбъект);
КонецФункции
&НаСервере
Функция ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(КодДействия, АдресАналитик, ПараметрыЗаполнения)
Модифицированность = Истина;
Изменения = ОбеспечениеВДокументахСервер.ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(
КодДействия,
АдресАналитик,
ЭтотОбъект);
Режим = ОбеспечениеВДокументахКлиентСервер.РежимСостоянияОбеспечения();
ПослеЗаполненияОбеспечения(Изменения, Режим, ПараметрыЗаполнения);
АдресТаблицыДвижений = АдресТаблицыДвиженийВХранилище();
Возврат АдресТаблицыДвижений;
КонецФункции
&НаСервере
Функция ОбеспечениеУстановитьДействие(КодДействия)
Результат = ОбеспечениеВДокументахСервер.ОбеспечениеУстановитьДействиеСтруктураРезультата();
Если КодДействия = "ФЛАГ_ОБОСОБЛЕННО" Или КодДействия = "ФЛАГ_НЕОБОСОБЛЕННО" Тогда
Изменения = ОбеспечениеВДокументахСервер.УстановитьДействиеОбособленно(
КодДействия,
ЭтотОбъект,
Элементы.Товары.ВыделенныеСтроки);
ОбновитьКолонкуДоступноСервер();
Иначе
Изменения = ОбеспечениеВДокументахСервер.УстановитьДействие(
КодДействия,
ЭтотОбъект,
Элементы.Товары.ВыделенныеСтроки);
ЗаполнитьЗначенияСвойств(Результат, Изменения);
Если Изменения.ТаблицаИзменений <> Неопределено Тогда
ПослеЗаполненияОбеспечения(
Изменения.ТаблицаИзменений,
ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия(),
Результат);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция ОбработатьВыборСкладаИСерииНаСервере(ВыбранноеЗначение, ПараметрыФормы, ПараметрыЗаполнения)
Модифицированность = Истина;
Изменения = ОбеспечениеВДокументахСервер.ПриВыбореСклада(
ВыбранноеЗначение,
ЭтотОбъект,
Элементы.Товары.ТекущаяСтрока,
ПараметрыФормы.ЗаполняемыеПоля);
ПослеЗаполненияОбеспечения(Изменения, ПараметрыФормы.Режим, ПараметрыЗаполнения);
ТекстОбработаноСтрок = ОбеспечениеВДокументахСервер.ТекстОбработаноСтрок(Изменения.Количество());
Возврат ТекстОбработаноСтрок;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыДокументаДляДействийОбеспечения(Форма, ВариантОбеспеченияИФлагОбособленно, ДатаОтгрузки)
ПараметрыДокумента = Новый Структура();
ПараметрыДокумента.Вставить("Форма", Форма);
ПараметрыДокумента.Вставить("Коллекция", Форма.Объект.Товары);
ПараметрыДокумента.Вставить("ВариантОбеспеченияИФлагОбособленно", ВариантОбеспеченияИФлагОбособленно);
Возврат ПараметрыДокумента;
КонецФункции
&НаКлиенте
Процедура ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, ПоляСтрокой)
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(
ЭтотОбъект,
ВариантОбеспеченияИФлагОбособленно,
Неопределено);
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(
СтруктураДействий,
ПоляСтрокой,
ПараметрыДокумента);
КонецПроцедуры
&НаСервере
Процедура ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, ПоляСтрокой, ДатаОтгрузки = Неопределено)
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(
ЭтотОбъект,
ВариантОбеспеченияИФлагОбособленно,
ДатаОтгрузки);
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(
СтруктураДействий,
ПоляСтрокой,
ПараметрыДокумента);
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияНажатиеОбщий()
ПараметрыФормы = ОбеспечениеВДокументахКлиент.ГиперссылкаСостояниеОбеспеченияНажатие(ЭтотОбъект);
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовКлиентов.НеСогласован") Тогда
ПараметрыФормы.ДопустимыеВариантыОбеспечения = ОбеспечениеВДокументахКлиент.ВсеДопустимыеВариантыОбеспечения();
ПараметрыФормы.ДопустимыеВариантыОбеспечения.Удалить(
ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.СоСклада"));
КонецЕсли;
Если ПараметрыФормы.КонтекстИспользования = "ТАБЛИЦА" Тогда
ПараметрыФормы.АдресТаблицыДвижений = АдресТаблицыДвиженийВХранилище();
КонецЕсли;
ОткрытьФорму("Обработка.СостояниеОбеспеченияЗаказов.Форма", ПараметрыФормы, ЭтотОбъект, УникальныйИдентификатор,,,,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыФормыДокумента()
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(
ЭтотОбъект,
ВариантОбеспеченияИФлагОбособленно,
Неопределено);
ОбеспечениеВДокументахСервер.ЗаполнитьСлужебныеРеквизитыФормыДокумента(ПараметрыДокумента);
КонецПроцедуры
&НаСервере
Процедура ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат)
СтруктураРезультата = ОбеспечениеВДокументахСервер.УстановитьДействиеПослеВопроса(Ответ, Результат, ЭтотОбъект);
ПослеЗаполненияОбеспечения(
СтруктураРезультата.ТаблицаИзменений,
ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия(),
СтруктураРезультата);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеУстановитьДействиеСВопросом(КодДействия)
Результат = ОбеспечениеУстановитьДействие(КодДействия);
ВопросЗадан = ОбеспечениеВДокументахКлиент.ПоказатьВопросЗаполнятьОбеспечениеЦелымиУпаковками(
ЭтотОбъект,
Объект.Товары,
Результат,
"ПослеВопросаЗаполнятьОбеспечениеЦелымиУпаковками");
Если Не ВопросЗадан Тогда
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатой(
ЭтотОбъект,
Объект.Товары,
Результат,
"ПослеВопросаСнятьФлагОтгружатьОднойДатой");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьКолонкуДоступноСервер()
ОбеспечениеВДокументахСервер.ОбновитьКолонкуДоступно(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборСкладаИСерии(ВыбранноеЗначение, ПараметрыФормы) Экспорт
Если Не ОбеспечениеВДокументахКлиент.ЕстьПодобранныеТовары(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеВыбораОбеспечения(
ЭтотОбъект,
ВыбранноеЗначение,
ПараметрыФормы,
"ОбработатьВыборСкладаИСерииПослеВопроса");
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборСкладаИСерииПослеВопроса(Ответ, Параметры) Экспорт
ПараметрыЗаполнения = ОбеспечениеВДокументахКлиент.ПараметрыОбработкиДатОтгрузкиПослеЗаполненияОбеспечения(Ответ);
Оповещение = ОбработатьВыборСкладаИСерииНаСервере(
Параметры.ВыбранноеЗначение,
Параметры.ПараметрыФормы,
ПараметрыЗаполнения);
ТекстОповещения = ОбеспечениеВДокументахКлиент.ТекстОповещенияОбработкиВыборСкладаИСерии(Параметры.ПараметрыФормы.Режим);
ПоказатьОповещениеПользователя(ТекстОповещения, , Оповещение);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтотОбъект);
Если Параметры.ПараметрыФормы.Режим = ОбеспечениеВДокументахКлиентСервер.РежимПодборСерий() Тогда
ТоварыСерияПересчитатьЦены();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииМодифицированностиФормы()
Если ФормаМодифицирована <> Модифицированность Тогда
ФормаМодифицирована = Модифицированность;
ОбеспечениеВДокументахКлиент.НастроитьГиперссылкиСостояниеОбеспечения(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВопросаЗаполнятьОбеспечениеЦелымиУпаковками(Ответ, Результат) Экспорт
ВопросЗадан = ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеВопроса(
ЭтотОбъект,
Объект.Товары,
Результат,
Ответ,
"ПослеВопросаСнятьФлагОтгружатьОднойДатой");
Если Не ВопросЗадан Тогда
ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВопросаСнятьФлагОтгружатьОднойДатой(Ответ, Результат) Экспорт
ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаполненияОбеспечения(Изменения, Режим = Неопределено, ПараметрыЗаполнения = Неопределено)
ЕстьИзмененияДатыОтгрузки = Ложь;
Документы.ЗаказКлиента.ПослеЗаполненияОбеспечения(Объект, Изменения, Режим, ПараметрыЗаполнения, ЕстьИзмененияДатыОтгрузки);
Если ЕстьИзмененияДатыОтгрузки Тогда
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Товары.ДатаОтгрузки");
КонецЕсли;
УстановитьВидимостьЭлементовФормыДатОтгрузки();
ЗаказыСервер.ПересчитатьЗависимыеРеквизитыПослеРазбиенияСтрок(Изменения, ЗависимыеРеквизитыСтрокой());
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "СкладОбязателен,ДатаОтгрузкиОбязательна");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
КоллекцияНаФорме = ОбеспечениеВДокументахКлиентСервер.КоллекцияНаФорме(
ЭтотОбъект, ДоступныеОстаткиПараметрыВстраивания);
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого Изменение Из Изменения Цикл
ОбрабатываемыеСтроки.Добавить(Изменение.Строка);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
КоллекцияНаФорме,
КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
РассчитатьИтоговыеПоказателиЗаказа(ЭтотОбъект);
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура ТоварыВариантОбеспеченияПриИзмененииНаСервере(ПараметрыЗаполнения)
Изменения = ОбеспечениеВДокументахСервер.ВариантОбеспеченияПриИзменении(
ЭтотОбъект,
Элементы.Товары.ТекущаяСтрока);
Режим = ОбеспечениеВДокументахКлиентСервер.РежимВыборДействияНепосредственно();
ПослеЗаполненияОбеспечения(Изменения, Режим, ПараметрыЗаполнения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВариантОбеспеченияПриИзмененииПослеВопроса(Ответ, ДополнительныеПараметры) Экспорт
ПараметрыЗаполнения = ОбеспечениеВДокументахКлиент.ПараметрыОбработкиДатОтгрузкиПослеЗаполненияОбеспечения(Ответ);
ТоварыВариантОбеспеченияПриИзмененииНаСервере(ПараметрыЗаполнения);
КонецПроцедуры
&НаСервере
Процедура ТоварыСкладПриИзмененииСервер(ТекущаяСтрока)
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущаяСтрока);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий", ТекущиеДанные.Склад, ПараметрыУказанияСерий));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, Неопределено);
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Функция ПараметрыВыбораОбеспечения(Режим)
ПараметрыФормы = ОбеспечениеВДокументахСервер.ПараметрыВыбораОбеспечения(
ЭтотОбъект,
Элементы.Товары.ТекущаяСтрока,
Режим);
Если Объект.ХозяйственнаяОперация
= ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала") Тогда
ПараметрыФормы.ДопустимыеНеобособленныеДействия.Очистить();
КонецЕсли;
Возврат ПараметрыФормы;
КонецФункции
&НаКлиенте
Функция ПараметрыФормыЗапросаКоличестваИСерий(Режим)
ПараметрыПроверки = ОбеспечениеКлиентСервер.ИнициализироватьПараметрыПроверкиЗаполнения();
Если Не ОбеспечениеКлиент.ПроверитьЗаполнение(
Объект,
Объект.Товары,
Элементы.Товары.ТекущаяСтрока,
ПараметрыПроверки,
Объект.Склад,
Режим) Тогда
Возврат Неопределено;
КонецЕсли;
ПараметрыФормы = ПараметрыВыбораОбеспечения(Режим);
ПараметрыФормы.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
Возврат ПараметрыФормы;
КонецФункции
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
ОчиститьСообщения();
Записать(Новый Структура("РежимЗаписи,СозданиеКорректировки", РежимЗаписиДокумента.Проведение, ДополнительныеПараметры));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ДатыОтгрузки
&НаСервере
Процедура УстановитьВидимостьЭлементовФормыДатОтгрузки()
Элементы.ТоварыДатаОтгрузки.Видимость = Не Объект.НеОтгружатьЧастями
И ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента
И Не Объект.ЭтоЗаказКакСчет;
Элементы.ДатаОтгрузки.Видимость = Объект.НеОтгружатьЧастями;
Элементы.ЗаполнитьДатуОтгрузки.Видимость = Не Объект.НеОтгружатьЧастями;
КонецПроцедуры
&НаСервере
Процедура ДатаОтгрузкиПриИзмененииСервер()
ПодготовитьЗаполнитьУстановитьВидимостьСборкиИДоставки();
ЗаполнитьДатуОтгрузкиСервер(Объект.ДатаОтгрузки, Неопределено);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Товары.ДатаОтгрузки");
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДатуОтгрузкиСервер(ДатаОтгрузки, МассивВыделенныхСтрок)
ОбеспечениеВДокументахСервер.ЗаполнитьРеквизитВКоллекции(Объект.Товары, "ДатаОтгрузки", ДатаОтгрузки, МассивВыделенныхСтрок);
Если МассивВыделенныхСтрок = Неопределено Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НеОтгружатьЧастямиПриИзмененииСервер()
Если Объект.НеОтгружатьЧастями Тогда
Объект.ДатаОтгрузки = ОбеспечениеВДокументахСервер.МаксимальноеЗначениеВКоллекции(Объект.Товары, "ДатаОтгрузки", '00010101');
ОбеспечениеВДокументахСервер.ЗаполнитьРеквизитВКоллекции(Объект.Товары, "ДатаОтгрузки", Объект.ДатаОтгрузки);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Товары.ДатаОтгрузки, НеОтгружатьЧастями");
УстановитьВидимостьЭлементовФормыДатОтгрузки();
КонецПроцедуры
#КонецОбласти
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ПартнерПриИзмененииСервер()
Если ИспользоватьСоглашенияСКлиентами Тогда
ЗаполнитьУсловияПродаж();
Иначе
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
ИспользоватьДоговорыСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
Если ИспользоватьДоговорыСКлиентами Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
КонецЕсли;
НоменклатураПартнеровСервер.ЗаполнитьНоменклатуруПартнераПоНоменклатуреПриИзмененииПартнера(Объект.Товары, Объект.Партнер);
СкладПриИзмененииСервер();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ОбновитьДубликатыЗависимыхРеквизитов();
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент, Объект.БанковскийСчет);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
ЗаполнитьУстановитьРеквизитыДоставкиСервер("Партнер");
МассивИзмененныхРеквизитов = Новый Массив;
МассивИзмененныхРеквизитов.Добавить("Соглашение");
МассивИзмененныхРеквизитов.Добавить("Партнер");
МассивИзмененныхРеквизитов.Добавить("Договор");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, МассивИзмененныхРеквизитов);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, Объект.ДокументОснование);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
ПродажиСервер.ПартнерПриИзменении(Объект);
РассылкиИОповещенияКлиентам.УстановитьВидимостьПодпискиНаОповещенияВОбъекте(
Элементы.ГруппаПодпискаНаОповещения,
Объект.Партнер,
ПредопределенноеЗначение("Перечисление.ТипыСобытийОповещений.ИзменениеСостоянияЗаказа"));
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
ПодготовитьЗаполнитьУстановитьВидимостьСборкиИДоставки();
ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился)
ВладелецКонтактногоЛица = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КонтактноеЛицо, "Владелец");
Если ВладелецКонтактногоЛица <> Объект.Партнер Тогда
Объект.Партнер = ВладелецКонтактногоЛица;
ПартнерПриИзмененииСервер();
ПартнерИзменился = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
ПродажиСервер.ПартнерПриИзменении(Объект);
Если Не ЗначениеЗаполнено(Объект.БанковскийСчетКонтрагента) Тогда
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент, Объект.БанковскийСчет);
КонецЕсли;
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ИзмененныеРеквизиты = ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Контрагент");
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
ЗаполнитьУстановитьРеквизитыДоставкиСервер("Партнер");
ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Функция СоглашениеПриИзмененииСервер(ПересчитыватьЦены)
КомиссионныеПродажи25 = ПродажиСервер.ЭтоСоглашениеПоНовойКомиссии(Объект.Соглашение);
ЗаполнитьПараметрыСвязиВидаЦенИПризнакЦенаВключаетНДС();
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ЦеныРасчитаны = ДокументПродажи.ЗаполнитьУсловияПродажПоСоглашению(ПересчитыватьЦены);
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
ПараметрыДоговора = ПараметрыДоговора(Объект.Договор, Объект.ХозяйственнаяОперация);
Если ПараметрыДоговора.ПоНовойКомиссии Тогда
Объект.ЦенаВключаетНДС = ПараметрыДоговора.ЦенаВключаетНДС;
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
ХозяйственнаяОперацияПриИзмененииСервер(Ложь);
СкладПриИзмененииСервер();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ОбновитьДубликатыЗависимыхРеквизитов();
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент, Объект.БанковскийСчет);
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(Объект.Организация, Объект.БанковскийСчет, , Объект.НаправлениеДеятельности);
ДенежныеСредстваСервер.ПроверитьЗаполнитьКассуОрганизацииПоВладельцу(Объект.Организация, Объект.Касса, Объект.ФормаОплаты, Объект.НаправлениеДеятельности, Объект.Курьер);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ЗаполнитьСписокВыбораОпераций(Ложь);
ЗаполнитьГруппуФинУчета();
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("Договор");
МассивРеквизитов.Добавить("Соглашение");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, МассивРеквизитов);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, Объект.ДокументОснование);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
ЗаполнитьДоговорПоУмолчанию();
Иначе
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
КонецЕсли;
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ВариантОбеспеченияПоУмолчанию = ВариантОбеспеченияПоУмолчанию();
ВариантОбеспеченияИФлагОбособленно = ПродажиСервер.ВариантОбеспеченияИФлагОбособленноПоУмолчанию(
Объект.Соглашение,
Объект.Статус,
ВариантОбеспеченияПоУмолчанию,
Не Объект.ЭтоЗаказКакСчет);
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ПодготовитьЗаполнитьУстановитьВидимостьСборкиИДоставки();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
Возврат ЦеныРасчитаны;
КонецФункции
&НаСервере
Процедура СоглашениеОчисткаСервер()
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, Объект.ДокументОснование);
КонецПроцедуры
&НаСервере
Процедура ВалютаПриИзмененииСервер(НоваяВалюта, ПересчитатьСуммы = Истина)
ЗаполнитьДоговорПоУмолчанию();
Если ПересчитатьСуммы Тогда
СтараяВалюта = ВалютаДокумента;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
СтруктурыКурсов = ВзаиморасчетыСервер.КурсыВалютДляПересчета(ЭтаФорма, СтараяВалюта, НоваяВалюта, ВалютаРегламентированногоУчета, ДатаДокумента);
СтруктураКурсовСтаройВалюты = СтруктурыКурсов.СтруктураКурсовСтаройВалюты;
СтруктураКурсовНовойВалюты = СтруктурыКурсов.СтруктураКурсовНовойВалюты;
Ценообразование.ПересчитатьСуммыТабличнойЧастиВВалюту(
Объект.Товары,
Объект.ЦенаВключаетНДС,
СтараяВалюта,
НоваяВалюта,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты,
Истина,
Истина);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Ценообразование.РаспределитьСуммуПоЭтапамОплаты(Объект, СуммаЗаказано, СуммаЗалогаЗаТару);
КонецЕсли;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Валюта");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Валюта");
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер(КэшированныеЗначения = Неопределено)
КэшированныеЗначенияСлужебный = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Ложь, Объект.ВернутьМногооборотнуюТару));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначенияСлужебный);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначенияСлужебный.ОбработанныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Если НЕ ИспользоватьСоглашенияСКлиентами Тогда
ПараметрыВыбораВидаЦены = ЗначениеНастроекПовтИсп.ПараметрыВыбораВидаЦеныПоУмолчанию();
ПараметрыВыбораВидаЦены.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораВидаЦены.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораВидаЦены.Статус = Перечисления.СтатусыДействияВидовЦен.Действует;
ВидЦеныПоУмолчанию = ЗначениеНастроекПовтИсп.ВидЦеныПоУмолчанию(ПараметрыВыбораВидаЦены);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
Если ЗначениеЗаполнено(Объект.Организация) Тогда
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
Объект.Валюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
КонецЕсли;
ЗаполнитьДоговорПоУмолчанию();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
КонецЕсли;
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(Объект.Организация, Объект.БанковскийСчет, , Объект.НаправлениеДеятельности);
ДенежныеСредстваСервер.ПроверитьЗаполнитьКассуОрганизацииПоВладельцу(Объект.Организация, Объект.Касса, Объект.ФормаОплаты, Объект.НаправлениеДеятельности, Объект.Курьер);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
ОтветственныеЛицаСервер.УстановитьМенеджера(Объект, Объект.ДокументОснование);
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Организация");
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура СкладПриИзмененииСервер()
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовПродажи(Объект.Склад);
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.Товары, Ложь);
УстановитьПараметрыВыбораТоварыСклад();
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
ПодготовитьЗаполнитьУстановитьВидимостьСборкиИДоставки();
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
Если Не СкладГруппа Тогда
Элементы.ТоварыГруппаОтправитель.Заголовок = НСтр("ru = 'Подразделение-отправитель'");
Иначе
Элементы.ТоварыГруппаОтправитель.Заголовок = НСтр("ru = 'Отправитель'");
КонецЕсли;
ПриИзмененииСкладаВТабличнойЧастиСервер();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСкладаВТабличнойЧастиСервер()
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(
НадписьНесколькоСкладов,
Элементы.КартинкаНесколькоСкладов,
ВсегоСкладов);
КонецПроцедуры
&НаСервере
Процедура СтатусПриИзмененииСервер()
ВариантОбеспеченияПоУмолчанию = ВариантОбеспеченияПоУмолчанию();
ВариантОбеспеченияИФлагОбособленно = ПродажиСервер.ВариантОбеспеченияИФлагОбособленноПоУмолчанию(
Объект.Соглашение,
Объект.Статус,
ВариантОбеспеченияПоУмолчанию,
Не Объект.ЭтоЗаказКакСчет);
Если Не ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента Тогда
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "ВариантОбеспечения");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
УстановитьДоступностьЭлементовПоСтатусуСервер();
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииСервер(ВызовПоКоманде=Истина)
ХозяйственнаяОперацияДоговора = ПолучитьХозяйственнуюОперациюДоговора(Объект.ХозяйственнаяОперация);
Если ВызовПоКоманде Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
ОперацииПередачи = ПродажиСервер.ОперацииПередачиТоваров();
ВариантОбеспеченияПоУмолчанию = ВариантОбеспеченияПоУмолчанию();
ВариантОбеспеченияИФлагОбособленно = ПродажиСервер.ВариантОбеспеченияИФлагОбособленноПоУмолчанию(
Объект.Соглашение,
Объект.Статус,
ВариантОбеспеченияПоУмолчанию,
Не Объект.ЭтоЗаказКакСчет);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтаФорма, Объект);
Если ОперацииПередачи.Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
Если (ИспользоватьРучныеСкидкиВПродажах Или ИспользоватьАвтоматическиеСкидкиВПродажах)Тогда
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
СтрокаТЧ.СуммаБонусныхБалловКСписанию = 0;
СтрокаТЧ.СуммаБонусныхБалловКСписаниюВВалюте = 0;
КонецЦикла;
СкидкиНаценкиЗаполнениеСервер.ОтменитьСкидки(Объект, "Товары", Истина);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения, Ложь);
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи Тогда
Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС;
Объект.ЦенаВключаетНДС = Ложь;
КонецЕсли;
Если Объект.ТребуетсяЗалогЗаТару Тогда
Объект.ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
Если ИспользоватьСоглашенияСКлиентами
И (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию)
И ЗначениеЗаполнено(Объект.Соглашение) Тогда
УсловияПродаж = ПродажиСервер.ПолучитьУсловияПродаж(Объект.Соглашение, Истина);
Если УсловияПродаж.ХозяйственнаяОперация <> Объект.ХозяйственнаяОперация Тогда
Объект.Соглашение = Неопределено;
КонецЕсли;
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
Для каждого СтрокаТовар из Объект.Товары Цикл
СтрокаТовар.Обособленно = Истина;
СтрокаТовар.Подразделение = Справочники.СтруктураПредприятия.ПустаяСсылка();
КонецЦикла;
КонецЕсли;
КонецЕсли;
КомиссионныеПродажи25 = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И (Не ИспользоватьСоглашенияСКлиентами Или ПродажиСервер.ЭтоСоглашениеПоНовойКомиссии(Объект.Соглашение));
ИспользоватьДоговоры =
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала
Или (КомиссионныеПродажи25 И Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
ПродажиСервер.УстановитьОтметкуНезаполненногоДоговора(Элементы, "Договор", ИспользоватьДоговоры);
Если ((Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И КомиссионныеПродажи25)
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
И Объект.ВернутьМногооборотнуюТару Тогда
Объект.ВернутьМногооборотнуюТару = Ложь;
Объект.ТребуетсяЗалогЗаТару = Ложь;
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
КонецЕсли;
Если ВызовПоКоманде Тогда
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
КонецЕсли;
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
УстановитьВидимостьЭлементовПоОперацииСервер();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
УстановитьВидимостьОбеспечения();
КонецПроцедуры
&НаСервере
Функция ДатаПриИзмененииСервер(ПересчитыватьЦены)
Если ПересчитыватьЦены Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(Истина);
Иначе
ЦеныРассчитаны = Ложь;
КонецЕсли;
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ЗаполнитьНалогообложениеНДСПродажи();
ПодготовитьЗаполнитьУстановитьВидимостьСборкиИДоставки();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Дата");
РозничныеПродажиКлиентСервер.УстановитьДоступностьКомандОплатыБонуснымиБаллами(Элементы, Объект.Дата);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "НаправлениеДеятельности");
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура КурьерПриИзмененииНаСервере()
ДенежныеСредстваСервер.ПроверитьЗаполнитьКассуОрганизацииПоВладельцу(Объект.Организация, Объект.Касса, Объект.ФормаОплаты, Объект.НаправлениеДеятельности, Объект.Курьер);
КонецПроцедуры
&НаСервере
Процедура ДатаСогласованияПриИзмененииНаСервере()
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "ДатаСогласования");
КонецПроцедуры
&НаСервере
Процедура ТоварыПриИзмененииНаСервере()
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Товары.ДатаОтгрузки");
КонецПроцедуры
#КонецОбласти
#Область ЦенообразованиеИСкидки
&НаСервере
Функция ЗаполнитьЦеныПоСоглашениюСервер(ПоВсемСтрокам = Ложь, ТекстОшибки = "")
Если ПоВсемСтрокам Тогда
МассивСтрок = Неопределено;
Иначе
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект.Товары.НайтиПоИдентификатору(Строка));
КонецЦикла;
КонецЕсли;
НаборыВызовСервера.ДополнитьДоПолногоНабора(Объект.Товары, МассивСтрок);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ОчиститьАвтоматическуюСкидку");
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("Партнер", Объект.Партнер);
Если ЭтоДоговорПоНовойКомиссии(Объект.Договор, Объект.ХозяйственнаяОперация) Тогда
УчетныйВидЦеныДоговора = КомиссионнаяТорговляСервер.ВидЦеныДоговора(Объект.Договор, Истина);
ПараметрыЗаполнения.Вставить("ВидЦены", УчетныйВидЦеныДоговора);
Иначе
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ЦенаВключаетНДС") <> Объект.ЦенаВключаетНДС Тогда
ТекстОшибки =
НСтр("ru = 'Установленные значения полей ""Цена включает НДС"" в документе и соглашении разные.'");
Возврат Ложь;
КонецЕсли;
КонецЕсли;
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыЗаполнения.Вставить("ВозвращатьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦены, СрокПоставки");
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(ВидЦен)
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект.Товары.НайтиПоИдентификатору(Строка));
КонецЦикла;
НаборыВызовСервера.ДополнитьДоПолногоНабора(Объект.Товары, МассивСтрок);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ОчиститьАвтоматическуюСкидку");
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦены", ВидЦен);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦены");
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Процедура РассчитатьСкидкиБезПримененияКОбъекту()
СтруктураПараметры = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыРассчитать();
СтруктураПараметры.ПрименятьКОбъекту = Ложь;
СтруктураПараметры.ТолькоПредварительныйРасчет = Ложь;
СтруктураПараметры.ВосстанавливатьУправляемыеСкидки = Истина;
СтруктураПараметры.УправляемыеСкидки = УправляемыеСкидки;
ПримененныеСкидки = СкидкиНаценкиЗаполнениеСервер.Рассчитать(Объект, СтруктураПараметры);
АдресПримененныхСкидокВоВременномХранилище = ПоместитьВоВременноеХранилище(ПримененныеСкидки, УникальныйИдентификатор);
КонецПроцедуры
&НаСервере
Функция РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры, ВзятьИзВременногоХранилища = Ложь)
Если ВзятьИзВременногоХранилища Тогда
ПримененныеСкидки = ПолучитьИзВременногоХранилища(АдресПримененныхСкидокВоВременномХранилище);
СкидкиНаценкиЗаполнениеСервер.ПрименитьРезультатРасчета(Объект, ПримененныеСкидки);
Иначе
ПримененныеСкидки = СкидкиНаценкиЗаполнениеСервер.Рассчитать(Объект, СтруктураПараметры);
АдресПримененныхСкидокВоВременномХранилище = ПоместитьВоВременноеХранилище(ПримененныеСкидки, УникальныйИдентификатор);
КонецЕсли;
Объект.СкидкиРассчитаны = Истина;
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СтруктураСообщений = СкидкиНаценкиЗаполнениеСервер.СтруктураСообщений(Объект);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения);
Возврат СтруктураСообщений;
КонецФункции
&НаСервере
Процедура НазначитьРучнуюСкидкуНаСервере(СуммаСкидкиНаценки, Знач ВыделенныеСтроки, АдресВоВременномХранилище)
ПараметрыСкидки = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыНазначитьРучнуюСкидку();
ПараметрыСкидки.ИспользуютсяАвтоматическиеСкидки = Истина;
ПараметрыСкидки.ТолькоДляАктивныхСтрок = Ложь;
ПараметрыСкидки.РассчитыватьСуммуСНДС = Истина;
ПараметрыСкидки.ВыделенныеСтроки = ВыделенныеСтроки;
ПараметрыСкидки.АдресВоВременномХранилище = АдресВоВременномХранилище;
СкидкиНаценкиЗаполнениеСервер.НазначитьРучнуюСкидку(Объект, "Товары", СуммаСкидкиНаценки, ПараметрыСкидки);
ОбновитьДубликатыЗависимыхРеквизитов();
КонецПроцедуры
&НаСервере
Функция ВыполнитьПредварительныйРасчетСкидокНаСервере()
СтруктураПараметры = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыРассчитать();
СтруктураПараметры.ПрименятьКОбъекту = Ложь;
СтруктураПараметры.ТолькоПредварительныйРасчет = Истина;
СтруктураПараметры.ВосстанавливатьУправляемыеСкидки = Истина;
СтруктураПараметры.УправляемыеСкидки = УправляемыеСкидки;
Возврат ПоместитьВоВременноеХранилище(
СкидкиНаценкиЗаполнениеСервер.Рассчитать(Объект, СтруктураПараметры), УникальныйИдентификатор);
КонецФункции
&НаСервере
Процедура ОтменитьРучныеСкидкиНаСервере()
СкидкиНаценкиЗаполнениеСервер.ОтменитьРучныеСкидки(Объект, "Товары", Истина, Истина);
ОбновитьДубликатыЗависимыхРеквизитов();
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСкидкиНаценкиКлиент()
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Истина);
СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки);
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
ПоказатьОповещениеПользователя(
НСтр("ru = 'Скидки (наценки)'"),
,
НСтр("ru = 'Скидки (наценки) рассчитаны'"),
БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаКлиенте
Процедура ПрименитьИзмененияСкидокНаценокНаКлиенте(Отказ)
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(Неопределено, Истина);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
Отказ = Истина;
КонецЕсли;
ПоказатьОповещениеПользователя(
НСтр("ru = 'Скидки (наценки)'"),
,
НСтр("ru = 'Скидки (наценки) рассчитаны'"),
БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаСервере
Процедура ПолученыСообщения(Сообщения)
СкидкиНаценкиЗаполнениеСервер.СохранитьОтработанныеСообщения(Объект, Сообщения);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения);
КонецПроцедуры
&НаСервере
Функция СкидкиИзменились()
СкидкиИзменились = СкидкиНаценкиЗаполнениеСервер.НеобходимПерерасчетСкидок(
Объект,
УправляемыеСкидки,
УникальныйИдентификатор,
АдресПримененныхСкидокВоВременномХранилище);
Если Объект.Товары.Итог("СуммаАвтоматическойСкидкиБезВозвратнойТары") <> Объект.СкидкиНаценки.Итог("Сумма") Тогда
СкидкиИзменились = Истина;
КонецЕсли;
Возврат СкидкиИзменились;
КонецФункции
&НаКлиенте
Процедура ПроверкаОплатыБонуснымиБаллами(ТекущаяСтрока)
Если (ТекущаяСтрока.СуммаБонусныхБалловКСписанию = 0
И ТекущаяСтрока.СуммаБонусныхБалловКСписаниюВВалюте = 0) Тогда
Возврат;
КонецЕсли;
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПрименитьОплатуБонуснымиБалламиКлиент(АдресВоВременномХранилище = Неопределено, ВыводитьСообщение = Ложь)
Если АдресВоВременномХранилище = Неопределено И (Не ОплатаБонуснымиБаллами Или Не Объект.Товары.Количество()) Тогда
Возврат;
КонецЕсли;
ПрименитьОплатуБонуснымиБаллами(АдресВоВременномХранилище, ВыводитьСообщение);
КонецПроцедуры
&НаСервере
Процедура ПрименитьОплатуБонуснымиБаллами(АдресВоВременномХранилище = Неопределено, ВыводитьСообщение = Ложь)
УдалениеОплаты = Ложь;
Если АдресВоВременномХранилище <> Неопределено Тогда
ТаблицаТоваров = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
Иначе
Если Не ОплатаБонуснымиБаллами Тогда
Возврат;
КонецЕсли;
ТаблицаТоваров = Объект.Товары;
УдалениеОплаты = Истина;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать, ПересчитыватьСуммуРучнойСкидки", Ложь, Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
КорректировкаВыполнена = Ложь;
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТаблицы Из ТаблицаТоваров Цикл
Если УдалениеОплаты Тогда
СтрокаТЧ = СтрокаТаблицы;
Если СтрокаТаблицы.СуммаБонусныхБалловКСписанию = 0
И СтрокаТаблицы.СуммаБонусныхБалловКСписаниюВВалюте = 0 Тогда
Продолжить;
КонецЕсли;
СтрокаТЧ.СуммаБонусныхБалловКСписанию = 0;
СтрокаТЧ.СуммаБонусныхБалловКСписаниюВВалюте = 0;
Иначе
СтрокаТЧ = Объект.Товары.НайтиСтроки(Новый Структура("КлючСвязи", СтрокаТаблицы.КлючСвязи))[0];
СтрокаТЧ.СуммаБонусныхБалловКСписанию = СтрокаТаблицы.СуммаБонусныхБалловКСписанию;
СтрокаТЧ.СуммаБонусныхБалловКСписаниюВВалюте = СтрокаТаблицы.СуммаБонусныхБалловКСписаниюВВалюте;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КорректировкаВыполнена = Истина;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
Если КорректировкаВыполнена Тогда
ОплатаБонуснымиБаллами = Не УдалениеОплаты;
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Если ВыводитьСообщение Тогда
Если УдалениеОплаты Тогда
ТекстСообщения = НСтр("ru = 'Оплата бонусными баллами отменена. При необходимости, оплату бонусными баллами можно назначить заново (""Цены и скидки / Добавить оплату бонусными баллами"").'");
Иначе
ТекстСообщения = НСтр("ru = 'Оплата бонусными баллами распределена.'");
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Объект.Ссылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
КонецЕсли;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "СкладОбязателен,ДатаОтгрузкиОбязательна");
НачалоДня = НачалоДня(ТекущаяДатаСеанса());
ПоляДляЗаполнения = "НоменклатураНабора, ХарактеристикаНабора, Номенклатура, Характеристика, Упаковка, Склад, ДатаОтгрузки,
|ВидЦены, Цена, КоличествоУпаковок, Количество, Сумма, СуммаНДС, СуммаСНДС, СуммаРучнойСкидки, ПроцентРучнойСкидки,
|СрокПоставки, ВариантОбеспечения, Обособленно, Серия";
ПоляПоиска = "НоменклатураНабора, ХарактеристикаНабора, Номенклатура, Характеристика, Упаковка, Склад,
|ВидЦены, ВариантОбеспечения, Обособленно, Серия, Цена";
Если Не Объект.НеОтгружатьЧастями Тогда
ПоляПоиска = ПоляПоиска + ", ДатаОтгрузки";
КонецЕслИ;
ПараметрыОтбора = Новый Структура(ПоляПоиска);
ОбрабатываемыеСтроки = Новый Массив;
ДатыОтгрузки = Новый Соответствие;
ТребуетсяПересчетУпаковок = Ложь;
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
Если ЗначениеЗаполнено(СтрокаТовара.НоменклатураНабора) Тогда
ЗаполнитьЗначенияСвойств(ПараметрыОтбора, СтрокаТовара);
НайденныеСтроки = Объект.Товары.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество() > 0 Тогда
ТекущаяСтрока = НайденныеСтроки[0];
ТекущаяСтрока.Количество = ТекущаяСтрока.Количество + СтрокаТовара.Количество;
ТребуетсяПересчетУпаковок = Истина;
Иначе
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, ПоляДляЗаполнения);
КонецЕсли;
Иначе
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, ПоляДляЗаполнения);
КонецЕсли;
ТекущаяСтрока.ИндексНабора = ?(ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора), 1, 0);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
ДатыОтгрузки.Вставить(ТекущаяСтрока, СтрокаТовара.ДатаОтгрузки);
КонецЦикла;
Если ТребуетсяПересчетУпаковок Тогда
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Для Каждого ТекущаяСтрока Из ОбрабатываемыеСтроки Цикл
ТекущаяСтрока.ДатаОтгрузки = ОбеспечениеВДокументахСервер.ДатаОтгрузкиОбработкаВыбораПодбор(
ДатыОтгрузки.Получить(ТекущаяСтрока),
ТекущаяСтрока.ВариантОбеспечения,
НачалоДня);
КонецЦикла;
ОбеспечениеВДокументахСервер.АктуализироватьДатуОтгрузкиОднойДатой(
Объект.НеОтгружатьЧастями,
Объект.ДатаОтгрузки,
Объект.Товары,
"ДатаОтгрузки");
ОбновитьКолонкуДоступноСервер();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
&НаКлиенте
Процедура СообщитьОбОшибкахОткрытияПодбора(Отказ)
Если ИспользоватьСоглашенияСКлиентами И Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Соглашение"" не заполнено'"), Объект.Ссылка, "Объект.Соглашение",,Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Валюта"" не заполнено'"), Объект.Ссылка, "Объект.Валюта",,Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Склад) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Склад"" не заполнено'"), Объект.Ссылка, "Объект.Склад",,Отказ);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
ИзменятьКоличество = Истина;
ОчиститьСообщения();
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", Объект.Склад, ПараметрыУказанияСерий));
ДобавитьДействиеЗаполненияЦен(СтруктураДействийСДобавленнымиСтроками);
Если Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала") Тогда
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
КонецЕсли;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСДобавленнымиСтроками,Объект);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСИзмененнымиСтроками,Объект);
Если НЕ ИспользоватьСоглашенияСКлиентами Тогда
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьВидЦены", Новый Структура("ВидЦены", ЭтаФорма.ВидЦеныПоУмолчанию));
КонецЕсли;
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
СтруктураДействий.ИзменятьКоличество = ИзменятьКоличество;
СтруктураДействий.РассчитыватьНаборы = Истина;
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию") Тогда
СтруктураДействий.ТолькоТовары = Истина;
КонецЕсли;
ОбработатьШтрихкодыСервер(СтруктураДействий,КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры",0.1,Истина);
КонецЕсли;
Если ИзменятьКоличество Тогда
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
ПрименитьОплатуБонуснымиБаллами(, Истина);
ДобавитьДействияОбеспеченияНаСервере(
СтруктураПараметровДействия.СтруктураДействийСДобавленнымиСтроками,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма,Объект,СтруктураПараметровДействия,КэшированныеЗначения);
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
ОбеспечениеВДокументахКлиентСервер.УдалитьДействияОбеспечения(СтруктураПараметровДействия.СтруктураДействийСДобавленнымиСтроками);
ОбновитьКолонкуДоступноСервер();
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Товары, ДатаОтгрузкиОбязательна, СкладОбязателен);
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерий()
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(,ТекущиеДанные);
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
Если ПродажиСервер.ОперацииПередачиТоваров().Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
ПараметрыОтбора = Новый Соответствие;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареРаботе());
Иначе
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
КонецЕсли;
Иначе
ПараметрыОтбора = Неопределено;
КонецЕсли;
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,ВидЦены,Цена,
|ПроцентРучнойСкидки,СуммаРучнойСкидки,Склад,ДатаОтгрузки,Подразделение,НоменклатураНабора,ХарактеристикаНабора";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьСодержание",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий,Объект);
Если ТаблицаТоваров.Колонки.Найти("СуммаРучнойСкидки") <> Неопределено Тогда
СтруктураДействий.ПересчитатьСуммуСУчетомРучнойСкидки.Вставить("ПересчитыватьСуммуРучнойСкидки", Ложь);
КонецЕсли;
ПараметрыПроверкиВидаЦены = Новый Структура("ЦенаВключаетНДС, ИспользоватьПриПродаже, Статус",
Объект.ЦенаВключаетНДС, Истина, Перечисления.СтатусыДействияВидовЦен.Действует);
СтруктураДействий.Вставить("ПроверитьЗаполнитьВидЦены",
Новый Структура("ВидЦены, ПараметрыОтбора", "ВидЦены", ПараметрыПроверкиВидаЦены));
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
ОбрабатываемыеСтроки = Новый Массив;
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ТекущаяСтрока.ИндексНабора = ?(ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора), 1, 0);
Если НЕ ИспользоватьРучныеСкидкиВПродажах Тогда
ТекущаяСтрока.ПроцентРучнойСкидки = 0;
ТекущаяСтрока.СуммаРучнойСкидки = 0;
КонецЕсли;
Если Объект.НеОтгружатьЧастями Тогда
ТекущаяСтрока.ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
ТекущаяСтрока.Подразделение = Справочники.СтруктураПредприятия.ПустаяСсылка();
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
#КонецОбласти
#Область Доставка
&НаСервере
Процедура ЗаполнитьУстановитьРеквизитыДоставкиСервер(ИмяЭлементаФормы);
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, ИмяЭлементаФормы, Объект);
КонецПроцедуры
#КонецОбласти
#Область КонтрольНесогласованныхИзменений
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент)
Если Элемент.Имя = "Дата" Тогда
ДатаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Партнер" Тогда
ПартнерПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Соглашение" Тогда
СоглашениеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Валюта" Тогда
ВалютаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЦенаВключаетНДС" Тогда
ЦенаВключаетНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "НалогообложениеНДС" Тогда
НалогообложениеНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Организация" Тогда
ОрганизацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Контрагент" Тогда
КонтрагентПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Договор" Тогда
ДоговорПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Склад" Тогда
СкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "НеОтгружатьЧастями" Тогда
НеОтгружатьЧастямиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДатаОтгрузки" Тогда
ДатаОтгрузкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ХозяйственнаяОперация" Тогда
ХозяйственнаяОперацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВернутьМногооборотнуюТару" Тогда
ВернутьМногооборотнуюТаруПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТребуетсяЗалогЗаТару" Тогда
ТребуетсяЗалогЗаТаруПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДатаСогласования" Тогда
ДатаСогласованияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНоменклатура" Тогда
ТоварыНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыХарактеристика" Тогда
ТоварыХарактеристикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыКоличествоУпаковок" Тогда
ТоварыКоличествоУпаковокПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыУпаковка" Тогда
ТоварыУпаковкаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыОбособленно" Тогда
ТоварыОбособленноПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыВидЦены" Тогда
ТоварыВидЦеныПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыЦена" Тогда
ТоварыЦенаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСтавкаНДС" Тогда
ТоварыСтавкаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыПроцентРучнойСкидки" Тогда
ТоварыПроцентРучнойСкидкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСуммаРучнойСкидки" Тогда
ТоварыСуммаРучнойСкидкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСумма" Тогда
ТоварыСуммаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСуммаНДС" Тогда
ТоварыСуммаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСерия" Тогда
ТоварыСерияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСклад" Тогда
ТоварыСкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыПодразделение" Тогда
ТоварыПодразделениеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыОтмененоПричиныОтменыНеИспользуются" Тогда
ТоварыОтмененоПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыОтменено" Тогда
ТоварыОтмененоПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНоменклатураПартнера" Тогда
ТоварыНоменклатураПартнераПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Подразделение" Тогда
ПодразделениеПриИзменении(Элемент);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда)
Если Команда.Имя = "ОткрытьПодбор" Тогда
ОткрытьПодбор(Команда);
ИначеЕсли Команда.Имя = "ДополнитьМногооборотнойТарой" Тогда
ДополнитьМногооборотнойТарой(Команда);
ИначеЕсли Команда.Имя = "ПоискПоШтрихкоду" Тогда
ПоискПоШтрихкодуВыполнить(Команда);
ИначеЕсли Команда.Имя = "ЗагрузитьДанныеИзТСД" Тогда
ЗагрузитьДанныеИзТСД(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьСкладВВыделенныхСтроках" Тогда
ЗаполнитьСкладВВыделенныхСтроках(Команда);
ИначеЕсли Команда.Имя = "ЗагрузитьИзВнешнегоФайла" Тогда
ЗагрузитьИзВнешнегоФайла(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьЦеныПоСоглашению" Тогда
АвтоТест_ЗаполнитьЦеныПоСоглашению(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьЦеныВыделенныхСтрокПоВидуЦен" Тогда
ЗаполнитьЦеныВыделенныхСтрокПоВидуЦен(Команда);
ИначеЕсли Команда.Имя = "СчитатьКартуЛояльности" Тогда
СчитатьКартуЛояльности(Команда);
ИначеЕсли Команда.Имя = "РассчитатьСкидкиНаценки" Тогда
РассчитатьСкидкиНаценки(Команда);
ИначеЕсли Команда.Имя = "ОтменитьРучныеСкидки" Тогда
ОтменитьРучныеСкидки(Команда);
ИначеЕсли Команда.Имя = "НазначитьРучнуюСкидку" Тогда
НазначитьРучнуюСкидку(Команда);
ИначеЕсли Команда.Имя = "НазначитьРучнуюСкидкуВыделенныхСтрок" Тогда
НазначитьРучнуюСкидкуДляВыделенныхСтрок(Команда);
ИначеЕсли Команда.Имя = "НазначитьАвтоматическиеСкидки" Тогда
НазначитьАвтоматическиеСкидки(Команда);
ИначеЕсли Команда.Имя = "СоставНабора" Тогда
СоставНабора(Команда);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ)
Если Элемент.Имя = "Товары" Тогда
ТоварыПередУдалением(Элемент, Отказ);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Если Элемент.Имя = "Товары" Тогда
ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Нажатие_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Нажатие.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломИзменения.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередУдалением_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередУдалением.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломДобавления_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ, Копирование, Родитель, Группа)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломДобавления.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса()
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбщегоНазначенияУТКлиент.ПослеИзмененияРеквизитаЗависящегоОтСтатуса(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ВернутьМногооборотнуюТаруПриИзмененииСервер()
Если Не Объект.ВернутьМногооборотнуюТару Тогда
Объект.ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбновитьДубликатыЗависимыхРеквизитов();
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПодготовитьЗаполнитьУстановитьВидимостьСерий()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаказКлиента));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = ТекущаяСтрока.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущаяСтрока.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
ТоварыСерияПересчитатьЦены(ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПересчитатьЦены(ТекущаяСтрока = Неопределено)
Если ТекущаяСтрока = Неопределено Тогда
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
КонецЕсли;
Если ЦенообразованиеКлиент.НеобходимПересчетЦеныПриИзменении(ТекущаяСтрока.Номенклатура, "Серия", Объект.Дата) Тогда
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ДобавитьДействиеЗаполненияЦен(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры",
Новый Структура("Номенклатура", "ТипНоменклатуры"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакАртикул",
Новый Структура("Номенклатура", "Артикул"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакВариантОформленияПродажи",
Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары,ПараметрыЗаполненияРеквизитов);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(ОбеспечениеВДокументахКлиентСервер.РежимПодборСерий());
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму(
"Обработка.ЗапросКоличестваИСерий.Форма",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
Новый ОписаниеОповещения("ОбработатьВыборСкладаИСерии", ЭтотОбъект, ПараметрыФормы));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораДатаОтгрузки()
МаксДатаАванса = ПродажиСервер.МаксимальнаяДатаАванса(Объект.ЭтапыГрафикаОплаты);
ДатаОтгрузкиСписокВыбора = Элементы.ДатаОтгрузки.СписокВыбора;
Если ЗначениеЗаполнено(МаксДатаАванса) Тогда
ПредставлениеМаксДатаАванса = "%МаксДатаАванса%";
ПредставлениеМаксДатаАванса = СтрЗаменить(ПредставлениеМаксДатаАванса, "%МаксДатаАванса%", Формат(МаксДатаАванса,"ДЛФ=D"));
ДатаОтгрузкиСписокВыбора.Очистить();
ДатаОтгрузкиСписокВыбора.Добавить(МаксДатаАванса, ПредставлениеМаксДатаАванса);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Процедура ТоварыПослеУдаленияСервер()
ПриИзмененииСкладаВТабличнойЧастиСервер();
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ИспользоватьСтатусы = Не Объект.ЭтоЗаказКакСчет;
Элементы.Статус.Видимость = ИспользоватьСтатусы;
Элементы.ЗакрытьЗаказ.Видимость = ИспользоватьСтатусы;
ВалютаДокумента = Объект.Валюта;
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовПродажи(Объект.Склад);
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
УстановитьПараметрыВыбораТоварыСклад();
ИспользоватьСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
ИспользоватьОтгрузкуБезПереходаПраваСобственности = ПолучитьФункциональнуюОпцию("ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0");
ИспользоватьГрафикиОплаты = ПолучитьФункциональнуюОпцию("ИспользоватьГрафикиОплаты");
ИспользоватьНесколькоОрганизаций = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций");
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности");
ИспользоватьПередачуТоваровНаХранение = ПолучитьФункциональнуюОпцию("ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи");
ИспользоватьОказаниеАгентскихУслугПриЗакупке = ПолучитьФункциональнуюОпцию("ИспользоватьОказаниеАгентскихУслугПриЗакупке");
ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента = ПолучитьФункциональнуюОпцию("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента");
Если Объект.ЭтоЗаказКакСчет Тогда
ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента = Ложь;
ИспользоватьНаправленияДеятельности = Ложь;
КонецЕсли;
ОплатаБонуснымиБаллами = Объект.Товары.Итог("СуммаБонусныхБалловКСписанию") <> 0
Или Объект.Товары.Итог("СуммаБонусныхБалловКСписаниюВВалюте") <> 0;
ДатаДокумента = ?(Параметры.Ключ.Пустая(), ТекущаяДатаСеанса(), Объект.Дата);
РозничныеПродажиКлиентСервер.УстановитьДоступностьКомандОплатыБонуснымиБаллами(Элементы, ДатаДокумента);
ЗаполнитьСписокВыбораХозяйственныхОпераций(ИспользоватьОказаниеАгентскихУслугПриЗакупке);
Если Не ИспользоватьСоглашенияСКлиентами Тогда
ПараметрыВыбораВидаЦены = ЗначениеНастроекПовтИсп.ПараметрыВыбораВидаЦеныПоУмолчанию();
ПараметрыВыбораВидаЦены.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораВидаЦены.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораВидаЦены.Статус = Перечисления.СтатусыДействияВидовЦен.Действует;
ВидЦеныПоУмолчанию = ЗначениеНастроекПовтИсп.ВидЦеныПоУмолчанию(ПараметрыВыбораВидаЦены);
КонецЕсли;
ХозяйственнаяОперацияДоговора = ПолучитьХозяйственнуюОперациюДоговора(Объект.ХозяйственнаяОперация);
УстановитьСвязиПараметровВыбораДоговора();
КомиссионныеПродажи25 = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И (Не ИспользоватьСоглашенияСКлиентами Или ПродажиСервер.ЭтоСоглашениеПоНовойКомиссии(Объект.Соглашение));
ЗаполнитьСписокВыбораОпераций(Ложь);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
УстановитьДоступностьЭлементовПоСтатусуСервер();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ОбновитьДубликатыЗависимыхРеквизитов();
ОбновитьСостояниеСервер();
УстановитьВидимостьЭлементовПоОперацииСервер();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаказКлиента));
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
ЗаполнитьСписокВыбораДатаОтгрузки();
Элементы.Организация.Видимость = ИспользоватьНесколькоОрганизаций;
УстановитьВидимостьЭлементовФормыДатОтгрузки();
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
ДанныеПоФоновомуЗаданиюПолучениеПеревозчиков = ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект,,,, Истина);
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
УстановитьВидимостьОбеспечения();
РассылкиИОповещенияКлиентам.УстановитьВидимостьПодпискиНаОповещенияВОбъекте(
Элементы.ГруппаПодпискаНаОповещения,
Объект.Партнер,
ПредопределенноеЗначение("Перечисление.ТипыСобытийОповещений.ИзменениеСостоянияЗаказа")
);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаСостояниеЭДО", "Видимость", ИспользоватьСтатусы, Истина);
ИнициироватьПолучениеДокументовНаОсновании();
УстановитьПривилегированныйРежим(Истина);
ВариантОбеспеченияПоУмолчанию = ВариантОбеспеченияПоУмолчанию();
ВариантОбеспеченияИФлагОбособленно = ПродажиСервер.ВариантОбеспеченияИФлагОбособленноПоУмолчанию(
Объект.Соглашение,
Объект.Статус,
ВариантОбеспеченияПоУмолчанию,
Не Объект.ЭтоЗаказКакСчет
);
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
ПараметрыЗаполнения = Документы.ЗаказКлиента.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьХозяйственнуюОперациюДоговора(ХозяйственнаяОперация)
ХозяйственнаяОперацияДоговора = ХозяйственнаяОперация;
Если ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиентуРеглУчет")
ИЛИ ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности") Тогда
ХозяйственнаяОперацияДоговора = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту");
ИначеЕсли ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияЧерезКомиссионера")
ИЛИ ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности") Тогда
ХозяйственнаяОперацияДоговора = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию");
КонецЕсли;
Возврат ХозяйственнаяОперацияДоговора;
КонецФункции
&НаКлиенте
Процедура ПодключитьОбработчикОжиданияДанныеДокументовНаОсновании()
Если ЗначениеЗаполнено(ДанныеПоФоновомуЗаданиюПолучениеДокументовНаОсновании) Тогда
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбновитьТекстДокументыНаОсновании", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(
ДанныеПоФоновомуЗаданиюПолучениеДокументовНаОсновании, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьОбработчикОжиданияПолучениеПеревозчиков()
Если ДанныеПоФоновомуЗаданиюПолучениеПеревозчиков.Свойство("ИдентификаторЗадания") Тогда
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбновитьСписокПеревозчиковОповещение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(
ДанныеПоФоновомуЗаданиюПолучениеПеревозчиков, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСписокПеревозчиковОповещение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
ДоставкаТоваровКлиент.ОбновитьСписокПеревозчиков(Элементы.ПеревозчикПартнер.СписокВыбора, Результат);
ОбновитьОтображениеДанных(Элементы.ПеревозчикПартнер);
ДанныеПоФоновомуЗаданиюПолучениеПеревозчиков = Новый Структура;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказателиЗаказа(Форма)
КоллекцияТовары = Форма.Объект.Товары;
Форма.СуммаЗаказаноСЗалоговойТарой = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаСНДС") - КоллекцияТовары.Итог("СуммаСНДСОтменено"),
КоллекцияТовары.Итог("СуммаСНДСБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары"));
Форма.СуммаЗаказано = КоллекцияТовары.Итог("СуммаСНДСБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары");
Форма.СуммаЗалогаЗаТару = ?(Форма.Объект.ТребуетсяЗалогЗаТару,(КоллекцияТовары.Итог("СуммаСНДС") - КоллекцияТовары.Итог("СуммаСНДСОтменено"))
- (КоллекцияТовары.Итог("СуммаСНДСБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаСНДСОтмененоБезВозвратнойТары")),0);
Форма.СуммаНДСЗаказано = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаНДС") - КоллекцияТовары.Итог("СуммаНДСОтменено"),
КоллекцияТовары.Итог("СуммаНДСБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаНДСОтмененоБезВозвратнойТары"));
СуммаАвтоСкидки = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаАвтоматическойСкидки") - КоллекцияТовары.Итог("СуммаАвтоматическойСкидкиОтменено"),
КоллекцияТовары.Итог("СуммаАвтоматическойСкидкиБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаАвтоматическойСкидкиОтмененоБезВозвратнойТары"));
СуммаРучнойСкидки = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаРучнойСкидки") - КоллекцияТовары.Итог("СуммаРучнойСкидкиОтменено"),
КоллекцияТовары.Итог("СуммаРучнойСкидкиБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаРучнойСкидкиОтмененоБезВозвратнойТары"));
СуммаСуммаБонусныхБалловКСписаниюВВалюте = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаБонусныхБалловКСписаниюВВалюте") - КоллекцияТовары.Итог("СуммаБонусныхБалловКСписаниюВВалютеОтменено"),
КоллекцияТовары.Итог("СуммаБонусныхБалловКСписаниюВВалютеБезВозвратнойТары") - КоллекцияТовары.Итог("СуммаБонусныхБалловКСписаниюВВалютеОтмененоБезВозвратнойТары"));
Форма.СуммаСкидки = СуммаАвтоСкидки + СуммаРучнойСкидки + СуммаСуммаБонусныхБалловКСписаниюВВалюте;
Если КоллекцияТовары.Итог("СуммаСНДСОтменено") = КоллекцияТовары.Итог("СуммаСНДС") Тогда
Форма.ВсеСтрокиОтменены = Истина;
Иначе
Форма.ВсеСтрокиОтменены = Ложь;
КонецЕсли;
ОтображатьИтогСуммыНДС = УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаПродажи(Форма.Объект.НалогообложениеНДС);
Если ОтображатьИтогСуммыНДС Тогда
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДС;
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаСНДС;
Иначе
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДС;
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаБезНДС;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизиты()
Возврат Новый Структура(
"БезВозвратнойТары,ОтмененоБезВозвратнойТары,Отменено",
"Сумма,СуммаНДС,СуммаСНДС,СуммаРучнойСкидки,СуммаАвтоматическойСкидки,СуммаБонусныхБалловКСписаниюВВалюте",
"Сумма,СуммаНДС,СуммаСНДС,СуммаРучнойСкидки,СуммаАвтоматическойСкидки,СуммаБонусныхБалловКСписаниюВВалюте",
"Сумма,СуммаНДС,СуммаСНДС,СуммаРучнойСкидки,СуммаАвтоматическойСкидки,СуммаБонусныхБалловКСписаниюВВалюте");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизитыСтрокой()
Возврат "СуммаБезВозвратнойТары, СуммаНДСБезВозвратнойТары, СуммаСНДСБезВозвратнойТары,
|СуммаРучнойСкидкиБезВозвратнойТары, СуммаАвтоматическойСкидкиБезВозвратнойТары,
|СуммаБонусныхБалловКСписаниюВВалютеБезВозвратнойТары,
|СуммаОтмененоБезВозвратнойТары, СуммаНДСОтмененоБезВозвратнойТары, СуммаСНДСОтмененоБезВозвратнойТары,
|СуммаРучнойСкидкиОтмененоБезВозвратнойТары, СуммаАвтоматическойСкидкиОтмененоБезВозвратнойТары,
|СуммаБонусныхБалловКСписаниюВВалютеОтмененоБезВозвратнойТары,
|СуммаОтменено, СуммаНДСОтменено, СуммаСНДСОтменено,
|СуммаРучнойСкидкиОтменено, СуммаАвтоматическойСкидкиОтменено,
|СуммаБонусныхБалловКСписаниюВВалютеОтменено";
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Процедура ОтменитьВыделенныеСтрокиНаСервере()
Если ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры Тогда
ЗаполнитьСтатусыУказанияСерий();
КонецЕсли;
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
КомиссионныеПродажи25 = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И (Не ИспользоватьСоглашенияСКлиентами Или ПродажиСервер.ЭтоСоглашениеПоНовойКомиссии(Объект.Соглашение));
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
И ИспользоватьНаправленияДеятельности Тогда
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(Объект,
ХозяйственнаяОперацияДоговора,
Объект.Валюта,
Объект.НаправлениеДеятельности,
КомиссионныеПродажи25
);
Иначе
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(Объект,
ХозяйственнаяОперацияДоговора,
Объект.Валюта,,
КомиссионныеПродажи25
);
КонецЕсли;
Если Договор <> Объект.Договор Тогда
Объект.Договор = Договор;
ЗаполнитьГруппуФинУчета();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Договор");
ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчет, Объект.БанковскийСчетКонтрагента);
ПодготовитьЗаполнитьУстановитьВидимостьСборкиИДоставки();
УстановитьВидимостьКомандыЗаполненияВидаЦенПоДоговору();
ЗаполнитьПараметрыСвязиВидаЦенИПризнакЦенаВключаетНДС();
ДоговорПоНовойКомиссии = ЭтоДоговорПоНовойКомиссии(Объект.Договор, Объект.ХозяйственнаяОперация);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьЭлементовПоСтатусуСервер()
УстановитьПодписку = Ложь;
Если Объект.Статус = Перечисления.СтатусыЗаказовКлиентов.НеСогласован И ИспользоватьСтатусы Тогда
УстановитьПодписку = Ложь;
ИначеЕсли (Объект.Статус = Перечисления.СтатусыЗаказовКлиентов.НеСогласован И Не ИспользоватьСтатусы)
ИЛИ Объект.Статус = Перечисления.СтатусыЗаказовКлиентов.КОбеспечению
ИЛИ Объект.Статус = Перечисления.СтатусыЗаказовКлиентов.КОтгрузке
ИЛИ Объект.Статус = Перечисления.СтатусыЗаказовКлиентов.Закрыт Тогда
УстановитьПодписку = Объект.Согласован;
КонецЕсли;
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Дата");
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("Соглашение");
МассивЭлементов.Добавить("Валюта");
МассивЭлементов.Добавить("ЦенаВключаетНДС");
МассивЭлементов.Добавить("НалогообложениеНДС");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("Договор");
МассивЭлементов.Добавить("Склад");
МассивЭлементов.Добавить("НеОтгружатьЧастями");
МассивЭлементов.Добавить("ДатаОтгрузки");
МассивЭлементов.Добавить("ДатаСогласования");
МассивЭлементов.Добавить("ХозяйственнаяОперация");
МассивЭлементов.Добавить("КартаЛояльности");
МассивЭлементов.Добавить("ВернутьМногооборотнуюТару");
МассивЭлементов.Добавить("СрокВозвратаМногооборотнойТары");
МассивЭлементов.Добавить("ТребуетсяЗалогЗаТару");
МассивЭлементов.Добавить("Подразделение");
МассивЭлементов.Добавить("ТоварыНоменклатура");
МассивЭлементов.Добавить("ТоварыХарактеристика");
МассивЭлементов.Добавить("ТоварыКоличествоУпаковок");
МассивЭлементов.Добавить("ТоварыУпаковка");
МассивЭлементов.Добавить("ТоварыВидЦены");
МассивЭлементов.Добавить("ТоварыЦена");
МассивЭлементов.Добавить("ТоварыСтавкаНДС");
МассивЭлементов.Добавить("ТоварыПроцентРучнойСкидки");
МассивЭлементов.Добавить("ТоварыСуммаРучнойСкидки");
МассивЭлементов.Добавить("ТоварыСумма");
МассивЭлементов.Добавить("ТоварыСуммаНДС");
МассивЭлементов.Добавить("ТоварыСодержание");
МассивЭлементов.Добавить("Товары;ПередНачаломДобавления,ПередУдалением;ТоварыДатаОтгрузки,ТоварыВариантОбеспечения");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюДобавить");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюСкопировать");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюУдалить");
МассивЭлементов.Добавить("ТоварыДобавить");
МассивЭлементов.Добавить("ТоварыИзменить");
МассивЭлементов.Добавить("ТоварыСкопировать");
МассивЭлементов.Добавить("ТоварыУдалить");
МассивЭлементов.Добавить("ТоварыОткрытьПодбор");
МассивЭлементов.Добавить("ТоварыДополнитьМногооборотнойТарой");
МассивЭлементов.Добавить("ТоварыПоискПоШтрихкоду");
МассивЭлементов.Добавить("ТоварыЗагрузитьДанныеИзТСД");
МассивЭлементов.Добавить("ТоварыЗаполнитьСкладВВыделенныхСтроках");
МассивЭлементов.Добавить("ТоварыЗагрузитьИзВнешнегоФайла");
МассивЭлементов.Добавить("ТоварыСоставНабора");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныПоСоглашению");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦен");
МассивЭлементов.Добавить("СчитатьКартуЛояльности");
МассивЭлементов.Добавить("СчитатьКартуЛояльностиКлиент");
МассивЭлементов.Добавить("КартаЛояльности");
МассивЭлементов.Добавить("ТоварыРассчитатьСкидкиНаценки");
МассивЭлементов.Добавить("ТоварыОтменитьРучныеСкидки");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидку");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидкуВыделенныхСтрок");
МассивЭлементов.Добавить("ТоварыНазначитьАвтоматическиеСкидки");
ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтаФорма, МассивЭлементов, УстановитьПодписку);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовПоОперацииСервер()
Перем МассивВсехРеквизитов;
Перем МассивРеквизитовОперации;
Документы.ЗаказКлиента.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
Объект.ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ДенежныеСредстваСервер.УстановитьВидимостьЭлементовПоМассиву(
Элементы,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ЭтоПередачаТоваров = (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи);
ЭтоПоставкаПодПринципала = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала;
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ДекорацияЭтапыОплаты");
МассивЭлементов.Добавить("Расчеты");
МассивЭлементов.Добавить("ДекорацияЗаголовокОплата");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", Не ЭтоПередачаТоваров);
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыРассчитатьСкидкиНаценки");
МассивЭлементов.Добавить("ТоварыОтменитьРучныеСкидки");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидку");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидкуВыделенныхСтрок");
МассивЭлементов.Добавить("ТоварыНазначитьАвтоматическиеСкидки");
МассивЭлементов.Добавить("ТоварыОткрытьИнформациюОСкидках");
МассивЭлементов.Добавить("КонтекстноеМенюТоварыОткрытьИнформациюОСкидках");
МассивЭлементов.Добавить("СчитатьКартуЛояльности");
МассивЭлементов.Добавить("СчитатьКартуЛояльностиКлиент");
МассивЭлементов.Добавить("КартаЛояльности");
МассивЭлементов.Добавить("СуммаСкидки");
МассивЭлементов.Добавить("ДекорацияОтступТребуетсяЗалогЗаТару");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", Не (ЭтоПередачаТоваров ИЛИ ЭтоПоставкаПодПринципала));
Элементы.ЗачетОплатыФорма.Видимость = НЕ ЭтоПередачаТоваров И Элементы.ЗачетОплатыФорма.Видимость;
НоменклатураСервер.УстановитьПараметрыВыбораНоменклатуры(Объект.ХозяйственнаяОперация, Элементы.ТоварыНоменклатура);
УстановитьВидимостьПоляПартнер();
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость,
Объект.Договор);
Элементы.ВернутьМногооборотнуюТару.Доступность = (НЕ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала);
Элементы.ГруппаТара.Видимость = НЕ ((Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию И КомиссионныеПродажи25)
Или (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи
И Не Объект.ВернутьМногооборотнуюТару));
Элементы.ГруппаТребуетсяЗалогЗаТару.Видимость = НЕ ((Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию И КомиссионныеПродажи25)
Или (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи
И Не Объект.ВернутьМногооборотнуюТару));
УстановитьВидимостьКомандыЗаполненияВидаЦенПоДоговору();
ЗаполнитьПараметрыСвязиВидаЦенИПризнакЦенаВключаетНДС();
КонецПроцедуры
&НаСервере
Функция ЗаполнитьСкладВВыделенныхСтрокахНаСервере(Знач МассивВыделенныхСтрок, Склад)
ЗаполненоСтрок = СкладыСервер.ЗаполнитьСкладыВВыделенныхСтроках(Объект.Товары, МассивВыделенныхСтрок, Склад);
Если ЗаполненоСтрок > 0 Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
Возврат ЗаполненоСтрок;
КонецФункции
&НаСервере
Функция ОтменитьНепоставленныеСтрокиСервер(ПричинаОтмены, Знач ПроверятьОстатки = Ложь)
СтруктураКорректировки = ЗаказыСервер.СтруктураКорректировкиСтрокЗаказа();
СтруктураКорректировки.ДокументОбъект = Объект;
СтруктураКорректировки.ПричинаОтмены = ПричинаОтмены;
СтруктураКорректировки.ПроверятьОстатки = ПроверятьОстатки;
СтруктураКорректировки.ОтменитьНеотработанныеСтроки = Истина;
СтруктураРезультата = ПродажиСервер.СкорректироватьСтрокиЗаказа(СтруктураКорректировки);
КоличествоОтмененныхСтрок = СтруктураРезультата.КоличествоСтрок;
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ОбновитьДубликатыЗависимыхРеквизитов();
Если КоличествоОтмененныхСтрок > 0 Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
Возврат КоличествоОтмененныхСтрок;
КонецФункции
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ОбновитьСостояниеСервер()
Документы.ЗаказКлиента.РассчитатьСостояние(Объект.Ссылка, Объект.Договор, ЭтотОбъект);
Элементы.Состояние.Гиперссылка = ПравоДоступа("Просмотр", Метаданные.Отчеты.СостояниеВыполненияДокументов);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСостояниеКлиент(ПроверитьЗаданияКОтражениюСостоянияЗаказов = Ложь, СостояниеЗаказа = Неопределено)
СостояниеЗаказа = ПродажиКлиент.СтруктураСостоянияЗаказа();
Если ПроверитьЗаданияКОтражениюСостоянияЗаказов Тогда
СостоянияДокументовКлиент.ДополнитьСтруктуруСостоянияЗаказа(СостояниеЗаказа);
КонецЕсли;
ЗаполнитьЗначенияСвойств(СостояниеЗаказа, ЭтотОбъект);
РассчитатьСостояниеЗаказа(
Объект.Ссылка,
Объект.Договор,
СостояниеЗаказа,
Элементы.Состояние.Гиперссылка,
ПроверитьЗаданияКОтражениюСостоянияЗаказов);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, СостояниеЗаказа);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура РассчитатьСостояниеЗаказа(
Ссылка,
Договор,
СостояниеЗаказа,
Гиперссылка,
ПроверитьЗаданияКОтражениюСостоянияЗаказов = Ложь)
Документы.ЗаказКлиента.РассчитатьСостояние(
Ссылка,
Договор,
СостояниеЗаказа,
ПроверитьЗаданияКОтражениюСостоянияЗаказов);
Гиперссылка = ПравоДоступа("Просмотр", Метаданные.Отчеты.СостояниеВыполненияДокументов);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Контрагент, КорреспондирующийСчет)
Возврат ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент,,, КорреспондирующийСчет);
КонецФункции
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение)
Если Не ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеПодбора(
ЭтотОбъект,
ВыбранноеЗначение,
"ОбработкаВыбораПодборНаКлиентеПослеВопроса");
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиентеПослеВопроса(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Отмена Тогда
Возврат;
КонецЕсли;
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.НеОтгружатьЧастями = Ложь;
УстановитьВидимостьЭлементовФормыДатОтгрузки();
КонецЕсли;
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
ОбработкаВыбораПодборНаСервере(ДополнительныеПараметры);
КонецПроцедуры
&НаСервере
Процедура СчитанаКартаЛояльностиНаСервере(ДанныеКартыЛояльности)
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Партнер) И ДанныеКартыЛояльности.Партнер <> Объект.Партнер Тогда
Объект.Партнер = ДанныеКартыЛояльности.Партнер;
Объект.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
Объект.Соглашение = Справочники.СоглашенияСКлиентами.ПустаяСсылка();
ПартнерПриИзмененииСервер();
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Соглашение)
И ДанныеКартыЛояльности.Соглашение <> Объект.Соглашение
И ДанныеКартыЛояльности.СоглашениеДоступно Тогда
Объект.Соглашение = ДанныеКартыЛояльности.Соглашение;
СоглашениеПриИзмененииСервер(Истина);
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Контрагент)
И ДанныеКартыЛояльности.Контрагент <> Объект.Контрагент
И ДанныеКартыЛояльности.КонтрагентДоступен Тогда
Объект.Контрагент = ДанныеКартыЛояльности.Контрагент;
КонтрагентПриИзмененииСервер();
КонецЕсли;
ИспользоватьБонусныеПрограммыЛояльности = ИспользоватьБонусныеПрограммыЛояльности(Объект.КартаЛояльности);
УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ИспользоватьБонусныеПрограммыЛояльности(КартаЛояльности)
Если Не ЗначениеЗаполнено(КартаЛояльности) Тогда
Возврат Ложь;
КонецЕсли;
Возврат СкидкиНаценкиСервер.ИспользоватьБонусныеПрограммыЛояльности(КартаЛояльности);
КонецФункции
&НаКлиенте
Процедура СчитанаКартаЛояльности(Знач Оповещение, КартаЛояльности)
ДанныеКартыЛояльности = КартыЛояльностиВызовСервера.ПолучитьДанныеКартыЛояльности(КартаЛояльности);
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Ссылка) Тогда
Если Не ДанныеКартыЛояльности.ПартнерДоступен Тогда
ПоказатьПредупреждение(Новый ОписаниеОповещения("СчитанаКартаЛояльностиЗавершение", ЭтотОбъект, Новый Структура("Оповещение", Оповещение)), НСтр("ru = 'Нет доступа к партнеру-владельцу карты лояльности.'"));
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(ДанныеКартыЛояльности.Партнер) Тогда
Если Объект.КартаЛояльности <> КартаЛояльности Тогда
ПрименитьОплатуБонуснымиБаллами(Неопределено);
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Модифицированность = Истина;
Объект.КартаЛояльности = КартаЛояльности;
ВыполнитьОбработкуОповещения(Оповещение);
Возврат;
ИначеЕсли Объект.Партнер <> ДанныеКартыЛояльности.Партнер Тогда
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
Если Не РедактированиеРеквизитовEDIКлиентСервер.РеквизитДоступенДляРедактирования(ЭтотОбъект, "Покупатель") Тогда
ТекстСообщения = НСтр("ru = 'Карта лояльности принадлежит партнеру ""%1"". Изменение партнера невозможно'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ДанныеКартыЛояльности.Партнер);
ПоказатьПредупреждение(, ТекстСообщения);
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Оповещение", Оповещение);
ДополнительныеПараметры.Вставить("КартаЛояльности", КартаЛояльности);
ДополнительныеПараметры.Вставить("ДанныеКартыЛояльности", ДанныеКартыЛояльности);
ПоказатьВопрос(
Новый ОписаниеОповещения("СчитанаКартаЛояльностиВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Карта лояльности принадлежит партнеру ""%1"". Изменить партнера в документе?'"), ДанныеКартыЛояльности.Партнер),
РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
Иначе
ВопросОбИзмененииКонтрагента = Ложь;
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Контрагент)
И ЗначениеЗаполнено(Объект.Контрагент) И ДанныеКартыЛояльности.Контрагент <> Объект.Контрагент Тогда
Если Не РедактированиеРеквизитовEDIКлиентСервер.РеквизитДоступенДляРедактирования(ЭтотОбъект, "Покупатель") Тогда
ТекстСообщения = НСтр("ru = 'Карта лояльности принадлежит контрагенту ""%1"". Изменение контрагента невозможно'");
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ДанныеКартыЛояльности.Контрагент);
ПоказатьПредупреждение(, ТекстСообщения);
Возврат;
КонецЕсли;
ВопросОбИзмененииКонтрагента = Истина;
КонецЕсли;
ВопросОбИзмененииСоглашения = Ложь;
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(ДанныеКартыЛояльности.Соглашение)
И ЗначениеЗаполнено(Объект.Соглашение) И ДанныеКартыЛояльности.Соглашение <> Объект.Соглашение Тогда
ВопросОбИзмененииСоглашения = Истина;
КонецЕсли;
Если ВопросОбИзмененииКонтрагента Или ВопросОбИзмененииСоглашения Тогда
Если ВопросОбИзмененииКонтрагента И ВопросОбИзмененииСоглашения Тогда
ТекстВопроса = НСтр("ru = 'Для карты лояльности заданы контрагент ""%1"" и соглашение ""%2"". Применить карту лояльности и подставить в документ контрагента ""%1"" и соглашение ""%2""?'");
ИначеЕсли ВопросОбИзмененииКонтрагента Тогда
ТекстВопроса = НСтр("ru = 'Для карты лояльности задан контрагент ""%1"". Применить карту лояльности и подставить в документ контрагента ""%1""?'");
ИначеЕсли ВопросОбИзмененииСоглашения Тогда
ТекстВопроса = НСтр("ru = 'Для карты лояльности задано соглашение ""%2"". Применить карту лояльности и подставить в документ соглашение ""%2""?'");
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Оповещение", Оповещение);
ДополнительныеПараметры.Вставить("КартаЛояльности", КартаЛояльности);
ДополнительныеПараметры.Вставить("ДанныеКартыЛояльности", ДанныеКартыЛояльности);
ПоказатьВопрос(
Новый ОписаниеОповещения("СчитанаКартаЛояльностиВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, ДанныеКартыЛояльности.Контрагент, ДанныеКартыЛояльности.Соглашение),
РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Модифицированность = Истина;
Объект.КартаЛояльности = КартаЛояльности;
СчитанаКартаЛояльностиНаСервере(ДанныеКартыЛояльности);
Иначе
ИспользоватьБонусныеПрограммыЛояльности = ИспользоватьБонусныеПрограммыЛояльности(Неопределено);
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности();
КонецЕсли;
ВыполнитьОбработкуОповещения(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура СчитанаКартаЛояльностиВопросЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Нет Тогда
ИспользоватьБонусныеПрограммыЛояльности = ИспользоватьБонусныеПрограммыЛояльности(Объект.КартаЛояльности);
УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности();
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.Оповещение);
ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Модифицированность = Истина;
Объект.КартаЛояльности = ДополнительныеПараметры.КартаЛояльности;
СчитанаКартаЛояльностиНаСервере(ДополнительныеПараметры.ДанныеКартыЛояльности);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СчитанаКартаЛояльностиЗавершение(ДополнительныеПараметры) Экспорт
Оповещение = ДополнительныеПараметры.Оповещение;
ВыполнитьОбработкуОповещения(Оповещение);
КонецПроцедуры
&НаСервере
Функция АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(ТолькоВыделенныеСтроки)
СтруктураПараметров = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыАдресДанныхДляРасчетаРучныхСкидок();
СтруктураПараметров.ИмяТаблицы = "Товары";
СтруктураПараметров.ТолькоДляВыделенныхСтрок = ТолькоВыделенныеСтроки;
Возврат СкидкиНаценкиЗаполнениеСервер.АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(
ЭтаФорма, УникальныйИдентификатор, СтруктураПараметров);
КонецФункции
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьЭтапыОплатыНажатиеЗавершение", ЭтотОбъект);
ПоместитьЭтапыОплатыВоВременноеХранилище(Элемент.Имя);
ВзаиморасчетыКлиент.НадписьЭтапыОплатыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка, Оповещение);
КонецПроцедуры
&НаСервере
Процедура ПоместитьЭтапыОплатыВоВременноеХранилище(ИмяЭлемента)
ВзаиморасчетыСервер.ПоместитьЭтапыОплатыВоВременноеХранилище(ЭтаФорма, ИмяЭлемента);
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ИзмененныеРеквизиты = Результат.СтарыеЗначенияИзмененныхРеквизитов;
ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты);
Если ИзмененныеРеквизиты.Количество() > 0 Тогда
Если ИзмененныеРеквизиты.Свойство("ФормаОплаты") Тогда
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецЕсли;
ОбновитьБанковскийСчетКонтрагента();
КонецЕсли;
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаСервере
Функция ПоместитьВоВременноеХранилищеНаСервере(ИмяТЧ,Идентификатор = "")
Возврат ПоместитьВоВременноеХранилище(Объект[ИМЯТЧ].Выгрузить(),Идентификатор);
КонецФункции
&НаСервере
Процедура ЗаполнитьУсловияПродаж()
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоУмолчанию();
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ВалютаДокумента = Объект.Валюта;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
ХозяйственнаяОперацияПриИзмененииСервер();
КонецЕсли;
ЗаполнитьСписокВыбораОпераций();
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость, Объект.Договор);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьДоступностьЭлементовВозвратнойТары(Форма)
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("СрокВозвратаМногооборотнойТары");
МассивЭлементов.Добавить("ТребуетсяЗалогЗаТару");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Форма.Элементы,
МассивЭлементов,
"Доступность",
Форма.Объект.ВернутьМногооборотнуюТару);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(АдресТарыВХранилище)
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Истина));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСумму");
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийДобавленныеСтроки = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(СтруктураДействийИзмененныеСтроки);;
СтруктураДействийДобавленныеСтроки.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействийДобавленныеСтроки,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(
Объект,
АдресТарыВХранилище,
"Товары",
"Номенклатура,Характеристика,Склад,ДатаОтгрузки",
СтруктураДействийИзмененныеСтроки,
СтруктураДействийДобавленныеСтроки,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура ОбновитьДубликатыЗависимыхРеквизитов()
СтруктураДополнительныхДействий = Новый Структура;
СтруктураДополнительныхДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару, СтруктураДополнительныхДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьОбеспечения()
ЕстьПраво = ОбеспечениеВДокументахСервер.ЕстьПравоПросмотраГиперссылкиСостоянияОбеспечения();
Элементы.СтраницыГиперссылкаСостояниеОбеспечения.Видимость = ЕстьПраво И ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента;
ОбеспечениеВДокументахСервер.НастроитьГиперссылкиСостояниеОбеспечения(ЭтотОбъект);
Элементы.ДатаОтгрузки.Подсказка = ОбеспечениеВДокументахСервер.ПодсказкаДатаОтгрузки();
Если Не ПравоДоступа("Добавление", Метаданные.Документы.КорректировкаНазначенияТоваров)
Или Не ПолучитьФункциональнуюОпцию("ИспользоватьОбособленноеОбеспечениеЗаказов")
Или Объект.ЭтоЗаказКакСчет
Или Не ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента Тогда
Элементы.ТоварыСоздатьКорректировкуНазначенияСнятиеРезерва.Видимость = Ложь;
Элементы.ТоварыСоздатьКорректировкуНазначенияРезервирование.Видимость = Ложь;
КонецЕсли;
МожноСнятьФлагОбособленно = Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала");
УправлениеФлагом = ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента И МожноСнятьФлагОбособленно;
ВидимостьФлага = ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыВключитьОбособленноеОбеспечение",
"Видимость",
УправлениеФлагом);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыВыключитьОбособленноеОбеспечение",
"Видимость",
УправлениеФлагом);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыОбособленно",
"Видимость",
ВидимостьФлага);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыОбособленно",
"Доступность",
УправлениеФлагом);
ВидимостьОбеспечения = ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента И Не Объект.ЭтоЗаказКакСчет;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"НеОтгружатьЧастями",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыВариантОбеспечения",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыДоступно",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыКОбеспечению",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыКонтекстноеМенюКОбеспечению",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыНеОбеспечивать",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыКонтекстноеМенюНеОбеспечивать",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыОтгрузить",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыКонтекстноеМенюОтгрузить",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыРезервировать",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыКонтекстноеМенюРезервировать",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыРезервироватьПоМереПоступления",
"Видимость",
ВидимостьОбеспечения);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыКонтекстноеМенюРезервироватьПоМереПоступления",
"Видимость",
ВидимостьОбеспечения);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЗапретаОтгрузкиПартнеру()
СегментыСервер.УстановитьВидимостьЗапретаОтгрузкиПартнеру(Объект.Партнер, Элементы);
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище)
ПрименитьОплатуБонуснымиБаллами(, Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
СтруктураДействий.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
КонецЕсли;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий,Объект);
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
СтрокаТЧТовары = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров,,"КодСтроки");
Если Объект.НеОтгружатьЧастями Тогда
СтрокаТЧТовары.ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(СтрокаТЧТовары);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ОбновитьКолонкуДоступноСервер();
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДанныеВыбораСкладов(Склад)
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Склады.Ссылка КАК Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка В ИЕРАРХИИ(&ГруппаСкладов)
| И Склады.ЭтоГруппа = ЛОЖЬ
| И Склады.ВыборГруппы <> ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.Запретить)");
Запрос.УстановитьПараметр("ГруппаСкладов", Склад);
МассивСкладов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивСкладов;
КонецФункции
&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Если Копирование Тогда
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтаФорма, "Товары", Отказ, Истина);
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СоставНабора(Команда)
ВыбраннаяСтрока = Элементы.Товары.ТекущаяСтрока;
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если Не ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПоказатьПредупреждение(,НСтр("ru = 'Открытие состава набора возможно только для набора.'"));
Возврат;
КонецЕсли;
ПараметрыКомплекта = Новый Структура;
ПараметрыКомплекта.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыКомплекта.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыКомплекта.Вставить("КолонкиНабора", КолонкиНабора(ЭтаФорма));
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыКомплекта);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОткрытия.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
Если Не РедактированиеРеквизитовEDIКлиентСервер.РеквизитДоступенДляРедактирования(ЭтотОбъект, "Товары.ПоставщикНоменклатура") Тогда
ПараметрыОткрытия.Вставить("ТолькоПросмотр", Истина);
КонецЕсли;
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура НастроитьПодпискуНаОповещения(Команда)
РассылкиИОповещенияКлиентамКлиент.НастроитьПодпискуНаОповещенияИзОбъекта(
Объект.Партнер,
ПредопределенноеЗначение("Перечисление.ТипыСобытийОповещений.ИзменениеСостоянияЗаказа"));
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораОпераций(УстановитьОперацию = Истина)
Если Не ИспользоватьСоглашенияСКлиентами Тогда
ВозможнаРеализацияБезПереходаПраваСобственности = ИспользоватьОтгрузкуБезПереходаПраваСобственности;
ИначеЕсли Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
ВозможнаРеализацияБезПереходаПраваСобственности = Ложь;
Иначе
УстановитьПривилегированныйРежим(Истина);
ВозможнаРеализацияБезПереходаПраваСобственности =
ОбщегоНазначенияУТ.ЗначениеРеквизитаОбъектаТипаБулево(Объект.Соглашение, "ВозможнаРеализацияБезПереходаПраваСобственности");
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Если Элементы.Найти("ХозяйственнаяОперация") <> Неопределено Тогда
Если Не ПолучитьФункциональнуюОпциюФормы("ИспользоватьКомиссиюПриПродажах") Тогда
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
Если Не ИспользоватьПередачуТоваровНаХранение Тогда
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(
Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи);
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(
Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности);
Если Не ВозможнаРеализацияБезПереходаПраваСобственности
Или Не ИспользоватьОтгрузкуБезПереходаПраваСобственности Тогда
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
Иначе
Если ЭлементСписка = Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Добавить(
Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности);
КонецЕсли;
КонецЕсли;
Если Не ИспользоватьОказаниеАгентскихУслугПриЗакупке Тогда
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(
Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала);
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
ЕдинственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1;
Если УстановитьОперацию И ЕдинственнаяОперация И Не ЗначениеЗаполнено(Объект.ХозяйственнаяОперация) Тогда
Объект.ХозяйственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора[0].Значение;
ХозяйственнаяОперацияПриИзмененииСервер();
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ХозяйственнаяОперация",
"ТолькоПросмотр",
ЕдинственнаяОперация И ЗначениеЗаполнено(Объект.ХозяйственнаяОперация));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбораТоварыСклад()
Элементы.ТоварыСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(Элементы.ТоварыСклад, "Ссылка", ДанныеВыбораСкладов(Объект.Склад));
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьГруппуФинУчета()
Если ЗначениеЗаполнено(Объект.Договор) Тогда
Объект.ГруппаФинансовогоУчета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ГруппаФинансовогоУчета");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СкорректироватьСтрокиЗаказа(СтруктураДополнительныхПараметров)
СтруктураКорректировкиСтрокЗаказа = ЗаказыСервер.СтруктураКорректировкиСтрокЗаказа();
ЗаполнитьЗначенияСвойств(СтруктураКорректировкиСтрокЗаказа, СтруктураДополнительныхПараметров);
ДокументПродажи = РеквизитФормыВЗначение("Объект");
СтруктураКорректировкиСтрокЗаказа.ДокументОбъект = ДокументПродажи;
СтруктураКорректировкиСтрокЗаказа.ПроверятьОстатки =
Не (ДокументПродажи.Статус = Перечисления.СтатусыЗаказовКлиентов.НеСогласован);
СтруктураРезультата = ПродажиСервер.СкорректироватьСтрокиЗаказа(СтруктураКорректировкиСтрокЗаказа);
Если СтруктураРезультата.КоличествоСтрок <> 0 ИЛИ СтруктураРезультата.СуммаКорректировки > 0 Тогда
СуммаЗаказано = ДокументПродажи.ПолучитьСуммуЗаказанныхСтрок();
СуммаЗалогаЗаТару = ДокументПродажи.ПолучитьСуммуЗаказанныхСтрок(Истина);
ВзаиморасчетыСервер.ПроверитьЗаполнитьЭтапыГрафикаОплаты(ДокументПродажи);
ЭтапыОплатыСервер.РаспределитьСуммуОтклоненияПоЭтапамГрафикаОплаты(
ДокументПродажи.ЭтапыГрафикаОплаты,
СтруктураРезультата.СуммаКорректировки);
КонецЕсли;
Если СтруктураДополнительныхПараметров.ЗакрыватьЗаказы Тогда
ДокументПродажи.Статус = Перечисления.СтатусыЗаказовКлиентов.Закрыт;
КонецЕсли;
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
ОбновитьДубликатыЗависимыхРеквизитов();
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДСПродажи()
ПараметрыЗаполнения = Документы.ЗаказКлиента.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораНалогообложенияНДСПродажи()
ПараметрыЗаполнения = Документы.ЗаказКлиента.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаСервере
Процедура ЗачтенаОплатаСервер(ИмяСобытия, Параметр, Источник)
ОбновитьСостояниеСервер();
ВзаиморасчетыСервер.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр);
КонецПроцедуры
&НаСервере
Функция ВариантОбеспеченияПоУмолчанию()
ВариантИФлаг = Неопределено;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
ВариантИФлаг = Новый Структура("ВариантОбеспечения,Обособленно", Перечисления.ВариантыОбеспечения.КОбеспечению, Истина);
КонецЕсли;
Возврат ВариантИФлаг;
КонецФункции
&НаСервере
Процедура ЗаполнитьСписокВыбораХозяйственныхОпераций(ИспользованиеАгентскойСхемыЗакупки)
Операции = Документы.ЗаказКлиента.ХозяйственныеОперацииДокумента(Истина);
Если Объект.ЭтоЗаказКакСчет Тогда
ПоставкаПодПринципала = Операции.Найти(Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала);
Если ЗначениеЗаполнено(ПоставкаПодПринципала) Тогда
Операции.Удалить(ПоставкаПодПринципала);
КонецЕсли;
КонецЕсли;
Элементы.ХозяйственнаяОперация.СписокВыбора.Очистить();
Элементы.ХозяйственнаяОперация.СписокВыбора.ЗагрузитьЗначения(Операции);
ПараметрВыбораОперации = Новый ПараметрВыбора("Отбор.ХозяйственнаяОперация", Новый ФиксированныйМассив(Операции));
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(ПараметрВыбораОперации);
Элементы.Соглашение.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДСЗавершение(СтавкаНДС, ДополнительныеПараметры) Экспорт
Если СтавкаНДС = Неопределено Тогда
Возврат;
КонецЕсли;
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиЗаказа(ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ВыделенныеСтроки = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(
Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
Для каждого СтрокаТабличнойЧасти Из ВыделенныеСтроки Цикл
СтрокаТабличнойЧасти.СтавкаНДС = СтавкаНДС;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ВыделенныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ИнициироватьПолучениеДокументовНаОсновании()
ДанныеПоФоновомуЗаданиюПолучениеДокументовНаОсновании = ПродажиСервер.ПолучениеТекстовПолейДокументовНаОснованиивФоне(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьТекстДокументыНаОсновании(РезультатФоновогоЗадания, ДополнительныеПараметры) Экспорт
Если РезультатФоновогоЗадания = Неопределено Тогда
Возврат;
КонецЕсли;
Если РезультатФоновогоЗадания.Статус = "Выполнено" Тогда
ТекстыПоляДокументыНаОсновании.Очистить();
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Результат = ПолучитьИзВременногоХранилища(РезультатФоновогоЗадания.АдресРезультата);
Если ЗначениеЗаполнено(Результат) И ТипЗнч(Результат) = Тип("Структура") И Результат.Свойство("ДокументыНаОсновании")
И Результат.Свойство("ТекстыПоляДокументыНаОсновании") Тогда
ДокументыНаОсновании = Результат.ДокументыНаОсновании;
ТекстыПоляДокументыНаОсновании = Результат.ТекстыПоляДокументыНаОсновании;
ОбщегоНазначенияУТКлиентСервер.ОбновитьТекстДокументыНаОсновании(ЭтотОбъект);
ОбновитьОтображениеДанных(Элементы.ТекстДокументыНаОсновании);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьРезультатВыбораНоменклатурыПартнера(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры.ТекущаяСтрока.НоменклатураПартнера = ВыбранноеЗначение;
ТоварыНоменклатураПартнераПриИзменении(ДополнительныеПараметры.ЭлементФормы);
КонецПроцедуры
&НаСервере
Функция АдресТабличнойЧастиТовары()
МассивСтрок = Новый Массив();
Для Каждого Строка Из Объект.Товары Цикл
Если Строка.Отменено Тогда
Продолжить;
КонецЕсли;
МассивСтрок.Добавить(Строка);
КонецЦикла;
Возврат ПоместитьВоВременноеХранилище(Объект.Товары.Выгрузить(МассивСтрок), УникальныйИдентификатор);
КонецФункции
&НаСервереБезКонтекста
Функция ПараметрыДоговора(Договор, ХозяйственнаяОперация)
Результат = Новый Структура;
Результат.Вставить("ПоНовойКомиссии", Ложь);
Результат.Вставить("УчетныйВидЦены", Справочники.ВидыЦен.ПустаяСсылка());
Результат.Вставить("ЦенаВключаетНДС", Ложь);
Если ЭтоДоговорПоНовойКомиссии(Договор, ХозяйственнаяОперация) Тогда
ПараметрыЦены = УчетныйВидЦеныДоговора(Договор);
Результат.УчетныйВидЦены = ПараметрыЦены.ВидЦены;
Результат.ЦенаВключаетНДС = ПараметрыЦены.ЦенаВключаетНДС;
Результат.ПоНовойКомиссии = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция ЭтоДоговорПоНовойКомиссии(Договор, ХозяйственнаяОперация)
Результат = ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И ПродажиСервер.ЭтоДоговорПоНовойКомиссии(Договор);
Возврат Результат;
КонецФункции
&НаСервереБезКонтекста
Функция УчетныйВидЦеныДоговора(Договор)
СтруктураПараметров = ЦеныПредприятияЗаполнениеСервер.НовыйПараметрыПроверкиВидаЦенДоговора();
СтруктураПараметров.ПолеВидаЦен = "ВидЦенУчетный";
Если ЗначениеЗаполнено(Договор) Тогда
ВидЦены = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, СтруктураПараметров.ПолеВидаЦен, Истина);
Если ЗначениеЗаполнено(ВидЦены) Тогда
СтруктураПараметров.ВидЦены = ВидЦены;
СтруктураПараметров.ЦенаВключаетНДС = ВидЦены.ЦенаВключаетНДС;
КонецЕсли;
КонецЕсли;
Возврат СтруктураПараметров;
КонецФункции
&НаСервере
Процедура УстановитьВидимостьКомандыЗаполненияВидаЦенПоДоговору()
НоваяКомиссия = ?(ЗначениеЗаполнено(Объект.Договор),
ЭтоДоговорПоНовойКомиссии(Объект.Договор, Объект.ХозяйственнаяОперация),
КомиссионныеПродажи25);
Элементы.ТоварыЗаполнитьЦеныПоДоговору.Видимость = НоваяКомиссия;
Элементы.ТоварыЗаполнитьЦеныПоСоглашению.Видимость = Не НоваяКомиссия;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПараметрыСвязиВидаЦенИПризнакЦенаВключаетНДС()
НоваяКомиссия = ?(ЗначениеЗаполнено(Объект.Договор),
ЭтоДоговорПоНовойКомиссии(Объект.Договор, Объект.ХозяйственнаяОперация),
КомиссионныеПродажи25);
Если НоваяКомиссия Тогда
ПараметрыВидаЦенПоДоговору = УчетныйВидЦеныДоговора(Объект.Договор);
Если ПараметрыВидаЦенПоДоговору.ЦенаВключаетНДС <> Неопределено Тогда
Объект.ЦенаВключаетНДС = ПараметрыВидаЦенПоДоговору.ЦенаВключаетНДС;
КонецЕсли;
КонецЕсли;
МассивСвязейПараметровВыбора = Новый Массив;
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("ИспользоватьСоглашенияСКлиентами", "ИспользоватьСоглашенияСКлиентами", РежимИзмененияСвязанногоЗначения.Очищать));
Если Не НоваяКомиссия Тогда
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Соглашение", "Объект.Соглашение", РежимИзмененияСвязанногоЗначения.Очищать));
КонецЕсли;
МассивСвязейПараметровВыбора.Добавить(
Новый СвязьПараметраВыбора("Отбор.ЦенаВключаетНДС", "Объект.ЦенаВключаетНДС", РежимИзмененияСвязанногоЗначения.Очищать));
Элементы.ТоварыВидЦены.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивСвязейПараметровВыбора);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьДействиеЗаполненияЦен(СтруктураДействий)
Если Не КомиссионныеПродажи25 И (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
ПараметрыЗаполненияЦеныВСтрокеТЧ = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПараметрыЗаполненияЦеныВСтрокеТЧ);
ПараметрыДоговора = ПараметрыДоговора(Объект.Договор, Объект.ХозяйственнаяОперация);
Если ПараметрыДоговора.ПоНовойКомиссии И ЗначениеЗаполнено(ПараметрыДоговора.УчетныйВидЦены) Тогда
ПараметрыПроверкиВидаЦены = Новый Структура();
ПараметрыПроверкиВидаЦены.Вставить("ИспользоватьПриПродаже", Истина);
ПараметрыПроверкиВидаЦены.Вставить("Статус", ПредопределенноеЗначение("Перечисление.СтатусыДействияВидовЦен.Действует"));
ПараметрыДействия = Новый Структура();
ПараметрыДействия.Вставить("ВидЦены", ПараметрыДоговора.УчетныйВидЦены);
ПараметрыДействия.Вставить("ПараметрыОтбора", ПараметрыПроверкиВидаЦены);
СтруктураДействий.Вставить("ПроверитьЗаполнитьВидЦены", ПараметрыДействия);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьЗаданияКОтражениюСостоянияЗаказов()
Если СостоянияДокументовКлиент.ПроверкаЗаданияКОтражениюСостоянияЗаказовВыполняется(ЭтотОбъект) Тогда
СостояниеЗаказа = Неопределено;
ОбновитьСостояниеКлиент(Истина, СостояниеЗаказа);
СостоянияДокументовКлиент.ОбработатьРезультатПроверкиЗаданияКОтражениюСостоянияЗаказов(
ЭтотОбъект,
СостояниеЗаказа.ЕстьЗаданияКОтражениюСостоянияЗаказов,
"Подключаемый_ПроверитьЗаданияКОтражениюСостоянияЗаказов");
ИначеЕсли СостоянияДокументовКлиент.СтартПроверкиЗаданияКОтражениюСостоянияЗаказов(ЭтотОбъект) Тогда
СостоянияДокументовКлиент.УстановитьПризнакПроверкаЗаданияКОтражениюСостоянияЗаказовВыполняется(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьСвязиПараметровВыбораДоговора()
СвязиПараметровДоговора = Новый Массив;
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Партнер", "Объект.Партнер"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.Контрагент"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.ВалютаВзаиморасчетов", "Объект.Валюта"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.ХозяйственнаяОперация", "ХозяйственнаяОперацияДоговора"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.КомиссионныеПродажи25", "КомиссионныеПродажи25"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Соглашение", "Объект.Соглашение",
РежимИзмененияСвязанногоЗначения.НеИзменять));
Элементы.Договор.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметровДоговора);
КонецПроцедуры
&НаСервере
Процедура ОбновитьБанковскийСчетКонтрагента()
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент, Объект.БанковскийСчет);
КонецПроцедуры
#КонецОбласти
#Область Наборы
&НаСервере
Функция ДополнитьДоПолногоНабора()
ТабличнаяЧасть = Объект.Товары;
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
МассивСтрок = Новый Массив;
Для Каждого ТекСтрока Из ВыделенныеСтроки Цикл
СтрокаТаблицы = ТабличнаяЧасть.НайтиПоИдентификатору(ТекСтрока);
МассивСтрок.Добавить(СтрокаТаблицы);
КонецЦикла;
НаборыВызовСервера.ДополнитьДоПолногоНабора(ТабличнаяЧасть, МассивСтрок);
Результат = Новый Массив;
Для Каждого СтрокаТЧ Из МассивСтрок Цикл
Результат.Добавить(СтрокаТЧ.ПолучитьИдентификатор());
КонецЦикла;
Возврат Результат;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция КолонкиНабора(Форма)
Колонки = Новый Массив;
Колонки.Добавить("Номенклатура");
Колонки.Добавить("Характеристика");
Колонки.Добавить("Цена");
Колонки.Добавить("ВидЦены");
Колонки.Добавить("Упаковка");
Колонки.Добавить("Количество");
Колонки.Добавить("КоличествоУпаковок");
ОперацииПередачи = Новый Массив;
ОперацииПередачи.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию"));
ОперацииПередачи.Добавить(ПредопределенноеЗначение(
"Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи"));
Если ОперацииПередачи.Найти(Форма.Объект.ХозяйственнаяОперация) = Неопределено Тогда
Если Форма.ИспользоватьРучныеСкидкиВПродажах Тогда
Колонки.Добавить("ПроцентРучнойСкидки");
Колонки.Добавить("СуммаРучнойСкидки");
КонецЕсли;
Если Форма.ИспользоватьАвтоматическиеСкидкиВПродажах Тогда
Колонки.Добавить("ПроцентАвтоматическойСкидки");
Колонки.Добавить("СуммаАвтоматическойСкидки");
КонецЕсли;
КонецЕсли;
Если Форма.ИспользоватьПричиныОтменыЗаказовКлиентов Тогда
Колонки.Добавить("ПричинаОтмены");
КонецЕсли;
Колонки.Добавить("Отменено");
Колонки.Добавить("СтавкаНДС");
Колонки.Добавить("СуммаНДС");
Колонки.Добавить("СуммаСНДС");
Колонки.Добавить("Сумма");
Возврат Колонки;
КонецФункции
&НаКлиенте
Процедура ПриУдаленииКомплектующих(Действие, ДополнительныйПараметр) Экспорт
Если НаборыКлиент.ДействиеРедактироватьНабор(Действие) Тогда
НаборыКлиент.ПриУдаленииКомплектующих(ЭтаФорма, "Товары", ДополнительныйПараметр);
ИначеЕсли НаборыКлиент.ДействиеУдалитьВесьНабор(Действие) Тогда
ПриУдаленииКомплектующихНаСервере("Товары", ДополнительныйПараметр);
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПриУдаленииКомплектующихНаСервере(ИмяТЧ, ДополнительныйПараметр)
НаборыСервер.ПриУдаленииКомплектующих(ЭтаФорма, ИмяТЧ, ДополнительныйПараметр);
КонецПроцедуры
&НаСервере
Функция АдресНабораВоВременномХранилище(Параметры)
Возврат НаборыСервер.АдресНабораВоВременномХранилище(ЭтаФорма, Параметры, "Товары");
КонецФункции
&НаСервере
Процедура ПриОкончанииРедактированияНабора(АдресВоВременномХранилище)
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийСИзмененнымиСтроками.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСИзмененнымиСтроками.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("ПараметрыУказанияСерий", ПараметрыУказанияСерий));
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакОтмененоБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакВариантОформленияПродажи", Новый Структура("Номенклатура", "ВариантОформленияПродажи"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСодержание", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСодержанияУслугиВСтрокеТЧ(Объект, Ложь));
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействийСДобавленнымиСтроками,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
КонецЕсли;
ПараметрыДанных = Новый Структура;
ПараметрыДанных.Вставить("Данные", ПолучитьИзВременногоХранилища(АдресВоВременномХранилище));
ПараметрыДанных.Вставить("СтруктураДействийСИзмененнымиСтроками", СтруктураДействийСИзмененнымиСтроками);
ПараметрыДанных.Вставить("СтруктураДействийСДобавленнымиСтроками", СтруктураДействийСДобавленнымиСтроками);
ПараметрыДанных.Вставить("КолонкиНабора", КолонкиНабора(ЭтаФорма));
НаборыСервер.ПриОкончанииРедактированияНабора(ЭтаФорма, "Товары", ПараметрыДанных);
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
РассчитатьИтоговыеПоказателиЗаказа(ЭтаФорма);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаКлиенте
Процедура РасчетыНажатие(Элемент, СтандартнаяОбработка)
ВзаиморасчетыКлиент.РасчетыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДоступностиРеквизитовEDI(ТребуетсяБлокироватьРеквизиты, ДополнительныеПараметры) Экспорт
УстановитьСвязиПараметровВыбораСоглашенияПоEDI();
КонецПроцедуры
&НаСервере
Процедура EDIПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
РедактированиеРеквизитовEDIИнтеграция.ПодготовитьРеквизитыФормы(ЭтотОбъект);
ТипДокументаEDI = Перечисления.ТипыДокументовEDI.ЗаказКлиента;
РедактированиеРеквизитовEDI.СохранитьДоступностьЭлементовПоУмолчанию(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура УстановитьСвязиПараметровВыбораСоглашенияПоEDI()
СвязиПараметров = Новый Массив;
Для Каждого Связь Из Элементы.Соглашение.СвязиПараметровВыбора Цикл
Если Связь.Имя = "Отбор.Организация"
Или Связь.Имя = "Отбор.Контрагент" Тогда
Продолжить;
КонецЕсли;
СвязиПараметров.Добавить(Связь);
КонецЦикла;
Если Не РедактированиеРеквизитовEDIКлиентСервер.РеквизитДоступенДляРедактирования(ЭтотОбъект, "Товары.Поставщик") Тогда
СвязиПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация"));
КонецЕсли;
Если Не РедактированиеРеквизитовEDIКлиентСервер.РеквизитДоступенДляРедактирования(ЭтотОбъект, "Товары.Покупатель") Тогда
СвязиПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.Контрагент"));
КонецЕсли;
Элементы.Соглашение.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметров)
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьПоляПартнер()
ВидимостьКЛ = Элементы.СчитатьКартуЛояльностиКлиент.Видимость;
Если ВидимостьКЛ Тогда
ВидимостьКЛ = ИспользоватьКартыЛояльности;
КонецЕсли;
Элементы.ПартнерБезКЛ.Видимость = НЕ ВидимостьКЛ;
Элементы.Партнер.Видимость = ВидимостьКЛ;
КонецПроцедуры
&НаКлиенте
Процедура ОсобыеУсловияПеревозкиПриИзменении(Элемент)
ОсобыеУсловияПеревозкиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьИнформациюПоДоставкеКонтактами(Команда)
ДополнитьИнформациюПоДоставкеКонтактамиСервер();
КонецПроцедуры
&НаСервере
Процедура ОсобыеУсловияПеревозкиПриИзмененииСервер()
ДоставкаТоваров.ОсобыеУсловияПеревозкиПриИзменении(Элементы, Объект);
КонецПроцедуры
&НаСервере
Процедура ДополнитьИнформациюПоДоставкеКонтактамиСервер()
ДоставкаТоваров.ДополнитьИнформациюПоДоставкеКонтактами(Объект);
КонецПроцедуры
&НаКлиенте
Функция ОперацииПередачиТоваров()
ОперацииПередачи = Новый Массив;
ОперацииПередачи.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию"));
ОперацииПередачи.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи"));
ОперацииПередачи.Добавить(
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоставкаПодПринципала"));
Возврат ОперацииПередачи;
КонецФункции
&НаСервере
Процедура ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты)
Объект.Согласован = Ложь;
УстановитьДоступностьЭлементовПоСтатусуСервер();
ВзаиморасчетыСервер.ЗагрузитьЭтапыОплатыИзВременногоХранилища(ЭтаФорма);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, ИзмененныеРеквизиты, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПодготовитьЗаполнитьУстановитьВидимостьСборкиИДоставки()
ДатаРасчетаНастроекСклада = Объект.ДатаОтгрузки;
ЕстьПоддержкаДоставкиСвоимиКурьерами = СкладыСервер.ЕстьПоддержкаДоставкиСвоимиКурьерами(Объект.Склад, ДатаРасчетаНастроекСклада);
ЕстьПоддержкаСборкиЗаказов = СкладыСервер.ЕстьПоддержкаСборкиЗаказов(Объект.Склад, ДатаРасчетаНастроекСклада);
ЕстьПоддержкаДоставкиСвоимиКурьерами = ЕстьПоддержкаДоставкиСвоимиКурьерами
И (Объект.ПорядокРасчетов <> Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов);
Если Не ЕстьПоддержкаДоставкиСвоимиКурьерами
И Объект.СпособДоставки = Перечисления.СпособыДоставки.ДоКлиентаКурьером Тогда
Объект.СпособДоставки = Перечисления.СпособыДоставки.Самовывоз;
ЗаполнитьУстановитьРеквизитыДоставкиСервер(Элементы.СпособДоставки.Имя);
КонецЕсли;
Если Не ЕстьПоддержкаСборкиЗаказов Тогда
Объект.Сборщик = Неопределено;
КонецЕсли;
ДоставкаТоваров.ОбновитьСписокВыбораСпособаДоставкиДляСкладаОтгрузки(Элементы.СпособДоставки, ЕстьПоддержкаДоставкиСвоимиКурьерами);
Элементы.Сборщик.Видимость = ЕстьПоддержкаСборкиЗаказов;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности()
Элементы.ГруппаТоварыБонусныеБаллы.Видимость = ИспользоватьБонусныеПрограммыЛояльности;
Элементы.ТоварыСуммаБонусныхБалловКСписаниюВВалюте.Видимость = ИспользоватьБонусныеПрограммыЛояльности;
Элементы.ТоварыСуммаНачисленныхБонусныхБалловВВалюте.Видимость = ИспользоватьБонусныеПрограммыЛояльности;
КонецПроцедуры
#КонецОбласти