#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ПредыдущиеРеквизитыСтроки;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтотОбъект);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
АвтоЗаголовок = Ложь;
ПриЧтенииСозданииНаСервере();
Если Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 0 Тогда
Отказ = Истина;
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
Если Не ЗначениеЗаполнено(Объект.КодСпециальныхОбстоятельств) Тогда
ОбменСКонтрагентамиУТ.ОбновитьКодСпециальныхОбстоятельств(Объект);
КонецЕсли;
ИначеЕсли Параметры.ЗначенияЗаполнения.Свойство("ЗаполнятьПоОрдеру") Тогда
Модифицированность = Истина;
ПерезаполнитьПоОрдерам(Параметры.ЗначенияЗаполнения.МассивЗаказов);
КонецЕсли;
УстановитьУсловноеОформление();
ПродажиСервер.УстановитьРежимВыбораГруппЭлементовСклада(Элементы.Склад);
ПродажиСервер.УстановитьОтметкуНезаполненногоДоговора(Элементы, "Договор", Истина);
ПравоНаЧтениеВидаЦены = ПравоДоступа("Просмотр",
Метаданные.Документы.ПередачаТоваровХранителю.ТабличныеЧасти.Товары.Реквизиты.ВидЦены);
Элементы.ТоварыВидЦены.БыстрыйВыбор = Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен");
ЭлементыДляЗаполнения = Новый Массив;
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиС);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиПо);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиС1);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиПо1);
ДоставкаТоваровКлиентСервер.ЗаполнитьСписокВыбораПоляВремени(ЭлементыДляЗаполнения);
ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
ПроверкаКонтрагентовВызовСервераПереопределяемыйУТ.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументССылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
ИнтеграцияСМаркетплейсамиСервер.РазместитьНаФормеДополнительныеКомандыЭДО(ПараметрыЭДОПриСоздании);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
Если Объект.Исправление Тогда
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Видимость = Ложь;
КонецЕсли;
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтотОбъект, Элементы.СтрокаИсправление);
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
Элементы.ГруппаСостояниеЭПД.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
Элементы.ГруппаСостояниеЭПД.Видимость = ОбменСГИСЭПДПереопределяемый.РазрешенаРаботаЭПД();
ОбновитьТекстЭПД();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПредыдущиеРеквизитыСтроки = Новый Структура(
"Артикул,
|Номенклатура,
|ТипНоменклатуры,
|Характеристика,
|ХарактеристикиИспользуются,
|Упаковка,
|Количество,
|КоличествоУпаковок,
|Склад,
|КодСтроки,
|ЗаказКлиента");
Если Объект.ПередачаПоЗаказам
И Не ПередачаСверхЗаказа
И Не ЗначениеЗаполнено(Объект.Ссылка)
И Не ЗначениеЗаполнено(Объект.Склад) Тогда
Если ИспользоватьПередачуПоНесколькимЗаказам Тогда
ТекстСообщения = НСтр("ru='Уточните склад передачи и заполните товары с помощью команды ""Заполнить по заказам""'");
Иначе
ТекстСообщения = НСтр("ru='Уточните склад передачи и заполните товары с помощью команды ""Заполнить по заказу""'");
КонецЕсли;
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, Объект.Ссылка, "Объект.Склад");
КонецЕсли;
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПроверкаКонтрагентовКлиент.ПриОткрытииДокумент(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтотОбъект, "СканерШтрихкода");
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
ПодключитьОбработчикОжиданияПолучениеПеревозчиков();
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Документ.ПередачаТоваровХранителю.Форма.ФормаПодбораТоваровИзЗаказа" Тогда
ОбработкаПодбораТоваровИзЗаказа(ВыбранноеЗначение.АдресТоваровВХранилище);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(ВыбранноеЗначение.АдресМногооборотнойТарыВХранилище);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий, ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.ВидыЗапасов.Форма.ФормаВводаВидовЗапасов" Тогда
ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.РеквизитыПечатиРеализации" Тогда
Если ВыбранноеЗначение <> Неопределено Тогда
Модифицированность = Истина;
ЗаполнитьУстановитьРеквизитыДоставки = Объект.Грузополучатель <> ВыбранноеЗначение.Грузополучатель;
ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение);
Если ЗаполнитьУстановитьРеквизитыДоставки Тогда
ЗаполнитьУстановитьРеквизитыДоставкиСервер("Грузополучатель");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData"
И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ДанныеШтрихкодов = Новый Массив;
КэшированныеЗначения.Штрихкоды.Очистить();
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
Если ИмяСобытия = "ДобавлениеПартнераВСегмент"
Или ИмяСобытия = "УдалениеПартнераИзСегмента" Тогда
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
КонецЕсли;
Если ИмяСобытия = "Запись_РасходныйОрдерНаТовары" Тогда
ЕстьРасходныйОрдерДляЗаказовНаОтгрузку(Объект.Ссылка, НачатаОтгрузка);
КонецЕсли;
Если ИмяСобытия = "Закрытие_РедактированиеКомплекта"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПриОкончанииРедактированияНабора(Параметр.АдресВоВременномХранилище);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
Если ИмяСобытия = "РедактироватьНабор"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПараметрыНабора = Новый Структура;
ПараметрыНабора.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыНабора.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
ПараметрыНабора.Вставить("СверхЗаказа", Истина);
ПараметрыНабора.Вставить("КолонкиНабора", КолонкиНабора(ЭтотОбъект));
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыНабора);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтотОбъект, УникальныйИдентификатор);
КонецЕсли;
Если ИмяСобытия = "СверкаДокументаСТорговойПлощадкой_Исправление"
И Источник = Объект.Ссылка Тогда
ОбновитьДокументПоДаннымТорговойПлощадки(Параметр);
Активизировать();
КонецЕсли;
ПроверкаКонтрагентовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
ОбработкаОповещенияЛокализация(ИмяСобытия, Параметр, Источник);
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия,ЭтотОбъект);
Если ИмяСобытия = "ПриИзмененииДоговора"
И Источник = ЭтотОбъект Тогда
Модифицированность = Истина;
ДоговорПриИзменении(Элементы[Параметр]);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтотОбъект, Элементы.СтрокаИсправление);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если Не Объект.ПередачаПоЗаказам
И ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЭтотОбъект", ЭтотОбъект);
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
ИменаКолонок = "Номенклатура,Характеристика,Количество,Склад";
ОписаниеОповещения = Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(ЭтотОбъект, "Товары", ИменаКолонок,
ОписаниеОповещения);
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение(Результат, ДополнительныеПараметры) Экспорт
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект,
ДополнительныеПараметры.ПараметрыЗаписи,
Ложь,
Истина);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
ПроверкаКонтрагентов.ПередЗаписьюНаСервереДокумент(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверкаКонтрагентов.ПриЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Обработчик.НастроитьФорму(ЭтотОбъект, Объект.Номер, Объект.Дата);
ОбновитьОтклоненияОтЗаказа();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
УстановитьСвойстваЭлементов();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ПроверкаКонтрагентов.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
НаправленияДеятельностиСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Заголовок = "";
АвтоЗаголовок = Истина;
ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_ПередачаТоваровХранителю", ПараметрыЗаписи, Объект.Ссылка);
ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаДокумента(ЭтотОбъект, ПараметрыЗаписи);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
ИсправлениеДокументовКлиент.ПослеЗаписи(Объект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
Если ХозяйственнаяОперацияДоИзменения = Объект.ХозяйственнаяОперация Тогда
Возврат;
КонецЕсли;
Объект.Партнер = ПредопределенноеЗначение("Справочник.Партнеры.ПустаяСсылка");
Объект.Контрагент = ПредопределенноеЗначение("Справочник.Контрагенты.ПустаяСсылка");
Объект.Соглашение = ПредопределенноеЗначение("Справочник.СоглашенияСКлиентами.ПустаяСсылка");
Объект.Договор = ПредопределенноеЗначение("Справочник.ДоговорыКонтрагентов.ПустаяСсылка");
Объект.Основание = "";
ПартнерПриИзменении(Элементы.Партнер);
КонтрагентПриИзменении(Элементы.Контрагент);
ХозяйственнаяОперацияПриИзмененииСервер();
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередачаПоЗаказамПриИзменении(Элемент)
ЗаказКлиента = Неопределено;
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
Если НачатаОтгрузка
И Объект.ПередачаПоЗаказам Тогда
Объект.ПередачаПоЗаказам = Ложь;
ТекстПредупреждения = НСтр("ru='По данному документу уже начата отгрузка. Менять признак ""Передача по заказу"" после начала отгрузки не допускается.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
Если Объект.ПередачаПоЗаказам Тогда
Если ИспользоватьПередачуПоНесколькимЗаказам Тогда
Если Объект.Товары.Количество() = 0 Тогда
ТекстВопроса = НСтр("ru='Список Товары будет перезаполнен остатками неоформленных товаров по заказам. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Строки в списке Товары будут привязаны к строкам заказов. Продолжить?'");
КонецЕсли;
Иначе
ПараметрыОтбора = Новый Структура(
"Партнер,
|Контрагент,
|Соглашение,
|Организация,
|Договор,
|Валюта,
|Сделка,
|НаправлениеДеятельности,
|ВернутьМногооборотнуюТару");
ЗаполнитьЗначенияСвойств(ПараметрыОтбора, Объект);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Отбор", ПараметрыОтбора);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("Регистратор", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ОписаниеОповещения = Новый ОписаниеОповещения("ПередачаПоЗаказамПриИзмененииПослеВыбора", ЭтотОбъект);
ОткрытьФорму("Документ.ПередачаТоваровХранителю.Форма.ФормаВыбораРаспоряжения", ПараметрыОткрытия, ЭтотОбъект, , , ,
ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
Иначе
Если Объект.Товары.Количество() > 0 Тогда
Если ИспользоватьПередачуПоНесколькимЗаказам Тогда
ТекстВопроса = НСтр("ru='Строки в списке Товары перестанут быть связанными со строками заказов. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Строки в списке Товары перестанут быть связанными со строками заказа. Продолжить?'");
КонецЕсли;
Иначе
ПередачаПоЗаказамПриИзмененииСервер();
Возврат;
КонецЕсли;
КонецЕсли;
ПередачаПоЗаказамПриИзмененииФрагмент(ЗаказКлиента, ТекстВопроса);
КонецПроцедуры
&НаКлиенте
Процедура ПередачаПоЗаказамПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ЗаказКлиента = ДополнительныеПараметры.ЗаказКлиента;
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Объект.ПередачаПоЗаказам = Не Объект.ПередачаПоЗаказам;
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(ЗаказКлиента) Тогда
Объект.ЗаказКлиента = ЗаказКлиента;
КонецЕсли;
ПередачаПоЗаказамПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗаголовокЗаказыКлиентовНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекстЗаголовка = НСтр("ru='Заказы клиентов (%КоличествоДокументов%)'");
ПараметрыОткрытия = Новый Структура("СписокДокументов, Заголовок", СписокЗаказов, ТекстЗаголовка);
ОткрытьФорму("ОбщаяФорма.ПросмотрСпискаДокументов", ПараметрыОткрытия, ЭтотОбъект, , , , Неопределено,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
КоличествоРасхождений = Объект.Товары.Итог("РасхождениеЗаказ");
Если Не Объект.ПередачаПоЗаказам
Или (ПередачаСверхЗаказа
И КоличествоРасхождений > 0) Тогда
Оповещение = Новый ОписаниеОповещения("ДатаПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект, Оповещение);
Возврат;
КонецЕсли;
ДатаПриИзмененииФрагмент(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если Не РезультатВопроса = КодВозвратаДиалога.Отмена Тогда
ДатаПриИзмененииФрагмент(РезультатВопроса);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
ПартнерПриИзмененииСервер();
Если ИспользоватьСоглашенияСКлиентами
И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
Возврат;
КонецЕсли;
ДоговорДоИзменения = Объект.Договор;
ПриИзмененииСоглашенияСервер();
Если Не ДоговорДоИзменения = Объект.Договор И ЗначениеЗаполнено(Объект.Договор) И КомиссионныеПродажи25
И ЗначениеЗаполнено(ВидЦенУчетный) Тогда
Оповещение = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДоговора(Объект, Оповещение);
КонецЕсли;
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродаж();
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыВыбораСоглашения = ПродажиКлиент.ПараметрыНачалаВыбораСоглашенияСКлиентом();
ПараметрыВыбораСоглашения.Элемент = Элемент;
ПараметрыВыбораСоглашения.Партнер = Объект.Партнер;
ПараметрыВыбораСоглашения.Документ = Объект.Соглашение;
ПараметрыВыбораСоглашения.ДатаДокумента = Объект.Дата;
ПараметрыВыбораСоглашения.ДанныеФормыСтруктура = Объект;
ПараметрыВыбораСоглашения.ХозяйственнаяОперация = Объект.ХозяйственнаяОперация;
ПараметрыВыбораСоглашения.Организация = Объект.Организация;
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию") Тогда
ПараметрыВыбораСоглашения.КомиссионныеПродажи25 = Истина;
КонецЕсли;
ПродажиКлиент.НачалоВыбораСоглашенияСКлиентом(ПараметрыВыбораСоглашения, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ДоговорДоИзменения = Объект.Договор;
ОрганизацияПриИзмененииСервер();
Если НЕ ДоговорДоИзменения = Объект.Договор
И ЗначениеЗаполнено(Объект.Договор) И ДоговорПоНовойКомиссии
И ЗначениеЗаполнено(ВидЦенУчетный) Тогда
Оповещение = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДоговора(Объект, Оповещение);
КонецЕсли;
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
КонецПроцедуры
&НаКлиенте
Процедура ТекстОтгрузкаПартнеруЗапрещенаНажатие(Элемент)
ПараметрыОткрытия = Новый Структура("Партнер", Объект.Партнер);
ОткрытьФорму("Справочник.Партнеры.Форма.ФормаСегментовЗапретаОтгрузки", ПараметрыОткрытия);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорСоздание(Элемент, СтандартнаяОбработка)
ПродажиКлиент.ОткрытьФормуСозданияДоговора(ЭтотОбъект, Элемент, "Объект.Договор", Объект.Партнер, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ДоговорПриИзмененииСервер();
Если ЗначениеЗаполнено(Объект.Договор)
И ДоговорПоНовойКомиссии
И ЗначениеЗаполнено(ВидЦенУчетный) Тогда
Оповещение = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект, Истина);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДоговора(Объект, Оповещение);
КонецЕсли;
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если НЕ РезультатВопроса = КодВозвратаДиалога.Отмена И РезультатВопроса Тогда
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("ВидЦены", ВидЦенУчетный);
ПараметрыЗаполнения.Вставить("ПолеВидаЦен", "ВидЦенУчетный");
ПараметрыЗаполнения.Вставить("ЦенаВключаетНДС", Неопределено);
ПараметрыЗаполнения.Вставить("ИмяТабличнойЧасти", "Товары");
ПараметрыЗаполнения.Вставить("ПредставлениеТабличнойЧасти", "Товары");
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВиду(Объект, ПараметрыЗаполнения) Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(Истина, Ложь, ЗначениеЗаполнено(ДополнительныеПараметры));
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
Если Склад <> Объект.Склад Тогда
Если Объект.ПередачаПоЗаказам
И Объект.Товары.Количество() > 0 Тогда
Если Не ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Объект.ХозяйственнаяОперация, Объект.Склад) Тогда
СписокКнопок = Новый СписокЗначений;
Если ПередачаСверхЗаказа Тогда
СписокКнопок.Добавить("Продолжить", НСтр("ru = 'Очистить товары'"));
СписокКнопок.Добавить("Отвязать", НСтр("ru = 'Отвязать от заказа'"));
ТекстВопроса = НСтр("ru='При изменении склада список ""Товары"" необходимо очистить, либо отвязать строки от заказа. Продолжить?'")
Иначе
СписокКнопок.Добавить("Продолжить", НСтр("ru = 'Продолжить'"));
ТекстВопроса = НСтр("ru='Список ""Товары"" будет очищен. Продолжить?'")
КонецЕсли;
СписокКнопок.Добавить("Отмена", НСтр("ru = 'Отмена'"));
ДополнительныеПараметры = Новый Структура("ОтвязатьВсеСтрокиОтЗаказа", Ложь);
ОписаниеОповещения = Новый ОписаниеОповещения("СкладПриИзмененииЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, СписокКнопок);
Возврат;
КонецЕсли;
КонецЕсли;
СкладПриИзмененииФрагмент(Ложь, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОтвязатьВсеСтрокиОтЗаказа = ДополнительныеПараметры.ОтвязатьВсеСтрокиОтЗаказа;
Если РезультатВопроса = "Отмена" Тогда
Объект.Склад = Склад;
Возврат;
ИначеЕсли РезультатВопроса = "Отвязать" Тогда
ОчищатьСтроки = Ложь;
ОтвязатьВсеСтрокиОтЗаказа = Истина;
Иначе
ОчищатьСтроки = Истина;
КонецЕсли;
СкладПриИзмененииФрагмент(ОтвязатьВсеСтрокиОтЗаказа, ОчищатьСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
Объект.Валюта = ВалютаДокумента;
Возврат;
КонецЕсли;
ПересчитатьСуммы = ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента);
ПриИзмененииВалютыСервер(Объект.Валюта, ПересчитатьСуммы);
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецПроцедуры
&НаКлиенте
Процедура ТекстДокументыНаОснованииОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОчиститьСообщения();
ТекстДокументыНаОснованииОбработкаНавигационнойСсылкиЛокализация(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
#Область ОбработчикиСобытийДоставка
&НаКлиенте
Процедура СпособМестоДоставкиПеревозчикПриИзменении(Элемент)
СпособМестоДоставкиПеревозчикПриИзмененииСервер(Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПриИзменении(Элемент)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОчистка(Элемент, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
АдресДоставкиПриИзменении(Элемент);
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаПриИзменении(Элемент)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОчистка(Элемент, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
АдресДоставкиПеревозчикаПриИзменении(Элемент);
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ОсобыеУсловияПеревозкиПриИзменении(Элемент)
ОсобыеУсловияПеревозкиПриИзмененииСервер();
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
КонецПроцедуры
&НаКлиенте
Процедура КонтактноеЛицоПриИзменении(Элемент)
Если Объект.КонтактноеЛицо.Пустая() Тогда
Возврат;
ИначеЕсли Не Объект.Партнер.Пустая() Тогда
Возврат;
КонецЕсли;
ПартнерИзменился = Ложь;
КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился);
Если Не ПартнерИзменился Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы,Объект);
Иначе
Если ИспользоватьСоглашенияСКлиентами
И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ВернутьМногооборотнуюТаруПриИзменении(Элемент)
ВернутьМногооборотнуюТаруПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура РеквизитыПечати(Элемент)
ОткрытьРеквизитыПечатиПередачи();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект,Элементы.ДекорацияСостояниеОригинала);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭПДНажатие(Элемент)
Если Объект.Ссылка.Пустая() Тогда
ТекстПредупреждения = НСтр("ru = 'Документ еще не записан. Открытие журнала ЭПД возможно только после записи документа.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ОтборДокументОснование", Объект.Ссылка);
ОткрытьФорму("Обработка.ЭлектронныеПеревозочныеДокументы.Форма.ФормаСпискаЭПД", ПараметрыОтбора);
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияОформитьЭПДНажатие(Элемент, СтандартнаяОбработка)
Если Объект.Ссылка.Пустая() Тогда
ТекстПредупреждения = НСтр("ru = 'Документ еще не записан. Ввод ЭПД возможен только на основании записанных документов.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
ПараметрыВызова = Новый Структура();
ПараметрыВызова.Вставить("Ссылка", Объект.Ссылка);
СписокДокументов = ОбменСГИСЭПДВызовСервераПереопределяемый.ТипыДокументовЭПД();
ОповещениеОЗакрытие = Новый ОписаниеОповещения("ОбработатьРезультатВыбораТипаДокумента",
ОбменСГИСЭПДКлиентПереопределяемый,
ПараметрыВызова);
ПоказатьВыборИзМеню(ОповещениеОЗакрытие,СписокДокументов, Элемент);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТекущаяСтрока <> Неопределено Тогда
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.ПередачаПоЗаказам);
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы.ТоварыЗаказКлиента Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.ЗаказКлиента) Тогда
ПоказатьЗначение(Неопределено, ТекущиеДанные.ЗаказКлиента);
ИначеЕсли ЗначениеЗаполнено(Объект.ЗаказКлиента) Тогда
ПоказатьЗначение(Неопределено, Объект.ЗаказКлиента);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыЦена Тогда
Если ПравоНаЧтениеВидаЦены Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.ВидЦены) Тогда
ОчиститьСообщения();
ТекстСообщения = НСтр("ru='Для редактирования цены очистите вид цены'");
ПолеЭлемента = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Товары",
ТекущиеДанные.НомерСтроки,
"ВидЦены");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, Объект.Ссылка, ПолеЭлемента);
КонецЕсли;
КонецЕсли;
ИначеЕсли НаборыКлиент.БлокируемыйЭлемент(Поле) Тогда
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПараметрОповещения = Новый Структура;
ПараметрОповещения.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрОповещения.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрОповещения.Вставить("ФормаВладелец", УникальныйИдентификатор);
Оповестить("РедактироватьНабор", ПараметрОповещения, ЭтотОбъект);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыНоменклатураНабора Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ПоказатьЗначение(Неопределено, ТекущиеДанные.НоменклатураНабора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Если Объект.ПередачаПоЗаказам
И Не ПередачаСверхЗаказа Тогда
Отказ = Истина;
ПодборТоваровИзЗаказа();
КонецЕсли;
Если Копирование Тогда
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтотОбъект, "Товары", Отказ, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломИзменения(Элемент, Отказ)
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, Элементы.Товары.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтотОбъект, "Товары", Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
Если Копирование
И Объект.ПередачаПоЗаказам Тогда
ТекущаяСтрока.ЗаказКлиента = Неопределено;
ТекущаяСтрока.КодСтроки = 0;
ТекущаяСтрока.Назначение = Неопределено;
ТекущаяСтрока.НазначениеОтправителя = Неопределено;
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.ПередачаПоЗаказам);
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
КонецЕсли;
Если ТекущаяСтрока <> Неопределено И НоваяСтрока И ДоговорПоНовойКомиссии
И ЗначениеЗаполнено(ВидЦенУчетный) Тогда
ТекущаяСтрока.ВидЦены = ВидЦенУчетный;
КонецЕсли;
ПродажиКлиент.СтрокаНоменклатурыПриНачалеРедактирования(ЭтотОбъект, "Товары", ТекущаяСтрока, НоваяСтрока, Копирование);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий,
Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий);
ДополнительныеПараметры = Новый Структура;
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элементы.Товары, ДополнительныеПараметры);
Если ДополнительныеПараметры.Свойство("ТребуетсяСерверныйВызов") Или ОбновитьСтатусыСерий Тогда
ТоварыПриОкончанииРедактированияНаСервере(
ДополнительныеПараметры.Свойство("ТребуетсяСерверныйВызов"),
?(ОбновитьСтатусыСерий, ТекущиеДанные.ПолучитьИдентификатор(), Неопределено),
КэшированныеЗначения);
КонецЕсли;
Если ОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Если Не ОтменаРедактирования Тогда
КэшСтроки = ?(НоваяСтрока, Неопределено, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.Товары, ЭтотОбъект));
СкладыКлиент.ОбновитьТаблицуСкладов(ТаблицаСкладов, ТекущиеДанные, КэшСтроки, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов,
ВсегоСкладов);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
ОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий,
Истина);
ТоварыПослеУдаленияСервер(ОбновитьСтатусыСерий, КэшированныеЗначения);
Если ОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = ДополнительныеПараметрыОбработкиЗавершения();
ДополнительныеПараметры.ТекущаяСтрока = ТекущаяСтрока;
ОписаниеОповещения = Новый ОписаниеОповещения("ТоварыНоменклатураПриИзмененииВопросПользователюЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
ВопросПользователюПриИзмененииРеквизитаСтроки(ОписаниеОповещения, ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат
И ПередачаСверхЗаказа Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура", "Артикул");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ПроверитьСериюРассчитатьСтатус = Новый Структура;
ПроверитьСериюРассчитатьСтатус.Вставить("Склад", Объект.Склад);
ПроверитьСериюРассчитатьСтатус.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПроверитьЗаполнитьСклад = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект,
СкладГруппа);
НоменклатураПриИзмененииПереопределяемый = Новый Структура;
НоменклатураПриИзмененииПереопределяемый.Вставить("ИмяФормы", ИмяФормы);
НоменклатураПриИзмененииПереопределяемый.Вставить("ИмяТабличнойЧасти", "Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПроверитьСериюРассчитатьСтатус);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПроверитьЗаполнитьСклад);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", НоменклатураПриИзмененииПереопределяемый);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
ДобавитьВСтруктуруДействияЗаполненияЦен(СтруктураДействий, Объект, ИспользоватьСоглашенияСКлиентами, ИспользуетсяЦенообразование25, ДоговорПоНовойКомиссии);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ЗаполнитьНазначениеОтправителя(Объект.ПередачаПоЗаказам, Объект.ХозяйственнаяОперация, ТекущаяСтрока);
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, ТекущаяСтрока);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = ДополнительныеПараметрыОбработкиЗавершения();
ДополнительныеПараметры.ТекущаяСтрока = ТекущаяСтрока;
ОписаниеОповещения = Новый ОписаниеОповещения("ТоварыХарактеристикаПриИзмененииВопросПользователюЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
ВопросПользователюПриИзмененииРеквизитаСтроки(ОписаниеОповещения, ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат
И ПередачаСверхЗаказа Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
ХарактеристикаПриИзмененииПереопределяемый = Новый Структура;
ХарактеристикаПриИзмененииПереопределяемый.Вставить("ИмяФормы", ИмяФормы);
ХарактеристикаПриИзмененииПереопределяемый.Вставить("ИмяТабличнойЧасти", "Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", ХарактеристикаПриИзмененииПереопределяемый);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, Ложь);
ДобавитьВСтруктуруДействияЗаполненияЦен(СтруктураДействий, Объект, ИспользоватьСоглашенияСКлиентами, ИспользуетсяЦенообразование25, ДоговорПоНовойКомиссии);
Если ДополнительныеПараметры.СтрокаОтвязанаОтЗаказа Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ЗаполнитьНазначениеОтправителя(Объект.ПередачаПоЗаказам, Объект.ХозяйственнаяОперация, ТекущаяСтрока);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНазначениеПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ЗаполнитьНазначениеОтправителя(Объект.ПередачаПоЗаказам, Объект.ХозяйственнаяОперация, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыОбособленноПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
НаправленияДеятельностиКлиент.ТоварыОбособленноПриИзменении(ЭтотОбъект, ТекущиеДанные);
ЗаполнитьНазначениеОтправителя(Объект.ПередачаПоЗаказам, Объект.ХозяйственнаяОперация, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = ТекущаяСтрока.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущаяСтрока.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
Если ТекущаяСтрока.Количество > 0 Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
Иначе
ДобавитьВСтруктуруДействияЗаполненияЦен(СтруктураДействий, Объект, ИспользоватьСоглашенияСКлиентами, ИспользуетсяЦенообразование25, ДоговорПоНовойКомиссии);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВидЦеныПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ЗаполнитьЦенуПродажи = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ЗаполнитьЦенуПродажи);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, Ложь);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, Ложь);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуПоСумме");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Функция ДополнительныеПараметрыОбработкиЗавершения()
Результат = Новый Структура;
Результат.Вставить("ТекущаяСтрока", Неопределено);
Результат.Вставить("ОписаниеОповещения", Неопределено);
Результат.Вставить("СтрокаОтвязанаОтЗаказа", Ложь);
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ТоварыСкладПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = ДополнительныеПараметрыОбработкиЗавершения();
ДополнительныеПараметры.ТекущаяСтрока = ТекущаяСтрока;
ОписаниеОповещения = Новый ОписаниеОповещения("ТоварыСкладПриИзмененииВопросПользователюЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
ВопросПользователюПриИзмененииРеквизитаСтроки(ОписаниеОповещения, ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкладПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат
И ПередачаСверхЗаказа Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
ПроверитьСериюРассчитатьСтатус = Новый Структура;
ПроверитьСериюРассчитатьСтатус.Вставить("Склад", Объект.Склад);
ПроверитьСериюРассчитатьСтатус.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПроверитьСериюРассчитатьСтатус);
Если ДополнительныеПараметры.СтрокаОтвязанаОтЗаказа Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ЗаполнитьНазначениеОтправителя(Объект.ПередачаПоЗаказам, Объект.ХозяйственнаяОперация, ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаказКлиентаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ПараметрыОтбора = Новый Структура();
ПараметрыОтбора.Вставить("Партнер", Объект.Партнер);
ПараметрыОтбора.Вставить("Контрагент", Объект.Контрагент);
ПараметрыОтбора.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОтбора.Вставить("Организация", Объект.Организация);
ПараметрыОтбора.Вставить("Договор", Объект.Договор);
ПараметрыОтбора.Вставить("Валюта", Объект.Валюта);
ПараметрыОтбора.Вставить("Сделка", Объект.Сделка);
ПараметрыОтбора.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ПараметрыОтбора.Вставить("ВернутьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Отбор", ПараметрыОтбора);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("Регистратор", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ОписаниеОповещения = Новый ОписаниеОповещения("ТоварыЗаказКлиентаНачалоВыбораЗавершение", ЭтотОбъект);
ОткрытьФорму("Документ.ПередачаТоваровХранителю.Форма.ФормаВыбораРаспоряжения", ПараметрыОткрытия, ЭтотОбъект , , , ,
ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаказКлиентаНачалоВыбораЗавершение(Результат, ДополнительныеПараметры) Экспорт
Элементы.Товары.ТекущиеДанные.ЗаказКлиента = Результат;
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтотОбъект, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтотОбъект, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтотОбъект, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда,
НавигационнаяСсылка = Неопределено,
СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
ПроверкаКонтрагентовКлиент.ПроверитьКонтрагентовВДокументеПоКнопке(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьВидыЗапасов(Команда)
ПараметрыРедактированияВидовЗапасов = ПоместитьТоварыИВидыЗапасовВХранилище();
ФинансыКлиент.ОткрытьВидыЗапасов(ЭтотОбъект, ПараметрыРедактированияВидовЗапасов);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказ(Команда)
Если Модифицированность
Или Не Объект.Проведен Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытьЗаказЗавершение", ЭтотОбъект);
ТекстВопроса = НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ПараметрыЗаписи = Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение);
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Возврат;
ИначеЕсли Не Записать(ПараметрыЗаписи) Тогда
Возврат;
КонецЕсли;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
#Область ОбработчикиКомандТаблицыФормыТовары
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена();
КоличествоВставленных = Объект.Товары.Количество() - КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.СтруктураПересчетаСуммы(
"Количество, Сумма", "КоличествоУпаковок");
Если ТаблицаФормы.ТекущиеДанные <> Неопределено Тогда
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ЗаполнитьСтруктуруПересчетаСуммы(СтруктураПересчетаСуммы, ТаблицаФормы.ТекущиеДанные);
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("СтруктураПересчетаСуммы", СтруктураПересчетаСуммы);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы,
Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект, ДополнительныеПараметры));
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
СтруктураПересчетаСуммы = ДополнительныеПараметры.СтруктураПересчетаСуммы;
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ДобавитьСтрокуДляПересчетаСуммы(СтруктураПересчетаСуммы, ТекущаяСтрока);
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ДобавитьСтрокуДляПересчетаСуммы(СтруктураПересчетаСуммы, НоваяСтрока);
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПересчитатьСуммы(СтруктураПересчетаСуммы);
СтруктураДействий = Новый Структура;
ДобавитьДействиеПересчитатьКоличествоЕдиниц(Объект.ХозяйственнаяОперация, СтруктураДействий, Истина);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоставНабора(Команда)
ВыбраннаяСтрока = Элементы.Товары.ТекущаяСтрока;
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если Не ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПоказатьПредупреждение(,НСтр("ru = 'Открытие состава набора возможно только для набора.'"));
Возврат;
ИначеЕсли ТекущаяСтрока.КодСтроки <> 0 Тогда
ПоказатьПредупреждение(,НСтр("ru = 'Открытие состава набора возможно только для строк сверх заказа.'"));
Возврат;
КонецЕсли;
ПараметрыКомплекта = Новый Структура;
ПараметрыКомплекта.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыКомплекта.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыКомплекта.Вставить("СверхЗаказа", Истина);
ПараметрыКомплекта.Вставить("КолонкиНабора", КолонкиНабора(ЭтотОбъект));
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыКомплекта);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Партнер", Объект.Партнер);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтотОбъект, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(Оповещение, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(РезультатВыполнения, Параметры) Экспорт
Если РезультатВыполнения.Результат Тогда
ОбработатьШтрихкоды(РезультатВыполнения.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВес(Команда)
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтотОбъект);
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект, ТекущаяСтрока);
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(Оповещение, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, ТекущаяСтрока) Экспорт
Если РезультатВыполнения.Результат Тогда
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументе(Команда)
АдресТоваровВоВременномХранилище = ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества();
ПревышениеКоличестваТоваровРазрешено = Не Объект.ПередачаПоЗаказам
Или ПередачаСверхЗаказа;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ИмяТабличнойЧасти", "Товары");
ПараметрыОткрытия.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресТоваровВоВременномХранилище);
ПараметрыОткрытия.Вставить("ПревышениеКоличестваТоваровРазрешено", ПревышениеКоличестваТоваровРазрешено);
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьКоличествоВДокументеЗавершение", ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.ПроверкаЗаполненияДокументов", ПараметрыОткрытия, ЭтотОбъект, , , , ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
Модифицированность = Истина;
КэшированныеЗначения = ?(КэшированныеЗначения = Неопределено,
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения(),
КэшированныеЗначения);
ИзменитьТабличнуюЧастьПоРезультатамПроверки(Результат, КэшированныеЗначения);
ТекстОснования = НСтр("ru = 'введенного на основании распоряжения или недоступна роль ""Реализация сверх заказа"".'");
ОбщегоНазначенияУТКлиент.ВывестиСообщениеПревышенияПоКоличеству(Результат, ТекстОснования);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтвязатьОтЗаказа(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() > 0 Тогда
ОтвязатьОтЗаказаСервер(Ложь);
ОповеститьОбОкончанииОтвязкиСтрок(ВыделенныеСтроки.Количество());
Иначе
ТекстПредупреждения = НСтр("ru='Выберите строки, которые необходимо отвязать от заказа.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОбОкончанииОтвязкиСтрок(КоличествоОтработанныхСтрок, СтрокиОтвязаны = Истина)
Если СтрокиОтвязаны Тогда
ТекстСообщения = НСтр("ru = 'Строки отвязаны'");
ТекстПояснения = НСтр("ru='В документе от заказов отвязано строк (%Количество%).'");
ТекстПояснения = СтрЗаменить(ТекстПояснения, "%Количество%", КоличествоОтработанныхСтрок);
Иначе
ТекстСообщения = НСтр("ru = 'Строки не отвязаны'");
ТекстПояснения = НСтр("ru='Ни одна строка не была отвязана.'");
КонецЕсли;
ПоказатьОповещениеПользователя(ТекстСообщения, , ТекстПояснения, БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерии(Команда)
ОткрытьПодборСерий();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодбор(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПередачаТоваровХранителю.ФормаДокумента.Команда.ОткрытьПодбор");
Отказ = Ложь;
Если (ИспользоватьСоглашенияСКлиентами
И Не ЗначениеЗаполнено(Объект.Соглашение))
Или Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
СообщитьОбОшибкахОткрытияПодбора(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрЗаголовок = НСтр("ru = 'Подбор товаров в %Документ%'");
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", Объект.Ссылка);
Иначе
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", НСтр("ru = 'передачу товаров хранителю'"));
КонецЕсли;
ВключатьНабор = ?(Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию"), Ложь, Истина);
ОтборПоТипуНоменклатуры = Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(ВключатьНабор));
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("Заголовок", ПараметрЗаголовок);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", ОтборПоТипуНоменклатуры);
ПараметрыФормы.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
ПараметрыФормы.Вставить("РежимПодбораИсключитьГруппыДоступныеВЗаказах", Истина);
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
ПараметрыФормы.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ПараметрыФормы.Вставить("ВозвращатьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтотОбъект, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыПоЗаказамОрдерам(Команда)
ПодборТоваровИзЗаказа();
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(ЭтотОбъект, "Товары",
"Номенклатура,Характеристика,Количество,Склад");
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСерииПоFEFO(Команда)
Если ЕстьЗаполненныеСерииПоFEFO() Тогда
Оповещение = Новый ОписаниеОповещения("ЗаполнитьСерииПоFEFOЗавершение", ЭтотОбъект);
НоменклатураКлиент.ЗадатьВопросОПерезаполненииСерийПоFEFO(Оповещение);
Возврат;
КонецЕсли;
Если Не ЗаполнитьСерииПоFEFOСервер() Тогда
НоменклатураКлиент.ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСерииПоFEFOЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
Если Не ЗаполнитьСерииПоFEFOСервер() Тогда
НоменклатураКлиент.ПредупредитьОбОтсутствииСтрокЗаполняемыхПоFEFO();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
ПараметрыЗагрузки.ЗагружатьЦены = Истина;
ПараметрыЗагрузки.ЭтоВозвратнаяТара = Объект.ВернутьМногооборотнуюТару;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Дата = Объект.Дата;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Валюта = Объект.Валюта;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Соглашение = Объект.Соглашение;
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура АвтоТест_ЗаполнитьЦеныПоСоглашению(Команда) Экспорт
ЗаполнитьЦеныПоСоглашению(Команда);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоСоглашению(Команда)
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоСоглашению(Объект, "Товары", НСтр("ru='Товары'")) Тогда
Если ПередачаСверхЗаказа
И Не ОтклонениеОтУсловийПередачи Тогда
Если Объект.ПередачаПоЗаказам
И Объект.Товары.Итог("РасхождениеЗаказ") = 0 Тогда
ТекстПредупреждения = НСтр("ru='Цена не может быть назначена в строках по заказу.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
КонецЕсли;
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер();
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоДоговору(Команда)
ЗаполнитьЦеныПоДоговоруВСтроке();
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокПоВидуЦен(Команда)
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦен(Объект, "Товары", НСтр("ru='Товары'")) Тогда
ПараметрыВыбораЦен = ЦеныПредприятияЗаполнениеКлиент.НовыйПараметрыЗаполненияВыбратьВидЦен();
ПараметрыВыбораЦен.ОписаниеОповещения =
Новый ОписаниеОповещения("ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенЗавершение", ЭтотОбъект);
ПараметрыВыбораЦен.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораЦен.ВладелецИндивидуальногоВидаЦен = ?(ИспользоватьСоглашенияСКлиентами,Объект.Соглашение,Объект.Партнер);
ЦеныПредприятияЗаполнениеКлиент.ВыбратьВидЦен(ПараметрыВыбораЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенЗавершение(ВидЦен, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ВидЦен) Тогда
МассивСтрок = Новый Массив;
Для Каждого ТекСтрока Из Элементы.Товары.ВыделенныеСтроки Цикл
НайденнаяСтрока = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
Если ОтклонениеОтУсловийПередачи
Или (ПередачаСверхЗаказа
И НайденнаяСтрока.КодСтроки = 0) Тогда
МассивСтрок.Добавить(НайденнаяСтрока);
КонецЕсли;
КонецЦикла;
Если МассивСтрок.Количество() = 0
И ПередачаСверхЗаказа
И Объект.ПередачаПоЗаказам
И Не ОтклонениеОтУсловийПередачи Тогда
ТекстПредупреждения = НСтр("ru='Цена не может быть назначена в строках по заказу.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
ЦеныРассчитаны = ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(ВидЦен);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, ВидЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтроках(Команда)
ПредставлениеТЧ = НСтр("ru='Товары'");
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
ЗаполнятьСклады = СкладыКлиент.ПроверитьВозможностьЗаполненияСкладовВТабличнойЧасти(Объект,
Объект.Товары,
ПредставлениеТЧ,
ВыделенныеСтроки);
Если ЗаполнятьСклады Тогда
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("ЭтоГруппа", Ложь);
СтруктураОтбора.Вставить("ВыборГруппы",
ПредопределенноеЗначение("Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказахИНакладных"));
СтруктураПараметров = Новый Структура("Отбор, ГруппаСкладов", СтруктураОтбора, Объект.Склад);
ДополнительныеПараметры = Новый Структура("ВыделенныеСтроки", ВыделенныеСтроки);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьСкладВВыделенныхСтрокахЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
ОткрытьФорму("Справочник.Склады.ФормаВыбора", СтруктураПараметров, ЭтотОбъект, , , , ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтрокахЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВыбранныйСклад = Результат;
ВыделенныеСтроки = ДополнительныеПараметры.ВыделенныеСтроки;
Если ЗначениеЗаполнено(ВыбранныйСклад) Тогда
ЗаполненоСтрок = ЗаполнитьСкладВВыделенныхСтрокахНаСервере(ВыделенныеСтроки, ВыбранныйСклад);
ВыделеноСтрок = ВыделенныеСтроки.Количество();
СкладыКлиент.ПоказатьОповещениеОЗаполненииСкладаВТабличнойЧасти(ВыбранныйСклад, ЗаполненоСтрок, ВыделеноСтрок);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ДополнитьИнформациюПоДоставкеКонтактами(Команда)
ДополнитьИнформациюПоДоставкеКонтактамиСервер();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьОтметкуОбособленно(Команда)
УстановитьСнятьОтметкуОбособленно(Истина);
КонецПроцедуры
&НаКлиенте
Процедура СнятьОтметкуОбособленно(Команда)
УстановитьСнятьОтметкуОбособленно(Ложь);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ОбновитьТекстДокументыНаОсновании()
ТекстыПоляДокументыНаОсновании.Очистить();
ОбновитьТекстДокументыНаОснованииЛокализация();
ОбщегоНазначенияУТКлиентСервер.ОбновитьТекстДокументыНаОсновании(ЭтотОбъект);
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииСервер()
КомиссионныеПродажи25 = ?(Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
Истина, Ложь);
Если Объект.ВернутьМногооборотнуюТару Тогда
Объект.ВернутьМногооборотнуюТару = Ложь;
КонецЕсли;
Элементы.ГруппаТара.Видимость = Объект.ВернутьМногооборотнуюТару;
ИспользоватьПередачуПоНесколькимЗаказамДоИзменения = ИспользоватьПередачуПоНесколькимЗаказам;
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Объект.ХозяйственнаяОперация);
ИспользоватьСоглашенияСКлиентами = Обработчик.СоглашенияСКлиентамиПрименимы()
И Обработчик.ИспользоватьСоглашенияСКлиентами();
ИспользоватьЗаказыКлиентов = Обработчик.ИспользоватьЗаказыКлиентов();
ИспользоватьПередачуПоНесколькимЗаказам = Обработчик.ИспользоватьРеализациюПоНесколькимЗаказам();
Если Объект.ПередачаПоЗаказам
Или ИспользоватьПередачуПоНесколькимЗаказамДоИзменения <> ИспользоватьПередачуПоНесколькимЗаказам Тогда
Объект.ПередачаПоЗаказам = Ложь;
ПередачаПоЗаказамПриИзмененииСервер();
КонецЕсли;
Обработчик.ПересчитатьКоличествоЕдиниц(Объект);
ДоговорПриИзмененииСервер();
УстановитьВидЦеныПоУмолчанию();
Обработчик.НастроитьПараметрыВыбораЭлементов(ЭтотОбъект, Объект);
Обработчик.НастроитьФорму(ЭтотОбъект, Объект.Номер, Объект.Дата);
ПараметрыУказанияСерий = ПараметрыУказанияСерий();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ХозяйственнаяОперацияДоИзменения = Объект.ХозяйственнаяОперация;
УстановитьВидимостьЭлементаФормыТоварыНазначение();
ОбменСКонтрагентамиУТ.ОбновитьКодСпециальныхОбстоятельств(Объект);
КонецПроцедуры
&НаСервере
Процедура СпособМестоДоставкиПеревозчикПриИзмененииСервер(ЭлементИмя)
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, ЭлементИмя, Объект);
ОбновитьТекстДокументыНаОсновании();
КонецПроцедуры
&НаСервере
Процедура ПередачаПоЗаказамПриИзмененииСервер()
Если Объект.ПередачаПоЗаказам Тогда
Если Объект.Товары.Количество() = 0 Тогда
ЗаполнитьПоЗаказуСервер();
Иначе
ПривязатьСтрокиПередачиКЗаказам(Не ИспользоватьПередачуПоНесколькимЗаказам);
КонецЕсли;
Иначе
СписокЗаказов.Очистить();
ОтвязатьОтЗаказаСервер(Истина, Ложь);
Объект.ЗаказКлиента = Неопределено;
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
ОбновитьОтклоненияОтЗаказа();
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
УстановитьСвойстваЭлементов();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ДоставкаТоваров.ПриИзмененииФлагаПоЗаказам(Элементы, Объект, Объект.ПередачаПоЗаказам);
НаправленияДеятельностиСервер.УстановитьВидимостьЭлементовОбособленно(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииСервер(ПересчитатьЦены, ЦеныРассчитаны)
Если ПересчитатьЦены Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(Истина);
Иначе
ЦеныРассчитаны = Ложь;
КонецЕсли;
СкладыТаблицы = Объект.Товары.Выгрузить(,"Склад").ВыгрузитьКолонку("Склад");
ОрдернаяСхемаПриОтгрузке = СкладыСервер.ЕстьОрдерныйНаОтгрузкуСклад(СкладыТаблицы, Объект.Дата, Объект.Склад);
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
Объект.КоэффициентПересчетаРегл = РаботаСКурсамиВалютУТ.ПолучитьКоэффициентПересчетаИзВалютыВВалюту(Объект.Валюта,
ВалютаРегламентированногоУчета,
ДатаДокумента);
ЗаполнитьУстановитьВидимостьСерий();
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
&НаСервере
Процедура ПартнерПриИзмененииСервер()
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы, Объект);
Объект.Соглашение = Справочники.СоглашенияСКлиентами.ПустаяСсылка();
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Обработчик.УстановитьДоступностьДоговора(ЭтотОбъект, Объект, Объект.Договор);
Возврат;
КонецЕсли;
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоУмолчанию();
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(ДокументПродажи);
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ВалютаДокумента = Объект.Валюта;
КонецЕсли;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
ЗаполнитьДоговорПоУмолчанию();
СкладПриИзмененииСервер();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ПродажиСервер.ПартнерПриИзменении(Объект);
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, "Партнер", Объект);
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправлениеДеятельностиПриИзмененииСервер();
КонецЕсли;
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтотОбъект);
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, "Партнер", Объект);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Обработчик.УстановитьДоступностьДоговора(ЭтотОбъект, Объект, Объект.Договор);
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
ПродажиСервер.ПартнерПриИзменении(Объект);
КонецЕсли;
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправлениеДеятельностиПриИзмененииСервер();
КонецЕсли;
ОбновитьТекстДокументыНаОсновании();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСоглашенияСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоСоглашению();
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(ДокументПродажи);
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
ВалютаДокумента = Объект.Валюта;
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
ДоговорПриИзмененииСервер();
ЗаполнитьОснованиеДляПечати();
КонецЕсли;
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Обработчик.УстановитьДоступностьДоговора(ЭтотОбъект, Объект, Объект.Договор);
СкладПриИзмененииСервер();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправлениеДеятельностиПриИзмененииСервер();
КонецЕсли;
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтотОбъект);
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Соглашение)
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "Организация") <> Объект.Организация Тогда
Объект.Соглашение = Справочники.СоглашенияСКлиентами.ПустаяСсылка();
КонецЕсли;
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Обработчик.УстановитьДоступностьДоговора(ЭтотОбъект, Объект, Объект.Договор);
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(Объект.Организация,
Объект.БанковскийСчетОрганизации, Неопределено, Объект.НаправлениеДеятельности);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправлениеДеятельностиПриИзмененииСервер();
КонецЕсли;
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ОбновитьТекстДокументыНаОсновании();
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ОснованиеИзменено = ОснованиеИзменено
И ЗначениеЗаполнено(Объект.Основание);
Договор = Объект.Договор;
РеквизитыДоговора = Новый Структура("Валюта, Подразделение", "ВалютаВзаиморасчетов");
Справочники.ДоговорыКонтрагентов.ЗаполнитьРеквизитыДокумента(Объект, Объект.Договор, РеквизитыДоговора);
ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор,
Объект.БанковскийСчетОрганизации, Объект.БанковскийСчетКонтрагента);
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
Если ИспользоватьНаправленияДеятельности
И Не Объект.ПередачаПоЗаказам Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(
Объект.НаправлениеДеятельности,
Объект.Соглашение,
Объект.Договор);
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправлениеДеятельностиПриИзмененииСервер();
КонецЕсли;
КонецЕсли;
Если ВалютаДокумента <> Объект.Валюта Тогда
ПриИзмененииВалютыСервер(Объект.Валюта, Истина);
КонецЕсли;
ЗаполнитьОснованиеДляПечати();
ДоговорПоНовойКомиссии = ЭтоДоговорПоНовойКомиссии();
Если ДоговорПоНовойКомиссии Тогда
ВидЦенУчетный = КомиссионнаяТорговляСервер.ВидЦеныДоговора(Объект.Договор, Истина);
Иначе
ВидЦенУчетный = Справочники.ВидыЦен.ПустаяСсылка();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СкладПриИзмененииСервер(ОчищатьСтроки = Истина, ОтвязатьВсеСтрокиОтЗаказа = Ложь)
Склад = Объект.Склад;
СкладГруппа = ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Объект.ХозяйственнаяОперация, Объект.Склад);
УстановитьПараметрыВыбораТоварыСклад();
Если ОчищатьСтроки
И Не СкладГруппа
И Объект.ПередачаПоЗаказам
И Объект.Товары.Количество() > 0 Тогда
Объект.Товары.Очистить();
КонецЕсли;
Если ОтвязатьВсеСтрокиОтЗаказа Тогда
ОтвязатьОтЗаказаСервер();
КонецЕсли;
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(Объект.Склад, СкладГруппа, Объект.Товары, Истина);
ОбновитьИнформациюПоЗаказам();
УстановитьЗаголовокЗаполнитьПоЗаказамОрдерам();
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗаполнитьУстановитьВидимостьСерий();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СтруктураОтветственного = ПродажиСервер.ПолучитьОтветственногоПоСкладу(Объект.Склад);
Если СтруктураОтветственного <> Неопределено Тогда
Объект.Отпустил = СтруктураОтветственного.Ответственный;
Объект.ОтпустилДолжность = СтруктураОтветственного.ОтветственныйДолжность;
КонецЕсли;
Элементы.ГруппаНадписьИКартинкаНесколькоСкладов.Видимость = СкладГруппа;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииВалютыСервер(НоваяВалюта, ПересчитатьСуммы)
Если ПересчитатьСуммы Тогда
ВыполнитьПересчетСуммДокументаСервер(ВалютаДокумента, НоваяВалюта);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
Объект.КоэффициентПересчетаРегл = РаботаСКурсамиВалютУТ.ПолучитьКоэффициентПересчетаИзВалютыВВалюту(Объект.Валюта,
ВалютаРегламентированногоУчета,
ДатаДокумента);
КонецПроцедуры
&НаСервере
Процедура КонтактноеЛицоПриИзмененииСервер(ПартнерИзменился)
ВладелецКонтактногоЛица = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КонтактноеЛицо, "Владелец");
Если ВладелецКонтактногоЛица <> Объект.Партнер Тогда
ПартнерИзменился = Истина;
Объект.Партнер = ВладелецКонтактногоЛица;
ПартнерПриИзмененииСервер();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
Изменения = НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Для Каждого ТекущиеДанные Из Изменения Цикл
ЗаполнитьНазначениеОтправителя(Объект.ПередачаПоЗаказам, Объект.ХозяйственнаяОперация, ТекущиеДанные);
КонецЦикла;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
&НаСервере
Процедура ВернутьМногооборотнуюТаруПриИзмененииСервер()
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтотОбъект);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьРезультатПроверкиКонтрагентов()
ПроверкаКонтрагентовКлиент.ОбработатьРезультатПроверкиКонтрагентовВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт
ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
Не Объект.ПередачаПоЗаказам Или ПередачаСверхЗаказа);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена() И (Не Объект.ПередачаПоЗаказам Или ПередачаСверхЗаказа));
КонецПроцедуры
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
Колонки =
"Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,
|ВидЦены,Цена,Склад,НоменклатураНабора,ХарактеристикаНабора";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект,
СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ПараметрыПроверкиВидаЦены = Новый Структура("ЦенаВключаетНДС, ИспользоватьПриПродаже, Статус",
Ложь, Истина, Перечисления.СтатусыДействияВидовЦен.Действует);
СтруктураДействий.Вставить("ПроверитьЗаполнитьВидЦены",
Новый Структура("ВидЦены, ПараметрыОтбора", "ВидЦены", ПараметрыПроверкиВидаЦены));
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ЗаполнитьНазначениеОтправителя(Объект.ПередачаПоЗаказам, Объект.ХозяйственнаяОперация, ТекущаяСтрока);
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.ПередачаПоЗаказам);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
Для Каждого ТекущаяСтрока Из ОбрабатываемыеСтроки Цикл
ЗаполнитьНазначениеОтправителя(Объект.ПередачаПоЗаказам, Объект.ХозяйственнаяОперация, ТекущаяСтрока);
КонецЦикла;
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПриИзмененииСкладаВТабличнойЧастиСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
ИзменятьКоличество = Не Объект.ПередачаПоЗаказам;
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура", "Артикул");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ПроверитьЗаполнитьСклад = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект,
СкладГруппа);
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары",
Объект.ВернутьМногооборотнуюТару);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад", ПроверитьЗаполнитьСклад);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСДобавленнымиСтроками, Объект);
ДобавитьВСтруктуруДействияЗаполненияЦен(СтруктураДействийСДобавленнымиСтроками, Объект,
ИспользоватьСоглашенияСКлиентами, ИспользуетсяЦенообразование25, ДоговорПоНовойКомиссии);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект,
СтруктураДействийСДобавленнымиСтроками);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействийСДобавленнымиСтроками);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСИзмененнымиСтроками, Объект);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
СтруктураДействий.ТолькоТовары = Истина;
СтруктураДействий.ИзменятьКоличество = ИзменятьКоличество;
СтруктураДействий.РассчитыватьНаборы = Истина;
ОбработатьШтрихкодыСервер(СтруктураДействий,КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтотОбъект);
ОткрытьФормуУказанияСерий = ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(
СтруктураДействий);
Если ОткрытьФормуУказанияСерий Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры", 0.1, Истина);
КонецЕсли;
Если ИзменятьКоличество Тогда
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтотОбъект, Объект, СтруктураПараметровДействия,
КэшированныеЗначения);
ОбновитьОтклоненияОтЗаказа();
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
#КонецОбласти
#Область Наборы
&НаСервере
Процедура ПриОкончанииРедактированияНабора(АдресВоВременномХранилище)
Данные = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура", "Артикул");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ЗаполнитьПризнакХарактеристикиИспользуются = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
ПроверитьЗаполнитьСклад = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект,
СкладГруппа);
СтруктураДействийСДобавленнымиСтроками = ОбщегоНазначения.СкопироватьРекурсивно(
СтруктураДействийСИзмененнымиСтроками);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
ЗаполнитьПризнакХарактеристикиИспользуются);
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад", ПроверитьЗаполнитьСклад);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары",
Объект.ВернутьМногооборотнуюТару);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействийСДобавленнымиСтроками);
ПараметрыДанных = Новый Структура;
ПараметрыДанных.Вставить("Данные", Данные);
ПараметрыДанных.Вставить("СтруктураДействийСИзмененнымиСтроками", СтруктураДействийСИзмененнымиСтроками);
ПараметрыДанных.Вставить("СтруктураДействийСДобавленнымиСтроками", СтруктураДействийСДобавленнымиСтроками);
ПараметрыДанных.Вставить("СверхЗаказа", Истина);
ПараметрыДанных.Вставить("КолонкиНабора", КолонкиНабора(ЭтотОбъект));
НаборыСервер.ПриОкончанииРедактированияНабора(ЭтотОбъект, "Товары", ПараметрыДанных);
ОбновитьОтклоненияОтЗаказа();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция КолонкиНабора(Форма)
Колонки = Новый Массив;
Колонки.Добавить("Номенклатура");
Колонки.Добавить("Характеристика");
Колонки.Добавить("Упаковка");
Колонки.Добавить("Количество");
Колонки.Добавить("КоличествоУпаковок");
Колонки.Добавить("ВидЦены");
Колонки.Добавить("Цена");
Колонки.Добавить("Сумма");
Возврат Колонки;
КонецФункции
&НаСервере
Функция АдресНабораВоВременномХранилище(Параметры)
Возврат НаборыСервер.АдресНабораВоВременномХранилище(ЭтотОбъект, Параметры, "Товары");
КонецФункции
&НаКлиенте
Процедура ПриУдаленииКомплектующих(Действие, ДополнительныйПараметр) Экспорт
Если НаборыКлиент.ДействиеРедактироватьНабор(Действие) Тогда
НаборыКлиент.ПриУдаленииКомплектующих(ЭтотОбъект, "Товары", ДополнительныйПараметр);
ИначеЕсли НаборыКлиент.ДействиеУдалитьВесьНабор(Действие) Тогда
ПриУдаленииКомплектующихНаСервере("Товары", ДополнительныйПараметр);
КонецЕсли;
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриУдаленииКомплектующихНаСервере(ИмяТЧ, ДополнительныйПараметр)
НаборыСервер.ПриУдаленииКомплектующих(ЭтотОбъект, ИмяТЧ, ДополнительныйПараметр);
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
СписокСвойств = "НоменклатураНабора, Номенклатура, Характеристика, ХарактеристикаНабора, Упаковка, Серия,
|КоличествоУпаковок, ВидЦены, Цена, СрокПоставки, Обособленно";
Если ЗначениеЗаполнено(Объект.Склад) Тогда
СписокСвойств = СписокСвойств + ", Склад";
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, СписокСвойств);
НаправленияДеятельностиКлиентСервер.ЗаполнитьНазначениеПоФлагуОбособленно(ЭтотОбъект, ТекущаяСтрока);
ЗаполнитьНазначениеОтправителя(Объект.ПередачаПоЗаказам, Объект.ХозяйственнаяОперация, ТекущаяСтрока);
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.ПередачаПоЗаказам);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПриИзмененииСкладаВТабличнойЧастиСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ОбработкаПодбораТоваровИзЗаказа(АдресТоваровВХранилище)
СтруктураПоискаТоваровЗаказа = Новый Структура("ЗаказКлиента, КодСтроки");
СтруктураПоискаТоваровНакладной = Новый Структура("НомерСтроки");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", СтруктураДействий);
Результат = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
ОбрабатываемыеСтроки = Новый Массив();
ПодобранныеТовары = Результат.Товары;
Для Каждого СтрокаТоваров Из ПодобранныеТовары Цикл
Если СтрокаТоваров.КодСтроки <> 0
И ЗначениеЗаполнено(СтрокаТоваров.ЗаказКлиента) Тогда
СтруктураПоискаТоваровЗаказа.КодСтроки = СтрокаТоваров.КодСтроки;
СтруктураПоискаТоваровЗаказа.ЗаказКлиента = СтрокаТоваров.ЗаказКлиента;
МассивСтрокТЧТовары = Объект.Товары.НайтиСтроки(СтруктураПоискаТоваровЗаказа);
Иначе
СтруктураПоискаТоваровНакладной.НомерСтроки = СтрокаТоваров.НомерСтроки;
МассивСтрокТЧТовары = Объект.Товары.НайтиСтроки(СтруктураПоискаТоваровНакладной);
КонецЕсли;
Если МассивСтрокТЧТовары.Количество() = 0 Тогда
СтрокаТЧТовары = Объект.Товары.Добавить();
ИначеЕсли МассивСтрокТЧТовары.Количество() = 1 Тогда
СтрокаТЧТовары = МассивСтрокТЧТовары[0];
ИначеЕсли МассивСтрокТЧТовары.Количество() > 1 Тогда
Для Каждого СтрокаКУдалению Из МассивСтрокТЧТовары Цикл
Объект.Товары.Удалить(СтрокаКУдалению);
КонецЦикла;
СтрокаТЧТовары = Объект.Товары.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров);
ЗаполнитьНазначениеОтправителя(Объект.ПередачаПоЗаказам, Объект.ХозяйственнаяОперация, СтрокаТЧТовары);
Если Не ИспользоватьПередачуПоНесколькимЗаказам
И ЗначениеЗаполнено(СтрокаТЧТовары.ЗаказКлиента)
И Объект.ЗаказКлиента <> СтрокаТЧТовары.ЗаказКлиента Тогда
Объект.ЗаказКлиента = СтрокаТЧТовары.ЗаказКлиента;
КонецЕсли;
СтрокаТЧТовары.ИндексНабора = ?(ЗначениеЗаполнено(СтрокаТЧТовары.НоменклатураНабора), 1, 0);
ОбрабатываемыеСтроки.Добавить(СтрокаТЧТовары);
КонецЦикла;
Если СтруктураДействий.Количество() Тогда
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
Объект.ПередачаПоЗаказам =
ЗначениеЗаполнено(Объект.ЗаказКлиента)
Или СписокЗаказов.Количество() > 0;
ОбновитьОтклоненияОтЗаказа();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПриИзмененииСкладаВТабличнойЧастиСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
УстановитьСвойстваЭлементов();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Если Объект.ПередачаПоЗаказам Тогда
Для Каждого Строка Из Объект.Товары Цикл
Если Строка.КодСтроки = 0 Тогда
Строка.Назначение = Справочники.Назначения.ПустаяСсылка();
Строка.НазначениеОтправителя = Справочники.Назначения.ПустаяСсылка();
КонецЕсли;
КонецЦикла;
КонецЕсли;
ДоставкаТоваров.ПриИзмененииФлагаПоЗаказам(Элементы, Объект, Объект.ПередачаПоЗаказам);
НаправленияДеятельностиСервер.УстановитьВидимостьЭлементовОбособленно(ЭтотОбъект);
НаправленияДеятельностиСервер.ПерезаполнитьСлужебныеРеквизитыТабличнойЧасти(ЭтотОбъект);
ПродажиСерверЛокализация.ПеренестиШтрихкодыУпаковок(ЭтотОбъект, Результат.ШтрихкодыУпаковок);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаКлиенте
Процедура ПодборТоваровИзЗаказа()
Попытка
Модифицированность = Истина;
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(, ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
АдресТоваров = "";
ЗаголовокФормы = "";
МассивКодовСтрок = Новый Массив;
ПередПодборомТоваровИзЗаказаСервер(МассивКодовСтрок, АдресТоваров, ЗаголовокФормы);
ПараметрыПодбора = Новый Структура(
"ЗаказКлиента,
|Дата,
|Партнер,
|Контрагент,
|Соглашение,
|ХозяйственнаяОперация,
|Организация,
|Договор,
|Склад,
|Сделка,
|НаправлениеДеятельности,
|ВернутьМногооборотнуюТару");
ЗаполнитьЗначенияСвойств(ПараметрыПодбора, Объект);
ПараметрыПодбора.Вставить("Документ", Объект.Ссылка);
ПараметрыПодбора.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыПодбора.Вставить("ПередачаПоЗаказам", Объект.ПередачаПоЗаказам);
ПараметрыПодбора.Вставить("ВалютаДокумента", Объект.Валюта);
ПараметрыПодбора.Вставить("МассивКодовСтрок", МассивКодовСтрок);
ПараметрыПодбора.Вставить("ОрдернаяСхемаПриОтгрузке", ОрдернаяСхемаПриОтгрузке);
ПараметрыПодбора.Вставить("АдресТоваровПередачиВоВременномХранилище", АдресТоваров);
ПараметрыПодбора.Вставить("Заголовок", ЗаголовокФормы);
ОткрытьФорму("Документ.ПередачаТоваровХранителю.Форма.ФормаПодбораТоваровИзЗаказа", ПараметрыПодбора, ЭтотОбъект, , , ,
Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Функция ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества()
КолонкиГруппировки =
"ЗаказКлиента,
|КодСтроки,
|НоменклатураНабора,
|ХарактеристикаНабора,
|Номенклатура,
|ТипНоменклатуры,
|Характеристика,
|ХарактеристикиИспользуются,
|Упаковка,
|Серия,
|СтатусУказанияСерий,
|Склад";
ВыгружаемыеКолонки = КолонкиГруппировки + ", КоличествоУпаковок";
ТабличнаяЧастьТовары = Объект.Товары.Выгрузить(, ВыгружаемыеКолонки);
ТабличнаяЧастьТовары.Свернуть(КолонкиГруппировки, "КоличествоУпаковок");
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ТабличнаяЧастьТовары, УникальныйИдентификатор);
Возврат АдресВоВременномХранилище;
КонецФункции
&НаСервере
Процедура ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, КэшированныеЗначения)
ТаблицаТовары = ПолучитьИзВременногоХранилища(ВозвращаемыеПараметры.Товары);
ОбрабатываемыеСтроки = Новый Массив;
ОбрабатываемыеСтрокиНовые = Новый Массив;
УдаляемыеСтроки = Новый Массив;
КолонкиОтбора =
"ЗаказКлиента,
|КодСтроки,
|НоменклатураНабора,
|ХарактеристикаНабора,
|Номенклатура,
|Характеристика,
|ХарактеристикиИспользуются,
|Упаковка,
|Серия";
Для Каждого СтрокаИсточник Из ТаблицаТовары Цикл
Отбор = Новый Структура(КолонкиОтбора);
ЗаполнитьЗначенияСвойств(Отбор, СтрокаИсточник);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
Если СтрокаИсточник.КоличествоУпаковок = 0 Тогда
Прервать;
КонецЕсли;
Если СтрокаИсточник.КоличествоУпаковок >= 0 Тогда
СтрокаТЧ.КоличествоУпаковок = СтрокаТЧ.КоличествоУпаковок + СтрокаИсточник.КоличествоУпаковок;
СтрокаИсточник.КоличествоУпаковок = 0;
Иначе
КоличествоКСписанию = -СтрокаИсточник.КоличествоУпаковок;
КоличествоВСтроке = СтрокаТЧ.КоличествоУпаковок;
Если КоличествоКСписанию > КоличествоВСтроке Тогда
СтрокаИсточник.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
СтрокаТЧ.КоличествоУпаковок = 0;
Иначе
СтрокаИсточник.КоличествоУпаковок = 0;
СтрокаТЧ.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
КонецЕсли;
КонецЕсли;
Если СтрокаТЧ.КоличествоУпаковок = 0 Тогда
УдаляемыеСтроки.Добавить(СтрокаТЧ);
Иначе
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТЧ = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаИсточник);
ЗаполнитьНазначениеОтправителя(Объект.ПередачаПоЗаказам, Объект.ХозяйственнаяОперация, СтрокаТЧ);
ОбновитьОтклоненияОтЗаказаВСтроке(СтрокаТЧ, Объект.ПередачаПоЗаказам);
ОбрабатываемыеСтрокиНовые.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьУсловияПродаж = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект);
ПроверитьЗаполнитьСклад = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект,
СкладГруппа);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ЗаполнитьУсловияПродаж);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПроверитьЗаполнитьСклад);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтрокиНовые,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Для Каждого СтрокаТЧ Из УдаляемыеСтроки Цикл
Объект.Товары.Удалить(СтрокаТЧ);
КонецЦикла;
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПриИзмененииСкладаВТабличнойЧастиСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
#КонецОбласти
#Область Ценообразование
&НаСервере
Функция ЗаполнитьЦеныПоСоглашениюСервер(ПоВсемСтрокам = Ложь, УчитыватьСтрокиСверхЗаказа = Истина, ОбновитьДанныеПоДоговору = Ложь)
Если ПоВсемСтрокам Тогда
Если ПередачаСверхЗаказа И УчитыватьСтрокиСверхЗаказа Тогда
ПараметрыОтбора = Новый Структура("КодСтроки", 0);
МассивСтрок = Объект.Товары.НайтиСтроки(ПараметрыОтбора);
Иначе
МассивСтрок = Неопределено;
КонецЕсли;
Иначе
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы.Товары.ВыделенныеСтроки Цикл
НайденнаяСтрока = Объект.Товары.НайтиПоИдентификатору(Строка);
Если (ПередачаСверхЗаказа
И НайденнаяСтрока.КодСтроки = 0)
Или ОтклонениеОтУсловийПередачи Тогда
МассивСтрок.Добавить(НайденнаяСтрока);
КонецЕсли;
КонецЦикла;
КонецЕсли;
НаборыВызовСервера.ДополнитьДоПолногоНабора(Объект.Товары, МассивСтрок, Истина);
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Партнер", Объект.Партнер);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И ОбновитьДанныеПоДоговору Тогда
ПараметрыЗаполнения.Вставить("ВидЦены", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор,"ВидЦенУчетный"));
Иначе
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
КонецЕсли;
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВернутьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "ВидЦены, Цена, СрокПоставки");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(Объект.Товары, МассивСтрок, ПараметрыЗаполнения, СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(ВидЦен)
МассивСтрок = Новый Массив;
Для Каждого ТекСтрока Из Элементы.Товары.ВыделенныеСтроки Цикл
НайденнаяСтрока = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
Если ОтклонениеОтУсловийПередачи
Или (ПередачаСверхЗаказа
И НайденнаяСтрока.КодСтроки = 0) Тогда
МассивСтрок.Добавить(НайденнаяСтрока);
КонецЕсли;
КонецЦикла;
НаборыВызовСервера.ДополнитьДоПолногоНабора(Объект.Товары, МассивСтрок, Истина);
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦены", ВидЦен);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦены");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(Объект.Товары, МассивСтрок, ПараметрыЗаполнения, СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Возврат ЦеныРассчитаны;
КонецФункции
#КонецОбласти
#Область Серии
&НаСервере
Функция ПараметрыУказанияСерий()
МенеджерОбъекта = Документы.ПередачаТоваровХранителю;
Возврат Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, МенеджерОбъекта));
КонецФункции
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыЗаполнитьСерииПоFEFO.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУстановитьВидимостьСерий()
ПараметрыУказанияСерий = ПараметрыУказанияСерий();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
УстановитьВидимостьЭлементовСерий();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(,ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
НуженСерверныйВызов = НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтотОбъект,
ПараметрыУказанияСерий,
Текст,
ТекущиеДанные);
Если НуженСерверныйВызов Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
ДополнительныеПараметры = Новый Структура("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий);
ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы, ПараметрыФормыУказанияСерий, ЭтотОбъект, , , , ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ДополнительныеПараметры.ПараметрыФормыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект,
ПараметрыУказанияСерий,
ТекущиеДанныеИдентификатор,
ЭтотОбъект);
КонецФункции
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
НоменклатураСервер.ОбработатьУказаниеСерий(Объект, ПараметрыУказанияСерий, ПараметрыФормыУказанияСерий);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор,
КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект, ПараметрыУказанияСерий,
ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Функция ЕстьЗаполненныеСерииПоFEFO()
Возврат НоменклатураСервер.ЕстьСтрокиСЗаполненнымиПоFEFOСериями(Объект.Товары);
КонецФункции
&НаСервере
Функция ЗаполнитьСерииПоFEFOСервер()
Если НоменклатураСервер.ЕстьСтрокиСЗаполняемымиПоFEFOСериями(Объект.Товары) Тогда
НоменклатураСервер.ЗаполнитьСерииПоFEFO(Объект, ПараметрыУказанияСерий);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область Обеспечение
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьНазначениеОтправителя(ПередачаПоЗаказам, ХозяйственнаяОперация, ТекущиеДанные)
Если ХозяйственнаяОперация =
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи")
Или Не ЗначениеЗаполнено(ТекущиеДанные.ЗаказКлиента)
Или ТекущиеДанные.КодСтроки = 0 Тогда
ТекущиеДанные.НазначениеОтправителя = ТекущиеДанные.Назначение;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Доставка
&НаСервере
Процедура ОсобыеУсловияПеревозкиПриИзмененииСервер()
ДоставкаТоваров.ОсобыеУсловияПеревозкиПриИзменении(Элементы, Объект);
КонецПроцедуры
&НаСервере
Процедура ДополнитьИнформациюПоДоставкеКонтактамиСервер()
ДоставкаТоваров.ДополнитьИнформациюПоДоставкеКонтактами(Объект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУстановитьРеквизитыДоставкиСервер(ИмяЭлементаФормы);
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, ИмяЭлементаФормы, Объект);
КонецПроцедуры
#КонецОбласти
#Область Товары
&НаСервере
Процедура ТоварыПриОкончанииРедактированияНаСервере(ОбновитьТовары, ТекущаяСтрокаИдентификатор, КэшированныеЗначения)
Если ОбновитьТовары Тогда
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецЕсли;
Если ТекущаяСтрокаИдентификатор <> Неопределено Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Процедура УстановитьСнятьОтметкуОбособленно(Установить)
НаправленияДеятельностиСервер.УстановитьСнятьОтметкуОбособленно(ЭтотОбъект, Установить);
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьОбработчикОжиданияПолучениеПеревозчиков()
Если ДанныеПоФоновомуЗаданию.Свойство("ИдентификаторЗадания") Тогда
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбновитьСписокПеревозчиковОповещение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(
ДанныеПоФоновомуЗаданию, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСписокПеревозчиковОповещение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
ДоставкаТоваровКлиент.ОбновитьСписокПеревозчиков(Элементы.ПеревозчикПартнер.СписокВыбора, Результат);
ОбновитьОтображениеДанных(Элементы.ПеревозчикПартнер);
ДанныеПоФоновомуЗаданию = Новый Структура;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияИС()
СоответствиеТребованиямГИСМТКлиент.ПроверитьВыполнениеЗадания(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
СкладыСервер.УстановитьУсловноеОформлениеСкладаВШапке(ЭтотОбъект);
НаборыСервер.УстановитьУсловноеОформление(ЭтотОбъект, "Товары");
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтотОбъект,
"СерииПриПланированииОтгрузкиУказываютсяВТЧТовары");
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтотОбъект, Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковка.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыВидЦены.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПередачаСверхЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПередачи");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ГруппаОтбора3 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПередачаСверхЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПередачи");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеФлагаОбособленно(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковка.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыВидЦены.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента =ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПередачаСверхЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПередачи");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПередачи");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПередачи");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПередачаСверхЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ГруппаОтбора3 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтклонениеОтУсловийПередачи");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПередачаСверхЗаказа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(ЭтотОбъект);
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьПередачуПоНесколькимЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПередачаПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказКлиента.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийОшибкуТекст);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Сверх заказа, заказ не выбран'"));
ПараметрыУстановки = МногооборотнаяТараСервер.ПараметрыУстановкиУсловногоОформленияДляСтрокСМногооборотнойТарой();
ПараметрыУстановки.Форма = ЭтотОбъект;
ПараметрыУстановки.ЭтоПоступление = Ложь;
ПараметрыУстановки.ЭтоПередача = Истина;
ПараметрыУстановки.ИмяПоляВводаСтавкиНДС = "";
МногооборотнаяТараСервер.УстановитьУсловноеОформлениеДляСтрокСМногооборотнойТарой(ПараметрыУстановки);
ЗапасыСервер.УстановитьУсловноеОформлениеПодразделенияДляВидовЗапасов(ЭтотОбъект);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказКлиента");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
Документы.ПередачаТоваровХранителю.НастроитьРеквизитХозяйственнаяОперация(ЭтотОбъект, Объект);
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Объект.ХозяйственнаяОперация);
ИспользоватьЗаказыКлиентов = Обработчик.ИспользоватьЗаказыКлиентов();
ИспользоватьПередачуПоНесколькимЗаказам = Обработчик.ИспользоватьРеализациюПоНесколькимЗаказам();
ПередачаСверхЗаказа = Обработчик.РеализацияСверхЗаказа();
ОтклонениеОтУсловийПередачи = Обработчик.ОтклонениеОтУсловийПродаж();
ИспользоватьПартнеровКакКонтрагентов = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов");
ИспользоватьСоглашенияСКлиентами = Обработчик.СоглашенияСКлиентамиПрименимы()
И Обработчик.ИспользоватьСоглашенияСКлиентами();
ИспользуетсяЦенообразование25 = ЦенообразованиеВызовСервера.ИспользуетсяЦенообразование25();
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности");
Договор = Объект.Договор;
Склад = Объект.Склад;
СкладГруппа = ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Объект.ХозяйственнаяОперация, Объект.Склад);
ВалютаДокумента = Объект.Валюта;
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
ОснованиеИзменено = Ложь;
ПараметрыУказанияСерий = ПараметрыУказанияСерий();
ХозяйственнаяОперацияДоИзменения = Объект.ХозяйственнаяОперация;
КомиссионныеПродажи25 = ?(Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию,
Истина, Ложь);
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
Обработчик.НастроитьПараметрыВыбораЭлементов(ЭтотОбъект, Объект);
Обработчик.НастроитьФорму(ЭтотОбъект, Объект.Номер, Объект.Дата);
ОбновитьИнформациюПоЗаказам();
УстановитьВидЦеныПоУмолчанию();
ЕстьРасходныйОрдерДляЗаказовНаОтгрузку(Объект.Ссылка, НачатаОтгрузка);
Если Не ИспользоватьЗаказыКлиентов Тогда
Элементы.КартинкаРасхождениеЗаказ.Видимость = Ложь;
Элементы.КартинкаРасхождениеЗаказы.Видимость = Ложь;
КонецЕсли;
УстановитьВидимостьЗапретаОтгрузкиПартнеру();
Обработчик.УстановитьДоступностьДоговора(ЭтотОбъект, Объект);
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
Элементы.ГруппаНадписьИКартинкаНесколькоСкладов.Видимость = СкладГруппа;
УстановитьВидимостьЭлементовСерий();
УстановитьПараметрыВыбораТоварыСклад();
УстановитьЗаголовокЗаполнитьПоЗаказамОрдерам();
ОбновитьОтклоненияОтЗаказа();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПриИзмененииСкладаВТабличнойЧастиСервер();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ЗаполнитьСписокВыбораОпераций();
ДанныеПоФоновомуЗаданию = ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект, Объект.ПередачаПоЗаказам,,, Истина);
ТекущийСпособДоставки = Объект.СпособДоставки;
Если ПравоДоступа("Изменение", Метаданные.Документы.ПередачаТоваровХранителю) Тогда
ТаблицаОснованийДляПечати.Загрузить(Обработчик.ТаблицаОснованийДляПечати(Объект));
Если ЗначениеЗаполнено(Объект.Основание) Тогда
СтруктураОснования = Обработчик.СтруктураОснованияДляПечати(Объект);
ОснованиеИзменено = (СокрЛП(Объект.Основание) <> СтруктураОснования.Основание)
Или (СокрЛП(Объект.ОснованиеНомер) <> СтруктураОснования.ОснованиеНомер)
Или (Объект.ОснованиеДата <> СтруктураОснования.ОснованиеДата);
КонецЕсли;
КонецЕсли;
УстановитьСвойстваЭлементов();
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтотОбъект);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
ОбновитьТекстДокументыНаОсновании();
ДоговорПоНовойКомиссии = ЭтоДоговорПоНовойКомиссии();
Если ДоговорПоНовойКомиссии Тогда
ВидЦенУчетный = КомиссионнаяТорговляСервер.ВидЦеныДоговора(Объект.Договор, Истина);
Иначе
ВидЦенУчетный = Справочники.ВидыЦен.ПустаяСсылка();
КонецЕсли;
Элементы.ГруппаТара.Видимость = Объект.ВернутьМногооборотнуюТару;
УстановитьВидимостьЭлементаФормыТоварыНазначение();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(ХозяйственнаяОперация, Склад)
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(ХозяйственнаяОперация);
Возврат Обработчик.ЭтоГруппаСкладовИСкладыИспользуютсяВТЧДокументовПродажи(Склад);
КонецФункции
&НаСервере
Процедура ОбновитьИнформациюПоЗаказам()
ПараметрыОбновления = ЗаказыСервер.ПараметрыОбновленияИнформацииПоЗаказамВФорме();
ПараметрыОбновления.ИмяРеквизитаСписокЗаказов = "СписокЗаказов";
ПараметрыОбновления.ПутьЗаказаВШапке = "Объект.ЗаказКлиента";
ПараметрыОбновления.ИмяНадписиЗаголовка = "НадписьЗаголовокЗаказы";
ПараметрыОбновления.ИмяГруппыКолонокВТабличнойЧасти = "ТоварыГруппаЗаказКлиента";
ПараметрыОбновления.ИмяЗаказаВТабличнойЧасти = "ЗаказКлиента";
ПараметрыОбновления.ИспользоватьЗаказыВТабличнойЧасти = Истина;
ПараметрыОбновления.ИспользоватьЗаказы = ИспользоватьЗаказыКлиентов;
ЗаказыСервер.ОбновитьИнформациюПоЗаказамВФорме(ЭтотОбъект, Объект.Товары, ПараметрыОбновления);
ИспользоватьРасширенныеВозможностиЗаказаКлиента = ИспользоватьРасширенныеВозможностиЗаказаКлиента();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидЦеныПоУмолчанию()
Если Не ИспользоватьСоглашенияСКлиентами Тогда
ПараметрыВыбораВидаЦены = ЗначениеНастроекПовтИсп.ПараметрыВыбораВидаЦеныПоУмолчанию();
ПараметрыВыбораВидаЦены.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораВидаЦены.Статус = Перечисления.СтатусыДействияВидовЦен.Действует;
ВидЦеныПоУмолчанию = ЗначениеНастроекПовтИсп.ВидЦеныПоУмолчанию(ПараметрыВыбораВидаЦены);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЕстьРасходныйОрдерДляЗаказовНаОтгрузку(Ссылка, НачатаОтгрузка)
НачатаОтгрузка = НакладныеСервер.ЕстьРасходныйОрдерДляЗаказовНаОтгрузку(Ссылка);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЗапретаОтгрузкиПартнеру()
СегментыСервер.УстановитьВидимостьЗапретаОтгрузкиПартнеру(Объект.Партнер, Элементы);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементаФормыТоварыНазначение()
ОтобразитьЭлемент = Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи;
Элементы.ТоварыНазначение.Видимость = ОтобразитьЭлемент;
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбораТоварыСклад()
ТоварыСклад = Элементы.ТоварыСклад;
ЗначениеПараметра = ДанныеВыбораСкладов(Объект.Склад);
ТоварыСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(ТоварыСклад, "Ссылка", ЗначениеПараметра);
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовокЗаполнитьПоЗаказамОрдерам()
МассивСкладов = Объект.Товары.Выгрузить(, "Склад").ВыгрузитьКолонку("Склад");
ОрдернаяСхемаПриОтгрузке = СкладыСервер.ЕстьОрдерныйНаОтгрузкуСклад(МассивСкладов, Объект.Дата, Объект.Склад);
Если Не ОрдернаяСхемаПриОтгрузке
И ИспользоватьЗаказыКлиентов
И Не ИспользоватьПередачуПоНесколькимЗаказам Тогда
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары из заказа'");
ИначеЕсли Не ОрдернаяСхемаПриОтгрузке
И ИспользоватьЗаказыКлиентов
И ИспользоватьПередачуПоНесколькимЗаказам Тогда
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары из заказов'");
ИначеЕсли ОрдернаяСхемаПриОтгрузке
И Не ИспользоватьЗаказыКлиентов Тогда
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары по ордерам'");
Иначе
ЗаголовокЗаполнить = НСтр("ru = 'Подобрать товары по заказам/ордерам'");
КонецЕсли;
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам.Заголовок = ЗаголовокЗаполнить;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДанныеВыбораСкладов(Склад)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Склады.Ссылка КАК Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка В ИЕРАРХИИ(&ГруппаСкладов)
| И Склады.ЭтоГруппа = ЛОЖЬ
| И Склады.ВыборГруппы <> ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.Запретить)";
Запрос.УстановитьПараметр("ГруппаСкладов", Склад);
ТаблицаСкладов = Запрос.Выполнить().Выгрузить();
МассивСкладов = ТаблицаСкладов.ВыгрузитьКолонку("Ссылка");
Возврат МассивСкладов;
КонецФункции
&НаСервере
Процедура ОбновитьОтклоненияОтЗаказа()
Для Каждого ТекСтрока Из Объект.Товары Цикл
ОбновитьОтклоненияОтЗаказаВСтроке(ТекСтрока, Объект.ПередачаПоЗаказам);
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, ПередачаПоЗаказам)
Если ПередачаПоЗаказам Тогда
Если ТекущаяСтрока.КодСтроки = 0 Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
Иначе
ТекущаяСтрока.РасхождениеЗаказ = 0;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура", "Артикул");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ЗаполнитьПризнакХарактеристикиИспользуются = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
ЗаполнитьПризнакХарактеристикиИспользуются);
ПакетнаяОбработкаТабличнойЧастиКлиентСерверЛокализация.ДополнитьСтруктуруДействийПриИзмененииЭлемента(
ЭтотОбъект, "Номенклатура", ПараметрыЗаполненияРеквизитов);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, ПараметрыЗаполненияРеквизитов);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСкладаВТабличнойЧастиСервер()
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество();
СкладыТаблицы = Объект.Товары.Выгрузить(, "Склад").ВыгрузитьКолонку("Склад");
ОрдернаяСхемаПриОтгрузке = СкладыСервер.ЕстьОрдерныйНаОтгрузкуСклад(СкладыТаблицы, Объект.Дата, Объект.Склад);
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов,
ВсегоСкладов);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу()
Если Объект.Товары.Количество() = 0
Или Не Объект.ПередачаПоЗаказам
Или Не ИспользоватьЗаказыКлиентов Тогда
НадписьРасхождениеЗаказ = "";
Элементы.КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПустаяКартинка;
Элементы.КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПустаяКартинка;
Если Объект.Товары.Количество() > 0 Тогда
Для Каждого СтрокаТовары Из Объект.Товары Цикл
СтрокаТовары.РасхождениеЗаказ = 0;
КонецЦикла;
КонецЕсли;
Возврат;
КонецЕсли;
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьЗависимыеРеквизитыФормыПоЗаказу(ЭлементыФормы, Товары, НадписьРасхождениеЗаказ)
КоличествоРасхождений = Товары.Итог("РасхождениеЗаказ");
Если КоличествоРасхождений > 0 Тогда
НадписьРасхождениеЗаказ = НСтр("ru='Строк сверх заказа: %КоличествоРасхождений%'");
НадписьРасхождениеЗаказ = СтрЗаменить(НадписьРасхождениеЗаказ, "%КоличествоРасхождений%", КоличествоРасхождений);
ЭлементыФормы.КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
ЭлементыФормы.КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
Иначе
НадписьРасхождениеЗаказ = "";
ЭлементыФормы.КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПустаяКартинка;
ЭлементыФормы.КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПустаяКартинка;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизиты()
Возврат Новый Структура("БезВозвратнойТары", "Сумма");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказатели(Форма)
Форма.СуммаВсего = Форма.Объект.Товары.Итог("СуммаБезВозвратнойТары");
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ОбновитьДоступностьЭлементовВозвратнойТары(Форма)
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Форма.Элементы,
"ВернутьМногооборотнуюТару, ДатаВозвратаМногооборотнойТары", "Доступность", Форма.Объект.ВернутьМногооборотнуюТару);
Если Не Форма.Объект.ВернутьМногооборотнуюТару Тогда
Форма.Объект.ДатаВозвратаМногооборотнойТары = Дата(1,1,1);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьСвойстваЭлементов()
УстановитьВидимостьКомандПоЗаказу();
УстановитьДоступностьКомандБуфераОбмена();
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ТоварыОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюОтвязатьОтЗаказа");
ЗначениеСвойства = Объект.ПередачаПоЗаказам
И ПередачаСверхЗаказа;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость",
ЗначениеСвойства);
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ТоварыОткрытьПодбор");
МассивЭлементов.Добавить("ТоварыЗагрузитьИзВнешнегоФайла");
ЗначениеСвойства = Не Объект.ПередачаПоЗаказам
Или (Объект.ПередачаПоЗаказам
И ПередачаСверхЗаказа);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
ЗначениеСвойства);
ИмяЭлемента = "ТоварыДополнитьМногооборотнойТарой";
ЗначениеСвойства = Не Объект.ПередачаПоЗаказам;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, ИмяЭлемента, "Доступность",
ЗначениеСвойства);
ИмяЭлемента = "ТоварыЗаполнитьСкладВВыделенныхСтроках";
Если Не Объект.ПередачаПоЗаказам Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, ИмяЭлемента, "Доступность", СкладГруппа);
Иначе
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, ИмяЭлемента, "Видимость", Ложь);
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НаправлениеДеятельности", "ТолькоПросмотр", Объект.ПередачаПоЗаказам);
Если Объект.ПередачаПоЗаказам Тогда
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ТоварыЗагрузитьДанныеИзТСД");
Если Не ПередачаСверхЗаказа Тогда
МассивЭлементов.Добавить("ТоварыРазбитьСтроку");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюРазбитьСтроку");
МассивЭлементов.Добавить("ТоварыПоискПоШтрихкоду");
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Ложь);
КонецЕсли;
Если Объект.ПередачаПоЗаказам
И Не ОтклонениеОтУсловийПередачи Тогда
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ПередачаПоЗаказу");
МассивЭлементов.Добавить("ПередачаПоЗаказам");
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("Соглашение");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Договор");
МассивЭлементов.Добавить("Склад");
МассивЭлементов.Добавить("ВернутьМногооборотнуюТару");
МассивЭлементов.Добавить("ДатаВозвратаМногооборотнойТары");
Если Не ПередачаСверхЗаказа Тогда
МассивЭлементов.Добавить("ТоварыКодСтроки");
МассивЭлементов.Добавить("ТоварыНоменклатура");
МассивЭлементов.Добавить("ТоварыХарактеристика");
МассивЭлементов.Добавить("ТоварыУпаковка");
МассивЭлементов.Добавить("ТоварыВидЦены");
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "ТолькоПросмотр", Истина);
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныПоСоглашению");
МассивЭлементов.Добавить("ТоварыЗаполнитьЦеныВыделенныхСтрокПоВидуЦен");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
ПередачаСверхЗаказа);
КонецЕсли;
ИмяЭлемента = "ТоварыГруппаЗаказКлиента";
ЗначениеСвойства = Объект.ПередачаПоЗаказам;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, ИмяЭлемента, "Видимость", ЗначениеСвойства);
Если Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Объект.ХозяйственнаяОперация) = Неопределено Тогда
ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКомандПоЗаказу()
Элементы.ЗакрытьЗаказ.Видимость = Объект.ПередачаПоЗаказам И ИспользоватьРасширенныеВозможностиЗаказаКлиента;
Элементы.ЗакрытьЗаказы.Видимость = Объект.ПередачаПоЗаказам И ИспользоватьРасширенныеВозможностиЗаказаКлиента;
КонецПроцедуры
&НаСервере
Процедура ПерезаполнитьПоОрдерам(МассивЗаказов)
СтруктураЗаполнения = ПродажиВызовСервера.ПерезаполнитьНакладнуюПоОрдерам(Объект);
Если СтруктураЗаполнения.ЕстьИзменения Тогда
Модифицированность = Истина;
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий,
Объект,
ПересчитатьКоличество = Истина)
Если ПересчитатьКоличество Тогда
ДобавитьДействиеПересчитатьКоличествоЕдиниц(Объект.ХозяйственнаяОперация, СтруктураДействий);
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ДобавитьДействиеПересчитатьКоличествоЕдиниц(
ХозяйственнаяОперация, СтруктураДействий, ПроверитьНеобходимостьПересчетаКоличествоЕдиниц = Ложь)
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(ХозяйственнаяОперация);
Если Не ПроверитьНеобходимостьПересчетаКоличествоЕдиниц
Или Обработчик.НеобходимПересчетКоличествоЕдиниц() Тогда
Обработчик.ДобавитьДействиеПересчитатьКоличествоЕдиниц(СтруктураДействий);
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(АдресТарыВХранилище)
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ПроверитьЗаполнитьСклад = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект,
СкладГруппа);
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийИзмененныеСтроки, Объект, Ложь);
СтруктураДействийДобавленныеСтроки = ОбщегоНазначения.СкопироватьРекурсивно(
СтруктураДействийИзмененныеСтроки);
СтруктураДействийДобавленныеСтроки.Вставить("ПроверитьЗаполнитьСклад", ПроверитьЗаполнитьСклад);
СтруктураДействийДобавленныеСтроки.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
ДобавитьВСтруктуруДействияЗаполненияЦен(СтруктураДействийДобавленныеСтроки, Объект, ИспользоватьСоглашенияСКлиентами, ИспользуетсяЦенообразование25, ДоговорПоНовойКомиссии);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект,
СтруктураДействийДобавленныеСтроки);
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(Объект, АдресТарыВХранилище, "Товары",
"Номенклатура,Характеристика,Склад", СтруктураДействийИзмененныеСтроки, СтруктураДействийДобавленныеСтроки);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПриИзмененииСкладаВТабличнойЧастиСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияЗаполненияЦен(СтруктураДействий, Объект, ИспользоватьСоглашения, ИспользуетсяЦенообразование25, ДоговорПоНовойКомиссии)
Если Не ДоговорПоНовойКомиссии И ((ИспользоватьСоглашения И ЗначениеЗаполнено(Объект.Соглашение))
Или (Не ИспользоватьСоглашения И ИспользуетсяЦенообразование25)) Тогда
ЗаполнитьУсловияПродаж = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияУсловийПродажВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ЗаполнитьУсловияПродаж", ЗаполнитьУсловияПродаж);
Иначе
ЗаполнитьЦенуПродажи = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ЗаполнитьЦенуПродажи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище)
ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
ПроверитьЗаполнитьСклад = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект,
СкладГруппа);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПроверитьЗаполнитьСклад);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВернутьМногооборотнуюТару);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
СтрокаТЧТовары = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров, , "КодСтроки");
ЗаполнитьНазначениеОтправителя(Объект.ПередачаПоЗаказам, Объект.ХозяйственнаяОперация, СтрокаТЧТовары);
ОбновитьОтклоненияОтЗаказаВСтроке(СтрокаТЧТовары, Объект.ПередачаПоЗаказам);
ОбрабатываемыеСтроки.Добавить(СтрокаТЧТовары);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПриИзмененииСкладаВТабличнойЧастиСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение)
ЗапасыСервер.ОбработатьВводВидовЗапасовВручную(ВыбранноеЗначение, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередачаПоЗаказамПриИзмененииПослеВыбора(Результат, ДополнительныеПараметры) Экспорт
ЗаказКлиента = Результат;
Если ЗаказКлиента = Неопределено Тогда
Объект.ПередачаПоЗаказам = Ложь;
Возврат;
КонецЕсли;
Если Объект.Товары.Количество() = 0 Тогда
ТекстВопроса = НСтр("ru='Список Товары будет заполнен остатками неоформленных товаров по документу %ЗаказКлиента%. Продолжить?'");
ТекстВопроса = СтрЗаменить(ТекстВопроса, "%ЗаказКлиента%", ЗаказКлиента);
Иначе
ТекстВопроса = НСтр("ru='Строки в списке Товары будут привязаны к строкам документа %ЗаказКлиента%. Строки, которые невозможно привязать к строкам заказа, будут удалены. Продолжить?'");
ТекстВопроса = СтрЗаменить(ТекстВопроса, "%ЗаказКлиента%", ЗаказКлиента);
КонецЕсли;
ПередачаПоЗаказамПриИзмененииФрагмент(ЗаказКлиента, ТекстВопроса);
КонецПроцедуры
&НаКлиенте
Процедура ПередачаПоЗаказамПриИзмененииФрагмент(Знач ЗаказКлиента, Знач ТекстВопроса)
ДополнительныеПараметры = Новый Структура("ЗаказКлиента", ЗаказКлиента);
ОписаниеОповещения = Новый ОписаниеОповещения("ПередачаПоЗаказамПриИзмененииЗавершение", ЭтотОбъект,
ДополнительныеПараметры);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоЗаказуСервер()
Объект.Товары.Очистить();
Если ИспользоватьПередачуПоНесколькимЗаказам Тогда
МассивЗаказов = Неопределено;
Иначе
МассивЗаказов = Новый Массив();
МассивЗаказов.Добавить(Объект.ЗаказКлиента);
КонецЕсли;
ПараметрыЗаполнения = Новый Структура("ОтображатьСообщение", Ложь);
Документы.ПередачаТоваровХранителю.ЗаполнитьПоОстаткамЗаказов(
Объект, Объект.Товары, Склад, МассивЗаказов, ПараметрыЗаполнения, Объект.ШтрихкодыУпаковок);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ПриИзмененииСкладаВТабличнойЧастиСервер();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВернутьМногооборотнуюТару);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
ЗаполнитьОснованиеДляПечати();
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ПривязатьСтрокиПередачиКЗаказам(ОтобратьПоЗаказу)
Документы.ПередачаТоваровХранителю.ПривязатьСтрокиПередачиКЗаказам(ЭтотОбъект, Объект, ПараметрыУказанияСерий, ОтобратьПоЗаказу);
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если Не ЗначениеЗаполнено(ТекСтрока.КодСтроки) Тогда
ТекСтрока.Назначение = Справочники.Назначения.ПустаяСсылка();
ТекСтрока.НазначениеОтправителя = Справочники.Назначения.ПустаяСсылка();
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекСтрока.ЗаказКлиента) И ОтобратьПоЗаказу Тогда
ТекСтрока.ЗаказКлиента = Объект.ЗаказКлиента;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОтвязатьОтЗаказаСервер(ВсеСтроки = Истина, ОтвязатьТолькоСтроки = Истина)
Перем КэшированныеЗначения;
Если ВсеСтроки Тогда
КоллекцияСтрок = Объект.Товары;
Иначе
КоллекцияСтрок = Элементы.Товары.ВыделенныеСтроки;
КонецЕсли;
Для Каждого ТекСтрока Из КоллекцияСтрок Цикл
Если ВсеСтроки Тогда
СтрокаТаблицы = ТекСтрока;
ТекСтрока = СтрокаТаблицы.ПолучитьИдентификатор();
Иначе
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
КонецЕсли;
НоменклатураКлиентСервер.ОбновитьКешированныеЗначенияДляУчетаСерий(СтрокаТаблицы, КэшированныеЗначения,
ПараметрыУказанияСерий);
СтрокаТаблицы.КодСтроки = 0;
СтрокаТаблицы.Назначение = Неопределено;
СтрокаТаблицы.НазначениеОтправителя = Неопределено;
СтрокаТаблицы.Обособленно = Ложь;
Если ОтвязатьТолькоСтроки Тогда
СтрокаТаблицы.РасхождениеЗаказ = 1;
Иначе
СтрокаТаблицы.ЗаказКлиента = Неопределено;
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект, ПараметрыУказанияСерий,
ТекСтрока, КэшированныеЗначения);
КонецЦикла;
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзмененииФрагмент(ПересчитатьЦены)
Перем ЦеныРассчитаны;
ДатаПриИзмененииСервер(ПересчитатьЦены, ЦеныРассчитаны);
Если ПересчитатьЦены Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Объект.Дата);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОснованиеДляПечати()
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Если Не ОснованиеИзменено Тогда
ЗаполнитьЗначенияСвойств(Объект, Обработчик.СтруктураОснованияДляПечати(Объект));
КонецЕсли;
ТаблицаОснованийДляПечати.Загрузить(Обработчик.ТаблицаОснованийДляПечати(Объект));
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Договор = Обработчик.ПолучитьДоговорПоУмолчанию(Объект);
Если Договор <> Объект.Договор Тогда
Объект.Договор = Договор;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Договор) Тогда
ПродажиСервер.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор,
Объект.БанковскийСчетОрганизации, Объект.БанковскийСчетКонтрагента);
ЗаполнитьОснованиеДляПечати();
ДоговорПоНовойКомиссии = ЭтоДоговорПоНовойКомиссии();
Если ДоговорПоНовойКомиссии Тогда
ВидЦенУчетный = КомиссионнаяТорговляСервер.ВидЦеныДоговора(Объект.Договор, Истина);
Иначе
ВидЦенУчетный = Справочники.ВидыЦен.ПустаяСсылка();
КонецЕсли;
Иначе
ДоговорПоНовойКомиссии = Ложь;
ВидЦенУчетный = Справочники.ВидыЦен.ПустаяСсылка();
КонецЕсли;
Обработчик.УстановитьДоступностьДоговора(ЭтотОбъект, Объект, Объект.Договор);
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзмененииФрагмент(Знач ОтвязатьВсеСтрокиОтЗаказа, Знач ОчищатьСтроки)
СкладПриИзмененииСервер(ОчищатьСтроки, ОтвязатьВсеСтрокиОтЗаказа);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьПересчетСуммДокументаСервер(СтараяВалюта, НоваяВалюта)
Если СтараяВалюта <> НоваяВалюта Тогда
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата,ТекущаяДатаСеанса());
СтруктураКурсовСтаройВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(СтараяВалюта, ДатаДокумента, ВалютаРегламентированногоУчета);
СтруктураКурсовНовойВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(НоваяВалюта, ДатаДокумента, ВалютаРегламентированногоУчета);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого ТекСтрока Из Объект.Товары Цикл
ТекСтрока.Цена = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
ТекСтрока.Цена,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты);
ОбрабатываемыеСтроки.Добавить(ТекСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередПодборомТоваровИзЗаказаСервер(МассивКодовСтрок, АдресТоваров, ЗаголовокФормы)
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
Если СтрокаТЧ.КодСтроки <> 0
И ЗначениеЗаполнено(СтрокаТЧ.ЗаказКлиента) Тогда
ПараметрыОтбора = Новый Структура("ЗаказКлиента, КодСтроки", СтрокаТЧ.ЗаказКлиента, СтрокаТЧ.КодСтроки);
МассивКодовСтрок.Добавить(ПараметрыОтбора);
КонецЕсли;
КонецЦикла;
АдресТоваров = ПоместитьВоВременноеХранилище(Объект.Товары.Выгрузить());
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Объект.ХозяйственнаяОперация);
ЗаголовокФормы = Обработчик.ЗаголовокФормыДокумента(Не ЗначениеЗаполнено(Объект.Ссылка), Объект.Номер, Объект.Дата);
КонецПроцедуры
&НаСервере
Процедура ТоварыПослеУдаленияСервер(НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения)
Если НеобходимоОбновитьСтатусыСерий Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения);
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
ПриИзмененииСкладаВТабличнойЧастиСервер();
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаКлиенте
Процедура ВопросПользователюПриИзмененииРеквизитаСтроки(ОписаниеОповещения, ТекущаяСтрока)
Если ТекущаяСтрока.КодСтроки = 0 Тогда
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Истина);
Возврат;
КонецЕсли;
Если ТекущаяСтрока.Номенклатура = ПредыдущиеРеквизитыСтроки.Номенклатура
И ТекущаяСтрока.Характеристика = ПредыдущиеРеквизитыСтроки.Характеристика
И ТекущаяСтрока.Склад = ПредыдущиеРеквизитыСтроки.Склад Тогда
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Истина);
Возврат;
КонецЕсли;
ДополнительныеПараметры = ДополнительныеПараметрыОбработкиЗавершения();
ДополнительныеПараметры.ТекущаяСтрока = ТекущаяСтрока;
ДополнительныеПараметры.ОписаниеОповещения = ОписаниеОповещения;
ОповещениеВопроса = Новый ОписаниеОповещения("ВопросПользователюПриИзмененииРеквизитаСтрокиВопросЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
ТекстВопроса = НСтр("ru='Редактируемая строка перестанет быть связанной со строкой заказа. Продолжить?'");
ПоказатьВопрос(ОповещениеВопроса, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ВопросПользователюПриИзмененииРеквизитаСтрокиВопросЗавершение(Ответ, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
ОписаниеОповещения = ДополнительныеПараметры.ОписаниеОповещения;
Если Ответ = КодВозвратаДиалога.Да Тогда
ТекущаяСтрока.КодСтроки = 0;
ДополнительныеПараметры.СтрокаОтвязанаОтЗаказа = Истина;
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.ПередачаПоЗаказам);
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Истина);
Иначе
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, ПредыдущиеРеквизитыСтроки);
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Ложь);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПоместитьТоварыИВидыЗапасовВХранилище()
Возврат ЗапасыСервер.ПоместитьТоварыИВидыЗапасовВХранилище(ЭтотОбъект);
КонецФункции
&НаКлиенте
Процедура ЗакрытьЗаказФрагмент()
СписокЗаказовКЗакрытию = Новый СписокЗначений;
Если ЗначениеЗаполнено(Объект.ЗаказКлиента) Тогда
СписокЗаказовКЗакрытию.Добавить(Объект.ЗаказКлиента)
Иначе
СписокЗаказовКЗакрытию.ЗагрузитьЗначения(СписокЗаказов.ВыгрузитьЗначения());
КонецЕсли;
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия", СтруктураЗакрытия, ЭтотОбъект, , , , Неопределено,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура СообщитьОбОшибкахОткрытияПодбора(Отказ)
Если ИспользоватьСоглашенияСКлиентами
И Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
ТекстСообщения = НСтр("ru = 'Поле ""Соглашение"" не заполнено'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, Объект.Ссылка, "Объект.Соглашение", ,Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ТекстСообщения = НСтр("ru = 'Поле ""Валюта"" не заполнено'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, Объект.Ссылка, "Объект.Валюта", ,Отказ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьСкладВВыделенныхСтрокахНаСервере(Знач МассивВыделенныхСтрок, Склад)
ЗаполненоСтрок = СкладыСервер.ЗаполнитьСкладыВВыделенныхСтроках(Объект.Товары, МассивВыделенныхСтрок, Склад);
Если ЗаполненоСтрок > 0 Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецЕсли;
Возврат ЗаполненоСтрок;
КонецФункции
&НаКлиенте
Процедура ОткрытьРеквизитыПечатиПередачи()
Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;
ДанныеРаспоряженияНаДоставку = ДоставкаТоваровКлиентСервер.ПараметрыРаспоряжения();
ЗаполнитьЗначенияСвойств(ДанныеРаспоряженияНаДоставку, Объект);
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Ссылка", Объект.Ссылка);
СтруктураПараметров.Вставить("ТипОбъекта", "ПередачаТоваровХранителю");
СтруктураПараметров.Вставить("РеализацияПоЗаказам", Объект.ПередачаПоЗаказам);
СтруктураПараметров.Вставить("Дата", Объект.Дата);
СтруктураПараметров.Вставить("Партнер", Объект.Партнер);
СтруктураПараметров.Вставить("Контрагент", Объект.Контрагент);
СтруктураПараметров.Вставить("БанковскийСчетКонтрагента", Объект.БанковскийСчетКонтрагента);
СтруктураПараметров.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
СтруктураПараметров.Вставить("Организация", Объект.Организация);
СтруктураПараметров.Вставить("БанковскийСчетОрганизации", Объект.БанковскийСчетОрганизации);
СтруктураПараметров.Вставить("Договор", Объект.Договор);
СтруктураПараметров.Вставить("АдресДоставки", Объект.АдресДоставки);
СтруктураПараметров.Вставить("АдресДоставкиЗначенияПолей", Объект.АдресДоставкиЗначенияПолей);
СтруктураПараметров.Вставить("ЗонаДоставки", Объект.ЗонаДоставки);
СтруктураПараметров.Вставить("ВремяДоставкиС", Объект.ВремяДоставкиС);
СтруктураПараметров.Вставить("ВремяДоставкиПо", Объект.ВремяДоставкиПо);
СтруктураПараметров.Вставить("ДополнительнаяИнформацияПоДоставке", Объект.ДополнительнаяИнформацияПоДоставке);
СтруктураПараметров.Вставить("ДанныеРаспоряженияНаДоставку", ДанныеРаспоряженияНаДоставку);
СтруктураПараметров.Вставить("Грузоотправитель", Объект.Грузоотправитель);
СтруктураПараметров.Вставить("БанковскийСчетГрузоотправителя", Объект.БанковскийСчетГрузоотправителя);
СтруктураПараметров.Вставить("Грузополучатель", Объект.Грузополучатель);
СтруктураПараметров.Вставить("БанковскийСчетГрузополучателя", Объект.БанковскийСчетГрузополучателя);
СтруктураПараметров.Вставить("Руководитель", Объект.Руководитель);
СтруктураПараметров.Вставить("ГлавныйБухгалтер", Объект.ГлавныйБухгалтер);
СтруктураПараметров.Вставить("Отпустил", Объект.Отпустил);
СтруктураПараметров.Вставить("ОтпустилДолжность", Объект.ОтпустилДолжность);
СтруктураПараметров.Вставить("Основание", Объект.Основание);
СтруктураПараметров.Вставить("ОснованиеДата", Объект.ОснованиеДата);
СтруктураПараметров.Вставить("ОснованиеНомер", Объект.ОснованиеНомер);
СтруктураПараметров.Вставить("ТолькоПросмотр", ТолькоПросмотр);
СтруктураПараметров.Вставить("ТаблицаОснованийДляПечати", ТаблицаОснованийДляПечати);
СтруктураПараметров.Вставить("ДоверенностьВыдана", Объект.ДоверенностьВыдана);
СтруктураПараметров.Вставить("ДоверенностьДата", Объект.ДоверенностьДата);
СтруктураПараметров.Вставить("ДоверенностьЛицо", Объект.ДоверенностьЛицо);
СтруктураПараметров.Вставить("ДоверенностьНомер", Объект.ДоверенностьНомер);
СтруктураПараметров.Вставить("КодСпециальныхОбстоятельств", Объект.КодСпециальныхОбстоятельств);
ОткрытьФорму("ОбщаяФорма.РеквизитыПечатиРеализации", СтруктураПараметров, ЭтотОбъект, , , , Неопределено,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораОпераций()
Если Элементы.Найти("ХозяйственнаяОперация") <> Неопределено Тогда
Если Не ПолучитьФункциональнуюОпциюФормы("ИспользоватьКомиссиюПриПродажах") Тогда
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию);
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
Если Не ПолучитьФункциональнуюОпциюФормы("ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи") Тогда
ЭлементСписка = Элементы.ХозяйственнаяОперация.СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи);
Если ЭлементСписка <> Неопределено Тогда
Элементы.ХозяйственнаяОперация.СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция ЭтоДоговорПоНовойКомиссии()
Результат = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И ЗначениеЗаполнено(Объект.Договор)
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "КомиссионныеПродажи25");
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьЦеныПоДоговоруВСтроке(ПоВсемСтрокам = Ложь)
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("ВидЦены", ВидЦенУчетный);
ПараметрыЗаполнения.Вставить("ПолеВидаЦен", "ВидЦенУчетный");
ПараметрыЗаполнения.Вставить("ЦенаВключаетНДС", Неопределено);
ПараметрыЗаполнения.Вставить("ИмяТабличнойЧасти", "Товары");
ПараметрыЗаполнения.Вставить("ПредставлениеТабличнойЧасти", "Товары");
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВиду(Объект, ПараметрыЗаполнения) Тогда
Если ПередачаСверхЗаказа
И Не ОтклонениеОтУсловийПередачи Тогда
Если Объект.ПередачаПоЗаказам
И Объект.Товары.Итог("РасхождениеЗаказ") = 0 Тогда
ТекстПредупреждения = НСтр("ru='Цена не может быть назначена в строках по заказу.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
КонецЕсли;
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(ПоВсемСтрокам,, Истина);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииКлючевыхРеквизитовСостояниеЭДО()
ПараметрыПриИзменении = ОбменСКонтрагентами.ПараметрыПриИзмененииКлючевыхРеквизитовЭДО();
ПараметрыПриИзменении.Форма = ЭтотОбъект;
ПараметрыПриИзменении.ДокументСсылка = Объект.Ссылка;
ПараметрыПриИзменении.ДокументОбъект = РеквизитФормыВЗначение("Объект");
ПараметрыПриИзменении.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПриИзменении.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриИзмененииКлючевыхРеквизитовЭДО(ПараметрыПриИзменении);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область Локализация
&НаКлиенте
Процедура ОбработкаОповещенияЛокализация(ИмяСобытия, Параметр, Источник)
Если ТранспортнаяНакладнаяКлиент.ЭтоОповещениеЗаписиТранспортнойНакладной(ЭтотОбъект, ИмяСобытия, Параметр, Источник) Тогда
ОбновитьТекстДокументыНаОсновании();
КонецЕсли;
Если ИмяСобытия = "Запись_ДокументыЭПД" Тогда
ОбновитьТекстЭПД();
КонецЕсли;
Возврат;
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстЭПД()
Если Элементы.ГруппаСостояниеЭПД.Видимость Тогда
КоличествоЭПД = ОбменСГИСЭПДПереопределяемый.КоличествоЭлектронныхДокументов(Объект.Ссылка);
Элементы.ДекорацияЭПД.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("ЭПД (%1)", КоличествоЭПД);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстДокументыНаОснованииЛокализация()
ТекстТТН = Документы.ТранспортнаяНакладная.ТекстТТН(ЭтотОбъект);
ТекстыПоляДокументыНаОсновании.Добавить(ТекстТТН);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ТекстДокументыНаОснованииОбработкаНавигационнойСсылкиЛокализация(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ТранспортнаяНакладнаяКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
&НаСервере
Функция ИспользоватьРасширенныеВозможностиЗаказаКлиента()
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Если СписокЗаказов.Количество() = 0
Или Не Обработчик.ТипЗаказа() = Тип("ДокументСсылка.ЗаказКлиента") Тогда
Возврат Обработчик.ИспользоватьРасширенныеВозможностиЗаказаКлиента();
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Т.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет
|ИЗ
| (ВЫБРАТЬ
| Документ.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет
| ИЗ
| Документ.ЗаказКлиента КАК Документ
| ГДЕ
| Документ.Ссылка В(&Ссылка)
| ) КАК Т
|
|СГРУППИРОВАТЬ ПО
| Т.ЭтоЗаказКакСчет";
Запрос.УстановитьПараметр("Ссылка", СписокЗаказов);
УстановитьПривилегированныйРежим(Истина);
Выгрузка = Запрос.Выполнить().Выгрузить();
Если Выгрузка.Количество() = 1 Тогда
Возврат Не Выгрузка[0].ЭтоЗаказКакСчет;
Иначе
Обработчик = Документы.ПередачаТоваровХранителю.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Возврат Обработчик.ИспользоватьРасширенныеВозможностиЗаказаКлиента();
КонецЕсли;
КонецФункции
&НаСервере
Процедура ОбновитьДокументПоДаннымТорговойПлощадки(Знач АдресХранилищаРасхождений)
Если Не ЭтоАдресВременногоХранилища(АдресХранилищаРасхождений) Тогда
Возврат;
КонецЕсли;
Объект.Товары.Очистить();
Объект.ШтрихкодыУпаковок.Очистить();
РасхожденияРезультат = ПолучитьИзВременногоХранилища(АдресХранилищаРасхождений);
Для Каждого СтрокаТаблицыЗначений Из РасхожденияРезультат.ТоварыРасхождения Цикл
Если СтрокаТаблицыЗначений.КоличествоУпаковок > 0 Тогда
СтрокаТабличнойЧасти = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧасти, СтрокаТаблицыЗначений);
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаТаблицыЗначений Из РасхожденияРезультат.ШтрихкодыУпаковокРасхождения Цикл
Если СтрокаТаблицыЗначений.Количество > 0
И ЗначениеЗаполнено(СтрокаТаблицыЗначений.Ссылка) Тогда
СтрокаТабличнойЧасти = Объект.ШтрихкодыУпаковок.Добавить();
СтрокаТабличнойЧасти.ШтрихкодУпаковки = СтрокаТаблицыЗначений.Ссылка;
КонецЕсли;
КонецЦикла;
ПриЧтенииСозданииНаСервере();
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, Объект);
Модифицированность = Истина;
КонецПроцедуры
#КонецОбласти