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