#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтого.ЦветФона = Новый Цвет();
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтотОбъект);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
Если Параметры.ЗначенияЗаполнения.Свойство("ЗаполнятьПоОрдеру") Тогда
Модифицированность = Истина;
ПерезаполнитьПоПриемкеСервер();
КонецЕсли;
УстановитьСвойстваЭлементов();
УчетПрослеживаемыхТоваровЛокализация.УстановитьВидимостьКоличестваРНПТ(ЭтотОбъект, Объект.Дата);
ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
ПроверкаКонтрагентовВызовСервераПереопределяемыйУТ.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументССылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.НадписьСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
Элементы.НадписьСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
ИсправлениеДокументов.ПриСозданииНаСервере(ЭтотОбъект, Элементы.СтрокаИсправление);
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
УчетПрослеживаемыхТоваровЛокализация.УстановитьЗаголовокНомерГТД(Элементы, "ТоварыНомерГТД");
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПроверкаКонтрагентовКлиент.ПриОткрытииДокумент(ЭтотОбъект);
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтотОбъект, "СканерШтрихкода");
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Перем ВыполняемаяОперация;
Если ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровПереданныхНаОтветственноеХранение.Форма.Форма" Тогда
ЦеныРассчитаны = Ложь;
ОбработкаВыбораПодборПереданныхТоваров(ВыбранноеЗначение, ЦеныРассчитаны);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
ИначеЕсли ТипЗнч(ВыбранноеЗначение) = Тип("Структура")
И ВыбранноеЗначение.Свойство("ВыполняемаяОперация", ВыполняемаяОперация) Тогда
Если ВРег(ВыполняемаяОперация) = ВРег("ПодборТоваровИзЗаказа") Тогда
ОбработкаПодбораТоваровИзЗаказа(ВыбранноеЗначение.АдресВХранилище);
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(ВыбранноеЗначение.АдресМногооборотнойТарыВХранилище);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий, ВыбранноеЗначение);
ИначеЕсли ЗакупкиКлиент.ЭтоПодборНомераГТД(ИсточникВыбора) Тогда
ОбработатьПодборНомераГТД(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.ВидыЗапасов.Форма.ФормаВводаВидовЗапасов" Тогда
ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение);
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData"
И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ДанныеШтрихкодов = Новый Массив;
КэшированныеЗначения.Штрихкоды.Очистить();
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
Если ИмяСобытия = "Закрытие_РедактированиеКомплекта"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПриОкончанииРедактированияНабора(Параметр.АдресВоВременномХранилище);
КонецЕсли;
Если ИмяСобытия = "РедактироватьНабор"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
ПараметрыНабора = Новый Структура;
ПараметрыНабора.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыНабора.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
ПараметрыНабора.Вставить("КолонкиНабора", КолонкиНабора(ЭтотОбъект));
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыНабора);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("НоменклатураНабора", Параметр.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", Параметр.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтотОбъект, УникальныйИдентификатор);
КонецЕсли;
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.НадписьСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
ИсправлениеДокументовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
ПроверкаКонтрагентовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия, ЭтотОбъект);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
Если ИмяСобытия = "ПриИзмененииДоговора"
И Источник = ЭтотОбъект Тогда
Модифицированность = Истина;
ДоговорПриИзменении(Элементы[Параметр]);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаЗаписиНового(НовыйОбъект, Источник, СтандартнаяОбработка)
Если ЗакупкиКлиент.ЭтоУказаниеНомераГТД(Источник) Тогда
Действия = Новый Структура;
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтотОбъект, Действия);
ЗакупкиКлиент.ОбработатьУказаниеНомераГТД(ЭтотОбъект, НовыйОбъект, , , Действия);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.НадписьСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
ИсправлениеДокументов.ПриЧтенииНаСервере(ЭтотОбъект, Элементы.СтрокаИсправление);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если Не Объект.ПоРаспоряжениям
И ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Отказ = Истина;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ЭтотОбъект", ЭтотОбъект);
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
ИменаКолонок = "Номенклатура,Характеристика,Количество";
ОписаниеОповещения = Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(ЭтотОбъект, "Товары", ИменаКолонок,
ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение(Результат, ДополнительныеПараметры) Экспорт
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
ПроверкаКонтрагентов.ПередЗаписьюНаСервереДокумент(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверкаКонтрагентов.ПриЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Обработчик.НастроитьФорму(ЭтотОбъект, Объект.Номер, Объект.Дата);
ЗаполнитьПризнакРасхождениеЗаказ(Объект.Товары, Объект.ПоРаспоряжениям, ИспользоватьКодСтроки);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
УстановитьСвойстваЭлементов();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.НадписьСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
ПроверкаКонтрагентов.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
РазблокироватьДанныеФормыДляРедактирования();
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Заголовок = "";
АвтоЗаголовок = Истина;
ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_ПоступлениеТоваровОтХранителя", ПараметрыЗаписи, Объект.Ссылка);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаДокумента(ЭтотОбъект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
ИсправлениеДокументовКлиент.ПослеЗаписи(Объект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) Экспорт
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоРаспоряжениюПриИзменении(Элемент)
ПоРаспоряжениямПриИзмененииНаКлиенте();
КонецПроцедуры
&НаКлиенте
Процедура ПоРаспоряжениямПриИзменении(Элемент)
ПоРаспоряжениямПриИзмененииНаКлиенте();
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗаголовокЗаказыНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекстЗаголовка = НСтр("ru='Заказы клиентов (%КоличествоДокументов%)'");
ПараметрыОткрытия = Новый Структура("СписокДокументов, Заголовок", СписокЗаказов, ТекстЗаголовка);
ОткрытьФорму("ОбщаяФорма.ПросмотрСпискаДокументов", ПараметрыОткрытия, ЭтотОбъект, , , , Неопределено,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура НадписьСостояниеЭДОНажатие(Элемент, СтандартнаяОбработка)
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
Если ХозяйственнаяОперацияДоИзменения = Объект.ХозяйственнаяОперация Тогда
Возврат;
КонецЕсли;
Объект.Соглашение = ПредопределенноеЗначение("Справочник.СоглашенияСКлиентами.ПустаяСсылка");
Объект.ПоРаспоряжениям = Ложь;
Объект.Распоряжение = Неопределено;
ХозяйственнаяОперацияПриИзмененииСервер();
ЗаполнитьВидыЦен();
НастроитьФормуПоПорче();
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
Оповещение = Новый ОписаниеОповещения("ДатаПриИзмененииЗавершение", ЭтотОбъект);
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзмененииЗавершение(ПересчитатьЦены, ДополнительныеПараметры) Экспорт
Перем ЦеныРассчитаны;
ДатаПриИзмененииСервер(ПересчитатьЦены, ЦеныРассчитаны);
Если ПересчитатьЦены Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны);
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
ПартнерПриИзмененииСервер();
Если ИспользоватьСоглашенияСКлиентами
И ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
КомиссионерНеВедетУчетПоРНПТ = Ложь;
Возврат;
Иначе
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтХранителя") Тогда
ЦеныПредприятияЗаполнениеКлиент.ЗадатьВопросПересчетаЦеныПриИзмененииДаты(Объект,
Новый ОписаниеОповещения("СоглашениеПриИзмененииВопросЗавершение", ЭтотОбъект));
Иначе
ПриИзмененииСоглашенияСервер(Ложь);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродаж();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзмененииВопросЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
ПриИзмененииСоглашенияСервер(
ЗначениеЗаполнено(Объект.Соглашение)
И Объект.Товары.Количество() > 0
И НЕ ОтветНаВопрос = КодВозвратаДиалога.Отмена
И ОтветНаВопрос);
Если ЗначениеЗаполнено(Объект.Соглашение) Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродаж();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ЭтоВозвратОтКомиссионера = ?(Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера"), Истина, Ложь);
ПараметрыВыбораСоглашения = ПродажиКлиент.ПараметрыНачалаВыбораСоглашенияСКлиентом();
ПараметрыВыбораСоглашения.Элемент = Элемент;
ПараметрыВыбораСоглашения.Партнер = Объект.Партнер;
ПараметрыВыбораСоглашения.Документ = Объект.Соглашение;
ПараметрыВыбораСоглашения.ДатаДокумента = Объект.Дата;
ПараметрыВыбораСоглашения.ДанныеФормыСтруктура = Объект;
ПараметрыВыбораСоглашения.ХозяйственнаяОперация = ?(ЭтоВозвратОтКомиссионера,
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаКомиссию"),
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи"));
ПараметрыВыбораСоглашения.КомиссионныеПродажи25 = ЭтоВозвратОтКомиссионера;
ПродажиКлиент.НачалоВыбораСоглашенияСКлиентом(ПараметрыВыбораСоглашения, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДоговорСоздание(Элемент, СтандартнаяОбработка)
ЗакупкиКлиент.ОткрытьФормуСозданияДоговора(ЭтотОбъект, Элемент, "Объект.Договор", Объект.Партнер, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
Если Договор = Объект.Договор Тогда
Возврат;
КонецЕсли;
ИсходныйВидЦены = Объект.ВидЦены;
Если Объект.ПоРаспоряжениям Тогда
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить("Продолжить", НСтр("ru = 'Очистить товары'"));
СписокКнопок.Добавить("Отвязать", НСтр("ru = 'Отвязать от заказа'"));
ТекстВопроса = НСтр("ru='При изменении склада список ""Товары"" необходимо очистить, либо отвязать строки от заказа. Продолжить?'");
Оповещение = Новый ОписаниеОповещения("ДоговорПриИзмененииЗавершение", ЭтотОбъект);
ПоказатьВопрос(Оповещение, ТекстВопроса, СписокКнопок);
Иначе
ДоговорПриИзмененииСервер(Ложь, Ложь);
ЭтоВозвратОтКомиссионера = ?(Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера"), Истина, Ложь);
Если ЭтоВозвратОтКомиссионера
И ЗначениеЗаполнено(НовыйВидЦены)
И НЕ ИсходныйВидЦены = НовыйВидЦены Тогда
Если Объект.Товары.Количество() > 0 Тогда
ЗадатьВопросПриИзмененииВидаЦены(НовыйВидЦены);
Иначе
Объект.ВидЦены = НовыйВидЦены;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзмененииЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Объект.Договор = Договор;
Возврат;
КонецЕсли;
ОчиститьСтроки =
Результат = "Продолжить";
ОтвязатьСтроки =
Результат = "Отвязать";
ДоговорПриИзмененииСервер(ОчиститьСтроки, ОтвязатьСтроки);
ЭтоВозвратОтКомиссионера = ?(Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера"), Истина, Ложь);
Если ЭтоВозвратОтКомиссионера
И ЗначениеЗаполнено(НовыйВидЦены)
И НЕ ИсходныйВидЦены = НовыйВидЦены Тогда
Если Объект.Товары.Количество() > 0 Тогда
ЗадатьВопросПриИзмененииВидаЦены(НовыйВидЦены);
Иначе
Объект.ВидЦены = НовыйВидЦены;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
Если Склад = Объект.Склад Тогда
Возврат;
КонецЕсли;
Если Объект.ПоРаспоряжениям Тогда
СписокКнопок = Новый СписокЗначений;
СписокКнопок.Добавить("Продолжить", НСтр("ru = 'Очистить товары'"));
СписокКнопок.Добавить("Отвязать", НСтр("ru = 'Отвязать от заказа'"));
ТекстВопроса = НСтр("ru='При изменении склада список ""Товары"" необходимо очистить, либо отвязать строки от заказа. Продолжить?'");
Оповещение = Новый ОписаниеОповещения("СкладПриИзмененииЗавершение", ЭтотОбъект);
ПоказатьВопрос(Оповещение, ТекстВопроса, СписокКнопок);
Иначе
СкладПриИзмененииСервер(Ложь, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзмененииЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Объект.Склад = Склад;
Возврат;
КонецЕсли;
ОчиститьСтроки =
Результат = "Продолжить";
ОтвязатьСтроки =
Результат = "Отвязать";
СкладПриИзмененииСервер(ОчиститьСтроки, ОтвязатьСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
Объект.Валюта = ВалютаДокумента;
Возврат;
КонецЕсли;
ПересчитатьСуммы =
ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента)
И Истина;
ПриИзмененииВалютыСервер(Объект.Валюта, ПересчитатьСуммы);
Если ПересчитатьСуммы Тогда
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
ЗаполнитьВидыЦен();
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.ВидЦены) Тогда
Возврат;
КонецЕсли;
ЗадатьВопросПриИзмененииВидаЦены(Объект.ВидЦены);
КонецПроцедуры
&НаКлиенте
Процедура ЗадатьВопросПриИзмененииВидаЦены(НовыйВидЦены)
Если ЗначениеЗаполнено(НовыйВидЦены) И НЕ ИсходныйВидЦены = НовыйВидЦены Тогда
Если Объект.Товары.Количество() > 0 Тогда
ТекстВопроса = НСтр("ru = 'Заполнить цены по виду цен ""%ВидЦены%""?'");
ТекстВопроса = СтрЗаменить(ТекстВопроса,"%ВидЦены%", НовыйВидЦены);
ПоказатьВопрос(Новый ОписаниеОповещения("ВидЦеныПриИзмененииВопросЗавершение", ЭтотОбъект, НовыйВидЦены), ТекстВопроса,РежимДиалогаВопрос.ДаНет,,КодВозвратаДиалога.Да);
Иначе
Объект.ВидЦены = НовыйВидЦены;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзмененииВопросЗавершение(ОтветНаВопрос, ДополнительныеПараметры) Экспорт
Если ОтветНаВопрос <> Неопределено
И ОтветНаВопрос = КодВозвратаДиалога.Да Тогда
Объект.ВидЦены = ДополнительныеПараметры;
ЗаполнитьЦеныПоВидуЦены();
ИначеЕсли НЕ Объект.ВидЦены = ИсходныйВидЦены Тогда
Объект.ВидЦены = ИсходныйВидЦены;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ВозвратПереданнойМногооборотнойТарыПриИзменении(Элемент)
ВозвратПереданнойМногооборотнойТарыПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура СтрокаИсправлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ИсправлениеДокументовКлиент.СтрокаИсправлениеОбработкаНавигационныйСсылки(
ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы.ТоварыРаспоряжение Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.Распоряжение) Тогда
ПоказатьЗначение(Неопределено, ТекущиеДанные.Распоряжение);
ИначеЕсли ЗначениеЗаполнено(Объект.Распоряжение) Тогда
ПоказатьЗначение(Неопределено, Объект.Распоряжение);
КонецЕсли;
ИначеЕсли НаборыКлиент.БлокируемыйЭлемент(Поле) Тогда
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПараметрОповещения = Новый Структура;
ПараметрОповещения.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрОповещения.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрОповещения.Вставить("ФормаВладелец", УникальныйИдентификатор);
Оповестить("РедактироватьНабор", ПараметрОповещения, ЭтотОбъект);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыНоменклатураНабора Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ПоказатьЗначение(Неопределено, ТекущиеДанные.НоменклатураНабора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Если Копирование Тогда
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтотОбъект, "Товары", Отказ, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
НаборыКлиент.ПередУдалениемСтрокиТабличнойЧасти(ЭтотОбъект, "Товары", Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока
И Объект.ПоРаспоряжениям
И Не ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
ТекущиеДанные.Распоряжение = Объект.Распоряжение;
ИначеЕсли НоваяСтрока
И Объект.ПоРаспоряжениям Тогда
ТекущиеДанные.Распоряжение = Неопределено;
КонецЕсли;
Если Копирование
И Объект.ПоРаспоряжениям Тогда
ТекущиеДанные.КодСтроки = 0;
КонецЕсли;
Если ИспользоватьКодСтроки Тогда
СтруктураДействий = Новый Структура;
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(СтруктураДействий, Объект.ПоРаспоряжениям);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
Иначе
ТекущиеДанные.РасхождениеЗаказ = 0;
КонецЕсли;
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий,
Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
КэшСтроки = РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.Товары, ЭтотОбъект);
Если Не ОтменаРедактирования
И Не ТекущиеДанные.КодСтроки = 0
И (Не ТекущиеДанные.Номенклатура = КэшСтроки.Номенклатура
Или Не ТекущиеДанные.Характеристика = КэшСтроки.Характеристика) Тогда
ТекущиеДанные.КодСтроки = 0;
КонецЕсли;
Если Не ОтменаРедактирования Тогда
СтруктураДействий = Новый Структура;
Если ИспользоватьКодСтроки Тогда
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(
СтруктураДействий, Объект.ПоРаспоряжениям);
Иначе
ТекущиеДанные.РасхождениеЗаказ = 0;
КонецЕсли;
Если ЗначениеЗаполнено(СтруктураДействий) Тогда
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, Неопределено);
КонецЕсли;
ОбновитьЗависимыеРеквизитыФормыПоЗаказам(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
КонецЕсли;
ОбновитьСтатусыСерий =
НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий);
ТекущаяСтрокаИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
ТоварыПриОкончанииРедактированияСервер(ОбновитьСтатусыСерий, КэшированныеЗначения, ТекущаяСтрокаИдентификатор);
Если ОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
ОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий,
Истина);
ТоварыПослеУдаленияСервер(ОбновитьСтатусыСерий, КэшированныеЗначения);
Если ОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТекущаяСтрока.Порча
И ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураОприходование) Тогда
ЕстьГрадация = ПроверитьНаличиеГрадацииСервер(ТекущаяСтрока.Номенклатура, ТекущаяСтрока.НоменклатураОприходование);
Если Не ЕстьГрадация Тогда
ТекущаяСтрока.НоменклатураОприходование = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикаОприходование = ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикиИспользуютсяОприходование = Ложь;
КонецЕсли;
КонецЕсли;
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура, НоменклатураОприходование",
"Артикул",
"АртикулОприходование");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ЗаполнитьПризнакВедетсяУчетПоГТД = Новый Структура("Номенклатура", "ВедетсяУчетПоГТД");
ПроверитьСериюРассчитатьСтатус = Новый Структура;
ПроверитьСериюРассчитатьСтатус.Вставить("Склад", Объект.Склад);
ПроверитьСериюРассчитатьСтатус.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыЗаполненияСтраныПроисхождения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтраныПроисхождения();
НоменклатураПриИзмененииПереопределяемый = Новый Структура;
НоменклатураПриИзмененииПереопределяемый.Вставить("ИмяФормы", ИмяФормы);
НоменклатураПриИзмененииПереопределяемый.Вставить("ИмяТабличнойЧасти", "Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПроверитьСериюРассчитатьСтатус);
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", ЗаполнитьПризнакВедетсяУчетПоГТД);
СтруктураДействий.Вставить("ЗаполнитьСтрануПроисхожденияНоменклатуры", ПараметрыЗаполненияСтраныПроисхождения);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", НоменклатураПриИзмененииПереопределяемый);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ);
ДобавитьВСтруктуруДействияЗаполненияЦен(СтруктураДействий, Объект, ИспользоватьСоглашенияСКлиентами);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Если Не ТекущаяСтрока.ВедетсяУчетПоГТД Тогда
ТекущаяСтрока.НомерГТД = Неопределено;
ТекущаяСтрока.СтранаПроисхождения = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ХарактеристикаПриИзмененииПереопределяемый = Новый Структура;
ХарактеристикаПриИзмененииПереопределяемый.Вставить("ИмяФормы", ИмяФормы);
ХарактеристикаПриИзмененииПереопределяемый.Вставить("ИмяТабличнойЧасти", "Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", ХарактеристикаПриИзмененииПереопределяемый);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ, Ложь);
ДобавитьВСтруктуруДействияЗаполненияЦен(СтруктураДействий, Объект, ИспользоватьСоглашенияСКлиентами);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Элементы.Товары.ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ);
Если Истина
И ТекущаяСтрока.Количество > 0 Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
Иначе
ДобавитьВСтруктуруДействияЗаполненияЦен(СтруктураДействий, Объект, ИспользоватьСоглашенияСКлиентами);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ, Ложь);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуПоСумме");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
Если Элемент.ТекущийЭлемент = Неопределено Тогда
Возврат;
ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТоварыНомерГТД" Тогда
ЗакупкиКлиент.ЗаполнитьСписокВыбораНомеровГТД(Элементы.Товары.ТекущиеДанные, Элементы.ТоварыНомерГТД.СписокВыбора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНомерГТДПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыЗаполнения = Новый Структура("НомерГТД", ТекущиеДанные.НомерГТД);
Действия = Новый Структура;
Действия.Вставить("ЗаполнитьТипНомераГТД", ПараметрыЗаполнения);
Действия.Вставить("ЗаполнитьСтрануПроисхожденияДляНомераГТД", ПараметрыЗаполнения);
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтотОбъект, Действия);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, Действия, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНомерГТДСоздание(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = ЗакупкиКлиент.ДополнительныеПараметрыСозданияНомераГТД();
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, Объект);
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, ЭтотОбъект);
ПараметрыСоздания = ЗакупкиКлиент.ПараметрыСозданияНомераГТД(ТекущиеДанные,
Элемент.ТекстРедактирования,
ДополнительныеПараметры);
ЗакупкиКлиент.ОткрытьФормуСозданияНомераГТД(ЭтотОбъект, ПараметрыСоздания);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПорчаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если Не ТекущаяСтрока.Порча Тогда
ТекущаяСтрока.НоменклатураОприходование = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикаОприходование = ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка");
ТекущаяСтрока.ХарактеристикиИспользуютсяОприходование = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураОприходованиеПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока = Новый Структура;
ТекущаяСтрока.Вставить("Номенклатура", ТекущиеДанные.НоменклатураОприходование);
ТекущаяСтрока.Вставить("ХарактеристикиИспользуются", ТекущиеДанные.ХарактеристикиИспользуютсяОприходование);
ТекущаяСтрока.Вставить("Характеристика", ТекущиеДанные.Характеристика);
ТекущаяСтрока.Вставить("Артикул", ТекущиеДанные.Артикул);
ТекущаяСтрока.Вставить("Серия", ТекущиеДанные.Серия);
ТекущаяСтрока.Вставить("СтатусУказанияСерий", ТекущиеДанные.СтатусУказанияСерий);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущиеДанные.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(
ТекущаяСтрока,
СтруктураДействий,
Неопределено);
ТекущиеДанные.ХарактеристикаОприходование = ТекущаяСтрока.Характеристика;
ТекущиеДанные.ХарактеристикиИспользуютсяОприходование = ТекущаяСтрока.ХарактеристикиИспользуются;
ТекущиеДанные.Серия = ТекущаяСтрока.Серия;
ТекущиеДанные.СтатусУказанияСерий = ТекущаяСтрока.СтатусУказанияСерий;
ТекущиеДанные.АртикулОприходование = ТекущаяСтрока.Артикул;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураОприходованиеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущиеДанные.Характеристика);
Если ЗначениеЗаполнено(ТекущиеДанные.Характеристика) Тогда
СтруктураДействий.Вставить("ЗаполнитьХарактеристикуНекачественногоТовара");
КонецЕсли;
ПараметрыЗаполненияАртикула = Новый Структура;
ПараметрыЗаполненияАртикула.Вставить("Номенклатура", "Артикул");
ПараметрыЗаполненияАртикула.Вставить("НоменклатураИсходногоКачества", "АртикулОприходование");
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", ПараметрыЗаполненияАртикула);
СкладыКлиент.ИзменитьКачество(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыРаспоряжениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ТоварыЗаказКлиентаНачалоВыбораЗавершение", ЭтотОбъект);
ОткрытьПодборРаспоряжения(ОписаниеОповещения);
Возврат;
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтотОбъект, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда,
НавигационнаяСсылка = Неопределено,
СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
ПроверкаКонтрагентовКлиент.ПроверитьКонтрагентовВДокументеПоКнопке(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьВидыЗапасов(Команда)
ПараметрыРедактированияВидовЗапасов = ПоместитьТоварыИВидыЗапасовВХранилище();
ФинансыКлиент.ОткрытьВидыЗапасов(ЭтотОбъект, ПараметрыРедактированияВидовЗапасов);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаявку(Команда)
Если Модифицированность
Или Не Объект.Проведен Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытьЗаявкуЗавершение", ЭтотОбъект);
ТекстВопроса = НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗакрытьЗаявкуФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаявкуЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ПараметрыЗаписи = Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение);
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Возврат;
ИначеЕсли Не Записать(ПараметрыЗаписи) Тогда
Возврат;
КонецЕсли;
ЗакрытьЗаявкуФрагмент();
КонецПроцедуры
#Область ОбработчикиКомандТаблицыФормыТовары
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена();
КоличествоВставленных = Объект.Товары.Количество() - КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ТекущиеДанные = ТаблицаФормы.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ДанныеТаблицы = Объект.Товары;
ИменаРеквизитов = "Количество, Сумма";
ИмяПоляКоличество = "КоличествоУпаковок";
СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.СтруктураПересчетаСуммы(
ИменаРеквизитов, ИмяПоляКоличество);
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ЗаполнитьСтруктуруПересчетаСуммы(СтруктураПересчетаСуммы, ТекущиеДанные);
ДополнительныеПараметры = УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеПараметровРазбиенияСтрокиТабличнойЧасти(ТаблицаФормы.ТекущиеДанные);
ДополнительныеПараметры.Вставить("СтруктураПересчетаСуммы", СтруктураПересчетаСуммы);
ОписаниеОповещения = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект, ДополнительныеПараметры);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
СтруктураПересчетаСуммы = ДополнительныеПараметры.СтруктураПересчетаСуммы;
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ДобавитьСтрокуДляПересчетаСуммы(СтруктураПересчетаСуммы, ТекущаяСтрока);
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ДобавитьСтрокуДляПересчетаСуммы(СтруктураПересчетаСуммы, НоваяСтрока);
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПересчитатьСуммы(СтруктураПересчетаСуммы);
СтруктураДействий = Новый Структура;
ДобавитьДействиеПересчитатьКоличествоЕдиниц(Объект.ХозяйственнаяОперация, СтруктураДействий, Объект.Склад);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура СоставНабора(Команда)
ВыбраннаяСтрока = Элементы.Товары.ТекущаяСтрока;
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если НЕ ЗначениеЗаполнено(ТекущаяСтрока.НоменклатураНабора) Тогда
ПоказатьПредупреждение(,НСтр("ru = 'Открытие состава набора возможно только для набора.'"));
Возврат;
КонецЕсли;
ПараметрыКомплекта = Новый Структура;
ПараметрыКомплекта.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыКомплекта.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыКомплекта.Вставить("КолонкиНабора", КолонкиНабора(ЭтотОбъект));
АдресНабораВоВременномХранилище = АдресНабораВоВременномХранилище(ПараметрыКомплекта);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("Дата", Объект.Дата);
ПараметрыОткрытия.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("Валюта", Объект.Валюта);
ПараметрыОткрытия.Вставить("НоменклатураНабора", ТекущаяСтрока.НоменклатураНабора);
ПараметрыОткрытия.Вставить("ХарактеристикаНабора", ТекущаяСтрока.ХарактеристикаНабора);
ПараметрыОткрытия.Вставить("СкрыватьКомандуОстаткиНаСкладах", Ложь);
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресНабораВоВременномХранилище);
ПараметрыОткрытия.Вставить("Организация", Объект.Организация);
ОткрытьФорму("Обработка.РедактированиеНабора.Форма.Форма", ПараметрыОткрытия, ЭтотОбъект, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(Оповещение, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(РезультатВыполнения, Параметры) Экспорт
Если РезультатВыполнения.Результат Тогда
ОбработатьШтрихкоды(РезультатВыполнения.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВес(Команда)
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтотОбъект);
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект, ТекущаяСтрока);
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(Оповещение, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, ТекущаяСтрока) Экспорт
Если РезультатВыполнения.Результат Тогда
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ);
ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументе(Команда)
АдресТоваровВоВременномХранилище = ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества();
ПревышениеКоличестваТоваровРазрешено = Не Объект.ПоРаспоряжениям;
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("ИмяТабличнойЧасти", "Товары");
ПараметрыОткрытия.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресТоваровВоВременномХранилище);
ПараметрыОткрытия.Вставить("ПревышениеКоличестваТоваровРазрешено", ПревышениеКоличестваТоваровРазрешено);
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьКоличествоВДокументеЗавершение", ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.ПроверкаЗаполненияДокументов", ПараметрыОткрытия, ЭтотОбъект, , , , ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ОтвязатьОтЗаказа(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() > 0 Тогда
Для Каждого ТекСтрока Из ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
СтрокаТаблицы.КодСтроки = 0;
СтрокаТаблицы.РасхождениеЗаказ = 1;
КонецЦикла;
ОбновитьЗависимыеРеквизитыФормыПоЗаказам(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
ОповеститьОбОкончанииОтвязкиСтрок(ВыделенныеСтроки.Количество());
Иначе
ТекстПредупреждения = НСтр("ru = 'Выберите строки, которые необходимо отвязать от заказа.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
Модифицированность = Истина;
КэшированныеЗначения = ?(КэшированныеЗначения = Неопределено,
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения(),
КэшированныеЗначения);
ИзменитьТабличнуюЧастьПоРезультатамПроверки(Результат, КэшированныеЗначения);
ОбщегоНазначенияУТКлиент.ВывестиСообщениеПревышенияПоКоличеству(Результат, НСтр("ru = 'введенного на основании распоряжения.'"));
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерии(Команда)
ОткрытьПодборСерий();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодбор(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПоступлениеТоваровОтХранителя.ФормаДокумента.Команда.ОткрытьПодбор");
Отказ = Ложь;
Если (ИспользоватьСоглашенияСКлиентами
И Не ЗначениеЗаполнено(Объект.Соглашение))
Или Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
СообщитьОбОшибкахОткрытияПодбора(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрЗаголовок = НСтр("ru = 'Подбор товаров в %Документ%'");
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", Объект.Ссылка);
Иначе
ПараметрЗаголовок = СтрЗаменить(ПараметрЗаголовок, "%Документ%", НСтр("ru = 'поступление товаров от хранителя'"));
КонецЕсли;
ОтборПоТипуНоменклатуры = Новый ФиксированныйМассив(ОтборПоТоваруМногооборотнойТаре(Объект.ХозяйственнаяОперация));
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("Заголовок", ПараметрЗаголовок);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Соглашение", Объект.Соглашение);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", ОтборПоТипуНоменклатуры);
ПараметрыФормы.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
ПараметрыФормы.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ПараметрыФормы.Вставить("ВозвращатьМногооборотнуюТару", Объект.ВозвратПереданнойМногооборотнойТары);
ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтотОбъект, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьПереданныеТовары(Команда)
Отказ = Ложь;
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
ТекстОшибки = СтрШаблон(НСтр("ru = 'Поле ""%1"" не заполнено'"), Элементы.Партнер.Заголовок);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Партнер", "", Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Организация) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Организация"" не заполнено'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Организация", "", Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Договор) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Договор"" не заполнено'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Договор", "", Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Владелец", Объект.Партнер);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("Договор", Объект.Договор);
ПараметрыФормы.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыФормы.Вставить("МенеджерОбъекта", "Документ.ПоступлениеТоваровОтХранителя");
ПараметрыФормы.Вставить("Заголовок", ЗаголовокФормыПодбораПереданныхТоваров);
ОткрытьФорму("Обработка.ПодборТоваровПереданныхНаОтветственноеХранение.Форма.Форма", ПараметрыФормы, ЭтотОбъект,
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыПоЗаказамОрдерам(Команда)
ОткрытьПодборПоРаспоряжениямОрдерам();
КонецПроцедуры
&НаКлиенте
Процедура ПерезаполнитьПоПриемке(Команда)
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ПерезаполнитьПоПоступлениюОтветПользователя", ЭтотОбъект);
ТекстВопроса = НСтр("ru = 'Для заполнения по приемке необходимо предварительно записать документ. Выполнить запись документа и продолжить?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ПерезаполнитьПоПриемкеСервер();
ТекстСообщения = НСтр("ru = 'Количество перезаполнено'");
ТекстПояснения = НСтр("ru='В строках перезаполнено количество.'");
ПоказатьОповещениеПользователя(ТекстСообщения, , ТекстПояснения, БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПерезаполнитьПоПоступлениюОтветПользователя(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
ПараметрыЗаписи = Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Запись);
Записать(ПараметрыЗаписи);
КонецЕсли;
Если Объект.Проведен Тогда
ПерезаполнитьПоПриемкеСервер();
ТекстСообщения = НСтр("ru = 'Количество перезаполнено'");
ТекстПояснения = НСтр("ru='В строках перезаполнено количество.'");
ПоказатьОповещениеПользователя(ТекстСообщения, , ТекстПояснения, БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(ЭтотОбъект, "Товары", "Номенклатура,Характеристика,Количество");
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоВидуЦен(Команда)
ОчиститьСообщения();
ЗаполнитьЦеныПоВидуЦены(Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
ПараметрыЗагрузки.Организация = Объект.Организация;
ПараметрыЗагрузки.ЗагружатьЦены = Истина;
ПараметрыЗагрузки.ЗагружатьГТД = Истина;
ПараметрыЗагрузки.ЭтоВозвратнаяТара = Объект.ВозвратПереданнойМногооборотнойТары;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Дата = Объект.Дата;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Валюта = Объект.Валюта;
ПараметрыЗагрузки.ПараметрыЦенКомплектующих.Соглашение = Объект.Соглашение;
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
ОтборПоТоваруМногооборотнойТаре(Объект.ХозяйственнаяОперация));
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНомераГТДПоПереданнымТоварам(Команда)
ЕстьЗаполненныеНомераГТД = Ложь;
Для Каждого Стр Из Объект.Товары Цикл
Если ЗначениеЗаполнено(Стр.НомерГТД) Тогда
ЕстьЗаполненныеНомераГТД = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЕстьЗаполненныеНомераГТД Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ОбработатьОтветНаВопросОЗаполненииНомеровГТД", ЭтотОбъект);
ТекстВопроса = НСтр("ru = 'Будут очищены и перезаполнены номера ГТД. Продолжить?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ЗаполнитьНомераГТДПоПереданнымТоварамНаСервере();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьОтветНаВопросОЗаполненииНомеровГТД(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ЗаполнитьНомераГТДПоПереданнымТоварамНаСервере();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоДоговору(Команда)
ВидЦеныДоговора = УчетныйВидЦеныДоговора();
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВиду(Объект, ВидЦеныДоговора) Тогда
ТекстОшибки = "";
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер(ТекстОшибки);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоСоглашению(ЦеныРассчитаны, ТекстОшибки);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ВозвратПорчи(Команда)
Если Объект.ВозвратПорчи Тогда
ЕстьСтрокиСПорчей = ПроверитьОтключитьНастроитьФормуПоПорче();
Если ЕстьСтрокиСПорчей Тогда
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ПоступлениеОтПереработчика2_5") Тогда
ТекстВопроса =
НСтр("ru = 'При выполнении операции будет очищена информация о качестве поступающих товаров. Продолжить?'");
Иначе
ТекстВопроса =
НСтр("ru = 'При выполнении операции будет очищена информация о качестве возвращаемых товаров. Продолжить?'");
КонецЕсли;
ПоказатьВопрос(Новый ОписаниеОповещения("ВозвратПорчиЗавершение", ЭтотОбъект),
ТекстВопроса,
РежимДиалогаВопрос.ДаНет,,
КодВозвратаДиалога.Да);
КонецЕсли;
Иначе
Объект.ВозвратПорчи = Истина;
НастроитьФормуПоПорче();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект, Элементы.ДекорацияСостояниеОригинала);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ПриИзмененииКлючевыхРеквизитовСостояниеЭДО()
ПараметрыПриИзменении = ОбменСКонтрагентами.ПараметрыПриИзмененииКлючевыхРеквизитовЭДО();
ПараметрыПриИзменении.Форма = ЭтотОбъект;
ПараметрыПриИзменении.ДокументСсылка = Объект.Ссылка;
ПараметрыПриИзменении.ДокументОбъект = РеквизитФормыВЗначение("Объект");
ПараметрыПриИзменении.КонтроллерСостояниеЭДО = Элементы.НадписьСостояниеЭДО;
ПараметрыПриИзменении.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриИзмененииКлючевыхРеквизитовЭДО(ПараметрыПриИзменении);
КонецПроцедуры
&НаКлиенте
Процедура ПоРаспоряжениямПриИзмененииНаКлиенте()
Если Объект.ПоРаспоряжениям Тогда
Если Не ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ПоРаспоряжениямПриИзмененииОткрытьПодборРаспоряженияЗавершение", ЭтотОбъект);
ОткрытьПодборРаспоряжения(ОписаниеОповещения);
Возврат;
Иначе
Если Объект.Товары.Количество() = 0 Тогда
ТекстВопроса = НСтр("ru='Список ""Товары"" будет перезаполнен остатками неоформленных товаров по заказам. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Строки в списке ""Товары"" будут привязаны к строкам заказов. Продолжить?'");
КонецЕсли;
КонецЕсли;
Иначе
Если Не Объект.Товары.Количество() = 0 Тогда
Если ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
ТекстВопроса =
НСтр("ru='Строки в списке ""Товары"" перестанут быть связанными со строками заказов. Продолжить?'");
Иначе
ТекстВопроса =
НСтр("ru='Строки в списке ""Товары"" перестанут быть связанными со строками заказа. Продолжить?'");
КонецЕсли;
Иначе
ПоРаспоряжениямПриИзмененииНаСервере();
Возврат;
КонецЕсли;
КонецЕсли;
ПоРаспоряжениямПриИзмененииЗадатьВопрос(ТекстВопроса);
КонецПроцедуры
&НаКлиенте
Процедура ПоРаспоряжениямПриИзмененииЗадатьВопрос(ТекстВопроса)
ОписаниеОповещения = Новый ОписаниеОповещения("ПоРаспоряжениямПриИзмененииЗадатьВопросЗавершение", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ПоРаспоряжениямПриИзмененииЗадатьВопросЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ПоРаспоряжениямПриИзмененииНаСервере();
Иначе
Объект.ПоРаспоряжениям = Не Объект.ПоРаспоряжениям;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоРаспоряжениямПриИзмененииОткрытьПодборРаспоряженияЗавершение(Результат, ДополнительныеПараметры) Экспорт
Объект.Распоряжение = Результат;
Если Не ЗначениеЗаполнено(Объект.Распоряжение) Тогда
Объект.ПоРаспоряжениям = Ложь;
Возврат;
КонецЕсли;
ПоРаспоряжениямПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПоРаспоряжениямПриИзмененииНаСервере()
Если Объект.ПоРаспоряжениям Тогда
Если Объект.Товары.Количество() = 0
Или Не ИспользоватьКодСтроки Тогда
ЗаполнитьПоЗаказуНаСервере();
Иначе
ПривязатьСтрокиКЗаказам(Не ИспользоватьПоступлениеПоНесколькимЗаказам);
КонецЕсли;
ЗаполнитьПризнакРасхождениеЗаказ(Объект.Товары, Объект.ПоРаспоряжениям, ИспользоватьКодСтроки);
ОчиститьОтключитьНастроитьФормуПоПорче();
Иначе
СписокЗаказов.Очистить();
ОтвязатьОтЗаказаСервер(Истина, Ложь);
Объект.Распоряжение = Неопределено;
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
НастроитьФормуПоПорче();
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
ОбновитьЗависимыеРеквизитыФормыПоЗаказам(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
УстановитьСвойстваЭлементов();
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииСервер()
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(Объект.ХозяйственнаяОперация);
ИспользоватьРаспоряжения = Обработчик.ИспользоватьРаспоряжения();
ИспользоватьКодСтроки = Обработчик.ИспользоватьКодСтроки();
ИспользоватьПоступлениеПоНесколькимЗаказам = Обработчик.ИспользоватьПоступлениеПоНесколькимЗаказам();
ХозяйственнаяОперацияДоговора = Обработчик.ХозяйственнаяОперацияДоговора();
ИспользоватьСоглашенияСКлиентами =
Обработчик.СоглашенияСКлиентамиПрименимы()
И Обработчик.ИспользоватьСоглашенияСКлиентами();
ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере();
ПоРаспоряжениямПриИзмененииНаСервере();
Обработчик.ПересчитатьКоличествоЕдиниц(Объект);
ДоговорПриИзмененииСервер(Ложь, Ложь);
УстановитьВидЦеныПоУмолчанию();
Обработчик.НастроитьПараметрыВыбораЭлементов(ЭтотОбъект, Объект);
Обработчик.НастроитьФорму(ЭтотОбъект, Объект.Номер, Объект.Дата);
ПараметрыУказанияСерий = ПараметрыУказанияСерий();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ХозяйственнаяОперацияДоИзменения = Объект.ХозяйственнаяОперация;
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииСервер(ПересчитатьЦены, ЦеныРассчитаны)
Если ПересчитатьЦены Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоСоглашениюСервер();
Иначе
ЦеныРассчитаны = Ложь;
КонецЕсли;
ИспользоватьУчетПрослеживаемыхИмпортныхТоваров = УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(
Объект.Дата);
ОпределитьНаличиеОрдернойСхемы();
ЗаполнитьУстановитьВидимостьСерий();
УстановитьДоступностьПерезаполненияПоПриемке();
УчетПрослеживаемыхТоваровЛокализация.УстановитьВидимостьКоличестваРНПТ(ЭтотОбъект, Объект.Дата);
Если Не Элементы.ТоварыГруппаКоличествоПоРНПТ.Видимость Тогда
ПересчитатьКоличествоРНПТ();
КонецЕсли;
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
&НаСервере
Процедура ПартнерПриИзмененииСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоУмолчанию();
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(ДокументПродажи);
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
ВалютаДокумента = Объект.Валюта;
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
КонецЕсли;
ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере();
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Обработчик.УстановитьДоступностьДоговора(ЭтотОбъект, Объект, Объект.Договор);
Обработчик.НастроитьФорму(ЭтотОбъект, Объект.Номер, Объект.Дата);
СкладПриИзмененииСервер(Ложь, Объект.ПоРаспоряжениям);
ЗаполнитьВидыЦен();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Обработчик.УстановитьДоступностьДоговора(ЭтотОбъект, Объект, Объект.Договор);
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ЗаполнитьВидыЦен();
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСоглашенияСервер(ПересчитатьЦены = Истина)
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоСоглашению(ПересчитатьЦены);
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(ДокументПродажи);
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
ВалютаДокумента = Объект.Валюта;
ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере();
Если Договор <> Объект.Договор Тогда
Договор = Объект.Договор;
КонецЕсли;
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Обработчик.УстановитьДоступностьДоговора(ЭтотОбъект, Объект, Объект.Договор);
Обработчик.НастроитьФорму(ЭтотОбъект, Объект.Номер, Объект.Дата);
СкладПриИзмененииСервер(Ложь, Объект.ПоРаспоряжениям);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
НаправлениедеятельностиСтарое = Объект.НаправлениеДеятельности;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Обработчик.УстановитьДоступностьДоговора(ЭтотОбъект, Объект, Объект.Договор);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ЗаполнитьВидыЦен();
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
ПересчитатьКоличествоРНПТ();
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииСервер(ОчиститьСтроки, ОтвязатьСтроки)
Если ОчиститьСтроки
Или (ОтвязатьСтроки
И Не ИспользоватьКодСтроки) Тогда
Объект.ПоРаспоряжениям = Ложь;
Объект.Распоряжение = Неопределено;
Если ОчиститьСтроки Тогда
Объект.Товары.Очистить();
КонецЕсли;
ПоРаспоряжениямПриИзмененииНаСервере();
УстановитьСвойстваЭлементов();
ИначеЕсли ОтвязатьСтроки Тогда
ОтвязатьОтЗаказаСервер(Истина, Ложь);
ОбновитьИнформациюПоЗаказам();
ОбновитьЗависимыеРеквизитыФормыПоЗаказам(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
КонецЕсли;
РеквизитыДоговора = Новый Структура("Валюта, Подразделение", "ВалютаВзаиморасчетов");
Справочники.ДоговорыКонтрагентов.ЗаполнитьРеквизитыДокумента(Объект, Объект.Договор, РеквизитыДоговора);
Если ИспользоватьНаправленияДеятельности
И Не Объект.ПоРаспоряжениям Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение,
Объект.Договор);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
Договор = Объект.Договор;
ПриИзмененииКлючевыхРеквизитовСостояниеЭДО();
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
Если ЗначениеЗаполнено(Договор) Тогда
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
ВалютаВзаиморасчетовДоговора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ВалютаВзаиморасчетов");
Если Объект.Валюта <> ВалютаВзаиморасчетовДоговора Тогда
ИсходныйВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
Объект.Валюта = ВалютаВзаиморасчетовДоговора;
КонецЕсли;
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
НовыйВидЦены = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор,"ВидЦенУчетный");
КонецЕсли;
ЗаполнитьВидыЦен();
ПересчитатьКоличествоРНПТ();
КонецПроцедуры
&НаСервере
Процедура СкладПриИзмененииСервер(ОчиститьСтроки, ОтвязатьСтроки)
Если ОчиститьСтроки
Или (ОтвязатьСтроки
И Не ИспользоватьКодСтроки) Тогда
Объект.ПоРаспоряжениям = Ложь;
Объект.Распоряжение = Неопределено;
Если ОчиститьСтроки Тогда
Объект.Товары.Очистить();
КонецЕсли;
ПоРаспоряжениямПриИзмененииНаСервере();
УстановитьСвойстваЭлементов();
ИначеЕсли ОтвязатьСтроки Тогда
ОтвязатьОтЗаказаСервер(Истина, Ложь);
ОбновитьИнформациюПоЗаказам();
ОбновитьЗависимыеРеквизитыФормыПоЗаказам(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
КонецЕсли;
ОпределитьНаличиеОрдернойСхемы();
ЗаполнитьУстановитьВидимостьСерий();
УстановитьДоступностьПерезаполненияПоПриемке();
Склад = Объект.Склад;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииВалютыСервер(НоваяВалюта, ПересчитатьСуммы)
Если ПересчитатьСуммы Тогда
ВыполнитьПересчетСуммДокументаСервер(ВалютаДокумента, НоваяВалюта);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
&НаСервере
Процедура ВозвратПереданнойМногооборотнойТарыПриИзмененииСервер()
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаказКлиентаНачалоВыбораЗавершение(Результат, ДополнительныеПараметры) Экспорт
Элементы.Товары.ТекущиеДанные.Распоряжение = Результат;
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
#КонецОбласти
#Область РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьРезультатПроверкиКонтрагентов()
ПроверкаКонтрагентовКлиент.ОбработатьРезультатПроверкиКонтрагентовВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт
ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Элементы,
МассивЭлементов,
"Доступность",
Истина);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Элементы,
МассивЭлементов,
"Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", ОтборПоТоваруМногооборотнойТаре(Объект.ХозяйственнаяОперация));
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,НомерГТД,
|НоменклатураНабора,ХарактеристикаНабора,Порча,НоменклатураОприходование,ХарактеристикаОприходование";
Колонки = Колонки + ",Цена";
Если ИспользоватьКодСтроки Тогда
Колонки = "Распоряжение," + Колонки;
КонецЕсли;
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
СтруктураДействий);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ);
Если ИспользоватьКодСтроки Тогда
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(СтруктураДействий, Объект.ПоРаспоряжениям);
КонецЕсли;
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
Если Не Объект.ВозвратПорчи
И ТекущаяСтрока.Порча Тогда
ТекущаяСтрока.Порча = Ложь;
ТекущаяСтрока.НоменклатураОприходование = Справочники.Номенклатура.ПустаяСсылка();
ТекущаяСтрока.ХарактеристикаОприходование = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
КонецЕсли;
Если Не ИспользоватьКодСтроки Тогда
ТекущаяСтрока.РасхождениеЗаказ = 0;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
ОбновитьИнформациюПоЗаказам();
ОбновитьЗависимыеРеквизитыФормыПоЗаказам(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область Наборы
&НаСервере
Процедура ПриОкончанииРедактированияНабора(АдресВоВременномХранилище)
Данные = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура", "Артикул");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ЗаполнитьПризнакХарактеристикиИспользуются = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
СтруктураДействийСДобавленнымиСтроками = ОбщегоНазначения.СкопироватьРекурсивно(
СтруктураДействийСИзмененнымиСтроками);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
ЗаполнитьПризнакХарактеристикиИспользуются);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары",
Объект.ВозвратПереданнойМногооборотнойТары);
ПараметрыДанных = Новый Структура;
ПараметрыДанных.Вставить("Данные", Данные);
ПараметрыДанных.Вставить("СтруктураДействийСИзмененнымиСтроками", СтруктураДействийСИзмененнымиСтроками);
ПараметрыДанных.Вставить("СтруктураДействийСДобавленнымиСтроками", СтруктураДействийСДобавленнымиСтроками);
ПараметрыДанных.Вставить("КолонкиНабора", КолонкиНабора(ЭтотОбъект));
НаборыСервер.ПриОкончанииРедактированияНабора(ЭтотОбъект, "Товары", ПараметрыДанных);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция КолонкиНабора(Форма)
Колонки = Новый Массив;
Колонки.Добавить("Номенклатура");
Колонки.Добавить("Характеристика");
Колонки.Добавить("Упаковка");
Колонки.Добавить("Количество");
Колонки.Добавить("КоличествоУпаковок");
Колонки.Добавить("Цена");
Колонки.Добавить("Сумма");
Возврат Колонки;
КонецФункции
&НаСервере
Функция АдресНабораВоВременномХранилище(Параметры)
Возврат НаборыСервер.АдресНабораВоВременномХранилище(ЭтотОбъект, Параметры, "Товары");
КонецФункции
&НаКлиенте
Процедура ПриУдаленииКомплектующих(Действие, ДополнительныйПараметр) Экспорт
Если НаборыКлиент.ДействиеРедактироватьНабор(Действие) Тогда
НаборыКлиент.ПриУдаленииКомплектующих(ЭтотОбъект, "Товары", ДополнительныйПараметр);
ИначеЕсли НаборыКлиент.ДействиеУдалитьВесьНабор(Действие) Тогда
ПриУдаленииКомплектующихНаСервере("Товары", ДополнительныйПараметр);
КонецЕсли;
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриУдаленииКомплектующихНаСервере(ИмяТЧ, ДополнительныйПараметр)
НаборыСервер.ПриУдаленииКомплектующих(ЭтотОбъект, ИмяТЧ, ДополнительныйПараметр);
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура", "Артикул");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ЗаполнитьПризнакВедетсяУчетПоГТД = Новый Структура("Номенклатура", "ВедетсяУчетПоГТД");
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", ЗаполнитьПризнакВедетсяУчетПоГТД);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакБезВозвратнойТары",
Объект.ВозвратПереданнойМногооборотнойТары);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействийСДобавленнымиСтроками);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(
СтруктураДействийСДобавленнымиСтроками, Объект, КомиссионерНеВедетУчетПоРНПТ);
ДобавитьВСтруктуруДействияЗаполненияЦен(СтруктураДействийСДобавленнымиСтроками, Объект,
ИспользоватьСоглашенияСКлиентами);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(
СтруктураДействийСИзмененнымиСтроками, Объект, КомиссионерНеВедетУчетПоРНПТ);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
СтруктураДействий.ТолькоТовары = Истина;
ОбработатьШтрихкодыСервер(СтруктураДействий, КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий, КэшированныеЗначения, ЭтотОбъект);
ОткрытьФормуУказанияСерий = ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(
СтруктураДействий);
Если ОткрытьФормуУказанияСерий Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры", 0.1, Истина);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия,КэшированныеЗначения)
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтотОбъект, Объект, СтруктураПараметровДействия, КэшированныеЗначения);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СписокСвойств = "НоменклатураНабора, Номенклатура, Характеристика, ХарактеристикаНабора, Упаковка, Серия,
|КоличествоУпаковок";
СписокСвойств = СписокСвойств + ", Цена";
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
Если ИспользоватьКодСтроки Тогда
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(
СтруктураДействий, Объект.ПоРаспоряжениям);
КонецЕсли;
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, СписокСвойств);
Если Не ИспользоватьКодСтроки Тогда
ТекущаяСтрока.РасхождениеЗаказ = 0;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
ОбновитьЗависимыеРеквизитыФормыПоЗаказам(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборПереданныхТоваров(ВыбранноеЗначение, ЦеныРассчитаны)
МассивСтрок = Новый Массив;
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
ПараметрыЗаполненияЦен = Новый Структура();
ПараметрыЗаполненияЦен.Вставить("ПоляЗаполнения", "Цена");
ПараметрыЗаполненияЦен.Вставить("Дата", Объект.Дата);
ПараметрыЗаполненияЦен.Вставить("Организация", Объект.Организация);
ПараметрыЗаполненияЦен.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполненияЦен.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
Если ИспользоватьКодСтроки Тогда
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(
СтруктураДействий, Объект.ПоРаспоряжениям);
КонецЕсли;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтотОбъект, СтруктураДействий);
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
Если Не ИспользоватьКодСтроки Тогда
ТекущаяСтрока.РасхождениеЗаказ = 0;
КонецЕсли;
ТекущаяСтрока.Количество = СтрокаТовара.КоличествоПодобрано;
МассивСтрок.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
МассивСтрок,
СтруктураДействий,
Объект.Товары);
ОбновитьЗависимыеРеквизитыФормыПоЗаказам(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
СтруктураДействийРасчетаЦен = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(
СтруктураДействийРасчетаЦен, Объект, КомиссионерНеВедетУчетПоРНПТ, Ложь);
СтруктураДействийРасчетаЦен.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
ЦеныРассчитаны =
ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
МассивСтрок,
ПараметрыЗаполненияЦен,
СтруктураДействийРасчетаЦен);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПодбораТоваровИзЗаказа(АдресВХранилище)
Таблица = ПолучитьИзВременногоХранилища(АдресВХранилище).Товары;
ИменаПолей = "НомерСтроки";
Таблица.Сортировать(ИменаПолей + " Убыв");
ДеревоСтрок = Новый Массив;
СтруктураПоиска = Новый Структура(ИменаПолей);
Для Каждого СтрокаТаблицы Из Таблица Цикл
Если СтруктураПоиска.НомерСтроки <> СтрокаТаблицы.НомерСтроки Тогда
МассивСтрок = Новый Массив;
ДеревоСтрок.Добавить(МассивСтрок);
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТаблицы);
КонецЕсли;
МассивСтрок.Добавить(СтрокаТаблицы);
КонецЦикла;
ПоляСвязиСЗаказом = Новый Структура("КодСтроки", 0);
НакладныеСервер.ЗаполнитьТоварыПодобраннымиИзЗаказа(ДеревоСтрок, ИменаПолей, Объект.Товары, ПоляСвязиСЗаказом);
Если ЗначениеЗаполнено(Объект.ВидЦены) Тогда
ЗаполнитьЦеныПоВидуЦеныСервер();
КонецЕсли;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ);
ЗаполнитьПризнакРасхождениеЗаказ(Объект.Товары, Объект.ПоРаспоряжениям, ИспользоватьКодСтроки);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбновитьИнформациюПоЗаказам();
ОбновитьЗависимыеРеквизитыФормыПоЗаказам(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества()
КолонкиГруппировки =
"НоменклатураНабора,
|ХарактеристикаНабора,
|Номенклатура,
|ТипНоменклатуры,
|Характеристика,
|ХарактеристикиИспользуются,
|Упаковка,
|Серия,
|СтатусУказанияСерий,
|ИдентификаторСтроки";
ВыгружаемыеКолонки = КолонкиГруппировки + ", КоличествоУпаковок";
ТабличнаяЧастьТовары = Объект.Товары.Выгрузить(, ВыгружаемыеКолонки);
ТабличнаяЧастьТовары.Свернуть(КолонкиГруппировки, "КоличествоУпаковок");
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ТабличнаяЧастьТовары, УникальныйИдентификатор);
Возврат АдресВоВременномХранилище;
КонецФункции
&НаСервере
Процедура ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, КэшированныеЗначения)
ТаблицаТовары = ПолучитьИзВременногоХранилища(ВозвращаемыеПараметры.Товары);
ОбрабатываемыеСтроки = Новый Массив;
ОбрабатываемыеСтрокиНовые = Новый Массив;
УдаляемыеСтроки = Новый Массив;
КолонкиОтбора =
"НоменклатураНабора,
|ХарактеристикаНабора,
|Номенклатура,
|Характеристика,
|ХарактеристикиИспользуются,
|Упаковка,
|Серия,
|ИдентификаторСтроки";
Для Каждого СтрокаИсточник Из ТаблицаТовары Цикл
Отбор = Новый Структура(КолонкиОтбора);
ЗаполнитьЗначенияСвойств(Отбор, СтрокаИсточник);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
Если СтрокаИсточник.КоличествоУпаковок = 0 Тогда
Прервать;
КонецЕсли;
Если СтрокаИсточник.КоличествоУпаковок >= 0 Тогда
СтрокаТЧ.КоличествоУпаковок = СтрокаТЧ.КоличествоУпаковок + СтрокаИсточник.КоличествоУпаковок;
СтрокаИсточник.КоличествоУпаковок = 0;
Иначе
КоличествоКСписанию = -СтрокаИсточник.КоличествоУпаковок;
КоличествоВСтроке = СтрокаТЧ.КоличествоУпаковок;
Если КоличествоКСписанию > КоличествоВСтроке Тогда
СтрокаИсточник.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
СтрокаТЧ.КоличествоУпаковок = 0;
Иначе
СтрокаИсточник.КоличествоУпаковок = 0;
СтрокаТЧ.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
КонецЕсли;
КонецЕсли;
Если СтрокаТЧ.КоличествоУпаковок = 0 Тогда
УдаляемыеСтроки.Добавить(СтрокаТЧ);
Иначе
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТЧ = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаИсточник);
ОбрабатываемыеСтрокиНовые.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьЦенуПродажи = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект, Истина);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", Новый Структура("Номенклатура", "ВедетсяУчетПоГТД"));
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ЗаполнитьЦенуПродажи);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтрокиНовые,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Для Каждого СтрокаТЧ Из УдаляемыеСтроки Цикл
Объект.Товары.Удалить(СтрокаТЧ);
КонецЦикла;
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
КонецПроцедуры
#КонецОбласти
#Область Ценообразование
&НаСервере
Функция ЗаполнитьЦеныПоСоглашениюСервер(ТекстОшибки = "")
ПараметрыЗаполнения = Новый Структура();
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера Тогда
ПараметрыЗаполнения.Вставить("ВидЦены", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор,"ВидЦенУчетный"));
КонецЕсли;
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВернутьМногооборотнуюТару", Объект.ВозвратПереданнойМногооборотнойТары);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена");
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(
СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ, Ложь);
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(Объект.Товары, Неопределено, ПараметрыЗаполнения, СтруктураДействий);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Возврат ЦеныРассчитаны;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьЦеныПоВидуЦены(ВыделенныеСтроки = Неопределено)
ИмяТабличнойЧасти = "Товары";
ПредставлениеТабличнойЧасти = НСтр("ru='Товары'");
ЗаполнитьЦены = ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦен(Объект, ИмяТабличнойЧасти, ПредставлениеТабличнойЧасти);
Если ЗаполнитьЦены Тогда
Если Не ЗначениеЗаполнено(Объект.ВидЦены) Тогда
ТекстПредупреждения = НСтр("ru='В документе не указан вид цены. Цены не могут быть заполнены'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Иначе
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦеныСервер(ВыделенныеСтроки);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьЦеныПоВидуЦеныСервер(Знач ВыделенныеСтроки = Неопределено)
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена");
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦены", Объект.ВидЦены);
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(
СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ, Ложь);
СтрокиКЗаполнению = Неопределено;
Если Не ВыделенныеСтроки = Неопределено Тогда
СтрокиКЗаполнению = Новый Массив;
Для Каждого ТекИдентификатор Из ВыделенныеСтроки Цикл
СтрокиКЗаполнению.Добавить(Объект.Товары.НайтиПоИдентификатору(ТекИдентификатор));
КонецЦикла;
КонецЕсли;
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(Объект.Товары, СтрокиКЗаполнению, ПараметрыЗаполнения, СтруктураДействий);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Возврат ЦеныРассчитаны;
КонецФункции
#КонецОбласти
#Область Серии
&НаСервере
Функция ПараметрыУказанияСерий()
МенеджерОбъекта = Документы.ПоступлениеТоваровОтХранителя;
Возврат Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, МенеджерОбъекта));
КонецФункции
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(,ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
НуженСерверныйВызов =
НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(
ЭтотОбъект,
ПараметрыУказанияСерий,
Текст,
ТекущиеДанные);
Если НуженСерверныйВызов Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
ДополнительныеПараметры = Новый Структура("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий);
ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы, ПараметрыФормыУказанияСерий, ЭтотОбъект, , , , ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ДополнительныеПараметры.ПараметрыФормыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект,
ПараметрыУказанияСерий,
ТекущиеДанныеИдентификатор,
ЭтотОбъект);
КонецФункции
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
СтруктураДействий = Новый Структура("ОбновлятьКоличествоТоваровПриРегистрацииСерий", Истина);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ);
НоменклатураСервер.ОбработатьУказаниеСерий(Объект,ПараметрыУказанияСерий,ПараметрыФормыУказанияСерий,СтруктураДействий);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор,
КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект, ПараметрыУказанияСерий,
ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУстановитьВидимостьСерий()
ПараметрыУказанияСерий = ПараметрыУказанияСерий();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
УстановитьВидимостьЭлементовСерий();
КонецПроцедуры
#КонецОбласти
#Область НомераГТД
&НаКлиенте
Процедура ОбработатьПодборНомераГТД(РезультатПодбора)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ИдентификаторСтроки = ТекущиеДанные.ПолучитьИдентификатор();
Если ИдентификаторСтроки = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполненыНомераГТД = Ложь;
НомерГТД = Неопределено;
ОбработатьУказаниеНомераГТДСервер(ИдентификаторСтроки, РезультатПодбора, ЗаполненыНомераГТД, НомерГТД);
ЗакупкиКлиент.ОповеститьОЗаполненииНомеровГТДВТабличнойЧасти(ЗаполненыНомераГТД, НомерГТД);
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеНомераГТДСервер(ИдентификаторСтроки,
РезультатПодбора,
ЗаполненыНомераГТД,
НомерГТД)
ДанныеПодбора = ПолучитьИзВременногоХранилища(РезультатПодбора.АдресВоВременномХранилище);
НомерГТД = ?(ДанныеПодбора.ОстаточныйНомерГТД <> Неопределено,
НомерГТД,
ДанныеПодбора.ОсновнойНомерГТД);
ДействияОбработки = Новый Структура;
Если ДанныеПодбора.ОстаточныйНомерГТД <> Неопределено Тогда
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ДействияОбработки, Объект, КомиссионерНеВедетУчетПоРНПТ);
Иначе
ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(ЭтотОбъект, ДействияОбработки);
КонецЕсли;
ЗакупкиСервер.ОбработатьУказаниеНомераГТД(ЭтотОбъект,
ИдентификаторСтроки,
ДанныеПодбора,
ЗаполненыНомераГТД,
Неопределено,
ДействияОбработки);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНомераГТДПоПереданнымТоварамНаСервере()
ПараметрыЗаполнения = ЗакупкиСервер.ПараметрыЗаполненияНомеровГТДПоУчетнымДанным();
ПараметрыЗапроса = ПараметрыЗаполнения.ПараметрыЗапроса;
ДатаПериода = КонецДня(ТекущаяДатаСеанса());
Период = Новый Граница(ДатаПериода, ВидГраницы.Включая);
ЗаполняемыеПараметрыЗапроса = "Организация, Договор";
ЗаполнитьЗначенияСвойств(ПараметрыЗапроса, Объект, ЗаполняемыеПараметрыЗапроса);
ПараметрыЗапроса.Период = Период;
ДействияСоСтрокой = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(
ДействияСоСтрокой, Объект, КомиссионерНеВедетУчетПоРНПТ, Ложь);
ПараметрыЗаполнения.ДействияСоСтрокой = ДействияСоСтрокой;
ЗакупкиСервер.ЗаполнитьНомераГТДПоУчетнымДанным(Объект.Товары, "ПоОстаткамУХранителя", ПараметрыЗаполнения);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область Порча
&НаКлиенте
Процедура ВозвратПорчиЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ОчиститьОтключитьНастроитьФормуПоПорче();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПроверитьОтключитьНастроитьФормуПоПорче()
ПоискСтрокСПорчей = Объект.Товары.НайтиСтроки(
Новый Структура("Порча, НоменклатураОприходование",
Ложь,
Справочники.Номенклатура.ПустаяСсылка()));
ЕстьСтрокиСПорчей = ПоискСтрокСПорчей.Количество() <> Объект.Товары.Количество();
Если Не ЕстьСтрокиСПорчей Тогда
Объект.ВозвратПорчи = Ложь;
НастроитьФормуПоПорче();
КонецЕсли;
Возврат ЕстьСтрокиСПорчей;
КонецФункции
&НаСервере
Процедура НастроитьФормуПоПорче()
ОтображатьЭлементыПорчи = Объект.ВозвратПорчи;
КомандаВозвратПорчиЗаголовок = НСтр("ru = 'Возврат товаров другого качества'");
ОтгруженныйТоварЗаголовок = НСтр("ru = 'Ранее был отгружен товар'");
ВозвращаемыйТоварЗаголовок = НСтр("ru = 'Возвращается товар другого качества'");
ДоступностьЭлементовПорчи = Не Объект.ПоРаспоряжениям
И Не ЗначениеЗаполнено(Объект.Распоряжение)
И Не ЗначениеЗаполнено(Объект.ДокументПередачи);
Элементы.ВозвратПорчи.Доступность = ДоступностьЭлементовПорчи;
Элементы.ВозвратПорчи.Заголовок = КомандаВозвратПорчиЗаголовок;
Элементы.ТоварыГруппаРанееОтгруженныйТовар.Заголовок = ОтгруженныйТоварЗаголовок;
Элементы.ТоварыГруппаВозвращаемыйТовар.Заголовок = ВозвращаемыйТоварЗаголовок;
Элементы.ВозвратПорчи.Пометка = ОтображатьЭлементыПорчи;
Элементы.ТоварыГруппаРанееОтгруженныйТовар.ОтображатьВШапке = ОтображатьЭлементыПорчи;
Элементы.ТоварыГруппаВозвращаемыйТовар.Видимость = ОтображатьЭлементыПорчи;
КонецПроцедуры
&НаСервере
Процедура ОчиститьОтключитьНастроитьФормуПоПорче()
Объект.ВозвратПорчи = Ложь;
НастроитьФормуПоПорче();
Для Каждого СтрокаТовары Из Объект.Товары Цикл
СтрокаТовары.Порча = Ложь;
СтрокаТовары.НоменклатураОприходование = Справочники.Номенклатура.ПустаяСсылка();
СтрокаТовары.ХарактеристикаОприходование = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
КонецЦикла;
Если ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры Тогда
Для Каждого СтрокаСерии Из Объект.Серии Цикл
СтрокаСерии.НоменклатураОприходование = Справочники.Номенклатура.ПустаяСсылка();
СтрокаСерии.ХарактеристикаОприходование = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПроверитьНаличиеГрадацииСервер(ТоварИсходногоКачества, ТоварДругогоКачества)
Возврат РегистрыСведений.ТоварыДругогоКачества.ПроверитьНаличиеГрадации(ТоварИсходногоКачества, ТоварДругогоКачества);
КонецФункции
#КонецОбласти
#Область Прочее
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
СкладыСервер.УстановитьУсловноеОформлениеСкладаВШапке(ЭтотОбъект);
НаборыСервер.УстановитьУсловноеОформление(ЭтотОбъект, "Товары");
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтотОбъект, Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтотОбъект, Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтотОбъект);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеКоличестваПоРНПТ(ЭтотОбъект);
#Область ТоварыНомерГТДСтранаПроисхождения
ПараметрыУсловногоОформления = НоменклатураСервер.ПараметрыУстановкиУсловногоОформленияНомераГТД();
ПараметрыУсловногоОформления.ИмяПоляВводаНомераГТД = "ТоварыНомерГТДСтранаПроисхождения";
НоменклатураСервер.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект, ПараметрыУсловногоОформления);
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект);
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеУчетаПоГТДВДокументахКомиссионера(ЭтотОбъект, Ложь);
#Область УсловноеОформление_Порча
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыХарактеристикаОприходование.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ХарактеристикиИспользуютсяОприходование");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Порча");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<характеристики не используются>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатураОприходование.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыХарактеристикаОприходование.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Порча");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
#КонецОбласти
#КонецОбласти
#Область ТоварыРаспоряжениеКодСтроки
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоРаспоряжениям");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
#КонецОбласти
#Область ТоварыРаспоряжение
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокЗаказов.КоличествоСтрок");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
ОтборЭлемента.ПравоеЗначение = 2;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийОшибкуТекст);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Сверх заказа, заказ не выбран'"));
#КонецОбласти
#Область ТоварыКодСтроки
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьКодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
#КонецОбласти
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСумма.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтотОбъект);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(ЭтотОбъект, "ВидЦены", "Объект.ВидЦены");
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
Документы.ПоступлениеТоваровОтХранителя.НастроитьРеквизитХозяйственнаяОперация(ЭтотОбъект, Объект);
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(Объект.ХозяйственнаяОперация);
ИспользоватьРаспоряжения = Обработчик.ИспользоватьРаспоряжения();
ИспользоватьКодСтроки = Обработчик.ИспользоватьКодСтроки();
ИспользоватьПоступлениеПоНесколькимЗаказам = Обработчик.ИспользоватьПоступлениеПоНесколькимЗаказам();
ЗапретитьПоступлениеТоваровБезНомеровГТД = ПолучитьФункциональнуюОпцию("ЗапретитьПоступлениеТоваровБезНомеровГТД");
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности");
ИспользоватьУчетПрослеживаемыхИмпортныхТоваров = УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(
Объект.Дата);
ИспользоватьСоглашенияСКлиентами =
Обработчик.СоглашенияСКлиентамиПрименимы()
И Обработчик.ИспользоватьСоглашенияСКлиентами();
Склад = Объект.Склад;
Договор = Объект.Договор;
ВалютаДокумента = Объект.Валюта;
ПараметрыУказанияСерий = ПараметрыУказанияСерий();
ХозяйственнаяОперацияДоговора = Обработчик.ХозяйственнаяОперацияДоговора();
ХозяйственнаяОперацияДоИзменения = Объект.ХозяйственнаяОперация;
ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере();
ОпределитьНаличиеОрдернойСхемы();
УстановитьВидЦеныПоУмолчанию();
Обработчик.УстановитьДоступностьДоговора(ЭтотОбъект, Объект);
Обработчик.НастроитьПараметрыВыбораЭлементов(ЭтотОбъект, Объект);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
УстановитьВидимостьЭлементовСерий();
УстановитьДоступностьПерезаполненияПоПриемке();
ЗаполнитьПризнакРасхождениеЗаказ(Объект.Товары, Объект.ПоРаспоряжениям, ИспользоватьКодСтроки);
ОбновитьИнформациюПоЗаказам();
ОбновитьЗависимыеРеквизитыФормыПоЗаказам(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
ЗаполнитьВидыЦен();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
НастроитьФормуПоПорче();
Обработчик.НастроитьФорму(ЭтотОбъект, Объект.Номер, Объект.Дата);
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюПоЗаказам()
ПараметрыОбновления = ЗаказыСервер.ПараметрыОбновленияИнформацииПоЗаказамВФорме();
ПараметрыОбновления.ИмяРеквизитаСписокЗаказов = "СписокЗаказов";
ПараметрыОбновления.ПутьЗаказаВШапке = "Объект.Распоряжение";
ПараметрыОбновления.ИмяНадписиЗаголовка = "НадписьЗаголовокЗаказы";
ПараметрыОбновления.ИмяГруппыКолонокВТабличнойЧасти = "ТоварыГруппаРаспоряжение";
ПараметрыОбновления.ИмяЗаказаВТабличнойЧасти = "Распоряжение";
ПараметрыОбновления.ИспользоватьЗаказыВТабличнойЧасти = ИспользоватьПоступлениеПоНесколькимЗаказам;
ПараметрыОбновления.ИспользоватьЗаказы = ИспользоватьРаспоряжения;
ЗаказыСервер.ОбновитьИнформациюПоЗаказамВФорме(ЭтотОбъект, Объект.Товары, ПараметрыОбновления);
Если Не ИспользоватьПоступлениеПоНесколькимЗаказам
И Объект.ПоРаспоряжениям
И ЗначениеЗаполнено(Объект.Распоряжение) Тогда
СписокЗаказов.Добавить(Объект.Распоряжение);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидЦеныПоУмолчанию()
Если Не ИспользоватьСоглашенияСКлиентами Тогда
ПараметрыВыбораВидаЦены = ЗначениеНастроекПовтИсп.ПараметрыВыбораВидаЦеныПоУмолчанию();
ПараметрыВыбораВидаЦены.ИспользоватьПриПродаже = Истина;
ПараметрыВыбораВидаЦены.Статус = Перечисления.СтатусыДействияВидовЦен.Действует;
ВидЦеныПоУмолчанию = ЗначениеНастроекПовтИсп.ВидЦеныПоУмолчанию(ПараметрыВыбораВидаЦены);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьПерезаполненияПоПриемке()
Элементы.ТоварыПерезаполнитьПоПриемке.Доступность = СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.Склад,
Объект.Дата);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура, НоменклатураОприходование",
"Артикул",
"АртикулОприходование");
ЗаполнитьПризнакХарактеристикиИспользуются = Новый Структура("Номенклатура, НоменклатураОприходование",
"ХарактеристикиИспользуются",
"ХарактеристикиИспользуютсяОприходование");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ЗаполнитьПризнакВедетсяУчетПоГТД = Новый Структура("Номенклатура", "ВедетсяУчетПоГТД");
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", ЗаполнитьПризнакВедетсяУчетПоГТД);
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
ЗаполнитьПризнакХарактеристикиИспользуются);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
ПараметрыЗаполненияРеквизитов);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, ПараметрыЗаполненияРеквизитов);
НаборыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтотОбъект);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизиты()
Возврат Новый Структура("БезВозвратнойТары", "Сумма");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказатели(Форма)
Форма.СуммаВсего = Форма.Объект.Товары.Итог("СуммаБезВозвратнойТары");
КонецПроцедуры
&НаСервере
Процедура ПерезаполнитьПоПриемкеСервер()
МассивЗаказов = СписокЗаказов.ВыгрузитьЗначения();
МассивЗаказов.Добавить(Объект.Ссылка);
ПараметрыЗаполнения = Документы.ПоступлениеТоваровОтХранителя.ПараметрыЗаполненияДокумента();
ПараметрыЗаполнения.ФормаОткрыта = Истина;
ПараметрыЗаполнения.ЗаполнятьПоОрдеру = Истина;
ТаблицаНакладная = Документы.ПоступлениеТоваровОтХранителя.ДанныеТаблицыТоварыДокумента(Объект.Ссылка);
РеквизитыШапки = Новый Структура("Ссылка, Организация, ХозяйственнаяОперация, Склад, Сделка, Подразделение,
|НаправлениеДеятельности");
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Объект);
Документы.ПоступлениеТоваровОтХранителя.ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения,
РеквизитыШапки,
МассивЗаказов);
Документы.ПоступлениеТоваровОтХранителя.ЗаполнитьПоЗаказамОрдерам(ТаблицаНакладная, Объект.Ссылка, ПараметрыЗаполнения);
КоличествоИндексов = ТаблицаНакладная.Количество() - 1;
Для Индекс = 0 По КоличествоИндексов Цикл
Строка = ТаблицаНакладная[КоличествоИндексов - Индекс];
Если Строка.КоличествоВОрдере = 0 Тогда
ТаблицаНакладная.Удалить(Строка);
Иначе
Строка.Количество = Строка.КоличествоВОрдере;
КонецЕсли;
КонецЦикла;
Объект.Товары.Загрузить(ТаблицаНакладная);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(
СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ, Ложь);
Если ИспользоватьКодСтроки Тогда
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(
СтруктураДействий, Объект.ПоРаспоряжениям);
КонецЕсли;
Для Каждого Строка Из Объект.Товары Цикл
Если Не ИспользоватьКодСтроки Тогда
Строка.РасхождениеЗаказ = 0;
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий);
ОбновитьЗависимыеРеквизитыФормыПоЗаказам(Элементы, Объект.Товары, НадписьРасхождениеЗаказ);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий,
Объект,
КомиссионерНеВедетУчетПоРНПТ,
ПересчитатьКоличество = Истина)
Если ПересчитатьКоличество Тогда
ДобавитьДействиеПересчитатьКоличествоЕдиниц(Объект.ХозяйственнаяОперация, СтруктураДействий, Объект.Склад);
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
ЭтоВозвратОтКомиссионера = Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера");
Если Не ЭтоВозвратОтКомиссионера
Или Не КомиссионерНеВедетУчетПоРНПТ Тогда
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействий,
"Договор");
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ДобавитьДействиеПересчитатьКоличествоЕдиниц(ХозяйственнаяОперация, СтруктураДействий, Склад = Неопределено)
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(ХозяйственнаяОперация);
Обработчик.ДобавитьДействиеПересчитатьКоличествоЕдиниц(СтруктураДействий);
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизиты());
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(Форма, СтруктураДействий)
Объект = Форма.Объект;
ЭтоВозвратОтКомиссионера = Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ВозвратОтКомиссионера");
Если ЭтоВозвратОтКомиссионера
И Форма.КомиссионерНеВедетУчетПоРНПТ Тогда
Возврат;
КонецЕсли;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействий,
"Договор");
КонецПроцедуры
&НаСервере
Процедура ОпределитьНаличиеОрдернойСхемы()
ОрдернаяСхема = СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.Склад, Объект.Дата);
КонецПроцедуры
&НаСервере
Процедура УстановитьСвойстваЭлементов()
УстановитьДоступностьКомандБуфераОбмена();
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ЗакрытьЗаявку");
МассивЭлементов.Добавить("ЗакрытьЗаявки");
МассивЭлементов.Добавить("ТоварыПодобратьТоварыПоЗаказамОрдерам");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", Объект.ПоРаспоряжениям);
Элементы.ТоварыОтвязатьОтЗаказа.Видимость =
Объект.ПоРаспоряжениям
И ИспользоватьКодСтроки;
Элементы.ТоварыОтвязатьОтЗаказа.Видимость = ИспользоватьРаспоряжения И Элементы.ТоварыОтвязатьОтЗаказа.Видимость;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НаправлениеДеятельности", "ТолькоПросмотр", Объект.ПоРаспоряжениям);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(АдресТарыВХранилище)
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьПризнакБезВозвратнойТары",
Объект.ВозвратПереданнойМногооборотнойТары);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийИзмененныеСтроки, Объект, Ложь);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействийИзмененныеСтроки);
СтруктураДействийДобавленныеСтроки = ОбщегоНазначения.СкопироватьРекурсивно(
СтруктураДействийИзмененныеСтроки);
ДобавитьВСтруктуруДействияЗаполненияЦен(СтруктураДействийДобавленныеСтроки, Объект, ИспользоватьСоглашенияСКлиентами);
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(Объект, АдресТарыВХранилище, "Товары",
"Номенклатура,Характеристика,", СтруктураДействийИзмененныеСтроки, СтруктураДействийДобавленныеСтроки);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище)
ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакБезВозвратнойТары", Объект.ВозвратПереданнойМногооборотнойТары);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий, Объект, КомиссионерНеВедетУчетПоРНПТ);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(
СтруктураДействий);
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
СтрокаТЧТовары = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров,, "КодСтроки");
ОбрабатываемыеСтроки.Добавить(СтрокаТЧТовары);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение)
ЗапасыСервер.ОбработатьВводВидовЗапасовВручную(ВыбранноеЗначение, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(Объект.ХозяйственнаяОперация);
Договор = Обработчик.ПолучитьДоговорПоУмолчанию(Объект);
Если Договор <> Объект.Договор Тогда
Объект.Договор = Договор;
ДоговорПриИзмененииСервер(Ложь, Объект.ПоРаспоряжениям);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВыполнитьПересчетСуммДокументаСервер(СтараяВалюта, НоваяВалюта)
Если СтараяВалюта <> НоваяВалюта Тогда
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
СтруктураКурсовСтаройВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(СтараяВалюта, ДатаДокумента, ВалютаРегламентированногоУчета);
СтруктураКурсовНовойВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(НоваяВалюта, ДатаДокумента, ВалютаРегламентированногоУчета);
Для Каждого ТекСтрока Из Объект.Товары Цикл
ТекСтрока.Цена = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
ТекСтрока.Цена,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
РассчитатьИтоговыеПоказатели(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПоместитьТоварыИВидыЗапасовВХранилище()
Возврат ЗапасыСервер.ПоместитьТоварыИВидыЗапасовВХранилище(ЭтотОбъект);
КонецФункции
&НаКлиенте
Процедура ЗакрытьЗаявкуФрагмент()
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказов);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия", СтруктураЗакрытия, , , , , ,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборПоРаспоряжениямОрдерам()
РеквизитыШапки = РеквизитыШапки(Объект);
ДополнительныеПоля = Новый Структура;
ДополнительныеПоля.Вставить("ДатаПоступления");
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РеквизитыШапки", РеквизитыШапки);
ПараметрыФормы.Вставить("Накладная", Объект.Ссылка);
ПараметрыФормы.Вставить("ИспользуютсяЗаказы", ИспользоватьРаспоряжения);
ПараметрыФормы.Вставить("НакладнаяПоЗаказам", Объект.ПоРаспоряжениям);
ПараметрыФормы.Вставить("Заказ", Объект.Распоряжение);
ПараметрыФормы.Вставить("ОрдернаяСхемаПриОтгрузке", Ложь);
ПараметрыФормы.Вставить("ОрдернаяСхемаПриПоступлении", ОрдернаяСхема);
ПараметрыФормы.Вставить("АдресТовары", АдресТоварыНакладной());
ПараметрыФормы.Вставить("ДополнительныеПоля", ДополнительныеПоля);
ПараметрыФормы.Вставить("ИспользоватьНакладныеПоНесколькимЗаказам", ИспользоватьПоступлениеПоНесколькимЗаказам);
ОткрытьФорму("ОбщаяФорма.ПодборТоваровИзЗаказа", ПараметрыФормы, ЭтотОбъект, УникальныйИдентификатор, , , ,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборРаспоряжения(ОписаниеОповещения)
ПараметрыОтбора = Новый Структура();
ПараметрыОтбора.Вставить("Партнер", Объект.Партнер);
ПараметрыОтбора.Вставить("Контрагент", Объект.Контрагент);
ПараметрыОтбора.Вставить("Соглашение", Объект.Соглашение);
ПараметрыОтбора.Вставить("Организация", Объект.Организация);
ПараметрыОтбора.Вставить("Договор", Объект.Договор);
ПараметрыОтбора.Вставить("Валюта", Объект.Валюта);
ПараметрыОтбора.Вставить("Сделка", Объект.Сделка);
ПараметрыОтбора.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ПараметрыОтбора.Вставить("ВернутьМногооборотнуюТару", Объект.ВозвратПереданнойМногооборотнойТары);
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Отбор", ПараметрыОтбора);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("Регистратор", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ОткрытьФорму(
"Документ.ПоступлениеТоваровОтХранителя.Форма.ФормаВыбораРаспоряжения",
ПараметрыОткрытия,
ЭтотОбъект,,,,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияЗаполненияЦен(СтруктураДействий, Объект, ИспользоватьСоглашения)
ЗаполнитьЦенуПродажи = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект, Истина);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ЗаполнитьЦенуПродажи);
КонецПроцедуры
&НаСервере
Процедура ТоварыПослеУдаленияСервер(НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения)
Если НеобходимоОбновитьСтатусыСерий Тогда
Если Объект.Товары.Количество() > 1 Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
Иначе
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ТоварыПриОкончанииРедактированияСервер(ОбновитьСтатусыСерий, КэшированныеЗначения, ТекущаяСтрокаИдентификатор)
Если ОбновитьСтатусыСерий Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СообщитьОбОшибкахОткрытияПодбора(Отказ)
Если ИспользоватьСоглашенияСКлиентами
И Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
ТекстСообщения = НСтр("ru = 'Поле ""Соглашение"" не заполнено'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Объект.Ссылка, "Объект.Соглашение", ,Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ТекстСообщения = НСтр("ru = 'Поле ""Валюта"" не заполнено'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Объект.Ссылка, "Объект.Валюта", ,Отказ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция АдресТоварыНакладной()
Таблица = Объект.Товары.Выгрузить();
Таблица.Колонки.Добавить("ДатаОтгрузки", Новый ОписаниеТипов("Дата"));
Таблица.Колонки.Добавить("ДатаПоступления", Новый ОписаниеТипов("Дата"));
Таблица.ЗаполнитьЗначения(ТекущаяДатаСеанса(), "ДатаОтгрузки");
Таблица.ЗаполнитьЗначения(ТекущаяДатаСеанса(), "ДатаПоступления");
Если Не ИспользоватьКодСтроки Тогда
Таблица.ЗаполнитьЗначения(1, "КодСтроки");
КонецЕсли;
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Таблица, УникальныйИдентификатор);
Возврат АдресВоВременномХранилище;
КонецФункции
&НаСервере
Процедура ПересчитатьКоличествоРНПТ()
ЭтоВозвратОтКомиссионера = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
Если ЗначениеЗаполнено(Объект.Договор)
И ЗначениеЗаполнено(Объект.Организация)
И (Не ЭтоВозвратОтКомиссионера
Или (ЭтоВозвратОтКомиссионера
И Не КомиссионерНеВедетУчетПоРНПТ)) Тогда
ПараметрыПолученияКоэффициентаРНПТ = УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ПараметрыПолученияКоэффициентаРНПТ(
Объект,
"Договор");
УчетПрослеживаемыхТоваровЛокализация.ЗаполнитьКоличествоПоРНПТВТабличнойЧасти(ПараметрыПолученияКоэффициентаРНПТ,
Объект.Товары);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПризнакКомиссионерНеВедетУчетПоРНПТНаСервере()
КомиссионерНеВедетУчетПоРНПТ = Не Справочники.СоглашенияСКлиентами.КомиссионерВедетУчетПоРНПТ(Объект.Соглашение)
Или Не Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтКомиссионера;
КонецПроцедуры
&НаСервере
Функция УчетныйВидЦеныДоговора()
СтруктураПараметров = ЦеныПредприятияЗаполнениеСервер.НовыйПараметрыПроверкиВидаЦенДоговора();
СтруктураПараметров.ПолеВидаЦен = "ВидЦенУчетный";
Если ЗначениеЗаполнено(Объект.Договор) Тогда
ВидЦены = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, СтруктураПараметров.ПолеВидаЦен);
Если ЗначениеЗаполнено(ВидЦены) Тогда
СтруктураПараметров.ВидЦены = ВидЦены;
КонецЕсли;
КонецЕсли;
Возврат СтруктураПараметров;
КонецФункции
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьЗависимыеРеквизитыФормыПоЗаказам(ЭлементыФормы, Товары, НадписьРасхождениеЗаказ)
КоличествоРасхождений = Товары.Итог("РасхождениеЗаказ");
Если КоличествоРасхождений > 0 Тогда
ЭлементыФормы.КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
ЭлементыФормы.КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
НадписьРасхождениеЗаказ = СтрШаблон(НСтр("ru='Строк сверх заказа: %1'"), КоличествоРасхождений);
Иначе
ЭлементыФормы.КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПустаяКартинка;
ЭлементыФормы.КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПустаяКартинка;
НадписьРасхождениеЗаказ = "";
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоЗаказуНаСервере()
Объект.Товары.Очистить();
РеквизитыШапки = РеквизитыШапки(Объект);
Если ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
МассивЗаказов =
Документы.ПоступлениеТоваровОтХранителя.РаспоряженияНакладной(Объект.Ссылка, РеквизитыШапки);
Иначе
МассивЗаказов = Новый Массив();
МассивЗаказов.Добавить(Объект.Распоряжение);
КонецЕсли;
ПараметрыЗаполнения = Документы.ПоступлениеТоваровОтХранителя.ПараметрыЗаполненияДокумента();
ПараметрыЗаполнения.ДополнятьСериямиПоЗаявке = Истина;
Документы.ПоступлениеТоваровОтХранителя.ИнициализироватьПараметрыЗаполнения(
ПараметрыЗаполнения,
РеквизитыШапки,
МассивЗаказов);
ТаблицаНакладная = Объект.Товары.Выгрузить();
Документы.ПоступлениеТоваровОтХранителя.ЗаполнитьПоЗаказамОрдерам(
ТаблицаНакладная, Объект.Ссылка, ПараметрыЗаполнения);
ТаблицаНакладнаяКолонкиКоличество = ТаблицаНакладная.Колонки.Количество;
ТаблицаНакладнаяКолонкиКоличество.Имя = "КоличествоДоИзменения";
ТаблицаНакладнаяКолонкиКоличествоВЗаказе = ТаблицаНакладная.Колонки.КоличествоВЗаказе;
ТаблицаНакладнаяКолонкиКоличествоВЗаказе.Имя = "Количество";
НакладныеСервер.УдалитьПустыеСтроки(ТаблицаНакладная, "Количество");
Объект.Товары.Загрузить(ТаблицаНакладная);
Документы.ПоступлениеТоваровОтХранителя.ОбновитьЗависимыеРеквизитыТабличнойЧасти(Объект, ПараметрыЗаполнения);
Обработчик = Документы.ПоступлениеТоваровОтХранителя.ОбработчикДействий(Объект.ХозяйственнаяОперация);
ЗаполнитьПризнакРасхождениеЗаказ(Объект.Товары, Объект.ПоРаспоряжениям, ИспользоватьКодСтроки);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
МногооборотнаяТараСервер.ОбновитьПризнакБезВозвратнойТары(Объект.Товары, Объект.ВозвратПереданнойМногооборотнойТары);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Товары, ЗависимыеРеквизиты());
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ПараметрыРасчета =
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ПараметрыПолученияКоэффициентаРНПТ(Объект, "Договор");
УчетПрослеживаемыхТоваровЛокализация.ЗаполнитьКоличествоПоРНПТВТабличнойЧасти(ПараметрыРасчета, Объект.Товары);
КонецПроцедуры
&НаСервере
Процедура ПривязатьСтрокиКЗаказам(ОтобратьПоЗаказу)
Документы.ПоступлениеТоваровОтХранителя.ПривязатьСтрокиКЗаказам(ЭтотОбъект, Объект, ПараметрыУказанияСерий, ОтобратьПоЗаказу);
КонецПроцедуры
&НаСервере
Процедура ОтвязатьОтЗаказаСервер(ВсеСтроки = Истина, ОтвязатьТолькоСтроки = Истина)
Перем КэшированныеЗначения;
Если ВсеСтроки Тогда
КоллекцияСтрок = Объект.Товары;
Иначе
КоллекцияСтрок = Элементы.Товары.ВыделенныеСтроки;
КонецЕсли;
Для Каждого ТекСтрока Из КоллекцияСтрок Цикл
Если ВсеСтроки Тогда
СтрокаТаблицы = ТекСтрока;
ТекСтрока = СтрокаТаблицы.ПолучитьИдентификатор();
Иначе
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
КонецЕсли;
НоменклатураКлиентСервер.ОбновитьКешированныеЗначенияДляУчетаСерий(
СтрокаТаблицы,
КэшированныеЗначения,
ПараметрыУказанияСерий);
СтрокаТаблицы.КодСтроки = 0;
Если ОтвязатьТолькоСтроки Тогда
СтрокаТаблицы.РасхождениеЗаказ = 1;
Иначе
СтрокаТаблицы.Распоряжение = Неопределено;
СтрокаТаблицы.РасхождениеЗаказ = 0;
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(
Объект,
ПараметрыУказанияСерий,
ТекСтрока,
КэшированныеЗначения);
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаполнитьПризнакРасхождениеЗаказ(Товары, ПоРаспоряжениям, ИспользоватьКодСтроки)
Если ИспользоватьКодСтроки Тогда
СтруктураДействий = Новый Структура;
ЗаказыКлиентСервер.ДобавитьДействиеЗаполнитьПризнакРасхождениеЗаказ(СтруктураДействий, ПоРаспоряжениям);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Товары, СтруктураДействий, Неопределено);
Иначе
Для Каждого ТекущиеДанные Из Товары Цикл
ТекущиеДанные.РасхождениеЗаказ = 0;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция РеквизитыШапки(Объект)
РеквизитыШапки =
Новый Структура(
"Ссылка, ХозяйственнаяОперация, Организация, Склад, Партнер, Контрагент, Договор, Соглашение,
|Сделка, Валюта, НаправлениеДеятельности, ВернутьМногооборотнуюТару");
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Объект);
РеквизитыШапки.ВернутьМногооборотнуюТару = Объект.ВозвратПереданнойМногооборотнойТары;
Возврат РеквизитыШапки;
КонецФункции
&НаСервере
Процедура ЗаполнитьВидыЦен()
ПараметрыВыбораВидаЦен = Новый Массив;
ПараметрыВыбораВидаЦен.Добавить(Новый ПараметрВыбора("ВыводитьПроизвольныйВидЦен", Истина));
ПараметрыВыбораВидаЦен.Добавить(Новый ПараметрВыбора("Отбор.Статус", Перечисления.СтатусыДействияВидовЦен.Действует));
ПараметрыВыбораВидаЦен.Добавить(Новый ПараметрВыбора("Отбор.ЭтоГруппа", Ложь));
ПараметрыВыбораВидаЦен.Добавить(Новый ПараметрВыбора("Отбор.ПометкаУдаления", Ложь));
ПараметрыВыбораВидаЦен.Добавить(Новый ПараметрВыбора("Отбор.ВалютаЦены", Объект.Валюта));
ПараметрыВыбораВидаЦен.Добавить(Новый ПараметрВыбора("ИспользоватьПриПродаже", Истина));
Если Не ТолькоПросмотр
И ЗначениеЗаполнено(Объект.ВидЦены)
И Не ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ВидЦены, "ИспользоватьПриПродаже") Тогда
Объект.ВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
КонецЕсли;
Элементы.ВидЦены.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораВидаЦен);
Если Не ТолькоПросмотр
И ЗначениеЗаполнено(Объект.ВидЦены)
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ВидЦены, "ВалютаЦены") <> Объект.Валюта Тогда
Объект.ВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОбОкончанииОтвязкиСтрок(КоличествоОтработанныхСтрок)
ТекстОповещения = НСтр("ru = 'В документе от заказов отвязано строк (%%Количество%%).'");
ТекстОповещения = СтрЗаменить(ТекстОповещения, "%%Количество%%", КоличествоОтработанныхСтрок);
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки отвязаны'"),,
ТекстОповещения,
БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ОтборПоТоваруМногооборотнойТаре(ХозяйственнаяОперация)
ВключатьНаборы = Истина;
Возврат НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(ВключатьНаборы);
КонецФункции
#КонецОбласти
#КонецОбласти