#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ПредыдущиеРеквизитыСтроки;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не ЗначениеЗаполнено(Объект.Ссылка)
И ПолучитьФункциональнуюОпцию("ОтображатьПроизводствоНаСтороне2_4") Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Документы производства на стороне версии 2.4 доступны только для просмотра. Создание новых документов запрещено.'"),,,,
Отказ);
Возврат;
КонецЕсли;
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтаФорма);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма, "Товары,ВозвратныеОтходы");
ИспользоватьПоступлениеПоНесколькимЗаказам = ПолучитьФункциональнуюОпцию("ИспользоватьПоступлениеПоНесколькимЗаказам");
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Элементы.КартинкаРасхождениеЗаказ.Картинка = Новый Картинка();
Элементы.КартинкаРасхождениеЗаказы.Картинка = Новый Картинка();
ПриЧтенииСозданиНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Товары);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.ВозвратныеОтходы);
ИначеЕсли Параметры.ЗначенияЗаполнения.Свойство("ЗаполнятьПоОрдеру") Тогда
ПерезаполнитьПоОрдерам(Параметры.ЗначенияЗаполнения.МассивЗаказов);
Модифицированность = Истина;
КонецЕсли;
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
Объект.ВозвратныеОтходы,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
ЗакупкиСервер.УстановитьРежимВыбораГруппЭлементовСклада(Элементы.Склад);
ДоступноИзменение = ПравоДоступа("Изменение", Метаданные.Документы.ЗаказПереработчику);
Элементы.ЗакрытьЗаказ.Доступность = ДоступноИзменение;
Элементы.ЗакрытьЗаказы.Доступность = ДоступноИзменение;
УстановитьДоступностьКомандБуфераОбмена();
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
УстановитьВидимостьКомандВводНаОсновании();
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПриЧтенииСозданиНаСервере();
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Перем ВыполняемаяОперация;
Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") И ВыбранноеЗначение.Свойство("ВыполняемаяОперация", ВыполняемаяОперация) Тогда
Если ВРег(ВыполняемаяОперация) = ВРег("ПодборТоваровИзЗаказа") Тогда
ОбработкаПодбораТоваровИзЗаказа(ВыбранноеЗначение.АдресВХранилище);
КонецЕсли;
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
ТекущиеДанные = Элементы[ВыбранноеЗначение.ИмяТЧ].ТекущиеДанные;
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий[ВыбранноеЗначение.ИмяТЧ], ВыбранноеЗначение);
Если УчетГотовойПродукцииПоПлановойСтоимости
И ЦенообразованиеКлиент.НеобходимПересчетЦеныПриИзменении(ТекущиеДанные.Номенклатура, "Серия", Объект.Дата) Тогда
СтруктураДействий = Новый Структура;
СтруктураПараметров = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураПараметров.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", СтруктураПараметров);
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецЕсли;
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр), "Товары");
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов, "Товары");
КонецЕсли;
Если ИмяСобытия = "ОбновитьДокументИБПослеЗаполнения" И Параметр.Найти(Объект.Ссылка) <> Неопределено Тогда
ЭтаФорма.Прочитать();
ИначеЕсли ИмяСобытия = "ИзмененРеквизитЗависящийОтСтатуса" Тогда
Если Параметр.УникальныйИдентификатор = УникальныйИдентификатор Тогда
Если Объект.Согласован Тогда
Объект.Согласован = Ложь;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса", 0.1, Истина);
КонецЕсли;
ИначеЕсли ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия,ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПараметрыЗаписи.Вставить("КлючиДокументаОповещение", РаботаСЖурналамиДокументовКлиент.ПолучитьПараметрыКлючаПоДокументу(
Объект.Ссылка, Объект.Дата, Объект.ХозяйственнаяОперация));
Оповестить("Запись_ПоступлениеОтПереработчика", ПараметрыЗаписи, Объект.Ссылка);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
УстановитьДоступностьЭлементовПоСтатусуСервер();
ЗаполнитьСлужебныеРеквизиты();
ОбновитьИнформациюПоЗаказам();
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПредыдущиеРеквизитыСтроки = Новый Структура(
"Номенклатура,
|Характеристика,
|Упаковка,
|Количество,
|КоличествоУпаковок,
|Склад,
|ТипНоменклатуры,
|ХарактеристикиИспользуются,
|ЗаказПереработчику,
|КодСтроки");
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
Если Объект.ПоступлениеПоЗаказам
И Не ЗначениеЗаполнено(Объект.Ссылка)
И Не ЗначениеЗаполнено(Объект.Склад) Тогда
Если ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
ТекстСообщения = НСтр("ru='Уточните склад поступления и заполните продукцию с помощью команды ""Заполнить по заказам""'");
Иначе
ТекстСообщения = НСтр("ru='Уточните склад поступления и заполните продукцию с помощью команды ""Заполнить по заказу""'");
КонецЕсли;
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстСообщения,
Объект.Ссылка,
"Объект.Склад",);
КонецЕсли;
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии()
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
Возврат;
КонецЕсли;
ПриИзмененииПартнераСервер();
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
ПриИзмененииКонтрагентаСервер();
КонецПроцедуры
&НаКлиенте
Процедура ГрузоотправительПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.Грузоотправитель) Тогда
Объект.БанковскийСчетГрузоотправителя = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Грузоотправитель);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ПриИзмененииОрганизацииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ПриИзмененииДоговораСервер();
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
Если Склад <> Объект.Склад Тогда
ПредыдущееЗначениеСкладГруппа = СкладГруппа;
Если НеобходимВопросОбОчисткеСклада() Тогда
Если СкладГруппа Тогда
ТекстВопроса = НСтр("ru='Строки по заказу, в которых склад не входит в группу складов ""%Склад%"" будут удалены из списка ""Продукция"". Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Строки по заказу, в которых склад отличается от ""%Склад%"" будут удалены из списка ""Продукция"". Продолжить?'");
КонецЕсли;
ТекстВопроса = СтрЗаменить(ТекстВопроса, "%Склад%", Объект.Склад);
ПоказатьВопрос(Новый ОписаниеОповещения("СкладПриИзмененииЗавершение", ЭтотОбъект, Новый Структура("ПредыдущееЗначениеСкладГруппа", ПредыдущееЗначениеСкладГруппа)), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ПриИзмененииСкладаСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ПредыдущееЗначениеСкладГруппа = ДополнительныеПараметры.ПредыдущееЗначениеСкладГруппа;
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Объект.Склад = Склад;
СкладГруппа = ПредыдущееЗначениеСкладГруппа;
Возврат;
КонецЕсли;
ПриИзмененииСкладаСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ПриИзмененииДатыСервер();
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПоступлениеОтПереработчика.Форма.ФормаДокумента.Элемент.Валюта.ПриИзменении");
Если ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента)
ИЛИ ЦенообразованиеКлиент.НеобходимПересчетВВалюту(Объект, ВалютаДокумента, "ВозвратныеОтходы") Тогда
ВалютаПриИзмененииСервер();
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
КонецПроцедуры
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
КонецПроцедуры
&НаКлиенте
Процедура ПоступлениеПоЗаказамПриИзменении(Элемент)
ЗаказПереработчику = Неопределено;
Если Объект.ПоступлениеПоЗаказам Тогда
Если ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
Если Объект.Товары.Количество() = 0 И Объект.ВозвратныеОтходы.Количество() = 0 Тогда
Если ПродукцияИОтходыВОднойТЧ Тогда
ТекстВопроса = НСтр("ru='Продукция будет перезаполнена по заказам. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Продукция и возвратные отходы будут перезаполнены по заказам. Продолжить?'");
КонецЕсли;
Иначе
Если ПродукцияИОтходыВОднойТЧ Тогда
ТекстВопроса = НСтр("ru='Продукция будет привязана к заказам. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Продукция и возвратные отходы будут привязаны к заказам. Продолжить?'");
КонецЕсли;
КонецЕсли;
Иначе
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("Контрагент", Объект.Контрагент);
ПараметрыФормы.Вставить("Договор", Объект.Договор);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Регистратор", Объект.Ссылка);
ПараметрыФормы.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ОписаниеОповещения = Новый ОписаниеОповещения("ПоступлениеПоЗаказамПриИзмененииПослеВыбора", ЭтотОбъект);
ОткрытьФорму("Документ.ПоступлениеОтПереработчика.Форма.ФормаВыбораРаспоряжения", ПараметрыФормы,,,,, ОписаниеОповещения);
Возврат;
КонецЕсли;
Иначе
Если Объект.Товары.Количество() > 0 ИЛИ Объект.ВозвратныеОтходы.Количество() > 0 Тогда
Если ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
Если ПродукцияИОтходыВОднойТЧ Тогда
ТекстВопроса = НСтр("ru='Продукция перестанет быть связанной с заказами. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Продукция и возвратные отходы перестанут быть связанными с заказами. Продолжить?'");
КонецЕсли;
Иначе
Если ПродукцияИОтходыВОднойТЧ Тогда
ТекстВопроса = НСтр("ru='Продукция перестанет быть связанной с заказом. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Продукция и возвратные отходы перестанут быть связанными с заказом. Продолжить?'");
КонецЕсли;
КонецЕсли;
Иначе
ПриИзмененииПоступленияПоНесколькимЗаказам();
Возврат;
КонецЕсли;
КонецЕсли;
ПоступлениеПоЗаказамПриИзмененииФрагмент(ЗаказПереработчику, ТекстВопроса);
КонецПроцедуры
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ЗакупкаПодДеятельностьОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект,Элементы.ДекорацияСостояниеОригинала);
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ВидЦены)
И Объект.Товары.Количество() Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ВидЦеныПриИзмененииЗавершение", ЭтаФорма);
ТекстВопроса = НСтр("ru = 'Перезаполнить цены продукции?'");
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПоступлениеОтПереработчика.Форма.ФормаДокумента.Событие.ВидЦеныПриИзмененииЗавершение");
ЦеныРассчитаны = ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(Объект.ВидЦены);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий.Товары);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
НеобходимоОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий.Товары, Истина);
ПослеУдаленияСервер("Товары", НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
Если НеобходимоОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий.Товары);
КонецЕсли;
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
Если Копирование Тогда
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если Объект.ПоступлениеПоЗаказам И ТекущаяСтрока.КодСтроки <> 0 Тогда
ТекущаяСтрока.Назначение = ПредопределенноеЗначение("Справочник.Назначения.ПустаяСсылка");
КонецЕсли;
ТекущаяСтрока.КодСтроки = 0;
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.ПоступлениеПоЗаказам);
КонецЕсли;
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий.Товары,
Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
НеобходимоОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий.Товары);
Если НеобходимоОбновитьСтатусыСерий Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(
ТекущиеДанные.ПолучитьИдентификатор(),
КэшированныеЗначения,
"Товары");
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий.Товары);
КонецЕсли;
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
Объект.ВозвратныеОтходы,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
Если Не ОтменаРедактирования Тогда
КэшСтроки = ?(НоваяСтрока, Неопределено, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.Товары, ЭтотОбъект));
СкладыКлиент.ОбновитьТаблицуСкладов(ТаблицаСкладов, ТекущиеДанные, КэшСтроки, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество() + ТаблицаСкладовВозвратныеОтходы.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
Элементы.КартинкаНесколькоСкладов2.Картинка = Элементы.КартинкаНесколькоСкладов.Картинка;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элементы.Товары.ТекущиеДанные = Неопределено Тогда
ИначеЕсли Поле = Элементы.ТоварыЗаказПереработчику Тогда
Если ЗначениеЗаполнено(Элементы.Товары.ТекущиеДанные.ЗаказПереработчику) Тогда
ПоказатьЗначение(Неопределено, Элементы.Товары.ТекущиеДанные.ЗаказПереработчику);
ИначеЕсли ЗначениеЗаполнено(Объект.ЗаказПереработчику) Тогда
ПоказатьЗначение(Неопределено, Объект.ЗаказПереработчику);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыСделка Тогда
ПоказатьЗначение(Неопределено, Элементы.Товары.ТекущиеДанные.Сделка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если Объект.ПоступлениеПоЗаказам Тогда
Если Объект.Товары.Количество() > 0
И Не ТекущаяСтрока = Неопределено Тогда
Если ТекущаяСтрока.КодСтроки = 0 Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
Иначе
ТекущаяСтрока.РасхождениеЗаказ = 0;
КонецЕсли;
КонецЕсли;
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
Объект.ВозвратныеОтходы,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломИзменения(Элемент, Отказ)
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, Элементы.Товары.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаказПереработчикуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ВыбратьРаспоряжение("Товары");
Возврат;
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ОписаниеОповещения = Новый ОписаниеОповещения("ТоварыНоменклатураПриИзмененииЗавершение", ЭтотОбъект);
ВопросПользователюПриИзмененииРеквизитаСтроки(ТекущаяСтрока, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ОписаниеОповещения = Новый ОписаниеОповещения("ТоварыХарактеристикаПриИзмененииЗавершение", ЭтотОбъект);
ВопросПользователюПриИзмененииРеквизитаСтроки(ТекущаяСтрока, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНазначениеПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ОписаниеОповещения = Новый ОписаниеОповещения("ТоварыНазначениеПриИзмененииЗавершение", ЭтотОбъект);
ВопросПользователюПриИзмененииРеквизитаСтроки(ТекущаяСтрока, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если ТекущаяСтрока.Количество > 0 Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура("ПересчитатьЦенуПоСумме", "КоличествоУпаковок");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкладПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ОписаниеОповещения = Новый ОписаниеОповещения("ТоварыСкладПриИзмененииЗавершение", ЭтотОбъект);
ВопросПользователюПриИзмененииРеквизитаСтроки(ТекущаяСтрока, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЗаказПереработчикуПриИзменении(Элемент)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Если ЗначениеЗаполнено(ТекущиеДанные.ЗаказПереработчику) Тогда
ТекущиеДанные.Сделка = ПолучитьСделкуПоЗаказуПоставщику(ТекущиеДанные.ЗаказПереработчику);
Иначе
ТекущиеДанные.Сделка = ПредопределенноеЗначение("Справочник.СделкиСКлиентами.ПустаяСсылка");
КонецЕсли;
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий("Товары", Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ВыбранноеЗначение.Значение = ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий.Товары, ВыбранноеЗначение);
Если УчетГотовойПродукцииПоПлановойСтоимости
И ЦенообразованиеКлиент.НеобходимПересчетЦеныПриИзменении(ТекущиеДанные.Номенклатура, "Серия", Объект.Дата) Тогда
СтруктураДействий = Новый Структура;
СтруктураПараметров = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураПараметров.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", СтруктураПараметров);
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, "Товары");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыВозвратныеОтходы
&НаКлиенте
Процедура ВозвратныеОтходыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
СтруктураДействий = Новый Структура("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
СтруктураДействий = Новый Структура("ПересчитатьЦенуПоСумме", "КоличествоУпаковок");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПередУдалением(Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.ВозвратныеОтходы, ЭтотОбъект);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий.ВозвратныеОтходы);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПослеУдаления(Элемент)
НеобходимоОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий.ВозвратныеОтходы, Истина);
ПослеУдаленияСервер("ВозвратныеОтходы", НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
Если НеобходимоОбновитьСтатусыСерий Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент, КэшированныеЗначения, ПараметрыУказанияСерий.ВозвратныеОтходы);
КонецЕсли;
СкладыКлиент.ОбновитьТаблицуСкладов(ТаблицаСкладовВозвратныеОтходы, Неопределено, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.ВозвратныеОтходы, ЭтотОбъект), СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество() + ТаблицаСкладовВозвратныеОтходы.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
Элементы.КартинкаНесколькоСкладов2.Картинка = Элементы.КартинкаНесколькоСкладов.Картинка;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.ВозвратныеОтходы, ЭтотОбъект);
Если Копирование Тогда
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
ТекущаяСтрока.КодСтроки = 0;
ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, Объект.ПоступлениеПоЗаказам);
КонецЕсли;
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий.ВозвратныеОтходы,
Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ТекущиеДанные = Элементы.ВозвратныеОтходы.ТекущиеДанные;
НеобходимоОбновитьСтатусыСерий = НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(
Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий.ВозвратныеОтходы);
Если НеобходимоОбновитьСтатусыСерий Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(
ТекущиеДанные.ПолучитьИдентификатор(),
КэшированныеЗначения,
"ВозвратныеОтходы");
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,
КэшированныеЗначения,
ПараметрыУказанияСерий.ВозвратныеОтходы);
КонецЕсли;
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
Объект.ВозвратныеОтходы,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
Если Не ОтменаРедактирования Тогда
КэшСтроки = ?(НоваяСтрока, Неопределено, РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.ВозвратныеОтходы, ЭтотОбъект));
СкладыКлиент.ОбновитьТаблицуСкладов(ТаблицаСкладовВозвратныеОтходы, ТекущиеДанные, КэшСтроки, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество() + ТаблицаСкладовВозвратныеОтходы.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
Элементы.КартинкаНесколькоСкладов2.Картинка = Элементы.КартинкаНесколькоСкладов.Картинка;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элементы.ВозвратныеОтходы.ТекущиеДанные = Неопределено Тогда
ИначеЕсли Поле = Элементы.ТоварыЗаказПереработчику Тогда
Если ЗначениеЗаполнено(Элементы.ВозвратныеОтходы.ТекущиеДанные.ЗаказПереработчику) Тогда
ПоказатьЗначение(Неопределено, Элементы.ВозвратныеОтходы.ТекущиеДанные.ЗаказПереработчику);
ИначеЕсли ЗначениеЗаполнено(Объект.ЗаказПереработчику) Тогда
ПоказатьЗначение(Неопределено, Объект.ЗаказПереработчику);
КонецЕсли;
ИначеЕсли Поле = Элементы.ТоварыСделка Тогда
ПоказатьЗначение(Неопределено, Элементы.ВозвратныеОтходы.ТекущиеДанные.Сделка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
Если Объект.ПоступлениеПоЗаказам Тогда
Если Объект.ВозвратныеОтходы.Количество() > 0
И Не ТекущаяСтрока = Неопределено Тогда
Если ТекущаяСтрока.КодСтроки = 0 Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
Иначе
ТекущаяСтрока.РасхождениеЗаказ = 0;
КонецЕсли;
КонецЕсли;
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
Объект.ВозвратныеОтходы,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПередНачаломИзменения(Элемент, Отказ)
ЗаполнитьЗначенияСвойств(ПредыдущиеРеквизитыСтроки, Элементы.ВозвратныеОтходы.ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыЗаказПереработчикуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.ВозвратныеОтходы.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ВыбратьРаспоряжение("ВозвратныеОтходы");
Возврат;
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
ОписаниеОповещения = Новый ОписаниеОповещения("ВозвратныеОтходыНоменклатураПриИзмененииЗавершение", ЭтотОбъект);
ВопросПользователюПриИзмененииРеквизитаСтроки(ТекущаяСтрока, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
ОписаниеОповещения = Новый ОписаниеОповещения("ВозвратныеОтходыХарактеристикаПриИзмененииЗавершение", ЭтотОбъект);
ВопросПользователюПриИзмененииРеквизитаСтроки(ТекущаяСтрока, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если ТекущаяСтрока.Количество > 0 Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыСкладПриИзменении(Элемент)
ОписаниеОповещения = Новый ОписаниеОповещения("ВозвратныеОтходыСкладПриИзмененииЗавершение", ЭтотОбъект);
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
ВопросПользователюПриИзмененииРеквизитаСтроки(ТекущаяСтрока, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыЗаказПереработчикуПриИзменении(Элемент)
ТекущиеДанные = Элементы.ВозвратныеОтходы.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Если ЗначениеЗаполнено(ТекущиеДанные.ЗаказПереработчику) Тогда
ТекущиеДанные.Сделка = ПолучитьСделкуПоЗаказуПоставщику(ТекущиеДанные.ЗаказПереработчику);
Иначе
ТекущиеДанные.Сделка = ПредопределенноеЗначение("Справочник.СделкиСКлиентами.ПустаяСсылка");
КонецЕсли;
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий("ВозвратныеОтходы", Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Элементы.ВозвратныеОтходы.ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = Элементы.ВозвратныеОтходы.ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий.ВозвратныеОтходы, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, "ВозвратныеОтходы");
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТовары(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПоступлениеОтПереработчика.ФормаДокумента.Команда.ПодобратьТовары");
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
ПараметрыФормы.Вставить("РежимПодбораИсключитьГруппыДоступныеВЗаказах", Истина);
ПараметрыФормы.Вставить("РежимПодбораБезСуммовыхПараметров", Не УчетГотовойПродукцииПоПлановойСтоимости);
ОткрытьФорму("Обработка.ПодборТоваровВДокументЗакупки.Форма", ПараметрыФормы, Элементы.Товары, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТоварыПоЗаказамОрдерам(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПоступлениеОтПереработчика.Форма.ФормаДокумента.Команда.ПодобратьТоварыПоЗаказамОрдерам");
ОткрытьПодборТоваровПоЗаказамОрдерам(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода, "Товары");
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВес(Команда)
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтаФорма);
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(
Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект, ТекущаяСтрока),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, ТекущаяСтрока) Экспорт
Если РезультатВыполнения.Результат Тогда
ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(РезультатВыполнения, Параметры) Экспорт
Если РезультатВыполнения.Результат Тогда
ОбработатьШтрихкоды(РезультатВыполнения.ТаблицаТоваров, "Товары");
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтроках(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
ЕстьВозможностьУказатьСклад = СкладыКлиент.ПроверитьВозможностьЗаполненияСкладовВТабличнойЧасти(
Объект,
Объект.Товары, НСтр("ru='Продукция'"),
ВыделенныеСтроки);
Если ЕстьВозможностьУказатьСклад Тогда
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("ВыборГруппы", ПредопределенноеЗначение("Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказахИНакладных"));
СтруктураОтбора.Вставить("ЭтоГруппа", Ложь);
СтруктураПараметров = Новый Структура("Отбор, ГруппаСкладов", СтруктураОтбора, Объект.Склад);
ОткрытьФорму("Справочник.Склады.ФормаВыбора", СтруктураПараметров, ЭтаФорма,,,, Новый ОписаниеОповещения("ЗаполнитьСкладВВыделенныхСтрокахЗавершение", ЭтотОбъект, Новый Структура("ВыделенныеСтроки", ВыделенныеСтроки)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСкладВВыделенныхСтрокахЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВыделенныеСтроки = ДополнительныеПараметры.ВыделенныеСтроки;
ВыбранныйСклад = Результат;
Если ЗначениеЗаполнено(ВыбранныйСклад) Тогда
ЗаполненоСтрок = ЗаполнитьСкладВВыделенныхСтрокахНаСервере("Товары", ВыделенныеСтроки, ВыбранныйСклад);
СкладыКлиент.ПоказатьОповещениеОЗаполненииСкладаВТабличнойЧасти(ВыбранныйСклад, ЗаполненоСтрок, ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЦеныПоВидуЦен(Команда)
Отказ = Ложь;
ОчиститьСообщения();
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если Не ЗначениеЗаполнено(Объект.ВидЦены) Тогда
ТекстСообщения = НСтр("ru='Не заполнено поле ""Вид цены""'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,"ВидЦены","Объект", Отказ);
ИначеЕсли ВыделенныеСтроки.Количество() = 0 Тогда
ТекстСообщения = НСтр("ru='В таблице ""Продукция"" не выбрано ни одной строки. Цены не могут быть заполнены'");
ПоказатьПредупреждение( , ТекстСообщения);
Отказ = Истина;
Иначе
МассивИдентификаторовСтрок = Новый Массив;
Для Каждого Строка Из ВыделенныеСтроки Цикл
МассивИдентификаторовСтрок.Добавить(Строка);
КонецЦикла;
Если МассивИдентификаторовСтрок.Количество() = 0 Тогда
ТекстСообщения = НСтр("ru='В выделенных строках отсутствуют позиции, доступные для заполнения по виду цен.'");
ПоказатьПредупреждение( , ТекстСообщения);
Отказ = Истина;
КонецЕсли;
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ЦеныРассчитаны = ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(Объект.ВидЦены, МассивИдентификаторовСтрок);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
ОбновитьОтклоненияОтЗаказаВСтроке(НоваяСтрока, Объект.ПоступлениеПоЗаказам);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерии(Команда)
ОткрытьПодборСерий("Товары");
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументе(Команда)
АдресВоВременномХранилище = ПоместитьТабличнуюЧастьВоВременноеХранилищеДляПроверкиКоличества("Товары");
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресВоВременномХранилище);
ПараметрыОткрытия.Вставить("ИмяТабличнойЧасти", "Товары");
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ПревышениеКоличестваТоваровРазрешено", Истина);
ПараметрыОткрытия.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий.Товары);
ПараметрыОткрытия.Вставить("ПоступлениеПоЗаказам", Объект.ПоступлениеПоЗаказам);
ОткрытьФорму("ОбщаяФорма.ПроверкаЗаполненияДокументов", ПараметрыОткрытия,,,,, Новый ОписаниеОповещения("ПроверитьКоличествоВДокументеЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВозвращаемыеПараметры = Результат;
Если ВозвращаемыеПараметры <> Неопределено Тогда
Если КэшированныеЗначения = Неопределено Тогда
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
КонецЕсли;
ИзменитьТабличнуюЧастьПоРезультатамПроверки("Товары", ВозвращаемыеПараметры, КэшированныеЗначения);
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена("Товары");
КоличествоВставленных = Объект.Товары.Количество() - КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере("Товары");
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтвязатьОтЗаказа(Команда)
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() > 0 Тогда
Для каждого ТекСтрока Из ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.Товары.НайтиПоИдентификатору(ТекСтрока);
СтрокаТаблицы.КодСтроки = 0;
СтрокаТаблицы.РасхождениеЗаказ = 1;
КонецЦикла;
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
ОповеститьОбОкончанииОтвязкиСтрок(ВыделенныеСтроки.Количество());
ПриИзмененииСкладаВТабличнойЧастиСервер();
Иначе
ТекстПредупреждения = НСтр("ru='Выберите строки, которые необходимо отвязать от заказа.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПодобратьТовары(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПоступлениеОтПереработчика.ФормаДокумента.Команда.ВозвратныеОтходыПодобратьТовары");
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
ПараметрыФормы.Вставить("РежимПодбораИсключитьГруппыДоступныеВЗаказах", Истина);
ОткрытьФорму("Обработка.ПодборТоваровВДокументЗакупки.Форма", ПараметрыФормы, Элементы.ВозвратныеОтходы, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПодобратьТоварыПоЗаказамОрдерам(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПоступлениеОтПереработчика.Форма.ФормаДокумента.Команда.ВозвратныеОтходыПодобратьТоварыПоЗаказамОрдерам");
ОткрытьПодборТоваровПоЗаказамОрдерам(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ВозвратныеОтходыПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода, "ВозвратныеОтходы");
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПолучитьВес(Команда)
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтаФорма, "ВозвратныеОтходы");
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(
Новый ОписаниеОповещения("ВозвратныеОтходыПолучитьВесЗавершение", ЭтотОбъект, ТекущаяСтрока),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПолучитьВесЗавершение(РезультатВыполнения, ТекущаяСтрока) Экспорт
Если РезультатВыполнения.Результат Тогда
ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ВозвратныеОтходыЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыЗагрузитьИзТСДЗавершение(РезультатВыполнения, Параметры) Экспорт
Если РезультатВыполнения.Результат Тогда
ОбработатьШтрихкоды(РезультатВыполнения.ТаблицаТоваров, "ВозвратныеОтходы");
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыЗаполнитьСкладВВыделенныхСтроках(Команда)
ВыделенныеСтроки = Элементы.ВозвратныеОтходы.ВыделенныеСтроки;
ЕстьВозможностьУказатьСклад = СкладыКлиент.ПроверитьВозможностьЗаполненияСкладовВТабличнойЧасти(
Объект,
Объект.ВозвратныеОтходы, НСтр("ru='Возвратные отходы'"),
ВыделенныеСтроки);
Если ЕстьВозможностьУказатьСклад Тогда
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("ВыборГруппы", ПредопределенноеЗначение("Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказахИНакладных"));
СтруктураОтбора.Вставить("ЭтоГруппа", Ложь);
СтруктураПараметров = Новый Структура("Отбор, ГруппаСкладов", СтруктураОтбора, Объект.Склад);
ОткрытьФорму("Справочник.Склады.ФормаВыбора", СтруктураПараметров, ЭтаФорма,,,, Новый ОписаниеОповещения("ВозвратныеОтходыЗаполнитьСкладВВыделенныхСтрокахЗавершение", ЭтотОбъект, Новый Структура("ВыделенныеСтроки", ВыделенныеСтроки)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыЗаполнитьСкладВВыделенныхСтрокахЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВыделенныеСтроки = ДополнительныеПараметры.ВыделенныеСтроки;
ВыбранныйСклад = Результат;
Если ЗначениеЗаполнено(ВыбранныйСклад) Тогда
ЗаполненоСтрок = ЗаполнитьСкладВВыделенныхСтрокахНаСервере("ВозвратныеОтходы", ВыделенныеСтроки, ВыбранныйСклад);
СкладыКлиент.ПоказатьОповещениеОЗаполненииСкладаВТабличнойЧасти(ВыбранныйСклад, ЗаполненоСтрок, ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыРазбитьСтроку(Команда)
ТаблицаФормы = Элементы.ВозвратныеОтходы;
ДанныеТаблицы = Объект.ВозвратныеОтходы;
Оповещение = Новый ОписаниеОповещения("ВозвратныеОтходыРазбитьСтрокуЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыРазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
ОбновитьОтклоненияОтЗаказаВСтроке(НоваяСтрока, Объект.ПоступлениеПоЗаказам);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыУказатьСерии(Команда)
ОткрытьПодборСерий("ВозвратныеОтходы");
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПроверитьКоличествоВДокументе(Команда)
АдресВоВременномХранилище = ПоместитьТабличнуюЧастьВоВременноеХранилищеДляПроверкиКоличества("ВозвратныеОтходы");
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресВоВременномХранилище);
ПараметрыОткрытия.Вставить("ИмяТабличнойЧасти", "ВозвратныеОтходы");
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ПревышениеКоличестваТоваровРазрешено", Истина);
ПараметрыОткрытия.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий.ВозвратныеОтходы);
ПараметрыОткрытия.Вставить("ПоступлениеПоЗаказам", Объект.ПоступлениеПоЗаказам);
ОткрытьФорму("ОбщаяФорма.ПроверкаЗаполненияДокументов", ПараметрыОткрытия,,,,, Новый ОписаниеОповещения("ВозвратныеОтходыПроверитьКоличествоВДокументеЗавершение", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПроверитьКоличествоВДокументеЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВозвращаемыеПараметры = Результат;
Если ВозвращаемыеПараметры <> Неопределено Тогда
Если КэшированныеЗначения = Неопределено Тогда
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
КонецЕсли;
ИзменитьТабличнуюЧастьПоРезультатамПроверки("ВозвратныеОтходы", ВозвращаемыеПараметры, КэшированныеЗначения);
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.ВозвратныеОтходы.Количество();
ПолучитьСтрокиИзБуфераОбмена("ВозвратныеОтходы");
КоличествоВставленных = Объект.ВозвратныеОтходы.Количество() - КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыСкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.ВозвратныеОтходы) Тогда
СкопироватьСтрокиНаСервере("ВозвратныеОтходы");
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.ВозвратныеОтходы.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОтвязатьОтЗаказа(Команда)
ВыделенныеСтроки = Элементы.ВозвратныеОтходы.ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() > 0 Тогда
Для каждого ТекСтрока Из ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.ВозвратныеОтходы.НайтиПоИдентификатору(ТекСтрока);
СтрокаТаблицы.КодСтроки = 0;
СтрокаТаблицы.РасхождениеЗаказ = 1;
КонецЦикла;
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
ОповеститьОбОкончанииОтвязкиСтрок(ВыделенныеСтроки.Количество());
ПриИзмененииСкладаВТабличнойЧастиСервер();
Иначе
ТекстПредупреждения = НСтр("ru='Выберите строки, которые необходимо отвязать от заказа.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказ(Команда)
Если Модифицированность Или Не Объект.Проведен Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("ЗакрытьЗаказЗавершение", ЭтотОбъект),
НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"),РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
ИначеЕсли Не Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение)) Тогда
Возврат;
КонецЕсли;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказФрагмент()
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ПоступлениеОтПереработчика.ФормаДокумента.Команда.ЗакрытьЗаказФрагмент");
СписокЗаказовКЗакрытию = Новый СписокЗначений;
Если ЗначениеЗаполнено(Объект.ЗаказПереработчику) Тогда
СписокЗаказовКЗакрытию.Добавить(Объект.ЗаказПереработчику);
Иначе
СписокЗаказовКЗакрытию.ЗагрузитьЗначения(РаспоряженияНеПоЗаказу(СписокЗаказов.ВыгрузитьЗначения()));
КонецЕсли;
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия", СтруктураЗакрытия,
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
#Область СтандартноеОформление
СкладыСервер.УстановитьУсловноеОформлениеСкладаВШапке(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = "ВозвратныеОтходыНоменклатураЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Объект.ВозвратныеОтходы.Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма, ПараметрыУсловногоОформления);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма,
"ВозвратныеОтходыХарактеристика",
"Объект.ВозвратныеОтходы.ХарактеристикиИспользуются");
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтаФорма);
СкладыСервер.УстановитьУсловноеОформлениеСкладаВТЧ(ЭтаФорма, "ВозвратныеОтходыСклад");
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма,"ВозвратныеОтходыНазначение","Объект.ВозвратныеОтходы.ТипНоменклатуры");
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, Ложь,
"ВозвратныеОтходыСерия",
"Объект.ВозвратныеОтходы.СтатусУказанияСерий",
"Объект.ВозвратныеОтходы.ТипНоменклатуры");
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма, Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма, Ложь,
"ВозвратныеОтходыСтатусУказанияСерий",
"Объект.ВозвратныеОтходы.СтатусУказанияСерий");
#КонецОбласти
#Область Прочее
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПереработчику.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыЗаказПереработчику.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПереработчику.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыЗаказПереработчику.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПереработчику.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Согласован");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыЗаказПереработчику.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Согласован");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПереработчику.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыЗаказПереработчику.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПереработчику.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСделка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыЗаказПереработчику.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыСделка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСделка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Сделка");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыСделка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.Сделка");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЗаказПереработчику.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСделка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыКодСтроки.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыЗаказПереработчику.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыСделка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<сверх заказа>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<сверх заказа>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийОшибкуТекст);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<сверх заказа, заказ не выбран>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПоясняющийОшибкуТекст);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<сверх заказа, заказ не выбран>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<сверх заказа>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыКодСтроки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаказПереработчику");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<сверх заказа>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.Склад");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыВидЗапасов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыВидЗапасов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.Товар);
СписокЗначений.Добавить(Перечисления.ТипыНоменклатуры.МногооборотнаяТара);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для товаров>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.КодСтроки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПоступлениеПоЗаказам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
#КонецОбласти
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ПриИзмененииПартнераСервер()
ДокументЗакупки = РеквизитФормыВЗначение("Объект");
ДокументЗакупки.ЗаполнитьУсловияЗакупокПоУмолчанию();
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(ДокументЗакупки);
ЗначениеВРеквизитФормы(ДокументЗакупки, "Объект");
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Объект.Склад);
ПриИзмененииСкладаСервер();
ЗаполнитьСлужебныеРеквизиты();
УстановитьВидимостьДоговора();
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииДоговораСервер()
АктуализироватьЗакупкуПодДеятельность();
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(
Объект.Договор,
Объект.БанковскийСчетОрганизации,
Объект.БанковскийСчетКонтрагента);
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, , Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСкладаСервер()
Склад = Объект.Склад;
УстановитьПараметрыВыбораТоварыСклад();
СтруктураОтветственного = ЗакупкиСервер.ПолучитьОтветственногоПоСкладу(Объект.Склад, Объект.Менеджер);
Если СтруктураОтветственного <> Неопределено Тогда
Объект.Принял = СтруктураОтветственного.Ответственный;
Объект.ПринялДолжность = СтруктураОтветственного.ОтветственныйДолжность;
КонецЕсли;
Если Объект.Товары.Количество() > 0 Тогда
МассивУдаляемыхСтрок = Новый Массив();
Если СкладГруппа Тогда
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(
Объект.Склад,
СкладГруппа,
Объект.Товары,
Истина);
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если ЗначениеЗаполнено(ТекСтрока.КодСтроки)
И ЗначениеЗаполнено(ТекСтрока.ЗаказПереработчику)
И Не ЗначениеЗаполнено(ТекСтрока.Склад) Тогда
МассивУдаляемыхСтрок.Добавить(ТекСтрока);
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если ЗначениеЗаполнено(ТекСтрока.КодСтроки)
И ЗначениеЗаполнено(ТекСтрока.ЗаказПереработчику)
И Объект.Склад <> ТекСтрока.Склад Тогда
МассивУдаляемыхСтрок.Добавить(ТекСтрока);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Для Каждого ТекЭлемент Из МассивУдаляемыхСтрок Цикл
Объект.Товары.Удалить(ТекЭлемент);
КонецЦикла;
КонецЕсли;
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(
Объект.Склад,
СкладГруппа,
Объект.Товары,
Истина);
Если Объект.ВозвратныеОтходы.Количество() > 0 Тогда
МассивУдаляемыхСтрок = Новый Массив();
Если СкладГруппа Тогда
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(
Объект.Склад,
СкладГруппа,
Объект.ВозвратныеОтходы,
Истина);
Для Каждого ТекСтрока Из Объект.ВозвратныеОтходы Цикл
Если ЗначениеЗаполнено(ТекСтрока.КодСтроки)
И ЗначениеЗаполнено(ТекСтрока.ЗаказПереработчику)
И Не ЗначениеЗаполнено(ТекСтрока.Склад) Тогда
МассивУдаляемыхСтрок.Добавить(ТекСтрока);
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого ТекСтрока Из Объект.ВозвратныеОтходы Цикл
Если ЗначениеЗаполнено(ТекСтрока.КодСтроки)
И ЗначениеЗаполнено(ТекСтрока.ЗаказПереработчику)
И Объект.Склад <> ТекСтрока.Склад Тогда
МассивУдаляемыхСтрок.Добавить(ТекСтрока);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Для Каждого ТекЭлемент Из МассивУдаляемыхСтрок Цикл
Объект.ВозвратныеОтходы.Удалить(ТекЭлемент);
КонецЦикла;
КонецЕсли;
СкладыСервер.ЗаполнитьСкладыВТабличнойЧасти(
Объект.Склад,
СкладГруппа,
Объект.ВозвратныеОтходы,
Истина);
ТоварыЗаполнено = Объект.Товары.Количество() > 0;
ВозвратныеОтходыЗаполнено = Объект.ВозвратныеОтходы.Количество() > 0;
Если ТоварыЗаполнено Или ВозвратныеОтходыЗаполнено Тогда
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
КэшируемыеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
Если ТоварыЗаполнено Тогда
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшируемыеЗначения);
КонецЕсли;
Если ВозвратныеОтходыЗаполнено Тогда
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ВозвратныеОтходы, СтруктураДействий, КэшируемыеЗначения);
КонецЕсли;
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
Элементы.ВозвратныеОтходыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
ПриИзмененииСкладаВТабличнойЧастиСервер();
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
АктуализироватьЗакупкуПодДеятельность();
ОрдернаяСхемаПриПриемке = СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.Склад, Объект.Дата, Истина);
НастроитьКомандуПодобратьПоЗаказамОрдерам();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииКонтрагентаСервер()
УстановитьВидимостьДоговора();
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
Если Не ЗначениеЗаполнено(Объект.БанковскийСчетКонтрагента) Тогда
Объект.БанковскийСчетКонтрагента = ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Объект.Контрагент);
КонецЕсли;
КонецЕсли;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Контрагент");
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииОрганизацииСервер()
УстановитьВидимостьДоговора();
УстановитьВидимостьРеквизитовУказанияПлановыхЦен();
Если ЗначениеЗаполнено(Объект.Организация) Тогда
ЗаполнитьДоговорПоУмолчанию();
АктуализироватьЗакупкуПодДеятельность();
Объект.БанковскийСчетОрганизации = ПолучитьБанковскийСчетОрганизацииПоУмолчаниюСервер(Объект.Организация);
КонецЕсли;
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
КонецПроцедуры
&НаСервере
Процедура ВалютаПриИзмененииСервер()
ЗаполнитьДоговорПоУмолчанию();
СтараяВалюта = ВалютаДокумента;
НоваяВалюта = Объект.Валюта;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
СтруктураКурсовСтаройВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(СтараяВалюта, ДатаДокумента);
СтруктураКурсовНовойВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(НоваяВалюта, ДатаДокумента);
Ценообразование.ПересчитатьСуммыВВалютуТовары(
Объект,
СтараяВалюта,
НоваяВалюта,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты,
Ложь);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшированныеЗначения);
Для Каждого ТекСтрока Из Объект.ВозвратныеОтходы Цикл
ТекСтрока.Цена = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(ТекСтрока.Цена,
СтруктураКурсовСтаройВалюты, СтруктураКурсовНовойВалюты);
КонецЦикла;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ВозвратныеОтходы, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Валюта");
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииДатыСервер()
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
УстановитьВидимостьРеквизитовУказанияПлановыхЦен();
АктуализироватьЗакупкуПодДеятельность();
УстановитьДоступностьВозвратныхОтходов();
ОрдернаяСхемаПриПриемке = СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.Склад, Объект.Дата, Истина);
НастроитьКомандуПодобратьПоЗаказамОрдерам();
КонецПроцедуры
&НаСервере
Процедура АктуализироватьЗакупкуПодДеятельность(Заполнить = Истина)
ПараметрыЗаполнения = Документы.ПоступлениеОтПереработчика.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
Если Заполнить Тогда
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(
Объект.ЗакупкаПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(
Элементы.ЗакупкаПодДеятельность,
Объект.ЗакупкаПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаКлиенте
Процедура ОткрытьПодборТоваровПоЗаказамОрдерам(ЭтоВозвртаныеОтходы)
РеквизитыШапки = Новый Структура("Организация, Партнер, Контрагент, Договор, Подразделение, Склад, Валюта,
|ХозяйственнаяОперация, НаправлениеДеятельности, ВариантПриемкиТоваров, Ссылка");
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Объект);
РесурсыЗаполнения = Новый Массив;
Если ПродукцияИОтходыВОднойТЧ Тогда
РесурсыЗаполнения.Добавить("Продукция");
РесурсыЗаполнения.Добавить("ВозвратныеОтходы");
Иначе
РесурсыЗаполнения.Добавить(?(ЭтоВозвртаныеОтходы, "ВозвратныеОтходы", "Продукция"));
КонецЕсли;
ДополнительныеПоля = Новый Структура("ДатаПоступления, Склад, Сделка");
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("РеквизитыШапки", РеквизитыШапки);
ПараметрыФормы.Вставить("Заказ", Объект.ЗаказПереработчику);
ПараметрыФормы.Вставить("Накладная", Объект.Ссылка);
ПараметрыФормы.Вставить("ОрдернаяСхемаПриПоступлении", ОрдернаяСхемаПриПриемке);
ПараметрыФормы.Вставить("НакладнаяПоЗаказам", Объект.ПоступлениеПоЗаказам);
ПараметрыФормы.Вставить("АдресТовары", АдресТоварыНакладной(ЭтоВозвртаныеОтходы));
ПараметрыФормы.Вставить("РесурсыЗаполнения", РесурсыЗаполнения);
ПараметрыФормы.Вставить("ИспользоватьНакладныеПоНесколькимЗаказам", ИспользоватьПоступлениеПоНесколькимЗаказам);
ПараметрыФормы.Вставить("ИспользуютсяЗаказы", Истина);
ПараметрыФормы.Вставить("ДополнительныеПоля", ДополнительныеПоля);
ОткрытьФорму("ОбщаяФорма.ПодборТоваровИзЗаказа",
ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Функция АдресТоварыНакладной(ЭтоВозвртаныеОтходы)
Если ЭтоВозвртаныеОтходы Тогда
Таблица = Объект.ВозвратныеОтходы.Выгрузить();
Таблица.Колонки.Добавить("ЭтоПродукция", Новый ОписаниеТипов("Булево"));
Таблица.ЗаполнитьЗначения(Ложь, "ЭтоПродукция");
Иначе
Таблица = Объект.Товары.Выгрузить();
Таблица.Колонки.Добавить("ЭтоПродукция", Новый ОписаниеТипов("Булево"));
Таблица.ЗаполнитьЗначения(Истина, "ЭтоПродукция");
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Объект.ВозвратныеОтходы.Выгрузить(), Таблица);
КонецЕсли;
Таблица.Колонки.ЗаказПереработчику.Имя = "ЗаказПереработчикуИсходный";
Таблица.Колонки.Добавить("ЗаказПереработчику", Новый ОписаниеТипов("ДокументСсылка.ЗаказПереработчику, ДокументСсылка.ПоступлениеОтПереработчика"));
Таблица.Колонки.Добавить("ДатаПоступления", Новый ОписаниеТипов("Дата"));
Для Каждого Строка Из Таблица Цикл
Строка.ЗаказПереработчику = ?(ЗначениеЗаполнено(Строка.ЗаказПереработчикуИсходный), Строка.ЗаказПереработчикуИсходный, Объект.Ссылка);
Если НЕ СкладГруппа И Не ЗначениеЗаполнено(Строка.Склад) Тогда
Строка.Склад = Объект.Склад;
КонецЕсли;
КонецЦикла;
Таблица.ЗаполнитьЗначения(ТекущаяДатаСеанса(), "ДатаПоступления");
Возврат ПоместитьВоВременноеХранилище(Таблица);
КонецФункции
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов, ИмяТЧ)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
ПараметрыЗаполненияСклада = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(
Объект,
СкладГруппа);
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьСклад", ПараметрыЗаполненияСклада);
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействийСДобавленнымиСтроками);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий[ИмяТЧ];
СтруктураДействий.ИмяТЧ = ИмяТЧ;
ОбработатьШтрихкодыСервер(СтруктураДействий, КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий, КэшированныеЗначения, ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("Подключаемый_ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры" + ИмяТЧ,0.1,Истина);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элемент = Элементы[ИмяТЧ];
Элемент.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия, КэшированныеЗначения)
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(
ЭтаФорма,
Объект,
СтруктураПараметровДействия,
КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.Товары.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.Товары.ИспользоватьСерииНоменклатуры;
Элементы.ВозвратныеОтходыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ВозвратныеОтходы.ИспользоватьСерииНоменклатуры;
Элементы.ВозвратныеОтходыУказатьСерии.Видимость = ПараметрыУказанияСерий.ВозвратныеОтходы.ИспользоватьСерииНоменклатуры;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий, ИмяТЧ)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ОбновлятьКоличествоТоваровПриРегистрацииСерий", Истина);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
НоменклатураСервер.ОбработатьУказаниеСерий(
Объект,
ПараметрыУказанияСерий[ИмяТЧ],
ПараметрыФормыУказанияСерий,
СтруктураДействий);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения, ИмяТЧ)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(
Объект,
ПараметрыУказанияСерий[ИмяТЧ],
ТекущаяСтрокаИдентификатор,
КэшированныеЗначения);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийСервер(ИмяТЧ)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий[ИмяТЧ]);
КонецПроцедуры
&НаСервере
Процедура ПодготовитьЗаполнитьУстановитьВидимостьСерий()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ПоступлениеОтПереработчика));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Товары);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.ВозвратныеОтходы);
УстановитьВидимостьЭлементовСерий();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(ИмяТЧ, Текст = "", ТекущиеДанные = Неопределено)
Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтаФорма, ПараметрыУказанияСерий[ИмяТЧ], Текст, ТекущиеДанные)Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы[ИмяТЧ].ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор, ИмяТЧ);
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы,ПараметрыФормыУказанияСерий,ЭтаФорма,,,, Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение", ЭтотОбъект, Новый Структура("ИмяТЧ, ПараметрыФормыУказанияСерий", ИмяТЧ, ПараметрыФормыУказанияСерий)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
ИмяТЧ = ДополнительныеПараметры.ИмяТЧ;
ПараметрыФормыУказанияСерий = ДополнительныеПараметры.ПараметрыФормыУказанияСерий;
ЗначениеВозврата = Результат;
Если ЗначениеВозврата <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий, ИмяТЧ);
ТекущиеДанные = Элементы[ДополнительныеПараметры.ИмяТЧ].ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если УчетГотовойПродукцииПоПлановойСтоимости
И ЦенообразованиеКлиент.НеобходимПересчетЦеныПриИзменении(ТекущиеДанные.Номенклатура, "Серия", Объект.Дата) Тогда
СтруктураПараметров = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураПараметров.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", СтруктураПараметров);
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
КонецЕсли;
Если Не СтруктураДействий.Количество() = 0 Тогда
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатурыТовары()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий("Товары",,ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатурыВозвратныеОтходы()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.ВозвратныеОтходы.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий("ВозвратныеОтходы",,ТекущиеДанные);
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
АктуализироватьЗакупкуПодДеятельность();
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Товары);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.ВозвратныеОтходы);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыОбъектаССоглашением(Объект, ИменаРеквизитов = "")
Если ПустаяСтрока(ИменаРеквизитов) Тогда
ИменаРеквизитов = "Партнер, Договор, Контрагент, Организация";
КонецЕсли;
ПараметрыОбъекта = Новый Структура(ИменаРеквизитов);
ЗаполнитьЗначенияСвойств(ПараметрыОбъекта, Объект);
ПараметрыОбъекта.Вставить("Соглашение", ПредопределенноеЗначение("Справочник.СоглашенияСПоставщиками.ПустаяСсылка"));
Возврат ПараметрыОбъекта;
КонецФункции
&НаСервере
Процедура ПриЧтенииСозданиНаСервере()
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности");
ВалютаДокумента = Объект.Валюта;
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Объект.Склад);
Склад = Объект.Склад;
УстановитьПараметрыВыбораТоварыСклад();
ОрдернаяСхемаПриПриемке = СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.Склад, Объект.Дата, Истина);;
НастроитьКомандуПодобратьПоЗаказамОрдерам();
Элементы.ТоварыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
Элементы.ВозвратныеОтходыЗаполнитьСкладВВыделенныхСтроках.Доступность = СкладГруппа;
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ПоступлениеОтПереработчика);
УстановитьВидимостьЭлементовСерий();
ЗаполнитьСлужебныеРеквизиты();
УстановитьПараметрыВыбораВидаЗапасов();
УстановитьДоступностьЭлементовПоСтатусуСервер();
УстановитьДоступностьВозвратныхОтходов();
ИспользоватьПоступлениеПоНесколькимЗаказам = ПолучитьФункциональнуюОпцию("ИспользоватьПоступлениеПоНесколькимЗаказам");
ОбновитьИнформациюПоЗаказам();
УстановитьВидимостьКомандПоЗаказу();
УстановитьВидимостьДоговора();
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
Объект.ВозвратныеОтходы,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
ПриИзмененииСкладаВТабличнойЧастиСервер();
УстановитьВидимостьРеквизитовУказанияПлановыхЦен();
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.ВозвратныеОтходы);
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
АктуализироватьЗакупкуПодДеятельность(Ложь);
ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизиты(СписокТЧ = "", СтруктураВыполненныхДействий = Неопределено)
СтруктураТЧ = Новый Структура(СписокТЧ);
ВсеТЧ = Не ЗначениеЗаполнено(СтруктураТЧ);
Если СтруктураВыполненныхДействий = Неопределено Тогда
СтруктураВыполненныхДействий = Новый Структура;
КонецЕсли;
СтруктураДействийЗаполнения = Новый Структура;
ДобавитьВСтруктуруДействияПоОбновлениюВспомРевизитовСтроки(СтруктураДействийЗаполнения);
Если ВсеТЧ Или СтруктураТЧ.Свойство("Товары") Тогда
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, СтруктураДействийЗаполнения);
Если Не СтруктураВыполненныхДействий.Свойство("ЗаполнитьПризнакЦеховаяКладовая") Тогда
ПроизводствоСервер.ЗаполнитьПризнакЦеховаяКладоваяВТаблице(Объект.Товары);
КонецЕсли;
КонецЕсли;
Если ВсеТЧ Или СтруктураТЧ.Свойство("ВозвратныеОтходы") Тогда
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.ВозвратныеОтходы, СтруктураДействийЗаполнения);
Если Не СтруктураВыполненныхДействий.Свойство("ЗаполнитьПризнакЦеховаяКладовая") Тогда
ПроизводствоСервер.ЗаполнитьПризнакЦеховаяКладоваяВТаблице(Объект.ВозвратныеОтходы);
КонецЕсли;
КонецЕсли;
ОбновитьОтклоненияОтЗаказа();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказателиПоступления(Форма)
Форма.СтоимостьПродукции = Форма.Объект.Товары.Итог("Сумма");
Форма.СтоимостьВозвратныхОтходов = Форма.Объект.ВозвратныеОтходы.Итог("Сумма");
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьСделкуПоЗаказуПоставщику(ЗаказПереработчику)
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЗаказПереработчику, "Сделка");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьОтклоненияОтЗаказаВСтроке(ТекущаяСтрока, ПоступлениеПоЗаказам)
Если ПоступлениеПоЗаказам Тогда
Если ТекущаяСтрока.КодСтроки = 0 Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
Иначе
ТекущаяСтрока.РасхождениеЗаказ = 0;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьОтклоненияОтЗаказа()
Для Каждого ТекСтрока Из Объект.Товары Цикл
ОбновитьОтклоненияОтЗаказаВСтроке(ТекСтрока, Объект.ПоступлениеПоЗаказам);
КонецЦикла;
Для Каждого ТекСтрока Из Объект.ВозвратныеОтходы Цикл
ОбновитьОтклоненияОтЗаказаВСтроке(ТекСтрока, Объект.ПоступлениеПоЗаказам);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбновитьИнформациюПоЗаказам()
ПараметрыОбновления = ЗаказыСервер.ПараметрыОбновленияИнформацииПоЗаказамВФорме();
ПараметрыОбновления.ИмяРеквизитаСписокЗаказов = "СписокЗаказов";
ПараметрыОбновления.ПутьЗаказаВШапке = "Объект.ЗаказПереработчику";
ПараметрыОбновления.ИмяНадписиЗаголовка = "НадписьЗаголовокЗаказы";
ПараметрыОбновления.ИмяГруппыКолонокВТабличнойЧасти = "ТоварыГруппаЗаказПереработчику";
ПараметрыОбновления.ИмяЗаказаВТабличнойЧасти = "ЗаказПереработчику";
ПараметрыОбновления.ИспользоватьЗаказыВТабличнойЧасти = ИспользоватьПоступлениеПоНесколькимЗаказам;
ЗаказыСервер.ОбновитьИнформациюПоЗаказамВФорме(ЭтаФорма, Объект.Товары, ПараметрыОбновления);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Сделка", "Видимость",
(Объект.ПоступлениеПоЗаказам И ЗначениеЗаполнено(Объект.ЗаказПереработчику)) Или Не Объект.ПоступлениеПоЗаказам);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Сделка", "Доступность", Не Объект.ПоступлениеПоЗаказам);
Если ЗначениеЗаполнено(Объект.ЗаказПереработчику) Тогда
Объект.Сделка = ПолучитьСделкуПоЗаказуПоставщику(Объект.ЗаказПереработчику);
ИначеЕсли Объект.ПоступлениеПоЗаказам Тогда
Объект.Сделка = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПерезаполнитьПоОрдерам(МассивЗаказов)
ПараметрыЗаполнения = Документы.ПоступлениеОтПереработчика.ПараметрыЗаполненияДокумента();
ПараметрыЗаполнения.Вставить("ФормаОткрыта", Истина);
ПараметрыЗаполнения.Вставить("ЗаполнятьПоОрдеру", Истина);
РеквизитыШапки = Новый Структура("Организация, Партнер, Контрагент, Договор, Подразделение, Склад, Валюта,
|ХозяйственнаяОперация, НаправлениеДеятельности, ВариантПриемкиТоваров, Ссылка");
ЗаполнитьЗначенияСвойств(РеквизитыШапки, Объект);
Документы.ПоступлениеОтПереработчика.ИнициализироватьПараметрыЗаполнения(ПараметрыЗаполнения, РеквизитыШапки, МассивЗаказов);
ОбработанныеТЧ = "";
Если НЕ Документы.ПоступлениеОтПереработчика.ПродукцияИОтходыВОднойТЧ(Объект) Тогда
ОбработанныеТЧ = "ВозвратныеОтходы";
ПараметрыЗаполнения.Ресурсы = Новый Массив(1);
ПараметрыЗаполнения.Ресурсы[0] = "ВозвратныеОтходы";
ТаблицаНакладная = Документы.ПоступлениеОтПереработчика.ДанныеТаблицыТоварыДокумента(Объект.Ссылка, "ВозвратныеОтходы");
Документы.ПоступлениеОтПереработчика.ЗаполнитьПоЗаказамОрдерам(ТаблицаНакладная, Объект.Ссылка, ПараметрыЗаполнения);
Если ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(Объект.ВариантПриемкиТоваров) Тогда
КолонкаТаблицы = ТаблицаНакладная.Колонки.Количество;
КолонкаТаблицы.Имя = "КоличествоДоИзменения";
КолонкаТаблицы = ТаблицаНакладная.Колонки.КоличествоВОрдере;
КолонкаТаблицы.Имя = "Количество";
ТаблицаНакладная.Колонки.Удалить("КоличествоДоИзменения");
НакладныеСервер.УдалитьПустыеСтроки(ТаблицаНакладная, "Количество");
Иначе
КоличествоИндексов = ТаблицаНакладная.Количество() - 1;
Для Индекс = 0 По КоличествоИндексов Цикл
Строка = ТаблицаНакладная[КоличествоИндексов - Индекс];
Если МассивЗаказов.Найти(Строка.ЗаказПереработчику) = Неопределено Тогда
Продолжить;
КонецЕсли;
Если Строка.КоличествоВОрдере = 0 Тогда
ТаблицаНакладная.Удалить(Строка);
Иначе
Строка.Количество = Строка.КоличествоВОрдере;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Объект.ВозвратныеОтходы.Загрузить(ТаблицаНакладная);
Документы.ПоступлениеОтПереработчика.ОбновитьЗависимыеРеквизитыТабличнойЧасти(Объект.ВозвратныеОтходы, ПараметрыЗаполнения);
ПараметрыЗаполнения.Ресурсы[0] = "Продукция";
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Документы.ПоступлениеОтПереработчика.ДанныеТаблицыТоварыДокумента(Объект.Ссылка),
ТаблицаНакладная);
Иначе
ТаблицаНакладная = Документы.ПоступлениеОтПереработчика.ДанныеТаблицыТоварыДокумента(Объект.Ссылка);
КонецЕсли;
Документы.ПоступлениеОтПереработчика.ЗаполнитьПоЗаказамОрдерам(ТаблицаНакладная, Объект.Ссылка, ПараметрыЗаполнения);
Если ЗакупкиСервер.РаспоряжениеНаПриемкуТовараНакладная(Объект.ВариантПриемкиТоваров) Тогда
КолонкаТаблицы = ТаблицаНакладная.Колонки.Количество;
КолонкаТаблицы.Имя = "КоличествоДоИзменения";
КолонкаТаблицы = ТаблицаНакладная.Колонки.КоличествоВОрдере;
КолонкаТаблицы.Имя = "Количество";
НакладныеСервер.УдалитьПустыеСтроки(ТаблицаНакладная, "Количество");
Иначе
КоличествоИндексов = ТаблицаНакладная.Количество() - 1;
Для Индекс = 0 По КоличествоИндексов Цикл
Строка = ТаблицаНакладная[КоличествоИндексов - Индекс];
Если МассивЗаказов.Найти(Строка.ЗаказПереработчику) = Неопределено Тогда
Продолжить;
КонецЕсли;
Если Строка.КоличествоВОрдере = 0 Тогда
ТаблицаНакладная.Удалить(Строка);
Иначе
Строка.Количество = Строка.КоличествоВОрдере;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Объект.Товары.Загрузить(ТаблицаНакладная);
Документы.ПоступлениеОтПереработчика.ОбновитьЗависимыеРеквизитыТабличнойЧасти(Объект.Товары, ПараметрыЗаполнения);
ОбработанныеТЧ = ?(ЗначениеЗаполнено(ОбработанныеТЧ), ОбработанныеТЧ + ", Товары", "Товары");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
КэшируемыеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшируемыеЗначения);
Если СтрНайти(ОбработанныеТЧ, "ВозвратныеОтходы") > 0 Тогда
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ВозвратныеОтходы, СтруктураДействий, КэшируемыеЗначения);
КонецЕсли;
ЗаполнитьСлужебныеРеквизиты(ОбработанныеТЧ, СтруктураДействий);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Товары);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.ВозвратныеОтходы);
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(Объект.Товары, Объект.ВозвратныеОтходы, НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ, Элементы.КартинкаРасхождениеЗаказы);
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.Валюта;
Договор = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(
ПараметрыОбъектаССоглашением(Объект),
Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика,
ДопПараметры);
Если Договор <> Объект.Договор Тогда
Объект.Договор = Договор;
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(
Объект.Договор,
Объект.БанковскийСчетОрганизации,
Объект.БанковскийСчетКонтрагента);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКомандПоЗаказу()
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ТоварыПодобратьТоварыИзЗаказа");
МассивЭлементов.Добавить("ВозвратныеОтходыПодобратьТоварыИзЗаказа");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Элементы,
МассивЭлементов,
"Видимость",
Объект.ПоступлениеПоЗаказам);
ОтображатьЗакрытиеЗаказов = Объект.ПоступлениеПоЗаказам И
ЗначениеЗаполнено(РаспоряженияНеПоЗаказу(СписокЗаказов.ВыгрузитьЗначения()));
Элементы.ЗакрытьЗаказ.Видимость = ОтображатьЗакрытиеЗаказов;
Элементы.ЗакрытьЗаказы.Видимость = ОтображатьЗакрытиеЗаказов;
УстановитьВидимостьКомандВводНаОсновании();
КонецПроцедуры
&НаСервереБезКонтекста
Функция РаспоряженияНеПоЗаказу(Распоряжения)
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗаказПереработчику.Ссылка
|ИЗ
| Документ.ЗаказПереработчику КАК ЗаказПереработчику
|ГДЕ
| ЗаказПереработчику.Ссылка В (&Распоряжения)
| И НЕ ЗаказПереработчику.ПереработкаПоЗаказу");
Запрос.УстановитьПараметр("Распоряжения", Распоряжения);
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
&НаСервере
Процедура УстановитьВидимостьДоговора()
ПараметрыОбъекта = Новый Структура("Партнер, Контрагент, Организация, Соглашение, Договор");
ЗаполнитьЗначенияСвойств(ПараметрыОбъекта, Объект);
ЗакупкиСервер.УстановитьДоступностьДоговора(
ПараметрыОбъекта,
Элементы.Договор.Доступность,
Элементы.Договор.Видимость,
Объект.Договор);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьРеквизитовУказанияПлановыхЦен()
ПараметрыУчетнойПолитики = НастройкиНалоговУчетныхПолитик.ДействующиеПараметрыНалоговУчетныхПолитикНаДату("УчетнаяПолитикаФинансовогоУчета",
Объект.Организация,
Объект.Дата);
УчетГотовойПродукцииПоПлановойСтоимости = ?(ПараметрыУчетнойПолитики <> Неопределено,
ПараметрыУчетнойПолитики["УчетГотовойПродукцииПоПлановойСтоимости"],
Ложь);
Элементы.ВидЦены.Видимость = УчетГотовойПродукцииПоПлановойСтоимости;
Элементы.ТоварыСумма.Видимость = УчетГотовойПродукцииПоПлановойСтоимости;
Элементы.ТоварыЦена.Видимость = УчетГотовойПродукцииПоПлановойСтоимости;
Элементы.ТоварыЗаполнитьЦеныПоВидуЦен.Видимость = УчетГотовойПродукцииПоПлановойСтоимости;
Элементы.ГруппаИтогоПродукция.Видимость = УчетГотовойПродукцииПоПлановойСтоимости;
КонецПроцедуры
&НаСервере
Функция НеобходимВопросОбОчисткеСклада()
ЗадаватьВопрос = Ложь;
СкладГруппа = Справочники.Склады.ЭтоГруппаИСкладыИспользуютсяВТЧДокументовЗакупки(Объект.Склад);
Если Не СкладГруппа Тогда
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если ЗначениеЗаполнено(ТекСтрока.ЗаказПереработчику)
И ЗначениеЗаполнено(ТекСтрока.КодСтроки)
И ЗначениеЗаполнено(ТекСтрока.Склад)
И ТекСтрока.Склад <> Объект.Склад Тогда
ЗадаватьВопрос = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Для Каждого ТекСтрока Из Объект.ВозвратныеОтходы Цикл
Если ЗначениеЗаполнено(ТекСтрока.ЗаказПереработчику)
И ЗначениеЗаполнено(ТекСтрока.КодСтроки)
И ЗначениеЗаполнено(ТекСтрока.Склад)
И ТекСтрока.Склад <> Объект.Склад Тогда
ЗадаватьВопрос = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого ТекСтрока Из Объект.Товары Цикл
Если ЗначениеЗаполнено(ТекСтрока.ЗаказПереработчику)
И ЗначениеЗаполнено(ТекСтрока.КодСтроки)
И ЗначениеЗаполнено(ТекСтрока.Склад) Тогда
ЗадаватьВопрос = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Для Каждого ТекСтрока Из Объект.ВозвратныеОтходы Цикл
Если ЗначениеЗаполнено(ТекСтрока.ЗаказПереработчику)
И ЗначениеЗаполнено(ТекСтрока.КодСтроки)
И ЗначениеЗаполнено(ТекСтрока.Склад) Тогда
ЗадаватьВопрос = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат ЗадаватьВопрос;
КонецФункции
&НаСервере
Процедура УстановитьДоступностьЭлементовПоСтатусуСервер()
УстановитьПодписку = Объект.Согласован;
МассивЭлементов = Новый Массив;
Если Не Объект.ПоступлениеПоЗаказам Тогда
МассивЭлементов.Добавить("Дата");
КонецЕсли;
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("Договор");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("ПоступлениеПоЗаказу");
МассивЭлементов.Добавить("ПоступлениеПоЗаказам");
МассивЭлементов.Добавить("ХозяйственнаяОперация");
МассивЭлементов.Добавить("Сделка");
МассивЭлементов.Добавить("Подразделение");
МассивЭлементов.Добавить("ЗакупкаПодДеятельность");
МассивЭлементов.Добавить("Склад");
МассивЭлементов.Добавить("Товары;ПередНачаломДобавления,ПередУдалением,ПередНачаломИзменения");
МассивЭлементов.Добавить("ТоварыОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ТоварыПоискПоШтрихкоду");
МассивЭлементов.Добавить("ТоварыПолучитьВес");
МассивЭлементов.Добавить("ТоварыЗагрузитьДанныеИзТСД");
МассивЭлементов.Добавить("ТоварыПроверитьКоличествоВДокументе");
МассивЭлементов.Добавить("ТоварыОткрытьПодбор");
МассивЭлементов.Добавить("ТоварыПодобратьТоварыИзЗаказа");
МассивЭлементов.Добавить("ТоварыЗаполнитьЗаказыПереработчикамВТабличнойЧасти");
МассивЭлементов.Добавить("ТоварыИзменитьКачество");
МассивЭлементов.Добавить("ТоварыРазбитьСтроку");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюРазбитьСтроку");
МассивЭлементов.Добавить("ТоварыПодобратьНоменклатуру");
МассивЭлементов.Добавить("ТоварыЗаполнитьСкладВВыделенныхСтроках");
МассивЭлементов.Добавить("ВозвратныеОтходы;ПередНачаломДобавления,ПередУдалением,ПередНачаломИзменения");
МассивЭлементов.Добавить("ВозвратныеОтходыОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ВозвратныеОтходыКонтекстноеМенюОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ВозвратныеОтходыПоискПоШтрихкоду");
МассивЭлементов.Добавить("ВозвратныеОтходыПолучитьВес");
МассивЭлементов.Добавить("ВозвратныеОтходыЗагрузитьДанныеИзТСД");
МассивЭлементов.Добавить("ВозвратныеОтходыПроверитьКоличествоВДокументе");
МассивЭлементов.Добавить("ВозвратныеОтходыОткрытьПодбор");
МассивЭлементов.Добавить("ВозвратныеОтходыЗаполнитьПоЗаказу");
МассивЭлементов.Добавить("ВозвратныеОтходыПодобратьТоварыИзЗаказа");
МассивЭлементов.Добавить("ВозвратныеОтходыЗаполнитьЗаказыПереработчикамВТабличнойЧасти");
МассивЭлементов.Добавить("ВозвратныеОтходыИзменитьКачество");
МассивЭлементов.Добавить("ВозвратныеОтходыРазбитьСтроку");
МассивЭлементов.Добавить("ВозвратныеОтходыКонтекстноеМенюРазбитьСтроку");
МассивЭлементов.Добавить("ВозвратныеОтходыПодобратьНоменклатуру");
МассивЭлементов.Добавить("ВозвратныеОтходыЗаполнитьСкладВВыделенныхСтроках");
ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтаФорма, МассивЭлементов, УстановитьПодписку);
Если Не Объект.ПоступлениеПоЗаказам Тогда
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыЗаполнитьСкладВВыделенныхСтроках",
"Доступность",
СкладГруппа);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВозвратныеОтходыЗаполнитьСкладВВыделенныхСтроках",
"Доступность",
СкладГруппа);
Иначе
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыЗаполнитьСкладВВыделенныхСтроках",
"Видимость",
Ложь);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВозвратныеОтходыЗаполнитьСкладВВыделенныхСтроках",
"Видимость",
Ложь);
КонецЕсли;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыОтвязатьОтЗаказа",
"Видимость",
Объект.ПоступлениеПоЗаказам);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ТоварыКонтекстноеМенюОтвязатьОтЗаказа",
"Видимость",
Объект.ПоступлениеПоЗаказам);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВозвратныеОтходыОтвязатьОтЗаказа",
"Видимость",
Объект.ПоступлениеПоЗаказам);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"ВозвратныеОтходыКонтекстноеМенюОтвязатьОтЗаказа",
"Видимость",
Объект.ПоступлениеПоЗаказам);
Если Объект.ПоступлениеПоЗаказам И Не ПраваПользователяПовтИсп.ОтклонениеОтУсловийЗакупок() Тогда
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("Договор");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("ХозяйственнаяОперация");
МассивЭлементов.Добавить("Менеджер");
МассивЭлементов.Добавить("Сделка");
МассивЭлементов.Добавить("Подразделение");
МассивЭлементов.Добавить("ЗакупкаПодДеятельность");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Элементы,
МассивЭлементов,
"ТолькоПросмотр",
Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбораВидаЗапасов()
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Организация", "Объект.Организация"));
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.ХозяйственнаяОперация", "Объект.ХозяйственнаяОперация"));
Если ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоГруппамФинансовогоУчета") Тогда
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Номенклатура", "Элементы.Товары.ТекущиеДанные.Номенклатура"));
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоПодразделениямМенеджерам") Тогда
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Подразделение", "Объект.Подразделение"));
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Менеджер", "Объект.Менеджер"));
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоСделкам") Тогда
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Сделка", "Объект.Сделка"));
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьОбособленноеОбеспечениеЗаказов") Тогда
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Назначение", "Элементы.Товары.ТекущиеДанные.Назначение"));
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности") Тогда
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.НаправлениеДеятельности", "Объект.НаправлениеДеятельности"));
КонецЕсли;
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ФормироватьВидыЗапасовПоПоставщикам") Тогда
МассивПараметров.Добавить(Новый СвязьПараметраВыбора("Отбор.Поставщик", "Объект.Партнер"));
КонецЕсли;
Элементы.ТоварыВидЗапасов.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивПараметров);
Элементы.ВозвратныеОтходыВидЗапасов.СвязиПараметровВыбора = Новый ФиксированныйМассив(МассивПараметров);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, ИмяТЧ)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
Если УчетГотовойПродукцииПоПлановойСтоимости Тогда
СтруктураПараметров = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураПараметров.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", СтруктураПараметров);
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
КонецЕсли;
ПараметрыУказанияСклада = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПараметрыУказанияСклада);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
СписокСвойств = "Номенклатура, Характеристика, Упаковка, Склад, КоличествоУпаковок";
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
ТаблицаОбъекта = Объект[ИмяТЧ];
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = ТаблицаОбъекта.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, СписокСвойств);
Если Объект.ПоступлениеПоЗаказам Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТаблицаОбъекта,
КэшированныеЗначения);
ПараметрыЗаполненияХарактеристик = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", ПараметрыЗаполненияХарактеристик);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(ТаблицаОбъекта, СтруктураДействий);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗаполнитьСтатусыУказанияСерийСервер(ИмяТЧ);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПодбораТоваровИзЗаказа(АдресВХранилище)
Таблица = ПолучитьИзВременногоХранилища(АдресВХранилище).Товары;
ИмяТЧ = ?(Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаВозвратныеОтходы, "Возвратныеотходы", "Товары");
ИменаПолей = "НомерСтроки";
СтруктураПоиска = Новый Структура(ИменаПолей);
Таблица.Сортировать(ИменаПолей + " Убыв");
ДеревоСтрок = Новый Массив();
Для Каждого СтрокаТаблицы Из Таблица Цикл
Если СтруктураПоиска.НомерСтроки <> СтрокаТаблицы.НомерСтроки Тогда
МассивСтрок = Новый Массив();
ДеревоСтрок.Добавить(МассивСтрок);
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаТаблицы);
КонецЕсли;
МассивСтрок.Добавить(СтрокаТаблицы);
КонецЦикла;
ПоляСвязиСЗаказом = Новый Структура("КодСтроки, ЗаказПереработчику", 0, Документы.ЗаказПереработчику.ПустаяСсылка());
ДобавленныеСтроки = НакладныеСервер.ЗаполнитьТоварыПодобраннымиИзЗаказа(ДеревоСтрок, ИменаПолей, Объект[ИмяТЧ], ПоляСвязиСЗаказом);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
КэшируемыеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект[ИмяТЧ], СтруктураДействий, КэшируемыеЗначения);
Для Каждого СтрокаТовары Из ДобавленныеСтроки Цикл
Если ЗначениеЗаполнено(СтрокаТовары.ЗаказПереработчику) Тогда
Объект.ПоступлениеПоЗаказам = Истина;
Продолжить;
КонецЕсли;
КонецЦикла;
СоответствиеРеквизитов = Новый Соответствие;
СоответствиеРеквизитов.Вставить("ЗаказПереработчику","ЗаказПереработчику");
СоответствиеРеквизитов.Вставить("Распоряжение","Распоряжение");
ЗаказыСервер.ЗаполнитьРеквизитыШапкиПоТабличнымЧастям(СоответствиеРеквизитов, "Товары,ВозвратныеОтходы", Объект);
ЗаполнитьСлужебныеРеквизиты(ИмяТЧ, СтруктураДействий);
ЗаполнитьСтатусыУказанияСерийСервер(ИмяТЧ);
ПриИзмененииСкладаВТабличнойЧастиСервер();
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
&НаСервере
Функция ЗаполнитьЦеныВыделенныхСтрокПоВидуЦенСервер(ВидЦен, МассивИдентификаторовСтрок = Неопределено)
Если Не МассивИдентификаторовСтрок = Неопределено Тогда
МассивСтрок = Новый Массив;
Для Каждого Строка Из МассивИдентификаторовСтрок Цикл
МассивСтрок.Добавить(Объект.Товары.НайтиПоИдентификатору(Строка));
КонецЦикла;
Иначе
МассивСтрок = Неопределено;
КонецЕсли;
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект.Товары,
МассивСтрок,
Новый Структура(
"Дата, Валюта, ВидЦены, Организация",
Объект.Дата,
Объект.Валюта,
ВидЦен,
Объект.Организация),
Новый Структура(
"ПересчитатьСумму",
"КоличествоУпаковок"));
Возврат ЦеныРассчитаны;
КонецФункции
&НаСервере
Функция ЗаполнитьСкладВВыделенныхСтрокахНаСервере(ИмяТЧ, Знач МассивВыделенныхСтрок, Склад)
ЗаполненоСтрок = СкладыСервер.ЗаполнитьСкладыВВыделенныхСтроках(
Объект[ИмяТЧ],
МассивВыделенныхСтрок,
Склад,
Истина);
Если ЗаполненоСтрок > 0 Тогда
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
КэшируемыеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого ИдентификаторСтроки Из МассивВыделенныхСтрок Цикл
ТекущаяСтрока = Объект[ИмяТЧ].НайтиПоИдентификатору(ИдентификаторСтроки);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект[ИмяТЧ],
КэшируемыеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий[ИмяТЧ]);
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецЕсли;
Возврат ЗаполненоСтрок;
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьБанковскийСчетОрганизацииПоУмолчаниюСервер(Организация)
СтруктураПараметров = ДенежныеСредстваСервер.ПараметрыЗаполненияБанковскогоСчетаОрганизацииПоУмолчанию();
СтруктураПараметров.Организация = Организация;
Возврат ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетОрганизацииПоУмолчанию(СтруктураПараметров);
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьБанковскийСчетКонтрагентаПоУмолчаниюСервер(Контрагент)
Возврат ЗначениеНастроекПовтИсп.ПолучитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПоОбновлениюВспомРевизитовСтроки(СтруктураДействий)
СтруктураХарактеристики = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
СтруктураТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
СтруктураАртикул = Новый Структура("Номенклатура", "Артикул");
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", СтруктураХарактеристики);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", СтруктураТипНоменклатуры);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", СтруктураАртикул);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьЗависимыеРеквизитыФормыПоЗаказу(Товары, ВозвратныеОтходы, НадписьРасхождениеЗаказ, КартинкаРасхождениеЗаказ, КартинкаРасхождениеЗаказы)
КоличествоРасхождений = Товары.Итог("РасхождениеЗаказ") + ВозвратныеОтходы.Итог("РасхождениеЗаказ");
Если КоличествоРасхождений > 0 Тогда
КартинкаРасхождениеЗаказ.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
КартинкаРасхождениеЗаказы.Картинка = БиблиотекаКартинок.ПревышениеЗаказа;
НадписьРасхождениеЗаказ = СтрЗаменить(НСтр("ru='Строк сверх заказа'") + НСтр("ru=': %КоличествоРасхождений%'"), "%КоличествоРасхождений%", КоличествоРасхождений);
Иначе
КартинкаРасхождениеЗаказ.Картинка = Новый Картинка();
КартинкаРасхождениеЗаказы.Картинка = Новый Картинка();
НадписьРасхождениеЗаказ = "";
КоличествоРасхождений = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВопросПользователюПриИзмененииРеквизитаСтроки(Строка, ОбработкаОповещения)
Если Строка.КодСтроки = 0 ИЛИ НЕ Объект.ПоступлениеПоЗаказам Тогда
ВыполнитьОбработкуОповещения(ОбработкаОповещения);
Возврат;
КонецЕсли;
Если Строка.Номенклатура = ПредыдущиеРеквизитыСтроки.Номенклатура
И Строка.Характеристика = ПредыдущиеРеквизитыСтроки.Характеристика
И Строка.Склад = ПредыдущиеРеквизитыСтроки.Склад Тогда
ВыполнитьОбработкуОповещения(ОбработкаОповещения);
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Строка", Строка);
ДополнительныеПараметры.Вставить("ОбработкаОповещения", ОбработкаОповещения);
ТекстВопроса = НСтр("ru='Редактируемая строка перестанет быть связанной со строкой заказа. Продолжить?'");
ОписаниеОповещения = Новый ОписаниеОповещения("ВопросПользователюПриИзмененииРеквизитаСтрокиЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ВопросПользователюПриИзмененииРеквизитаСтрокиЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ДополнительныеПараметры.Строка.КодСтроки = 0;
ОбновитьОтклоненияОтЗаказаВСтроке(ДополнительныеПараметры.Строка, Объект.ПоступлениеПоЗаказам);
ВыполнитьОбработкуОповещения(ДополнительныеПараметры.ОбработкаОповещения);
Иначе
ЗаполнитьЗначенияСвойств(ДополнительныеПараметры.Строка, ПредыдущиеРеквизитыСтроки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыСкладПриИзмененииЗавершение(Результат, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий",
ТекущаяСтрока.Склад, ПараметрыУказанияСерий.ВозвратныеОтходы));
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзмененииЗавершение(Результат, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПараметрыУказанияСклада = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(
Объект,
СкладГруппа);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПараметрыУказанияСклада);
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий",
ТекущаяСтрока.Склад, ПараметрыУказанияСерий.Товары));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
Если УчетГотовойПродукцииПоПлановойСтоимости Тогда
СтруктураПараметров = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураПараметров.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", СтруктураПараметров);
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
КонецЕсли;
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзмененииЗавершение(Результат, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
Если УчетГотовойПродукцииПоПлановойСтоимости Тогда
СтруктураПараметров = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект);
СтруктураПараметров.Вставить("ВидЦены", Объект.ВидЦены);
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", СтруктураПараметров);
СтруктураДействий.Вставить("ПересчитатьСумму", "Количество");
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыХарактеристикаПриИзмененииЗавершение(Результат, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНазначениеПриИзмененииЗавершение(Результат, ДополнительныеПараметры) Экспорт
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСкладПриИзмененииЗавершение(Результат, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий",
ТекущаяСтрока.Склад, ПараметрыУказанияСерий.Товары));
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыНоменклатураПриИзмененииЗавершение(Результат, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
ПараметрыУказанияСклада = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(
Объект,
СкладГруппа);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПараметрыУказанияСклада);
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий",
ТекущаяСтрока.Склад, ПараметрыУказанияСерий.ВозвратныеОтходы));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "ВозвратныеОтходы"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
КонецПроцедуры
&НаСервере
Функция ПоместитьТабличнуюЧастьВоВременноеХранилищеДляПроверкиКоличества(ИмяТЧ)
КолонкиГруппировок = "Номенклатура, Характеристика, ХарактеристикиИспользуются, Упаковка, Серия, СтатусУказанияСерий, Склад, ТипНоменклатуры, ЗаказПереработчику";
КолонкиСуммирования = "КоличествоУпаковок";
ТабличнаяЧасть = Объект[ИмяТЧ].Выгрузить(,КолонкиГруппировок + ", " + КолонкиСуммирования);
ТабличнаяЧасть.Свернуть(КолонкиГруппировок, КолонкиСуммирования);
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(ТабличнаяЧасть, УникальныйИдентификатор);
Возврат АдресВоВременномХранилище;
КонецФункции
&НаСервере
Процедура ИзменитьТабличнуюЧастьПоРезультатамПроверки(ИмяТЧ, ВозвращаемыеПараметры, КэшированныеЗначения)
ТаблицаТовары = ПолучитьИзВременногоХранилища(ВозвращаемыеПараметры.Товары);
УдаляемыеСтроки = Новый Массив;
Отбор = Новый Структура("Номенклатура, Характеристика, ХарактеристикиИспользуются, Упаковка, Серия, СтатусУказанияСерий, Склад, ТипНоменклатуры, ЗаказПереработчику");
ОбрабатываемыеСтроки = Новый Массив;
ОбрабатываемыеНовыеСтроки = Новый Массив;
Для Каждого СтрокаИсточник Из ТаблицаТовары Цикл
ЗаполнитьЗначенияСвойств(Отбор, СтрокаИсточник);
НайденныеСтроки = Объект[ИмяТЧ].НайтиСтроки(Отбор);
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
Если СтрокаИсточник.КоличествоУпаковок = 0 Тогда
Прервать;
КонецЕсли;
Если СтрокаИсточник.КоличествоУпаковок >= 0 Тогда
СтрокаТЧ.КоличествоУпаковок = СтрокаТЧ.КоличествоУпаковок + СтрокаИсточник.КоличествоУпаковок;
СтрокаИсточник.КоличествоУпаковок = 0;
Иначе
КоличествоКСписанию = -СтрокаИсточник.КоличествоУпаковок;
КоличествоВСтроке = СтрокаТЧ.КоличествоУпаковок;
Если КоличествоКСписанию > КоличествоВСтроке Тогда
СтрокаИсточник.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
СтрокаТЧ.КоличествоУпаковок = 0;
Иначе
СтрокаИсточник.КоличествоУпаковок = 0;
СтрокаТЧ.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
КонецЕсли;
КонецЕсли;
Если СтрокаТЧ.КоличествоУпаковок = 0 Тогда
УдаляемыеСтроки.Добавить(СтрокаТЧ);
Иначе
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТЧ = Объект[ИмяТЧ].Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаИсточник);
ОбрабатываемыеНовыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
СтруктураДействий = Новый Структура("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект[ИмяТЧ],
КэшированныеЗначения);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
ДобавитьВСтруктуруДействияПоОбновлениюВспомРевизитовСтроки(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеНовыеСтроки,
СтруктураДействий,
Объект[ИмяТЧ],
КэшированныеЗначения);
Для Каждого СтрокаТЧ Из УдаляемыеСтроки Цикл
Объект[ИмяТЧ].Удалить(СтрокаТЧ);
КонецЦикла;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий[ИмяТЧ]);
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗаголовокЗаказыНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СписокДокументов", СписокЗаказов);
ПараметрыФормы.Вставить("Заголовок", НСтр("ru='Заказы переработчикам (%КоличествоДокументов%)'"));
ОткрытьФорму("ОбщаяФорма.ПросмотрСпискаДокументов", ПараметрыФормы, ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор, ИмяТЧ)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(
Объект,
ПараметрыУказанияСерий[ИмяТЧ],
ТекущиеДанныеИдентификатор,
ЭтаФорма);
КонецФункции
&НаСервере
Процедура ПриИзмененииСкладаВТабличнойЧастиСервер()
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.Товары, ТаблицаСкладов, СкладГруппа, Ложь);
СкладыСервер.ПриИзмененииСкладаВТабличнойЧасти(Объект.ВозвратныеОтходы, ТаблицаСкладовВозвратныеОтходы, СкладГруппа, Ложь);
ВсегоСкладов = ТаблицаСкладов.Количество() + ТаблицаСкладовВозвратныеОтходы.Количество();
СкладыКлиентСервер.ОбновитьКартинкуГруппыСкладов(НадписьНесколькоСкладов, Элементы.КартинкаНесколькоСкладов, ВсегоСкладов);
Элементы.КартинкаНесколькоСкладов2.Картинка = Элементы.КартинкаНесколькоСкладов.Картинка;
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
Объект.ВозвратныеОтходы,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу()
Если Объект.Товары.Количество() = 0
И Объект.ВозвратныеОтходы.Количество() = 0
ИЛИ Не Объект.ПоступлениеПоЗаказам Тогда
Для каждого СтрокаТовары Из Объект.Товары Цикл
СтрокаТовары.РасхождениеЗаказ = 0;
КонецЦикла;
Для каждого СтрокаТовары Из Объект.ВозвратныеОтходы Цикл
СтрокаТовары.РасхождениеЗаказ = 0;
КонецЦикла;
КоличествоРасхождений = 0;
Элементы.КартинкаРасхождениеЗаказ.Картинка = Новый Картинка();
Элементы.КартинкаРасхождениеЗаказы.Картинка = Новый Картинка();
НадписьРасхождениеЗаказ = "";
КоличествоРасхождений = 0;
Возврат;
КонецЕсли;
ОбновитьЗависимыеРеквизитыФормыПоЗаказу(
Объект.Товары,
Объект.ВозвратныеОтходы,
НадписьРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказ,
Элементы.КартинкаРасхождениеЗаказы);
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОбОкончанииОтвязкиСтрок(КоличествоОтработанныхСтрок, СтрокиОтвязаны = Истина)
Если СтрокиОтвязаны Тогда
ТекстОповещения = НСтр("ru='В документе от заказов отвязано строк (%%Количество%%).'");
ТекстОповещения = СтрЗаменить(ТекстОповещения, "%%Количество%%", КоличествоОтработанныхСтрок);
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки отвязаны'"),
,
ТекстОповещения,
БиблиотекаКартинок.Информация32);
Иначе
ПоказатьОповещениеПользователя(
НСтр("ru = 'Строки не отвязаны'"),
,
НСтр("ru='Ни одна строка не была отвязана.'"),
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеУдаленияСервер(ИмяТаблицы, НеобходимоОбновитьСтатусыСерий, КэшированныеЗначения)
Если НеобходимоОбновитьСтатусыСерий Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения, ИмяТаблицы);
КонецЕсли;
ОбновитьИнформациюПоЗаказам();
ПриИзмененииСкладаВТабличнойЧастиСервер();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДанныеВыбораСкладов(Склад)
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Склады.Ссылка КАК Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка В ИЕРАРХИИ(&ГруппаСкладов)
| И Склады.ЭтоГруппа = ЛОЖЬ
| И Склады.ВыборГруппы <> ЗНАЧЕНИЕ(Перечисление.ВыборГруппыСкладов.Запретить)");
Запрос.УстановитьПараметр("ГруппаСкладов", Склад);
МассивСкладов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат МассивСкладов;
КонецФункции
&НаСервере
Процедура УстановитьПараметрыВыбораТоварыСклад()
Элементы.ТоварыСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
Элементы.ВозвратныеОтходыСклад.ПараметрыВыбора = Новый ФиксированныйМассив(Новый Массив);
ДанныеВыбораСкладов = ДанныеВыбораСкладов(Объект.Склад);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(Элементы.ТоварыСклад, "Ссылка", ДанныеВыбораСкладов);
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(Элементы.ВозвратныеОтходыСклад, "Ссылка", ДанныеВыбораСкладов);
КонецПроцедуры
&НаСервере
Процедура НастроитьКомандуПодобратьПоЗаказамОрдерам(УстанавливатьДоступность = Истина)
СтруктураПараметров = Новый Структура("ОрдернаяСхемаПриОтгрузке, ИспользоватьЗаказы, ИспользоватьНакладныеПоНесколькимЗаказам",
ОрдернаяСхемаПриПриемке, Истина, ИспользоватьПоступлениеПоНесколькимЗаказам);
НакладныеСервер.НастроитьКомандуПодобратьПоЗаказамОрдерам(
Элементы.ТоварыПодобратьТоварыПоЗаказамОрдерам, СтруктураПараметров, УстанавливатьДоступность);
НакладныеСервер.НастроитьКомандуПодобратьПоЗаказамОрдерам(
Элементы.ВозвратныеОтходыПодобратьТоварыПоЗаказамОрдерам, СтруктураПараметров, УстанавливатьДоступность);
КонецПроцедуры
&НаКлиенте
Процедура ПоступлениеПоЗаказамПриИзмененииПослеВыбора(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Объект.ПоступлениеПоЗаказам = Ложь;
Возврат;
КонецЕсли;
Если Объект.Товары.Количество() = 0 И Объект.ВозвратныеОтходы.Количество() = 0 Тогда
Если ПродукцияИОтходыВОднойТЧ Тогда
ТекстВопроса = НСтр("ru='Продукция будет перезаполнена по заказам. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Продукция и возвратные отходы будут перезаполнены по заказам. Продолжить?'");
КонецЕсли;
Иначе
Если ПродукцияИОтходыВОднойТЧ Тогда
ТекстВопроса = НСтр("ru='Продукция будет привязана к заказам. Продолжить?'");
Иначе
ТекстВопроса = НСтр("ru='Продукция и возвратные отходы будут привязаны к заказам. Продолжить?'");
КонецЕсли;
КонецЕсли;
ПоступлениеПоЗаказамПриИзмененииФрагмент(Результат.ЗаказПереработчику, ТекстВопроса);
КонецПроцедуры
&НаКлиенте
Процедура ПоступлениеПоЗаказамПриИзмененииФрагмент(Знач ЗаказПереработчику, Знач ТекстВопроса)
ОписаниеОповещения = Новый ОписаниеОповещения("ПоступлениеПоЗаказамПриИзмененииЗавершение",
ЭтотОбъект,
Новый Структура("ЗаказПереработчику", ЗаказПереработчику));
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ПоступлениеПоЗаказамПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ЗаказПереработчику = ДополнительныеПараметры.ЗаказПереработчику;
ОтветНаВопрос = РезультатВопроса;
Если ОтветНаВопрос = КодВозвратаДиалога.Нет Тогда
Объект.ПоступлениеПоЗаказам = Не Объект.ПоступлениеПоЗаказам;
Возврат;
КонецЕсли;
Если ЗначениеЗаполнено(ЗаказПереработчику) Тогда
Объект.ЗаказПереработчику = ЗаказПереработчику;
КонецЕсли;
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ТоварыОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ВозвратныеОтходыОтвязатьОтЗаказа");
МассивЭлементов.Добавить("ВозвратныеОтходыКонтекстноеМенюОтвязатьОтЗаказа");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Видимость", Объект.ПоступлениеПоЗаказам);
ПриИзмененииПоступленияПоНесколькимЗаказам();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииПоступленияПоНесколькимЗаказам()
ОтвязатьСтрокиОтЗаказов();
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Если Объект.ПоступлениеПоЗаказам Тогда
Если НЕ ИспользоватьПоступлениеПоНесколькимЗаказам
И ЗначениеЗаполнено(Объект.ЗаказПереработчику) Тогда
РеквизитыЗаказа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
Объект.ЗаказПереработчику,
"Валюта,Контрагент,Договор,Организация,Партнер");
ЗаполнитьЗначенияСвойств(Объект,РеквизитыЗаказа);
КонецЕсли;
Если Объект.Товары.Количество() = 0 И Объект.ВозвратныеОтходы.Количество() = 0 Тогда
ЗаполнитьПоЗаказуСервер();
Иначе
ПривязатьСтрокиКЗаказам(Не ИспользоватьПоступлениеПоНесколькимЗаказам);
КонецЕсли;
Иначе
СписокЗаказов.Очистить();
Объект.ЗаказПереработчику = Неопределено;
КонецЕсли;
Элементы.НаправлениеДеятельности.ТолькоПросмотр = Объект.ПоступлениеПоЗаказам;
ОбновитьЗависимыеРеквизитыФормыСерверПоЗаказу();
УстановитьПараметрыВыбораВидаЗапасов();
УстановитьВидимостьКомандПоЗаказу();
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоЗаказуСервер()
Объект.Товары.Очистить();
Объект.ВозвратныеОтходы.Очистить();
МассивЗаказов = Неопределено;
Если ИспользоватьПоступлениеПоНесколькимЗаказам Тогда
ПараметрыОтбора = Новый Структура(
"Организация, Партнер, Контрагент, Договор, Валюта, НаправлениеДеятельности");
ЗаполнитьЗначенияСвойств(ПараметрыОтбора, Объект);
МассивЗаказов = Документы.ПоступлениеОтПереработчика.РаспоряженияНакладной(
Объект.Ссылка, ПараметрыОтбора);
КонецЕсли;
Документы.ПоступлениеОтПереработчика.ЗаполнитьПоЗаказам(Объект, МассивЗаказов);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
КэшируемыеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, КэшируемыеЗначения);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ВозвратныеОтходы, СтруктураДействий, КэшируемыеЗначения);
ОбновитьИнформациюПоЗаказам();
ЗаполнитьСлужебныеРеквизиты(, СтруктураДействий);
ПриИзмененииСкладаВТабличнойЧастиСервер();
РассчитатьИтоговыеПоказателиПоступления(ЭтаФорма);
ЗаполнитьСтатусыУказанияСерийСервер("Товары");
ЗаполнитьСтатусыУказанияСерийСервер("ВозвратныеОтходы");
КонецПроцедуры
&НаСервере
Функция ПривязатьСтрокиКЗаказам(ОтобратьПоЗаказу)
Если (Не ИспользоватьПоступлениеПоНесколькимЗаказам
И Не ЗначениеЗаполнено(Объект.ЗаказПереработчику)) Тогда
Возврат Ложь;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
|ПОМЕСТИТЬ
| Товары
|ИЗ
| &Товары КАК Товары
|ГДЕ
| Товары.КодСтроки = 0
| И Товары.ЗаказПереработчику = ЗНАЧЕНИЕ(Документ.ЗаказПереработчику.ПустаяСсылка)
|;
|
|
|ВЫБРАТЬ
| ВЫРАЗИТЬ(ТаблицаЗаказы.ЗаказПоставщику КАК Документ.ЗаказПереработчику).Сделка КАК Сделка,
| ТаблицаЗаказы.ЗаказПоставщику КАК ЗаказПереработчику,
| ТаблицаЗаказы.Номенклатура КАК Номенклатура,
| ТаблицаЗаказы.Характеристика КАК Характеристика,
| ТаблицаЗаказы.КодСтроки КАК КодСтроки,
| ТаблицаЗаказы.Склад КАК Склад,
| СУММА(ТаблицаЗаказы.КОформлению) КАК КОформлениюОстаток
|ПОМЕСТИТЬ
| ЗаказыПереработчикам
|ИЗ
| (ВЫБРАТЬ
| ЗаказыОстатки.ЗаказПоставщику КАК ЗаказПоставщику,
| ЗаказыОстатки.Номенклатура КАК Номенклатура,
| ЗаказыОстатки.Характеристика КАК Характеристика,
| ЗаказыОстатки.КодСтроки КАК КодСтроки,
| ЗаказыОстатки.Склад КАК Склад,
| ЗаказыОстатки.КОформлениюОстаток КАК КОформлению
| ИЗ
| РегистрНакопления.ЗаказыПоставщикам.Остатки(,
| ВЫБОР КОГДА &ОтобратьПоЗаказу ТОГДА
| ЗаказПоставщику = &ЗаказПереработчику
| ИНАЧЕ
| ЗаказПоставщику ССЫЛКА Документ.ЗаказПереработчику
| И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПереработчику).Партнер = &Партнер
| И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПереработчику).Контрагент = &Контрагент
| И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПереработчику).Договор = &Договор
| И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПереработчику).Организация = &Организация
| И ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПереработчику).Валюта = &Валюта
| И &НаправлениеДеятельности В
| (ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПереработчику).НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))
| КОНЕЦ
| И
| ВЫБОР
| КОГДА
| ВЫРАЗИТЬ(&Склад КАК Справочник.Склады).ЭтоГруппа
| ТОГДА
| Склад В ИЕРАРХИИ (&Склад) ИЛИ Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ
| Склад В (ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка), &Склад)
| КОНЕЦ
| И (Номенклатура, Характеристика) В
| (ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
| ИЗ
| Товары КАК Товары)
| ) КАК ЗаказыОстатки
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗаказыДвижения.ЗаказПоставщику,
| ЗаказыДвижения.Номенклатура,
| ЗаказыДвижения.Характеристика,
| ЗаказыДвижения.КодСтроки,
| ЗаказыДвижения.Склад,
| ВЫБОР КОГДА ЗаказыДвижения.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА
| -ЗаказыДвижения.КОформлению
| ИНАЧЕ
| ЗаказыДвижения.КОформлению
| КОНЕЦ
| ИЗ
| РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыДвижения
| ГДЕ
| ЗаказыДвижения.Регистратор = &Регистратор
| И ВЫБОР КОГДА &ОтобратьПоЗаказу ТОГДА
| ЗаказыДвижения.ЗаказПоставщику = &ЗаказПереработчику
| ИНАЧЕ
| ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПереработчику).Партнер = &Партнер
| И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПереработчику).Контрагент = &Контрагент
| И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПереработчику).Договор = &Договор
| И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПереработчику).Организация = &Организация
| И ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПереработчику).Валюта = &Валюта
| И &НаправлениеДеятельности В
| (ВЫРАЗИТЬ(ЗаказыДвижения.ЗаказПоставщику КАК Документ.ЗаказПереработчику).НаправлениеДеятельности,
| ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))
| КОНЕЦ
| И ЗаказыДвижения.Активность
| И ВЫБОР
| КОГДА
| ВЫРАЗИТЬ(&Склад КАК Справочник.Склады).ЭтоГруппа
| ТОГДА
| ЗаказыДвижения.Склад В ИЕРАРХИИ (&Склад) ИЛИ Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ
| ЗаказыДвижения.Склад В (ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка), &Склад)
| КОНЕЦ
| И (Номенклатура, Характеристика) В
| (ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика
| ИЗ
| Товары КАК Товары)
| ) КАК ТаблицаЗаказы
|
| СГРУППИРОВАТЬ ПО
| ТаблицаЗаказы.ЗаказПоставщику,
| ТаблицаЗаказы.Номенклатура,
| ТаблицаЗаказы.Характеристика,
| ТаблицаЗаказы.КодСтроки,
| ТаблицаЗаказы.Склад
|
| ИМЕЮЩИЕ
| СУММА(ТаблицаЗаказы.КОформлению) > 0
|;
|
|
|ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК КоличествоДублей,
| ЗаказыПереработчикам.Номенклатура КАК Номенклатура,
| ЗаказыПереработчикам.Характеристика КАК Характеристика,
| ЗаказыПереработчикам.Склад КАК Склад
|ПОМЕСТИТЬ
| ДублиТоваров
|ИЗ
| ЗаказыПереработчикам КАК ЗаказыПереработчикам
|СГРУППИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Склад
|;
|
|
|ВЫБРАТЬ
| ЗаказыПереработчикам.Сделка КАК Сделка,
| ЗаказыПереработчикам.ЗаказПереработчику КАК ЗаказПереработчику,
| ЗаказыПереработчикам.Номенклатура КАК Номенклатура,
| ЗаказыПереработчикам.Характеристика КАК Характеристика,
| ЗаказыПереработчикам.КодСтроки КАК КодСтроки,
| ЗаказыПереработчикам.Склад КАК Склад,
| ЕСТЬNULL(ЗаказПереработчикуПродукция.Назначение,
| ЗаказПереработчикуОтходы.Назначение) КАК Назначение,
| ЗаказыПереработчикам.КОформлениюОстаток КАК КОформлениюОстаток,
| ЕСТЬNULL(ЗаказПереработчикуПродукция.НомерСтроки,
| ЗаказПереработчикуОтходы.НомерСтроки) КАК НомерСтроки,
| 0 КАК Распределено,
| ДублиТоваров.КоличествоДублей КАК КоличествоДублей,
| ВЫБОР
| КОГДА ДокЗаказПереработчику.ПереработкаПоЗаказу
| ТОГДА ЕСТЬNULL(ТаблицаПродукцияУслуги.Распоряжение, ТаблицаОтходыУслуги.Распоряжение)
| ИНАЧЕ ДокЗаказПереработчику.Ссылка
| КОНЕЦ КАК Распоряжение,
| НЕ &ПродукцияИОтходыВОднойТЧ
| И НЕ ЗаказПереработчикуОтходы.Ссылка ЕСТЬ NULL КАК ВозвратныйОтход
|ИЗ
| ЗаказыПереработчикам КАК ЗаказыПереработчикам
| ЛЕВОЕ СОЕДИНЕНИЕ ДублиТоваров
| ПО ЗаказыПереработчикам.Номенклатура = ДублиТоваров.Номенклатура
| И ЗаказыПереработчикам.Характеристика = ДублиТоваров.Характеристика
| И ЗаказыПереработчикам.Склад = ДублиТоваров.Склад
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику КАК ДокЗаказПереработчику
| ПО (ДокЗаказПереработчику.Ссылка = ЗаказыПереработчикам.ЗаказПереработчику)
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Продукция КАК ЗаказПереработчикуПродукция
| ПО ЗаказПереработчикуПродукция.Ссылка = ЗаказыПереработчикам.ЗаказПереработчику
| И ЗаказПереработчикуПродукция.КодСтроки = ЗаказыПереработчикам.КодСтроки
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.ВозвратныеОтходы КАК ЗаказПереработчикуОтходы
| ПО ЗаказПереработчикуОтходы.Ссылка = ЗаказыПереработчикам.ЗаказПереработчику
| И ЗаказПереработчикуОтходы.КодСтроки = ЗаказыПереработчикам.КодСтроки
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Услуги КАК ТаблицаПродукцияУслуги
| ПО (ТаблицаПродукцияУслуги.Ссылка = ЗаказПереработчикуПродукция.Ссылка)
| И (ТаблицаПродукцияУслуги.НомерГруппыЗатрат = ЗаказПереработчикуПродукция.НомерГруппыЗатрат)
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику.Услуги КАК ТаблицаОтходыУслуги
| ПО (ТаблицаОтходыУслуги.Ссылка = ЗаказПереработчикуОтходы.Ссылка)
| И (ТаблицаОтходыУслуги.НомерГруппыЗатрат = ЗаказПереработчикуОтходы.НомерГруппыЗатрат)
|
|ГДЕ
| (НЕ ЗаказПереработчикуПродукция.Ссылка ЕСТЬ NULL
| ИЛИ НЕ ЗаказПереработчикуОтходы.Ссылка ЕСТЬ NULL)
|
|
|УПОРЯДОЧИТЬ ПО
| ЗаказПереработчику,
| НомерСтроки
|";
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
Запрос.УстановитьПараметр("ЗаказПереработчику", Объект.ЗаказПереработчику);
Запрос.УстановитьПараметр("Партнер", Объект.Партнер);
Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
Запрос.УстановитьПараметр("Договор", Объект.Договор);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Склад", Объект.Склад);
Запрос.УстановитьПараметр("Валюта", Объект.Валюта);
Запрос.УстановитьПараметр("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
Запрос.УстановитьПараметр("Регистратор", Объект.Ссылка);
Запрос.УстановитьПараметр("ОтобратьПоЗаказу", ОтобратьПоЗаказу);
Запрос.УстановитьПараметр("ПродукцияИОтходыВОднойТЧ", Документы.ПоступлениеОтПереработчика.ПродукцияИОтходыВОднойТЧ(Объект));
ТаблицаТовары = Объект.Товары.Выгрузить(,"Номенклатура,Характеристика,КодСтроки,ЗаказПереработчику");
ОбщегоНазначенияУТ.ДобавитьСтрокиВТаблицу(ТаблицаТовары, Объект.ВозвратныеОтходы);
Запрос.УстановитьПараметр("Товары", ТаблицаТовары);
УстановитьПривилегированныйРежим(Истина);
РезультатЗапроса = Запрос.ВыполнитьПакет();
Если РезультатЗапроса[1].Пустой() Тогда
Возврат Ложь;
КонецЕсли;
Выборка = РезультатЗапроса[3].Выбрать();
ТаблицаНераспределенныхТоваров = Новый ТаблицаЗначений();
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Номенклатура");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Характеристика");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Склад");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("ЗаказПереработчику");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Распоряжение");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("КодСтроки");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Количество");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Сделка");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("Назначение");
ТаблицаНераспределенныхТоваров.Колонки.Добавить("ВозвратныйОтход");
Пока Выборка.Следующий() Цикл
СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("Номенклатура", Выборка.Номенклатура);
СтруктураПоиска.Вставить("Характеристика", Выборка.Характеристика);
СтруктураПоиска.Вставить("Склад", Выборка.Склад);
СтруктураПоиска.Вставить("Назначение", Выборка.Назначение);
СтруктураПоиска.Вставить("КодСтроки", 0);
ТабличнаяЧасть = ?(Выборка.ВозвратныйОтход, Объект.ВозвратныеОтходы, Объект.Товары);
НайденныеСтроки = ТабличнаяЧасть.НайтиСтроки(СтруктураПоиска);
НераспределенноеКоличество = Выборка.КОформлениюОстаток;
Если Выборка.КоличествоДублей < 2 Тогда
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
ЗаполнитьЗначенияСвойств(ТекСтрока, Выборка, "КодСтроки,ЗаказПереработчику,Распоряжение,Сделка,Назначение");
КоличествоВСтроке = ТекСтрока.Количество;
Если КоличествоВСтроке > НераспределенноеКоличество Тогда
ТекСтрока.Количество = НераспределенноеКоличество;
ОбрабатываемыеСтроки.Добавить(ТекСтрока);
КонецЕсли;
НераспределенноеКоличество = НераспределенноеКоличество - КоличествоВСтроке;
Если НераспределенноеКоличество < 0 Тогда
НоваяСтрока = ТаблицаНераспределенныхТоваров.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка,, "КодСтроки");
НоваяСтрока.Количество = -НераспределенноеКоличество;
НоваяСтрокаТовары = ТабличнаяЧасть.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаТовары, ТекСтрока,, "КодСтроки,ЗаказПереработчику,Распоряжение");
НоваяСтрокаТовары.Количество = -НераспределенноеКоличество;
ОбрабатываемыеСтроки.Добавить(НоваяСтрокаТовары);
ИначеЕсли НераспределенноеКоличество = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТабличнаяЧасть);
Иначе
НайденаПодходящаяСтрока = Ложь;
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
Если ТекСтрока.Количество = Выборка.КОформлениюОстаток Тогда
НайденаПодходящаяСтрока = Истина;
ЗаполнитьЗначенияСвойств(ТекСтрока, Выборка, "КодСтроки,ЗаказПереработчику,Распоряжение,Сделка,Назначение");
Прервать;
КонецЕсли;
КонецЦикла;
Если Не НайденаПодходящаяСтрока Тогда
НоваяСтрока = ТаблицаНераспределенныхТоваров.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
НоваяСтрока.Количество = НераспределенноеКоличество;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ТаблицаНераспределенныхТоваров.Количество() > 0 Тогда
Для Каждого НераспределеннаяСтрока Из ТаблицаНераспределенныхТоваров Цикл
СтруктураПоиска = Новый Структура();
СтруктураПоиска.Вставить("КодСтроки", 0);
СтруктураПоиска.Вставить("ЗаказПереработчику", Документы.ЗаказПереработчику.ПустаяСсылка());
СтруктураПоиска.Вставить("Номенклатура", НераспределеннаяСтрока.Номенклатура);
СтруктураПоиска.Вставить("Характеристика", НераспределеннаяСтрока.Характеристика);
СтруктураПоиска.Вставить("Склад", НераспределеннаяСтрока.Склад);
СтруктураПоиска.Вставить("Назначение", НераспределеннаяСтрока.Назначение);
ТабличнаяЧасть = ?(НераспределеннаяСтрока.ВозвратныйОтход, Объект.ВозвратныеОтходы, Объект.Товары);
СтрокиТовары = ТабличнаяЧасть.НайтиСтроки(СтруктураПоиска);
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТовары Из СтрокиТовары Цикл
Если СтрокаТовары.Количество = НераспределеннаяСтрока.Количество Тогда
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, "КодСтроки,ЗаказПереработчику,Распоряжение,Сделка,Назначение");
НераспределеннаяСтрока.Количество = 0;
ИначеЕсли СтрокаТовары.Количество > НераспределеннаяСтрока.Количество Тогда
Разница = СтрокаТовары.Количество - НераспределеннаяСтрока.Количество;
НоваяСтрокаТовары = ТабличнаяЧасть.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаТовары, СтрокаТовары);
НоваяСтрокаТовары.Количество = Разница;
СтрокиТовары.Добавить(НоваяСтрокаТовары);
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, "КодСтроки,ЗаказПереработчику,Распоряжение,Сделка,Назначение,Количество");
НераспределеннаяСтрока.Количество = 0;
ОбрабатываемыеСтроки.Добавить(НоваяСтрокаТовары);
ОбрабатываемыеСтроки.Добавить(СтрокаТовары);
ИначеЕсли СтрокаТовары.Количество < НераспределеннаяСтрока.Количество Тогда
Разница = НераспределеннаяСтрока.Количество - СтрокаТовары.Количество;
ЗаполнитьЗначенияСвойств(СтрокаТовары, НераспределеннаяСтрока, "КодСтроки,ЗаказПереработчику,Распоряжение,Сделка,Назначение");
НераспределеннаяСтрока.Количество = Разница;
КонецЕсли;
Если НераспределеннаяСтрока.Количество = 0 Тогда
Прервать;
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТабличнаяЧасть);
КонецЦикла;
КонецЕсли;
ОбновитьОтклоненияОтЗаказа();
СоответствиеРеквизитов = Новый Соответствие;
СоответствиеРеквизитов.Вставить("ЗаказПереработчику","ЗаказПереработчику");
СоответствиеРеквизитов.Вставить("Распоряжение","Распоряжение");
ЗаказыСервер.ЗаполнитьРеквизитыШапкиПоТабличнымЧастям(СоответствиеРеквизитов, "Товары,ВозвратныеОтходы", Объект);
Возврат Истина;
КонецФункции
&НаСервере
Процедура ОтвязатьСтрокиОтЗаказов()
Для Каждого ТекСтрока Из Объект.Товары Цикл
ТекСтрока.КодСтроки = 0;
ТекСтрока.ЗаказПереработчику = Документы.ЗаказПереработчику.ПустаяСсылка();
ТекСтрока.Распоряжение = Неопределено;
Если Не Объект.УчетСырьяПоНазначениям Тогда
ТекСтрока.Назначение = Неопределено;
КонецЕсли;
КонецЦикла;
Для Каждого ТекСтрока Из Объект.ВозвратныеОтходы Цикл
ТекСтрока.КодСтроки = 0;
ТекСтрока.ЗаказПереработчику = Документы.ЗаказПереработчику.ПустаяСсылка();
ТекСтрока.Распоряжение = Неопределено;
Если Не Объект.УчетСырьяПоНазначениям Тогда
ТекСтрока.Назначение = Неопределено;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьРаспоряжение(ИмяТЧ)
Элемент = Элементы[ИмяТЧ];
ТекущаяСтрока = Элемент.ТекущаяСтрока;
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("Контрагент", Объект.Контрагент);
ПараметрыФормы.Вставить("Договор", Объект.Договор);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ПараметрыФормы.Вставить("Партнер", Объект.Партнер);
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("Регистратор", Объект.Ссылка);
ПараметрыФормы.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
ДополнительныеПараметры = Новый Структура("ТекущаяСтрока,ИмяТЧ", ТекущаяСтрока,ИмяТЧ);
ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьРаспоряжениеЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму("Документ.ПоступлениеОтПереработчика.Форма.ФормаВыбораРаспоряжения", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьРаспоряжениеЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект[ДополнительныеПараметры.ИмяТЧ].НайтиПоИдентификатору(ДополнительныеПараметры.ТекущаяСтрока);
ТекущиеДанные.ЗаказПереработчику = РезультатЗакрытия.ЗаказПереработчику;
ТекущиеДанные.Распоряжение = РезультатЗакрытия.Распоряжение;
Если ЗначениеЗаполнено(ТекущиеДанные.ЗаказПереработчику) Тогда
ТекущиеДанные.Сделка = ПолучитьСделкуПоЗаказуПоставщику(ТекущиеДанные.ЗаказПереработчику);
Иначе
ТекущиеДанные.Сделка = ПредопределенноеЗначение("Справочник.СделкиСКлиентами.ПустаяСсылка");
КонецЕсли;
ВыбратьРаспоряжениеЗавершениеНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВыбратьРаспоряжениеЗавершениеНаСервере()
СоответствиеРеквизитов = Новый Соответствие;
СоответствиеРеквизитов.Вставить("ЗаказПереработчику","ЗаказПереработчику");
СоответствиеРеквизитов.Вставить("Распоряжение","Распоряжение");
ЗаказыСервер.ЗаполнитьРеквизитыШапкиПоТабличнымЧастям(СоответствиеРеквизитов, "Товары,ВозвратныеОтходы", Объект);
ОбновитьИнформациюПоЗаказам();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьКомандВводНаОсновании()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтаФорма, Объект);
КонецПроцедуры
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область КонтрольНесогласованныхИзменений
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент)
Если Элемент.Имя = "Партнер" Тогда
ПартнерПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Договор" Тогда
ДоговорПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Организация" Тогда
ОрганизацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Контрагент" Тогда
КонтрагентПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Склад" Тогда
СкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Дата" Тогда
ДатаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПоступлениеПоЗаказу" Тогда
ПоступлениеПоЗаказамПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПоступлениеПоЗаказам" Тогда
ПоступлениеПоЗаказамПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНоменклатура" Тогда
ТоварыНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыХарактеристика" Тогда
ТоварыХарактеристикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыНазначение" Тогда
ТоварыНазначениеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСерия" Тогда
ТоварыСерияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыКоличествоУпаковок" Тогда
ТоварыКоличествоУпаковокПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыУпаковка" Тогда
ТоварыУпаковкаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыЦена" Тогда
ТоварыЦенаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСумма" Тогда
ТоварыСуммаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыСклад" Тогда
ТоварыСкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТоварыЗаказПереработчику" Тогда
ТоварыЗаказПереработчикуПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвратныеОтходыНоменклатура" Тогда
ВозвратныеОтходыНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвратныеОтходыСерия" Тогда
ВозвратныеОтходыСерияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвратныеОтходыКоличествоУпаковок" Тогда
ВозвратныеОтходыКоличествоУпаковокПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвратныеОтходыУпаковка" Тогда
ВозвратныеОтходыУпаковкаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвратныеОтходыХарактеристика" Тогда
ВозвратныеОтходыХарактеристикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвратныеОтходыСклад" Тогда
ВозвратныеОтходыСкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвратныеОтходыЦена" Тогда
ВозвратныеОтходыЦенаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвратныеОтходыСумма" Тогда
ВозвратныеОтходыСуммаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВозвратныеОтходыЗаказПереработчику" Тогда
ВозвратныеОтходыЗаказПереработчикуПриИзменении(Элемент);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда)
Если Команда.Имя = "ОтвязатьОтЗаказа" Тогда
ОтвязатьОтЗаказа(Команда);
ИначеЕсли Команда.Имя = "ПоискПоШтрихкоду" Тогда
ПоискПоШтрихкодуВыполнить(Команда);
ИначеЕсли Команда.Имя = "ПолучитьВес" Тогда
ПолучитьВес(Команда);
ИначеЕсли Команда.Имя = "ЗагрузитьДанныеИзТСД" Тогда
ЗагрузитьДанныеИзТСД(Команда);
ИначеЕсли Команда.Имя = "ПроверитьКоличествоВДокументе" Тогда
ПроверитьКоличествоВДокументе(Команда);
ИначеЕсли Команда.Имя = "ПодобратьТоварыПоЗаказамОрдерам" Тогда
ПодобратьТоварыПоЗаказамОрдерам(Команда);
ИначеЕсли Команда.Имя = "РазбитьСтроку" Тогда
РазбитьСтроку(Команда);
ИначеЕсли Команда.Имя = "ПодобратьТовары" Тогда
ПодобратьТовары(Команда);
ИначеЕсли Команда.Имя = "ЗаполнитьСкладВВыделенныхСтроках" Тогда
ЗаполнитьСкладВВыделенныхСтроках(Команда);
ИначеЕсли Команда.Имя = "ВозвратныеОтходыОтвязатьОтЗаказа" Тогда
ВозвратныеОтходыОтвязатьОтЗаказа(Команда);
ИначеЕсли Команда.Имя = "ВозвратныеОтходыПоискПоШтрихкоду" Тогда
ВозвратныеОтходыПоискПоШтрихкодуВыполнить(Команда);
ИначеЕсли Команда.Имя = "ВозвратныеОтходыПолучитьВес" Тогда
ВозвратныеОтходыПолучитьВес(Команда);
ИначеЕсли Команда.Имя = "ВозвратныеОтходыЗагрузитьДанныеИзТСД" Тогда
ВозвратныеОтходыЗагрузитьДанныеИзТСД(Команда);
ИначеЕсли Команда.Имя = "ВозвратныеОтходыПроверитьКоличествоВДокументе" Тогда
ВозвратныеОтходыПроверитьКоличествоВДокументе(Команда);
ИначеЕсли Команда.Имя = "ВозвратныеОтходыПодобратьТоварыПоЗаказамОрдерам" Тогда
ВозвратныеОтходыПодобратьТоварыПоЗаказамОрдерам(Команда);
ИначеЕсли Команда.Имя = "ВозвратныеОтходыРазбитьСтроку" Тогда
ВозвратныеОтходыРазбитьСтроку(Команда);
ИначеЕсли Команда.Имя = "ВозвратныеОтходыПодобратьТовары" Тогда
ВозвратныеОтходыПодобратьТовары(Команда);
ИначеЕсли Команда.Имя = "ВозвратныеОтходыЗаполнитьСкладВВыделенныхСтроках" Тогда
ВозвратныеОтходыЗаполнитьСкладВВыделенныхСтроках(Команда);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ)
Если Элемент.Имя = "Товары" Тогда
ТоварыПередНачаломИзменения(Элемент, Отказ);
ИначеЕсли Элемент.Имя = "ВозвратныеОтходы" Тогда
ВозвратныеОтходыПередНачаломИзменения(Элемент, Отказ);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ)
Если Элемент.Имя = "Товары" Тогда
ТоварыПередУдалением(Элемент, Отказ);
ИначеЕсли Элемент.Имя = "ВозвратныеОтходы" Тогда
ВозвратныеОтходыПередУдалением(Элемент, Отказ);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Функция ВыполнитьПроверкиПередИзменениемСтатуса()
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
ОбщегоНазначенияУТКлиент.ВернутьПредыдущееЗначениеРеквизита(ЭтаФорма, Элемент);
Возврат;
Иначе
ОбщегоНазначенияУТКлиент.СохранитьЗначениеРеквизита(ЭтаФорма, Элемент);
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Нажатие_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Нажатие.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если СтруктураДействийКонтрольНеСогласованныхИзменений = Неопределено Тогда
Возврат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтруктураДействийКонтрольНеСогласованныхИзменений.ЗначенияРеквизитов[Элемент.Имя], Элемент.ТекущиеДанные);
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломИзменения.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередУдалением_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередУдалением.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломДобавления_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ, Копирование, Родитель, Группа)
Если Не ВыполнитьПроверкиПередИзменениемСтатуса() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломДобавления.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса()
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбщегоНазначенияУТКлиент.ПослеИзмененияРеквизитаЗависящегоОтСтатуса(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере(ИмяТЧ)
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект[ИмяТЧ], Элементы[ИмяТЧ].ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена(ИмяТЧ)
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,Цена,Склад,НомерПаспорта";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, СкладГруппа));
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
Если ИмяТЧ = "ВозвратныеОтходы" Тогда
СтруктураДействий.Вставить("ПересчитатьСумму");
КонецЕсли;
ТаблицаОбъекта = Объект[ИмяТЧ];
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = ТаблицаОбъекта.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
Если Объект.ПоступлениеПоЗаказам Тогда
ТекущаяСтрока.РасхождениеЗаказ = 1;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТаблицаОбъекта,
КэшированныеЗначения);
ПараметрыЗаполненияХарактеристик = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", ПараметрыЗаполненияХарактеристик);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(ТаблицаОбъекта, СтруктураДействий);
ПриИзмененииСкладаВТабличнойЧастиСервер();
ЗаполнитьСтатусыУказанияСерийСервер(ИмяТЧ);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
МассивЭлементов.Добавить("ВозвратныеОтходыВставитьСтроки");
МассивЭлементов.Добавить("ВозвратныеОтходыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
МассивЭлементов.Добавить("ВозвратныеОтходыВставитьСтроки");
МассивЭлементов.Добавить("ВозвратныеОтходыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьВозвратныхОтходов()
ПродукцияИОтходыВОднойТЧ = Документы.ПоступлениеОтПереработчика.ПродукцияИОтходыВОднойТЧ(Объект);
Элементы.ВозвратныеОтходы.Видимость = НЕ ПродукцияИОтходыВОднойТЧ;
Элементы.СтоимостьВозвратныхОтходов.Видимость = НЕ ПродукцияИОтходыВОднойТЧ;
Элементы.СуммаВсегоВозвратныхОтходовВалюта.Видимость = НЕ ПродукцияИОтходыВОднойТЧ;
Элементы.КартинкаНесколькоСкладов2.Видимость = НЕ ПродукцияИОтходыВОднойТЧ;
Элементы.НадписьНесколькоСкладов1.Видимость = НЕ ПродукцияИОтходыВОднойТЧ;
КонецПроцедуры
#КонецОбласти
#КонецОбласти