#Область ОписаниеПеременных
&НаКлиенте
Перем ПредыдущиеРеквизитыСтроки;
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;
&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
АвтоЗаголовок = Ложь;
СформироватьЗаголовокОтТипаХозОперации();
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
УстановитьДоступностьКомандБуфераОбмена();
УчетПрослеживаемыхТоваровЛокализация.УстановитьВидимостьКоличестваРНПТ(ЭтотОбъект, Объект.Дата);
ПараметрыВыбораСтатейИАналитик = Документы.ОприходованиеИзлишковОтгруженныхТоваров.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ПараметрыНастройки = Документы.ОприходованиеИзлишковОтгруженныхТоваров.ПараметрыНастройкиСчетовУчета();
НастройкаСчетовУчетаСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыНастройки);
ПроверкаКонтрагентов.ПриСозданииНаСервереДокумент(ЭтотОбъект, Параметры);
ПроверкаКонтрагентовВызовСервераПереопределяемыйУТ.ФормаДокументаПриСозданииНаСервере(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
УчетПрослеживаемыхТоваровЛокализация.УстановитьЗаголовокНомерГТД(Элементы, "ТоварыНомерГТД");
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ИменаРеквизитов =
"Номенклатура,
|Характеристика,
|Назначение,
|Количество,
|ТипНоменклатуры,
|ХарактеристикиИспользуются";
ПредыдущиеРеквизитыСтроки = Новый Структура(ИменаРеквизитов);
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПроверкаКонтрагентовКлиент.ПриОткрытииДокумент(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "ОбщаяФорма.ПодборТоваровИзЗаказа" Тогда
ОбработкаПодбораТоваровИзЗаказа(ВыбранноеЗначение.АдресВХранилище);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровПереданныхНаОтветственноеХранение.Форма.Форма" Тогда
ОбработкаВыбораПодборПереданныхТоваров(ВыбранноеЗначение);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.ВидыЗапасов.Форма.ФормаВводаВидовЗапасов" Тогда
ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий, ВыбранноеЗначение);
ИначеЕсли ЗакупкиКлиент.ЭтоПодборНомераГТД(ИсточникВыбора) Тогда
ОбработатьПодборНомераГТД(ВыбранноеЗначение);
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
ПроверкаКонтрагентовКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаЗаписиНового(НовыйОбъект, Источник, СтандартнаяОбработка)
Если ЗакупкиКлиент.ЭтоУказаниеНомераГТД(Источник) Тогда
Действия = Новый Структура;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
Действия);
ЗакупкиКлиент.ОбработатьУказаниеНомераГТД(ЭтотОбъект, НовыйОбъект, , , Действия);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
ПараметрыВыбораСтатейИАналитик = Документы.ОприходованиеИзлишковОтгруженныхТоваров.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ПараметрыНастройки = Документы.ОприходованиеИзлишковОтгруженныхТоваров.ПараметрыНастройкиСчетовУчета();
НастройкаСчетовУчетаСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыНастройки);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
ПроверкаКонтрагентов.ПередЗаписьюНаСервереДокумент(ЭтотОбъект, ТекущийОбъект);
НастройкаСчетовУчетаСервер.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(
ЭтотОбъект,
ТекущийОбъект,
ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ПроверкаКонтрагентов.ПриЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
НастройкаСчетовУчетаСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
ПроверкаКонтрагентов.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Заголовок = "";
АвтоЗаголовок = Истина;
ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_ОприходованиеИзлишковОтгруженныхТоваров", ПараметрыЗаписи, Объект.Ссылка);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "СтраницаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииСервер();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
ПартнерПриИзмененииСервер();
ЗадатьВопросПриИзмененииВидаЦены();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
КонтрагентПриИзмененииСервер();
ЗадатьВопросПриИзмененииВидаЦены();
ПроверкаКонтрагентовКлиент.ЗапуститьПроверкуКонтрагентовВДокументе(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
Возврат;
КонецЕсли;
СоглашениеПриИзмененииСервер();
ЗадатьВопросПриИзмененииВидаЦены();
КонецПроцедуры
&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыВыбораСоглашения = ПродажиКлиент.ПараметрыНачалаВыбораСоглашенияСКлиентом();
ПараметрыВыбораСоглашения.Элемент = Элемент;
ПараметрыВыбораСоглашения.Партнер = Объект.Партнер;
ПараметрыВыбораСоглашения.Документ = Объект.Соглашение;
ПараметрыВыбораСоглашения.ДатаДокумента = Объект.Дата;
ПараметрыВыбораСоглашения.ДанныеФормыСтруктура = Объект;
ПараметрыВыбораСоглашения.ХозяйственнаяОперация = ХозяйственнаяОперацияДоговора;
ПараметрыВыбораСоглашения.КомиссионныеПродажи25 = ?(КомиссионныеПродажи25, Истина, Неопределено);
ПараметрыВыбораСоглашения.ОтгрузкаБезПереходаПраваСобственности25 = ?(ОтгрузкаБезПереходаПраваСобственности25,
Истина,
Неопределено);
ПараметрыВыбораСоглашения.ИспользуютсяДоговорыКонтрагентов = ?(ОтгрузкаБезПереходаПраваСобственности25,
Истина,
Неопределено);
ПродажиКлиент.НачалоВыбораСоглашенияСКлиентом(ПараметрыВыбораСоглашения, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СтатьяДоходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура СтатьяДоходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПредставлениеОтраженияОперацииНажатие(Элемент, СтандартнаяОбработка)
НастройкаСчетовУчетаКлиент.ПриНажатии(ЭтотОбъект, Элемент, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОрганизацияПриИзмененииСервер();
ЗадатьВопросПриИзмененииВидаЦены();
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.Договор) Тогда
Возврат;
КонецЕсли;
ИсходныйВидЦены = Объект.ВидЦены;
ДоговорПриИзмененииСервер();
ЗадатьВопросПриИзмененииВидаЦены();
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
Если ВалютаДокумента = Объект.Валюта Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
Объект.Валюта = ВалютаДокумента;
Иначе
ВалютаДокумента = Объект.Валюта;
Объект.ВидЦены = ПредопределенноеЗначение("Справочник.ВидыЦен.ПустаяСсылка");
ЗаполнитьДоговорПоУмолчанию();
ЗаполнитьВидыЦен();
КонецЕсли;
ЗадатьВопросПриИзмененииВидаЦены();
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
ХозяйственнаяОперацияПриИзмененииНаСервере();
ЗадатьВопросПриИзмененииВидаЦены();
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИсходныйВидЦены = Объект.ВидЦены;
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзменении(Элемент)
НовыйВидЦены = Объект.ВидЦены;
ЗадатьВопросПриИзмененииВидаЦены();
КонецПроцедуры
&НаКлиенте
Процедура РаспоряжениеПредставлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "ОткрытьРаспоряжение" Тогда
ПоказатьЗначение(, Объект.Распоряжение)
Иначе
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ОприходованиеИзлишковОтгруженныхТоваров.Форма.ФормаВыбораРаспоряжения");
ОписаниеОповещения = Новый ОписаниеОповещения("РаспоряжениеВыборКлиент", ЭтотОбъект);
ОткрытьПодборРаспоряжения(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗаголовокРаспоряженияНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекстЗаголовка = НСтр("ru='Распоряжения (%КоличествоДокументов%)'");
ПараметрыОткрытия = Новый Структура("СписокДокументов, Заголовок", СписокРаспоряжений, ТекстЗаголовка);
ОткрытьФорму("ОбщаяФорма.ПросмотрСпискаДокументов",
ПараметрыОткрытия,
ЭтотОбъект,
,
,
,
Неопределено,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыПриАктивизацииЯчейки(Элемент)
Если Элемент.ТекущийЭлемент = Неопределено Тогда
Возврат;
ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТоварыНомерГТД" Тогда
ЗакупкиКлиент.ЗаполнитьСписокВыбораНомеровГТД(Элементы.Товары.ТекущиеДанные, Элементы.ТоварыНомерГТД.СписокВыбора);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы.ТоварыРаспоряжение Тогда
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.Распоряжение) Тогда
ПоказатьЗначение(Неопределено, ТекущиеДанные.Распоряжение);
ИначеЕсли ЗначениеЗаполнено(Объект.Распоряжение) Тогда
ПоказатьЗначение(Неопределено, Объект.Распоряжение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломИзменения(Элемент, Отказ)
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, Элементы.Товары.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если Копирование Тогда
ТекущаяСтрока.Распоряжение = Неопределено;
ТекущаяСтрока.Назначение = Неопределено;
КонецЕсли;
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий,
Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий);
Если ОбновитьСтатусыСерий Тогда
ТекущаяСтрокаИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
ОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий,
Истина);
ТоварыПослеУдаленияСервер(ОбновитьСтатусыСерий, КэшированныеЗначения);
Если ОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура", "Артикул");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ЗаполнитьПризнакВедетсяУчетПоГТД = Новый Структура("Номенклатура", "ВедетсяУчетПоГТД");
ПроверитьСериюРассчитатьСтатус = Новый Структура("Склад, ПараметрыУказанияСерий",
Неопределено, ПараметрыУказанияСерий);
НоменклатураПриИзмененииПереопределяемый = Новый Структура("ИмяФормы, ИмяТабличнойЧасти", ИмяФормы, "Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", ПроверитьСериюРассчитатьСтатус);
СтруктураДействий.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", ЗаполнитьПризнакВедетсяУчетПоГТД);
СтруктураДействий.Вставить("ЗаполнитьСтрануПроисхожденияНоменклатуры",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтраныПроисхождения());
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", НоменклатураПриИзмененииПереопределяемый);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если Не ТекущаяСтрока.ВедетсяУчетПоГТД Тогда
ТекущаяСтрока.НомерГТД = Неопределено;
ТекущаяСтрока.ТипНомераГТД = Неопределено;
ТекущаяСтрока.СтранаПроисхождения = Неопределено;
КонецЕсли;
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер(ТекущаяСтрока.ПолучитьИдентификатор());
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ХарактеристикаПриИзмененииПереопределяемый = Новый Структура("ИмяФормы, ИмяТабличнойЧасти", ИмяФормы, "Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", ХарактеристикаПриИзмененииПереопределяемый);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = ТекущаяСтрока.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущаяСтрока.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтотОбъект, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНомерГТДПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыЗаполнения = Новый Структура("НомерГТД", ТекущиеДанные.НомерГТД);
Действия = Новый Структура;
Действия.Вставить("ЗаполнитьТипНомераГТД", ПараметрыЗаполнения);
Действия.Вставить("ЗаполнитьСтрануПроисхожденияДляНомераГТД", ПараметрыЗаполнения);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
Действия);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, Действия, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНомерГТДСоздание(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ДополнительныеПараметры = ЗакупкиКлиент.ДополнительныеПараметрыСозданияНомераГТД();
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, Объект);
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры, ЭтотОбъект);
ДополнительныеПараметры.ИмяПоляКоличество = "Количество";
ПараметрыСоздания = ЗакупкиКлиент.ПараметрыСозданияНомераГТД(ТекущиеДанные,
Элемент.ТекстРедактирования,
ДополнительныеПараметры);
ЗакупкиКлиент.ОткрытьФормуСозданияНомераГТД(ЭтотОбъект, ПараметрыСоздания);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количество;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуПоСумме", "Количество");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличества(СтруктураДействий, Объект);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыРаспоряжениеПриИзменении(Элемент)
ОбновитьИнформациюПоРаспоряжениям();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыРаспоряжениеНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Элементы.Товары.ТекущиеДанные <> Неопределено Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ВыборРаспоряженияЗавершение", ЭтотОбъект);
ОткрытьПодборРаспоряжения(ОписаниеОповещения);
Возврат;
КонецЕсли;
ОбновитьИнформациюПоРаспоряжениям();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда,
НавигационнаяСсылка = Неопределено,
СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(
Команда,
ЭтотОбъект,
Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКонтрагентов(Команда)
ПроверкаКонтрагентовКлиент.ПроверитьКонтрагентовВДокументеПоКнопке(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтотОбъект);
КонецПроцедуры
#Область ОбработчикиКомандТаблицыФормыТовары
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена();
КоличествоВставленных = Объект.Товары.Количество() - КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ДанныеТаблицы = Объект.Товары;
ТаблицаФормы = Элементы.Товары;
ПараметрыРазбиения = РаботаСТабличнымиЧастямиКлиент.ПараметрыРазбиенияСтроки();
ПараметрыРазбиения.ИмяПоляКоличество = "Количество";
ДополнительныеПараметры = УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеПараметровРазбиенияСтрокиТабличнойЧасти(ТаблицаФормы.ТекущиеДанные);
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект, ДополнительныеПараметры);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение, ПараметрыРазбиения);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличества(СтруктураДействий, Объект);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументе(Команда)
АдресТоваровВоВременномХранилище = ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества();
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ИмяТабличнойЧасти", "Товары");
ПараметрыОткрытия.Вставить("НеИспользоватьУпаковки", Истина);
ПараметрыОткрытия.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресТоваровВоВременномХранилище);
ПараметрыОткрытия.Вставить("ПревышениеКоличестваТоваровРазрешено", Истина);
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьКоличествоВДокументеЗавершение", ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.ПроверкаЗаполненияДокументов", ПараметрыОткрытия, ЭтотОбъект, , , , ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
Модифицированность = Истина;
КэшированныеЗначения = ?(КэшированныеЗначения = Неопределено,
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения(),
КэшированныеЗначения);
ИзменитьТабличнуюЧастьПоРезультатамПроверки(Результат, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерии(Команда)
ОткрытьПодборСерий();
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыПоЗаказам(Команда)
ОткрытьПодборПоРаспоряжениям();
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьПереданныеТовары(Команда)
Отказ = Ложь;
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
ТекстОшибки = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения( , , Элементы.Партнер.Заголовок);
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Партнер", "", Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Организация) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Организация"" не заполнено'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Организация", "", Отказ);
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Договор) Тогда
ТекстОшибки = НСтр("ru = 'Поле ""Договор"" не заполнено'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки, Объект.Ссылка, "Объект.Договор", "", Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ОценкаПроизводительностиКлиент.ЗамерВремени(Истина,
"Документ.ОприходованиеИзлишковТоваровУХранителя.ФормаДокумента.Команда.ПодобратьПереданныеТовары");
АдресТоваров = ПоместитьТоварыВХранилищеДляПодбораПереданногоТовара();
ЗаголовокФормы = ?(ОтгрузкаБезПереходаПраваСобственности25,
НСтр("ru = 'Подбор товаров, отгруженных клиенту'"),
"");
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ссылка", Объект.Ссылка);
ПараметрыФормы.Вставить("Владелец", Объект.Партнер);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("Договор", Объект.Договор);
ПараметрыФормы.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ПараметрыФормы.Вставить("АдресТоваровНакладнойВХранилище", АдресТоваров);
ПараметрыФормы.Вставить("Заголовок", ЗаголовокФормы);
ОткрытьФорму("Обработка.ПодборТоваровПереданныхНаОтветственноеХранение.Форма.Форма", ПараметрыФормы, ЭтотОбъект,
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНомераГТД(Команда)
ПараметрыОповещения = Новый Структура("ЗаполненыНомераГТД", Неопределено);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьНомераГТДЗавершение", ЭтотОбъект, ПараметрыОповещения);
ОткрытьФорму("Справочник.НомераГТД.ФормаВыбора",
,
ЭтотОбъект,
УникальныйИдентификатор,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ДатаПриИзмененииСервер()
ИспользоватьУчетПрослеживаемыхИмпортныхТоваров = УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(
Объект.Дата);
УчетПрослеживаемыхТоваровЛокализация.УстановитьВидимостьКоличестваРНПТ(ЭтотОбъект, Объект.Дата);
Если Не Элементы.ТоварыГруппаКоличествоПоРНПТ.Видимость Тогда
ПересчитатьКоличествоРНПТ();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПартнерПриИзмененииСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоУмолчанию();
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
Если ЗначениеЗаполнено(Объект.Валюта) Тогда
Если ВалютаДокумента <> Объект.Валюта Тогда
ВалютаДокумента = Объект.Валюта;
ЗаполнитьВидыЦен();
КонецЕсли;
КонецЕсли;
ЗаполнитьНовыйВидЦены();
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость,
Объект.Договор);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Объект.Договор);
УстановитьВозможностьРедактированияНД();
КонецЕсли;
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость,
Объект.Договор);
Если ИспользоватьНаправленияДеятельности Тогда
УстановитьВозможностьРедактированияНД();
КонецЕсли;
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СоглашениеПриИзмененииСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоСоглашению();
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость,
Объект.Договор);
Если ИспользоватьНаправленияДеятельности Тогда
УстановитьВозможностьРедактированияНД();
КонецЕсли;
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
Если ВалютаДокумента <> Объект.Валюта Тогда
ВалютаДокумента = Объект.Валюта;
ЗаполнитьВидыЦен();
КонецЕсли;
ЗаполнитьНовыйВидЦены();
КонецПроцедуры
&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииНаСервере()
ИсходныйВидЦены = Объект.ВидЦены;
КомиссионныеПродажи25 = ЭтоОприходованиеУКомиссионера();
ОтгрузкаБезПереходаПраваСобственности25 = ЭтоОприходованиеОтгруженныхТоваров(Объект.ХозяйственнаяОперация);
ДокументПродажи = РеквизитФормыВЗначение("Объект");
ДокументПродажи.ЗаполнитьУсловияПродажПоУмолчанию();
ЗначениеВРеквизитФормы(ДокументПродажи, "Объект");
Если ВалютаДокумента <> Объект.Валюта Тогда
ВалютаДокумента = Объект.Валюта;
ЗаполнитьВидыЦен();
КонецЕсли;
ЗаполнитьНовыйВидЦены();
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
АвтоЗаголовок = Ложь;
СформироватьЗаголовокОтТипаХозОперации();
Иначе
АвтоЗаголовок = Истина;
КонецЕсли;
ОбновитьИнформациюПоРаспоряжениям();
НастроитьФорму();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
Если ИспользоватьСоглашенияСКлиентами
И ЗначениеЗаполнено(Объект.Соглашение)
И Не ХозяйственнаяОперацияДоговора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ХозяйственнаяОперация") Тогда
Объект.Соглашение = Неопределено;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Договор)
И Не ХозяйственнаяОперацияДоговора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ХозяйственнаяОперация") Тогда
Объект.Договор = Неопределено;
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
УстановитьВозможностьРедактированияНД();
КонецЕсли;
ПараметрыУказанияСерий = ПараметрыУказанияСерий();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
НаправлениеДеятельностиСтарое = Объект.НаправлениеДеятельности;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьДоговорПоУмолчанию();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение,
Объект.Договор);
КонецЕсли;
КонецЕсли;
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость,
Объект.Договор);
Если ИспользоватьНаправленияДеятельности Тогда
УстановитьВозможностьРедактированияНД();
КонецЕсли;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
Если НаправлениеДеятельностиСтарое <> Объект.НаправлениеДеятельности Тогда
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ЗаполнитьНовыйВидЦены();
ПересчитатьКоличествоРНПТ();
КонецПроцедуры
&НаСервере
Процедура ДоговорПриИзмененииСервер()
Договор = Объект.Договор;
Объект.Валюта = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Договор, "ВалютаВзаиморасчетов");
Если ВалютаДокумента <> Объект.Валюта Тогда
ИсходныйВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
ВалютаДокумента = Объект.Валюта;
ЗаполнитьВидыЦен();
КонецЕсли;
Если ЭтоОприходованиеУКомиссионера() Тогда
НовыйВидЦены = КомиссионнаяТорговляСервер.ВидЦеныДоговора(Договор, Истина)
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, Объект.Соглашение, Договор);
УстановитьВозможностьРедактированияНД();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗадатьВопросПриИзмененииВидаЦены()
Если ЗначениеЗаполнено(НовыйВидЦены)
И Не ИсходныйВидЦены = НовыйВидЦены Тогда
Если Объект.Товары.Количество() > 0 Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ВидЦеныПриИзмененииЗавершение", ЭтотОбъект);
ТекстВопроса = НСтр("ru = 'Заполнить цены по виду цен ""%ВидЦены%""?'");
ТекстВопроса = СтрЗаменить(ТекстВопроса, "%ВидЦены%", НовыйВидЦены);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да);
Иначе
Объект.ВидЦены = НовыйВидЦены;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
Объект.ВидЦены = НовыйВидЦены;
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер();
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, НовыйВидЦены);
ИначеЕсли Не Объект.ВидЦены = ИсходныйВидЦены Тогда
Объект.ВидЦены = ИсходныйВидЦены;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
#КонецОбласти
#Область РаботаСКонтрагентами
&НаКлиенте
Процедура Подключаемый_ПоказатьПредложениеИспользоватьПроверкуКонтрагентов()
ПроверкаКонтрагентовКлиент.ПредложитьВключитьПроверкуКонтрагентов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработатьРезультатПроверкиКонтрагентов()
ПроверкаКонтрагентовКлиент.ОбработатьРезультатПроверкиКонтрагентовВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОтобразитьРезультатПроверкиКонтрагента() Экспорт
ПроверкаКонтрагентов.ОтобразитьРезультатПроверкиКонтрагентаВДокументе(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПроверитьКонтрагентовФоновоеЗадание(ПараметрыФоновогоЗадания) Экспорт
ПроверкаКонтрагентов.ПроверитьКонтрагентовВДокументеФоновоеЗадание(ЭтотОбъект, ПараметрыФоновогоЗадания);
КонецПроцедуры
#КонецОбласти
#Область ЗаполнениеПоРаспоряжению
&НаКлиенте
Процедура РаспоряжениеВыборКлиент(ВыбранноеЗначение, Параметры) Экспорт
Если ВыбранноеЗначение <> Неопределено Тогда
Модифицированность = Истина;
Если Объект.Товары.Количество() > 0 Тогда
ПараметрыОповещения = Новый Структура("ВыбранноеЗначение", ВыбранноеЗначение);
ОписаниеОповещения = Новый ОписаниеОповещения("РаспоряжениеВыборКлиентЗавершение",
ЭтотОбъект,
ПараметрыОповещения);
ТекстВопроса = НСтр("ru='Строки в списке Товары будут перезаполнены по выбранному распоряжению. Продолжить?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ЗаполнитьПоРаспоряжениюСервер(ВыбранноеЗначение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РаспоряжениеВыборКлиентЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
Объект.Товары.Очистить();
ЗаполнитьПоРаспоряжениюСервер(ДополнительныеПараметры.ВыбранноеЗначение);
КонецПроцедуры
&НаСервере
Процедура ПредставлениеРаспоряженияСервер()
Если ЗначениеЗаполнено(Объект.Распоряжение) Тогда
РаспоряжениеПредставление = СтроковыеФункции.ФорматированнаяСтрока(
"<a href='ОткрытьРаспоряжение'>%1</a> <a href='ВыбратьРаспоряжение'>%2</a>",
Строка(Объект.Распоряжение),
НСтр("ru = 'Изменить'"));
Иначе
РаспоряжениеПредставление = СтроковыеФункции.ФорматированнаяСтрока(
"‹%1› <a href='ВыбратьРаспоряжение'>%2</a>",
НСтр("ru = 'не выбрано'"),
НСтр("ru = 'Выбрать'"));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоРаспоряжениюСервер(Распоряжение)
Если Не ЗначениеЗаполнено(Распоряжение) Тогда
Возврат;
КонецЕсли;
Объект.Распоряжение = Распоряжение;
МенеджерНакладной = Документы.ОприходованиеИзлишковОтгруженныхТоваров;
РеквизитыШапки = МенеджерНакладной.РеквизитыШапки();
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Объект);
ТаблицаТовары = Объект.Товары.Выгрузить();
МассивЗаказов = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Распоряжение);
ПараметрыЗаполнения = МенеджерНакладной.ПараметрыЗаполненияДокумента();
МенеджерНакладной.ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения, РеквизитыШапки, МассивЗаказов);
МенеджерНакладной.ЗаполнитьПоЗаказамОрдерам(ТаблицаТовары, Объект.Ссылка, ПараметрыЗаполнения);
Объект.Товары.Загрузить(ТаблицаТовары);
СтруктураДействий = Новый Структура;
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействий,
"Договор");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(
Объект.Товары,
СтруктураДействий);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ОбновитьИнформациюПоРаспоряжениям();
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
ПараметрыОтбора = Новый Соответствие;
Если ОтгрузкаБезПереходаПраваСобственности25 Тогда
МассивТиповНоменклатуры = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Перечисления.ТипыНоменклатуры.Товар);
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", МассивТиповНоменклатуры);
Иначе
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
КонецЕсли;
Колонки = "Номенклатура,Характеристика,Количество,КоличествоПоРНПТ,НомерГТД";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
#КонецОбласти
#Область ВидыЗапасов
&НаСервере
Процедура ПолучитьВидыЗапасовИзХранилища(ВыбранноеЗначение)
ЗапасыСервер.ОбработатьВводВидовЗапасовВручную(ВыбранноеЗначение, ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаСервере
Процедура ОбработкаВыбораПодборПереданныхТоваров(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ПоискТоваров = Новый Структура();
ПоискТоваров.Вставить("Номенклатура", СтрокаТовара.Номенклатура);
ПоискТоваров.Вставить("Характеристика", СтрокаТовара.Характеристика);
ПоискТоваров.Вставить("Назначение", СтрокаТовара.Назначение);
ПоискТоваров.Вставить("НомерГТД", СтрокаТовара.НомерГТД);
ПоискТоваров.Вставить("Серия", СтрокаТовара.Серия);
СтрокиТоваров = Объект.Товары.НайтиСтроки(ПоискТоваров);
Если СтрокиТоваров.Количество() = 0 Тогда
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ИначеЕсли СтрокиТоваров.Количество() = 1 Тогда
ТекущаяСтрока = СтрокиТоваров[0];
ИначеЕсли СтрокиТоваров.Количество() > 1 Тогда
Для Каждого СтрокаКУдалению Из СтрокиТоваров Цикл
Объект.Товары.Удалить(СтрокаКУдалению);
КонецЦикла;
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
КонецЕсли;
ТекущаяСтрока.Количество = СтрокаТовара.КоличествоПодобрано;
Если ОтгрузкаБезПереходаПраваСобственности25 И ЗначениеЗаполнено(Объект.Распоряжение) Тогда
ТекущаяСтрока.Распоряжение = Объект.Распоряжение;
КонецЕсли;
КонецЦикла;
ЗаполнитьЦеныПоВидуЦенСервер();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ПересчитатьКоличествоРНПТ();
КонецПроцедуры
&НаСервере
Функция ПоместитьТоварыВХранилищеДляПодбораПереданногоТовара()
Адрес = ПоместитьВоВременноеХранилище(
Объект.Товары.Выгрузить(,"НомерСтроки, Номенклатура, Характеристика, Назначение, НомерГТД, Серия, Количество"),
УникальныйИдентификатор);
Возврат Адрес;
КонецФункции
&НаСервере
Функция ПоместитьТабличнуюЧастьТоварыВоВременноеХранилищеДляПроверкиКоличества()
КолонкиГруппировки = "Номенклатура, ТипНоменклатуры, Характеристика, ХарактеристикиИспользуются, Серия,
|СтатусУказанияСерий";
ВыгружаемыеКолонки = КолонкиГруппировки + ", Количество";
ТабличнаяЧастьТовары = Объект.Товары.Выгрузить(, ВыгружаемыеКолонки);
ТабличнаяЧастьТовары.Свернуть(КолонкиГруппировки, "Количество");
ТабличнаяЧастьТовары.Колонки.Добавить("КоличествоУпаковок");
Для Каждого СтрокаТЧ Из ТабличнаяЧастьТовары Цикл
СтрокаТЧ.КоличествоУпаковок = СтрокаТЧ.Количество;
КонецЦикла;
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ТабличнаяЧастьТовары, УникальныйИдентификатор);
Возврат АдресВоВременномХранилище;
КонецФункции
&НаСервере
Процедура ИзменитьТабличнуюЧастьПоРезультатамПроверки(ВозвращаемыеПараметры, КэшированныеЗначения)
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличества(СтруктураДействий, Объект);
ТаблицаТовары = ПолучитьИзВременногоХранилища(ВозвращаемыеПараметры.Товары);
УдаляемыеСтроки = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив();
КолонкиОтбора = "Номенклатура, Характеристика, Серия, СтатусУказанияСерий";
Для Каждого СтрокаИсточник Из ТаблицаТовары Цикл
Отбор = Новый Структура(КолонкиОтбора);
ЗаполнитьЗначенияСвойств(Отбор, СтрокаИсточник);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
Если СтрокаИсточник.КоличествоУпаковок = 0 Тогда
Прервать;
КонецЕсли;
Если СтрокаТЧ.Количество = 0
И СтрокаИсточник.КоличествоУпаковок < 0 Тогда
Продолжить;
КонецЕсли;
Если СтрокаИсточник.КоличествоУпаковок >= 0 Тогда
СтрокаТЧ.Количество = СтрокаТЧ.Количество + СтрокаИсточник.КоличествоУпаковок;
СтрокаИсточник.КоличествоУпаковок = 0;
Иначе
КоличествоКСписанию = -СтрокаИсточник.КоличествоУпаковок;
КоличествоВСтроке = СтрокаТЧ.Количество;
Если КоличествоКСписанию > КоличествоВСтроке Тогда
СтрокаИсточник.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
СтрокаТЧ.Количество = 0;
Иначе
СтрокаИсточник.КоличествоУпаковок = 0;
СтрокаТЧ.Количество = КоличествоВСтроке - КоличествоКСписанию;
КонецЕсли;
КонецЕсли;
Если СтрокаТЧ.Количество = 0 Тогда
УдаляемыеСтроки.Добавить(СтрокаТЧ);
Иначе
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТЧ = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаИсточник);
СтрокаТЧ.Количество = СтрокаИсточник.КоличествоУпаковок;
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Для Каждого СтрокаТЧ Из УдаляемыеСтроки Цикл
Объект.Товары.Удалить(СтрокаТЧ);
КонецЦикла;
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий);
КонецПроцедуры
&НаСервере
Функция АдресТоварыНакладной()
ОписаниеКолонкиКоличествоУпаковок = Новый ОписаниеТипов("Число",
Новый КвалификаторыЧисла(15, 3, ДопустимыйЗнак.Неотрицательный));
Таблица = Объект.Товары.Выгрузить();
Таблица.Колонки.Добавить("КоличествоУпаковок", ОписаниеКолонкиКоличествоУпаковок);
ЗначенияКолонкиКоличество = Таблица.ВыгрузитьКолонку("Количество");
Таблица.ЗагрузитьКолонку(ЗначенияКолонкиКоличество, "КоличествоУпаковок");
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Таблица, УникальныйИдентификатор);
Возврат АдресВоВременномХранилище;
КонецФункции
&НаСервере
Процедура ОбработкаПодбораТоваровИзЗаказа(АдресВХранилище)
ИменаПолей = Документы.ОприходованиеИзлишковОтгруженныхТоваров.КлючевыеПоляТаблицыТоваровРаспоряжения();
Таблица = ПолучитьИзВременногоХранилища(АдресВХранилище).Товары;
Таблица.Сортировать(ИменаПолей + " Убыв");
Таблица.Колонки.Удалить("Количество");
Таблица.Колонки["КоличествоУпаковок"].Имя = "Количество";
ДеревоСтрок = Новый Массив;
Для Каждого СтрокаТаблицы Из Таблица Цикл
МассивСтрок = Новый Массив;
МассивСтрок.Добавить(СтрокаТаблицы);
ДеревоСтрок.Добавить(МассивСтрок);
КонецЦикла;
НакладныеСервер.ЗаполнитьТоварыПодобраннымиИзЗаказа(ДеревоСтрок, ИменаПолей, Объект.Товары, Новый Структура);
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличества(СтруктураДействий, Объект);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(
Объект.Товары,
СтруктураДействий);
ОбновитьИнформациюПоРаспоряжениям();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
НаправленияДеятельностиСервер.УстановитьВидимостьЭлементовОбособленно(ЭтотОбъект);
НаправленияДеятельностиСервер.ПерезаполнитьСлужебныеРеквизитыТабличнойЧасти(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Функция ПараметрыУказанияСерий()
МенеджерОбъекта = Документы.ОприходованиеИзлишковОтгруженныхТоваров;
Возврат Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, МенеджерОбъекта));
КонецФункции
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
НуженСерверныйВызов = НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтотОбъект,
ПараметрыУказанияСерий,
Текст,
ТекущиеДанные);
Если НуженСерверныйВызов Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
ДополнительныеПараметры = Новый Структура("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий);
ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение",
ЭтотОбъект,
ДополнительныеПараметры);
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы, ПараметрыФормыУказанияСерий, ЭтотОбъект, , , , ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ДополнительныеПараметры.ПараметрыФормыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект,
ПараметрыУказанияСерий,
ТекущиеДанныеИдентификатор,
ЭтотОбъект);
КонецФункции
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
НоменклатураСервер.ОбработатьУказаниеСерий(Объект, ПараметрыУказанияСерий, ПараметрыФормыУказанияСерий);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект,
ПараметрыУказанияСерий,
ТекущаяСтрокаИдентификатор,
КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
#Область НомераГТД
&НаКлиенте
Процедура ОбработатьПодборНомераГТД(РезультатПодбора)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ИдентификаторСтроки = ТекущиеДанные.ПолучитьИдентификатор();
Если ИдентификаторСтроки = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполненыНомераГТД = Ложь;
НомерГТД = Неопределено;
ОбработатьУказаниеНомераГТДСервер(ИдентификаторСтроки, РезультатПодбора, ЗаполненыНомераГТД, НомерГТД);
ЗакупкиКлиент.ОповеститьОЗаполненииНомеровГТДВТабличнойЧасти(ЗаполненыНомераГТД, НомерГТД);
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеНомераГТДСервер(ИдентификаторСтроки,
РезультатПодбора,
ЗаполненыНомераГТД,
НомерГТД)
ДанныеПодбора = ПолучитьИзВременногоХранилища(РезультатПодбора.АдресВоВременномХранилище);
НомерГТД = ?(ДанныеПодбора.ОстаточныйНомерГТД <> Неопределено,
НомерГТД,
ДанныеПодбора.ОсновнойНомерГТД);
ПараметрыПодбораНомераГТД = ЗакупкиСервер.ПараметрыПодбораНомераГТД();
ПараметрыПодбораНомераГТД.ИмяПоляКоличествоУпаковок = "Количество";
ДействияОбработки = Новый Структура;
Если ДанныеПодбора.ОстаточныйНомерГТД <> Неопределено Тогда
ДобавитьВСтруктуруДействияПриИзмененииКоличества(ДействияОбработки, Объект);
Иначе
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
ДействияОбработки);
КонецЕсли;
ЗакупкиСервер.ОбработатьУказаниеНомераГТД(ЭтотОбъект,
ИдентификаторСтроки,
ДанныеПодбора,
ЗаполненыНомераГТД,
ПараметрыПодбораНомераГТД,
ДействияОбработки);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНомераГТДЗавершение(Результат, ДополнительныеПараметры) Экспорт
НомерГТД = Результат;
ЗаполненыНомераГТД = ДополнительныеПараметры.ЗаполненыНомераГТД;
Если ЗначениеЗаполнено(НомерГТД) Тогда
ЗаполнитьНомераГТДНаСервере(НомерГТД, ЗаполненыНомераГТД);
КонецЕсли;
ЗакупкиКлиент.ОповеститьОЗаполненииНомеровГТДВТабличнойЧасти(ЗаполненыНомераГТД, НомерГТД);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНомераГТДНаСервере(Знач НомерГТД, ЗаполненыНомераГТД)
ПараметрыЗаполнения = ЗакупкиСервер.ПараметрыЗаполненияНомераГТДВТабличнойЧасти();
ПараметрыЗаполнения.ИмяПоляКоличествоУпаковок = "Количество";
ЗакупкиСервер.ЗаполнитьНомераГТДВТабличнойЧасти(
Объект.Товары,
НомерГТД,
Элементы.Товары.ВыделенныеСтроки,
ЗаполненыНомераГТД,
ПараметрыЗаполнения);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтотОбъект, "СерииВсегдаВТЧТовары");
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтотОбъект, Истина);
ПараметрыУсловногоОформления = НоменклатураСервер.ПараметрыУстановкиУсловногоОформленияНомераГТД();
ПараметрыУсловногоОформления.ИмяПоляВводаНомераГТД = "ТоварыСтранаПроисхождения";
НоменклатураСервер.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеНомераГТД(ЭтотОбъект, ПараметрыУсловногоОформления);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНомерГТД.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСтранаПроисхождения.Имя);
ТипыТоваров = Новый СписокЗначений;
ТипыТоваров.Добавить(Перечисления.ТипыНоменклатуры.Товар);
ТипыТоваров.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ОтборЭлемента.ПравоеЗначение = ТипыТоваров;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.РаспоряжениеПредставление.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.РезультатПроблемаЦвет);
Если ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен") Тогда
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЦена.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецЕсли;
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьОтгрузкуПоНесколькимЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтгрузкаБезПереходаПраваСобственности25");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыРаспоряжение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Распоряжение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийОшибкуТекст);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = 'Сверх распоряжения, распоряжение не выбрано'"));
ЗапасыСервер.УстановитьУсловноеОформлениеПодразделенияДляВидовЗапасов(ЭтотОбъект);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтотОбъект);
УчетПрослеживаемыхТоваровЛокализация.УстановитьУсловноеОформлениеКоличестваПоРНПТ(ЭтотОбъект);
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(ЭтотОбъект, "ВидЦены", "Объект.ВидЦены");
КонецПроцедуры
&НаСервере
Процедура УстановитьВозможностьРедактированияНД()
ПараметрыДоступностиНД = НаправленияДеятельностиСервер.ПараметрыВозможностьРедактированияНД();
ПараметрыДоступностиНД.Договор = Объект.Договор;
ПараметрыДоступностиНД.ПорядокРасчетов = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор, "ПорядокРасчетов");
НаправленияДеятельностиСервер.УстановитьВозможностьРедактированияНД(ЭтотОбъект, ПараметрыДоступностиНД);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ЗапретитьПоступлениеТоваровБезНомеровГТД = ПолучитьФункциональнуюОпцию("ЗапретитьПоступлениеТоваровБезНомеровГТД");
ИспользоватьНаправленияДеятельности =
ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности");
ИспользоватьСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
ИспользоватьПартнеровКакКонтрагентов = ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровКакКонтрагентов");
ИспользоватьУчетПрослеживаемыхИмпортныхТоваров =
УчетПрослеживаемыхТоваровЛокализация.ИспользоватьУчетПрослеживаемыхИмпортныхТоваров(Объект.Дата);
ИспользоватьОтгрузкуПоНесколькимЗаказам =
ПолучитьФункциональнуюОпцию("ИспользоватьРеализациюПоНесколькимЗаказам");
ПараметрыУказанияСерий = ПараметрыУказанияСерий();
КомиссионныеПродажи25 = ЭтоОприходованиеУКомиссионера();
ВалютаДокумента = Объект.Валюта;
ОтгрузкаБезПереходаПраваСобственности25 = ЭтоОприходованиеОтгруженныхТоваров(Объект.ХозяйственнаяОперация);
НастроитьФорму();
ЗаполнитьСписокВыбораОпераций();
ОбновитьИнформациюПоРаспоряжениям();
УстановитьВидимостьЭлементовСерий();
Если ИспользоватьНаправленияДеятельности Тогда
УстановитьВозможностьРедактированияНД();
КонецЕсли;
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ЗаполнитьВидыЦен();
ЗакупкиСервер.ЗаполнитьСлужебныеРеквизитыНомераГТД(Объект.Товары);
ПродажиСервер.УстановитьДоступностьДоговора(Объект, Элементы.Договор.Доступность, Элементы.Договор.Видимость);
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
ЗаполнитьПризнакАртикул = Новый Структура("Номенклатура", "Артикул");
ЗаполнитьПризнакТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
ЗаполнитьПризнакХарактеристикиИспользуются = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
ЗаполнитьПризнакВедетсяУчетПоГТД = Новый Структура("Номенклатура", "ВедетсяУчетПоГТД");
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакАртикул", ЗаполнитьПризнакАртикул);
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
ЗаполнитьПризнакХарактеристикиИспользуются);
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакВедетсяУчетПоГТД", ЗаполнитьПризнакВедетсяУчетПоГТД);
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекЗаполненияСлужебныхРеквизитовТабличнойЧасти(ПараметрыЗаполненияРеквизитов);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, ПараметрыЗаполненияРеквизитов);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
ОтборПоКомиссионнымПродажам25 = ЭтоОприходованиеУКомиссионера();
НаправлениеДеятельности = ?(ИспользоватьНаправленияДеятельности, Объект.НаправлениеДеятельности, Неопределено);
ДоговорПоУмолчанию = ПродажиСервер.ПолучитьДоговорПоУмолчанию(Объект,
ХозяйственнаяОперацияДоговора,
Объект.Валюта,
НаправлениеДеятельности,
ОтборПоКомиссионнымПродажам25);
Если Объект.Договор <> ДоговорПоУмолчанию Тогда
Объект.Договор = ДоговорПоУмолчанию;
ЗаполнитьНовыйВидЦены();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ТоварыПослеУдаленияСервер(НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения)
Если НеобходимоОбновитьСтатусыСерий Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения);
КонецЕсли;
ОбновитьИнформациюПоРаспоряжениям();
КонецПроцедуры
&НаСервере
Процедура СформироватьЗаголовокОтТипаХозОперации()
Заголовок = НСтр("ru = 'Оприходование излишков товаров на хранении с правом продажи (создание)'");
Если ЭтоОприходованиеУКомиссионера() Тогда
Заголовок = НСтр("ru = 'Оприходование излишков товаров у комиссионера (создание)'");
ИначеЕсли ЭтоОприходованиеОтгруженныхТоваров(Объект.ХозяйственнаяОперация) Тогда
Заголовок = НСтр("ru = 'Оприходование излишков товаров, отгруженных клиенту (создание)'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСписокВыбораОпераций()
СписокВыбора = Элементы.ХозяйственнаяОперация.СписокВыбора;
Если Элементы.Найти("ХозяйственнаяОперация") <> Неопределено Тогда
Если Не ПолучитьФункциональнуюОпциюФормы("ИспользоватьКомиссиюПриПродажах") Тогда
ЭлементСписка = СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ОприходованиеИзлишковТоваровВПользуКомитента);
Если ЭлементСписка <> Неопределено Тогда
СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
Если Не ПолучитьФункциональнуюОпциюФормы("ИспользоватьПередачуНаОтветственноеХранениеСПравомПродажи") Тогда
ЭлементСписка = СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ОприходованиеИзлишковТоваровВПользуПоклажедателя);
Если ЭлементСписка <> Неопределено Тогда
СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
Если Не ПолучитьФункциональнуюОпциюФормы("ИспользоватьОтгрузкуБезПереходаПраваСобственности2_5") Тогда
ЭлементСписка = СписокВыбора.НайтиПоЗначению(Перечисления.ХозяйственныеОперации.ОприходованиеИзлишковОтгруженныхТоваров);
Если ЭлементСписка <> Неопределено Тогда
СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
ЕдинственнаяОперация = Элементы.ХозяйственнаяОперация.СписокВыбора.Количество() = 1;
Если ЕдинственнаяОперация
И Не ЗначениеЗаполнено(Объект.ХозяйственнаяОперация) Тогда
Объект.ХозяйственнаяОперация = СписокВыбора[0].Значение;
ХозяйственнаяОперацияПриИзмененииНаСервере();
КонецЕсли;
ЗначениеСвойстваПоля = ЕдинственнаяОперация
И ЗначениеЗаполнено(Объект.ХозяйственнаяОперация);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ХозяйственнаяОперация",
"ТолькоПросмотр",
ЗначениеСвойстваПоля);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗаполнитьЦеныПоВидуЦенСервер(ИдентификаторСтроки = Неопределено)
Если ИдентификаторСтроки = Неопределено Тогда
МассивСтрок = Неопределено;
Иначе
МассивСтрок = Новый Массив;
МассивСтрок.Добавить(Объект.Товары.НайтиПоИдентификатору(ИдентификаторСтроки));
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
КолонкиПоЗначению = Новый Структура("Упаковка", Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка());
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦены", Объект.ВидЦены);
ПараметрыЗаполнения.Вставить("КолонкиПоЗначению", КолонкиПоЗначению);
Возврат ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
КонецФункции
&НаСервере
Процедура ЗаполнитьНовыйВидЦены()
ИсходныйВидЦены = Объект.ВидЦены;
Если ЭтоОприходованиеУКомиссионера() Тогда
НовыйВидЦены = КомиссионнаяТорговляСервер.ВидЦеныДоговора(Объект.Договор, Истина);
ИначеЕсли ЗначениеЗаполнено(Объект.Соглашение) Тогда
НовыйВидЦены = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ВидЦен");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЭтоОприходованиеУКомиссионера()
Возврат Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ОприходованиеИзлишковТоваровВПользуКомитента;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЭтоОприходованиеОтгруженныхТоваров(ХозяйственнаяОперация)
Возврат ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.ОприходованиеИзлишковОтгруженныхТоваров");
КонецФункции
&НаСервере
Процедура ЗаполнитьВидыЦен()
ПараметрыВыбораВидаЦен = Новый Массив;
ПараметрыВыбораВидаЦен.Добавить(Новый ПараметрВыбора("ВыводитьПроизвольныйВидЦен", Истина));
ПараметрыВыбораВидаЦен.Добавить(Новый ПараметрВыбора("Отбор.Статус", Перечисления.СтатусыДействияВидовЦен.Действует));
ПараметрыВыбораВидаЦен.Добавить(Новый ПараметрВыбора("ИспользоватьПриПродаже", Истина));
ПараметрыВыбораВидаЦен.Добавить(Новый ПараметрВыбора("Отбор.ЭтоГруппа", Ложь));
ПараметрыВыбораВидаЦен.Добавить(Новый ПараметрВыбора("Отбор.ПометкаУдаления", Ложь));
ПараметрыВыбораВидаЦен.Добавить(Новый ПараметрВыбора("Отбор.ВалютаЦены", Объект.Валюта));
Элементы.ВидЦены.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораВидаЦен);
Если Не ТолькоПросмотр
И ЗначениеЗаполнено(Объект.ВидЦены) Тогда
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.ВидЦены, "ИспользоватьПриПродаже, ВалютаЦены");
Если Не ЗначенияРеквизитов.ИспользоватьПриПродаже
Или ЗначенияРеквизитов.ВалютаЦены <> Объект.Валюта Тогда
Объект.ВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
НовыйВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПересчитатьКоличествоРНПТ()
Если ЗначениеЗаполнено(Объект.Договор)
И ЗначениеЗаполнено(Объект.Организация) Тогда
ПараметрыПолученияКоэффициентаРНПТ = УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ПараметрыПолученияКоэффициентаРНПТ(
Объект,
"Договор");
УчетПрослеживаемыхТоваровЛокализация.ЗаполнитьКоличествоПоРНПТВТабличнойЧасти(ПараметрыПолученияКоэффициентаРНПТ,
Объект.Товары);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличества(СтруктураДействий, Объект)
СтруктураДействий.Вставить("ПересчитатьСумму","Количество");
УчетПрослеживаемыхТоваровКлиентСерверЛокализация.ДополнитьОписаниеНастроекПересчетаРеквизитовТабличнойЧасти(
Объект,
СтруктураДействий,
"Договор");
КонецПроцедуры
&НаСервере
Процедура НастроитьФорму()
Если ЭтоОприходованиеУКомиссионера() Тогда
ХозяйственнаяОперацияДоговора = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию;
Иначе
ХозяйственнаяОперацияДоговора = ?(ОтгрузкаБезПереходаПраваСобственности25,
Перечисления.ХозяйственныеОперации.РеализацияКлиенту,
Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи);
КонецЕсли;
Элементы.СтраницыРаспоряжение.Видимость = ОтгрузкаБезПереходаПраваСобственности25;
Элементы.ТоварыПодобратьТоварыПоЗаказам.Видимость = ОтгрузкаБезПереходаПраваСобственности25;
Элементы.ТоварыНазначение.Видимость = Не ОтгрузкаБезПереходаПраваСобственности25;
ТекстЗаголовка = НСтр("ru = 'Подобрать переданные товары'");
Если ОтгрузкаБезПереходаПраваСобственности25 Тогда
ТекстЗаголовка = НСтр("ru = 'Подобрать отгруженные товары'");
КонецЕсли;
Команды.ПодобратьПереданныеТовары.Заголовок = ТекстЗаголовка;
Команды.ПодобратьПереданныеТовары.Подсказка = ТекстЗаголовка;
Если ОтгрузкаБезПереходаПраваСобственности25 Тогда
ПараметрВыбора = Новый ПараметрВыбора("Отбор.ТипНоменклатуры", Перечисления.ТипыНоменклатуры.Товар);
МассивПараметровВыбора = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ПараметрВыбора);
Элементы.ТоварыНоменклатура.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
КонецЕсли;
ПартнерыИКонтрагенты.ЗаголовокЭлементаПартнерВЗависимостиОтХозяйственнойОперации(
ЭтотОбъект, "Партнер", Объект.ХозяйственнаяОперация);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюПоРаспоряжениям()
Если Не ОтгрузкаБезПереходаПраваСобственности25 Тогда
Объект.Распоряжение = Неопределено;
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
СтрокаТЧ.Распоряжение = Неопределено;
КонецЦикла;
СписокРаспоряжений.Очистить();
Возврат;
КонецЕсли;
Элементы.СтраницыРаспоряжение.Видимость = Истина;
Элементы.СтраницыРаспоряжение.Доступность = Истина;
СписокРаспоряжений.Очистить();
ВоВсехСтрокахЕстьЗаказ = Истина;
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если ЗначениеЗаполнено(ТекСтрока.Распоряжение) Тогда
Если СписокРаспоряжений.НайтиПоЗначению(ТекСтрока.Распоряжение) = Неопределено Тогда
СписокРаспоряжений.Добавить(ТекСтрока.Распоряжение);
КонецЕсли;
Иначе
ВоВсехСтрокахЕстьЗаказ = Ложь;
КонецЕсли;
КонецЦикла;
Если СписокРаспоряжений.Количество() = 1 И ВоВсехСтрокахЕстьЗаказ Тогда
Объект.Распоряжение = СписокРаспоряжений[0].Значение;
ПредставлениеРаспоряженияСервер();
ИначеЕсли СписокРаспоряжений.Количество() > 1
Или Не ВоВсехСтрокахЕстьЗаказ Тогда
Объект.Распоряжение = Неопределено;
КонецЕсли;
Если СписокРаспоряжений.Количество() > 1 Тогда
НадписьВсегоЗаказов = НСтр("ru = 'Всего документов'");
НадписьЗаголовокРаспоряжений = НадписьВсегоЗаказов + ": " + СписокРаспоряжений.Количество();
КонецЕсли;
Если СписокРаспоряжений.Количество() <= 1 Тогда
Элементы.СтраницыРаспоряжение.ТекущаяСтраница = Элементы.СтраницаРаспоряжение;
ПредставлениеРаспоряженияСервер();
Иначе
Элементы.СтраницыРаспоряжение.ТекущаяСтраница = Элементы.СтраницаРаспоряжения;
Элементы.СтраницаРаспоряжения.Доступность = Истина;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Распоряжение) Или Не ИспользоватьОтгрузкуПоНесколькимЗаказам Тогда
Элементы.ТоварыГруппаРаспоряжение.Группировка = ГруппировкаКолонок.Вертикальная;
Иначе
Элементы.ТоварыГруппаРаспоряжение.Группировка = ГруппировкаКолонок.ВЯчейке;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборРаспоряжения(ОписаниеОповещения)
ИменаРеквизитовДокумента =
"Ссылка,
|Партнер,
|Контрагент,
|Соглашение,
|Организация,
|Договор,
|Сделка,
|Подразделение,
|НаправлениеДеятельности,
|Валюта
|";
ПараметрыФормы = Новый Структура(ИменаРеквизитовДокумента);
ЗаполнитьЗначенияСвойств(ПараметрыФормы, Объект);
ОткрытьФорму("Документ.ОприходованиеИзлишковОтгруженныхТоваров.Форма.ФормаВыбораРаспоряжения",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВыборРаспоряженияЗавершение(Результат, ДополнительныеПараметры) Экспорт
Элементы.Товары.ТекущиеДанные.Распоряжение = Результат;
ОбновитьИнформациюПоРаспоряжениям();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборПоРаспоряжениям()
ИменаРеквизитов =
"Валюта,
|Договор,
|Контрагент,
|НаправлениеДеятельности,
|Организация,
|Партнер,
|Подразделение,
|Сделка,
|Соглашение,
|Ссылка,
|ХозяйственнаяОперация
|";
РеквизитыШапки = Новый Структура(ИменаРеквизитов);
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Объект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РеквизитыШапки", РеквизитыШапки);
ПараметрыФормы.Вставить("Накладная", Объект.Ссылка);
ПараметрыФормы.Вставить("ИспользуютсяЗаказы", Истина);
ПараметрыФормы.Вставить("НакладнаяПоЗаказам", Истина);
ПараметрыФормы.Вставить("Заказ", Объект.Распоряжение);
ПараметрыФормы.Вставить("ОрдернаяСхемаПриОтгрузке", Ложь);
ПараметрыФормы.Вставить("ОрдернаяСхемаПриПоступлении", Ложь);
ПараметрыФормы.Вставить("АдресТовары", АдресТоварыНакладной());
ПараметрыФормы.Вставить("ИспользоватьНакладныеПоНесколькимЗаказам", ИспользоватьОтгрузкуПоНесколькимЗаказам);
ОткрытьФорму("ОбщаяФорма.ПодборТоваровИзЗаказа",
ПараметрыФормы,
ЭтотОбъект,
УникальныйИдентификатор,
,
,
,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
#Область СтандартныеПодсистемы_ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
#КонецОбласти
#Область СтандартныеПодсистемы_Свойства
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти