#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ПредыдущиеРеквизитыСтроки;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ТребуетсяОткрытиеПечатнойФормы Тогда
Возврат;
КонецЕсли;
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
ИспользоватьРучныеСкидкиВПродажах = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
ИспользоватьАвтоматическиеСкидкиВПродажах = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
ИспользоватьПартнеровКакКонтрагентов = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов");
ИспользоватьКорректировкиРеализаций = ПолучитьФункциональнуюОпцию("ИспользоватьКорректировкиРеализаций");
ИспользоватьУпрощеннуюСхемуОплатыВПродажах= ПолучитьФункциональнуюОпцию("ИспользоватьУпрощеннуюСхемуОплатыВПродажах");
ПродажаНеОблагаетсяНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС;
ИспользоватьОграниченияРучныхСкидок = ПолучитьФункциональнуюОпцию("ИспользоватьОграниченияРучныхСкидокВПродажахПоПользователям")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьОграниченияРучныхСкидокВПродажахПоСоглашениям");
ОтклонениеОтУсловийПродаж = ПраваПользователяПовтИсп.ОтклонениеОтУсловийПродаж();
ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
Если ЗначениеЗаполнено(Объект.Договор) Тогда
Объект.ВариантВыбытияМаркируемойПродукции = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ВариантВыбытияМаркируемойПродукции");
Иначе
Объект.ВариантВыбытияМаркируемойПродукции = Перечисления.ВариантыВыбытияМаркируемойПродукции.ПустаяСсылка();
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.КодСпециальныхОбстоятельств) Тогда
ОбменСКонтрагентамиУТ.ОбновитьКодСпециальныхОбстоятельств(Объект);
КонецЕсли;
ИначеЕсли Параметры.ЗначенияЗаполнения.Свойство("ЗаполнятьПоОрдеру") Тогда
ПерезаполнитьПоОрдерам(Параметры.ЗначенияЗаполнения.МассивЗаказов);
Модифицированность = Истина;
КонецЕсли;
УстановитьУсловноеОформление();
УстановитьЗаголовокРеквизитовПечати();
ПродажиСервер.УстановитьРежимВыбораГруппЭлементовСклада(Элементы.Склад);
ИспользуютсяДоговора = Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов;
ПродажиСервер.УстановитьОтметкуНезаполненногоДоговора(Элементы, "Договор", ИспользуютсяДоговора);
УстановитьЗаголовокТоварыГруппаОтправитель();
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
КонецЕсли;
Элементы.ТоварыВидЦены.БыстрыйВыбор = Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен");
ПравоНаЧтениеВидаЦены = ПравоДоступа("Просмотр", Метаданные.Документы.РеализацияТоваровУслуг.ТабличныеЧасти.Товары.Реквизиты.ВидЦены);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения);
Элементы.ЗакрытьЗаказ.Доступность = ПравоДоступа("Изменение",Метаданные.Документы.ЗаказКлиента);
Элементы.ГруппаТоварыИнформацияОСкидках.Доступность = ПравоДоступа("Просмотр", Метаданные.Справочники.СкидкиНаценки);
Элементы.ТоварыНазначитьАвтоматическиеСкидки.Доступность = ПравоДоступа("Просмотр", Метаданные.Справочники.СкидкиНаценки);
УстановитьДоступностьКомандБуфераОбмена();
ЭлементыДляЗаполнения = Новый Массив;
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиС);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиПо);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиС1);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиПо1);
ДоставкаТоваровКлиентСервер.ЗаполнитьСписокВыбораПоляВремени(ЭлементыДляЗаполнения);
УстановитьДоступностьВидимостьЭлементовСборкиИДоставки();
ОбновитьПризнакЕстьКорректировки();
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтаФорма);
ФормированиеФискальныхЧековСервер.ФормаПриСозданииНаСервере(ЭтотОбъект);
ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
ПроверкаКонтрагентовВызовСервераПереопределяемыйУТ.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументССылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
Элементы.ГруппаСостояниеЭПД.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
Элементы.ГруппаСостояниеЭПД.Видимость = ОбменСГИСЭПДПереопределяемый.РазрешенаРаботаЭПД();
ОбновитьТекстЭПД();
СервисДоставки.ПриСозданииНаСервере(ЭтаФорма);
ЭлектронноеАктированиеЕИСУТ.УстановкаВидимостиГруппыГосконтракта(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
УчетНДСУП.УстановитьВидимостьСтранаРеализации(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ТребуетсяОткрытиеПечатнойФормы Тогда
Отказ = Истина;
СамообслуживаниеКлиент.ПечатьРеализацияТоваровУслуг(Объект.Ссылка);
Возврат;
КонецЕсли;
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПредыдущиеРеквизитыСтроки = Новый Структура(
"Номенклатура,
|Характеристика,
|Упаковка,
|Количество,
|КоличествоУпаковок,
|Склад,
|ТипНоменклатуры,
|ХарактеристикиИспользуются,
|Артикул,
|ЗаказКлиента,
|КодСтроки");
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(
Неопределено,
ЭтотОбъект,
"СканерШтрихкода,ФискальныйРегистратор");
Если Объект.РеализацияПоЗаказам И НЕ РеализацияСверхЗаказа Тогда
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыСкопировать");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюСкопировать");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Ложь);
КонецЕсли;
Если Объект.РеализацияПоЗаказам И НЕ РеализацияСверхЗаказа
И Не ЗначениеЗаполнено(Объект.Ссылка)
И Не ЗначениеЗаполнено(Объект.Склад) Тогда
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
Если ИспользоватьРеализациюПоНесколькимЗаказам Тогда
ТекстСообщения = НСтр("ru='Заполните товары с помощью команды ""Заполнить по распоряжениям""'");
Иначе
ТекстСообщения = НСтр("ru='Заполните товары с помощью команды ""Заполнить по распоряжению""'");
КонецЕсли;
Иначе
Если ИспользоватьРеализациюПоНесколькимЗаказам Тогда
ТекстСообщения = НСтр("ru='Уточните склад реализации и заполните товары с помощью команды ""Заполнить по заказам""'");
Иначе
ТекстСообщения = НСтр("ru='Уточните склад реализации и заполните товары с помощью команды ""Заполнить по заказу""'");
КонецЕсли;
КонецЕсли;
ОбщегоНазначенияКлиент.СообщитьПользователю(
ТекстСообщения,
Объект.Ссылка,
"Объект.Склад",);
КонецЕсли;
ПроверкаКонтрагентовКлиент.ПриОткрытииДокумент(ЭтотОбъект);
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
ПодключитьОбработчикОжиданияПолучениеПеревозчиков();
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
Если ОбщегоНазначенияУТКлиентСервер.АвторизованВнешнийПользователь() Тогда
ТребуетсяОткрытиеПечатнойФормы = Истина;
Возврат;
КонецЕсли;
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтаФорма, Элементы.СтрокаИсправление);
ПриЧтенииСозданииНаСервере();
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ФормированиеФискальныхЧековСервер.ФормаПриЧтенииНаСервере(ЭтотОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ОбновитьОтклоненияОтЗаказа();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ИзменитьЗаголовкиПоВариантуОформленияПродажи();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
ОбновитьТекстДокументыНаОсновании();
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект.ДополнительныеСвойства);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ОбновитьОбязательностьСкладаВТЧ();
УстановитьДоступностьЭлементовПоСтатусуСервер();
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
ЭлектронноеАктированиеЕИС.ЗаполнитьПараметрыАктированияДокументаПоУмолчанию(Объект.Организация, Объект.Ссылка);
ТекущийСпособДоставки = ТекущийОбъект.СпособДоставки;
ПроверкаКонтрагентов.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
НаправленияДеятельностиСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
ЗакрытьСессиюПроверкиКМНаККТ(Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ВыполнитьПроверкиИЗадатьВопросыПередЗаписью(Отказ, ПараметрыЗаписи);
КонецЕсли;
ЗаполнитьПоказателиЭтаповОплатыКлиент();
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
Если ВзаиморасчетыКлиент.НуженВызовОбработкиОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ЗачтенаОплатаСервер(ИмяСобытия, Параметр, Источник);
КонецЕсли;
Если ИмяСобытия = "СчитанаКартаЛояльности"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
СчитанаКартаЛояльности(Параметр.КартаЛояльности);
КонецЕсли;
Если ИмяСобытия = "ПолученыСообщения"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПолученыСообщения(Параметр.Сообщения);
КонецЕсли;
Если ИмяСобытия = "ИзмененРеквизитЗависящийОтСтатуса"
И Параметр.УникальныйИдентификатор = УникальныйИдентификатор Тогда
Если Объект.Согласован Тогда
Объект.Согласован = Ложь;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса", 0.1, Истина);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
Если ИмяСобытия = "ДобавлениеПартнераВСегмент"
ИЛИ ИмяСобытия = "УдалениеПартнераИзСегмента" Тогда
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
КонецЕсли;
Если ИмяСобытия = "Закрытие_РедактированиеКомплекта"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПриОкончанииРедактированияНабора(Параметр.АдресВоВременномХранилище);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецЕсли;
Если ИмяСобытия = "РедактироватьНабор"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПараметрыНабора = Новый Структура;
ПараметрыНабора.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыНабора.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
ПараметрыНабора.Вставить("СверхЗаказа", Истина);
ПараметрыНабора.Вставить("КолонкиНабора", КолонкиНабора(ЭтаФорма));
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыНабора);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОткрытия.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
Если ИмяСобытия = "Запись_КорректировкаРеализации"
И ТипЗнч(Параметр) = Тип("Структура")
И Параметр.Свойство("ДокументОснование")
И Параметр.ДокументОснование = Объект.Ссылка Тогда
Запись_КорректировкаРеализацииНаСервере();
КонецЕсли;
Если ИмяСобытия = "Запись_РасходныйОрдерНаТовары" Тогда
ЕстьРасходныйОрдерДляЗаказовНаОтгрузку(Объект.Ссылка, НачатаОтгрузка);
КонецЕсли;
Если ИмяСобытия = "Запись_СчетФактураВыданный"
И (Параметр.Свойство("ФормаВладелец") И Параметр.ФормаВладелец = УникальныйИдентификатор
Или Параметр.Свойство("СписокОснований") И Параметр.СписокОснований.НайтиПоЗначению(Объект.Ссылка) <> Неопределено) Тогда
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
Если ИмяСобытия = "Запись_ЗаявлениеОВвозеТоваровПолученное"
И ТипЗнч(Параметр) = Тип("Структура")
И Параметр.Основания.Найти(Объект.Ссылка) <> Неопределено Тогда
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
ПроверкаКонтрагентовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
Если ИмяСобытия = "ОбновитьСостояниеЭД" Тогда
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
Если ПрослеживаемостьФормыКлиентПереопределяемый.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник) Тогда
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр, Источник);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
ОбработкаОповещенияЛокализация(ИмяСобытия, Параметр, Источник);
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия,ЭтотОбъект);
Если ИмяСобытия = "ПриИзмененииДоговора"
И Источник = ЭтотОбъект Тогда
Модифицированность = Истина;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элементы[Параметр]);
Иначе
ДоговорПриИзменении(Элементы[Параметр]);
КонецЕсли;
КонецЕсли;
Если ИмяСобытия = "ПриИзмененииДоговораКлиента"
И Источник = ЭтотОбъект Тогда
Модифицированность = Истина;
КлиентДоговорПриИзменении(Элементы[Параметр]);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Документ.РеализацияТоваровУслуг.Форма.ФормаПодбораТоваровИзЗаказа" Тогда
ОбработкаПодбораТоваровИзЗаказа(ВыбранноеЗначение.АдресТоваровВХранилище);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровПереданныхНаОтветственноеХранение.Форма.Форма" Тогда
ЦеныРассчитаны = Ложь;
ОбработкаВыбораПодборПереданныхТоваров(ВыбранноеЗначение, ЦеныРассчитаны);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.РеквизитыПечатиРеализации" Тогда
Если ВыбранноеЗначение <> Неопределено Тогда
Модифицированность = Истина;
ЗаполнитьУстановитьРеквизитыДоставки = Объект.Грузополучатель <> ВыбранноеЗначение.Грузополучатель;
ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение);
ПриИзмененииРеквизитовПечатиРеализацииСервер(ЗаполнитьУстановитьРеквизитыДоставки);
КонецЕсли;
ИначеЕсли УчетНДСУПКлиент.ЗаконченоРедактированиеСчетаФактурыВыданного(ВыбранноеЗначение, ИсточникВыбора) Тогда
ОбновитьТекстДокументыНаОсновании();
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(ВыбранноеЗначение.АдресМногооборотнойТарыВХранилище);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.СтруктураПредприятия.Форма.ФормаВыбора" Тогда
ПродажиКлиент.ОбработкаВыбораПодразделения(Объект.Товары, Элементы.Товары.ВыделенныеСтроки, ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.ВидыЗапасов.Форма.ФормаВводаВидовЗапасов" Тогда
ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
ТоварыСерияПересчитатьЦены();
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.ФизическиеЛица.Форма.ФормаСписка" Тогда
Объект[ТекущийЭлемент.Имя] = ВыбранноеЗначение;
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПараметрыЗаписи.Вставить("КлючиДокументаОповещение",
РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(Объект.Ссылка, Объект.Дата,
Объект.ХозяйственнаяОперация));
Оповестить("Запись_РеализацияТоваровУслуг", ПараметрыЗаписи, Объект.Ссылка);
ВзаиморасчетыКлиент.ФормаПослеЗаписи(ЭтаФорма);
ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаДокумента(ЭтаФорма, ПараметрыЗаписи);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
СобытияФормКлиент.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
ПроверкаКонтрагентов.ПередЗаписьюНаСервереДокумент(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
ЭлектронноеАктированиеЕИСУТ.ПередЗаписьюНаСервереДокумент(ЭтаФорма, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверкаКонтрагентов.ПриЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если ТекущаяСтраница.Имя = "ГруппаОсновное" Тогда
ВзаиморасчетыКлиент.ОбновитьТекстГиперссылкиЭтапыОплаты(ЭтаФорма);
ВзаиморасчетыКлиентСервер.ОбновитьТекстГиперссылкиВалюты(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗаголовокЗаказыКлиентовНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ЗаголовокФормыСпискаДокументов = НСтр("ru='Распоряжения (%КоличествоДокументов%)'")
Иначе
ЗаголовокФормыСпискаДокументов = НСтр("ru='Заказы клиентов (%КоличествоДокументов%)'");
КонецЕсли;
ОткрытьФорму(
"ОбщаяФорма.ПросмотрСпискаДокументов",
Новый Структура("СписокДокументов, Заголовок",
СписокЗаказов,
ЗаголовокФормыСпискаДокументов
),
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыВыбораСоглашения = ПродажиКлиент.ПараметрыНачалаВыбораСоглашенияСКлиентом();
ПараметрыВыбораСоглашения.Элемент = Элемент;
ПараметрыВыбораСоглашения.Партнер = Объект.Партнер;
ПараметрыВыбораСоглашения.Документ = Объект.Соглашение;
ПараметрыВыбораСоглашения.ДатаДокумента = Объект.Дата;
ПараметрыВыбораСоглашения.ДанныеФормыСтруктура = Объект;
ПродажиКлиент.НачалоВыбораСоглашенияСКлиентом(ПараметрыВыбораСоглашения, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
СтатусПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
Если Не ЗначениеЗаполнено (Объект.Партнер) Тогда
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы,Объект);
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
Возврат;
КонецЕсли;
ДоговорДоИзменения = Объект.Договор;
ПриИзмененииПартнераСервер();
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
Если ДоговорДоИзменения <> Объект.Договор Тогда
ПредложениеЗаполнитьПоГосконтрактуЕИС();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтактноеЛицоПриИзменении(Элемент)
Если Объект.КонтактноеЛицо.Пустая() Тогда
Возврат;
ИначеЕсли Не Объект.Партнер.Пустая() Тогда
Возврат;
КонецЕсли;
ПартнерИзменился = Ложь;
КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился);
Если Не ПартнерИзменился Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено (Объект.Партнер) Тогда
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы,Объект);
Иначе
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
ПредложениеЗаполнитьПоГосконтрактуЕИС();
КонецПроцедуры
&НаКлиенте
Процедура ДоговорСоздание(Элемент, СтандартнаяОбработка)
ПродажиКлиент.ОткрытьФормуСозданияДоговора(ЭтотОбъект, Элемент, "Объект.Договор", Объект.Партнер, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ОснованиеИзменено = ОснованиеИзменено И ЗначениеЗаполнено(Объект.Основание);
Если РеализацияЧерезКомиссионера
И ЗначениеЗаполнено(ВидЦеныДоговора(Объект.Договор).ВидЦены) Тогда
Оповещение = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДоговора(Объект, Оповещение);
Иначе
ДоговорПриИзмененииСервер();
КонецЕсли;
ПредложениеЗаполнитьПоГосконтрактуЕИС();
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ФлагЗаполнитьЦеныПоСоглашению = Ложь;
Если НЕ РезультатВопроса = КодВозвратаДиалога.Отмена И РезультатВопроса Тогда
ВидЦеныДоговора = ВидЦеныДоговора(Объект.Договор);
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВиду(Объект, ВидЦеныДоговора) Тогда
ФлагЗаполнитьЦеныПоСоглашению = Истина;
КонецЕсли;
КонецЕсли;
ЦеныРассчитаны = Ложь;
ТекстОшибки = "";
ОчиститьСообщения();
ДоговорПриИзмененииЗавершениеСервер(ФлагЗаполнитьЦеныПоСоглашению, ЦеныРассчитаны, ТекстОшибки);
Если ФлагЗаполнитьЦеныПоСоглашению Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоДоговору(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
Соглашение = Объект.Соглашение;
Если Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
СоглашениеОчисткаСервер();
Возврат;
КонецЕсли;
ДоговорДоИзменения = Объект.Договор;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
СоглашениеПриИзмененииСервер();
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродаж();
ЗаполнитьСписокВыбораОпераций();
Если РеализацияЧерезКомиссионера И НЕ ДоговорДоИзменения = Объект.Договор И ЗначениеЗаполнено(Объект.Договор)
И ЗначениеЗаполнено(ВидЦеныПоДоговору) Тогда
Оповещение = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДоговора(Объект, Оповещение);
ИначеЕсли Не ДоговорДоИзменения = Объект.Договор Тогда
ПредложениеЗаполнитьПоГосконтрактуЕИС();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
ДоговорДоИзменения = Объект.Договор;
ХозяйственнаяОперацияПриИзмененииСервер();
Если РеализацияЧерезКомиссионера И НЕ ДоговорДоИзменения = Объект.Договор
И ЗначениеЗаполнено(Объект.Договор)
И ЗначениеЗаполнено(ВидЦеныПоДоговору) Тогда
Оповещение = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДоговора(Объект, Оповещение);
ИначеЕсли Не ДоговорДоИзменения = Объект.Договор Тогда
ПредложениеЗаполнитьПоГосконтрактуЕИС();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииСервер();
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЦенаВключаетНДСПриИзменении(Элемент)
ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПараметрыРегистрацииСчетовФактурВыданныхСервер(Знач Объект)
Возврат Документы.РеализацияТоваровУслуг.ПараметрыРегистрацииСчетовФактурВыданных(Объект);
КонецФункции
&НаСервереБезКонтекста
Функция ПараметрыРегистрацииУведомленийОПеремещенииПрослеживаемыхТоваровСервер(Знач Объект)
Возврат Документы.РеализацияТоваровУслуг.ПараметрыРегистрацииУведомленийОПеремещенииПрослеживаемыхТоваров(Объект);
КонецФункции
&НаКлиенте
Процедура ТекстДокументыНаОснованииОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОчиститьСообщения();
ПараметрыРегистрации = ПараметрыРегистрацииСчетовФактурВыданныхСервер(Объект);
УчетНДСУПКлиент.ОбработкаНавигационнойСсылкиСчетаФактурыВыданные(ЭтаФорма, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка, ПараметрыРегистрации);
ФискальнаяОперацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
ТекстДокументыНаОснованииОбработкаНавигационнойСсылкиЛокализация(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
Перем ЦеныРассчитаны;
ОчиститьСообщения();
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Если Не Объект.РеализацияПоЗаказам
Или РеализацияСверхЗаказа
И Объект.Товары.Итог("РасхождениеЗаказ") > 0 Тогда
МассивХозяйственныхОпераций25 = Новый Массив;
МассивХозяйственныхОпераций25.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияЧерезКомиссионера"));
МассивХозяйственныхОпераций25.Добавить(ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности"));
Если МассивХозяйственныхОпераций25.Найти(Объект.ХозяйственнаяОперация) <> Неопределено Тогда
Если ЗначениеЗаполнено(Объект.Договор) Тогда
Оповещение = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДоговора(Объект, Оповещение);
Возврат;
КонецЕсли;
Иначе
Оповещение = Новый ОписаниеОповещения("ДатаПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект, Оповещение);
Возврат;
КонецЕсли;
КонецЕсли;
ПересчитатьЦены = Ложь;
ДатаПриИзмененииСервер(ПересчитатьЦены, ЦеныРассчитаны);
ДатаДокументаДоИзменения = Объект.Дата;
Если ПересчитатьЦены Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Перем ЦеныРассчитаны;
Если Не РезультатВопроса = КодВозвратаДиалога.Отмена Тогда
ДатаПриИзмененииСервер(РезультатВопроса, ЦеныРассчитаны, РезультатВопроса);
КонецЕсли;
ДатаДокументаДоИзменения = Объект.Дата;
Если РезультатВопроса = Истина Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОценкаПроизводительностиКлиент.ЗамерВремени(Истина,
"Документ.РеализацияТоваровУслуг.ФормаДокумента.ОрганизацияПриИзменении");
ДоговорДоИзменения = Объект.Договор;
ОрганизацияПриИзмененииСервер();
Если РеализацияЧерезКомиссионера И НЕ ДоговорДоИзменения = Объект.Договор
И ЗначениеЗаполнено(Объект.Договор)
И ЗначениеЗаполнено(ВидЦеныПоДоговору) Тогда
Оповещение = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДоговора(Объект, Оповещение);
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Если Не ДоговорДоИзменения = Объект.Договор Тогда
ПредложениеЗаполнитьПоГосконтрактуЕИС();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
ОценкаПроизводительностиКлиент.ЗамерВремени(Истина,
"Документ.РеализацияТоваровУслуг.ФормаДокумента.СкладПриИзменении");
ОчищатьСтроки = Ложь;
ОтвязатьВсеСтрокиОтЗаказа = Ложь;
ИспользуютсяЗаказыКакСчета = ИспользуютсяЗаказыКакСчета();
Если Склад <> Объект.Склад
И (ЗначениеЗаполнено(Склад)
Или Не ИспользуютсяЗаказыКакСчета) Тогда
Если Объект.РеализацияПоЗаказам
И Объект.Товары.Количество() > 0 Тогда
Если Не ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Объект.Склад) Тогда
СписокКнопок = Новый СписокЗначений;
Если РеализацияСверхЗаказа
И Не ИспользуютсяЗаказыКакСчета Тогда
СписокКнопок.Добавить("Продолжить", НСтр("ru = 'Очистить товары'"));
СписокКнопок.Добавить("Отвязать", НСтр("ru = 'Отвязать от заказа'"));
ТекстВопроса = НСтр("ru='При изменении склада список ""Товары"" необходимо очистить, либо отвязать строки от заказа. Продолжить?'");
Иначе
СписокКнопок.Добавить("Продолжить", НСтр("ru = 'Продолжить'"));
ТекстВопроса = НСтр("ru='Список ""Товары"" будет очищен. Продолжить?'")
КонецЕсли;
СписокКнопок.Добавить("Отмена", НСтр("ru = 'Отмена'"));
ПоказатьВопрос(
Новый ОписаниеОповещения("СкладПриИзмененииЗавершение",
ЭтотОбъект,
Новый Структура("ОтвязатьВсеСтрокиОтЗаказа", ОтвязатьВсеСтрокиОтЗаказа)),
ТекстВопроса,
СписокКнопок);
Возврат;
КонецЕсли;
КонецЕсли;
СкладПриИзмененииФрагмент(ОтвязатьВсеСтрокиОтЗаказа, ОчищатьСтроки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОтвязатьВсеСтрокиОтЗаказа = ДополнительныеПараметры.ОтвязатьВсеСтрокиОтЗаказа;
Ответ = РезультатВопроса;
Если Ответ = "Отмена" Тогда
Объект.Склад = Склад;
Возврат;
ИначеЕсли Ответ = "Отвязать" Тогда
ОтвязатьВсеСтрокиОтЗаказа = Истина;
ОчищатьСтроки = Ложь;
Иначе
ОчищатьСтроки = Истина;
КонецЕсли;
СкладПриИзмененииФрагмент(ОтвязатьВсеСтрокиОтЗаказа, ОчищатьСтроки);
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзмененииФрагмент(Знач ОтвязатьВсеСтрокиОтЗаказа, Знач ОчищатьСтроки)
СкладПриИзмененииСервер(ОчищатьСтроки, ОтвязатьВсеСтрокиОтЗаказа);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура РеализацияПоЗаказамПриИзменении(Элемент)
ЗаказКлиента = Неопределено;
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
ОчиститьСообщения();
Если Объект.РеализацияПоЗаказам И НачатаОтгрузка Тогда
ПоказатьПредупреждение(Неопределено, НСтр("ru='По данному документу уже начата отгрузка. Менять признак
|""Реализация по заказу"" после начала отгрузки не допускается.'"));
Объект.РеализацияПоЗаказам = Ложь;
Возврат
КонецЕсли;
Если Объект.РеализацияПоЗаказам Тогда
Если ИспользоватьРеализациюПоНесколькимЗаказам Тогда
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
Если Объект.Товары.Количество() = 0 Тогда
ТекстВопроса = НСтр("ru='Список Товары будет перезаполнен остатками неоформленных товаров по распоряжениям. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Строки в списке Товары будут привязаны к строкам распоряжений. Продолжить?'");
КонецЕсли;
Иначе
Если Объект.Товары.Количество() = 0 Тогда
ТекстВопроса = НСтр("ru='Список Товары будет перезаполнен остатками неоформленных товаров по заказам. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Строки в списке Товары будут привязаны к строкам заказов. Продолжить?'");
КонецЕсли;
КонецЕсли;
Иначе
ПараметрыОтбора = Новый Структура();
ПараметрыОтбора.Вставить("Валюта", Объект.Валюта);
ПараметрыОтбора.Вставить("Контрагент", Объект.Контрагент);
ПараметрыОтбора.Вставить("Договор", Объект.Договор);
ПараметрыОтбора.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОтбора.Вставить("Организация", Объект.Организация);
ПараметрыОтбора.Вставить("Партнер", Объект.Партнер);
ПараметрыОтбора.Вставить("Сделка", Объект.Сделка);
ПараметрыОтбора.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОтбора.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОтбора.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыОтбора.Вставить("ВернутьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыОтбора.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ПараметрыОтбора.Вставить("ВернутьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыОтбора.Вставить("ТребуетсяЗалогЗаТару", Объект.ТребуетсяЗалогЗаТару);
ОткрытьФорму(
"Документ.РеализацияТоваровУслуг.Форма.ФормаВыбораРаспоряжения",
Новый Структура("Отбор,Склад,Регистратор", ПараметрыОтбора, Объект.Склад, Объект.Ссылка),,,,, Новый ОписаниеОповещения("РеализацияПоЗаказамПриИзмененииПослеВыбора", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
Иначе
Если Объект.Товары.Количество() > 0 Тогда
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
Если ИспользоватьРеализациюПоНесколькимЗаказам Тогда
ТекстВопроса = НСтр("ru='Строки в списке Товары перестанут быть связанными со строками распоряжений. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Строки в списке Товары перестанут быть связанными со строками распоряжения. Продолжить?'");
КонецЕсли;
Иначе
Если ИспользоватьРеализациюПоНесколькимЗаказам Тогда
ТекстВопроса = НСтр("ru='Строки в списке Товары перестанут быть связанными со строками заказов. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Строки в списке Товары перестанут быть связанными со строками заказа. Продолжить?'");
КонецЕсли;
КонецЕсли;
Иначе
РеализацияПоЗаказамПриИзмененииСервер();
Возврат;
КонецЕсли;
КонецЕсли;
РеализацияПоЗаказамПриИзмененииФрагмент(ЗаказКлиента, ТекстВопроса);
КонецПроцедуры
&НаКлиенте
Процедура РеализацияПоЗаказамПриИзмененииФрагмент(Знач ЗаказКлиента, Знач ТекстВопроса)
Перем ОтветНаВопрос;
ОтветНаВопрос = Неопределено;
ПоказатьВопрос(Новый ОписаниеОповещения("РеализацияПоЗаказамПриИзмененииЗавершение", ЭтотОбъект, Новый Структура("ЗаказКлиента", ЗаказКлиента)), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура РеализацияПоЗаказамПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ЗаказКлиента = ДополнительныеПараметры.ЗаказКлиента;
ОтветНаВопрос = РезультатВопроса;
Если ОтветНаВопрос = КодВозвратаДиалога.Нет Тогда
Объект.РеализацияПоЗаказам = Не Объект.РеализацияПоЗаказам;
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(ЗаказКлиента) Тогда
Объект.ЗаказКлиента = ЗаказКлиента;
КонецЕсли;
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ТоварыОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ТоварыГруппаЗаказКлиента");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", Объект.РеализацияПоЗаказам);
ПриИзмененииРеализацииПоНесколькимЗаказам();
КонецПроцедуры
&НаКлиенте
Процедура КартаЛояльностиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
КартыЛояльностиКлиент.НачалоВыбораКартыЛояльности(Элемент, СтандартнаяОбработка, Объект.Партнер, Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура КартаЛояльностиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СчитанаКартаЛояльности(ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура КартаЛояльностиОчистка(Элемент, СтандартнаяОбработка)
СчитанаКартаЛояльности(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ТекстОстатокДопустимогоКредитаНажатие(Элемент, СтандартнаяОбработка)
ВзаиморасчетыКлиент.ОграниченияЗадолженностиНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВернутьМногооборотнуюТаруПриИзменении(Элемент)
ВернутьМногооборотнуюТаруПриИзмененииСервер();
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТекстОтгрузкаПартнеруЗапрещенаНажатие(Элемент)
ОткрытьФорму("Справочник.Партнеры.Форма.ФормаСегментовЗапретаОтгрузки", Новый Структура("Партнер", Объект.Партнер));
КонецПроцедуры
&НаКлиенте
Процедура ТребуетсяЗалогЗаТаруПриИзменении(Элемент)
ТребуетсяЗалогЗаТаруПриИзмененииНаСервере();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПереходаПраваСобственностиПриИзменении(Элемент)
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ДатаПереходаПраваСобственностиПриИзмененииСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьЭтапыОплатыНажатиеЗавершение", ЭтотОбъект);
ПоместитьЭтапыОплатыВоВременноеХранилище(Элемент.Имя);
ВзаиморасчетыКлиент.НадписьЭтапыОплатыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка, Оповещение );
КонецПроцедуры
&НаСервере
Процедура ПоместитьЭтапыОплатыВоВременноеХранилище(ИмяЭлемента)
ВзаиморасчетыСервер.ПоместитьЭтапыОплатыВоВременноеХранилище(ЭтаФорма, ИмяЭлемента);
ВзаиморасчетыСервер.ПоместитьРасшифровкуПлатежаВоВременноеХранилище(ЭтаФорма, ИмяЭлемента);
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ИзмененныеРеквизиты = Результат.СтарыеЗначенияИзмененныхРеквизитов;
ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты);
Если ИзмененныеРеквизиты.Количество() > 0 Тогда
Объект.Согласован = Ложь;
Если ИзмененныеРеквизиты.Свойство("ФормаОплаты") Тогда
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецЕсли;
ОбновитьБанковскийСчетКонтрагента();
КонецЕсли;
КонецЕсли;
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ВариантОформленияПродажиПриИзменении(Элемент)
ИзменитьЗаголовкиПоВариантуОформленияПродажи();
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НадписьВалютыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьВалютыНажатиеЗавершение", ЭтотОбъект);
ВзаиморасчетыКлиент.ВалютыИКурсДокументаНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НадписьВалютыНажатиеЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(РезультатЗакрытия) = Тип("Структура") Тогда
ИзмененныеРеквизиты = РезультатЗакрытия.СтарыеЗначенияИзмененныхРеквизитов;
Если ИзмененныеРеквизиты.Количество() > 0 Тогда
НадписьВалютыНажатиеЗавершениеСервер(РезультатЗакрытия);
Если РезультатЗакрытия.НеобходимПересчетСуммДокумента Тогда
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
Если ИзмененныеРеквизиты.Свойство("ВалютаВзаиморасчетов") Тогда
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для документа с операцией ""Переход права собственности"" отправка/получение по ЭДО не предусмотрено.'"));
Возврат;
КонецЕсли;
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭПДНажатие(Элемент)
Если Объект.Ссылка.Пустая() Тогда
ТекстПредупреждения = НСтр("ru = 'Документ еще не записан. Открытие журнала ЭПД возможно только после записи документа.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ОтборДокументОснование", Объект.Ссылка);
ОткрытьФорму("Обработка.ЭлектронныеПеревозочныеДокументы.Форма.ФормаСпискаЭПД", ПараметрыОтбора);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияОформитьЭПДНажатие(Элемент, СтандартнаяОбработка)
Если Объект.Ссылка.Пустая() Тогда
ТекстПредупреждения = НСтр("ru = 'Документ еще не записан. Ввод ЭПД возможен только на основании записанных документов.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
ПараметрыВызова = Новый Структура();
ПараметрыВызова.Вставить("Ссылка", Объект.Ссылка);
СписокДокументов = ОбменСГИСЭПДВызовСервераПереопределяемый.ТипыДокументовЭПД();
ОповещениеОЗакрытие = Новый ОписаниеОповещения("ОбработатьРезультатВыбораТипаДокумента",
ОбменСГИСЭПДКлиентПереопределяемый,
ПараметрыВызова);
ПоказатьВыборИзМеню(ОповещениеОЗакрытие,СписокДокументов, Элемент);
КонецПроцедуры
&НаСервере
Процедура ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты)
ВзаиморасчетыСервер.ЗагрузитьЭтапыОплатыИзВременногоХранилища(ЭтаФорма);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, ИзмененныеРеквизиты, Истина);
УстановитьДоступностьЭлементовПоСтатусуСервер()
КонецПроцедуры
&НаСервере
Процедура НадписьВалютыНажатиеЗавершениеСервер(РезультатЗакрытия)
ИзмененныеРеквизиты = РезультатЗакрытия.СтарыеЗначенияИзмененныхРеквизитов;
Если ИзмененныеРеквизиты.Свойство("Валюта") Тогда
Если РезультатЗакрытия.НеобходимПересчетСуммДокумента Тогда
ВалютаПриИзмененииСервер(Объект.Валюта);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Валюта");
КонецЕсли;
Если ИзмененныеРеквизиты.Свойство("ВалютаВзаиморасчетов") Тогда
ЗаполнитьДоговорПоУмолчанию();
ЗаполнитьДоговорКонечногоКлиентаПоУмолчанию();
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, ИзмененныеРеквизиты, Истина);
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект,Элементы.ДекорацияСостояниеОригинала);
КонецПроцедуры
&НаКлиенте
Процедура КурьерПриИзменении(Элемент)
КурьерПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура КлиентПартнерПриИзменении(Элемент)
ПартнерКлиентПриИзмененииНаСервере();
ЗаполнитьДоговорКонечногоКлиентаПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура КлиентКонтрагентПриИзменении(Элемент)
КлиентКонтрагентПриИзмененииНаСервере();
ЗаполнитьДоговорКонечногоКлиентаПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура ВыборЭтапаГосКонтактаЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ЭтапГосконтрактаЕИС = Результат.ЭтапГосконтрактаЕИС;
Объект.ЭтапГосконтрактаЕИС = ЭтапГосконтрактаЕИС;
ПредставлениеЭтапаГосконтрактаЕИС = ЭлектронноеВзаимодействиеУТВызовСервера.СформироватьПредставлениеЭтапаГосконтракта(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЭтапГосконтрактаЕИСНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Госконтракт", ГосКонтракт);
ОткрытьФорму("Справочник.ГосударственныеКонтракты.Форма.ФормаВыбораЭтапаГосконтракта", ПараметрыОткрытия,,,,, Новый ОписаниеОповещения("ВыборЭтапаГосКонтактаЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ЭтапГосконтрактаЕИСОчистка(Элемент, СтандартнаяОбработка)
Объект.ЭтапГосконтрактаЕИС = "";
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияФайлыЕИСНажатие(Элемент, СтандартнаяОбработка)
ЭлектронноеАктированиеЕИСКлиент.ОткрытьСписокПриложенныхФайловДокумента(Объект.Ссылка, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
ЗаполнитьНалогообложениеНДСНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура КлиентДоговорСоздание(Элемент, СтандартнаяОбработка)
ПродажиКлиент.ОткрытьФормуСозданияДоговора(ЭтотОбъект, Элемент, "Объект.КлиентДоговор", Объект.КлиентПартнер,
СтандартнаяОбработка, "ПриИзмененииДоговораКлиента");
КонецПроцедуры
&НаКлиенте
Процедура КлиентДоговорПриИзменении(Элемент)
КлиентДоговорПриИзмененииНаСервере();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока И Не Копирование Тогда
ТекущаяСтрока.Подразделение = Объект.Подразделение;
Если РеализацияЧерезКомиссионера И Не ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) Тогда
ТекущаяСтрока.ВидЦены = ВидЦеныПоДоговору;
КонецЕсли;
КонецЕсли;
ПродажиКлиент.СтрокаНоменклатурыПриНачалеРедактирования(ЭтаФорма, "Товары", ТекущаяСтрока, НоваяСтрока, Копирование);
Если Копирование Тогда
ТекущаяСтрока.СуммаАвтоматическойСкидки = 0;
ТекущаяСтрока.ПроцентАвтоматическойСкидки = 0;
ТекущаяСтрока.СуммаБонусныхБалловКСписанию = 0;
ТекущаяСтрока.СуммаБонусныхБалловКСписаниюВВалюте = 0;
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтаФорма, "Товары", Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
НеобходимоОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий, Истина);
ТоварыПослеУдаленияСервер(НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения);
Если НеобходимоОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
УстановитьПризнакЗаполненияСклада();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломИзменения(Элемент, Отказ)
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, Элементы.Товары.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТекущаяСтрока <> Неопределено Тогда
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.РеализацияПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
ЭтоПереходПраваСобственности =
(Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
НадписьРасхождениеЗаказ,
Элементы,
ЭтоПереходПраваСобственности);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
Если НоваяСтрока Тогда
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий) Тогда
ТекущаяСтрокаИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ЭтоПереходПраваСобственности =
(Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
НадписьРасхождениеЗаказ,
Элементы,
ЭтоПереходПраваСобственности);
Если Не ОтменаРедактирования Тогда
КэшСтроки = ?(НоваяСтрока, Неопределено, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.Товары, ЭтотОбъект));
СкладыКлиент.ОбновитьТаблицуСкладов(ТаблицаСкладов, ТекущиеДанные, КэшСтроки, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элементы.Товары, ДополнительныеПараметры);
Если ДополнительныеПараметры.Свойство("ТребуетсяСерверныйВызов") Тогда
ПодключитьОбработчикОжидания("ТоварыПриОкончанииРедактированияДляСерверногоВызова", 0.5, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактированияДляСерверногоВызова()
ТоварыПриОкончанииРедактированияНаСервере();
КонецПроцедуры
&НаСервере
Процедура ТоварыПриОкончанииРедактированияНаСервере()
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Если Объект.РеализацияПоЗаказам И НЕ РеализацияСверхЗаказа Тогда
Отказ = Истина;
ПодобратьИзЗаказа()
КонецЕсли;
Если Копирование Тогда
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтаФорма, "Товары", Отказ, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы.ТоварыПроцентАвтоматическойСкидки
Или Поле = Элементы.ТоварыСуммаАвтоматическойСкидки Тогда
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если Не Объект.РеализацияПоЗаказам ИЛИ РеализацияСверхЗаказа И ТекущиеДанные.КодСтроки = 0 Тогда
Если Не Объект.СкидкиРассчитаны Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("ТоварыВыборЗавершение", ЭтотОбъект,
Новый Структура("ВыбраннаяСтрока, Поле, ТекущиеДанные", ВыбраннаяСтрока, Поле, ТекущиеДанные)),
НСтр("ru = 'Скидки (наценки) не рассчитаны, рассчитать?'"), РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ТоварыВыборФрагмент(ТекущиеДанные);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыЗаказКлиента Тогда
Если ЗначениеЗаполнено(Элементы.Товары.ТекущиеДанные.ЗаказКлиента) Тогда
ПоказатьЗначение(Неопределено, Элементы.Товары.ТекущиеДанные.ЗаказКлиента);
ИначеЕсли ЗначениеЗаполнено(Объект.ЗаказКлиента) Тогда
ПоказатьЗначение(Неопределено, Объект.ЗаказКлиента);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыЦена Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ПравоНаЧтениеВидаЦены Тогда
Если ЗначениеЗаполнено(ТекущиеДанные.ВидЦены) И НЕ Объект.Согласован Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru='Для редактирования цены очистите вид цены'"),
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Товары", ТекущиеДанные.НомерСтроки, "ВидЦены"),);
КонецЕсли;
КонецЕсли;
ИначеЕсли НаборыКлиент.БлокируемыйЭлемент(Поле) Тогда
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПараметрОповещения = Новый Структура;
ПараметрОповещения.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрОповещения.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрОповещения.Вставить("ФормаВладелец", УникальныйИдентификатор);
Оповестить("РедактироватьНабор", ПараметрОповещения, ЭтаФорма);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыНоменклатураНабора Тогда
ПоказатьЗначение(Неопределено, Элементы.Товары.ТекущиеДанные.НоменклатураНабора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыборЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ВыбраннаяСтрока = ДополнительныеПараметры.ВыбраннаяСтрока;
Поле = ДополнительныеПараметры.Поле;
ТекущиеДанные = ДополнительныеПараметры.ТекущиеДанные;
Результат = РезультатВопроса;
Если Результат = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Истина);
СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки);
СтруктураПараметры.Вставить("РеализацияСверхЗаказа", РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам);
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
ТоварыВыборФрагмент(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыборФрагмент(ТекущиеДанные)
Если НЕ ЗначениеЗаполнено(АдресПримененныхСкидокВоВременномХранилище) Тогда
РассчитатьСкидкиБезПримененияКОбъекту();
КонецЕсли;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуПримененныеСкидки(ТекущиеДанные, Объект, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Функция ДополнительныеПараметрыОбработкиЗавершения()
Результат = Новый Структура;
Результат.Вставить("ТекущаяСтрока", Неопределено);
Результат.Вставить("ОписаниеОповещения", Неопределено);
Результат.Вставить("СтрокаОтвязанаОтЗаказа", Ложь);
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ТоварыСкладПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = ДополнительныеПараметрыОбработкиЗавершения();
ДополнительныеПараметры. ТекущаяСтрока = ТекущаяСтрока;
ВопросПользователюПриИзмененииРеквизитаСтроки(
Новый ОписаниеОповещения("ТоварыСкладПриИзмененииВопросПользователюЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкладПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если РеализацияСверхЗаказа И Не Результат Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
Если ДополнительныеПараметры.СтрокаОтвязанаОтЗаказа Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = ДополнительныеПараметрыОбработкиЗавершения();
ДополнительныеПараметры. ТекущаяСтрока = ТекущаяСтрока;
ВопросПользователюПриИзмененииРеквизитаСтроки(
Новый ОписаниеОповещения("ТоварыНоменклатураПриИзмененииВопросПользователюЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = ДополнительныеПараметрыОбработкиЗавершения();
ДополнительныеПараметры. ТекущаяСтрока = ТекущаяСтрока;
ВопросПользователюПриИзмененииРеквизитаСтроки(
Новый ОписаниеОповещения("ТоварыНоменклатураПартнераПриИзмененииВопросПользователюЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если РеализацияСверхЗаказа И Не Результат Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыПриИзмененииТипаНоменклатуры = Новый Структура;
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьРаботы", Истина);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьОтменено", Ложь);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЭтоПереходПраваСобственности",
Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПоНоменклатуреПартнера");
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры", ПараметрыПриИзмененииТипаНоменклатуры);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПартнераНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЭлементФормы" , Элемент);
ДополнительныеПараметры.Вставить("ТекущаяСтрока", ТекущаяСтрока);
ОповещениеОЗакрытие = Новый ОписаниеОповещения("ОбработатьРезультатВыбораНоменклатурыПартнера", ЭтотОбъект, ДополнительныеПараметры);
НоменклатураПартнеровКлиент.ОткрытьФормуВыбораНоменклатурыПартнера(ЭтотОбъект, Объект.Партнер, ТекущаяСтрока, Элемент.Заголовок, ОповещениеОЗакрытие);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьРезультатВыбораНоменклатурыПартнера(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры.ТекущаяСтрока.НоменклатураПартнера = ВыбранноеЗначение;
ТоварыНоменклатураПартнераПриИзменении(ДополнительныеПараметры.ЭлементФормы);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если РеализацияСверхЗаказа И Не Результат Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
СтруктураЗаполненияБонусныхБаллов = Неопределено;
ПроверкаОплатыБонуснымиБаллами(ТекущаяСтрока, СтруктураЗаполненияБонусныхБаллов);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ПараметрыПриИзмененииТипаНоменклатуры = Новый Структура;
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьРаботы", Истина);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьОтменено", Ложь);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЭтоПереходПраваСобственности",
Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
Если Не РеализацияЧерезКомиссионера
И ((ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25)) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами", СтруктураЗаполненияБонусныхБаллов);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры", ПараметрыПриИзмененииТипаНоменклатуры);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = ДополнительныеПараметрыОбработкиЗавершения();
ДополнительныеПараметры. ТекущаяСтрока = ТекущаяСтрока;
ВопросПользователюПриИзмененииРеквизитаСтроки(
Новый ОписаниеОповещения("ТоварыХарактеристикаПриИзмененииВопросПользователюЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если РеализацияСверхЗаказа И Не Результат Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
СтруктураЗаполненияБонусныхБаллов = Неопределено;
ПроверкаОплатыБонуснымиБаллами(ТекущаяСтрока, СтруктураЗаполненияБонусныхБаллов);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами", СтруктураЗаполненияБонусныхБаллов);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
Если ДополнительныеПараметры.СтрокаОтвязанаОтЗаказа Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КонецЕсли;
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Характеристика", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыОбособленноПриИзменении(Элемент)
НаправленияДеятельностиКлиент.ТоварыОбособленноПриИзменении(ЭтотОбъект, Элементы.Товары.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураЗаполненияБонусныхБаллов = Неопределено;
ПроверкаОплатыБонуснымиБаллами(ТекущаяСтрока, СтруктураЗаполненияБонусныхБаллов);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
Если ТекущаяСтрока.Количество > 0 И Не ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
ИначеЕсли ТекущаяСтрока.Количество > 0 И ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) Тогда
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
ИначеЕсли (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами", СтруктураЗаполненияБонусныхБаллов);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураЗаполненияБонусныхБаллов = Неопределено;
ПроверкаОплатыБонуснымиБаллами(ТекущаяСтрока, СтруктураЗаполненияБонусныхБаллов);
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, СтруктураЗаполненияБонусныхБаллов);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВидЦеныПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураЗаполненияБонусныхБаллов = Неопределено;
ПроверкаОплатыБонуснымиБаллами(ТекущаяСтрока, СтруктураЗаполненияБонусныхБаллов);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами", СтруктураЗаполненияБонусныхБаллов);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураЗаполненияБонусныхБаллов = Неопределено;
ПроверкаОплатыБонуснымиБаллами(ТекущаяСтрока, СтруктураЗаполненияБонусныхБаллов);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами", СтруктураЗаполненияБонусныхБаллов);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураЗаполненияБонусныхБаллов = Неопределено;
ПроверкаОплатыБонуснымиБаллами(ТекущаяСтрока, СтруктураЗаполненияБонусныхБаллов);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами", СтруктураЗаполненияБонусныхБаллов);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПроцентРучнойСкидкиПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураЗаполненияБонусныхБаллов = Неопределено;
ПроверкаОплатыБонуснымиБаллами(ТекущаяСтрока, СтруктураЗаполненияБонусныхБаллов);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами", СтруктураЗаполненияБонусныхБаллов);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаРучнойСкидкиПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьПроцентРучнойСкидки");
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать, ПересчитыватьСуммуРучнойСкидки", Ложь, Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураПересчетаЦены = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаЦеныСкидкиВПродажахВТЧ(Объект,
Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию"));
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуСкидкуПоСуммеВПродажах", СтруктураПересчетаЦены);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаказКлиентаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ПараметрыОтбора = Новый Структура();
ПараметрыОтбора.Вставить("Валюта", Объект.Валюта);
ПараметрыОтбора.Вставить("Контрагент", Объект.Контрагент);
ПараметрыОтбора.Вставить("Договор", Объект.Договор);
ПараметрыОтбора.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОтбора.Вставить("Организация", Объект.Организация);
ПараметрыОтбора.Вставить("Партнер", Объект.Партнер);
ПараметрыОтбора.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОтбора.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыОтбора.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОтбора.Вставить("ПорядокРасчетов", Объект.ПорядокРасчетов);
ПараметрыОтбора.Вставить("ВернутьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыОтбора.Вставить("ТребуетсяЗалогЗаТару", Объект.ТребуетсяЗалогЗаТару);
ПараметрыОтбора.Вставить("Сделка", Объект.Сделка);
ПараметрыОтбора.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ЗаказКлиента = Неопределено;
ОткрытьФорму(
"Документ.РеализацияТоваровУслуг.Форма.ФормаВыбораРаспоряжения",
Новый Структура("Отбор,Склад,Регистратор", ПараметрыОтбора, Объект.Склад, Объект.Ссылка),,,,, Новый ОписаниеОповещения("ТоварыЗаказКлиентаНачалоВыбораЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
ТоварыЗаказКлиентаНачалоВыбораФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаказКлиентаНачалоВыбораЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ЭтоОтгрузкаКлиенту = ТипЗнч(Результат.ЗаказКлиента) = Тип("ДокументСсылка.ОтгрузкаТоваровКлиенту");
ЭтоПервичныйДокумент = ТипЗнч(Результат.ЗаказКлиента) = Тип("ДокументСсылка.ПервичныйДокумент");
Если Результат.ПорядокРасчетов <> Объект.ПорядокРасчетов
И Не ЭтоОтгрузкаКлиенту
И Не ЭтоПервичныйДокумент Тогда
ЕстьУказанныеЗаказы = Ложь;
Для Каждого СтрокаТовара Из Объект.Товары Цикл
Если ЗначениеЗаполнено(СтрокаТовара.ЗаказКлиента)
И СтрокаТовара.ПолучитьИдентификатор() <> Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор() Тогда
ЕстьУказанныеЗаказы = Истина;
КонецЕсли;
КонецЦикла;
Если ЕстьУказанныеЗаказы Тогда
ОчиститьСообщения();
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ТекстСообщения = НСтр("ru='У выбранного распоряжения порядок расчетов %1 отличается от порядка расчетов документа %2.'");
Иначе
ТекстСообщения = НСтр("ru='У выбранного заказа порядок расчетов %1 отличается от порядка расчетов документа %2.'");
КонецЕсли;
ТекстСообщения = СтрШаблон(ТекстСообщения, Результат.ПорядокРасчетов, Объект.ПорядокРасчетов);
ИндексСтроки = Объект.Товары.НайтиПоИдентификатору(Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор()).НомерСтроки - 1;
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,,"Объект.Товары[" + ИндексСтроки + "].ЗаказКлиента");
Возврат;
Иначе
Объект.ПорядокРасчетов = Результат.ПорядокРасчетов;
КонецЕсли;
КонецЕсли;
ЗаказКлиента = Результат.ЗаказКлиента;
Элементы.Товары.ТекущиеДанные.ЗаказКлиента = ЗаказКлиента;
ТоварыЗаказКлиентаНачалоВыбораФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = ТекущаяСтрока.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущаяСтрока.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
ТоварыСерияПересчитатьЦены(ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПересчитатьЦены(ТекущаяСтрока = Неопределено)
Если ТекущаяСтрока = Неопределено Тогда
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
КонецЕсли;
Если ЦенообразованиеКлиент.НеобходимПересчетЦеныПриИзменении(ТекущаяСтрока.Номенклатура, "Серия", Объект.Дата) Тогда
ДополнительныеПараметры = ДополнительныеПараметрыОбработкиЗавершения();
ДополнительныеПараметры.ТекущаяСтрока = ТекущаяСтрока;
ТоварыСерияПересчитатьЦеныЗавершение(ДополнительныеПараметры);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПересчитатьЦеныЗавершение(ДополнительныеПараметры) Экспорт
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
Если ДополнительныеПараметры.СтрокаОтвязанаОтЗаказа Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПриИзменении(Элемент)
ОбработатьИзменениеАдреса(Элемент, "АдресДоставки");
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаПриИзменении(Элемент)
ОбработатьИзменениеАдреса(Элемент, "АдресДоставкиПеревозчика");
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументе(Команда)
ПроверитьКоличествоВДокументеКлиент();
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВозвращаемыеПараметры = Результат;
Если ВозвращаемыеПараметры <> Неопределено Тогда
ОчиститьСообщения();
ПроверитьКоличествоВДокументеЗавершениеСервер(
ВозвращаемыеПараметры,
?(КэшированныеЗначения = Неопределено, ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения(), КэшированныеЗначения));
Модифицированность = Истина;
ТекстОснования = НСтр("ru = 'введенного на основании распоряжения или недоступна роль ""Реализация сверх заказа"".'");
ОбщегоНазначенияУТКлиент.ВывестиСообщениеПревышенияПоКоличеству(ВозвращаемыеПараметры, ТекстОснования);
УстановитьПризнакЗаполненияСклада();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоСоглашению(Команда)
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоСоглашению(Объект, "Товары", НСтр("ru='Товары'")) Тогда
Если РеализацияСверхЗаказа И НЕ ОтклонениеОтУсловийПродаж Тогда
Если Объект.РеализацияПоЗаказам И Объект.Товары.Итог("РасхождениеЗаказ") = 0 Тогда
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ТекстПредупреждения = НСтр("ru='Цена не может быть назначена в строках по распоряжению.'");
Иначе
ТекстПредупреждения = НСтр("ru='Цена не может быть назначена в строках по заказу.'");
КонецЕсли;
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат
КонецЕсли;
КонецЕсли;
ОчиститьСообщения();
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюНаСервере(,,ТекстОшибки);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоДоговору(Команда)
ВидЦеныДоговора = ВидЦеныДоговора(Объект.Договор);
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВиду(Объект, ВидЦеныДоговора) Тогда
ОчиститьСообщения();
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоДоговоруНаСервере(ТекстОшибки);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтотОбъект);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокПоВидуЦен(Команда)
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦен(Объект, "Товары", НСтр("ru='Товары'")) Тогда
ПараметрыВыбораЦен = ЦеныПредприятияЗаполнениеКлиент.НовыйПараметрыЗаполненияВыбратьВидЦен();
ПараметрыВыбораЦен.ОписаниеОповещения =
Новый ОписаниеОповещения("ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенЗавершение", ЭтотОбъект);
ПараметрыВыбораЦен.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораЦен.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораЦен.ВладелецИндивидуальногоВидаЦен = ?(ИспользоватьСоглашенияСКлиентами,Объект.Соглашение,Объект.Партнер);
ЦеныПредприятияЗаполнениеКлиент.ВыбратьВидЦен(ПараметрыВыбораЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенЗавершение(ВидЦен, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ВидЦен) Тогда
МассивСтрок = Новый Массив;
Для Каждого ТекСтрока Из Элементы.Товары.ВыделенныеСтроки Цикл
НайденнаяСтрока = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
Если ?(РеализацияСверхЗаказа, НайденнаяСтрока.КодСтроки = 0, Истина) Тогда
МассивСтрок.Добавить(НайденнаяСтрока);
КонецЕсли;
КонецЦикла;
Если МассивСтрок.Количество() = 0
И РеализацияСверхЗаказа И НЕ ОтклонениеОтУсловийПродаж
И Объект.РеализацияПоЗаказам Тогда
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ТекстПредупреждения = НСтр("ru='Цена не может быть назначена в строках по распоряжению.'");
Иначе
ТекстПредупреждения = НСтр("ru='Цена не может быть назначена в строках по заказу.'");
КонецЕсли;
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат
КонецЕсли;
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
ЦеныРассчитаны = ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(ВидЦен);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, ВидЦен);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(РезультатВыполнения, Параметры) Экспорт
Если РезультатВыполнения.Результат Тогда
ОбработатьШтрихкоды(РезультатВыполнения.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьВидыЗапасов(Команда)
ПараметрыРедактированияВидовЗапасов = ПоместитьТоварыИВидыЗапасовВХранилище();
ФинансыКлиент.ОткрытьВидыЗапасов(ЭтотОбъект, ПараметрыРедактированияВидовЗапасов);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СообщитьОбОшибкахОткрытияПодбора(Отказ)
Если ИспользоватьСоглашенияСКлиентами И Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Поле ""Соглашение"" не заполнено'"), Объект.Ссылка, "Объект.Соглашение",,Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Поле ""Валюта"" не заполнено'"), Объект.Ссылка, "Объект.Валюта",,Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодбор(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.РеализацияТоваровУслуг.ФормаДокумента.Команда.ОткрытьПодбор");
Отказ = Ложь;
Если (ИспользоватьСоглашенияСКлиентами И Не ЗначениеЗаполнено(Объект.Соглашение))
ИЛИ Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
СообщитьОбОшибкахОткрытияПодбора(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрЗаголовок = НСтр("ru = 'Подбор товаров в %Документ%'");
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", Объект.Ссылка);
Иначе
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", НСтр("ru = 'реализацию товаров и услуг'"));
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыФормы.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыФормы.Вставить("ВозвращатьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("Заголовок", ПараметрЗаголовок);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
ПараметрыФормы.Вставить("РежимПодбораИсключитьГруппыДоступныеВЗаказах", Истина);
ПараметрыФормы.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию") Тогда
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре()));
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
ИначеЕсли РеализацияЧерезКомиссионера Тогда
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки",Истина);
ПараметрыФормы.Вставить("РежимПодбораБезСоглашенийСКлиентами", Истина);
ПараметрыФормы.Вставить("ВидЦены", ВидЦеныПоДоговору);
ИначеЕсли Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ОтборПоТипуНоменклатуры = Новый Массив;
ОтборПоТипуНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
ОтборПоТипуНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Набор"));
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(ОтборПоТипуНоменклатуры));
КонецЕсли;
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыФормы.Вставить("ИспользоватьРасширенныеВозможностиЗаказаКлиента", ИспользоватьРасширенныеВозможностиЗаказаКлиента);
ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСкидкиНаценки(Команда)
РассчитатьСкидкиНаценкиКлиент();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьИнформациюОСкидках(Команда)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.КодСтроки) Тогда
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ТекстПредупреждения = НСтр("ru='Просмотр информации о скидках (наценках) возможен только в строках сверх распоряжения.'");
Иначе
ТекстПредупреждения = НСтр("ru='Просмотр информации о скидках (наценках) возможен только в строках сверх заказа.'");
КонецЕсли;
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
Если НЕ Объект.СкидкиРассчитаны Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("ОткрытьИнформациюОСкидкахЗавершение", ЭтотОбъект,
Новый Структура("ТекущиеДанные", ТекущиеДанные)), НСтр("ru = 'Скидки (наценки) не рассчитаны, рассчитать?'"),
РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ОткрытьИнформациюОСкидкахФрагмент(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьИнформациюОСкидкахЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ТекущиеДанные = ДополнительныеПараметры.ТекущиеДанные;
Результат = РезультатВопроса;
Если Результат = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Истина);
СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки);
СтруктураПараметры.Вставить("РеализацияСверхЗаказа", РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам);
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
ОткрытьИнформациюОСкидкахФрагмент(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьИнформациюОСкидкахФрагмент(Знач ТекущиеДанные)
Если Не ЗначениеЗаполнено(АдресПримененныхСкидокВоВременномХранилище) Тогда
РассчитатьСкидкиБезПримененияКОбъекту();
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуПримененныеСкидки(ТекущиеДанные, Объект, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьАвтоматическиеСкидки(Команда)
АдресВХранилище = ВыполнитьПредварительныйРасчетСкидокНаСервере();
Оповещение = Новый ОписаниеОповещения("НазначитьАвтоматическиеСкидкиЗавершение", ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуНазначенияУправляемыхСкидокНаценок(АдресВХранилище, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьАвтоматическиеСкидкиЗавершение(ВозвращенноеЗначение, ДополнительныеПараметры) Экспорт
Если ВозвращенноеЗначение <> Неопределено Тогда
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
УправляемыеСкидки = ВозвращенноеЗначение;
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Ложь);
СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки);
СтруктураПараметры.Вставить("РеализацияСверхЗаказа", РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам);
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
ПоказатьОповещениеПользователя(
НСтр("ru = 'Скидки (наценки)'"),
,
НСтр("ru = 'Скидки (наценки) рассчитаны'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидку(Команда)
РеализацияСверхЗаказаПоЗаказу = РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам;
Если Не ВозможноНазначениеРучнойСкидкиНаценки() Тогда
Возврат;
КонецЕсли;
АдресВоВременномХранилище = АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(Ложь);
Оповещение = Новый ОписаниеОповещения(
"НазначитьРучнуюСкидкуЗавершение",
ЭтотОбъект,
Новый Структура("АдресВоВременномХранилище", АдресВоВременномХранилище));
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуНазначенияРучныхСкидок(
АдресВоВременномХранилище,
Объект.Валюта,
Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидкуЗавершение(СуммаРучнойСкидкиНаценки, ДополнительныеПараметры) Экспорт
АдресВоВременномХранилище = ДополнительныеПараметры.АдресВоВременномХранилище;
Если СуммаРучнойСкидкиНаценки <> Неопределено Тогда
НазначитьРучнуюСкидкуНаСервере(СуммаРучнойСкидкиНаценки, Неопределено, АдресВоВременномХранилище);
СкидкиНаценкиЗаполнениеКлиент.ОповеститьОбОкончанииНазначенияРучныхСкидокНаценок(СуммаРучнойСкидкиНаценки, Объект.Валюта);
РассчитатьИтоговыеПоказатели(ЭтотОбъект)
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидкуДляВыделенныхСтрок(Команда)
РеализацияСверхЗаказаПоЗаказу = РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам;
Если Не ВозможноНазначениеРучнойСкидкиНаценки() Тогда
Возврат;
КонецЕсли;
Если Элементы.Товары.ВыделенныеСтроки <> Неопределено И РеализацияСверхЗаказаПоЗаказу Тогда
СтрокиТабличнойЧасти = Новый Массив();
Для Каждого ТекСтрока Из Элементы.Товары.ВыделенныеСтроки Цикл
НайденнаяСтрока = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
Если НайденнаяСтрока.КодСтроки = 0 Тогда
СтрокиТабличнойЧасти.Добавить(НайденнаяСтрока);
КонецЕсли;
КонецЦикла;
Если СтрокиТабличнойЧасти.Количество() = 0 Тогда
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ТекстПредупреждения = НСтр("ru='Ручная скидка (наценка) не может быть назначена в строках по распоряжению.'");
Иначе
ТекстПредупреждения = НСтр("ru='Ручная скидка (наценка) не может быть назначена в строках по заказу.'");
КонецЕсли;
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
КонецЕсли;
АдресВоВременномХранилище = АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(Истина);
Оповещение = Новый ОписаниеОповещения(
"НазначитьРучнуюСкидкуДляВыделенныхСтрокЗавершение",
ЭтотОбъект,
Новый Структура("АдресВоВременномХранилище", АдресВоВременномХранилище));
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуНазначенияРучныхСкидок(
АдресВоВременномХранилище,
Объект.Валюта,
Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НазначитьРучнуюСкидкуДляВыделенныхСтрокЗавершение(СуммаРучнойСкидкиНаценки, ДополнительныеПараметры) Экспорт
АдресВоВременномХранилище = ДополнительныеПараметры.АдресВоВременномХранилище;
Если СуммаРучнойСкидкиНаценки <> Неопределено Тогда
НазначитьРучнуюСкидкуНаСервере(СуммаРучнойСкидкиНаценки, Элементы.Товары.ВыделенныеСтроки, АдресВоВременномХранилище);
СкидкиНаценкиЗаполнениеКлиент.ОповеститьОбОкончанииНазначенияРучныхСкидокНаценок(СуммаРучнойСкидкиНаценки, Объект.Валюта);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьРучныеСкидки(Команда)
РеализацияСверхЗаказаПоЗаказу = РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам;
Если Не ВозможнаОтменаРучныхСкидокНаценок() Тогда
Возврат;
КонецЕсли;
ОтменитьРучныеСкидкиНаСервере();
СкидкиНаценкиЗаполнениеКлиент.ОповеститьОбОкончанииНазначенияРучныхСкидокНаценок();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РассчитатьСкидкиНаценкиКлиент()
СтруктураПараметры = Новый Структура;
СтруктураПараметры.Вставить("ПрименятьКОбъекту", Истина);
СтруктураПараметры.Вставить("ТолькоПредварительныйРасчет", Ложь);
СтруктураПараметры.Вставить("ВосстанавливатьУправляемыеСкидки", Истина);
СтруктураПараметры.Вставить("УправляемыеСкидки", УправляемыеСкидки);
СтруктураПараметры.Вставить("РеализацияСверхЗаказа", РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам);
Если Не Объект.РеализацияПоЗаказам Тогда
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
Иначе
РассчитатьПоРеализацииТоваровУслугПоЗаказу();
Если РеализацияСверхЗаказа Тогда
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
КонецЕсли;
КонецЕсли;
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
ПоказатьОповещениеПользователя(
НСтр("ru = 'Скидки (наценки)'"),
,
НСтр("ru = 'Скидки (наценки) рассчитаны'"),
БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаСервере
Процедура РассчитатьПоРеализацииТоваровУслугПоЗаказу(Знач ЗаполнитьРеализациюПоЗаказу = Истина)
ПараметрыРасчета = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыРассчитать();
ПараметрыРасчета.ЗаполнитьРеализациюПоЗаказу = ЗаполнитьРеализациюПоЗаказу;
СкидкиНаценкиЗаполнениеСервер.Рассчитать(Объект, ПараметрыРасчета);
ЗаполнитьДанныеДляРасчетаОплатыБонуснымиБаллами();
КонецПроцедуры
&НаКлиенте
Процедура ПрименитьИзмененияСкидокНаценокНаКлиенте(Отказ)
Если Не Объект.РеализацияПоЗаказам Тогда
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(Неопределено, Истина);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
Отказ = Истина;
КонецЕсли;
Иначе
РассчитатьПоРеализацииТоваровУслугПоЗаказу();
Если РеализацияСверхЗаказа Тогда
СтруктураСообщений = РассчитатьСкидкиНаценкиНаСервере(Неопределено, Истина);
Если СтруктураСообщений.Сообщения.Количество() > 0 И СтруктураСообщений.АвтоматическиОткрывать Тогда
ОткрытьФорму("ОбщаяФорма.СообщенияСкидокНаценок", СтруктураСообщений, ЭтаФорма, УникальныйИдентификатор);
Отказ = Истина;
КонецЕсли;
КонецЕсли;
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
ПоказатьОповещениеПользователя(
НСтр("ru = 'Скидки (наценки)'"),
,
НСтр("ru = 'Скидки (наценки) рассчитаны'"),
БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыПоЗаказамОрдерам(Команда)
ПодобратьИзЗаказа();
КонецПроцедуры
&НаСервере
Процедура ПоместитьРасшифровкуПлатежаВоВременноеХранилище()
ВзаиморасчетыСервер.ПоместитьРасшифровкуПлатежаВоВременноеХранилище(ЭтаФорма, "ЗачетОплаты");
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВес(Команда)
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтаФорма);
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(
Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект, ТекущаяСтрока),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, ТекущаяСтрока) Экспорт
Если РезультатВыполнения.Результат Тогда
ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
СтруктураЗаполненияБонусныхБаллов = Неопределено;
ПроверкаОплатыБонуснымиБаллами(ТекущаяСтрока, СтруктураЗаполненияБонусныхБаллов);
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, СтруктураЗаполненияБонусныхБаллов);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтроках(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если СкладыКлиент.ПроверитьВозможностьЗаполненияСкладовВТабличнойЧасти(Объект, Объект.Товары, НСтр("ru='Товары'"), ВыделенныеСтроки) Тогда
СтруктураОтбора = Новый Структура("ВыборГруппы,ЭтоГруппа", ПредопределенноеЗначение("Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказахИНакладных"), Ложь);
СтруктураПараметров = Новый Структура("Отбор,ГруппаСкладов,ОтображениеТаблицы",
СтруктураОтбора, Объект.Склад, ОтображениеТаблицы.Список);
ВыбранныйСклад = Неопределено;
ОткрытьФорму("Справочник.Склады.ФормаВыбора", СтруктураПараметров, ЭтаФорма,,,, Новый ОписаниеОповещения("ЗаполнитьСкладВВыделенныхСтрокахЗавершение", ЭтотОбъект, Новый Структура("ВыделенныеСтроки", ВыделенныеСтроки)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтрокахЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВыделенныеСтроки = ДополнительныеПараметры.ВыделенныеСтроки;
ВыбранныйСклад = Результат;
Если ЗначениеЗаполнено(ВыбранныйСклад) Тогда
ЗаполненоСтрок = ЗаполнитьСкладВВыделенныхСтрокахНаСервере(ВыделенныеСтроки, ВыбранныйСклад);
СкладыКлиент.ПоказатьОповещениеОЗаполненииСкладаВТабличнойЧасти(ВыбранныйСклад, ЗаполненоСтрок, ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.СтруктураПересчетаСуммы(
"Количество, Сумма, СуммаНДС, СуммаСНДС, СуммаРучнойСкидки, СуммаАвтоматическойСкидки,
| СуммаБонусныхБалловКСписанию, СуммаБонусныхБалловКСписаниюВВалюте, "
+ ЗависимыеРеквизитыСтрокой(), "КоличествоУпаковок");
Если ТаблицаФормы.ТекущиеДанные <> Неопределено Тогда
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ЗаполнитьСтруктуруПересчетаСуммы(СтруктураПересчетаСуммы, ТаблицаФормы.ТекущиеДанные);
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("СтруктураПересчетаСуммы", СтруктураПересчетаСуммы);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы,
Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект, ДополнительныеПараметры));
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ДобавитьСтрокуДляПересчетаСуммы(ДополнительныеПараметры.СтруктураПересчетаСуммы, ТекущаяСтрока);
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ДобавитьСтрокуДляПересчетаСуммы(ДополнительныеПараметры.СтруктураПересчетаСуммы, НоваяСтрока);
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПересчитатьСуммы(ДополнительныеПараметры.СтруктураПересчетаСуммы);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерии(Команда)
ОткрытьПодборСерий();
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСерииПоFEFO(Команда)
ОчиститьСообщения();
ДанныеТаблицы = Объект.Товары;
Если ЕстьЗаполненныеСерииПоFEFO(ДанныеТаблицы) Тогда
НоменклатураКлиент.ЗадатьВопросОПерезаполненииСерийПоFEFO(
Новый ОписаниеОповещения("ЗаполнитьСерииПоFEFOЗавершение", ЭтотОбъект));
Возврат;
КонецЕсли;
Если Не ЗаполнитьСерииПоFEFOСервер() Тогда
НоменклатураКлиент.ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСерииПоFEFOЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если НЕ Результат Тогда
Возврат;
КонецЕсли;
Если Не ЗаполнитьСерииПоFEFOСервер() Тогда
НоменклатураКлиент.ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СтруктураСообщений()
Возврат СкидкиНаценкиЗаполнениеСервер.СтруктураСообщений(Объект);
КонецФункции
&НаКлиенте
Процедура ПоказатьСообщения(Команда)
СкидкиНаценкиЗаполнениеКлиент.ОткрытьФормуСообщений(СтруктураСообщений(), ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура СчитатьКартуЛояльности(Команда)
Если Объект.Согласован Тогда
Возврат;
КонецЕсли;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ОткрытьФорму(
"Справочник.КартыЛояльности.Форма.СчитываниеКартыЛояльности",
ПараметрыОткрытия,
ЭтаФорма,
ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыПечати(Элемент)
ОткрытьРеквизитыПечатиРеализации();
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
ПолучитьСтрокиИзБуфераОбмена();
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КоличествоВставленных = Объект.Товары.Количество()-КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество,Склад");
КонецПроцедуры
&НаКлиенте
Процедура ОтвязатьОтЗаказа(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество()>0 Тогда
ОтвязатьОтЗаказаСервер(Ложь);
ОповеститьОбОкончанииОтвязкиСтрок(ВыделенныеСтроки.Количество());
Иначе
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ТекстПредупреждения = НСтр("ru='Выберите строки, которые необходимо отвязать от распоряжения.'");
Иначе
ТекстПредупреждения = НСтр("ru='Выберите строки, которые необходимо отвязать от заказа.'");
КонецЕсли;
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
ПараметрыЗагрузки.ЗагружатьЦены = Истина;
ПараметрыЗагрузки.Организация = Объект.Организация;
ПараметрыЗагрузки.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыЗагрузки.НалогообложениеНДС = Объект.НалогообложениеНДС;
ПараметрыЗагрузки.ДатаЗаполнения = Объект.Дата;
ПараметрыЗагрузки.ЭтоВозвратнаяТара = Объект.ВернутьМногооборотнуюТару;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Дата = Объект.Дата;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Валюта = Объект.Валюта;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Соглашение = Объект.Соглашение;
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию") Тогда
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
ИначеЕсли Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ТипыНоменклатуры = Новый Массив;
ТипыНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"));
ТипыНоменклатуры.Добавить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Набор"));
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры", ТипыНоменклатуры);
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
ОчиститьСообщения();
ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для документа с операцией ""Переход права собственности"" отправка/получение по ЭДО не предусмотрено.'"));
Возврат;
КонецЕсли;
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработчикОжиданияЭДО()
ОбменСКонтрагентамиКлиент.ОбработчикОжиданияЭДО(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияИС()
СоответствиеТребованиямГИСМТКлиент.ПроверитьВыполнениеЗадания(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура РасчетыНажатие(Элемент, СтандартнаяОбработка)
ВзаиморасчетыКлиент.РасчетыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СоставНабора(Команда)
ВыбраннаяСтрока = Элементы.Товары.ТекущаяСтрока;
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если Не ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПоказатьПредупреждение(,НСтр("ru = 'Открытие состава набора возможно только для набора.'"));
Возврат;
КонецЕсли;
ПараметрыКомплекта = Новый Структура;
ПараметрыКомплекта.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыКомплекта.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыКомплекта.Вставить("СверхЗаказа", Истина);
ПараметрыКомплекта.Вставить("КолонкиНабора", КолонкиНабора(ЭтаФорма));
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыКомплекта);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыОткрытия.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказ(Команда)
Если Модифицированность Или Не Объект.Проведен Тогда
Ответ = Неопределено;
ПоказатьВопрос(Новый ОписаниеОповещения("ЗакрытьЗаказЗавершение", ЭтотОбъект),
НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"), РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
ИначеЕсли Не Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение)) Тогда
Возврат;
КонецЕсли;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказФрагмент()
СписокЗаказовКЗакрытию = Новый СписокЗначений;
Если ЗначениеЗаполнено(Объект.ЗаказКлиента) Тогда
ДокументыОснования = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.ЗаказКлиента);
Иначе
ДокументыОснования = СписокЗаказов.ВыгрузитьЗначения();
КонецЕсли;
Для Каждого Распоряжение Из ДокументыОснования Цикл
Если ТипЗнч(Распоряжение) = Тип("ДокументСсылка.ЗаказКлиента")
Или ТипЗнч(Распоряжение) = Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента") Тогда
СписокЗаказовКЗакрытию.Добавить(Распоряжение);
КонецЕсли;
КонецЦикла;
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия",
СтруктураЗакрытия,,,,,,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗачетОплаты(Команда)
ПоместитьРасшифровкуПлатежаВоВременноеХранилище();
ВзаиморасчетыКлиент.ЗачетОплаты(ЭтаФорма, Элементы.ЗачетОплаты);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьОтметкуОбособленно(Команда)
УстановитьСнятьОтметкуОбособленно(Истина);
КонецПроцедуры
&НаКлиенте
Процедура СнятьОтметкуОбособленно(Команда)
УстановитьСнятьОтметкуОбособленно(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ОтменитьОплатуБонуснымиБаллами(Команда)
ПрименитьОплатуБонуснымиБалламиКлиент();
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьОплатуБонуснымиБаллами(Команда) Экспорт
ОписаниеОповещенияЗавершения = Новый ОписаниеОповещения("ДобавитьОплатуБонуснымиБалламиПродолжение", ЭтотОбъект);
Если Объект.Проведен Тогда
РозничныеПродажиКлиент.ОтобразитьВопросОНеобходимостиНепроведенногоДокумента(ЭтотОбъект, ОписаниеОповещенияЗавершения);
Иначе
ВыполнитьОбработкуОповещения(ОписаниеОповещенияЗавершения, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьОплатуБонуснымиБалламиПродолжение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Истина Тогда
Отказ = Ложь;
Если Не Объект.СкидкиРассчитаны И СкидкиИзменились() Тогда
ПрименитьИзмененияСкидокНаценокНаКлиенте(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыОткрытияФормы = Новый Структура;
ПараметрыОткрытияФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытияФормы.Вставить("КартаЛояльности", Объект.КартаЛояльности);
ПараметрыОткрытияФормы.Вставить("АдресТабличнойЧастиТовары", АдресТабличнойЧастиТовары());
ПараметрыОткрытияФормы.Вставить("Валюта", Объект.Валюта);
ОткрытьФорму(
"Справочник.БонусныеПрограммыЛояльности.Форма.ОплатаБонуснымиБаллами",
ПараметрыОткрытияФормы,
ЭтотОбъект,,,,
Новый ОписаниеОповещения("ДобавитьОплатуБонуснымиБалламиЗавершение", ЭтотОбъект));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьОплатуБонуснымиБалламиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(Результат) Тогда
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Возврат;
КонецЕсли;
ПрименитьОплатуБонуснымиБалламиКлиент(Результат.АдресВоВременномХранилище);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДС(Команда)
Если Объект.Товары.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'В список ""Товары"" не введено ни одной строки.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьСтавкуНДСЗавершение", ЭтотОбъект);
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("ТипНалогообложенияНДС", Объект.НалогообложениеНДС);
ОткрытьФорму("Справочник.СтавкиНДС.ФормаВыбора", ПараметрыФормы,,,,, ОповещениеОЗакрытии);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииЗавершениеСервер(Знач ФлагЗаполнитьЦеныПоСоглашению, ЦеныРассчитаны, ТекстОшибки)
Если ФлагЗаполнитьЦеныПоСоглашению Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюНаСервере(Истина, Ложь, ТекстОшибки);
КонецЕсли;
ДоговорПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииКлючевыхРеквизитовСостояниеЭДО()
ПараметрыПриИзменении = ОбменСКонтрагентами.ПараметрыПриИзмененииКлючевыхРеквизитовЭДО();
ПараметрыПриИзменении.Форма = ЭтотОбъект;
ПараметрыПриИзменении.ДокументСсылка = Объект.Ссылка;
ПараметрыПриИзменении.ДокументОбъект = РеквизитФормыВЗначение("Объект");
ПараметрыПриИзменении.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПриИзменении.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриИзмененииКлючевыхРеквизитовЭДО(ПараметрыПриИзменении);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
ЗапасыСервер.УстановитьУсловноеОформлениеПодразделенияДляВидовЗапасов(ЭтаФорма);
УчетНДСУП.УстановитьУсловноеОформлениеКодаТНВЭДПоНалогообложениюПродажи(ЭтаФорма);
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтаФорма);
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтотОбъект,,
"ТоварыСуммаНДСУпр");
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоНалогообложениюПродажи(ЭтотОбъект,,
"ТоварыСуммаНДСРегл");
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеЦенаВключаетНДС(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеФлагаОбособленно(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПродаж");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаНДС.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПродаж");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РеализацияСверхЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ГруппаОтбора3 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьРучныеСкидкиВПродажах");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПродаж");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РеализацияСверхЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Склад.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности");
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаНДСРегл.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаНДСУпр.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности");
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
СкладыСервер.УстановитьУсловноеОформлениеПодразделенияВТЧ(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьРеализациюПоНесколькимЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.РеализацияПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "ТоварыСклад", "Объект.Товары.Склад", "Объект.Товары.СкладОбязателен");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(
УсловноеОформление, "Склад", "Объект.Склад", "СкладОбязателен");
СкладыСервер.УстановитьУсловноеОформлениеСкладаВШапке(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыВидЦены.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПроцентРучнойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаРучнойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковка.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РеализацияСверхЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПродаж");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ГруппаОтбора3 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РеализацияСверхЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПродаж");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтавкаНДС.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РеализацияСверхЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПродаж");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ГруппаОтбора3 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РеализацияСверхЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПродаж");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыВидЦены.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыПроцентРучнойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСуммаРучнойСкидки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковка.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента =ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РеализацияСверхЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента =ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПродаж");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Ложь);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтавкаНДС.Имя);
ГруппаОтбора0 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора0.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ГруппаОтбора1 = ГруппаОтбора0.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("РеализацияСверхЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента =ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПродаж");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора0.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.НалогообложениеНДС");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНалогообложенияНДС.ПродажаНаЭкспорт;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Ложь);
ПараметрыУстановки = МногооборотнаяТараСервер.ПараметрыУстановкиУсловногоОформленияДляСтрокСМногооборотнойТарой();
ПараметрыУстановки.Форма = ЭтаФорма;
ПараметрыУстановки.ЭтоПоступление = Ложь;
МногооборотнаяТараСервер.УстановитьУсловноеОформлениеДляСтрокСМногооборотнойТарой(ПараметрыУстановки);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийОшибкуТекст);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Сверх заказа, заказ не выбран'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ХозяйственнаяОперация");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийОшибкуТекст);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Сверх распоряжения, распоряжение не выбрано'"));
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, "СерииПриПланированииОтгрузкиУказываютсяВТЧТовары");
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма, Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
НаборыСервер.УстановитьУсловноеОформление(ЭтаФорма, "Товары");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаПереходаПраваСобственности.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыРеализацийТоваровУслуг.Отгружено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДатаПереходаПраваСобственности");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаПереходаПраваСобственности.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыРеализацийТоваровУслуг.Отгружено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДатаПереходаПраваСобственности");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДСНаСервере()
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ТоварыЗаказКлиентаНачалоВыбораФрагмент()
ОбновитьИнформациюПоЗаказам();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ДатаПереходаПраваСобственностиПриИзмененииСервер()
Если ЗначениеЗаполнено(Объект.ДатаПереходаПраваСобственности) Тогда
Если ИспользоватьСоглашенияСКлиентами Тогда
УсловияПродаж = ПродажиСервер.ПолучитьУсловияПродаж(Объект.Соглашение, Истина, Истина);
Иначе
УсловияПродаж = ПродажиСервер.ПолучитьУсловияПродажПоУмолчанию(
Объект.Партнер,
Новый Структура("ИсключитьГруппыСкладовДоступныеВЗаказах, ВыбранноеСоглашение, ХозяйственныеОперации",
Истина,
Объект.Соглашение,
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту")));
КонецЕсли;
Объект.ДатаВозвратаМногооборотнойТары = МногооборотнаяТараСервер.РассчитатьДатуВозвратаМногооборотнойТары(
РеквизитФормыВЗначение("Объект", Тип("ДокументОбъект.РеализацияТоваровУслуг")),
УсловияПродаж.СрокВозвратаМногооборотнойТары,
УсловияПродаж.РассчитыватьДатуВозвратаТарыПоКалендарю,
УсловияПродаж.КалендарьВозвратаТары);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма,"Дата");
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииРеализацииПоНесколькимЗаказам()
Если Объект.РеализацияПоЗаказам Тогда
Если Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.КПредоплате Тогда
Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.Отгружено;
КонецЕсли;
Если Объект.Товары.Количество() = 0 Тогда
ЗаполнитьПоЗаказуСервер();
Иначе
ПривязатьСтрокиРеализацииКЗаказамКлиентов(Не ИспользоватьРеализациюПоНесколькимЗаказам);
КонецЕсли;
Иначе
ОтвязатьОтЗаказаСервер(Истина, Ложь);
Объект.ЗаказКлиента = Документы.ЗаказКлиента.ПустаяСсылка();
СписокЗаказов.Очистить();
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецЕсли;
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбновитьИнформациюПоЗаказам();
УстановитьВидимостьЭлементовПоОперацииСервер();
УстановитьДоступностьКомандБуфераОбмена();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ОбновитьОтклоненияОтЗаказа();
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
УстановитьВидимостьСтатусаИДатыПереходаПраваСобственности();
ДоставкаТоваров.ПриИзмененииФлагаПоЗаказам(Элементы, Объект, Объект.РеализацияПоЗаказам Или РеализацияЧерезКомиссионера);
УстановитьВидимостьКомандПоЗаказу();
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ПродажиСервер.ДокументОснование(Объект, "РеализацияПоЗаказам, ЗаказКлиента, Товары.ЗаказКлиента"));
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("РеализацияПоЗаказам");
МассивРеквизитов.Добавить("ПорядокРасчетов");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, МассивРеквизитов);
НаправленияДеятельностиСервер.УстановитьВидимостьЭлементовОбособленно(ЭтотОбъект);
СтруктураОснование = Документы.РеализацияТоваровУслуг.СтруктураОснованияДляПечати(Объект);
ЗаполнитьЗначенияСвойств(Объект, СтруктураОснование);
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииСервер(ПересчитатьЦены, ЦеныРассчитаны, ПрименитьОплатуБонуснымиБаллами = Ложь)
Если ПрименитьОплатуБонуснымиБаллами = Истина Тогда
ПрименитьОплатуБонуснымиБаллами(, Истина);
КонецЕсли;
Если ПересчитатьЦены Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(Истина);
КонецЕсли;
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма,"Дата");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
УстановитьОрдернуюСхемуПриОтгрузке();
ЗаполнитьУстановитьВидимостьСерийДоступностьПерезаполнитьПоОтгрузке();
УстановитьДоступностьВидимостьЭлементовСборкиИДоставки();
РозничныеПродажиКлиентСервер.УстановитьДоступностьКомандОплатыБонуснымиБаллами(Элементы, Объект.Дата);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииПартнераСервер()
МассивРеквизитов = Новый Массив;
Если ИспользоватьСоглашенияСКлиентами Тогда
ЗаполнитьУсловияПродаж();
МассивРеквизитов.Добавить("Валюта");
МассивРеквизитов.Добавить("ВалютаВзаиморасчетов");
МассивРеквизитов.Добавить("Договор");
МассивРеквизитов.Добавить("НаправлениеДеятельности");
МассивРеквизитов.Добавить("Контрагент");
МассивРеквизитов.Добавить("Организация");
МассивРеквизитов.Добавить("Соглашение");
Иначе
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
ИспользоватьДоговорыСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
Если ИспользоватьДоговорыСКлиентами Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
КонецЕсли;
НоменклатураПартнеровСервер.ЗаполнитьНоменклатуруПартнераПоНоменклатуреПриИзмененииПартнера(Объект.Товары, Объект.Партнер);
МассивРеквизитов.Добавить("Партнер");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивРеквизитов);
УстановитьДоступностьЭлементовПоСтатусуСервер();
СкладГруппа = ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Объект.Склад);
СкладПриИзмененииСервер();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.ГруппаДоговор.Видимость, Объект.Договор);
Элементы.ГруппаНадписьДоговор.Видимость = Элементы.ГруппаДоговор.Видимость;
ОбновитьТекстДокументыНаОсновании();
ЗаполнитьОснованиеДляПечати();
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент, Объект.БанковскийСчетОрганизации);
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ПродажиСервер.ПартнерПриИзменении(Объект);
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, "Партнер", Объект);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ПродажиСервер.ДокументОснование(Объект, "РеализацияПоЗаказам, ЗаказКлиента, Товары.ЗаказКлиента"));
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
РеализацияТоваровУслугЛокализация.ПартнерПриИзменении(ЭтотОбъект);
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Партнер");
ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился)
ВладелецКонтактногоЛица = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КонтактноеЛицо, "Владелец");
Если ВладелецКонтактногоЛица <> Объект.Партнер Тогда
Объект.Партнер = ВладелецКонтактногоЛица;
ПриИзмененииПартнераСервер();
ПартнерИзменился = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ИспользоватьПартнеровКакКонтрагентов = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов");
ИспользоватьЗаказыКлиентов = ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыКлиентов")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьЗаявкиНаВозвратТоваровОтКлиентов");
РеализацияСверхЗаказа = ПраваПользователяПовтИсп.РеализацияСверхЗаказа();
ИспользоватьРеализациюПоНесколькимЗаказам = ПолучитьФункциональнуюОпцию("ИспользоватьРеализациюПоНесколькимЗаказам");
ИспользоватьСтатусыРеализацийТоваровУслуг = ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыРеализацийТоваровУслуг");
ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0 =
ПолучитьФункциональнуюОпцию("ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0");
ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5 =
ПолучитьФункциональнуюОпцию("ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5");
ИспользоватьСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
ИспользоватьГрафикиОплаты = ПолучитьФункциональнуюОпцию("ИспользоватьГрафикиОплаты");
ИспользоватьНесколькоОрганизаций = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций");
ИспользоватьНесколькоСкладов = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов");
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности");
ИспользоватьПодразделения = ПолучитьФункциональнуюОпцию("ИспользоватьПодразделения");
ИспользоватьСкладыВТабличнойЧастиДокументовПродажи = ПолучитьФункциональнуюОпцию("ИспользоватьСкладыВТабличнойЧастиДокументовПродажи");
РеализацияЧерезКомиссионера = КомиссионнаяТорговляСервер.РеализацияЧерезКомиссионера(Объект.ХозяйственнаяОперация);
ИспользоватьЭДО = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
ИспользоватьБонусныеПрограммыЛояльности = ИспользоватьБонусныеПрограммыЛояльности(Объект.КартаЛояльности);
УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности();
ИспользоватьНаправленияДеятельности = ИспользоватьНаправленияДеятельности И Не РеализацияЧерезКомиссионера;
ЕстьРасходныйОрдерДляЗаказовНаОтгрузку(Объект.Ссылка, НачатаОтгрузка);
ЗаполнитьСписокВыбораОпераций(Ложь);
ХозяйственнаяОперацияДоговора = ПолучитьХозяйственнуюОперациюДоговора(Объект.ХозяйственнаяОперация);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ВалютаДокумента = Объект.Валюта;
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
ВалютаУправленческогоУчета = Константы.ВалютаУправленческогоУчета.Получить();
СкладГруппа = ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Объект.Склад);
Склад = Объект.Склад;
УстановитьПараметрыВыбораТоварыСклад();
УстановитьСвязиПараметровВыбораДоговора();
УстановитьСвязиПараметровВыбораВидаЦены();
Соглашение = Объект.Соглашение;
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
Элементы.КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПустаяКартинка;
Элементы.КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПустаяКартинка;
Элементы.ГруппаНадписьИКартинкаНесколькоСкладов.Видимость = СкладГруппа;
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.РеализацияТоваровУслуг));
УстановитьВидимостьЭлементовСерий();
Если НЕ ИспользоватьСоглашенияСКлиентами Тогда
ПараметрыВыбораВидаЦены = ЗначениеНастроекПовтИсп.ПараметрыВыбораВидаЦеныПоУмолчанию();
ПараметрыВыбораВидаЦены.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораВидаЦены.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораВидаЦены.Статус = Перечисления.СтатусыДействияВидовЦен.Действует;
ВидЦеныПоУмолчанию = ЗначениеНастроекПовтИсп.ВидЦеныПоУмолчанию(ПараметрыВыбораВидаЦены);
КонецЕсли;
УстановитьВидимостьЭлементовПоОперацииСервер();
ЗаполнитьВидЦеныПоДоговору();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ОбновитьИнформациюПоЗаказам();
ОбновитьОтклоненияОтЗаказа();
Элементы.ЗакрытьЗаказ.Видимость = ИспользоватьРасширенныеВозможностиЗаказаКлиента;
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
ПриИзмененииСкладаВТабличнойЧастиСервер();
УстановитьЗаголовкиПоХозяйственнойОперации();
УстановитьДоступностьЭлементовПоСтатусуСервер();
УстановитьВидимостьСтатусаИДатыПереходаПраваСобственности();
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.ГруппаДоговор.Видимость);
Элементы.ГруппаНадписьДоговор.Видимость = Элементы.ГруппаДоговор.Видимость;
Элементы.ГруппаОрганизация.Видимость = ИспользоватьНесколькоОрганизаций;
Элементы.ГруппаСклад.Видимость = ИспользоватьНесколькоСкладов;
Элементы.ГруппаКонтрагент.Видимость = Не ИспользоватьПартнеровКакКонтрагентов;
Элементы.ГруппаКонечныйКлиентКонтрагент.Видимость = Не ИспользоватьПартнеровКакКонтрагентов;
ОбновитьТекстДокументыНаОсновании();
ОснованиеИзменено = Ложь;
ПравоНаИзменениеРеализации = ПравоДоступа("Изменение", Метаданные.Документы.РеализацияТоваровУслуг);
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Доступность = ПравоНаИзменениеРеализации;
Если ПравоНаИзменениеРеализации Тогда
ТаблицаОснованийДляПечати.Загрузить(Документы.РеализацияТоваровУслуг.ТаблицаОснованийДляПечати(Объект));
Если ЗначениеЗаполнено(Объект.Основание) Тогда
СтруктураОснования = Документы.РеализацияТоваровУслуг.СтруктураОснованияДляПечати(Объект);
ОснованиеИзменено = (СокрЛП(Объект.Основание) <> СтруктураОснования.Основание)
ИЛИ (СокрЛП(Объект.ОснованиеНомер) <> СтруктураОснования.ОснованиеНомер)
ИЛИ (Объект.ОснованиеДата <> СтруктураОснования.ОснованиеДата);
КонецЕсли;
КонецЕсли;
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
Элементы.ГруппаТара.Видимость = Не ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5;
Элементы.ГруппаТребуетсяЗалогЗаТару.Видимость = Не ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5;
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
Если Не ИспользоватьЗаказыКлиентов Тогда
Элементы.КартинкаРасхождениеЗаказ.Видимость = Ложь;
Элементы.КартинкаРасхождениеЗаказы.Видимость = Ложь;
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыГруппаЗаказКлиента", "Видимость", Объект.РеализацияПоЗаказам);
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
ТекущийСпособДоставки = Объект.СпособДоставки;
ДатаДокументаДоИзменения = Объект.Дата;
ИзменитьЗаголовкиПоВариантуОформленияПродажи();
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
УстановитьВидимостьКомандПоЗаказу();
ИспользоватьМаркировку = ПолучитьЗначенияФОМаркировки();
Если (Не ИспользоватьЭДО) или (Не ИспользоватьМаркировку) Тогда
Элементы.ГруппаВариантВыбытияМаркируемойПродукции.Видимость = Ложь;
КонецЕсли;
ПараметрыЗаполнения = Документы.РеализацияТоваровУслуг.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
ОбновитьОбязательностьСкладаВТЧ();
Если Объект.РеализацияПоЗаказам Тогда
ЗаполнитьДанныеДляРасчетаОплатыБонуснымиБаллами();
Иначе
ОплатаБонуснымиБаллами = Объект.Товары.Итог("СуммаБонусныхБалловКСписанию") <> 0
Или Объект.Товары.Итог("СуммаБонусныхБалловКСписаниюВВалюте") <> 0;
КонецЕсли;
ДатаДокумента = ?(Параметры.Ключ.Пустая(), ТекущаяДатаСеанса(), Объект.Дата);
РозничныеПродажиКлиентСервер.УстановитьДоступностьКомандОплатыБонуснымиБаллами(Элементы, ДатаДокумента);
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
КонецПроцедуры
&НаСервере
Процедура СтатусПриИзмененииСервер()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.РеализацияТоваровУслуг));
УстановитьВидимостьЭлементовСерий();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
Если (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности)
И Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.КПредоплате Тогда
Объект.ДатаПереходаПраваСобственности = Дата('00010101');
КонецЕсли;
УстановитьВидимостьСтатусаИДатыПереходаПраваСобственности();
ОбновитьТекстДокументыНаОсновании();
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура СоглашениеПриИзмененииСервер()
ХозОперация = Объект.ХозяйственнаяОперация;
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоСоглашению();
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(ДокументПродажи,
ПродажиСервер.ДокументОснование(ДокументПродажи, "РеализацияПоЗаказам, ЗаказКлиента, Товары.ЗаказКлиента"));
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
ЗаполнитьСписокВыбораОпераций();
ВалютаДокумента = Объект.Валюта;
Если ХозОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиентуРеглУчет Тогда
Объект.ХозяйственнаяОперация = ХозОперация;
КонецЕсли;
СкладГруппа = ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Объект.Склад);
СкладПриИзмененииСервер();
ХозяйственнаяОперацияПриИзмененииСервер();
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбновитьТекстДокументыНаОсновании();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.ГруппаДоговор.Видимость, Объект.Договор);
Элементы.ГруппаНадписьДоговор.Видимость = Элементы.ГруппаДоговор.Видимость;
Если Объект.РеализацияПоЗаказам Тогда
ОбновитьОтклоненияОтЗаказа();
КонецЕсли;
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить("Валюта");
МассивРеквизитов.Добавить("ВалютаВзаиморасчетов");
МассивРеквизитов.Добавить("Партнер");
МассивРеквизитов.Добавить("Договор");
МассивРеквизитов.Добавить("НаправлениеДеятельности");
МассивРеквизитов.Добавить("Контрагент");
МассивРеквизитов.Добавить("Организация");
МассивРеквизитов.Добавить("Соглашение");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, МассивРеквизитов);
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент, Объект.БанковскийСчетОрганизации);
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
УстановитьДоступностьВидимостьЭлементовСборкиИДоставки();
ЗаполнитьОснованиеДляПечати();
КонецПроцедуры
&НаСервере
Процедура СоглашениеОчисткаСервер()
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ПродажиСервер.ДокументОснование(Объект, "РеализацияПоЗаказам, ЗаказКлиента, Товары.ЗаказКлиента"));
КонецПроцедуры
&НаСервере
Процедура ВалютаПриИзмененииСервер(НоваяВалюта)
СтараяВалюта = ВалютаДокумента;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата,ТекущаяДатаСеанса());
СтруктурыКурсов = ВзаиморасчетыСервер.КурсыВалютДляПересчета(ЭтаФорма, СтараяВалюта, НоваяВалюта, ВалютаРегламентированногоУчета, ДатаДокумента);
СтруктураКурсовСтаройВалюты = СтруктурыКурсов.СтруктураКурсовСтаройВалюты;
СтруктураКурсовНовойВалюты = СтруктурыКурсов.СтруктураКурсовНовойВалюты;
Ценообразование.ПересчитатьСуммыТабличнойЧастиВВалюту(
Объект.Товары,
Объект.ЦенаВключаетНДС,
СтараяВалюта,
НоваяВалюта,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты,
Истина,
Истина);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиентуРеглУчет Тогда
ВзаиморасчетыСервер.ПересчитатьСуммыВВалютуРасшифровкаПлатежа(
Объект,
?(Объект.ТребуетсяЗалогЗаТару,
Объект.Товары.Итог("СуммаСНДС"),
Объект.Товары.Итог("СуммаСНДСБезВозвратнойТары")));
КонецЕсли;
Если НЕ Объект.РеализацияПоЗаказам И НЕ ЗначениеЗаполнено(Объект.Соглашение) Тогда
Объект.ВалютаВзаиморасчетов = Объект.Валюта;
КонецЕсли;
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииСервер()
РеализацияЧерезКомиссионера = КомиссионнаяТорговляСервер.РеализацияЧерезКомиссионера(Объект.ХозяйственнаяОперация);
ИспользоватьНаправленияДеятельности = ИспользоватьНаправленияДеятельности И Не РеализацияЧерезКомиссионера;
УстановитьСвязиПараметровВыбораДоговора();
УстановитьСвязиПараметровВыбораВидаЦены();
ХозяйственнаяОперацияДоговора = ПолучитьХозяйственнуюОперациюДоговора(Объект.ХозяйственнаяОперация);
ЗаполнитьДоговорПоУмолчанию();
ЗаполнитьДоговорКонечногоКлиентаПоУмолчанию();
УстановитьЗаголовкиПоХозяйственнойОперации();
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
Если ТипЗнч(Объект.ЗаказКлиента) = Тип("ДокументСсылка.ПервичныйДокумент")
Или ТипЗнч(Объект.ЗаказКлиента) = Тип("ДокументСсылка.ОтгрузкаТоваровКлиенту") Тогда
Объект.ЗаказКлиента = Неопределено;
Объект.РеализацияПоЗаказам = Ложь;
КонецЕсли;
ОчищеноРаспоряжениеВоВсехСтроках = Истина;
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
Если ТипЗнч(СтрокаТЧ.ЗаказКлиента) = Тип("ДокументСсылка.ПервичныйДокумент")
Или ТипЗнч(СтрокаТЧ.ЗаказКлиента) = Тип("ДокументСсылка.ОтгрузкаТоваровКлиенту") Тогда
СтрокаТЧ.ЗаказКлиента = Неопределено;
Иначе
ОчищеноРаспоряжениеВоВсехСтроках = Ложь;
КонецЕсли;
КонецЦикла;
Если ОчищеноРаспоряжениеВоВсехСтроках И Объект.Товары.Количество() > 0 Тогда
Объект.РеализацияПоЗаказам = Ложь;
КонецЕсли;
КонецЕсли;
МассивРеквизитов = Новый Массив;
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
СкидкиНаценкиЗаполнениеСервер.ОтменитьСкидки(Объект, "Товары", Истина, Истина);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения, Ложь);
Если Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.КПредоплате
ИЛИ Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.ВПути Тогда
Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.Отгружено;
КонецЕсли;
Если Объект.ТребуетсяЗалогЗаТару Тогда
Объект.ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
Объект.ВалютаВзаиморасчетов = Объект.Валюта;
Объект.ДатаПереходаПраваСобственности = Дата('00010101');
МассивРеквизитов.Добавить("ВалютаВзаиморасчетов");
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиентуРеглУчет Тогда
Объект.ВернутьМногооборотнуюТару = Ложь;
ВернутьМногооборотнуюТаруПриИзмененииСервер();
Объект.ДатаПереходаПраваСобственности = Дата('00010101');
Объект.РеализацияПоЗаказам = Ложь;
ПриИзмененииРеализацииПоНесколькимЗаказам();
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту Тогда
Если Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.ВПути Тогда
Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.Отгружено;
КонецЕсли;
Объект.ДатаПереходаПраваСобственности = Дата('00010101');
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности Тогда
Если Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.Отгружено Тогда
Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.ВПути;
КонецЕсли;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера Тогда
СкидкиНаценкиЗаполнениеСервер.ОтменитьСкидки(Объект, "Товары", Истина, Истина);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения, Ложь);
Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.Отгружено;
Если Объект.ТребуетсяЗалогЗаТару Тогда
Объект.ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
Объект.ВалютаВзаиморасчетов = Объект.Валюта;
Объект.ДатаПереходаПраваСобственности = Дата('00010101');
Объект.Склад = Справочники.Склады.ПустаяСсылка();
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности Тогда
СкидкиНаценкиЗаполнениеСервер.ОтменитьСкидки(Объект, "Товары", Истина, Истина);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения, Ложь);
Если Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.Отгружено
Или Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.КПредоплате Тогда
Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.ВПути;
КонецЕсли;
Если Объект.ТребуетсяЗалогЗаТару Тогда
Объект.ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
Объект.ВалютаВзаиморасчетов = Объект.Валюта;
Объект.Склад = Справочники.Склады.ПустаяСсылка();
ИначеЕсли Объект.ХозяйственнаяОперация =
Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
Объект.ВалютаВзаиморасчетов = Объект.Валюта;
Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.Отгружено;
Объект.Склад = Справочники.Склады.ПустаяСсылка();
Объект.ДатаПереходаПраваСобственности = Дата('00010101');
КонецЕсли;
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
УстановитьОрдернуюСхемуПриОтгрузке();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
УстановитьВидимостьЭлементовПоОперацииСервер();
УстановитьВидимостьСтатусаИДатыПереходаПраваСобственности();
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.РеализацияТоваровУслуг));
УстановитьВидимостьЭлементовСерий();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
ОбновитьТекстДокументыНаОсновании();
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВернутьМногооборотнуюТару",
"ТолькоПросмотр",
Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиентуРеглУчет);
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
ЗаполнитьУстановитьВидимостьСерийДоступностьПерезаполнитьПоОтгрузке();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "ХозяйственнаяОперация");
ОбменСКонтрагентамиУТ.ОбновитьКодСпециальныхОбстоятельств(Объект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер()
Если Объект.РеализацияПоЗаказам
И Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
Возврат;
КонецЕсли;
КэшированныеЗначенияСлужебный = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("СкорректироватьСтавкуНДС",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект, Ложь, Объект.ВернутьМногооборотнуюТару));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначенияСлужебный);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КэшированныеЗначенияСлужебный.ОбработанныеСтроки,
СтруктураДействий,
Объект.Товары,
Неопределено);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
УчетНДСУП.УстановитьВидимостьКомандыЗаполнитьСтавкуНДС(ЭтотОбъект);
УчетНДСУП.УстановитьВидимостьСтранаРеализации(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЦенаВключаетНДСПриИзмененииСервер(КэшированныеЗначения)
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Если НЕ ИспользоватьСоглашенияСКлиентами Тогда
ПараметрыВыбораВидаЦены = ЗначениеНастроекПовтИсп.ПараметрыВыбораВидаЦеныПоУмолчанию();
ПараметрыВыбораВидаЦены.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыВыбораВидаЦены.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораВидаЦены.Статус = Перечисления.СтатусыДействияВидовЦен.Действует;
ВидЦеныПоУмолчанию = ЗначениеНастроекПовтИсп.ВидЦеныПоУмолчанию(ПараметрыВыбораВидаЦены);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СкладПриИзмененииСервер(ОчищатьСтроки = Истина, ОтвязатьВсеСтрокиОтЗаказа = Ложь)
СкладГруппа = ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Объект.Склад);
Склад = Объект.Склад;
УстановитьПараметрыВыбораТоварыСклад();
СтруктураОтветственного = ПродажиСервер.ПолучитьОтветственногоПоСкладу(Объект.Склад);
Если СтруктураОтветственного <> Неопределено Тогда
Объект.Отпустил = СтруктураОтветственного.Ответственный;
Объект.ОтпустилДолжность = СтруктураОтветственного.ОтветственныйДолжность;
КонецЕсли;
Если Объект.РеализацияПоЗаказам И Не СкладГруппа И Объект.Товары.Количество() > 0 И ОчищатьСтроки Тогда
Объект.Товары.Очистить();
КонецЕсли;
Если ОтвязатьВсеСтрокиОтЗаказа Тогда
ОтвязатьОтЗаказаСервер();
КонецЕсли;
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.Товары, Истина);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ОбновитьИнформациюПоЗаказам();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ВзаиморасчетыКлиентСервер.ОбновитьТекстГиперссылкиВалюты(ЭтотОбъект);
ЗаполнитьУстановитьВидимостьСерийДоступностьПерезаполнитьПоОтгрузке();
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
УстановитьЗаголовокТоварыГруппаОтправитель();
УстановитьЗаголовокЗаполнитьПоЗаказамОрдерам();
Элементы.ГруппаНадписьИКартинкаНесколькоСкладов.Видимость = СкладГруппа;
УстановитьДоступностьВидимостьЭлементовСборкиИДоставки();
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.ГруппаДоговор.Видимость, Объект.Договор);
Элементы.ГруппаНадписьДоговор.Видимость = Элементы.ГруппаДоговор.Видимость;
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьДоговорПоУмолчанию();
ЗаполнитьДоговорКонечногоКлиентаПоУмолчанию();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ОбновитьТекстДокументыНаОсновании();
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
КонецЕсли;
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(Объект.Организация, Объект.БанковскийСчетОрганизации, , Объект.НаправлениеДеятельности);
ДенежныеСредстваСервер.ПроверитьЗаполнитьКассуОрганизацииПоВладельцу(Объект.Организация, Объект.Касса, Объект.ФормаОплаты, Объект.НаправлениеДеятельности);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ПродажиСервер.ДокументОснование(Объект, "РеализацияПоЗаказам, ЗаказКлиента, Товары.ЗаказКлиента"));
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Организация");
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.ГруппаДоговор.Видимость, Объект.Договор);
Элементы.ГруппаНадписьДоговор.Видимость = Элементы.ГруппаДоговор.Видимость;
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
ПродажиСервер.ПартнерПриИзменении(Объект);
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент, Объект.БанковскийСчетОрганизации);
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Контрагент");
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, "Партнер", Объект);
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
ОбновитьТекстДокументыНаОсновании();
РеализацияТоваровУслугЛокализация.КонтрагентПриИзменении(ЭтотОбъект);
ФормированиеФискальныхЧековСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект);
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииСервер()
ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчетОрганизации, Объект.БанковскийСчетКонтрагента);
ОтветственныеЛицаСервер.ЗаполнитьСписокВыбораМенеджера(Элементы.Менеджер, Объект);
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ПродажиСервер.ДокументОснование(Объект, "РеализацияПоЗаказам, ЗаказКлиента, Товары.ЗаказКлиента"));
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
ЗаполнитьДоговорКонечногоКлиентаПоУмолчанию();
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Договор");
ЗаполнитьОснованиеДляПечати();
ЗаполнитьВидЦеныПоДоговору();
Объект.ВариантВыбытияМаркируемойПродукции = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ВариантВыбытияМаркируемойПродукции");
УстановитьДоступностьВидимостьЭлементовСборкиИДоставки();
УстановитьВидимостьКомандыЗаполненияВидаЦенПоДоговору();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
ЭлектронноеАктированиеЕИСУТ.ДоговорПриИзмененииЭлектронноеАктированиеЕИС(ЭтотОбъект, Объект);
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
КонецПроцедуры
&НаКлиенте
Процедура ПредложениеЗаполнитьПоГосконтрактуЕИС()
Если Не Объект.РеализацияПоЗаказам И ЭтоГосконтрактЕИС Тогда
ОповещениеОЗавершении = Новый ОписаниеОповещения("ЗаполнитьПоГосконтрактуЗавершение", ЭтотОбъект);
ТекстПредупреждения = НСтр("ru = 'Заполнить документ по данным госконтракта?'");
ПоказатьВопрос(ОповещениеОЗавершении, ТекстПредупреждения, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоГосконтрактуЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ЗаполнитьПоГосконтрактуСервер();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоГосконтрактуСервер()
ЭлектронноеАктированиеЕИСУТ.ЗаполнитьТабличнуюЧастьДокументаПоДаннымГосконтракта(Объект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ПриИзмененииСкладаВТабличнойЧастиСервер();
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ТоварыПослеУдаленияСервер(НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения)
Если НеобходимоОбновитьСтатусыСерий Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения);
КонецЕсли;
Если Объект.СостояниеЗаполненияМногооборотнойТары = Перечисления.СостоянияЗаполненияМногооборотнойТары.Заполнена Тогда
Объект.СостояниеЗаполненияМногооборотнойТары = Перечисления.СостоянияЗаполненияМногооборотнойТары.ПредлагатьЗаполнить;
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
ПриИзмененииСкладаВТабличнойЧастиСервер();
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры",
Новый Структура("Номенклатура", "ТипНоменклатуры"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакАртикул",
Новый Структура("Номенклатура", "Артикул"));
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", ПараметрыЗаполненияРеквизитов);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(ПараметрыЗаполненияРеквизитов);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары,ПараметрыЗаполненияРеквизитов);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтаФорма);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЕстьРасходныйОрдерДляЗаказовНаОтгрузку(Ссылка, НачатаОтгрузка)
НачатаОтгрузка = НакладныеСервер.ЕстьРасходныйОрдерДляЗаказовНаОтгрузку(Ссылка);
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
И Не ЗначениеЗаполнено(Объект.Договор) Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
ЗаполнитьНалогообложениеНДСПродажи();
НалогообложениеНДСПриИзмененииСервер();
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "НаправлениеДеятельности");
КонецПроцедуры
&НаСервере
Процедура РеализацияПоЗаказамПриИзмененииСервер()
ПриИзмененииРеализацииПоНесколькимЗаказам();
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстДокументыНаОсновании()
ТекстыПоляДокументыНаОсновании.Очистить();
ОбновитьТекстСчетаФактурыВыданные();
ОбновитьТекстДокументыНаОснованииЛокализация();
ОбщегоНазначенияУТКлиентСервер.ОбновитьТекстДокументыНаОсновании(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура КурьерПриИзмененииНаСервере()
ДенежныеСредстваСервер.ПроверитьЗаполнитьКассуОрганизацииПоВладельцу(Объект.Организация, Объект.Касса, Объект.ФормаОплаты, Объект.НаправлениеДеятельности, Объект.Курьер);
КонецПроцедуры
&НаСервере
Процедура ПартнерКлиентПриИзмененииНаСервере();
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.КлиентПартнер, Объект.КлиентКонтрагент);
КонецПроцедуры
&НаСервере
Процедура КлиентКонтрагентПриИзмененииНаСервере()
ЗаполнитьДоговорКонечногоКлиентаПоУмолчанию();
КонецПроцедуры
&НаСервере
Процедура КлиентДоговорПриИзмененииНаСервере()
Если ЗначениеЗаполнено(Объект.КлиентДоговор) Тогда
Объект.ВалютаВзаиморасчетов = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КлиентДоговор, "ВалютаВзаиморасчетов");
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "КлиентДоговор, ВалютаВзаиморасчетов");
КонецПроцедуры
&НаСервере
Процедура ПроверитьКоличествоВДокументеЗавершениеСервер(ВозвращаемыеПараметры, Знач ПеремКэшированныеЗначения)
ПрименитьОплатуБонуснымиБаллами(, Истина);
ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, ПеремКэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция ЗаполнитьЦеныПоСоглашениюНаСервере(ПоВсемСтрокам = Ложь, УчитыватьСтрокиСверхЗаказа = Истина, ТекстОшибки = "")
ПрименитьОплатуБонуснымиБаллами(, Истина);
Возврат ЗаполнитьЦеныПоСоглашениюСервер(ПоВсемСтрокам, УчитыватьСтрокиСверхЗаказа, ТекстОшибки);
КонецФункции
&НаСервере
Функция ЗаполнитьЦеныПоДоговоруНаСервере(ТекстОшибки = "")
ПрименитьОплатуБонуснымиБаллами(, Истина);
Возврат ЗаполнитьЦеныПоСоглашениюСервер(,, ТекстОшибки);
КонецФункции
#КонецОбласти
#Область ЗаполнениеПоЗаказуПоОрдеру
&НаСервере
Процедура ПерезаполнитьПоОрдерам(МассивЗаказов)
СтруктураЗаполнения = ПродажиВызовСервера.ПерезаполнитьНакладнуюПоОрдерам(Объект);
Если СтруктураЗаполнения.ЕстьИзменения Тогда
РеализацияТоваровУслугЛокализация.ЗаполнитьКешШтрихкодовУпаковок(ЭтотОбъект);
Модифицированность = Истина;
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Объект.СкидкиРассчитаны = Ложь;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЦенообразованиеИСкидки
&НаСервере
Функция ЗаполнитьЦеныПоСоглашениюСервер(ПоВсемСтрокам = Ложь, УчитыватьСтрокиСверхЗаказа = Истина, ТекстОшибки = "")
Если ПоВсемСтрокам Тогда
Если РеализацияСверхЗаказа И УчитыватьСтрокиСверхЗаказа Тогда
МассивСтрок = Объект.Товары.НайтиСтроки(Новый Структура("КодСтроки", 0));
Иначе
МассивСтрок = Неопределено;
КонецЕсли;
Иначе
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
НайденнаяСтрока = Объект.Товары.НайтиПоИдентификатору(Строка);
Если (РеализацияСверхЗаказа И НайденнаяСтрока.КодСтроки = 0)
ИЛИ ОтклонениеОтУсловийПродаж Тогда
МассивСтрок.Добавить(НайденнаяСтрока);
КонецЕсли;
КонецЦикла;
КонецЕсли;
НаборыВызовСервера.ДополнитьДоПолногоНабора(Объект.Товары, МассивСтрок, Истина);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать, ПересчитыватьСуммуРучнойСкидки", Ложь, Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ОчиститьАвтоматическуюСкидку", Неопределено);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов", Неопределено);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("Партнер", Объект.Партнер);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ПараметрыЗаполнения.Вставить("ВозвращатьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦены, СрокПоставки");
Если РеализацияЧерезКомиссионера Тогда
ПараметрыЗаполнения.Вставить("ВидЦены", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ВидЦенПродажи"));
Иначе
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ЦенаВключаетНДС") <> Объект.ЦенаВключаетНДС Тогда
ТекстОшибки =
НСтр("ru = 'Установленные значения полей ""Цена включает НДС"" в документе и соглашении разные.'");
Возврат Ложь;
КонецЕсли;
КонецЕсли;
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ВзаиморасчетыКлиентСервер.ОбновитьТекстГиперссылкиВалюты(ЭтаФорма);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(ВидЦен)
МассивСтрок = Новый Массив;
Для Каждого ТекСтрока Из Элементы.Товары.ВыделенныеСтроки Цикл
НайденнаяСтрока = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
Если (РеализацияСверхЗаказа И НайденнаяСтрока.КодСтроки = 0)
ИЛИ ОтклонениеОтУсловийПродаж Тогда
МассивСтрок.Добавить(НайденнаяСтрока);
КонецЕсли;
КонецЦикла;
НаборыВызовСервера.ДополнитьДоПолногоНабора(Объект.Товары, МассивСтрок, Истина);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать, ПересчитыватьСуммуРучнойСкидки", Ложь, Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ОчиститьАвтоматическуюСкидку", Неопределено);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов", Неопределено);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("ВидЦены", ВидЦен);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦены");
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Процедура ПолученыСообщения(Сообщения)
СкидкиНаценкиЗаполнениеСервер.СохранитьОтработанныеСообщения(Объект, Сообщения);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения);
КонецПроцедуры
&НаСервере
Процедура РассчитатьСкидкиБезПримененияКОбъекту()
СтруктураПараметры = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыРассчитать();
СтруктураПараметры.ПрименятьКОбъекту = Ложь;
СтруктураПараметры.ТолькоПредварительныйРасчет = Ложь;
СтруктураПараметры.ВосстанавливатьУправляемыеСкидки = Истина;
СтруктураПараметры.УправляемыеСкидки = УправляемыеСкидки;
СтруктураПараметры.РеализацияСверхЗаказа = РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам;
ПримененныеСкидки = СкидкиНаценкиЗаполнениеСервер.Рассчитать(Объект, СтруктураПараметры);
АдресПримененныхСкидокВоВременномХранилище =
ПоместитьВоВременноеХранилище(ПримененныеСкидки, УникальныйИдентификатор);
КонецПроцедуры
&НаСервере
Функция РассчитатьСкидкиНаценкиНаСервере(СтруктураПараметры, ВзятьИзВременногоХранилища = Ложь)
Если ВзятьИзВременногоХранилища Тогда
ПримененныеСкидки = ПолучитьИзВременногоХранилища(АдресПримененныхСкидокВоВременномХранилище);
СкидкиНаценкиЗаполнениеСервер.ПрименитьРезультатРасчета(
Объект, ПримененныеСкидки, Объект.РеализацияПоЗаказам И РеализацияСверхЗаказа);
Иначе
ПримененныеСкидки = СкидкиНаценкиЗаполнениеСервер.Рассчитать(Объект, СтруктураПараметры);
АдресПримененныхСкидокВоВременномХранилище =
ПоместитьВоВременноеХранилище(ПримененныеСкидки, УникальныйИдентификатор);
КонецЕсли;
Объект.СкидкиРассчитаны = Истина;
СтруктураДополнительныхДействий = Новый Структура;
СтруктураДополнительныхДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(
Объект.Товары, Объект.ВернутьМногооборотнуюТару, СтруктураДополнительныхДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СтруктураСообщений = СкидкиНаценкиЗаполнениеСервер.СтруктураСообщений(Объект);
СкидкиНаценкиЗаполнениеСервер.НастроитьКомандуПоказатьСообщения(Объект, Элементы.ПоказатьСообщения);
Возврат СтруктураСообщений;
КонецФункции
&НаСервере
Процедура НазначитьРучнуюСкидкуНаСервере(СуммаСкидкиНаценки, Знач ВыделенныеСтроки, АдресВоВременномХранилище)
РеализацияСверхЗаказаПоЗаказу = РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам;
ПараметрыСкидки = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыНазначитьРучнуюСкидку();
ПараметрыСкидки.ИспользуютсяАвтоматическиеСкидки = Истина;
ПараметрыСкидки.ТолькоДляАктивныхСтрок = Ложь;
ПараметрыСкидки.РассчитыватьСуммуСНДС = Истина;
ПараметрыСкидки.РассчитыватьСуммуВзаиморасчетов = Истина;
ПараметрыСкидки.ВыделенныеСтроки = ВыделенныеСтроки;
ПараметрыСкидки.АдресВоВременномХранилище = АдресВоВременномХранилище;
ПараметрыСкидки.РеализацияСверхЗаказа = РеализацияСверхЗаказаПоЗаказу;
СкидкиНаценкиЗаполнениеСервер.НазначитьРучнуюСкидку(Объект, "Товары", СуммаСкидкиНаценки, ПараметрыСкидки);
СтруктураДополнительныхДействий = Новый Структура;
СтруктураДополнительныхДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару, СтруктураДополнительныхДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Функция ПредварительноРассчитанныеСкидкиНаценкиПоЗаказу(ИзменилисьСкидки)
СкидкиНаценки = Объект.СкидкиНаценки.Выгрузить();
СкидкиНаценки.Очистить();
ДанныеСкидкиНаценкиПоЗаказу = СкидкиНаценкиЗаполнениеСервер.СкидкиНаценкиПоЗаказу(Объект);
Для Каждого СтрокаТоваровЗаказа Из ДанныеСкидкиНаценкиПоЗаказу.ТаблицаТоваров Цикл
НайденныеСтроки = Объект.Товары.НайтиСтроки(
Новый Структура("ЗаказКлиента,КодСтроки", СтрокаТоваровЗаказа.ЗаказКлиента, СтрокаТоваровЗаказа.КодСтроки));
Если НайденныеСтроки.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
СтрокаТаблицы = НайденныеСтроки[0];
Если СтрокаТоваровЗаказа.СуммаАвтоматическойСкидки = Null Тогда
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
ТекстОшибки = НСтр("ru='Возникла проблемная ситуация при переносе скидок из распоряжения. Возможно не задан курс для валюты ""%Валюта%""'");
Иначе
ТекстОшибки = НСтр("ru='Возникла проблемная ситуация при переносе скидок из заказа. Возможно не задан курс для валюты ""%Валюта%""'");
КонецЕсли;
ТекстОшибки = СтрЗаменить(ТекстОшибки, "%Валюта%", Объект.ВалютаВзаиморасчетов);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
СуммаКРаспределению = Окр(
СтрокаТоваровЗаказа.ЗаказСуммаАвтоматическойСкидки
* (СтрокаТоваровЗаказа.РеализацияКоличество / СтрокаТоваровЗаказа.ЗаказКоличество)
* СтрокаТоваровЗаказа.ВалютаКоэффициентПересчета,
2);
ТекСуммаБонусныхБалловКСписаниюВВалюте = Окр(
СтрокаТоваровЗаказа.ЗаказСуммаБонусныхБалловКСписаниюВВалюте
* (СтрокаТоваровЗаказа.РеализацияКоличество / СтрокаТоваровЗаказа.ЗаказКоличество)
* СтрокаТоваровЗаказа.ВалютаКоэффициентПересчета,
2);
ТекСуммаБонусныхБалловКСписанию = Окр(
СтрокаТоваровЗаказа.ЗаказСуммаБонусныхБалловКСписанию
* (СтрокаТоваровЗаказа.РеализацияКоличество / СтрокаТоваровЗаказа.ЗаказКоличество),
2);
Если СтрокаТоваровЗаказа.ПроцентРучнойСкидки <> СтрокаТаблицы.ПроцентРучнойСкидки
Или ТекСуммаБонусныхБалловКСписаниюВВалюте <> СтрокаТаблицы.СуммаБонусныхБалловКСписаниюВВалюте
Или ТекСуммаБонусныхБалловКСписанию <> СтрокаТаблицы.СуммаБонусныхБалловКСписанию Тогда
ИзменилисьСкидки = Истина;
Возврат СкидкиНаценки;
КонецЕсли;
Если СтрокаТаблицы.КлючСвязи <> 0 Тогда
НайденныеСтроки = ДанныеСкидкиНаценкиПоЗаказу.СкидкиНаценкиЗаказа.НайтиСтроки(
Новый Структура("ЗаказКлиента, КлючСвязи", СтрокаТаблицы.ЗаказКлиента, СтрокаТоваровЗаказа.КлючСвязи));
Если НайденныеСтроки.Количество() <> 0 Тогда
Для Каждого СтрокаСкидкиЗаказа Из НайденныеСтроки Цикл
СтрокаСкидки = СкидкиНаценки.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаСкидки, СтрокаСкидкиЗаказа);
СтрокаСкидки.КлючСвязи = СтрокаТаблицы.КлючСвязи;
СтрокаСкидки.Сумма = СтрокаТоваровЗаказа.Коэффициент * СтрокаСкидки.Сумма;
СуммаКРаспределению = СуммаКРаспределению - СтрокаСкидки.Сумма;
КонецЦикла;
Если СуммаКРаспределению <> 0 Тогда
СтрокаСкидки.Сумма = СтрокаСкидки.Сумма + СуммаКРаспределению;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат СкидкиНаценки;
КонецФункции
&НаСервере
Процедура ОтменитьРучныеСкидкиНаСервере()
РеализацияСверхЗаказаПоЗаказу = РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам;
СкидкиНаценкиЗаполнениеСервер.ОтменитьРучныеСкидки(Объект, "Товары", Истина, Истина, Истина, РеализацияСверхЗаказаПоЗаказу);
СтруктураДополнительныхДействий = Новый Структура;
СтруктураДополнительныхДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару, СтруктураДополнительныхДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Функция ВыполнитьПредварительныйРасчетСкидокНаСервере()
СтруктураПараметры = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыРассчитать();
СтруктураПараметры.ПрименятьКОбъекту = Ложь;
СтруктураПараметры.ТолькоПредварительныйРасчет = Истина;
СтруктураПараметры.ВосстанавливатьУправляемыеСкидки = Истина;
СтруктураПараметры.УправляемыеСкидки = УправляемыеСкидки;
СтруктураПараметры.РеализацияСверхЗаказа = РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам;
Возврат ПоместитьВоВременноеХранилище(
СкидкиНаценкиЗаполнениеСервер.Рассчитать(Объект, СтруктураПараметры), УникальныйИдентификатор);
КонецФункции
&НаСервере
Процедура СчитанаКартаЛояльностиНаСервере(ДанныеКартыЛояльности)
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Партнер) И ДанныеКартыЛояльности.Партнер <> Объект.Партнер Тогда
Объект.Партнер = ДанныеКартыЛояльности.Партнер;
Объект.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
Объект.Соглашение = Справочники.СоглашенияСКлиентами.ПустаяСсылка();
ПриИзмененииПартнераСервер();
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Соглашение)
И ДанныеКартыЛояльности.Соглашение <> Объект.Соглашение
И ДанныеКартыЛояльности.СоглашениеДоступно Тогда
Объект.Соглашение = ДанныеКартыЛояльности.Соглашение;
СоглашениеПриИзмененииСервер();
КонецЕсли;
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Контрагент)
И ДанныеКартыЛояльности.Контрагент <> Объект.Контрагент
И ДанныеКартыЛояльности.КонтрагентДоступен Тогда
Объект.Контрагент = ДанныеКартыЛояльности.Контрагент;
КонтрагентПриИзмененииСервер();
КонецЕсли;
ИспользоватьБонусныеПрограммыЛояльности = ИспользоватьБонусныеПрограммыЛояльности(Объект.КартаЛояльности);
УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ИспользоватьБонусныеПрограммыЛояльности(КартаЛояльности)
Если Не ЗначениеЗаполнено(КартаЛояльности) Тогда
Возврат Ложь;
КонецЕсли;
Возврат СкидкиНаценкиСервер.ИспользоватьБонусныеПрограммыЛояльности(КартаЛояльности);
КонецФункции
&НаКлиенте
Процедура СчитанаКартаЛояльности(КартаЛояльности)
ДанныеКартыЛояльности = КартыЛояльностиВызовСервера.ПолучитьДанныеКартыЛояльности(КартаЛояльности);
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Ссылка) Тогда
Если Не ДанныеКартыЛояльности.ПартнерДоступен Тогда
ПоказатьПредупреждение(,НСтр("ru = 'Нет доступа к партнеру-владельцу карты лояльности.'"));
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(ДанныеКартыЛояльности.Партнер) Тогда
Если Объект.КартаЛояльности <> КартаЛояльности Тогда
ПрименитьОплатуБонуснымиБаллами(Неопределено);
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Модифицированность = Истина;
Объект.КартаЛояльности = КартаЛояльности;
Возврат;
ИначеЕсли Объект.Партнер <> ДанныеКартыЛояльности.Партнер Тогда
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("КартаЛояльности", КартаЛояльности);
ДополнительныеПараметры.Вставить("ДанныеКартыЛояльности", ДанныеКартыЛояльности);
ПоказатьВопрос(
Новый ОписаниеОповещения("СчитанаКартаЛояльностиВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Карта лояльности принадлежит партнеру ""%1"". Изменить партнера в документе?'"), ДанныеКартыЛояльности.Партнер),
РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
Иначе
ВопросОбИзмененииКонтрагента = Ложь;
Если ЗначениеЗаполнено(ДанныеКартыЛояльности.Контрагент)
И ЗначениеЗаполнено(Объект.Контрагент) И ДанныеКартыЛояльности.Контрагент <> Объект.Контрагент Тогда
ВопросОбИзмененииКонтрагента = Истина;
КонецЕсли;
ВопросОбИзмененииСоглашения = Ложь;
Если ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(ДанныеКартыЛояльности.Соглашение)
И ЗначениеЗаполнено(Объект.Соглашение) И ДанныеКартыЛояльности.Соглашение <> Объект.Соглашение Тогда
ВопросОбИзмененииСоглашения = Истина;
КонецЕсли;
Если ВопросОбИзмененииКонтрагента Или ВопросОбИзмененииСоглашения Тогда
Если ВопросОбИзмененииКонтрагента И ВопросОбИзмененииСоглашения Тогда
ТекстВопроса = НСтр("ru = 'Для карты лояльности заданы контрагент ""%1"" и соглашение ""%2"". Применить карту лояльности и подставить в документ контрагента ""%1"" и соглашение ""%2""?'");
ИначеЕсли ВопросОбИзмененииКонтрагента Тогда
ТекстВопроса = НСтр("ru = 'Для карты лояльности задан контрагент ""%1"". Применить карту лояльности и подставить в документ контрагента ""%1""?'");
ИначеЕсли ВопросОбИзмененииСоглашения Тогда
ТекстВопроса = НСтр("ru = 'Для карты лояльности задано соглашение ""%2"". Применить карту лояльности и подставить в документ соглашение ""%2""?'");
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("КартаЛояльности", КартаЛояльности);
ДополнительныеПараметры.Вставить("ДанныеКартыЛояльности", ДанныеКартыЛояльности);
ПоказатьВопрос(
Новый ОписаниеОповещения("СчитанаКартаЛояльностиВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры),
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, ДанныеКартыЛояльности.Контрагент, ДанныеКартыЛояльности.Соглашение),
РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
КонецЕсли;
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Модифицированность = Истина;
Объект.КартаЛояльности = КартаЛояльности;
СчитанаКартаЛояльностиНаСервере(ДанныеКартыЛояльности);
Иначе
ИспользоватьБонусныеПрограммыЛояльности = ИспользоватьБонусныеПрограммыЛояльности(Неопределено);
ПрименитьОплатуБонуснымиБалламиКлиент();
УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СчитанаКартаЛояльностиВопросЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Модифицированность = Истина;
Объект.КартаЛояльности = ДополнительныеПараметры.КартаЛояльности;
СчитанаКартаЛояльностиНаСервере(ДополнительныеПараметры.ДанныеКартыЛояльности);
Иначе
ИспользоватьБонусныеПрограммыЛояльности = ИспользоватьБонусныеПрограммыЛояльности(Объект.КартаЛояльности);
УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция СкидкиИзменились()
СтруктураПараметры = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыРассчитать();
СтруктураПараметры.ПрименятьКОбъекту = Ложь;
СтруктураПараметры.ТолькоПредварительныйРасчет = Ложь;
СтруктураПараметры.ВосстанавливатьУправляемыеСкидки = Истина;
СтруктураПараметры.УправляемыеСкидки = УправляемыеСкидки;
СтруктураПараметры.РеализацияСверхЗаказа = РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам;
СкидкиИзменились = Ложь;
Если Не Объект.РеализацияПоЗаказам Тогда
ПримененныеСкидки = СкидкиНаценкиЗаполнениеСервер.Рассчитать(Объект, СтруктураПараметры);
ТаблицаСкидкиНаценки = ПримененныеСкидки.ТаблицаСкидкиНаценки.Скопировать();
ИначеЕсли СтруктураПараметры.РеализацияСверхЗаказа Тогда
ПримененныеСкидки = СкидкиНаценкиЗаполнениеСервер.Рассчитать(Объект, СтруктураПараметры);
ТаблицаСкидкиНаценки = ПредварительноРассчитанныеСкидкиНаценкиПоЗаказу(СкидкиИзменились);
Для Каждого СтрокаСкидкиНаценкиИсточник Из ПримененныеСкидки.ТаблицаСкидкиНаценки Цикл
СтрокаСкидкиНаценкиПриемник = ТаблицаСкидкиНаценки.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаСкидкиНаценкиПриемник, СтрокаСкидкиНаценкиИсточник);
КонецЦикла;
Иначе
ТаблицаСкидкиНаценки = ПредварительноРассчитанныеСкидкиНаценкиПоЗаказу(СкидкиИзменились);
КонецЕсли;
Если НЕ СкидкиИзменились Тогда
ИзменилисьСкидки(ТаблицаСкидкиНаценки, СкидкиИзменились);
КонецЕсли;
Если СкидкиИзменились И (Не Объект.РеализацияПоЗаказам ИЛИ СтруктураПараметры.РеализацияСверхЗаказа) Тогда
АдресПримененныхСкидокВоВременномХранилище = ПоместитьВоВременноеХранилище(ПримененныеСкидки, УникальныйИдентификатор);
КонецЕсли;
Возврат СкидкиИзменились;
КонецФункции
&НаСервере
Процедура ИзменилисьСкидки(ТаблицаСкидкиНаценки, СкидкиИзменились)
КоличествоСтрок = ТаблицаСкидкиНаценки.Количество();
Если КоличествоСтрок <> Объект.СкидкиНаценки.Количество() Тогда
СкидкиИзменились = Истина;
Иначе
Если Объект.Товары.Итог("СуммаАвтоматическойСкидки") <> Объект.СкидкиНаценки.Итог("Сумма") Тогда
СкидкиИзменились = Истина;
КонецЕсли;
Для НомерСтроки = 1 По КоличествоСтрок Цикл
Если Объект.СкидкиНаценки[НомерСтроки-1].Сумма <> ТаблицаСкидкиНаценки[НомерСтроки-1].Сумма
ИЛИ Объект.СкидкиНаценки[НомерСтроки-1].КлючСвязи <> ТаблицаСкидкиНаценки[НомерСтроки-1].КлючСвязи
ИЛИ Объект.СкидкиНаценки[НомерСтроки-1].СкидкаНаценка <> ТаблицаСкидкиНаценки[НомерСтроки-1].СкидкаНаценка
ИЛИ Объект.СкидкиНаценки[НомерСтроки-1].НапомнитьПозже <> ТаблицаСкидкиНаценки[НомерСтроки-1].НапомнитьПозже Тогда
СкидкиИзменились = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПрименитьОплатуБонуснымиБалламиКлиент(АдресВоВременномХранилище = Неопределено, ВыводитьСообщение = Ложь)
Если АдресВоВременномХранилище = Неопределено И (Не ОплатаБонуснымиБаллами Или Не Объект.Товары.Количество()) Тогда
Возврат;
КонецЕсли;
ПрименитьОплатуБонуснымиБаллами(АдресВоВременномХранилище, ВыводитьСообщение);
КонецПроцедуры
&НаСервере
Процедура ПрименитьОплатуБонуснымиБаллами(АдресВоВременномХранилище = Неопределено, ВыводитьСообщение = Ложь)
УдалениеОплаты = Ложь;
Если АдресВоВременномХранилище <> Неопределено Тогда
ТаблицаТоваров = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
Иначе
Если Не ОплатаБонуснымиБаллами Тогда
Возврат;
КонецЕсли;
ТаблицаТоваров = Объект.Товары;
УдалениеОплаты = Истина;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать, ПересчитыватьСуммуРучнойСкидки", Ложь, Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ОбрабатываемыеСтроки = Новый Массив;
КорректировкаВыполнена = Ложь;
Для Каждого СтрокаТаблицы Из ТаблицаТоваров Цикл
Если УдалениеОплаты Тогда
Если СтрокаТаблицы.КодСтроки <> 0
Или (СтрокаТаблицы.СуммаБонусныхБалловКСписанию = 0
И СтрокаТаблицы.СуммаБонусныхБалловКСписаниюВВалюте = 0) Тогда
Продолжить;
КонецЕсли;
СтрокаТЧ = СтрокаТаблицы;
СтрокаТЧ.СуммаБонусныхБалловКСписанию = 0;
СтрокаТЧ.СуммаБонусныхБалловКСписаниюВВалюте = 0;
Иначе
СтрокаТЧ = Объект.Товары.НайтиСтроки(Новый Структура("КлючСвязи", СтрокаТаблицы.КлючСвязи))[0];
СтрокаТЧ.СуммаБонусныхБалловКСписанию = СтрокаТаблицы.СуммаБонусныхБалловКСписанию;
СтрокаТЧ.СуммаБонусныхБалловКСписаниюВВалюте = СтрокаТаблицы.СуммаБонусныхБалловКСписаниюВВалюте;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КорректировкаВыполнена = Истина;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
Если КорректировкаВыполнена Тогда
ОплатаБонуснымиБаллами = Не УдалениеОплаты;
Объект.СкидкиРассчитаны = Ложь;
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Если ВыводитьСообщение Тогда
Если УдалениеОплаты Тогда
ТекстСообщения = НСтр("ru = 'Оплата бонусными баллами отменена. При необходимости, оплату бонусными баллами можно назначить заново (""Цены и скидки / Добавить оплату бонусными баллами"").'");
Иначе
ТекстСообщения = НСтр("ru = 'Оплата бонусными баллами распределена.'");
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Объект.Ссылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверкаОплатыБонуснымиБаллами(ТекущаяСтрока, СтруктураЗаполненияБонусныхБаллов)
Если Не ИспользоватьБонусныеПрограммыЛояльности
Или Не ОплатаБонуснымиБаллами
Или РеализацияСверхЗаказа И ТекущаяСтрока.КодСтроки <> 0 Тогда
Если ИспользоватьБонусныеПрограммыЛояльности И РеализацияСверхЗаказа И ТекущаяСтрока.КодСтроки <> 0 Тогда
ОтборСтрок = Новый Структура("ЗаказКлиента, КодСтроки", ТекущаяСтрока.ЗаказКлиента, ТекущаяСтрока.КодСтроки);
СтруктураЗаполненияБонусныхБаллов = ПроверкаОплатыБонуснымиБалламиСервер(ОтборСтрок);
КонецЕсли;
Возврат;
КонецЕсли;
ОчиститьСообщения();
ПрименитьОплатуБонуснымиБалламиКлиент(, Истина);
КонецПроцедуры
&НаСервере
Функция ПроверкаОплатыБонуснымиБалламиСервер(ОтборСтрок)
Если Не ЗначениеЗаполнено(АдресБонусныхБалловОплатыВоВременномХранилище) Тогда
Возврат Неопределено;
КонецЕсли;
КэшированныеЗначенияБонусныеБаллы = ПолучитьИзВременногоХранилища(АдресБонусныхБалловОплатыВоВременномХранилище);
НайденныеСтроки = КэшированныеЗначенияБонусныеБаллы.НайтиСтроки(ОтборСтрок);
СтрокаТаблицы = НайденныеСтроки[0];
Если (СтрокаТаблицы.СуммаБонусныхБалловКСписанию <> 0
Или СтрокаТаблицы.СуммаБонусныхБалловКСписаниюВВалюте <> 0) Тогда
ДанныеДляПересчета = Новый Структура("Количество,
|КоличествоУпаковок,
|СуммаБонусныхБалловКСписаниюВВалюте");
ЗаполнитьЗначенияСвойств(ДанныеДляПересчета, СтрокаТаблицы);
СтруктураЗаполненияБонусныхБаллов = Новый Структура();
СтруктураЗаполненияБонусныхБаллов.Вставить("ПересчитыватьСумму", ДанныеДляПересчета);
КонецЕсли;
Возврат СтруктураЗаполненияБонусныхБаллов;
КонецФункции
&НаСервере
Процедура ЗаполнитьДанныеДляРасчетаОплатыБонуснымиБаллами()
Если Не Объект.РеализацияПоЗаказам Или Не ИспользоватьБонусныеПрограммыЛояльности Тогда
Возврат;
КонецЕсли;
КэшированныеЗначенияБонусныеБаллы = Объект.Товары.Выгрузить(,
"ЗаказКлиента,
|КодСтроки,
|Количество,
|КоличествоУпаковок,
|СуммаБонусныхБалловКСписанию,
|СуммаБонусныхБалловКСписаниюВВалюте");
СтрокиНаУдаление = КэшированныеЗначенияБонусныеБаллы.НайтиСтроки(Новый Структура("КодСтроки", 0));
ОплатаБонуснымиБаллами = Ложь;
Для Каждого Строка Из СтрокиНаУдаление Цикл
ОплатаБонуснымиБаллами = ОплатаБонуснымиБаллами
Или Строка.СуммаБонусныхБалловКСписанию <> 0
Или Строка.СуммаБонусныхБалловКСписаниюВВалюте <> 0;
КэшированныеЗначенияБонусныеБаллы.Удалить(Строка);
КонецЦикла;
КэшированныеЗначенияБонусныеБаллы.Индексы.Добавить("ЗаказКлиента, КодСтроки");
АдресБонусныхБалловОплатыВоВременномХранилище = ПоместитьВоВременноеХранилище(КэшированныеЗначенияБонусныеБаллы, УникальныйИдентификатор);
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеКлиент()
ВыгруженаТолькоНеМаркируемаяПродукция = Ложь;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества(ВыгруженаТолькоНеМаркируемаяПродукция));
ПараметрыОткрытия.Вставить("ИмяТабличнойЧасти", "Товары");
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ПревышениеКоличестваТоваровРазрешено", Не Объект.РеализацияПоЗаказам ИЛИ РеализацияСверхЗаказа);
ПараметрыОткрытия.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыОткрытия.Вставить("ВыгруженаТолькоНеМаркируемаяПродукция", ВыгруженаТолькоНеМаркируемаяПродукция);
ОткрытьФорму("ОбщаяФорма.ПроверкаЗаполненияДокументов", ПараметрыОткрытия,,,,, Новый ОписаниеОповещения("ПроверитьКоличествоВДокументеЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ПрименитьОплатуБонуснымиБаллами(, Истина);
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
СписокСвойств = "НоменклатураНабора, ХарактеристикаНабора, Номенклатура, Характеристика, Упаковка, ВидЦены,
|Цена, КоличествоУпаковок, Количество, Сумма, СуммаРучнойСкидки, ПроцентРучнойСкидки,
|СрокПоставки, Серия, Обособленно";
ПоляПоиска = "НоменклатураНабора, ХарактеристикаНабора, Номенклатура, Характеристика, Упаковка, ВидЦены,
|Обособленно, Серия, Цена";
Если ЗначениеЗаполнено(Объект.Склад) Тогда
СписокСвойств = СписокСвойств + ", Склад";
ПоляПоиска = ПоляПоиска + ", Склад";
КонецЕсли;
ПараметрыПриИзмененииТипаНоменклатуры = Новый Структура;
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьРаботы", Истина);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьОтменено", Ложь);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЭтоПереходПраваСобственности",
Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры", ПараметрыПриИзмененииТипаНоменклатуры);
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействий);
ОбрабатываемыеСтроки = Новый Массив;
ПараметрыОтбора = Новый Структура(ПоляПоиска);
ТребуетсяПересчетУпаковок = Ложь;
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
Если ЗначениеЗаполнено(СтрокаТовара.НоменклатураНабора) Тогда
ЗаполнитьЗначенияСвойств(ПараметрыОтбора, СтрокаТовара);
НайденныеСтроки = Объект.Товары.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество() > 0 Тогда
ТекущаяСтрока = НайденныеСтроки[0];
ТекущаяСтрока.Количество = ТекущаяСтрока.Количество + СтрокаТовара.Количество;
ТребуетсяПересчетУпаковок = Истина;
Иначе
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, СписокСвойств);
КонецЕсли;
Иначе
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, СписокСвойств);
КонецЕсли;
НаправленияДеятельностиКлиентСервер.ЗаполнитьНазначениеПоФлагуОбособленно(ЭтотОбъект, ТекущаяСтрока);
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.РеализацияПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
Если ТребуетсяПересчетУпаковок Тогда
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПриИзмененииСкладаВТабличнойЧастиСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение)
ОчиститьСообщения();
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьИзЗаказа()
ТребуетсяВопрос = Ложь;
Если Объект.Ссылка.Пустая() Тогда
ТребуетсяВопрос = Истина;
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ТекстВопроса = НСтр("ru = 'Подбор товаров по распоряжениям возможно только в записанном документе. Записать?'");
Иначе
ТекстВопроса = НСтр("ru = 'Подбор товаров по заказам / ордерам возможен только в записанном документе. Записать?'");
КонецЕсли;
ИначеЕсли Модифицированность Тогда
ТребуетсяВопрос = Истина;
ПровестиЗаписать = ?(Объект.Проведен, НСтр("ru = 'Провести'"), НСтр("ru = 'Записать'"));
ТекстВопроса = СтрШаблон(НСтр("ru = 'Документ был изменен. %1?'"), ПровестиЗаписать);
КонецЕсли;
Если ТребуетсяВопрос Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("ПодобратьИзЗаказЗавершение", ЭтотОбъект),
ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ПодборТоваровИзЗаказа();
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьИзЗаказЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
РезультатЗаписи = Ложь;
Если Объект.Проведен Тогда
Если ПроверитьЗаполнение() Тогда
РезультатЗаписи = Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));
КонецЕсли;
Иначе
РезультатЗаписи = Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Запись));
КонецЕсли;
Если Не РезультатЗаписи Тогда
Возврат;
КонецЕсли;
ПодборТоваровИзЗаказа();
КонецПроцедуры
&НаКлиенте
Процедура ПодборТоваровИзЗаказа()
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Модифицированность = Истина;
Исключение
ПоказатьПредупреждение(,КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
МассивКодовСтрок = Новый Массив;
АдресТоваров = "";
АдресШтрихкодовУпаковок = "";
ПередПодборомТоваровИзЗаказаСервер(МассивКодовСтрок, АдресТоваров);
ПодготовитьДанныеПоШтрихкодыУпаковок(АдресШтрихкодовУпаковок);
ПараметрыПодбора = Новый Структура(
"ЗаказКлиента,
|Дата,
|Склад,
|Партнер,
|Сделка,
|Контрагент,
|Договор,
|Организация,
|ХозяйственнаяОперация,
|Соглашение,
|РеализацияПоЗаказам,
|ВалютаВзаиморасчетов,
|НалогообложениеНДС,
|ЦенаВключаетНДС,
|ПорядокРасчетов,
|ВернутьМногооборотнуюТару,
|ТребуетсяЗалогЗаТару,
|Статус,
|НаправлениеДеятельности");
ЗаполнитьЗначенияСвойств(ПараметрыПодбора, Объект);
ПараметрыПодбора.Вставить("Документ", Объект.Ссылка);
ПараметрыПодбора.Вставить("ВалютаДокумента", Объект.Валюта);
ПараметрыПодбора.Вставить("МассивКодовСтрок", МассивКодовСтрок);
ПараметрыПодбора.Вставить("АдресТоваровРеализацииВоВременномХранилище", АдресТоваров);
ПараметрыПодбора.Вставить("АдресШтрихкодовУпаковокРеализацииВоВременномХранилище", АдресШтрихкодовУпаковок);
ПараметрыПодбора.Вставить("ОрдернаяСхемаПриОтгрузке", ОрдернаяСхемаПриОтгрузке);
ПараметрыПодбора.Вставить("КурсЧислитель", Объект.КурсЧислитель);
ПараметрыПодбора.Вставить("КурсЗнаменатель", Объект.КурсЗнаменатель);
ПараметрыПодбора.Вставить("ИспользоватьРасширенныеВозможностиЗаказаКлиента", ИспользоватьРасширенныеВозможностиЗаказаКлиента);
ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаПодбораТоваровИзЗаказа",ПараметрыПодбора,ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПодбораТоваровИзЗаказа(АдресТоваровВХранилище)
СтруктураТаблиц = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
СтруктураТаблицТовары = СтруктураТаблиц.Товары;
СтруктураПоискаТоваровЗаказа = Новый Структура("КодСтроки,ЗаказКлиента");
СтруктураПоискаТоваровНакладной = Новый Структура("НомерСтроки");
ИспользуютсяЗаказыКакСчета = ИспользуютсяЗаказыКакСчета();
Для Каждого СтрокаТоваров Из СтруктураТаблицТовары Цикл
Если СтрокаТоваров.КодСтроки<>0 И ЗначениеЗаполнено(СтрокаТоваров.ЗаказКлиента) Тогда
СтруктураПоискаТоваровЗаказа.КодСтроки = СтрокаТоваров.КодСтроки;
СтруктураПоискаТоваровЗаказа.ЗаказКлиента = СтрокаТоваров.ЗаказКлиента;
МассивСтрокТЧТовары = Объект.Товары.НайтиСтроки(СтруктураПоискаТоваровЗаказа);
Иначе
СтруктураПоискаТоваровНакладной.НомерСтроки = СтрокаТоваров.НомерСтроки;
МассивСтрокТЧТовары = Объект.Товары.НайтиСтроки(СтруктураПоискаТоваровНакладной);
КонецЕсли;
Если МассивСтрокТЧТовары.Количество() = 0 Тогда
СтрокаТЧТовары = Объект.Товары.Добавить();
ИначеЕсли МассивСтрокТЧТовары.Количество() = 1 Тогда
СтрокаТЧТовары = МассивСтрокТЧТовары[0];
УдалитьСтрокиТЧСкидкиНаценки(СтрокаТЧТовары);
ИначеЕсли МассивСтрокТЧТовары.Количество() > 1 Тогда
Для Каждого СтрокаКУдалению Из МассивСтрокТЧТовары Цикл
УдалитьСтрокиТЧСкидкиНаценки(СтрокаКУдалению);
Объект.Товары.Удалить(СтрокаКУдалению);
КонецЦикла;
СтрокаТЧТовары = Объект.Товары.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров);
Если НЕ ИспользоватьРеализациюПоНесколькимЗаказам
И ЗначениеЗаполнено(СтрокаТЧТовары.ЗаказКлиента)
И Объект.ЗаказКлиента <> СтрокаТЧТовары.ЗаказКлиента Тогда
Объект.ЗаказКлиента = СтрокаТЧТовары.ЗаказКлиента;
КонецЕсли;
СтрокаТЧТовары.ИндексНабора = ?(ЗначениеЗаполнено(СтрокаТЧТовары.НоменклатураНабора), 1, 0);
Если Не ЗначениеЗаполнено(СтрокаТЧТовары.Склад)
И ЗначениеЗаполнено(СтрокаТЧТовары.ЗаказКлиента)
И ИспользуютсяЗаказыКакСчета
И ЗначениеЗаполнено(Объект.Склад)
И Не Справочники.Склады.ЭтоГруппа(Объект.Склад) Тогда
СтрокаТЧТовары.Склад = Объект.Склад;
КонецЕсли;
КонецЦикла;
Объект.СкидкиРассчитаны = Ложь;
РассчитатьПоРеализацииТоваровУслугПоЗаказу(Ложь);
Если Объект.РеализацияПоЗаказам Тогда
Если Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.КПредоплате Тогда
Объект.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.Отгружено;
КонецЕсли;
КонецЕсли;
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.РеализацияТоваровУслуг));
УстановитьВидимостьЭлементовСерий();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПараметрыПриИзмененииТипаНоменклатуры = Новый Структура;
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьРаботы", Истина);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьОтменено", Ложь);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЭтоПереходПраваСобственности",
Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры", ПараметрыПриИзмененииТипаНоменклатуры);
СтруктураДействий.Вставить("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", Объект.Партнер);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбновитьИнформациюПоЗаказам();
Объект.РеализацияПоЗаказам = ЗначениеЗаполнено(Объект.ЗаказКлиента) ИЛИ СписокЗаказов.Количество() > 0;
ОбновитьОтклоненияОтЗаказа();
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ТоварыОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ТоварыГруппаЗаказКлиента");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", Объект.РеализацияПоЗаказам);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗаполнитьДанныеДляРасчетаОплатыБонуснымиБаллами();
ПродажиСерверЛокализация.ПеренестиШтрихкодыУпаковок(ЭтотОбъект, СтруктураТаблиц.ШтрихкодыУпаковок);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "РеализацияПоЗаказам");
ДанныеПоФоновомуЗаданию = ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(
Элементы,
Объект,
Объект.РеализацияПоЗаказам Или РеализацияЧерезКомиссионера,,,
Истина);
ОтветственныеЛицаСервер.УстановитьМенеджера(
Объект, ПродажиСервер.ДокументОснование(Объект, "РеализацияПоЗаказам, ЗаказКлиента, Товары.ЗаказКлиента"));
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьПереданныеТовары(Команда)
Отказ = Ложь;
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Партнер"" не заполнено'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Партнер", "", Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Организация) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Организация"" не заполнено'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Организация", "", Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Договор) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Договор"" не заполнено'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Договор", "", Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ОценкаПроизводительностиКлиент.ЗамерВремени(Истина,
"Документ.РеализацияТоваровУслуг.ФормаДокумента.Команда.ПодобратьПереданныеТовары");
АдресТоваров = ПоместитьТоварыВХранилищеДляПодбораПереданногоТовара();
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ссылка", Объект.Ссылка);
ПараметрыФормы.Вставить("Владелец", Объект.Партнер);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("Договор", Объект.Договор);
ПараметрыФормы.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыФормы.Вставить("МенеджерОбъекта", "Документ.РеализацияТоваровУслуг");
ПараметрыФормы.Вставить("АдресТоваровНакладнойВХранилище", АдресТоваров);
ПараметрыФормы.Вставить("СвернутьНомераГТД", Истина);
ОткрытьФорму("Обработка.ПодборТоваровПереданныхНаОтветственноеХранение.Форма.Форма", ПараметрыФормы, ЭтаФорма,
УникальныйИдентификатор);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборПереданныхТоваров(ВыбранноеЗначение, ЦеныРассчитаны)
МассивСтрок = Новый Массив;
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
СтруктураДействий = Новый Структура("ПересчитатьКоличествоУпаковок");
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ПоискТоваров = Новый Структура();
ПоискТоваров.Вставить("Номенклатура", СтрокаТовара.Номенклатура);
ПоискТоваров.Вставить("Характеристика", СтрокаТовара.Характеристика);
ПоискТоваров.Вставить("Назначение", СтрокаТовара.Назначение);
Если Не СтрокаТовара.РазныйУчетСерий Тогда
ПоискТоваров.Вставить("Серия", СтрокаТовара.Серия);
КонецЕсли;
СтрокиТоваров = Объект.Товары.НайтиСтроки(ПоискТоваров);
Если СтрокиТоваров.Количество() = 0 Тогда
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ИначеЕсли СтрокиТоваров.Количество() = 1 Тогда
ТекущаяСтрока = СтрокиТоваров[0];
ИначеЕсли СтрокиТоваров.Количество() > 1 Тогда
Для Каждого СтрокаКУдалению Из СтрокиТоваров Цикл
Объект.Товары.Удалить(СтрокаКУдалению);
КонецЦикла;
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
КонецЕсли;
ТекущаяСтрока.Количество = СтрокаТовара.КоличествоПодобрано;
МассивСтрок.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
МассивСтрок,
СтруктураДействий,
Объект.Товары);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийРасчетаЦен = Новый Структура;
СтруктураДействийРасчетаЦен.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
СтруктураДействийРасчетаЦен.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийРасчетаЦен.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийРасчетаЦен.Вставить("ПересчитатьСумму");
СтруктураДействийРасчетаЦен.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийРасчетаЦен.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийРасчетаЦен.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействийРасчетаЦен.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "ВидЦены, Цена");
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("ВозвращатьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
ВидЦеныДоговора = ВидЦеныДоговора(Объект.Договор);
Если Объект.ЦенаВключаетНДС = ВидЦеныДоговора.ЦенаВключаетНДС Тогда
ПараметрыЗаполнения.Вставить("ВидЦены", ВидЦеныДоговора.ВидЦены);
КонецЕсли;
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(Объект.Товары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействийРасчетаЦен);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Функция ПоместитьТоварыВХранилищеДляПодбораПереданногоТовара()
Колонки =
"НомерСтроки,
|Номенклатура,
|Характеристика,
|Назначение,
|Серия,
|СтатусУказанияСерий,
|Количество";
Адрес = ПоместитьВоВременноеХранилище(Объект.Товары.Выгрузить(, Колонки), УникальныйИдентификатор);
Возврат Адрес;
КонецФункции
&НаСервере
Функция ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества(ВыгруженаТолькоНеМаркируемаяПродукция = Ложь)
ТабличнаяЧастьТовары = Объект.Товары.Выгрузить();
Если ТабличнаяЧастьТовары.Колонки.Найти("МаркируемаяПродукция") <> Неопределено Тогда
НомерТекущейСтроки = ТабличнаяЧастьТовары.Количество()-1;
Пока НомерТекущейСтроки >= 0 Цикл
Если ТабличнаяЧастьТовары[НомерТекущейСтроки].МаркируемаяПродукция Тогда
ТабличнаяЧастьТовары.Удалить(НомерТекущейСтроки);
ВыгруженаТолькоНеМаркируемаяПродукция = Истина;
КонецЕсли;
НомерТекущейСтроки = НомерТекущейСтроки - 1;
КонецЦикла;
КонецЕсли;
ТабличнаяЧастьТовары.Свернуть("КодСтроки, ЗаказКлиента, НоменклатураНабора, ХарактеристикаНабора, Номенклатура, Характеристика, Серия, СтатусУказанияСерий, Склад, ТипНоменклатуры, ХарактеристикиИспользуются, Упаковка", "КоличествоУпаковок");
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ТабличнаяЧастьТовары, УникальныйИдентификатор);
Возврат АдресВоВременномХранилище;
КонецФункции
&НаСервере
Процедура ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, КэшированныеЗначения)
ТаблицаТовары = ПолучитьИзВременногоХранилища(ВозвращаемыеПараметры.Товары);
УдаляемыеСтроки = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив;
ДобавленныеСтроки = Новый Массив;
Для Каждого СтрокаИсточник Из ТаблицаТовары Цикл
Отбор = Новый Структура(
"КодСтроки,
|ЗаказКлиента,
|НоменклатураНабора,
|ХарактеристикаНабора,
|Номенклатура,
|Характеристика,
|Серия,
|ХарактеристикиИспользуются,
|Склад,
|Упаковка");
ЗаполнитьЗначенияСвойств(Отбор, СтрокаИсточник);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
Если СтрокаИсточник.КоличествоУпаковок = 0 Тогда
Прервать;
КонецЕсли;
Если СтрокаИсточник.КоличествоУпаковок >= 0 Тогда
СтрокаТЧ.КоличествоУпаковок = СтрокаТЧ.КоличествоУпаковок + СтрокаИсточник.КоличествоУпаковок;
СтрокаИсточник.КоличествоУпаковок = 0;
Иначе
КоличествоКСписанию = -СтрокаИсточник.КоличествоУпаковок;
КоличествоВСтроке = СтрокаТЧ.КоличествоУпаковок;
Если КоличествоКСписанию > КоличествоВСтроке Тогда
СтрокаИсточник.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
СтрокаТЧ.КоличествоУпаковок = 0;
Иначе
СтрокаИсточник.КоличествоУпаковок = 0;
СтрокаТЧ.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
КонецЕсли;
КонецЕсли;
Если СтрокаТЧ.КоличествоУпаковок = 0 Тогда
УдаляемыеСтроки.Добавить(СтрокаТЧ);
Иначе
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТЧ = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаИсточник);
ОбновитьОтклоненияОтЗаказаВСтроке(СтрокаТЧ, Объект.РеализацияПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
ДобавленныеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры",
Новый Структура("ЕстьРаботы, ЕстьОтменено", Истина, Ложь));
СтруктураДействий.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ",
Новый Структура("Подразделение", Объект.Подразделение));
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ДобавленныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Для Каждого СтрокаТЧ Из УдаляемыеСтроки Цикл
Объект.Товары.Удалить(СтрокаТЧ);
КонецЦикла;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
ПриИзмененииСкладаВТабличнойЧастиСервер();
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
ОчиститьСообщения();
ПараметрыПриИзмененииТипаНоменклатуры = Новый Структура;
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьРаботы", Истина);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьОтменено", Ложь);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЭтоПереходПраваСобственности",
Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПриИзмененииТипаНоменклатуры", ПараметрыПриИзмененииТипаНоменклатуры);
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействийСДобавленнымиСтроками);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСДобавленнымиСтроками, Объект);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействийСДобавленнымиСтроками.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСИзмененнымиСтроками, Объект);
СтруктураДействийСИзмененнымиСтроками.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействийСДобавленнымиСтроками);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
ТолькоТовары =
Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию")
Или Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности");
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
СтруктураДействий.РассчитыватьНаборы = Истина;
СтруктураДействий.ДобавлятьТолькоТоварСверхЗаказа = Истина;
СтруктураДействий.ТолькоТовары = ТолькоТовары;
ОбработатьШтрихкодыСервер(СтруктураДействий,КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры",0.1,Истина);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
УстановитьПризнакЗаполненияСклада();
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
ПрименитьОплатуБонуснымиБаллами(, Истина);
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма,Объект,СтруктураПараметровДействия,КэшированныеЗначения);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
ОбновитьОтклоненияОтЗаказа();
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Функция ЗаполнитьСерииПоFEFOСервер()
Если НоменклатураСервер.ЕстьСтрокиСЗаполняемымиПоFEFOСериями(Объект.Товары) Тогда
НоменклатураСервер.ЗаполнитьСерииПоFEFO(Объект,ПараметрыУказанияСерий);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыЗаполнитьСерииПоFEFO.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
НоменклатураСервер.ОбработатьУказаниеСерий(Объект, ПараметрыУказанияСерий, ПараметрыФормыУказанияСерий);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект,
ПараметрыУказанияСерий, ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийСервер()
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЕстьЗаполненныеСерииПоFEFO(Товары)
Возврат НоменклатураСервер.ЕстьСтрокиСЗаполненнымиПоFEFOСериями(Товары);
КонецФункции
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(,ТекущиеДанные);
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект, ПараметрыУказанияСерий, ТекущиеДанныеИдентификатор, ЭтаФорма);
КонецФункции
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтаФорма,ПараметрыУказанияСерий,Текст, ТекущиеДанные)Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
ЗначениеВозврата = Неопределено;
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы,ПараметрыФормыУказанияСерий,ЭтаФорма,,,, Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение", ЭтотОбъект, Новый Структура("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПараметрыФормыУказанияСерий = ДополнительныеПараметры.ПараметрыФормыУказанияСерий;
ЗначениеВозврата = Результат;
Если ЗначениеВозврата <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий);
КонецЕсли;
ТоварыСерияПересчитатьЦены();
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию") Тогда
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
Иначе
ПараметрыОтбора = Неопределено;
КонецЕсли;
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,ВидЦены,Цена,
|ПроцентРучнойСкидки,СуммаРучнойСкидки,Склад,Подразделение,НоменклатураНабора,ХарактеристикаНабора";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
ПараметрыПриИзмененииТипаНоменклатуры = Новый Структура;
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьРаботы", Истина);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьОтменено", Ложь);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЭтоПереходПраваСобственности",
Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры", ПараметрыПриИзмененииТипаНоменклатуры);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействий);
ПараметрыЗаполненияВидаЦен = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияВидаЦенВСтрокеТЧ("ВидЦены");
ПараметрыЗаполненияВидаЦен.ПараметрыОтбора.ЦенаВключаетНДС = Объект.ЦенаВключаетНДС;
ПараметрыЗаполненияВидаЦен.ПараметрыОтбора.ИспользоватьПриПродаже = Истина;
СтруктураДействий.Вставить("ПроверитьЗаполнитьВидЦены", ПараметрыЗаполненияВидаЦен);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
Если Не ИспользоватьРучныеСкидкиВПродажах Тогда
ТекущаяСтрока.ПроцентРучнойСкидки = 0;
ТекущаяСтрока.СуммаРучнойСкидки = 0;
КонецЕсли;
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.РеализацияПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПриИзмененииСкладаВТабличнойЧастиСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена() И (Не Объект.РеализацияПоЗаказам Или РеализацияСверхЗаказа));
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
Не Объект.РеализацияПоЗаказам Или РеализацияСверхЗаказа);
КонецПроцедуры
#КонецОбласти
#Область Наборы
&НаКлиентеНаСервереБезКонтекста
Функция КолонкиНабора(Форма)
Колонки = Новый Массив;
Колонки.Добавить("Номенклатура");
Колонки.Добавить("Характеристика");
Колонки.Добавить("Цена");
Колонки.Добавить("ВидЦены");
Колонки.Добавить("Упаковка");
Колонки.Добавить("Количество");
Колонки.Добавить("КоличествоУпаковок");
Если Форма.Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию")
И Не Форма.РеализацияЧерезКомиссионера Тогда
Если Форма.ИспользоватьРучныеСкидкиВПродажах Тогда
Колонки.Добавить("ПроцентРучнойСкидки");
Колонки.Добавить("СуммаРучнойСкидки");
КонецЕсли;
Если Форма.ИспользоватьАвтоматическиеСкидкиВПродажах Тогда
Колонки.Добавить("ПроцентАвтоматическойСкидки");
Колонки.Добавить("СуммаАвтоматическойСкидки");
КонецЕсли;
КонецЕсли;
Колонки.Добавить("СтавкаНДС");
Колонки.Добавить("СуммаНДС");
Колонки.Добавить("СуммаСНДС");
Колонки.Добавить("Сумма");
Возврат Колонки;
КонецФункции
&НаКлиенте
Процедура ПриУдаленииКомплектующих(Действие, ДополнительныйПараметр) Экспорт
Если НаборыКлиент.ДействиеРедактироватьНабор(Действие) Тогда
НаборыКлиент.ПриУдаленииКомплектующих(ЭтаФорма, "Товары", ДополнительныйПараметр);
ИначеЕсли НаборыКлиент.ДействиеУдалитьВесьНабор(Действие) Тогда
ПриУдаленииКомплектующихНаСервере("Товары", ДополнительныйПараметр);
КонецЕсли;
РассчитатьИтоговыеПоказатели(ЭтотОбъект)
КонецПроцедуры
&НаСервере
Процедура ПриУдаленииКомплектующихНаСервере(ИмяТЧ, ДополнительныйПараметр)
НаборыСервер.ПриУдаленииКомплектующих(ЭтаФорма, ИмяТЧ, ДополнительныйПараметр);
КонецПроцедуры
&НаСервере
Функция АдресНабораВоВременномХранилище(Параметры)
Возврат НаборыСервер.АдресНабораВоВременномХранилище(ЭтаФорма, Параметры, "Товары");
КонецФункции
&НаСервере
Процедура ПриОкончанииРедактированияНабора(АдресВоВременномХранилище)
ПараметрыПриИзмененииТипаНоменклатуры = Новый Структура;
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьРаботы", Истина);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьОтменено", Ложь);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЭтоПереходПраваСобственности",
Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийСИзмененнымиСтроками.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействийСИзмененнымиСтроками.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийСДобавленнымиСтроками.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействийСДобавленнымиСтроками.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПриИзмененииТипаНоменклатуры", ПараметрыПриИзмененииТипаНоменклатуры);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействийСДобавленнымиСтроками);
ПараметрыДанных = Новый Структура;
ПараметрыДанных.Вставить("Данные", ПолучитьИзВременногоХранилища(АдресВоВременномХранилище));
ПараметрыДанных.Вставить("СтруктураДействийСИзмененнымиСтроками", СтруктураДействийСИзмененнымиСтроками);
ПараметрыДанных.Вставить("СтруктураДействийСДобавленнымиСтроками", СтруктураДействийСДобавленнымиСтроками);
ПараметрыДанных.Вставить("КолонкиНабора", КолонкиНабора(ЭтаФорма));
ПараметрыДанных.Вставить("СверхЗаказа", Истина);
НаборыСервер.ПриОкончанииРедактированияНабора(ЭтаФорма, "Товары", ПараметрыДанных);
ОбновитьОтклоненияОтЗаказа();
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
РассчитатьИтоговыеПоказатели(ЭтотОбъект)
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьСнятьОтметкуОбособленно(Установить)
НаправленияДеятельностиСервер.УстановитьСнятьОтметкуОбособленно(ЭтотОбъект, Установить);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Контрагент, КорреспондирующийСчет)
Возврат ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент,,, КорреспондирующийСчет);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьХозяйственнуюОперациюДоговора(ХозяйственнаяОперация)
ХозяйственнаяОперацияДоговора = ХозяйственнаяОперация;
Если ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиентуРеглУчет")
ИЛИ ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности")
ИЛИ ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ХозяйственнаяОперацияДоговора = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту");
ИначеЕсли ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияЧерезКомиссионера")
ИЛИ ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности") Тогда
ХозяйственнаяОперацияДоговора = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию");
КонецЕсли;
Возврат ХозяйственнаяОперацияДоговора;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, СтруктураЗаполненияБонусныхБаллов = Неопределено)
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами", СтруктураЗаполненияБонусныхБаллов);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюПоЗаказам()
ПараметрыОбновления = ЗаказыСервер.ПараметрыОбновленияИнформацииПоЗаказамВФорме();
ПараметрыОбновления.ИмяРеквизитаСписокЗаказов = "СписокЗаказов";
ПараметрыОбновления.ПутьЗаказаВШапке = "Объект.ЗаказКлиента";
ПараметрыОбновления.ИмяНадписиЗаголовка = "НадписьЗаголовокЗаказы";
ПараметрыОбновления.ИмяГруппыКолонокВТабличнойЧасти = "ТоварыГруппаЗаказКлиента";
ПараметрыОбновления.ИмяЗаказаВТабличнойЧасти = "ЗаказКлиента";
ПараметрыОбновления.ИспользоватьЗаказыВТабличнойЧасти = ИспользоватьРеализациюПоНесколькимЗаказам;
ЗаказыСервер.ОбновитьИнформациюПоЗаказамВФорме(ЭтаФорма, Объект.Товары, ПараметрыОбновления);
ИспользоватьРасширенныеВозможностиЗаказаКлиента = ИспользоватьРасширенныеВозможностиЗаказаКлиента();
УстановитьВидимостьКомандПоЗаказу();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
ВалютаВзаиморасчетовДляДоговора = ?(РеализацияЧерезКомиссионера, Неопределено, Объект.ВалютаВзаиморасчетов);
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(Объект,
ХозяйственнаяОперацияДоговора,
ВалютаВзаиморасчетовДляДоговора,
Объект.НаправлениеДеятельности,
РеализацияЧерезКомиссионера);
Иначе
Договор = ПродажиСервер.ПолучитьДоговорПоУмолчанию(Объект,
ХозяйственнаяОперацияДоговора,
ВалютаВзаиморасчетовДляДоговора,
,
РеализацияЧерезКомиссионера);
КонецЕсли;
Если Договор <> Объект.Договор Тогда
Объект.Договор = Договор;
ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчетОрганизации, Объект.БанковскийСчетКонтрагента);
ЗаполнитьОснованиеДляПечати();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
Объект.ВариантВыбытияМаркируемойПродукции = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ВариантВыбытияМаркируемойПродукции");
КонецЕсли;
ЗаполнитьВидЦеныПоДоговору();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорКонечногоКлиентаПоУмолчанию()
Если РеализацияЧерезКомиссионера Тогда
Объект.КлиентДоговор = КомиссионнаяТорговляСервер.ПолучитьДоговорПоУмолчанию(Объект,
Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера);
КлиентДоговорПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоЗаказуСервер()
Объект.Товары.Очистить();
Если ИспользоватьРеализациюПоНесколькимЗаказам Тогда
МассивЗаказов = Неопределено;
Иначе
МассивЗаказов = Новый Массив();
МассивЗаказов.Добавить(Объект.ЗаказКлиента);
КонецЕсли;
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("ОтображатьСообщение", Ложь);
ПараметрыЗаполнения.Вставить("ИспользоватьРасширенныеВозможностиЗаказаКлиента", ИспользоватьРасширенныеВозможностиЗаказаКлиента);
Документы.РеализацияТоваровУслуг.ЗаполнитьПоОстаткамЗаказов(
Объект,
Объект.Товары,
Объект.СкидкиНаценки,
Объект.НачислениеБонусныхБаллов,
Склад,
МассивЗаказов,
ПараметрыЗаполнения,
Объект.ШтрихкодыУпаковок);
ОбновитьИнформациюПоЗаказам();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
РеализацияТоваровУслугЛокализация.ЗаполнитьКешШтрихкодовУпаковок(ЭтотОбъект);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
ПриИзмененииСкладаВТабличнойЧастиСервер();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.РеализацияТоваровУслуг));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
ЗаполнитьОснованиеДляПечати();
Объект.СкидкиРассчитаны = Истина;
КонецПроцедуры
&НаСервере
Функция ПривязатьСтрокиРеализацииКЗаказамКлиентов(ОтобратьПоЗаказу)
Если (Не ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыКлиентов")
И Не ПолучитьФункциональнуюОпцию("ИспользоватьЗаявкиНаВозвратТоваровОтКлиентов")) Или
(Не ПолучитьФункциональнуюОпцию("ИспользоватьРеализациюПоНесколькимЗаказам")
И Не ЗначениеЗаполнено(Объект.ЗаказКлиента)) Тогда
Возврат Ложь;
КонецЕсли;
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
|ПОМЕСТИТЬ Товары
|ИЗ
| &Товары КАК Товары
|;
|
|
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ТаблицаЗаказы.ЗаказКлиента ССЫЛКА Документ.ЗаказКлиента
| ТОГДА ВЫРАЗИТЬ(ТаблицаЗаказы.ЗаказКлиента КАК Документ.ЗаказКлиента).Сделка
| КОГДА ТаблицаЗаказы.ЗаказКлиента ССЫЛКА Документ.ЗаявкаНаВозвратТоваровОтКлиента
| ТОГДА ВЫРАЗИТЬ(ТаблицаЗаказы.ЗаказКлиента КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Сделка
| КОГДА ТаблицаЗаказы.ЗаказКлиента ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| ТОГДА ВЫРАЗИТЬ(ТаблицаЗаказы.ЗаказКлиента КАК Документ.ОтгрузкаТоваровКлиенту).Сделка
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.СделкиСКлиентами.ПустаяСсылка)
| КОНЕЦ КАК Сделка,
| ТаблицаЗаказы.ЗаказКлиента КАК ЗаказКлиента,
| ТаблицаЗаказы.ПорядокРасчетов КАК ПорядокРасчетов,
| ТаблицаЗаказы.Номенклатура КАК Номенклатура,
| ТаблицаЗаказы.Характеристика КАК Характеристика,
| ТаблицаЗаказы.КодСтроки КАК КодСтроки,
| ТаблицаЗаказы.Склад КАК Склад,
| ТаблицаЗаказы.Серия КАК Серия,
| СУММА(ТаблицаЗаказы.КОформлениюКоличество) КАК КОформлениюКоличество,
| СУММА(ТаблицаЗаказы.КОформлениюСумма) КАК КОформлениюСумма
|ПОМЕСТИТЬ ЗаказыКлиентов
|ИЗ
| (ВЫБРАТЬ
| ЗНАЧЕНИЕ(Документ.ОтгрузкаТоваровКлиенту.ПустаяСсылка) КАК ЗаказКлиента,
| ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПустаяСсылка) КАК ПорядокРасчетов,
| ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК Номенклатура,
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика,
| 0 КАК КодСтроки,
| ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) КАК Склад,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| 0 КАК КОформлениюКоличество,
| 0 КАК КОформлениюСумма,
| 0 КАК СуммаНДСРегл,
| 0 КАК СуммаНДСУпр
| ИЗ
| Документ.ОтгрузкаТоваровКлиенту.Товары КАК ТаблицаТовары
| ГДЕ
| ЛОЖЬ
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| РаспоряженияОбороты.Распоряжение КАК ЗаказКлиента,
| ВЫБОР
| КОГДА РаспоряженияОбороты.Распоряжение ССЫЛКА Документ.ЗаказКлиента
| ТОГДА ВЫРАЗИТЬ(РаспоряженияОбороты.Распоряжение КАК Документ.ЗаказКлиента).ПорядокРасчетов
| КОГДА РаспоряженияОбороты.Распоряжение ССЫЛКА Документ.ЗаявкаНаВозвратТоваровОтКлиента
| ТОГДА ВЫРАЗИТЬ(РаспоряженияОбороты.Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ПорядокРасчетов
| КОГДА РаспоряженияОбороты.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| ТОГДА ВЫРАЗИТЬ(РаспоряженияОбороты.Распоряжение КАК Документ.ПервичныйДокумент).ПорядокРасчетов
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПустаяСсылка)
| КОНЕЦ КАК ПорядокРасчетов,
| РаспоряженияОбороты.Номенклатура КАК Номенклатура,
| РаспоряженияОбороты.Характеристика КАК Характеристика,
| РаспоряженияОбороты.КодСтроки КАК КодСтроки,
| МАКСИМУМ(РаспоряженияОбороты.Склад) КАК Склад,
| МАКСИМУМ(РаспоряженияОбороты.Серия) КАК Серия,
| СУММА(РаспоряженияОбороты.КОтгрузкеКоличество
| - РаспоряженияОбороты.ОтгруженоКоличество) КАК КОформлениюКоличество,
| СУММА(РаспоряженияОбороты.КОтгрузкеСумма
| - РаспоряженияОбороты.ОтгруженоСумма) КАК КОформлениюСумма,
| СУММА(РаспоряженияОбороты.ОформленоСчетовФактурСуммаНДСРегл
| - РаспоряженияОбороты.ОформленоСуммаНДСРегл) КАК СуммаНДСРегл,
| СУММА(РаспоряженияОбороты.ОформленоСчетовФактурСуммаНДСУпр
| - РаспоряженияОбороты.ОформленоСуммаНДСУпр) КАК СуммаНДСУпр
| ИЗ
| (
| ВЫБРАТЬ
| ТаблицаОбороты.Распоряжение КАК Распоряжение,
| ТаблицаОбороты.Номенклатура КАК Номенклатура,
| ТаблицаОбороты.Характеристика КАК Характеристика,
| ТаблицаОбороты.КодСтроки КАК КодСтроки,
| ТаблицаОбороты.Склад КАК Склад,
| ТаблицаОбороты.Серия КАК Серия,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК КОтгрузкеКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК КОтгрузкеСумма,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отгружено)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОтгруженоКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отгружено)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОтгруженоСумма,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено)
| ТОГДА ТаблицаОбороты.СуммаНДСУпрОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОформленоСуммаНДСУпр,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено)
| ТОГДА ТаблицаОбороты.СуммаНДСРеглОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОформленоСуммаНДСРегл,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОформленоСчетовФактур)
| ТОГДА ТаблицаОбороты.СуммаНДСУпрОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОформленоСчетовФактурСуммаНДСУпр,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОформленоСчетовФактур)
| ТОГДА ТаблицаОбороты.СуммаНДСРеглОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОформленоСчетовФактурСуммаНДСРегл
| ИЗ
| РегистрНакопления.РаспоряженияНаОтгрузкуИВозврат.Обороты(
| ,
| ,
| ,
| ВЫБОР
| КОГДА &ОтобратьПоЗаказу
| ТОГДА Распоряжение = &ЗаказКлиента
| КОГДА Распоряжение ССЫЛКА Документ.ЗаказКлиента
| ТОГДА
| ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Партнер = &Партнер
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Контрагент = &Контрагент
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Договор = &Договор
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Организация = &Организация
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).ХозяйственнаяОперация В (&ХозяйственныеОперацииРаспоряжений)
| И (НЕ &ИспользоватьСоглашенияСКлиентами
| ИЛИ ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Соглашение = &Соглашение)
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Сделка = &Сделка
| И (ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Валюта = &ВалютаВзаиморасчетов
| ИЛИ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию))
| И ВЫБОР
| КОГДА ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).НалогообложениеНДС В (
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров)
| )
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт)
| ИНАЧЕ
| ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).НалогообложениеНДС
| КОНЕЦ = &НалогообложениеНДС
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).ЦенаВключаетНДС = &ЦенаВключаетНДС
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).ТребуетсяЗалогЗаТару = &ТребуетсяЗалогЗаТару
| И (НЕ &ИспользоватьНаправленияДеятельности
| ИЛИ ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).НаправлениеДеятельности = &НаправлениеДеятельности)
| КОГДА Распоряжение ССЫЛКА Документ.ЗаявкаНаВозвратТоваровОтКлиента
| ТОГДА
| ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Партнер = &Партнер
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Контрагент = &Контрагент
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Договор = &Договор
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Организация = &Организация
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ХозяйственнаяОперация В (&ХозяйственныеОперацииРаспоряжений)
| И (НЕ &ИспользоватьСоглашенияСКлиентами
| ИЛИ ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Соглашение = &Соглашение)
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Сделка = &Сделка
| И (ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Валюта = &ВалютаВзаиморасчетов
| ИЛИ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию))
| И ВЫБОР
| КОГДА ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).НалогообложениеНДС В (
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров)
| )
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт)
| ИНАЧЕ
| ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).НалогообложениеНДС
| КОНЕЦ = &НалогообложениеНДС
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ЦенаВключаетНДС = &ЦенаВключаетНДС
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ТребуетсяЗалогЗаТару = &ТребуетсяЗалогЗаТару
| И (НЕ &ИспользоватьНаправленияДеятельности
| ИЛИ ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).НаправлениеДеятельности = &НаправлениеДеятельности)
| КОНЕЦ
| И ВЫБОР
| КОГДА ВЫРАЗИТЬ(&Склад КАК Справочник.Склады).ЭтоГруппа
| ТОГДА Склад В ИЕРАРХИИ (&Склад)
| ИЛИ Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ
| Склад В (
| ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка),
| &Склад
| )
| КОНЕЦ
| И Номенклатура.ВариантОформленияПродажи В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.РеализацияТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.АктНаПередачуПрав)
| )
| И (Номенклатура, Характеристика) В
| (ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
| ИЗ
| Товары КАК Товары
| )
| И Показатель В (
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КОтгрузке),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отгружено),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОформленоСчетовФактур)
| )
| ) КАК ТаблицаОбороты
| ) КАК РаспоряженияОбороты
| ГДЕ
| &ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПереходПраваСобственности)
|
| СГРУППИРОВАТЬ ПО
| РаспоряженияОбороты.Распоряжение,
| ВЫБОР
| КОГДА РаспоряженияОбороты.Распоряжение ССЫЛКА Документ.ЗаказКлиента
| ТОГДА ВЫРАЗИТЬ(РаспоряженияОбороты.Распоряжение КАК Документ.ЗаказКлиента).ПорядокРасчетов
| КОГДА РаспоряженияОбороты.Распоряжение ССЫЛКА Документ.ЗаявкаНаВозвратТоваровОтКлиента
| ТОГДА ВЫРАЗИТЬ(РаспоряженияОбороты.Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ПорядокРасчетов
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПустаяСсылка)
| КОНЕЦ,
| РаспоряженияОбороты.Номенклатура,
| РаспоряженияОбороты.Характеристика,
| РаспоряженияОбороты.КодСтроки
|
| ИМЕЮЩИЕ
| СУММА(РаспоряженияОбороты.КОтгрузкеКоличество
| - РаспоряженияОбороты.ОтгруженоКоличество) <> 0
| ИЛИ СУММА(РаспоряженияОбороты.КОтгрузкеСумма
| - РаспоряженияОбороты.ОтгруженоСумма) <> 0
| ИЛИ СУММА(РаспоряженияОбороты.ОформленоСчетовФактурСуммаНДСРегл
| - РаспоряженияОбороты.ОформленоСуммаНДСРегл) <> 0
| ИЛИ СУММА(РаспоряженияОбороты.ОформленоСчетовФактурСуммаНДСУпр
| - РаспоряженияОбороты.ОформленоСуммаНДСУпр) <> 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| РаспоряженияОбороты.Распоряжение КАК ЗаказКлиента,
| ВЫБОР
| КОГДА РаспоряженияОбороты.Распоряжение ССЫЛКА Документ.ЗаказКлиента
| ТОГДА ВЫРАЗИТЬ(РаспоряженияОбороты.Распоряжение КАК Документ.ЗаказКлиента).ПорядокРасчетов
| КОГДА РаспоряженияОбороты.Распоряжение ССЫЛКА Документ.ЗаявкаНаВозвратТоваровОтКлиента
| ТОГДА ВЫРАЗИТЬ(РаспоряженияОбороты.Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ПорядокРасчетов
| КОГДА РаспоряженияОбороты.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| ТОГДА ВЫРАЗИТЬ(РаспоряженияОбороты.Распоряжение КАК Документ.ПервичныйДокумент).ПорядокРасчетов
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПустаяСсылка)
| КОНЕЦ КАК ПорядокРасчетов,
| РаспоряженияОбороты.Номенклатура КАК Номенклатура,
| РаспоряженияОбороты.Характеристика КАК Характеристика,
| РаспоряженияОбороты.КодСтроки КАК КодСтроки,
| ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) КАК Склад,
| МАКСИМУМ(РаспоряженияОбороты.Серия) КАК Серия,
| СУММА(РаспоряженияОбороты.ОтгруженоКоличество
| + РаспоряженияОбороты.ОприходованоДоППСКоличество
| - РаспоряженияОбороты.СписаноДоППСКоличество
| - РаспоряженияОбороты.ПринятоКоличество
| - РаспоряженияОбороты.ОформленоКоличество) КАК КОформлениюКоличество,
| СУММА(РаспоряженияОбороты.ОтгруженоСумма
| + РаспоряженияОбороты.ОприходованоДоППССумма
| - РаспоряженияОбороты.СписаноДоППССумма
| - РаспоряженияОбороты.ПринятоСумма
| - РаспоряженияОбороты.ОформленоСумма) КАК КОформлениюСумма,
| СУММА(РаспоряженияОбороты.ОформленоСчетовФактурСуммаНДСРегл
| - РаспоряженияОбороты.ОформленоСуммаНДСРегл) КАК СуммаНДСРегл,
| СУММА(РаспоряженияОбороты.ОформленоСчетовФактурСуммаНДСУпр
| - РаспоряженияОбороты.ОформленоСуммаНДСУпр) КАК СуммаНДСУпр
| ИЗ
| (
| ВЫБРАТЬ
| ТаблицаОбороты.Распоряжение КАК Распоряжение,
| ТаблицаОбороты.Номенклатура КАК Номенклатура,
| ТаблицаОбороты.Характеристика КАК Характеристика,
| ТаблицаОбороты.КодСтроки КАК КодСтроки,
| ТаблицаОбороты.Серия КАК Серия,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отгружено)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОтгруженоКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отгружено)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОтгруженоСумма,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОприходованоДоППС)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОприходованоДоППСКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОприходованоДоППС)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОприходованоДоППССумма,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.СписаноДоППС)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК СписаноДоППСКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.СписаноДоППС)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК СписаноДоППССумма,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КПриемке)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК КПриемкеКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КПриемке)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК КПриемкеСумма,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Принято)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ПринятоКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Принято)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ПринятоСумма,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено)
| ТОГДА ТаблицаОбороты.КоличествоОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОформленоКоличество,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено)
| ТОГДА ТаблицаОбороты.СуммаОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОформленоСумма,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено)
| ТОГДА ТаблицаОбороты.СуммаНДСУпрОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОформленоСуммаНДСУпр,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено)
| ТОГДА ТаблицаОбороты.СуммаНДСРеглОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОформленоСуммаНДСРегл,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОформленоСчетовФактур)
| ТОГДА ТаблицаОбороты.СуммаНДСУпрОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОформленоСчетовФактурСуммаНДСУпр,
| ВЫБОР
| КОГДА ТаблицаОбороты.Показатель = ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОформленоСчетовФактур)
| ТОГДА ТаблицаОбороты.СуммаНДСРеглОборот
| ИНАЧЕ
| 0
| КОНЕЦ КАК ОформленоСчетовФактурСуммаНДСРегл
| ИЗ
| РегистрНакопления.РаспоряженияНаОтгрузкуИВозврат.Обороты(
| ,
| ,
| ,
| ВЫБОР
| КОГДА &ОтобратьПоЗаказу
| ТОГДА Распоряжение = &ЗаказКлиента
| КОГДА Распоряжение ССЫЛКА Документ.ЗаказКлиента
| ТОГДА
| ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Партнер = &Партнер
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Контрагент = &Контрагент
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Договор = &Договор
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Организация = &Организация
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).ХозяйственнаяОперация В (&ХозяйственныеОперацииРаспоряжений)
| И (НЕ &ИспользоватьСоглашенияСКлиентами
| ИЛИ ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Соглашение = &Соглашение)
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Сделка = &Сделка
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).Валюта = &ВалютаВзаиморасчетов
| И ВЫБОР
| КОГДА ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).НалогообложениеНДС В (
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров)
| )
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт)
| ИНАЧЕ
| ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).НалогообложениеНДС
| КОНЕЦ = &НалогообложениеНДС
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).ЦенаВключаетНДС = &ЦенаВключаетНДС
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).ВернутьМногооборотнуюТару = &ВернутьМногооборотнуюТару
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).ТребуетсяЗалогЗаТару = &ТребуетсяЗалогЗаТару
| И (НЕ &ИспользоватьНаправленияДеятельности
| ИЛИ ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаказКлиента).НаправлениеДеятельности = &НаправлениеДеятельности)
| КОГДА Распоряжение ССЫЛКА Документ.ЗаявкаНаВозвратТоваровОтКлиента
| ТОГДА
| ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Партнер = &Партнер
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Контрагент = &Контрагент
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Договор = &Договор
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Организация = &Организация
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ХозяйственнаяОперация В (&ХозяйственныеОперацииРаспоряжений)
| И (НЕ &ИспользоватьСоглашенияСКлиентами
| ИЛИ ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Соглашение = &Соглашение)
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Сделка = &Сделка
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Валюта = &ВалютаВзаиморасчетов
| И ВЫБОР
| КОГДА ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).НалогообложениеНДС В (
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров)
| )
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт)
| ИНАЧЕ
| ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).НалогообложениеНДС
| КОНЕЦ = &НалогообложениеНДС
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ЦенаВключаетНДС = &ЦенаВключаетНДС
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ВернутьМногооборотнуюТару = &ВернутьМногооборотнуюТару
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ТребуетсяЗалогЗаТару = &ТребуетсяЗалогЗаТару
| И (НЕ &ИспользоватьНаправленияДеятельности
| ИЛИ ВЫРАЗИТЬ(Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).НаправлениеДеятельности = &НаправлениеДеятельности)
| КОГДА Распоряжение ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| ТОГДА
| ВЫРАЗИТЬ(Распоряжение КАК Документ.ОтгрузкаТоваровКлиенту).Партнер = &Партнер
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ОтгрузкаТоваровКлиенту).Контрагент = &Контрагент
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ОтгрузкаТоваровКлиенту).Договор = &Договор
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ОтгрузкаТоваровКлиенту).Организация = &Организация
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ОтгрузкаТоваровКлиенту).ХозяйственнаяОперация В (&ХозяйственныеОперацииРаспоряжений)
| И (НЕ &ИспользоватьСоглашенияСКлиентами
| ИЛИ ВЫРАЗИТЬ(Распоряжение КАК Документ.ОтгрузкаТоваровКлиенту).Соглашение = &Соглашение)
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ОтгрузкаТоваровКлиенту).Сделка = &Сделка
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ОтгрузкаТоваровКлиенту).Валюта = &ВалютаВзаиморасчетов
| И ВЫБОР
| КОГДА ВЫРАЗИТЬ(Распоряжение КАК Документ.ОтгрузкаТоваровКлиенту).НалогообложениеНДС В (
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров)
| )
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт)
| ИНАЧЕ
| ВЫРАЗИТЬ(Распоряжение КАК Документ.ОтгрузкаТоваровКлиенту).НалогообложениеНДС
| КОНЕЦ = &НалогообложениеНДС
| И &ЦенаВключаетНДС = ИСТИНА
| И (НЕ &ИспользоватьНаправленияДеятельности
| ИЛИ ВЫРАЗИТЬ(Распоряжение КАК Документ.ОтгрузкаТоваровКлиенту).НаправлениеДеятельности = &НаправлениеДеятельности)
| КОГДА Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| ТОГДА
| ВЫРАЗИТЬ(Распоряжение КАК Документ.ПервичныйДокумент).Партнер = &Партнер
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ПервичныйДокумент).Контрагент = &Контрагент
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ПервичныйДокумент).Договор = &Договор
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ПервичныйДокумент).Организация = &Организация
| И ВЫРАЗИТЬ(Распоряжение КАК Документ.ПервичныйДокумент).Валюта = &ВалютаВзаиморасчетов
| И ВЫБОР
| КОГДА ВЫРАЗИТЬ(Распоряжение КАК Документ.ПервичныйДокумент).НалогообложениеНДС В (
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров)
| )
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт)
| ИНАЧЕ
| ВЫРАЗИТЬ(Распоряжение КАК Документ.ПервичныйДокумент).НалогообложениеНДС
| КОНЕЦ = &НалогообложениеНДС
| И (НЕ &ИспользоватьНаправленияДеятельности
| ИЛИ ВЫРАЗИТЬ(Распоряжение КАК Документ.ПервичныйДокумент).НаправлениеДеятельности = &НаправлениеДеятельности)
| КОНЕЦ
| И Номенклатура.ВариантОформленияПродажи В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.РеализацияТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.АктНаПередачуПрав)
| )
| И (Номенклатура, Характеристика) В
| (ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
| ИЗ
| Товары КАК Товары
| )
| И Показатель В (
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отгружено),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОприходованоДоППС),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.СписаноДоППС),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.КПриемке),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Принято),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.ОформленоСчетовФактур)
| )
| ) КАК ТаблицаОбороты
| ) КАК РаспоряженияОбороты
| ГДЕ
| &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПереходПраваСобственности)
|
| СГРУППИРОВАТЬ ПО
| РаспоряженияОбороты.Распоряжение,
| ВЫБОР
| КОГДА РаспоряженияОбороты.Распоряжение ССЫЛКА Документ.ЗаказКлиента
| ТОГДА ВЫРАЗИТЬ(РаспоряженияОбороты.Распоряжение КАК Документ.ЗаказКлиента).ПорядокРасчетов
| КОГДА РаспоряженияОбороты.Распоряжение ССЫЛКА Документ.ЗаявкаНаВозвратТоваровОтКлиента
| ТОГДА ВЫРАЗИТЬ(РаспоряженияОбороты.Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ПорядокРасчетов
| КОГДА РаспоряженияОбороты.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| ТОГДА ВЫРАЗИТЬ(РаспоряженияОбороты.Распоряжение КАК Документ.ПервичныйДокумент).ПорядокРасчетов
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПустаяСсылка)
| КОНЕЦ,
| РаспоряженияОбороты.Номенклатура,
| РаспоряженияОбороты.Характеристика,
| РаспоряженияОбороты.КодСтроки
|
| ИМЕЮЩИЕ
| СУММА(РаспоряженияОбороты.ОтгруженоКоличество
| + РаспоряженияОбороты.ОприходованоДоППСКоличество
| - РаспоряженияОбороты.СписаноДоППСКоличество
| - РаспоряженияОбороты.ПринятоКоличество
| - РаспоряженияОбороты.ОформленоКоличество) <> 0
| ИЛИ СУММА(РаспоряженияОбороты.ОтгруженоСумма
| + РаспоряженияОбороты.ОприходованоДоППССумма
| - РаспоряженияОбороты.СписаноДоППССумма
| - РаспоряженияОбороты.ПринятоСумма
| - РаспоряженияОбороты.ОформленоСумма) <> 0
| ИЛИ СУММА(РаспоряженияОбороты.ОформленоСчетовФактурСуммаНДСРегл
| - РаспоряженияОбороты.ОформленоСуммаНДСРегл) <> 0
| ИЛИ СУММА(РаспоряженияОбороты.ОформленоСчетовФактурСуммаНДСУпр
| - РаспоряженияОбороты.ОформленоСуммаНДСУпр) <> 0
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| РаспоряженияТаблица.Распоряжение КАК ЗаказКлиента,
| ВЫБОР
| КОГДА РаспоряженияТаблица.Распоряжение ССЫЛКА Документ.ЗаказКлиента
| ТОГДА ВЫРАЗИТЬ(РаспоряженияТаблица.Распоряжение КАК Документ.ЗаказКлиента).ПорядокРасчетов
| КОГДА РаспоряженияТаблица.Распоряжение ССЫЛКА Документ.ЗаявкаНаВозвратТоваровОтКлиента
| ТОГДА ВЫРАЗИТЬ(РаспоряженияТаблица.Распоряжение КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).ПорядокРасчетов
| КОГДА РаспоряженияТаблица.Распоряжение ССЫЛКА Документ.ПервичныйДокумент
| ТОГДА ВЫРАЗИТЬ(РаспоряженияТаблица.Распоряжение КАК Документ.ПервичныйДокумент).ПорядокРасчетов
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПустаяСсылка)
| КОНЕЦ КАК ПорядокРасчетов,
| РаспоряженияТаблица.Номенклатура КАК Номенклатура,
| РаспоряженияТаблица.Характеристика КАК Характеристика,
| РаспоряженияТаблица.КодСтроки КАК КодСтроки,
| РаспоряженияТаблица.Склад КАК Склад,
| РаспоряженияТаблица.Серия КАК Серия,
| РаспоряженияТаблица.ОформленоКоличество КАК КОформлениюКоличество,
| РаспоряженияТаблица.ОформленоСумма КАК КОформлениюСумма,
| РаспоряженияТаблица.ОформленоСуммаНДСРегл КАК СуммаНДСРегл,
| РаспоряженияТаблица.ОформленоСуммаНДСУпр КАК СуммаНДСУпр
| ИЗ
| #РаспоряженияНаОтгрузкуРазвернутая КАК РаспоряженияТаблица
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗаказКлиентаТовары.Ссылка КАК ЗаказКлиента,
| ЗаказКлиентаТовары.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
| ЗаказКлиентаТовары.Характеристика КАК Характеристика,
| ЗаказКлиентаТовары.КодСтроки КАК КодСтроки,
| ЗаказКлиентаТовары.Склад КАК Склад,
| ЗаказКлиентаТовары.Серия КАК Серия,
| ЗаказКлиентаТовары.Количество КАК КОформлениюКоличество,
| ЗаказКлиентаТовары.Сумма КАК КОформлениюСумма,
| 0 КАК СуммаНДСРегл,
| 0 КАК СуммаНДСУпр
| ИЗ
| Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
| ГДЕ
| ЗаказКлиентаТовары.Ссылка.Проведен
| И ЗаказКлиентаТовары.Ссылка.ЭтоЗаказКакСчет
| И НЕ ЗаказКлиентаТовары.Отменено
| И ВЫБОР
| КОГДА &ОтобратьПоЗаказу
| ТОГДА ЗаказКлиентаТовары.Ссылка = &ЗаказКлиента
| ИНАЧЕ ЗаказКлиентаТовары.Ссылка.Партнер = &Партнер
| И ЗаказКлиентаТовары.Ссылка.Контрагент = &Контрагент
| И ЗаказКлиентаТовары.Ссылка.Договор = &Договор
| И ЗаказКлиентаТовары.Ссылка.Организация = &Организация
| И ЗаказКлиентаТовары.Ссылка.ХозяйственнаяОперация В (&ХозяйственныеОперацииРаспоряжений)
| И ЗаказКлиентаТовары.Ссылка.Соглашение = &Соглашение
| И ЗаказКлиентаТовары.Ссылка.Сделка = &Сделка
| И (ЗаказКлиентаТовары.Ссылка.Валюта = &ВалютаВзаиморасчетов
| ИЛИ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию))
| И ВЫБОР
| КОГДА ЗаказКлиентаТовары.Ссылка.НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг), ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров))
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт)
| ИНАЧЕ ЗаказКлиентаТовары.Ссылка.НалогообложениеНДС
| КОНЕЦ = &НалогообложениеНДС
| И ЗаказКлиентаТовары.Ссылка.ЦенаВключаетНДС = &ЦенаВключаетНДС
| И ЗаказКлиентаТовары.Ссылка.ВернутьМногооборотнуюТару = &ВернутьМногооборотнуюТару
| И ЗаказКлиентаТовары.Ссылка.ТребуетсяЗалогЗаТару = &ТребуетсяЗалогЗаТару
| И ВЫБОР
| КОГДА НЕ &ИспользоватьНаправленияДеятельности
| ТОГДА ИСТИНА
| ИНАЧЕ ЗаказКлиентаТовары.Ссылка.НаправлениеДеятельности = &НаправлениеДеятельности
| КОНЕЦ
| КОНЕЦ
| И ЗаказКлиентаТовары.Номенклатура.ВариантОформленияПродажи В
| (ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.РеализацияТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.АктНаПередачуПрав))
| И (Номенклатура, Характеристика) В
| (ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
| ИЗ
| Товары КАК Товары)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗаявкаНаВозвратТовары.Ссылка КАК ЗаказКлиента,
| ЗаявкаНаВозвратТовары.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| ЗаявкаНаВозвратТовары.Номенклатура КАК Номенклатура,
| ЗаявкаНаВозвратТовары.Характеристика КАК Характеристика,
| ЗаявкаНаВозвратТовары.КодСтроки КАК КодСтроки,
| ЗаявкаНаВозвратТовары.Склад КАК Склад,
| ЗаявкаНаВозвратТовары.Серия КАК Серия,
| ЗаявкаНаВозвратТовары.Количество КАК КОформлениюКоличество,
| ЗаявкаНаВозвратТовары.Сумма КАК КОформлениюСумма,
| 0 КАК СуммаНДСРегл,
| 0 КАК СуммаНДСУпр
| ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ЗаявкаНаВозвратТовары
| ГДЕ
| ЗаявкаНаВозвратТовары.Ссылка.Проведен
| И ЗаявкаНаВозвратТовары.Ссылка.ЭтоЗаказКакСчет
| И НЕ ЗаявкаНаВозвратТовары.Отменено
| И ВЫБОР
| КОГДА &ОтобратьПоЗаказу
| ТОГДА ЗаявкаНаВозвратТовары.Ссылка = &ЗаказКлиента
| ИНАЧЕ ЗаявкаНаВозвратТовары.Ссылка.Партнер = &Партнер
| И ЗаявкаНаВозвратТовары.Ссылка.Контрагент = &Контрагент
| И ЗаявкаНаВозвратТовары.Ссылка.Договор = &Договор
| И ЗаявкаНаВозвратТовары.Ссылка.Организация = &Организация
| И ЗаявкаНаВозвратТовары.Ссылка.ХозяйственнаяОперация В (&ХозяйственныеОперацииРаспоряжений)
| И ЗаявкаНаВозвратТовары.Ссылка.Соглашение = &Соглашение
| И ЗаявкаНаВозвратТовары.Ссылка.Сделка = &Сделка
| И (ЗаявкаНаВозвратТовары.Ссылка.Валюта = &ВалютаВзаиморасчетов
| ИЛИ &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию))
| И ВЫБОР
| КОГДА ЗаявкаНаВозвратТовары.Ссылка.НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг), ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров))
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт)
| ИНАЧЕ ЗаявкаНаВозвратТовары.Ссылка.НалогообложениеНДС
| КОНЕЦ = &НалогообложениеНДС
| И ЗаявкаНаВозвратТовары.Ссылка.ЦенаВключаетНДС = &ЦенаВключаетНДС
| И ЗаявкаНаВозвратТовары.Ссылка.ВернутьМногооборотнуюТару = &ВернутьМногооборотнуюТару
| И ЗаявкаНаВозвратТовары.Ссылка.ТребуетсяЗалогЗаТару = &ТребуетсяЗалогЗаТару
| И ВЫБОР
| КОГДА НЕ &ИспользоватьНаправленияДеятельности
| ТОГДА ИСТИНА
| ИНАЧЕ ЗаявкаНаВозвратТовары.Ссылка.НаправлениеДеятельности = &НаправлениеДеятельности
| КОНЕЦ
| КОНЕЦ
| И ЗаявкаНаВозвратТовары.Номенклатура.ВариантОформленияПродажи В
| (ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.РеализацияТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.АктНаПередачуПрав))
| И (Номенклатура, Характеристика) В
| (ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
| ИЗ
| Товары КАК Товары)
| ) КАК ТаблицаЗаказы
|
|СГРУППИРОВАТЬ ПО
| ВЫБОР
| КОГДА ТаблицаЗаказы.ЗаказКлиента ССЫЛКА Документ.ЗаказКлиента
| ТОГДА ВЫРАЗИТЬ(ТаблицаЗаказы.ЗаказКлиента КАК Документ.ЗаказКлиента).Сделка
| КОГДА ТаблицаЗаказы.ЗаказКлиента ССЫЛКА Документ.ЗаявкаНаВозвратТоваровОтКлиента
| ТОГДА ВЫРАЗИТЬ(ТаблицаЗаказы.ЗаказКлиента КАК Документ.ЗаявкаНаВозвратТоваровОтКлиента).Сделка
| КОГДА ТаблицаЗаказы.ЗаказКлиента ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
| ТОГДА ВЫРАЗИТЬ(ТаблицаЗаказы.ЗаказКлиента КАК Документ.ОтгрузкаТоваровКлиенту).Сделка
| ИНАЧЕ
| ЗНАЧЕНИЕ(Справочник.СделкиСКлиентами.ПустаяСсылка)
| КОНЕЦ,
| ТаблицаЗаказы.ЗаказКлиента,
| ТаблицаЗаказы.ПорядокРасчетов,
| ТаблицаЗаказы.Номенклатура,
| ТаблицаЗаказы.Характеристика,
| ТаблицаЗаказы.КодСтроки,
| ТаблицаЗаказы.Склад,
| ТаблицаЗаказы.Серия
|
|ИМЕЮЩИЕ
| СУММА(ТаблицаЗаказы.КОформлениюКоличество) > 0
|;
|
|
|ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК КоличествоДублей,
| ЗаказыКлиентов.Номенклатура КАК Номенклатура,
| ЗаказыКлиентов.Характеристика КАК Характеристика,
| ЗаказыКлиентов.Серия КАК Серия,
| ЗаказыКлиентов.Склад КАК Склад
|ПОМЕСТИТЬ ДублиТоваров
|ИЗ
| ЗаказыКлиентов КАК ЗаказыКлиентов
|
|СГРУППИРОВАТЬ ПО
| ЗаказыКлиентов.Номенклатура,
| ЗаказыКлиентов.Характеристика,
| ЗаказыКлиентов.Серия,
| ЗаказыКлиентов.Склад
|;
|
|
|ВЫБРАТЬ
| СтавкиНДСНоменклатуры.Номенклатура КАК Номенклатура,
| СтавкиНДСНоменклатуры.СтавкаНДС КАК СтавкаНДС
|ПОМЕСТИТЬ СтавкиНДСНоменклатуры
|ИЗ
| РегистрСведений.СтавкиНДСНоменклатуры.СрезПоследних(
| &Дата,
| (Страна = &СтранаРегистрации
| ИЛИ Страна = ЗНАЧЕНИЕ(Справочник.СтраныМира.ПустаяСсылка))
| И Номенклатура В (ВЫБРАТЬ
| Номенклатура
| ИЗ
| Товары)
| ) КАК СтавкиНДСНоменклатуры
|;
|
|
|ВЫБРАТЬ
| ОсновныеСтавкиНДС.СтавкаНДС КАК СтавкаНДС
|ПОМЕСТИТЬ ОсновныеСтавкиНДС
|ИЗ
| РегистрСведений.ОсновныеСтавкиНДС.СрезПоследних(
| &Дата,
| Страна = &СтранаРегистрации
| ) КАК ОсновныеСтавкиНДС
|;
|
|
|ВЫБРАТЬ
| ЗаказыКлиентов.ЗаказКлиента КАК ЗаказКлиента,
| ЗаказыКлиентов.ПорядокРасчетов КАК ПорядокРасчетов,
| ЗаказыКлиентов.Номенклатура КАК Номенклатура,
| ЗаказыКлиентов.Характеристика КАК Характеристика,
| ЗаказыКлиентов.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ЗаказКлиентаТовары.Обособленно
| ТОГДА ЗаказыКлиентов.ЗаказКлиента.Назначение
| ИНАЧЕ Значение(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ЗаказыКлиентов.Склад КАК Склад,
| ЗаказыКлиентов.Серия КАК Серия,
| ЗаказыКлиентов.КОформлениюКоличество КАК КОформлениюКоличество,
| ЗаказКлиентаТовары.СрокПоставки КАК СрокПоставки,
| ЗаказКлиентаТовары.ВидЦены КАК ВидЦены,
| ЗаказКлиентаТовары.Цена КАК Цена,
| ЗаказКлиентаТовары.ПроцентРучнойСкидки КАК ПроцентРучнойСкидки,
| ЗаказКлиентаТовары.СтавкаНДС КАК СтавкаНДС,
| 0 КАК Распределено,
| ДублиТоваров.КоличествоДублей КАК КоличествоДублей
|ИЗ
| ЗаказыКлиентов КАК ЗаказыКлиентов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
| ПО ЗаказКлиентаТовары.Ссылка = ЗаказыКлиентов.ЗаказКлиента
| И ЗаказКлиентаТовары.КодСтроки = ЗаказыКлиентов.КодСтроки
| ЛЕВОЕ СОЕДИНЕНИЕ ДублиТоваров КАК ДублиТоваров
| ПО ЗаказыКлиентов.Номенклатура = ДублиТоваров.Номенклатура
| И ЗаказыКлиентов.Характеристика = ДублиТоваров.Характеристика
| И ЗаказыКлиентов.Склад = ДублиТоваров.Склад
| И ЗаказыКлиентов.Серия = ДублиТоваров.Серия
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаказыКлиентов.ЗаказКлиента КАК ЗаказКлиента,
| ЗаказыКлиентов.ПорядокРасчетов КАК ПорядокРасчетов,
| ЗаказыКлиентов.Номенклатура КАК Номенклатура,
| ЗаказыКлиентов.Характеристика КАК Характеристика,
| ЗаказыКлиентов.КодСтроки КАК КодСтроки,
| ВЫБОР
| КОГДА ЗаявкаНаВозвратТовары.Обособленно
| ТОГДА ЗаказыКлиентов.ЗаказКлиента.Назначение
| ИНАЧЕ Значение(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ЗаказыКлиентов.Склад КАК Склад,
| ЗаказыКлиентов.Серия КАК Серия,
| ЗаказыКлиентов.КОформлениюКоличество КАК КОформлениюКоличество,
| ЗаявкаНаВозвратТовары.СрокПоставки КАК СрокПоставки,
| ЗаявкаНаВозвратТовары.ВидЦены КАК ВидЦены,
| ЗаявкаНаВозвратТовары.Цена КАК Цена,
| ЗаявкаНаВозвратТовары.ПроцентРучнойСкидки КАК ПроцентРучнойСкидки,
| ЗаявкаНаВозвратТовары.СтавкаНДС КАК СтавкаНДС,
| 0 КАК Распределено,
| ДублиТоваров.КоличествоДублей КАК КоличествоДублей
|ИЗ
| ЗаказыКлиентов КАК ЗаказыКлиентов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ЗаявкаНаВозвратТовары
| ПО ЗаявкаНаВозвратТовары.Ссылка = ЗаказыКлиентов.ЗаказКлиента
| И ЗаявкаНаВозвратТовары.КодСтроки = ЗаказыКлиентов.КодСтроки
| ЛЕВОЕ СОЕДИНЕНИЕ ДублиТоваров КАК ДублиТоваров
| ПО ЗаказыКлиентов.Номенклатура = ДублиТоваров.Номенклатура
| И ЗаказыКлиентов.Характеристика = ДублиТоваров.Характеристика
| И ЗаказыКлиентов.Склад = ДублиТоваров.Склад
| И ЗаказыКлиентов.Серия = ДублиТоваров.Серия
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаказыКлиентов.ЗаказКлиента КАК ЗаказКлиента,
| ЗаказыКлиентов.ПорядокРасчетов КАК ПорядокРасчетов,
| ЗаказыКлиентов.Номенклатура КАК Номенклатура,
| ЗаказыКлиентов.Характеристика КАК Характеристика,
| ЗаказыКлиентов.КодСтроки КАК КодСтроки,
| ОтгрузкаКлиентуТовары.Назначение КАК Назначение,
| ЗаказыКлиентов.Склад КАК Склад,
| ЗаказыКлиентов.Серия КАК Серия,
| ЗаказыКлиентов.КОформлениюКоличество КАК КОформлениюКоличество,
| ОтгрузкаКлиентуТовары.СрокПоставки КАК СрокПоставки,
| ОтгрузкаКлиентуТовары.ВидЦены КАК ВидЦены,
| ОтгрузкаКлиентуТовары.Цена КАК Цена,
| 0 КАК ПроцентРучнойСкидки,
| &СтавкаНДСОтгрузкаТоваровБезРаспоряжения КАК СтавкаНДС,
| 0 КАК Распределено,
| ДублиТоваров.КоличествоДублей КАК КоличествоДублей
|ИЗ
| ЗаказыКлиентов КАК ЗаказыКлиентов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтгрузкаТоваровКлиенту.Товары КАК ОтгрузкаКлиентуТовары
| ПО ОтгрузкаКлиентуТовары.Ссылка = ЗаказыКлиентов.ЗаказКлиента
| И ОтгрузкаКлиентуТовары.КодСтроки = ЗаказыКлиентов.КодСтроки
| ЛЕВОЕ СОЕДИНЕНИЕ ДублиТоваров КАК ДублиТоваров
| ПО ЗаказыКлиентов.Номенклатура = ДублиТоваров.Номенклатура
| И ЗаказыКлиентов.Характеристика = ДублиТоваров.Характеристика
| И ЗаказыКлиентов.Склад = ДублиТоваров.Склад
| И ЗаказыКлиентов.Серия = ДублиТоваров.Серия
| ЛЕВОЕ СОЕДИНЕНИЕ СтавкиНДСНоменклатуры КАК СтавкиНДСНоменклатуры
| ПО СтавкиНДСНоменклатуры.Номенклатура = ЗаказыКлиентов.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ ОсновныеСтавкиНДС КАК ОсновныеСтавкиНДС
| ПО ИСТИНА
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаказыКлиентов.ЗаказКлиента КАК ЗаказКлиента,
| ЗаказыКлиентов.ПорядокРасчетов КАК ПорядокРасчетов,
| ЗаказыКлиентов.Номенклатура КАК Номенклатура,
| ЗаказыКлиентов.Характеристика КАК Характеристика,
| ЗаказыКлиентов.КодСтроки КАК КодСтроки,
| ЕСТЬNULL(ОтгрузкаКлиентуТовары.Назначение, ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)) КАК Назначение,
| ЗаказыКлиентов.Склад КАК Склад,
| ЗаказыКлиентов.Серия КАК Серия,
| ЗаказыКлиентов.КОформлениюКоличество КАК КОформлениюКоличество,
| ЕСТЬNULL(ОтгрузкаКлиентуТовары.СрокПоставки, 0) КАК СрокПоставки,
| ЕСТЬNULL(ОтгрузкаКлиентуТовары.ВидЦены, ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)) КАК ВидЦены,
| ЕСТЬNULL(ОтгрузкаКлиентуТовары.Цена, 0) КАК Цена,
| 0 КАК ПроцентРучнойСкидки,
| ВЫБОР
| КОГДА ОтгрузкаКлиентуТовары.Ссылка ЕСТЬ NULL
| ТОГДА ЗНАЧЕНИЕ(Справочник.СтавкиНДС.ПустаяСсылка)
| ИНАЧЕ
| &СтавкаНДСОтгрузкаТоваровБезРаспоряжения
| КОНЕЦ КАК СтавкаНДС,
| 0 КАК Распределено,
| ДублиТоваров.КоличествоДублей КАК КоличествоДублей
|ИЗ
| ЗаказыКлиентов КАК ЗаказыКлиентов
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтгрузкаТоваровКлиенту.Товары КАК ОтгрузкаКлиентуТовары
| ПО ЗаказыКлиентов.ЗаказКлиента = ОтгрузкаКлиентуТовары.ЗаказКлиента
| И ЗаказыКлиентов.КодСтроки = ОтгрузкаКлиентуТовары.КодСтроки
| И ОтгрузкаКлиентуТовары.КодСтроки = 0
| И ОтгрузкаКлиентуТовары.Ссылка.Проведен
| ЛЕВОЕ СОЕДИНЕНИЕ ДублиТоваров КАК ДублиТоваров
| ПО ЗаказыКлиентов.Номенклатура = ДублиТоваров.Номенклатура
| И ЗаказыКлиентов.Характеристика = ДублиТоваров.Характеристика
| И ЗаказыКлиентов.Склад = ДублиТоваров.Склад
| И ЗаказыКлиентов.Серия = ДублиТоваров.Серия
| ЛЕВОЕ СОЕДИНЕНИЕ СтавкиНДСНоменклатуры КАК СтавкиНДСНоменклатуры
| ПО СтавкиНДСНоменклатуры.Номенклатура = ЗаказыКлиентов.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ ОсновныеСтавкиНДС КАК ОсновныеСтавкиНДС
| ПО ИСТИНА
|ГДЕ
| ЗаказыКлиентов.КодСтроки = 0
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗаказыКлиентов.ЗаказКлиента КАК ЗаказКлиента,
| ЗаказыКлиентов.ПорядокРасчетов КАК ПорядокРасчетов,
| ЗаказыКлиентов.Номенклатура КАК Номенклатура,
| ЗаказыКлиентов.Характеристика КАК Характеристика,
| ЗаказыКлиентов.КодСтроки КАК КодСтроки,
| ВводОстатковТовары.Назначение КАК Назначение,
| ЗаказыКлиентов.Склад КАК Склад,
| ЗаказыКлиентов.Серия КАК Серия,
| ЗаказыКлиентов.КОформлениюКоличество КАК КОформлениюКоличество,
| 0 КАК СрокПоставки,
| ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка) КАК ВидЦены,
| ВводОстатковТовары.Цена КАК Цена,
| 0 КАК ПроцентРучнойСкидки,
| &СтавкаНДСВводОстатков КАК СтавкаНДС,
| 0 КАК Распределено,
| ДублиТоваров.КоличествоДублей КАК КоличествоДублей
|ИЗ
| ЗаказыКлиентов КАК ЗаказыКлиентов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВводОстатковТоваров.Товары КАК ВводОстатковТовары
| ПО ВводОстатковТовары.Ссылка.Партия = ЗаказыКлиентов.ЗаказКлиента
| И ВводОстатковТовары.КодСтроки = ЗаказыКлиентов.КодСтроки
| И ВводОстатковТовары.Ссылка.Проведен
| ЛЕВОЕ СОЕДИНЕНИЕ ДублиТоваров КАК ДублиТоваров
| ПО ЗаказыКлиентов.Номенклатура = ДублиТоваров.Номенклатура
| И ЗаказыКлиентов.Характеристика = ДублиТоваров.Характеристика
| И ЗаказыКлиентов.Склад = ДублиТоваров.Склад
| И ЗаказыКлиентов.Серия = ДублиТоваров.Серия
| ЛЕВОЕ СОЕДИНЕНИЕ СтавкиНДСНоменклатуры КАК СтавкиНДСНоменклатуры
| ПО СтавкиНДСНоменклатуры.Номенклатура = ЗаказыКлиентов.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ ОсновныеСтавкиНДС КАК ОсновныеСтавкиНДС
| ПО ИСТИНА
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ПО ВводОстатковТовары.Ссылка = РеестрДокументов.СторнируемыйДокумент
| И РеестрДокументов.Проведен
| И НЕ РеестрДокументов.ДополнительнаяЗапись
|ГДЕ
| РеестрДокументов.Ссылка ЕСТЬ NULL
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура,
| Характеристика,
| Склад,
| Серия,
| ЗаказКлиента
|");
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.ТекстУсловия =
"Регистратор = &Регистратор
| И Активность
| И Номенклатура.ВариантОформленияПродажи В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.РеализацияТоваровУслуг),
| ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.АктНаПередачуПрав)
| )
| И (Номенклатура, Характеристика) В
| (ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
| ИЗ
| Товары КАК Товары)";
ПараметрыФормированияТаблицы.ФизическаяТаблица = Истина;
ПараметрыФормированияТаблицы.Показатели = "Оформлено, ОформленоСчетовФактур";
ПараметрыФормированияТаблицы.Ресурсы = "Количество, Сумма, СуммаНДСРегл, СуммаНДСУпр";
РаспоряженияНаОтгрузкуОборотыРазвернутая =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуРазвернутая",
РаспоряженияНаОтгрузкуОборотыРазвернутая);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&СтавкаНДСОтгрузкаТоваровБезРаспоряжения",
УчетНДСУП.ТекстЗапросаСтавкаНДС(
"ОтгрузкаКлиентуТовары.Ссылка.НалогообложениеНДС",
"ОтгрузкаКлиентуТовары.Номенклатура",
"&ВернутьМногооборотнуюТару"));
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"&СтавкаНДСВводОстатков",
УчетНДСУП.ТекстЗапросаСтавкаНДС(
"ВводОстатковТовары.Ссылка.НалогообложениеНДС",
"ВводОстатковТовары.Номенклатура",
"&ВернутьМногооборотнуюТару"));
УчетНДСУП.УстановитьПараметрыЗапросаСтавкиНДС(
Запрос.Параметры,
Объект.Организация,
Объект.Дата);
Запрос.УстановитьПараметр("СтранаРегистрации",
ЗначениеНастроекКлиентСерверПовтИсп.СтранаРегистрацииОрганизации(Объект.Организация));
Запрос.УстановитьПараметр("ЗаказКлиента", Объект.ЗаказКлиента);
Запрос.УстановитьПараметр("Партнер", Объект.Партнер);
Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
Запрос.УстановитьПараметр("Договор", Объект.Договор);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Сделка", Объект.Сделка);
Запрос.УстановитьПараметр("Соглашение", Объект.Соглашение);
Запрос.УстановитьПараметр("ВалютаВзаиморасчетов", Объект.ВалютаВзаиморасчетов);
Запрос.УстановитьПараметр("НалогообложениеНДС", Объект.НалогообложениеНДС);
Запрос.УстановитьПараметр("ЦенаВключаетНДС", Объект.ЦенаВключаетНДС);
Запрос.УстановитьПараметр("ВернутьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
Запрос.УстановитьПараметр("ТребуетсяЗалогЗаТару", Объект.ТребуетсяЗалогЗаТару);
Запрос.УстановитьПараметр("Склад", Объект.Склад);
Запрос.УстановитьПараметр("Регистратор", Объект.Ссылка);
Запрос.УстановитьПараметр("ОтобратьПоЗаказу", ОтобратьПоЗаказу);
Запрос.УстановитьПараметр("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
Запрос.УстановитьПараметр("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
Запрос.УстановитьПараметр("ИспользоватьНаправленияДеятельности",
ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности"));
Запрос.УстановитьПараметр("ИспользоватьСоглашенияСКлиентами",
ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами"));
ХозяйственныеОперацииРаспоряжений = Новый Массив();
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиентуРеглУчет
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности
Тогда
ХозяйственныеОперацииРаспоряжений.Добавить(Перечисления.ХозяйственныеОперации.РеализацияКлиенту);
ХозяйственныеОперацииРаспоряжений.Добавить(Перечисления.ХозяйственныеОперации.ВозвратТоваровОтКлиента);
ХозяйственныеОперацииРаспоряжений.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя);
ХозяйственныеОперацииРаспоряжений.Добавить(Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности);
ХозяйственныеОперацииРаспоряжений.Добавить(Перечисления.ХозяйственныеОперации.ОтгрузкаТоваровКлиенту);
ХозяйственныеОперацииРаспоряжений.Добавить(
Перечисления.ХозяйственныеОперации.ВводОстатковОтгруженныхТоваров);
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
ХозяйственныеОперацииРаспоряжений.Добавить(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
ХозяйственныеОперацииРаспоряжений.Добавить(Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера);
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности Тогда
ХозяйственныеОперацииРаспоряжений.Добавить(Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности);
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера Тогда
ХозяйственныеОперацииРаспоряжений.Добавить(Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера);
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности Тогда
ХозяйственныеОперацииРаспоряжений.Добавить(Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности);
КонецЕсли;
Запрос.УстановитьПараметр("ХозяйственныеОперацииРаспоряжений", ХозяйственныеОперацииРаспоряжений);
Запрос.УстановитьПараметр("Товары", Объект.Товары.Выгрузить(,"КодСтроки,Номенклатура,Характеристика,ЗаказКлиента"));
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.ВыполнитьПакет();
Если РезультатЗапроса[1].Пустой() Тогда
Возврат Ложь;
КонецЕсли;
Выборка = РезультатЗапроса[РезультатЗапроса.ВГраница()].Выбрать();
МассивПорядковРасчетов = Новый Массив();
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.ПорядокРасчетов)
И МассивПорядковРасчетов.Найти(Выборка.ПорядокРасчетов) = Неопределено Тогда
МассивПорядковРасчетов.Добавить(Выборка.ПорядокРасчетов);
КонецЕсли;
КонецЦикла;
Если МассивПорядковРасчетов.Количество() > 1 Тогда
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru='У найденных распоряжений отличается поле ""Порядок расчетов""'"));
Иначе
ОбщегоНазначения.СообщитьПользователю(НСтр("ru='У найденных заказов отличается поле ""Порядок расчетов""'"));
КонецЕсли;
Возврат Ложь;
КонецЕсли;
Выборка.Сбросить();
ТаблицаНераспределенныхТоваров = Новый ТаблицаЗначений();
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Номенклатура");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Характеристика");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Склад");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Серия");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("ЗаказКлиента");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("КодСтроки");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Количество");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("СрокПоставки");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("ВидЦены");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Цена");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("ПроцентРучнойСкидки");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("СтавкаНДС");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Назначение");
Пока Выборка.Следующий() Цикл
СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("Номенклатура", Выборка.Номенклатура);
СтруктураПоиска.Вставить("Характеристика", Выборка.Характеристика);
СтруктураПоиска.Вставить("Склад", Выборка.Склад);
СтруктураПоиска.Вставить("Серия", Выборка.Серия);
СтруктураПоиска.Вставить("ВидЦены", Выборка.ВидЦены);
СтруктураПоиска.Вставить("Цена", Выборка.Цена);
СтруктураПоиска.Вставить("ПроцентРучнойСкидки", Выборка.ПроцентРучнойСкидки);
СтруктураПоиска.Вставить("СтавкаНДС", Выборка.СтавкаНДС);
СтруктураПоиска.Вставить("КодСтроки", 0);
НайденныеСтроки = Объект.Товары.НайтиСтроки(СтруктураПоиска);
НераспределенноеКоличество = Выборка.КОформлениюКоличество;
Если Выборка.КоличествоДублей < 2 Тогда
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
ЗаполнитьЗначенияСвойств(ТекСтрока, Выборка, "КодСтроки,ЗаказКлиента,Назначение,СрокПоставки");
НераспределенноеКоличество = НераспределенноеКоличество - ТекСтрока.Количество;
Если НераспределенноеКоличество <= 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
НайденаПодходящаяСтрока = Ложь;
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
Если ТекСтрока.Количество = Выборка.КОформлениюКоличество Тогда
НайденаПодходящаяСтрока = Истина;
ЗаполнитьЗначенияСвойств(ТекСтрока, Выборка, "КодСтроки,ЗаказКлиента,Назначение,СрокПоставки");
Прервать;
КонецЕсли;
КонецЦикла;
Если Не НайденаПодходящаяСтрока Тогда
НоваяСтрока = ТаблицаНераспределенныхТоваров.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
НоваяСтрока.Количество = НераспределенноеКоличество;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ТаблицаНераспределенныхТоваров.Количество() > 0 Тогда
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
ОбрабатываемыеСтроки = Новый Массив;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
Для Каждого НераспределеннаяСтрока Из ТаблицаНераспределенныхТоваров Цикл
СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("КодСтроки", 0);
СтруктураПоиска.Вставить("ЗаказКлиента", Неопределено);
СтруктураПоиска.Вставить("Номенклатура", НераспределеннаяСтрока.Номенклатура);
СтруктураПоиска.Вставить("Характеристика", НераспределеннаяСтрока.Характеристика);
СтруктураПоиска.Вставить("Склад", НераспределеннаяСтрока.Склад);
СтруктураПоиска.Вставить("ВидЦены", НераспределеннаяСтрока.ВидЦены);
СтруктураПоиска.Вставить("Цена", НераспределеннаяСтрока.Цена);
СтруктураПоиска.Вставить("ПроцентРучнойСкидки", НераспределеннаяСтрока.ПроцентРучнойСкидки);
СтруктураПоиска.Вставить("СтавкаНДС", НераспределеннаяСтрока.СтавкаНДС);
СтруктураПоиска.Вставить("Серия", НераспределеннаяСтрока.Серия);
СтрокиТовары = Объект.Товары.НайтиСтроки(СтруктураПоиска);
Для Каждого СтрокаТовары Из СтрокиТовары Цикл
Если СтрокаТовары.Количество = НераспределеннаяСтрока.Количество Тогда
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, "КодСтроки,ЗаказКлиента,Назначение,СрокПоставки");
НераспределеннаяСтрока.Количество = 0;
ИначеЕсли СтрокаТовары.Количество > НераспределеннаяСтрока.Количество Тогда
Разница = СтрокаТовары.Количество - НераспределеннаяСтрока.Количество;
НоваяСтрокаТовары = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаТовары, СтрокаТовары);
НоваяСтрокаТовары.Количество = Разница;
СтрокиТовары.Добавить(НоваяСтрокаТовары);
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, "КодСтроки,ЗаказКлиента,Назначение,СрокПоставки,Количество");
НераспределеннаяСтрока.Количество = 0;
ОбрабатываемыеСтроки.Добавить(НоваяСтрокаТовары);
ОбрабатываемыеСтроки.Добавить(СтрокаТовары);
ИначеЕсли СтрокаТовары.Количество < НераспределеннаяСтрока.Количество Тогда
Разница = НераспределеннаяСтрока.Количество - СтрокаТовары.Количество;
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, "КодСтроки,ЗаказКлиента,Назначение,СрокПоставки");
НераспределеннаяСтрока.Количество = Разница;
КонецЕсли;
Если НераспределеннаяСтрока.Количество = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
Неопределено);
ОбновитьОтклоненияОтЗаказа();
КонецЕсли;
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если Не ЗначениеЗаполнено(ТекСтрока.КодСтроки) Тогда
ТекСтрока.Назначение = Справочники.Назначения.ПустаяСсылка();
КонецЕсли;
КонецЦикла;
ЗаполнитьСтатусыУказанияСерийСервер();
Возврат Истина;
КонецФункции
&НаСервере
Функция ЗаполнитьСкладВВыделенныхСтрокахНаСервере(Знач МассивВыделенныхСтрок, Склад)
ЗаполненоСтрок = СкладыСервер.ЗаполнитьСкладыВВыделенныхСтроках(Объект.Товары, МассивВыделенныхСтрок, Склад);
Если ЗаполненоСтрок > 0 Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецЕсли;
Возврат ЗаполненоСтрок;
КонецФункции
&НаСервере
Процедура УстановитьДоступностьЭлементовПоСтатусуСервер()
ТолькоПросмотрЭлементовПоСогласованию = Объект.Согласован;
МассивЭлементов = Новый Массив;
Если Не Объект.РеализацияПоЗаказам Тогда
МассивЭлементов.Добавить("Дата");
КонецЕсли;
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("Соглашение");
МассивЭлементов.Добавить("Договор");
МассивЭлементов.Добавить("ЦенаВключаетНДС");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("НалогообложениеНДС");
МассивЭлементов.Добавить("РеализацияПоЗаказам");
МассивЭлементов.Добавить("РеализацияПоЗаказу");
МассивЭлементов.Добавить("ВернутьМногооборотнуюТару");
МассивЭлементов.Добавить("ДатаВозвратаМногооборотнойТары");
МассивЭлементов.Добавить("ТребуетсяЗалогЗаТару");
МассивЭлементов.Добавить("Подразделение");
МассивЭлементов.Добавить("Товары;ПередНачаломДобавления,ПередУдалением,ПередНачаломИзменения");
МассивЭлементов.Добавить("ТоварыДобавить");
МассивЭлементов.Добавить("ТоварыСкопировать");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюДобавить");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюСкопировать");
МассивЭлементов.Добавить("ТоварыПоискПоШтрихкоду");
МассивЭлементов.Добавить("ТоварыЗагрузитьДанныеИзТСД");
МассивЭлементов.Добавить("ТоварыРазбитьСтроку");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюРазбитьСтроку");
МассивЭлементов.Добавить("ТоварыОткрытьПодбор");
МассивЭлементов.Добавить("ТоварыДополнитьМногооборотнойТарой");
МассивЭлементов.Добавить("ТоварыНазначитьАвтоматическиеСкидки");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныПоСоглашению");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦен");
МассивЭлементов.Добавить("ТоварыОтменитьРучныеСкидки");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидку");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидкуВыделенныхСтрок");
МассивЭлементов.Добавить("ТоварыПодобратьТоварыПоЗаказамОрдерам");
МассивЭлементов.Добавить("ТоварыРассчитатьСкидкиНаценки");
МассивЭлементов.Добавить("ТоварыЗагрузитьИзВнешнегоФайла");
МассивЭлементов.Добавить("ТоварыСоставНабора");
МассивЭлементов.Добавить("СчитатьКартуЛояльности");
МассивЭлементов.Добавить("СчитатьКартуЛояльностиКлиент");
МассивЭлементов.Добавить("КартаЛояльности");
МассивЭлементов.Добавить("ТоварыПолучитьВес");
МассивЭлементов.Добавить("ТоварыПроверитьКоличествоВДокументе");
МассивЭлементов.Добавить("ТоварыЗаполнитьСкладВВыделенныхСтроках");
МассивЭлементов.Добавить("Склад");
МассивЭлементов.Добавить("ХозяйственнаяОперация");
МассивЭлементов.Добавить("ТоварыОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("Статус");
ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтаФорма, МассивЭлементов, ТолькоПросмотрЭлементовПоСогласованию);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыОткрытьПодбор", "Доступность",
Не Объект.РеализацияПоЗаказам ИЛИ (Объект.РеализацияПоЗаказам И РеализацияСверхЗаказа));
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыПодобратьТоварыПоЗаказамОрдерам", "Доступность",
Не Объект.РеализацияПоЗаказам ИЛИ (Объект.РеализацияПоЗаказам И РеализацияСверхЗаказа));
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыДополнитьМногооборотнойТарой", "Доступность", Не Объект.РеализацияПоЗаказам);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "УслугиОткрытьИнформациюОСкидках", "Доступность", Не Объект.РеализацияПоЗаказам);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "КонтекстноеМенюУслугиОткрытьИнформациюОСкидках", "Доступность", Не Объект.РеализацияПоЗаказам);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыОтвязатьОтЗаказа", "Видимость", Объект.РеализацияПоЗаказам И РеализацияСверхЗаказа);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыКонтекстноеМенюОтвязатьОтЗаказа", "Видимость", Объект.РеализацияПоЗаказам И РеализацияСверхЗаказа);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыЗагрузитьИзВнешнегоФайла", "Доступность",
Не Объект.РеализацияПоЗаказам ИЛИ (Объект.РеализацияПоЗаказам И РеализацияСверхЗаказа));
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыЗаполнитьСкладВВыделенныхСтроках",
"Видимость", Не Объект.РеализацияПоЗаказам);
Если Не Объект.РеализацияПоЗаказам Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ТоварыЗаполнитьСкладВВыделенныхСтроках",
"Доступность", СкладГруппа);
КонецЕсли;
ДоступностьЭлементовЕслиРеализацияПоЗаказам = (Не Объект.РеализацияПоЗаказам);
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ТоварыЗагрузитьДанныеИзТСД");
МассивЭлементов.Добавить("СчитатьКартуЛояльности");
МассивЭлементов.Добавить("СчитатьКартуЛояльностиКлиент");
МассивЭлементов.Добавить("КартаЛояльности");
Если НЕ РеализацияСверхЗаказа Тогда
МассивЭлементов.Добавить("ТоварыСкопировать");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюСкопировать");
МассивЭлементов.Добавить("ТоварыРазбитьСтроку");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюРазбитьСтроку");
МассивЭлементов.Добавить("ТоварыПоискПоШтрихкоду");
МассивЭлементов.Добавить("ТоварыОтменитьРучныеСкидки");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидку");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидкуВыделенныхСтрок");
МассивЭлементов.Добавить("ТоварыНазначитьАвтоматическиеСкидки");
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", ДоступностьЭлементовЕслиРеализацияПоЗаказам);
Если Объект.РеализацияПоЗаказам И Не ПраваПользователяПовтИсп.ОтклонениеОтУсловийПродаж()
И (ЗначениеЗаполнено(Объект.ЗаказКлиента) ИЛИ СписокЗаказов.Количество() > 0) Тогда
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("Соглашение");
МассивЭлементов.Добавить("Договор");
МассивЭлементов.Добавить("ЦенаВключаетНДС");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("НалогообложениеНДС");
МассивЭлементов.Добавить("Подразделение");
МассивЭлементов.Добавить("РеализацияПоЗаказам");
МассивЭлементов.Добавить("РеализацияПоЗаказу");
МассивЭлементов.Добавить("КартаЛояльности");
Если Не РеализацияСверхЗаказа Тогда
МассивЭлементов.Добавить("ТоварыНоменклатура");
МассивЭлементов.Добавить("ТоварыКодСтроки");
МассивЭлементов.Добавить("ТоварыХарактеристика");
МассивЭлементов.Добавить("ТоварыУпаковка");
МассивЭлементов.Добавить("ТоварыВидЦены");
МассивЭлементов.Добавить("ТоварыПроцентРучнойСкидки");
МассивЭлементов.Добавить("ТоварыСуммаРучнойСкидки");
МассивЭлементов.Добавить("ТоварыСтавкаНДС");
КонецЕсли;
МассивЭлементов.Добавить("Склад");
МассивЭлементов.Добавить("ХозяйственнаяОперация");
МассивЭлементов.Добавить("ВернутьМногооборотнуюТару");
МассивЭлементов.Добавить("ТребуетсяЗалогЗаТару");
МассивЭлементов.Добавить("ДатаВозвратаМногооборотнойТары");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "ТолькоПросмотр", Истина);
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныПоСоглашению");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦен");
МассивЭлементов.Добавить("ТоварыОтменитьРучныеСкидки");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидку");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидкуВыделенныхСтрок");
МассивЭлементов.Добавить("ТоварыЗаполнитьСтавкуНДС");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", РеализацияСверхЗаказа);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовПоОперацииСервер()
Перем МассивВсехРеквизитов;
Перем МассивРеквизитовОперации;
Документы.РеализацияТоваровУслуг.ЗаполнитьИменаРеквизитовПоХозяйственнойОперации(
Объект.ХозяйственнаяОперация,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
ДенежныеСредстваСервер.УстановитьВидимостьЭлементовПоМассиву(
Элементы,
МассивВсехРеквизитов,
МассивРеквизитовОперации);
НоменклатураСервер.УстановитьПараметрыВыбораНоменклатуры(Объект.ХозяйственнаяОперация, Элементы.ТоварыНоменклатура);
ЭтоПередачаНаКомиссию =
(Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
ЭтоПереходПраваСобственности =
(Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности);
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыРассчитатьСкидкиНаценки");
МассивЭлементов.Добавить("ТоварыОтменитьРучныеСкидки");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидку");
МассивЭлементов.Добавить("ТоварыНазначитьРучнуюСкидкуВыделенныхСтрок");
МассивЭлементов.Добавить("ТоварыНазначитьАвтоматическиеСкидки");
МассивЭлементов.Добавить("ТоварыОткрытьИнформациюОСкидках");
МассивЭлементов.Добавить("КонтекстноеМенюТоварыОткрытьИнформациюОСкидках");
МассивЭлементов.Добавить("СуммаСкидки");
МассивЭлементов.Добавить("СчитатьКартуЛояльности");
МассивЭлементов.Добавить("СчитатьКартуЛояльностиКлиент");
МассивЭлементов.Добавить("КартаЛояльности");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", Не ЭтоПередачаНаКомиссию И Не РеализацияЧерезКомиссионера);
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ЗаголовокОплата");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", Не ЭтоПередачаНаКомиссию);
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ВариантОформленияПродажи");
МассивЭлементов.Добавить("Склад");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы,
МассивЭлементов,
"Видимость",
Не (РеализацияЧерезКомиссионера Или ЭтоПереходПраваСобственности));
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ГруппаРеализацияПоЗаказам");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы,
МассивЭлементов,
"Видимость",
Не РеализацияЧерезКомиссионера);
Элементы.ГруппаДанныеКлиента.Видимость = РеализацияЧерезКомиссионера;
ДанныеПоФоновомуЗаданию = ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы,
Объект,
Объект.РеализацияПоЗаказам Или РеализацияЧерезКомиссионера,,,
Истина);
Элементы.Партнер.Заголовок = ?(РеализацияЧерезКомиссионера, НСтр("ru = 'Комиссионер'"), "");
Элементы.Контрагент.Заголовок = ?(РеализацияЧерезКомиссионера, НСтр("ru = 'Контрагент комиссионера'"), "");
УстановитьЗаголовокТоварыГруппаОтправитель();
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Видимость = Не РеализацияЧерезКомиссионера;
Элементы.ТоварыПодобратьПереданныеТовары.Видимость = РеализацияЧерезКомиссионера;
Элементы.ДекорацияОтступТребуетсяЗалогЗаТару.Видимость = Элементы.ТребуетсяЗалогЗаТару.Видимость;
УстановитьПараметрыВыбораВидаЦены();
Элементы.РеализацияПоЗаказу.Доступность = НЕ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиентуРеглУчет;
Элементы.РеализацияПоЗаказам.Доступность = НЕ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиентуРеглУчет;
УстановитьВидимостьКомандыЗаполненияВидаЦенПоДоговору();
Элементы.ГруппаЦеныСкидки.Заголовок = ?(ЭтоПередачаНаКомиссию Или РеализацияЧерезКомиссионера, НСтр("ru = 'Цены'"), НСтр("ru = 'Цены и скидки'"));
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораОпераций(УстановитьОперацию = Истина)
ИспользоватьДоговорыСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами");
Если Не ИспользоватьСоглашенияСКлиентами Тогда
ВозможнаРеализацияБезПереходаПраваСобственности =
ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0
Или ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5;
ИначеЕсли Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
ВозможнаРеализацияБезПереходаПраваСобственности =
ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0
Или ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5;
Иначе
ДанныеСоглашения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.Соглашение,
"ВозможнаРеализацияБезПереходаПраваСобственности, ИспользуютсяДоговорыКонтрагентов");
ИспользоватьДоговорыСКлиентами = ДанныеСоглашения.ИспользуютсяДоговорыКонтрагентов;
ВозможнаРеализацияБезПереходаПраваСобственности =
ДанныеСоглашения.ВозможнаРеализацияБезПереходаПраваСобственности
И (ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0
Или ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5);
КонецЕсли;
Если Элементы.Найти("ХозяйственнаяОперация") <> Неопределено Тогда
ЭлементПередачаНаКомиссию =
Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
ЭлементРеализацияЧерезКомиссионера =
Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера);
ЭлементРеализацияЧерезКомиссионераБезПереходаПраваСобственности =
Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности);
ЭлементРеализацияБезПереходаПраваСобственности =
Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности);
ЭлементПереходПраваСобственности =
Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ПереходПраваСобственности);
Если Не ПолучитьФункциональнуюОпциюФормы("ИспользоватьУправленческуюОрганизацию") Тогда
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.РеализацияКлиентуРеглУчет);
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
Если Не ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0
И ЭлементРеализацияБезПереходаПраваСобственности <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементРеализацияБезПереходаПраваСобственности);
КонецЕсли;
Если (Не ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5
Или Не ИспользоватьДоговорыСКлиентами)
И ЭлементПереходПраваСобственности <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементПереходПраваСобственности);
КонецЕсли;
Если ВозможнаРеализацияБезПереходаПраваСобственности Тогда
Если ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0
И ЭлементРеализацияБезПереходаПраваСобственности = Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Добавить(
Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности);
КонецЕсли;
Если ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5
И ИспользоватьДоговорыСКлиентами
И ЭлементПереходПраваСобственности = Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Добавить(
Перечисления.ХозяйственныеОперации.ПереходПраваСобственности);
КонецЕсли;
КонецЕсли;
Если ПолучитьФункциональнуюОпциюФормы("ИспользоватьКомиссиюПриПродажах") Тогда
Шаблон = НСтр("ru = '%1 (%2)'");
Если ПолучитьФункциональнуюОпциюФормы("ТолькоКомиссионныеПродажи25")
Или Не ПолучитьФункциональнуюОпциюФормы("ИспользоватьСоглашенияСКлиентами") Тогда
Если ЭлементПередачаНаКомиссию <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементПередачаНаКомиссию);
ЭлементПередачаНаКомиссию = Неопределено;
КонецЕсли;
Иначе
Если ЭлементПередачаНаКомиссию <> Неопределено Тогда
ЭлементПередачаНаКомиссию.Представление = СтрШаблон(Шаблон,
Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию, КомиссионнаяТорговляСервер.ПостфиксСхемыКомиссии());
КонецЕсли;
Если ЭлементРеализацияЧерезКомиссионера <> Неопределено Тогда
ЭлементРеализацияЧерезКомиссионера.Представление = СтрШаблон(Шаблон,
Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера,
КомиссионнаяТорговляСервер.ПостфиксСхемыКомиссии25());
КонецЕсли;
КонецЕсли;
Если Не ПолучитьФункциональнуюОпцию("ВыбиратьВерсиюКомиссионныхПродаж")
И Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию Тогда
Если ЭлементПередачаНаКомиссию <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементПередачаНаКомиссию);
КонецЕсли;
КонецЕсли;
Если Не ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0
И ЭлементРеализацияЧерезКомиссионераБезПереходаПраваСобственности <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементРеализацияЧерезКомиссионераБезПереходаПраваСобственности);
КонецЕсли;
Если ВозможнаРеализацияБезПереходаПраваСобственности
И ИспользоватьОтгрузкуБезПереходаПраваСобственности2_0 Тогда
Если ЭлементРеализацияЧерезКомиссионераБезПереходаПраваСобственности = Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Добавить(
Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности);
ИначеЕсли Не ПолучитьФункциональнуюОпциюФормы("ТолькоКомиссионныеПродажи25") Тогда
ЭлементРеализацияЧерезКомиссионераБезПереходаПраваСобственности.Представление = СтрШаблон(Шаблон,
Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности,
КомиссионнаяТорговляСервер.ПостфиксСхемыКомиссии25());
КонецЕсли;
КонецЕсли;
Иначе
Если ЭлементПередачаНаКомиссию <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементПередачаНаКомиссию);
КонецЕсли;
Если ЭлементРеализацияЧерезКомиссионера <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементРеализацияЧерезКомиссионера);
КонецЕсли;
Если ЭлементРеализацияЧерезКомиссионераБезПереходаПраваСобственности <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементРеализацияЧерезКомиссионераБезПереходаПраваСобственности);
КонецЕсли;
КонецЕсли;
ЕдинственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1;
Если УстановитьОперацию И ЕдинственнаяОперация И Не ЗначениеЗаполнено(Объект.ХозяйственнаяОперация) Тогда
Объект.ХозяйственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора[0].Значение;
ХозяйственнаяОперацияПриИзмененииСервер();
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ХозяйственнаяОперация",
"ТолькоПросмотр",
ЕдинственнаяОперация И ЗначениеЗаполнено(Объект.ХозяйственнаяОперация));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаСервере
Функция ПоместитьТоварыИВидыЗапасовВХранилище()
ПараметрыРедактированияВидовЗапасов = ЗапасыСервер.ПараметрыРедактированияВидовЗапасов();
Если РеализацияЧерезКомиссионера Тогда
ПараметрыРедактированияВидовЗапасов.Склад = Объект.Договор;
КонецЕсли;
Если Документы.РеализацияТоваровУслуг.ИспользуютсяПодакцизныеТовары(Объект) Тогда
ПараметрыРедактированияВидовЗапасов.ОтображатьСуммуАкциза = Истина;
ПараметрыРедактированияВидовЗапасов.ИспользоватьПодакцизныеТовары = Истина;
КонецЕсли;
Возврат ЗапасыСервер.ПоместитьТоварыИВидыЗапасовВХранилище(ЭтотОбъект, ПараметрыРедактированияВидовЗапасов);
КонецФункции
&НаСервере
Процедура ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение)
ЗапасыСервер.ОбработатьВводВидовЗапасовВручную(ВыбранноеЗначение, ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура УдалитьСтрокиТЧСкидкиНаценки(СтрокаТЧТовары)
Если ЗначениеЗаполнено(СтрокаТЧТовары.КлючСвязи) Тогда
Для Каждого СтрокаКУдалению Из Объект.СкидкиНаценки.НайтиСтроки(Новый Структура("КлючСвязи", СтрокаТЧТовары.КлючСвязи)) Цикл
Объект.СкидкиНаценки.Удалить(СтрокаКУдалению);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура АвтоТест_ЗаполнитьЦеныПоСоглашению(Команда) Экспорт
ЗаполнитьЦеныПоСоглашению(Команда);
КонецПроцедуры
&НаСервере
Процедура УстановитьОрдернуюСхемуПриОтгрузке()
Если ПолучитьФункциональнуюОпцию("ИспользоватьОрдерныеСклады")
И Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
СкладыТабличнойЧасти = Объект.Товары.Выгрузить(, "Склад");
СкладыТабличнойЧасти.Свернуть("Склад");
УникальныеСклады = СкладыТабличнойЧасти.ВыгрузитьКолонку("Склад");
Значение = СкладыСервер.ЕстьОрдерныйНаОтгрузкуСклад(УникальныеСклады, Объект.Дата, Объект.Склад);
Иначе
Значение = Ложь;
КонецЕсли;
ОрдернаяСхемаПриОтгрузке = Значение;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСкладаВТабличнойЧастиСервер()
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
УстановитьОрдернуюСхемуПриОтгрузке();
КонецПроцедуры
&НаСервере
Функция АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(ТолькоВыделенныеСтроки)
СтруктураПараметров = СкидкиНаценкиЗаполнениеСервер.НовыйПараметрыАдресДанныхДляРасчетаРучныхСкидок();
СтруктураПараметров.ИмяТаблицы = "Товары";
СтруктураПараметров.ТолькоДляВыделенныхСтрок = ТолькоВыделенныеСтроки;
СтруктураПараметров.РеализацияСверхЗаказа = РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам;
Возврат СкидкиНаценкиЗаполнениеСервер.АдресДанныхДляРасчетаРучныхСкидокВоВременномХранилище(
ЭтаФорма, УникальныйИдентификатор, СтруктураПараметров);
КонецФункции
&НаСервереБезКонтекста
Процедура ПроверитьНаличиеКорректировок(Ссылка, ЕстьКорректировки)
ПродажиСервер.ПроверитьНаличиеКорректировок(Ссылка, Ссылка, ЕстьКорректировки)
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЕстьПравоДобавленияКорректировок()
Возврат ПравоДоступа("Добавление", Метаданные.Документы.КорректировкаРеализации);
КонецФункции
&НаКлиенте
Процедура ОткрытьРеквизитыПечатиРеализации()
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
ОценкаПроизводительностиКлиент.ЗамерВремени(Истина,
"Документ.РеализацияТоваровУслуг.ФормаДокумента.Команда.ОткрытьРеквизитыПечатиРеализации");
ДанныеРаспоряженияНаДоставку = ДоставкаТоваровКлиентСервер.ПараметрыРаспоряжения();
ЗаполнитьЗначенияСвойств(ДанныеРаспоряженияНаДоставку, Объект);
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("АдресДоставки", Объект.АдресДоставки);
СтруктураПараметров.Вставить("АдресДоставкиЗначение", Объект.АдресДоставкиЗначение);
СтруктураПараметров.Вставить("АдресДоставкиЗначенияПолей", Объект.АдресДоставкиЗначенияПолей);
СтруктураПараметров.Вставить("ЗонаДоставки", Объект.ЗонаДоставки);
СтруктураПараметров.Вставить("ВремяДоставкиС", Объект.ВремяДоставкиС);
СтруктураПараметров.Вставить("ВремяДоставкиПо", Объект.ВремяДоставкиПо);
СтруктураПараметров.Вставить("ДополнительнаяИнформацияПоДоставке", Объект.ДополнительнаяИнформацияПоДоставке);
СтруктураПараметров.Вставить("ДанныеРаспоряженияНаДоставку", ДанныеРаспоряженияНаДоставку);
СтруктураПараметров.Вставить("Ссылка", Объект.Ссылка);
СтруктураПараметров.Вставить("БанковскийСчетГрузоотправителя", Объект.БанковскийСчетГрузоотправителя);
СтруктураПараметров.Вставить("БанковскийСчетГрузополучателя", Объект.БанковскийСчетГрузополучателя);
СтруктураПараметров.Вставить("БанковскийСчетКонтрагента", Объект.БанковскийСчетКонтрагента);
СтруктураПараметров.Вставить("Грузоотправитель", Объект.Грузоотправитель);
СтруктураПараметров.Вставить("Грузополучатель", Объект.Грузополучатель);
СтруктураПараметров.Вставить("ДоверенностьВыдана", Объект.ДоверенностьВыдана);
СтруктураПараметров.Вставить("ДоверенностьДата", Объект.ДоверенностьДата);
СтруктураПараметров.Вставить("ДоверенностьЛицо", Объект.ДоверенностьЛицо);
СтруктураПараметров.Вставить("ДоверенностьНомер", Объект.ДоверенностьНомер);
СтруктураПараметров.Вставить("Договор", Объект.Договор);
СтруктураПараметров.Вставить("Основание", Объект.Основание);
СтруктураПараметров.Вставить("ОснованиеДата", Объект.ОснованиеДата);
СтруктураПараметров.Вставить("ОснованиеНомер", Объект.ОснованиеНомер);
СтруктураПараметров.Вставить("Отпустил", Объект.Отпустил);
СтруктураПараметров.Вставить("ОтпустилДолжность", Объект.ОтпустилДолжность);
СтруктураПараметров.Вставить("Партнер", Объект.Партнер);
СтруктураПараметров.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
СтруктураПараметров.Вставить("Контрагент", Объект.Контрагент);
СтруктураПараметров.Вставить("ТолькоПросмотр", ТолькоПросмотр);
СтруктураПараметров.Вставить("ТипОбъекта", "РеализацияТоваровУслуг");
СтруктураПараметров.Вставить("РеализацияПоЗаказам", Объект.РеализацияПоЗаказам);
СтруктураПараметров.Вставить("БанковскийСчетОрганизации", Объект.БанковскийСчетОрганизации);
СтруктураПараметров.Вставить("Организация", Объект.Организация);
СтруктураПараметров.Вставить("Дата", Объект.Дата);
СтруктураПараметров.Вставить("Руководитель", Объект.Руководитель);
СтруктураПараметров.Вставить("ГлавныйБухгалтер", Объект.ГлавныйБухгалтер);
СтруктураПараметров.Вставить("ТаблицаОснованийДляПечати", ТаблицаОснованийДляПечати);
СтруктураПараметров.Вставить("КодСпециальныхОбстоятельств", Объект.КодСпециальныхОбстоятельств);
СтруктураПараметров.Вставить("СведенияОТранспортировкеИГрузе", Объект.СведенияОТранспортировкеИГрузе);
СтруктураПараметров.Вставить("СопроводительныеДокументы", Объект.СопроводительныеДокументы);
СтруктураПараметров.Вставить("РеализацияЧерезКомиссионера", РеализацияЧерезКомиссионера);
ОткрытьФорму("ОбщаяФорма.РеквизитыПечатиРеализации", СтруктураПараметров, ЭтотОбъект,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Склад)
Возврат Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовПродажи(Склад);
КонецФункции
&НаСервере
Процедура ЗаполнитьУсловияПродаж()
ХозОперация = Объект.ХозяйственнаяОперация;
Договор = Объект.Договор;
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоУмолчанию();
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
Соглашение = Объект.Соглашение;
ВалютаДокумента = Объект.Валюта;
ЗаполнитьСписокВыбораОпераций();
Если ХозОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиентуРеглУчет Тогда
Объект.ХозяйственнаяОперация = ХозОперация;
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
ХозяйственнаяОперацияПриИзмененииСервер();
Если Договор <> Объект.Договор Тогда
ДоговорПриИзмененииСервер();
КонецЕсли;
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.ГруппаДоговор.Видимость, Объект.Договор);
Элементы.ГруппаНадписьДоговор.Видимость = Элементы.ГруппаДоговор.Видимость;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОбновитьДоступностьЭлементовВозвратнойТары(Форма)
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ДатаВозвратаМногооборотнойТары");
МассивЭлементов.Добавить("ТребуетсяЗалогЗаТару");
РеализацияНеЧерезКомиссионера = Не Форма.РеализацияЧерезКомиссионера;
Форма.Элементы.ГруппаТара.Видимость = РеализацияНеЧерезКомиссионера;
Форма.Элементы.ГруппаТребуетсяЗалогЗаТару.Видимость = РеализацияНеЧерезКомиссионера;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Форма.Элементы,
МассивЭлементов,
"Доступность",
Форма.Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"ВернутьМногооборотнуюТару",
"Доступность",
Форма.Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.РеализацияКлиентуРеглУчет
И РеализацияНеЧерезКомиссионера);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(АдресТарыВХранилище)
ПараметрыПриИзмененииТипаНоменклатуры = Новый Структура;
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьРаботы", Истина);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьОтменено", Ложь);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЭтоПереходПраваСобственности",
Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьКодТНВЭД", Объект.НалогообложениеНДС);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСумму");
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСуммуСУчетомСкидкиБонуснымиБаллами");
СтруктураДействийИзмененныеСтроки.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействийИзмененныеСтроки.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
СтруктураДействийИзмененныеСтроки.Вставить("ПриИзмененииТипаНоменклатуры", ПараметрыПриИзмененииТипаНоменклатуры);
СтруктураДействийДобавленныеСтроки = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(СтруктураДействийИзмененныеСтроки);
СтруктураДействийДобавленныеСтроки.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействийДобавленныеСтроки);
Если (ИспользоватьСоглашенияСКлиентами И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашенияСКлиентами И ИспользуетсяЦенообразование25) Тогда
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьУсловияПродаж", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект));
Иначе
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийДобавленныеСтроки.Вставить("ПриИзмененииТипаНоменклатуры", ПараметрыПриИзмененииТипаНоменклатуры);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПодразделениеВСтрокеТЧ", Новый Структура("Подразделение", Объект.Подразделение));
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(
Объект,
АдресТарыВХранилище,
"Товары",
"Номенклатура,Характеристика,Склад",
СтруктураДействийИзмененныеСтроки,
СтруктураДействийДобавленныеСтроки);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗаполнитьСтатусыУказанияСерийСервер();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизиты()
Возврат Новый Структура(
"БезВозвратнойТары",
"Сумма,СуммаНДС,СуммаСНДС,СуммаАвтоматическойСкидки,СуммаРучнойСкидки,СуммаБонусныхБалловКСписаниюВВалюте");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизитыСтрокой()
Возврат "СуммаБезВозвратнойТары,СуммаНДСБезВозвратнойТары,СуммаСНДСБезВозвратнойТары,
|СуммаАвтоматическойСкидкиБезВозвратнойТары,СуммаРучнойСкидкиБезВозвратнойТары,
|СуммаБонусныхБалловКСписаниюВВалютеБезВозвратнойТары";
КонецФункции
&НаСервере
Процедура УстановитьВидимостьСтатусаИДатыПереходаПраваСобственности()
Элементы.ДатаПереходаПраваСобственности.Видимость =
(Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности)
И Объект.Статус <> Перечисления.СтатусыРеализацийТоваровУслуг.КПредоплате;
Элементы.Статус.Видимость =
(НЕ Объект.РеализацияПоЗаказам
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияБезПереходаПраваСобственности
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионераБезПереходаПраваСобственности)
И Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.РеализацияКлиентуРеглУчет
И Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера
И Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПереходПраваСобственности;
КонецПроцедуры
&НаСервере
Процедура ВернутьМногооборотнуюТаруПриИзмененииСервер()
Если Не Объект.ВернутьМногооборотнуюТару Тогда
Объект.ТребуетсяЗалогЗаТару = Ложь;
КонецЕсли;
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Объект);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ТребуетсяЗалогЗаТаруПриИзмененииНаСервере()
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбораВидаЦены()
МассивПараметров = Новый Массив();
МассивПараметров.Добавить(Новый ПараметрВыбора("ВыводитьПроизвольныйВидЦен", Истина));
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.ИспользоватьПриПродаже", Истина));
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.Статус", Перечисления.СтатусыДействияВидовЦен.Действует));
Элементы.ТоварыВидЦены.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметров);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу()
Если Объект.Товары.Количество() = 0 ИЛИ Не Объект.РеализацияПоЗаказам ИЛИ НЕ ИспользоватьЗаказыКлиентов Тогда
Элементы.КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПустаяКартинка;
Элементы.КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПустаяКартинка;
НадписьРасхождениеЗаказ = "";
Если Объект.Товары.Количество()>0 Тогда
Для каждого СтрокаТовары Из Объект.Товары Цикл
СтрокаТовары.РасхождениеЗаказ = 0;
КонецЦикла;
КонецЕсли;
КоличествоРасхождений = 0;
Возврат;
КонецЕсли;
ЭтоПереходПраваСобственности =
(Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности);
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
НадписьРасхождениеЗаказ,
Элементы,
ЭтоПереходПраваСобственности);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьЗависимыеРеквизитыФормыПоЗаказу(Товары, НадписьРасхождениеЗаказ, ЭлементыФормы,
ЭтоПереходПраваСобственности)
КоличествоРасхождений = Товары.Итог("РасхождениеЗаказ");
Если КоличествоРасхождений > 0 Тогда
ЭлементыФормы.КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
ЭлементыФормы.КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
Если ЭтоПереходПраваСобственности Тогда
НадписьРасхождениеЗаказ = СтрЗаменить(НСтр("ru='Строк сверх распоряжения'") + НСтр("ru=': %КоличествоРасхождений%'"), "%КоличествоРасхождений%", КоличествоРасхождений);
Иначе
НадписьРасхождениеЗаказ = СтрЗаменить(НСтр("ru='Строк сверх заказа'") + НСтр("ru=': %КоличествоРасхождений%'"), "%КоличествоРасхождений%", КоличествоРасхождений);
КонецЕсли;
Иначе
ЭлементыФормы.КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПустаяКартинка;
ЭлементыФормы.КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПустаяКартинка;
НадписьРасхождениеЗаказ = "";
КоличествоРасхождений = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОбОкончанииОтвязкиСтрок(КоличествоОтработанныхСтрок, СтрокиОтвязаны = Истина)
Если СтрокиОтвязаны Тогда
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ТекстОповещения = НСтр("ru='В документе от распоряжений отвязано строк (%%Количество%%).'");
Иначе
ТекстОповещения = НСтр("ru='В документе от заказов отвязано строк (%%Количество%%).'");
КонецЕсли;
ТекстОповещения = СтрЗаменить(ТекстОповещения, "%%Количество%%", КоличествоОтработанныхСтрок);
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки отвязаны'"),
,
ТекстОповещения,
БиблиотекаКартинок.Информация32);
Иначе
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки не отвязаны'"),
,
НСтр("ru='Ни одна строка не была отвязана.'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, РеализацияПоЗаказам, ТребуетсяЗалогЗаТару)
Если РеализацияПоЗаказам Тогда
Если ТекущаяСтрока.КодСтроки = 0 Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
Иначе
ТекущаяСтрока.РасхождениеЗаказ = 0;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьОтклоненияОтЗаказа()
Для Каждого ТекСтрока Из Объект.Товары Цикл
ОбновитьОтклоненияОтЗаказаВСтроке(ТекСтрока, Объект.РеализацияПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВопросПользователюПриИзмененииРеквизитаСтроки(ОписаниеОповещения, ТекущаяСтрока)
Если ТекущаяСтрока.КодСтроки = 0 Тогда
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Истина);
Возврат;
КонецЕсли;
Если ТекущаяСтрока.Номенклатура = ПредыдущиеРеквизитыСтроки.Номенклатура
И ТекущаяСтрока.Характеристика = ПредыдущиеРеквизитыСтроки.Характеристика
И (ТекущаяСтрока.Склад = ПредыдущиеРеквизитыСтроки.Склад
Или Не ЗначениеЗаполнено(ПредыдущиеРеквизитыСтроки.Склад)
И ИспользуютсяЗаказыКакСчета()) Тогда
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Истина);
Возврат;
КонецЕсли;
ДополнительныеПараметры = ДополнительныеПараметрыОбработкиЗавершения();
ДополнительныеПараметры.ТекущаяСтрока = ТекущаяСтрока;
ДополнительныеПараметры.ОписаниеОповещения = ОписаниеОповещения;
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ТекстВопроса = НСтр("ru='Редактируемая строка перестанет быть связанной со строкой распоряжения. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Редактируемая строка перестанет быть связанной со строкой заказа. Продолжить?'");
КонецЕсли;
ПоказатьВопрос(
Новый ОписаниеОповещения("ВопросПользователюПриИзмененииРеквизитаСтрокиВопросЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекстВопроса,
РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ВопросПользователюПриИзмененииРеквизитаСтрокиВопросЗавершение(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Да Тогда
ДополнительныеПараметры.ТекущаяСтрока.КодСтроки = 0;
ДополнительныеПараметры.СтрокаОтвязанаОтЗаказа = Истина;
ОбновитьОтклоненияОтЗаказаВСтроке(ДополнительныеПараметры.ТекущаяСтрока, Объект.РеализацияПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОписаниеОповещения, Истина);
Иначе
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры.ТекущаяСтрока, ПредыдущиеРеквизитыСтроки);
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОписаниеОповещения, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ВозможноНазначениеРучнойСкидкиНаценки()
ВозможноНазначениеРучнойСкидкиНаценки = СкидкиНаценкиЗаполнениеКлиент.ВозможноНазначениеРучнойСкидкиНаценки(Объект, "Товары", НСтр("ru='Товары'"));
Если ВозможноНазначениеРучнойСкидкиНаценки И РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам И Объект.Товары.Итог("РасхождениеЗаказ") = 0 Тогда
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ТекстПредупреждения = НСтр("ru='Ручная скидка (наценка) не может быть назначена на строки по распоряжению.'");
Иначе
ТекстПредупреждения = НСтр("ru='Ручная скидка (наценка) не может быть назначена на строки по заказу.'");
КонецЕсли;
ПоказатьПредупреждение(,ТекстПредупреждения);
Возврат Ложь;
Иначе
Возврат ВозможноНазначениеРучнойСкидкиНаценки
КонецЕсли;
КонецФункции
&НаКлиенте
Функция ВозможнаОтменаРучныхСкидокНаценок()
ВозможнаОтменаРучныхСкидокНаценок = СкидкиНаценкиЗаполнениеКлиент.ВозможнаОтменаРучныхСкидокНаценок(Объект, "Товары", НСтр("ru='Товары'"));
Если ВозможнаОтменаРучныхСкидокНаценок И РеализацияСверхЗаказа И Объект.РеализацияПоЗаказам И Объект.Товары.Итог("РасхождениеЗаказ") = 0 Тогда
Если Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ТекстПредупреждения = НСтр("ru='Ручная скидка (наценка) не может быть отменена в строках по распоряжению.'");
Иначе
ТекстПредупреждения = НСтр("ru='Ручная скидка (наценка) не может быть отменена в строках по заказу.'");
КонецЕсли;
ПоказатьПредупреждение(,ТекстПредупреждения);
Возврат Ложь;
Иначе
Возврат ВозможнаОтменаРучныхСкидокНаценок
КонецЕсли;
КонецФункции
&НаСервере
Процедура ОтвязатьОтЗаказаСервер(ВсеСтроки = Истина, ОтвязатьТолькоСтроки = Истина)
Перем КэшированныеЗначения;
Если ВсеСтроки Тогда
КоллекцияСтрок = Объект.Товары;
Иначе
КоллекцияСтрок = Элементы.Товары.ВыделенныеСтроки;
КонецЕсли;
Для Каждого ТекСтрока Из КоллекцияСтрок Цикл
Если ВсеСтроки Тогда
СтрокаТаблицы = ТекСтрока;
ТекСтрока = СтрокаТаблицы.ПолучитьИдентификатор();
Иначе
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
КонецЕсли;
НоменклатураКлиентСервер.ОбновитьКешированныеЗначенияДляУчетаСерий(СтрокаТаблицы,КэшированныеЗначения,ПараметрыУказанияСерий);
СтрокаТаблицы.КодСтроки = 0;
СтрокаТаблицы.Назначение = Неопределено;
СтрокаТаблицы.Обособленно = Ложь;
Если ОтвязатьТолькоСтроки Тогда
СтрокаТаблицы.РасхождениеЗаказ = 1;
Иначе
СтрокаТаблицы.ЗаказКлиента = Неопределено;
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект,ПараметрыУказанияСерий,ТекСтрока,КэшированныеЗначения);
КонецЦикла;
ЗаполнитьДанныеДляРасчетаОплатыБонуснымиБаллами();
ПрименитьОплатуБонуснымиБаллами();
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЗапретаОтгрузкиПартнеру()
СегментыСервер.УстановитьВидимостьЗапретаОтгрузкиПартнеру(Объект.Партнер, Элементы);
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище)
ПрименитьОплатуБонуснымиБаллами(, Истина);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДСВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(ЭтотОбъект, "Номенклатура", СтруктураДействий);
ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
СтрокаТЧТовары = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров, , "КодСтроки");
ОбновитьОтклоненияОтЗаказаВСтроке(СтрокаТЧТовары, Объект.РеализацияПоЗаказам, Объект.ТребуетсяЗалогЗаТару);
ОбрабатываемыеСтроки.Добавить(СтрокаТЧТовары);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ПриИзмененииСкладаВТабличнойЧастиСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ОбновитьОбязательностьСкладаВТЧ();
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОснованиеДляПечати()
Если Не ОснованиеИзменено Тогда
СтруктураОснования = Документы.РеализацияТоваровУслуг.СтруктураОснованияДляПечати(Объект);
ЗаполнитьЗначенияСвойств(Объект, СтруктураОснования);
КонецЕсли;
ТаблицаОснованийДляПечати.Загрузить(Документы.РеализацияТоваровУслуг.ТаблицаОснованийДляПечати(Объект));
КонецПроцедуры
&НаСервере
Процедура ИзменитьЗаголовкиПоВариантуОформленияПродажи()
Если Объект.ВариантОформленияПродажи = Перечисления.ВариантыОформленияПродажи.АктНаПередачуПрав Тогда
АвтоЗаголовок = Ложь;
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Шаблон = НСтр("ru='%1 %2 от %3'");
Иначе
Шаблон = НСтр("ru='%1 (создание)'");
КонецЕсли;
ЗаголовокТекстом = НСтр("ru = 'Акт на передачу прав'");
Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, ЗаголовокТекстом, Объект.Номер, Объект.Дата);
Иначе
АвтоЗаголовок = Истина;
Заголовок = "";
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовкиПоХозяйственнойОперации()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
Элементы.РеализацияПоЗаказу.Заголовок = НСтр("ru = 'Реализация по распоряжению'");
Элементы.РеализацияПоЗаказу.Подсказка = НСтр("ru = 'Распоряжение, по которому оформляется реализация'");
Элементы.РеализацияПоЗаказам.Заголовок = НСтр("ru = 'Реализация по распоряжениям'");
Элементы.РеализацияПоЗаказам.Подсказка = НСтр("ru = 'Распоряжения, по которым оформляется реализация'");
Элементы.ЗаказКлиента.Подсказка = НСтр("ru = 'Распоряжение, по которому оформляется реализация'");
Если СписокЗаказов.Количество() > 1 Тогда
НадписьЗаголовокЗаказы = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Всего распоряжений: %1'"),
СписокЗаказов.Количество());
Элементы.НадписьЗаголовокЗаказыКлиентов.Ширина = 20;
КонецЕсли;
Элементы.КартинкаРасхождениеЗаказ.Подсказка = НСтр("ru = 'Количество строк, не привязанных к распоряжению'");
Элементы.КартинкаРасхождениеЗаказы.Подсказка = НСтр("ru = 'Количество строк, не привязанных к распоряжениям'");
Элементы.ТоварыЗаказКлиента.Заголовок = НСтр("ru = 'Распоряжение'");
Элементы.ТоварыЗаказКлиента.Подсказка = НСтр("ru = 'Распоряжение, по которому оформляется строка реализации'");
Иначе
Элементы.РеализацияПоЗаказу.Заголовок = НСтр("ru = 'Реализация по заказу'");
Элементы.РеализацияПоЗаказу.Подсказка = НСтр("ru = 'Заказ, по которому оформляется реализация'");
Элементы.РеализацияПоЗаказам.Заголовок = НСтр("ru = 'Реализация по заказам'");
Элементы.РеализацияПоЗаказам.Подсказка = НСтр("ru = 'Заказы, по которым оформляется реализация'");
Элементы.ЗаказКлиента.Подсказка = НСтр("ru = 'Заказ клиента, по которому оформляется реализация'");
Если СписокЗаказов.Количество() > 1 Тогда
НадписьЗаголовокЗаказы = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Всего заказов: %1'"),
СписокЗаказов.Количество());
Элементы.НадписьЗаголовокЗаказыКлиентов.Ширина = 15;
КонецЕсли;
Элементы.КартинкаРасхождениеЗаказ.Подсказка = НСтр("ru = 'Количество строк, не привязанных к заказу'");
Элементы.КартинкаРасхождениеЗаказы.Подсказка = НСтр("ru = 'Количество строк, не привязанных к заказам'");
Элементы.ТоварыЗаказКлиента.Заголовок = НСтр("ru = 'Заказ клиента'");
Элементы.ТоварыЗаказКлиента.Подсказка = НСтр("ru = 'Заказ клиента, по которому оформляется строка реализации'");
КонецЕсли;
УстановитьЗаголовокЗаполнитьПоЗаказамОрдерам();
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстСчетаФактурыВыданные()
ПараметрыРегистрации = Документы.РеализацияТоваровУслуг.ПараметрыРегистрацииСчетовФактурВыданных(Объект);
СчетаФактурыВыданныеНаОсновании = УчетНДСУП.СчетаФактурыВыданныеНаОсновании(ПараметрыРегистрации);
ТекстСчетаФактурыВыданные =
ПродажиСервер.СформироватьПредставлениеКомандФормированияСчетаФактурыНаОсновании(
Объект.Ссылка, СчетаФактурыВыданныеНаОсновании);
ФормированиеФискальныхЧековСервер.ОбновитьГиперссылкуПробитияФискальногоЧека(Объект.Ссылка,
ЭтотОбъект, ТекстСчетаФактурыВыданные);
ТекстыПоляДокументыНаОсновании.Добавить(ТекстСчетаФактурыВыданные);
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовокРеквизитовПечати()
Если ПолучитьФункциональнуюОпцию("ИспользоватьАктыНаПередачуПрав")
И Не РеализацияЧерезКомиссионера Тогда
Элементы.РеквизитыПечати.Заголовок =
НСтр("ru = 'Реквизиты печати / Акта на передачу прав'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовокЗаполнитьПоЗаказамОрдерам()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности
И НЕ ИспользоватьРеализациюПоНесколькимЗаказам Тогда
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары из распоряжения'");
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности
И ИспользоватьРеализациюПоНесколькимЗаказам Тогда
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары по распоряжениям'");
ИначеЕсли НЕ ОрдернаяСхемаПриОтгрузке И НЕ ИспользоватьРеализациюПоНесколькимЗаказам И ИспользоватьЗаказыКлиентов Тогда
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары из заказа'");
ИначеЕсли НЕ ОрдернаяСхемаПриОтгрузке И ИспользоватьРеализациюПоНесколькимЗаказам И ИспользоватьЗаказыКлиентов Тогда
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары из заказов'");
ИначеЕсли ОрдернаяСхемаПриОтгрузке И НЕ ИспользоватьЗаказыКлиентов Тогда
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары по ордерам'");
Иначе
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары по заказам/ордерам'");
КонецЕсли;
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Заголовок = ЗаголовокЗаполнить;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДанныеВыбораСкладов(Склад)
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Склады.Ссылка КАК Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка В ИЕРАРХИИ(&ГруппаСкладов)
| И Склады.ЭтоГруппа = ЛОЖЬ
| И Склады.ВыборГруппы <> ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.Запретить)");
Запрос.УстановитьПараметр("ГруппаСкладов", Склад);
МассивСкладов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивСкладов;
КонецФункции
&НаСервере
Процедура УстановитьПараметрыВыбораТоварыСклад()
Элементы.ТоварыСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(Элементы.ТоварыСклад, "Ссылка", ДанныеВыбораСкладов(Объект.Склад));
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовокТоварыГруппаОтправитель()
Элементы.ТоварыГруппаОтправитель.Видимость =
(ИспользоватьСкладыВТабличнойЧастиДокументовПродажи Или ИспользоватьПодразделения);
Элементы.ТоварыГруппаОтправитель.Заголовок = ?(СкладГруппа,
НСтр("ru = 'Отправитель'"),
НСтр("ru = 'Подразделение-отправитель'"));
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеНДСПродажи()
Если Объект.РеализацияПоЗаказам
И Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
Возврат;
КонецЕсли;
ПараметрыЗаполнения = Документы.РеализацияТоваровУслуг.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС, Объект.НалогообложениеНДС, ПараметрыЗаполнения, УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаСервере
Процедура ЗачтенаОплатаСервер(ИмяСобытия, Параметр, Источник)
ВзаиморасчетыСервер.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр);
КонецПроцедуры
&НаСервере
Процедура Запись_КорректировкаРеализацииНаСервере()
ОбновитьТекстСчетаФактурыВыданные();
ОбновитьПризнакЕстьКорректировки();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ОбновитьПризнакЕстьКорректировки();
ПроверитьНаличиеКорректировок(Объект.Ссылка, ЕстьКорректировки);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПризнакЗаполненияСклада()
СкладОбязателен = ?(Объект.Товары.Итог("СкладОбязателен") = 0, 0, 1);
КонецПроцедуры
&НаСервере
Процедура ОбновитьОбязательностьСкладаВТЧ()
ПараметрыПриИзмененииТипаНоменклатуры = Новый Структура;
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьРаботы", Истина);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЕстьОтменено", Ложь);
ПараметрыПриИзмененииТипаНоменклатуры.Вставить("ЭтоПереходПраваСобственности",
Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности"));
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПриИзмененииТипаНоменклатуры", ПараметрыПриИзмененииТипаНоменклатуры);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
СкладОбязателен = ?(Объект.Товары.Итог("СкладОбязателен") = 0, 0, 1);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПодразделение(Команда)
СкладыКлиент.ЗаполнитьПодразделениеВТабличнойЧасти(Объект, ЭтаФорма, Объект.Товары, "Товары",
Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтавкуНДСЗавершение(СтавкаНДС, ДополнительныеПараметры) Экспорт
Если СтавкаНДС = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтавкуНДСНаСервере(СтавкаНДС, КэшированныеЗначения)
ПараметрыЗаполненияСуммыНДСРеглУпр = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСуммыНДСРеглУпр(
Объект.Валюта,
ВалютаРегламентированногоУчета,
ВалютаУправленческогоУчета);
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ОчиститьСуммуВзаиморасчетов");
СтруктураДействий.Вставить("УстановитьСуммуНДСРеглУпр", ПараметрыЗаполненияСуммыНДСРеглУпр);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ВыделенныеСтроки = РаботаСТабличнымиЧастямиКлиентСервер.ЭлементыКоллекции(
Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
СтрокиНаУдаление = Новый Массив;
Для каждого СтрокаТабличнойЧасти Из ВыделенныеСтроки Цикл
Если (РеализацияСверхЗаказа
И СтрокаТабличнойЧасти.КодСтроки <> 0
И Не ОтклонениеОтУсловийПродаж)
Или (Не РеализацияСверхЗаказа И Не ОтклонениеОтУсловийПродаж)
Или (СтрокаТабличнойЧасти.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара И Объект.ВернутьМногооборотнуюТару) Тогда
СтрокиНаУдаление.Добавить(СтрокаТабличнойЧасти);
Продолжить;
КонецЕсли;
СтрокаТабличнойЧасти.СтавкаНДС = СтавкаНДС;
КонецЦикла;
Для каждого СтрокаНаУдаление Из СтрокиНаУдаление Цикл
ВыделенныеСтроки.Удалить(ВыделенныеСтроки.Найти(СтрокаНаУдаление));
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ВыделенныеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьОбработчикОжиданияПолучениеПеревозчиков()
Если ДанныеПоФоновомуЗаданию.Свойство("ИдентификаторЗадания") Тогда
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбновитьСписокПеревозчиковОповещение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(
ДанныеПоФоновомуЗаданию, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСписокПеревозчиковОповещение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
ДоставкаТоваровКлиент.ОбновитьСписокПеревозчиков(Элементы.ПеревозчикПартнер.СписокВыбора, Результат);
ОбновитьОтображениеДанных(Элементы.ПеревозчикПартнер);
ДанныеПоФоновомуЗаданию = Новый Структура;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовБонуснойПрограммыЛояльности()
Элементы.ГруппаТоварыБонусныеБаллы.Видимость = ИспользоватьБонусныеПрограммыЛояльности;
Элементы.ТоварыСуммаБонусныхБалловКСписаниюВВалюте.Видимость = ИспользоватьБонусныеПрограммыЛояльности;
Элементы.ТоварыСуммаНачисленныхБонусныхБалловВВалюте.Видимость = ИспользоватьБонусныеПрограммыЛояльности;
КонецПроцедуры
&НаСервере
Функция АдресТабличнойЧастиТовары()
Если ИспользоватьРасширенныеВозможностиЗаказаКлиента Тогда
МассивСтрок = Новый Массив();
Для Каждого Строка Из Объект.Товары Цикл
Если Не Строка.КодСтроки = 0 Тогда
Продолжить;
КонецЕсли;
МассивСтрок.Добавить(Строка);
КонецЦикла;
ТоварыДляВыгрузки = Объект.Товары.Выгрузить(МассивСтрок);
Иначе
ТоварыДляВыгрузки = Объект.Товары.Выгрузить();
КонецЕсли;
Возврат ПоместитьВоВременноеХранилище(ТоварыДляВыгрузки, УникальныйИдентификатор);
КонецФункции
&НаСервере
Процедура УстановитьВидимостьКомандыЗаполненияВидаЦенПоДоговору()
Элементы.ТоварыЗаполнитьЦеныПоДоговору.Видимость = РеализацияЧерезКомиссионера;
Элементы.ТоварыЗаполнитьЦеныПоСоглашению.Видимость = Не РеализацияЧерезКомиссионера И ИспользоватьСоглашенияСКлиентами;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ВидЦеныДоговора(Договор)
СтруктураПараметров = ЦеныПредприятияЗаполнениеСервер.НовыйПараметрыПроверкиВидаЦенДоговора();
СтруктураПараметров.ПолеВидаЦен = "ВидЦенПродажи";
Если Не ЗначениеЗаполнено(Договор) Тогда
Возврат СтруктураПараметров;
КонецЕсли;
РеквизитыВидаЦен = Новый Структура();
РеквизитыВидаЦен.Вставить(СтруктураПараметров.ПолеВидаЦен);
РеквизитыВидаЦен.Вставить("ЦенаВключаетНДС", СтруктураПараметров.ПолеВидаЦен + ".ЦенаВключаетНДС");
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Договор, РеквизитыВидаЦен);
СтруктураПараметров.ВидЦены = ЗначенияРеквизитов[СтруктураПараметров.ПолеВидаЦен];
Если ЗначениеЗаполнено(СтруктураПараметров.ВидЦены) Тогда
СтруктураПараметров.ЦенаВключаетНДС = ЗначенияРеквизитов.ЦенаВключаетНДС;
КонецЕсли;
Возврат СтруктураПараметров;
КонецФункции
&НаСервере
Процедура УстановитьСвязиПараметровВыбораДоговора()
СвязиПараметровДоговора = Новый Массив;
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.Контрагент"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.КомиссионныеПродажи25", "РеализацияЧерезКомиссионера"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.ХозяйственнаяОперация", "ХозяйственнаяОперацияДоговора"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Партнер", "Объект.Партнер"));
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Соглашение", "Объект.Соглашение",
РежимИзмененияСвязанногоЗначения.НеИзменять));
Если Не РеализацияЧерезКомиссионера Тогда
СвязиПараметровДоговора.Добавить(Новый СвязьПараметраВыбора("Отбор.ВалютаВзаиморасчетов", "Объект.ВалютаВзаиморасчетов"));
КонецЕсли;
Элементы.Договор.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметровДоговора);
СвязиПараметров = Новый Массив;
СвязиПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.ДоговорСКомиссионером", "Объект.Договор"));
СвязиПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Контрагент", "Объект.КлиентКонтрагент"));
СвязиПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Партнер", "Объект.КлиентПартнер"));
СвязиПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.КомиссионерКонтрагент", "Объект.Контрагент"));
СвязиПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.КомиссионерПартнер", "Объект.Партнер"));
СвязиПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация",
РежимИзмененияСвязанногоЗначения.НеИзменять));
Если Не РеализацияЧерезКомиссионера Тогда
СвязиПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.ВалютаВзаиморасчетов", "Объект.ВалютаВзаиморасчетов"));
КонецЕсли;
Элементы.КлиентДоговор.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметров);
КонецПроцедуры
&НаСервере
Процедура УстановитьСвязиПараметровВыбораВидаЦены()
СвязиПараметровВидаЦены = Новый Массив;
СвязиПараметровВидаЦены.Добавить(Новый СвязьПараметраВыбора("ИспользоватьСоглашенияСКлиентами", "ИспользоватьСоглашенияСКлиентами"));
СвязиПараметровВидаЦены.Добавить(Новый СвязьПараметраВыбора("ИспользуетсяЦенообразование25", "ИспользуетсяЦенообразование25"));
СвязиПараметровВидаЦены.Добавить(Новый СвязьПараметраВыбора("Партнер", "Объект.Партнер"));
СвязиПараметровВидаЦены.Добавить(Новый СвязьПараметраВыбора("Отбор.ЦенаВключаетНДС", "Объект.ЦенаВключаетНДС"));
Если Не РеализацияЧерезКомиссионера Тогда
СвязиПараметровВидаЦены.Добавить(Новый СвязьПараметраВыбора("Соглашение", "Объект.Соглашение"));
КонецЕсли;
Элементы.ТоварыВидЦены.СвязиПараметровВыбора = Новый ФиксированныйМассив(СвязиПараметровВидаЦены);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВидЦеныПоДоговору()
ВидЦеныПоДоговору = ?(РеализацияЧерезКомиссионера И ЗначениеЗаполнено(Объект.Договор),
ВидЦеныДоговора(Объект.Договор).ВидЦены,
Неопределено);
КонецПроцедуры
#КонецОбласти
#Область КонтрольНесогласованныхИзменений
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент)
Если Элемент.Имя = "Партнер" Тогда
ПартнерПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Дата" Тогда
ДатаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Соглашение" Тогда
СоглашениеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Договор" Тогда
ДоговорПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЦенаВключаетНДС" Тогда
ЦенаВключаетНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Организация" Тогда
ОрганизацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Контрагент" Тогда
КонтрагентПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "НалогообложениеНДС" Тогда
НалогообложениеНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "РеализацияПоЗаказам" Тогда
РеализацияПоЗаказамПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "РеализацияПоЗаказу" Тогда
РеализацияПоЗаказамПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВернутьМногооборотнуюТару" Тогда
ВернутьМногооборотнуюТаруПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТребуетсяЗалогЗаТару" Тогда
ТребуетсяЗалогЗаТаруПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНоменклатура" Тогда
ТоварыНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыХарактеристика" Тогда
ТоварыХарактеристикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыОбособленно" Тогда
ТоварыОбособленноПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСерия" Тогда
ТоварыСерияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыКоличествоУпаковок" Тогда
ТоварыКоличествоУпаковокПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыУпаковка" Тогда
ТоварыУпаковкаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыВидЦены" Тогда
ТоварыВидЦеныПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыЦена" Тогда
ТоварыЦенаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыПроцентРучнойСкидки" Тогда
ТоварыПроцентРучнойСкидкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСуммаРучнойСкидки" Тогда
ТоварыСуммаРучнойСкидкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСумма" Тогда
ТоварыСуммаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСуммаНДС" Тогда
ТоварыСуммаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСтавкаНДС" Тогда
ТоварыСтавкаНДСПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСклад" Тогда
ТоварыСкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Склад" Тогда
СкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ХозяйственнаяОперация" Тогда
ХозяйственнаяОперацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Статус" Тогда
СтатусПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНоменклатураПартнера" Тогда
ТоварыНоменклатураПартнераПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Подразделение" Тогда
ПодразделениеПриИзменении(Элемент);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда)
Если Команда.Имя = "ПоискПоШтрихкоду" Тогда
ПоискПоШтрихкодуВыполнить(Команда);
ИначеЕсли Команда.Имя = "ЗагрузитьДанныеИзТСД" Тогда
ЗагрузитьДанныеИзТСД(Команда);
ИначеЕсли Команда.Имя = "РазбитьСтроку" Тогда
РазбитьСтроку(Команда);
ИначеЕсли Команда.Имя = "ОткрытьПодбор" Тогда
ОткрытьПодбор(Команда);
ИначеЕсли Команда.Имя = "ДополнитьМногооборотнойТарой" Тогда
ДополнитьМногооборотнойТарой(Команда);
ИначеЕсли Команда.Имя = "НазначитьАвтоматическиеСкидки" Тогда
НазначитьАвтоматическиеСкидки(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьЦеныПоСоглашению" Тогда
ЗаполнитьЦеныПоСоглашению(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьЦеныВыделенныхСтрокПоВидуЦен" Тогда
ЗаполнитьЦеныВыделенныхСтрокПоВидуЦен(Команда);
ИначеЕсли Команда.Имя = "ОтменитьРучныеСкидки" Тогда
ОтменитьРучныеСкидки(Команда);
ИначеЕсли Команда.Имя = "НазначитьРучнуюСкидку" Тогда
НазначитьРучнуюСкидку(Команда);
ИначеЕсли Команда.Имя = "НазначитьРучнуюСкидкуВыделенныхСтрок" Тогда
НазначитьРучнуюСкидкуДляВыделенныхСтрок(Команда);
ИначеЕсли Команда.Имя = "ПодобратьТоварыПоЗаказамОрдерам" Тогда
ПодобратьТоварыПоЗаказамОрдерам(Команда);
ИначеЕсли Команда.Имя = "РассчитатьСкидкиНаценки" Тогда
РассчитатьСкидкиНаценки(Команда);
ИначеЕсли Команда.Имя = "ЗагрузитьИзВнешнегоФайла" Тогда
ЗагрузитьИзВнешнегоФайла(Команда);
ИначеЕсли Команда.Имя = "СчитатьКартуЛояльности" Тогда
СчитатьКартуЛояльности(Команда);
ИначеЕсли Команда.Имя = "ПолучитьВес" Тогда
ПолучитьВес(Команда);
ИначеЕсли Команда.Имя = "ПроверитьКоличествоВДокументе" Тогда
ПроверитьКоличествоВДокументе(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьСкладВВыделенныхСтроках" Тогда
ЗаполнитьСкладВВыделенныхСтроках(Команда);
ИначеЕсли Команда.Имя = "ОтвязатьОтЗаказа" Тогда
ОтвязатьОтЗаказа(Команда);
ИначеЕсли Команда.Имя = "ВставитьСтроки" Тогда
ВставитьСтроки(Команда);
ИначеЕсли Команда.Имя = "СоставНабора" Тогда
СоставНабора(Команда);
ИначеЕсли Команда.Имя = "УстановитьОтметкуОбособленно" Тогда
УстановитьОтметкуОбособленно(Команда);
ИначеЕсли Команда.Имя = "СнятьОтметкуОбособленно" Тогда
СнятьОтметкуОбособленно(Команда);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ)
Если Элемент.Имя = "Товары" Тогда
ТоварыПередНачаломИзменения(Элемент, Отказ);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ)
Если Элемент.Имя = "Товары" Тогда
ТоварыПередУдалением(Элемент, Отказ);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Если Элемент.Имя = "Товары" Тогда
ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ВыполнитьПроверкиПередИзменениемСтатуса()
РеквизитМожноИзменить = Ложь;
ДополнительныеПараметры = Новый Структура;
Оповещение = Новый ОписаниеОповещения(
"РезультатВопросаЗавершение", ЭтотОбъект, ДополнительныеПараметры);
Если СтруктураДействийКонтрольНеСогласованныхИзменений = Неопределено
Или СтруктураДействийКонтрольНеСогласованныхИзменений.ОжидаетсяОповещение Тогда
ВыполнитьОбработкуОповещения(Оповещение, "ИзменитьРеквизит");
РеквизитМожноИзменить = Истина;
КонецЕсли;
ОчиститьСообщения();
Если ЕстьКорректировки И ИспользоватьКорректировкиРеализаций
И Не ЕстьПравоДобавленияКорректировок() Тогда
ТекстСообщения = НСтр("ru='На основании документа введена корректировка реализации.
|Недостаточно прав для создания корректировки реализации.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
ИначеЕсли ЕстьКорректировки И ИспользоватьКорректировкиРеализаций Тогда
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить("ВвестиКорректировку", НСтр("ru='Ввести корректировку'"));
СписокКнопок.Добавить("ОтменитьИзменения", НСтр("ru='Отмена'"));
ПоказатьВопрос(
Оповещение,
НСтр("ru='На основании документа введена корректировка реализации.
|Изменение исходного документа запрещено.'"),
СписокКнопок,
,
"ВвестиКорректировку");
Иначе
ВыполнитьОбработкуОповещения(Оповещение, "ИзменитьРеквизит");
РеквизитМожноИзменить = Истина;
КонецЕсли;
Возврат РеквизитМожноИзменить;
КонецФункции
&НаКлиенте
Процедура РезультатВопросаЗавершение(КодОтвета, ДополнительныеПараметры) Экспорт
Если КодОтвета = "ВвестиКорректировку" Тогда
ОткрытьФорму("Документ.КорректировкаРеализации.ФормаОбъекта", Новый Структура("Основание", Объект.Ссылка));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУстановитьВидимостьСерийДоступностьПерезаполнитьПоОтгрузке()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.РеализацияТоваровУслуг));
ЗаполнитьСтатусыУказанияСерийСервер();
УстановитьВидимостьЭлементовСерий();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
ОбщегоНазначенияУТКлиент.ВернутьПредыдущееЗначениеРеквизита(ЭтаФорма, Элемент);
Возврат;
Иначе
ОбщегоНазначенияУТКлиент.СохранитьЗначениеРеквизита(ЭтаФорма, Элемент);
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Нажатие_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Нажатие.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если СтруктураДействийКонтрольНеСогласованныхИзменений = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтруктураДействийКонтрольНеСогласованныхИзменений.ЗначенияРеквизитов[Элемент.Имя], Элемент.ТекущиеДанные);
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломИзменения.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередУдалением_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередУдалением.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломДобавления_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ, Копирование, Родитель, Группа)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломДобавления.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса()
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбщегоНазначенияУТКлиент.ПослеИзмененияРеквизитаЗависящегоОтСтатуса(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьРезультатПроверкиКонтрагентов()
ПроверкаКонтрагентовКлиент.ОбработатьРезультатПроверкиКонтрагентовВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт
ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
ПроверкаКонтрагентовКлиент.ПроверитьКонтрагентовВДокументеПоКнопке(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ФискальнаяОперация
&НаКлиенте
Процедура ФискальнаяОперацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
Если НавигационнаяСсылка = "ПробитьЧек" Тогда
СтандартнаяОбработка = Ложь;
Если НЕ ШтрихкодыУпаковокЗаполнены() Тогда
Возврат;
КонецЕсли;
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыРеализацийТоваровУслуг.Отгружено") Тогда
ФормированиеФискальныхЧековКлиент.ОтобразитьЧек(
ЭтотОбъект,
Новый ОписаниеОповещения("ФискальнаяОперацияЗавершение", ЭтотОбъект));
Иначе
СтрШаблон = СтрШаблон(
НСтр("ru = 'Пробитие чека возможно только для документов в статусе ""%1""'"),
ПредопределенноеЗначение("Перечисление.СтатусыРеализацийТоваровУслуг.Отгружено"));
ОбщегоНазначенияКлиент.СообщитьПользователю(СтрШаблон,, "Статус", "Объект");
КонецЕсли;
ИначеЕсли "ОткрытьЗаписьФискальнойОперации" = НавигационнаяСсылка Тогда
СтандартнаяОбработка = Ложь;
ПодключаемоеОборудованиеУТКлиент.ОткрытьЗаписьФискальнойОперации(ЭтотОбъект, Объект.Ссылка);
ИначеЕсли "НастроитьОборудование" = НавигационнаяСсылка Тогда
СтандартнаяОбработка = Ложь;
ОткрытьФорму("Обработка.ПредпросмотрЧека.Форма.ОшибкаПодключенияККТ");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ФискальнаяОперацияЗавершение(Результат, ДополнительныеПараметры) Экспорт
ОбновитьТекстДокументыНаОсновании();
КонецПроцедуры
#КонецОбласти
&НаСервере
Процедура ПередПодборомТоваровИзЗаказаСервер(МассивКодовСтрок, АдресТоваров)
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
Если СтрокаТЧ.КодСтроки <> 0 И ЗначениеЗаполнено(СтрокаТЧ.ЗаказКлиента) Тогда
МассивКодовСтрок.Добавить(Новый Структура("КодСтроки,ЗаказКлиента", СтрокаТЧ.КодСтроки, СтрокаТЧ.ЗаказКлиента));
КонецЕсли;
КонецЦикла;
АдресТоваров = ПоместитьВоВременноеХранилище(Объект.Товары.Выгрузить(), УникальныйИдентификатор);
КонецПроцедуры
&НаСервере
Процедура ПодготовитьДанныеПоШтрихкодыУпаковок(АдресШтрихкодовУпаковок)
АдресШтрихкодовУпаковок = ПоместитьВоВременноеХранилище(Объект.ШтрихкодыУпаковок.Выгрузить(), УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура РеализацияПоЗаказамПриИзмененииПослеВыбора(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Объект.РеализацияПоЗаказам = Ложь;
Возврат;
КонецЕсли;
ЗаказКлиента = Результат.ЗаказКлиента;
Объект.ПорядокРасчетов = Результат.ПорядокРасчетов;
Если Объект.Товары.Количество() = 0 Тогда
ТекстВопроса = СтрЗаменить(НСтр("ru='Список Товары будет заполнен остатками неоформленных товаров по документу %ЗаказКлиента%. Продолжить?'"), "%ЗаказКлиента%", ЗаказКлиента);
ИначеЕсли Объект.ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПереходПраваСобственности") Тогда
ТекстВопроса = СтрЗаменить(НСтр("ru='Строки в списке Товары будут привязаны к строкам документа %ЗаказКлиента%. Строки, которые невозможно привязать к строкам распоряжения, будут удалены. Продолжить?'"), "%ЗаказКлиента%", ЗаказКлиента);
Иначе
ТекстВопроса = СтрЗаменить(НСтр("ru='Строки в списке Товары будут привязаны к строкам документа %ЗаказКлиента%. Строки, которые невозможно привязать к строкам заказа, будут удалены. Продолжить?'"), "%ЗаказКлиента%", ЗаказКлиента);
КонецЕсли;
РеализацияПоЗаказамПриИзмененииФрагмент(ЗаказКлиента, ТекстВопроса);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКомандПоЗаказу()
ДокументыОснования = Объект.Товары.Выгрузить(, "ЗаказКлиента").ВыгрузитьКолонку("ЗаказКлиента");
ДокументыПоВидам = ПродажиСервер.ДокументыПоПризнакуНаличияОбъектовРасчетов(ДокументыОснования);
ЕстьДокументыСОбъектамиРасчетов = ДокументыПоВидам.ДокументыСОбъектамиРасчетов.Количество() > 0;
ВидимостьКомандЗакрытияЗаказов = ИспользоватьРасширенныеВозможностиЗаказаКлиента
И Объект.РеализацияПоЗаказам
И ЕстьДокументыСОбъектамиРасчетов;
Элементы.ЗакрытьЗаказ.Видимость = ВидимостьКомандЗакрытияЗаказов;
Элементы.ЗакрытьЗаказы.Видимость = ВидимостьКомандЗакрытияЗаказов;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказатели(Форма)
КоллекцияТовары = Форма.Объект.Товары;
Форма.СуммаВсего = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаСНДС"),
КоллекцияТовары.Итог("СуммаСНДСБезВозвратнойТары"));
Форма.СуммаНДС = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаНДС"),
КоллекцияТовары.Итог("СуммаНДСБезВозвратнойТары"));
СуммаАвтоСкидки = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаАвтоматическойСкидки"),
КоллекцияТовары.Итог("СуммаАвтоматическойСкидкиБезВозвратнойТары"));
СуммаРучнойСкидки = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаРучнойСкидки"),
КоллекцияТовары.Итог("СуммаРучнойСкидкиБезВозвратнойТары"));
СуммаСуммаБонусныхБалловКСписаниюВВалюте = ?(Форма.Объект.ТребуетсяЗалогЗаТару,
КоллекцияТовары.Итог("СуммаБонусныхБалловКСписаниюВВалюте"),
КоллекцияТовары.Итог("СуммаБонусныхБалловКСписаниюВВалютеБезВозвратнойТары"));
Форма.СуммаСкидки = СуммаАвтоСкидки + СуммаРучнойСкидки + СуммаСуммаБонусныхБалловКСписаниюВВалюте;
Форма.СуммаЗалогаЗаТару = ?(Форма.Объект.ТребуетсяЗалогЗаТару, КоллекцияТовары.Итог("СуммаСНДС")
-КоллекцияТовары.Итог("СуммаСНДСБезВозвратнойТары"),0);
Если УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаПродажи(Форма.Объект.НалогообложениеНДС) Тогда
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДС;
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаСНДС;
Иначе
Форма.Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДС;
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаБезНДС;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ИспользуютсяЗаказыКакСчета()
МассивЗаказов = Объект.Товары.Выгрузить(, "ЗаказКлиента").ВыгрузитьКолонку("ЗаказКлиента");
МассивЗаказов.Добавить(Объект.ЗаказКлиента);
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивЗаказов", МассивЗаказов);
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаДокументов.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет
|ПОМЕСТИТЬ ТаблицаРеквизитовЗаказов
|ИЗ
| Документ.ЗаказКлиента КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В (&МассивЗаказов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаДокументов.ЭтоЗаказКакСчет
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ТаблицаДокументов
|ГДЕ
| ТаблицаДокументов.Ссылка В (&МассивЗаказов)
|;
|
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА КАК ЕстьЗаписи
|ИЗ
| ТаблицаРеквизитовЗаказов КАК ТаблицаРеквизитовЗаказов
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(ТаблицаРеквизитовЗаказов.ЭтоЗаказКакСчет) > 0
| И МИНИМУМ(ТаблицаРеквизитовЗаказов.ЭтоЗаказКакСчет) = ИСТИНА";
Возврат Не Запрос.Выполнить().Пустой();
КонецФункции
&НаКлиенте
Процедура ОбработатьИзменениеАдреса(Элемент, ИмяРеквизитаАдреса)
ИменаРеквизитов = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки(ИмяРеквизитаАдреса);
Если ПустаяСтрока(Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки]) Тогда
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение]);
Иначе
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение]);
АдресДоставкиПриИзмененииНаСервере(
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура АдресДоставкиПриИзмененииНаСервере(Адрес, АдресЗначение, АдресЗначенияПолей)
АдресВСвободнойФорме = УправлениеКонтактнойИнформацией.АдресВведенВСвободнойФорме(АдресЗначение);
Если НЕ АдресВСвободнойФорме Тогда
ДанныеСтраны = УправлениеКонтактнойИнформацией.СтранаАдресаКонтактнойИнформации(АдресЗначение);
НоваяСтруктураАдреса = УправлениеКонтактнойИнформацией.СведенияОбАдресе();
НоваяСтруктураАдреса.Представление = Адрес;
НоваяСтруктураАдреса.Страна = ДанныеСтраны.Наименование;
НоваяСтруктураАдреса.КодСтраны = ДанныеСтраны.Код;
АдресЗначение = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(
НоваяСтруктураАдреса,
Перечисления.ТипыКонтактнойИнформации.Адрес);
УстановитьТипАдресаВСвободнойФорме(АдресЗначение);
КонецЕсли;
АдресЗначенияПолей = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(
АдресЗначение,
Адрес,
Перечисления.ТипыКонтактнойИнформации.Адрес);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УстановитьТипАдресаВСвободнойФорме(АдресДоставкиЗначение)
СтрокаЗаменяемыйТип = """addressType"": ""Административно-территориальный""";
СтрокаСвободныйТип = """addressType"": ""ВСвободнойФорме""";
АдресДоставкиЗначение = СтрЗаменить(АдресДоставкиЗначение, СтрокаЗаменяемыйТип, СтрокаСвободныйТип);
КонецПроцедуры
#Область ОбработчикиСобытий
&НаКлиенте
Процедура ДекорацияСервисДоставкиСоздатьНажатие(Элемент)
СервисДоставкиКлиентПереопределяемый.ОткрытьФормуНовогоЗаказаНаДоставку(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиСписокЗаказовНажатие(Элемент)
СервисДоставкиКлиент.ОткрытьФормуСервисаДоставкиИзОснования(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСервисДоставкиДобавитьВЗаказНаДоставкуНажатие(Элемент)
СервисДоставкиКлиент.ОткрытьФормуСервисаДоставкиИзОснования(ЭтотОбъект, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСервисДоставкиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Форма", ЭтотОбъект);
ПараметрыОткрытия.Вставить("ДокументОснование", Объект.Ссылка);
СервисДоставкиКлиент.ОткрытьФормуПодчиненныхЗаказовНаДоставку(ПараметрыОткрытия);
КонецПроцедуры
&НаКлиенте
Процедура СпособМестоДоставкиПеревозчикПриИзменении(Элемент)
СпособМестоДоставкиПеревозчикПриИзмененииСервер(Элемент.Имя);
СкидкиНаценкиЗаполнениеКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура КурьерНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СкладыКлиент.ОткрытьФормуВыбораСотрудникаМагазина(ЭтаФорма, Элемент.Имя, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СборщикНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СкладыКлиент.ОткрытьФормуВыбораСотрудникаМагазина(ЭтаФорма, Элемент.Имя, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОсобыеУсловияПеревозкиПриИзменении(Элемент)
ОсобыеУсловияПеревозкиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьИнформациюПоДоставкеКонтактами(Команда)
ДополнитьИнформациюПоДоставкеКонтактамиСервер();
КонецПроцедуры
&НаСервере
Процедура ОсобыеУсловияПеревозкиПриИзмененииСервер()
ДоставкаТоваров.ОсобыеУсловияПеревозкиПриИзменении(Элементы, Объект);
КонецПроцедуры
&НаСервере
Процедура ДополнитьИнформациюПоДоставкеКонтактамиСервер()
ДоставкаТоваров.ДополнитьИнформациюПоДоставкеКонтактами(Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьПроверкиИЗадатьВопросыПередЗаписью(Отказ, ПараметрыЗаписи)
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
ДополнительныеПараметры.Вставить("ЭтотОбъект", ЭтотОбъект);
Если Не Объект.РеализацияПоЗаказам Тогда
Отказ = Истина;
МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество,Склад",
Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение", ЭтотОбъект, ДополнительныеПараметры));
Иначе
Если ИспользоватьАвтоматическиеСкидкиВПродажах
И Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию")
И Не РеализацияЧерезКомиссионера Тогда
Если Не Объект.СкидкиРассчитаны И СкидкиИзменились() Тогда
Отказ = Истина;
СкидкиНаценкиЗаполнениеКлиент.ПредложитьПользователюРассчитатьСкидки(
Новый ОписаниеОповещения(
"ПредложитьПользователюРассчитатьСкидкиЗавершение",
ЭтотОбъект,
ДополнительныеПараметры)
);
Иначе
Объект.СкидкиРассчитаны = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Не Отказ Тогда
ПередЗаписьюНаКлиентеСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение(Результат, ДополнительныеПараметры) Экспорт
Отказ = Ложь;
Если ИспользоватьАвтоматическиеСкидкиВПродажах
И Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию")
И Не РеализацияЧерезКомиссионера Тогда
Если Не Объект.СкидкиРассчитаны И СкидкиИзменились() Тогда
Отказ = Истина;
СкидкиНаценкиЗаполнениеКлиент.ПредложитьПользователюРассчитатьСкидки(
Новый ОписаниеОповещения(
"ПредложитьПользователюРассчитатьСкидкиЗавершение",
ЭтотОбъект,
ДополнительныеПараметры)
);
Возврат;
Иначе
Объект.СкидкиРассчитаны = Истина;
КонецЕсли;
КонецЕсли;
ПередЗаписьюНаКлиентеСервер();
ДополнительныеПараметры.Вставить("Отказ", Отказ);
ЗаполнитьПоказателиЭтаповОплатыКлиент();
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоказателиЭтаповОплатыКлиент()
Если Объект.ХозяйственнаяОперация <> ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию") Тогда
Если Объект.РеализацияПоЗаказам И ЗначениеЗаполнено(Объект.ЗаказКлиента) Тогда
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если Не ЗначениеЗаполнено(ТекСтрока.ЗаказКлиента) Тогда
ТекСтрока.ЗаказКлиента = Объект.ЗаказКлиента;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПредложитьПользователюРассчитатьСкидкиЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
Отказ = Ложь;
Если ОтветНаВопрос = КодВозвратаДиалога.ОК Тогда
Отказ = Ложь;
ПрименитьИзмененияСкидокНаценокНаКлиенте(Отказ);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Иначе
Возврат;
КонецЕсли;
ПередЗаписьюНаКлиентеСервер();
ДополнительныеПараметры.Вставить("Отказ", Отказ);
ЗаполнитьПоказателиЭтаповОплатыКлиент();
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,, Истина);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаКлиентеСервер()
ВзаиморасчетыВызовСервера.ФормаПередЗаписьюНаКлиентеСервер(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура СпособМестоДоставкиПеревозчикПриИзмененииСервер(ЭлементИмя)
ОбновитьТекстДокументыНаОсновании();
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, ЭлементИмя, Объект);
КонецПроцедуры
&НаСервере
Функция ШтрихкодыУпаковокЗаполнены()
Возврат ФормированиеФискальныхЧековСервер.ШтрихкодыУпаковокЗаполнены(Объект);
КонецФункции
&НаСервере
Процедура ПриИзмененииРеквизитовПечатиРеализацииСервер(ЗаполнитьУстановитьРеквизитыДоставки)
Если ЗаполнитьУстановитьРеквизитыДоставки Тогда
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, "Грузополучатель", Объект);
КонецЕсли;
ОбновитьТекстДокументыНаОсновании();
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область Локализация
&НаКлиенте
Процедура ОбработкаОповещенияЛокализация(ИмяСобытия, Параметр, Источник)
Если ТранспортнаяНакладнаяКлиент.ЭтоОповещениеЗаписиТранспортнойНакладной(ЭтотОбъект, ИмяСобытия, Параметр, Источник) Тогда
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
Если ИмяСобытия = "ПроверитьКоличествоВДокументе"
И ТипЗнч(Источник) = Тип("ФормаКлиентскогоПриложения")
И Источник.УникальныйИдентификатор = УникальныйИдентификатор Тогда
ПроверитьКоличествоВДокументеКлиент();
КонецЕсли;
Если ИмяСобытия = "Запись_ДокументыЭПД" Тогда
ОбновитьТекстЭПД();
КонецЕсли;
Возврат;
КонецПроцедуры
&НаСервере
Процедура ОбновитьБанковскийСчетКонтрагента()
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент, Объект.БанковскийСчетОрганизации);
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстЭПД()
Если Элементы.ГруппаСостояниеЭПД.Видимость Тогда
КоличествоЭПД = ОбменСГИСЭПДПереопределяемый.КоличествоЭлектронныхДокументов(Объект.Ссылка);
Элементы.ДекорацияЭПД.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ЭПД (%1)", КоличествоЭПД);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстДокументыНаОснованииЛокализация()
Если Не РеализацияЧерезКомиссионера
И Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
ТекстТТН = Документы.ТранспортнаяНакладная.ТекстТТН(ЭтотОбъект);
ТекстыПоляДокументыНаОсновании.Добавить(ТекстТТН);
КонецЕсли;
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПереходПраваСобственности Тогда
ЗаявлениеОВвозеТоваровОтПокупателя = Документы.ЗаявлениеОВвозеТоваровПолученное.ТекстЗаявленияОВвозеТоваровОтПокупателя(ЭтотОбъект);
ТекстыПоляДокументыНаОсновании.Добавить(ЗаявлениеОВвозеТоваровОтПокупателя);
КонецЕсли;
ПараметрыРегистрацииУведомленийОПеремещении = Документы.РеализацияТоваровУслуг.ПараметрыРегистрацииУведомленийОПеремещенииПрослеживаемыхТоваров(Объект);
УведомленияОПеремещенииНаОсновании = УчетПрослеживаемыхТоваровЛокализация.УведомленияОПеремещенииПрослеживаемыхТоваровПоДокументуРеализации(ПараметрыРегистрацииУведомленийОПеремещении);
ТекстыПоляДокументыНаОсновании.Добавить(УведомленияОПеремещенииНаОсновании.ПредставлениеРаспоряженияКОформлению);
ТекстыПоляДокументыНаОсновании.Добавить(УведомленияОПеремещенииНаОсновании.ПредставлениеУведомленияОПеремещении);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ТекстДокументыНаОснованииОбработкаНавигационнойСсылкиЛокализация(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ТранспортнаяНакладнаяКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
УчетНДСРФКлиент.ОбработкаНавигационнойСсылкиЗаявленияОВвозеТоваровПолученного(ЭтотОбъект, Элемент,
НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
ПараметрыРегистрацииУведомленийОПеремещении = ПараметрыРегистрацииУведомленийОПеремещенииПрослеживаемыхТоваровСервер(Объект);
ПрослеживаемостьФормыКлиентПереопределяемый.ОбработкаНавигационнойСсылкиУведомленияОПеремещенииПрослеживаемыхТоваров(
ЭтотОбъект,
НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка,
ПараметрыРегистрацииУведомленийОПеремещении);
Возврат;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьВидимостьЭлементовСборкиИДоставки()
ДатаРасчетаНастроекСклада = Объект.Дата;
НастройкиСклада = СкладыСервер.НастройкиСкладаДляСборкиИДоставки(Объект.Склад, ДатаРасчетаНастроекСклада);
ЕстьПоддержкаДоставкиСвоимиКурьерами = Ложь;
ЕстьПоддержкаСборкиЗаказов = Ложь;
Если НастройкиСклада <> Неопределено Тогда
ЕстьПоддержкаДоставкиСвоимиКурьерами = НастройкиСклада.ВМагазинеПоддерживаетсяДоставкаСвоимиКурьерами;
ЕстьПоддержкаСборкиЗаказов = НастройкиСклада.ВМагазинеПоддерживаетсяСборкаЗаказов;
КонецЕсли;
ЕстьПоддержкаДоставкиСвоимиКурьерами = ЕстьПоддержкаДоставкиСвоимиКурьерами
И (Объект.ПорядокРасчетов <> Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов);
Если Не ЕстьПоддержкаДоставкиСвоимиКурьерами
И Объект.СпособДоставки = Перечисления.СпособыДоставки.ДоКлиентаКурьером Тогда
Объект.СпособДоставки = Перечисления.СпособыДоставки.Самовывоз;
СпособМестоДоставкиПеревозчикПриИзмененииСервер(Элементы.СпособДоставки.Имя);
КонецЕсли;
Если Не ЕстьПоддержкаСборкиЗаказов Тогда
Объект.Сборщик = Неопределено;
КонецЕсли;
ДоставкаТоваров.ОбновитьСписокВыбораСпособаДоставкиДляСкладаОтгрузки(Элементы.СпособДоставки, ЕстьПоддержкаДоставкиСвоимиКурьерами);
Элементы.Сборщик.Видимость = ЕстьПоддержкаСборкиЗаказов;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьСессиюПроверкиКМНаККТ(Знач Отказ)
Если НЕ Отказ Тогда
РеквизитыОсновногоОбъекта = Новый Структура("Объект", Новый Структура("Контрагент, ХозяйственнаяОперация, Организация"));
ЗаполнитьЗначенияСвойств(РеквизитыОсновногоОбъекта.Объект, Объект);
ПодключенныйККТ = Неопределено;
ЗакрытьСессиюПроверкиКМНаККТ = ЗакрытьСессиюПроверкиКМНаККТСервер(РеквизитыОсновногоОбъекта, ПодключенныйККТ);
Если ЗакрытьСессиюПроверкиКМНаККТ Тогда
РозничныеПродажиКлиент.ЗакрытьСессиюПроверкиКМНаККТ(УникальныйИдентификатор, ПодключенныйККТ);
КонецЕсли;
КонецЕсли;
Возврат;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЗакрытьСессиюПроверкиКМНаККТСервер(Знач РеквизитыОсновногоОбъекта, ПодключенныйККТ = Неопределено)
Результат = Ложь;
Если ВозможноПробитиеЧекаПоДокументу(РеквизитыОсновногоОбъекта) Тогда
ОборудованиеПодключенноеПоОрганизации = ПодключаемоеОборудованиеУТВызовСервера.ОборудованиеПодключенноеПоОрганизации(РеквизитыОсновногоОбъекта.Объект.Организация);
СписокПодключенныхККТ = ОборудованиеПодключенноеПоОрганизации.ККТ;
Если СписокПодключенныхККТ.Количество() = 1
И МенеджерОборудованияВызовСервера.ФискальноеУстройствоПоддерживаетПроверкуКодовМаркировки(СписокПодключенныхККТ[0]) Тогда
Результат = Истина;
ПодключенныйККТ = СписокПодключенныхККТ[0];
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция ПолучитьЗначенияФОМаркировки()
ИспользоватьМаркировку = Ложь;
ИспользоватьМаркировку = ПолучитьФункциональнуюОпцию("ВестиУчетМаркировкиПродукцииВГИСМ")
ИЛИ ПолучитьФункциональнуюОпцию("ВестиУчетМаркируемойПродукцииИСМП");
Возврат ИспользоватьМаркировку;
КонецФункции
&НаСервере
Функция ИспользоватьРасширенныеВозможностиЗаказаКлиента()
Если СписокЗаказов.Количество() = 0 Тогда
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Т.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет
|ИЗ
| (ВЫБРАТЬ
| Документ.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет
| ИЗ
| Документ.ЗаказКлиента КАК Документ
| ГДЕ
| Документ.Ссылка В(&Ссылка)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Документ.ЭтоЗаказКакСчет
| ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК Документ
| ГДЕ
| Документ.Ссылка В(&Ссылка)) КАК Т
|
|СГРУППИРОВАТЬ ПО
| Т.ЭтоЗаказКакСчет";
Запрос.УстановитьПараметр("Ссылка", СписокЗаказов);
Выгрузка = Запрос.Выполнить().Выгрузить();
Если Выгрузка.Количество() = 1 Тогда
Возврат Не Выгрузка[0].ЭтоЗаказКакСчет;
Иначе
Возврат ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
КонецЕсли;
КонецФункции
&НаСервереБезКонтекста
Функция ВозможноПробитиеЧекаПоДокументу(Знач ПараметрыОбъекта)
Возврат РеализацияТоваровУслугЛокализация.РазрешеноПробитиеФискальныхЧековПоДокументу(ПараметрыОбъекта);
КонецФункции
#КонецОбласти