#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
Если Не СкладыСервер.ИспользоватьСтатусыОрдеров(Объект.Склад,Истина,Ложь) Тогда
Объект.Статус = Перечисления.СтатусыПриходныхОрдеров.Принят;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
Иначе
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаТовары;
КонецЕсли;
ОбновитьАвтоотметкуНезаполненного(Объект.Статус, Элементы.Товары);
ЕстьПравоРедактирования = Ложь;
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(СписокУпаковок, "Владелец", Справочники.Номенклатура.ПустаяСсылка(), ВидСравненияКомпоновкиДанных.Равно,,Истина);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(СписокШтрихКодов, "Номенклатура", Справочники.Номенклатура.ПустаяСсылка(), ВидСравненияКомпоновкиДанных.Равно,,Истина);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(СписокШтрихКодов, "Характеристика",Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка(), ВидСравненияКомпоновкиДанных.Равно,,Истина);
НаборУпаковокИндивидуальный = Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры;
ЕдиницаИзмеренияВеса = Константы.ЕдиницаИзмеренияВеса.Получить();
ЕдиницаИзмеренияОбъема = Константы.ЕдиницаИзмеренияОбъема.Получить();
ЕдиницаИзмеренияЛинейныхРазмеров = Константы.ЕдиницаИзмеренияДлины.Получить();
ЗаголовокКолонки = НСтр("ru = 'Объем, (%ЕдиницаИзмеренияОбъема%)'");
ЗаголовокКолонки = СтрЗаменить(ЗаголовокКолонки, "%ЕдиницаИзмеренияОбъема%",ЕдиницаИзмеренияОбъема);
Элементы.СписокУпаковокОбъем.Заголовок = ЗаголовокКолонки;
ЗаголовокКолонки = НСтр("ru = 'Вес, (%ЕдиницаИзмеренияВеса%)'");
ЗаголовокКолонки = СтрЗаменить(ЗаголовокКолонки, "%ЕдиницаИзмеренияВеса%",ЕдиницаИзмеренияВеса);
Элементы.СписокУпаковокВес.Заголовок = ЗаголовокКолонки;
ЗаголовокКолонки = НСтр("ru = 'Глубина, (%ЕдиницаИзмеренияЛинейныхРазмеров%)'");
ЗаголовокКолонки = СтрЗаменить(ЗаголовокКолонки, "%ЕдиницаИзмеренияЛинейныхРазмеров%",ЕдиницаИзмеренияЛинейныхРазмеров);
Элементы.СписокУпаковокГлубина.Заголовок = ЗаголовокКолонки;
ЗаголовокКолонки = НСтр("ru = 'Высота, (%ЕдиницаИзмеренияЛинейныхРазмеров%)'");
ЗаголовокКолонки = СтрЗаменить(ЗаголовокКолонки, "%ЕдиницаИзмеренияЛинейныхРазмеров%",ЕдиницаИзмеренияЛинейныхРазмеров);
Элементы.СписокУпаковокВысота.Заголовок = ЗаголовокКолонки;
ЗаголовокКолонки = НСтр("ru = 'Ширина, (%ЕдиницаИзмеренияЛинейныхРазмеров%)'");
ЗаголовокКолонки = СтрЗаменить(ЗаголовокКолонки, "%ЕдиницаИзмеренияЛинейныхРазмеров%",ЕдиницаИзмеренияЛинейныхРазмеров);
Элементы.СписокУпаковокШирина.Заголовок = ЗаголовокКолонки;
НастроитьОтображениеПанелиДополнительнойИнформации();
УстановитьДоступностьЭлементовФормы();
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
Элементы.ДекорацияСостояниеЭДО.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ПриходныйОрдерНаТоварыЛокализация.УстановитьПризнакИспользованияМаркируемойПродукции(ЭтаФорма);
УстановитьВидимостьЭлементовУпаковкиПриМаркировке();
ПриходныйОрдерНаТоварыЛокализация.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриходныйОрдерНаТоварыЛокализация.УстановитьПризнакИспользованияМаркируемойПродукции(ЭтаФорма);
УстановитьВидимостьЭлементовУпаковкиПриМаркировке();
ПриЧтенииСозданииНаСервере();
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаДокумента();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.ДокументСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаДокумента(ПараметрыЭДОПриСоздании);
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
НастроитьОтображениеПанелиДополнительнойИнформации();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
ПараметрыОповещения.Форма = ЭтотОбъект;
ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
Если Врег(ИмяСобытия) = Врег("Запись_Номенклатура") Тогда
Если Элементы.Товары.ТекущиеДанные <> Неопределено
И Элементы.Товары.ТекущиеДанные.Номенклатура = Источник
И КэшированныеЗначения <> Неопределено Тогда
НоменклатураПриИзмененииСервер(КэшированныеЗначения);
КонецЕсли;
КонецЕсли;
Если ИмяСобытия = "ПроверитьКоличествоВДокументе"
И ТипЗнч(Источник) = Тип("ФормаКлиентскогоПриложения")
И Источник.УникальныйИдентификатор = УникальныйИдентификатор Тогда
ПроверитьКоличествоВДокументеКлиент();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(ВыбранноеЗначение.АдресМногооборотнойТарыВХранилище,КэшированныеЗначения);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
ИначеЕсли ИсточникВыбора.ИмяФормы = "Документ.ПриходныйОрдерНаТовары.Форма.ФормаВыбораДокументаОтгрузки" Тогда
Модифицированность = Истина;
Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") Тогда
ДобавитьСтрокиПоДокументамОтгрузки(ВыбранноеЗначение,КэшированныеЗначения);
Иначе
ТекущиеДанные.ДокументОтгрузки = ВыбранноеЗначение;
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.Номенклатура.Форма.ФормаВыбора" Тогда
ТекущиеДанные.Номенклатура = ВыбранноеЗначение;
НоменклатураПриИзмененииСервер(КэшированныеЗначения);
Элементы.Товары.ТекущийЭлемент = Элементы.ТоварыКоличествоУпаковок;
Элементы.Товары.ТекущийЭлемент = Элементы.ТоварыНоменклатура;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Документ.УпаковочныйЛист.Форма.ФормаВыбора" Тогда
ТекущиеДанные.УпаковочныйЛист = ВыбранноеЗначение;
УпаковочныйЛистПриИзмененииСервер(КэшированныеЗначения);
Элементы.Товары.ЗакончитьРедактированиеСтроки(Ложь);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Справочник.Назначения.Форма.ФормаВыбора" Тогда
Элементы.Товары.ТекущиеДанные.Назначение = ВыбранноеЗначение;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
Элементы.ГруппаИнформация.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);
ЗаполнитьСлужебныеРеквизитыТЧТовары();
УпаковочныеЛистыСервер.СформироватьНавигационнуюНадпись(ЭтаФорма,
Объект.Ссылка.Метаданные().ПредставлениеОбъекта);
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.ДокументСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриходныйОрдерНаТоварыЛокализация.УстановитьПризнакИспользованияМаркируемойПродукции(ЭтаФорма);
УстановитьВидимостьЭлементовУпаковкиПриМаркировке();
ОбеспечениеВДокументахСервер.ПроверитьЗапуститьФоновоеЗаданиеРаспределенияЗапасов();
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_ПриходныйОрдерНаТовары",ПараметрыЗаписи,Объект.Ссылка);
ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаДокумента(ЭтотОбъект, ПараметрыЗаписи);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
Отказ = Истина;
МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество",
Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение", ЭтотОбъект, ДополнительныеПараметры));
Возврат;
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение(Результат, ДополнительныеПараметры) Экспорт
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
Если ИспользоватьУпаковочныеЛисты
И Не Объект.РежимПросмотраПоТоварам Тогда
ДокументОбъект = РеквизитФормыВЗначение("Объект");
Если Не ДокументОбъект.ПроверитьЗаполнение() Тогда
Объект.РежимПросмотраПоТоварам = Истина;
РежимПросмотраПриИзмененииСервер();
Отказ = Истина;
КонецЕсли;
ПроверяемыеРеквизиты.Очистить();
КонецЕсли;
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ПомещениеПриИзменении(Элемент)
СкладПомещениеПриИзмененииСервер(Элемент.Имя);
Если ВозможноЗаполнениеСерийПоРаспоряжению Тогда
ТекстВопроса = НСтр("ru = 'Заполнить серии товаров по распоряжению?'");
Ответ = Неопределено;
ПоказатьВопрос(Новый ОписаниеОповещения("ПомещениеПриИзмененииЗавершение", ЭтотОбъект), ТекстВопроса,РежимДиалогаВопрос.ДаНет,,КодВозвратаДиалога.Да);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПомещениеПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
ЗаполнитьСерииПоРаспоряжениюСервер(КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
СкладПомещениеПриИзмененииСервер(Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
СтатусПриИзмененииСервер();
ОбновитьАвтоотметкуНезаполненного(Объект.Статус, Элементы.Товары);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ДатаПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НадписьНавигацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПриПереходеНаДругойУровеньСервер(НавигационнаяСсылка);
КонецПроцедуры
&НаКлиенте
Процедура РежимПросмотраПриИзменении(Элемент)
РежимПросмотраПриИзмененииСервер();
УпаковочныеЛистыКлиент.ОбновитьКешированныеЗначенияДляТЧСУпаковочнымиЛистами(Элементы.Товары, КэшированныеЗначения, ПараметрыУказанияСерий);
ОтобразитьСтраницуФильтраСнятьОтборПриНеобходимости();
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияФильтрОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДекорацияФильтрОбработкаНавигационнойСсылкиСервер(НавигационнаяСсылка);
КонецПроцедуры
&НаКлиенте
Процедура РаспоряжениеПредставлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "ОткрытьРаспоряжение" Тогда
ПоказатьЗначение(, Объект.Распоряжение)
Иначе
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ПриходныйОрдерНаТовары.Форма.ВыборРаспоряжения");
ПараметрыФормыВыбораРаспоряжения = Новый Структура;
ПараметрыФормыВыбораРаспоряжения.Вставить("Склад", Объект.Склад);
ПараметрыФормыВыбораРаспоряжения.Вставить("Отправитель", Объект.Отправитель);
ПараметрыФормыВыбораРаспоряжения.Вставить("ХозяйственнаяОперация", Объект.ХозяйственнаяОперация);
ОписаниеОповещения = Новый ОписаниеОповещения("РаспоряжениеВыборКлиент", ЭтотОбъект);
ОткрытьФорму("Документ.ПриходныйОрдерНаТовары.Форма.ВыборРаспоряжения",
ПараметрыФормыВыбораРаспоряжения,
ЭтотОбъект,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияЭДОНажатие(Элемент, СтандартнаяОбработка)
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаДокумента(ЭтотОбъект, СтандартнаяОбработка);
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ЭтотОбъект.ПараметрыСвойств.Свойство(ТекущаяСтраница.Имя)
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
НоменклатураПриИзмененииСервер(КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковочныйЛистПриИзменении(Элемент)
УпаковочныйЛистПриИзмененииСервер(КэшированныеЗначения);
Элементы.Товары.ЗакончитьРедактированиеСтроки(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура УпаковкаПриИзменении(Элемент)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
СтруктураДействий.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
СтруктураДействий.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
СтруктураДействий.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьВесОбъем");
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если Не ЗначениеЗаполнено(ТекущаяСтрока.УпаковочныйЛистРодитель) Тогда
ПересчитатьКоличествоМест();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВесПриИзменении(Элемент)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковокПоВесу");
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыОбъемПриИзменении(Элемент)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковокПоОбъему");
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура КоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если Не ЗначениеЗаполнено(ТекущаяСтрока.УпаковочныйЛистРодитель) Тогда
ПересчитатьКоличествоМест();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
УпаковочныеЛистыКлиент.ПриНачалеРедактированияТЧСУпаковочнымиЛистами(ЭтаФорма, КэшированныеЗначения, НоваяСтрока);
Если Копирование Тогда
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если Не ЗначениеЗаполнено(ТекущаяСтрока.УпаковочныйЛистРодитель) Тогда
ПересчитатьКоличествоМест();
КонецЕсли;
КонецЕсли;
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(
Элемент,КэшированныеЗначения,ПараметрыУказанияСерий,Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
ТоварыПриОкончанииРедактированияСервер(НоваяСтрока И ОтменаРедактирования);
УпаковочныеЛистыКлиент.ПриОкончанииРедактированияТЧСУпаковочнымиЛистами(ЭтаФорма, НоваяСтрока, ОтменаРедактирования);
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элемент, КэшированныеЗначения, ПараметрыУказанияСерий) Тогда
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Элементы.Товары.ТекущаяСтрока, КэшированныеЗначения);
УпаковочныеЛистыКлиент.ОбновитьКешированныеЗначенияДляТЧСУпаковочнымиЛистами(Элемент,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецЕсли;
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
Если Не ОтменаРедактирования
И Элементы.Товары.ТекущиеДанные <> Неопределено
И Не Элементы.Товары.ТекущиеДанные.ЭтоУпаковочныйЛист Тогда
Если Не ЗначениеЗаполнено(ТекущиеДанные.Штрихкод) Тогда
ТекущиеДанные.ШтрихкодНеОпределен = 0;
КонецЕсли;
ТребуетсяОбработка = ТекущиеДанные.ТребуетсяОбработка;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТовМестаТребуетсяОбработка");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
Если ТребуетсяОбработка <> ТекущиеДанные.ТребуетсяОбработка Тогда
ОтобразитьСтраницуФильтраСнятьОтборПриНеобходимости();
КонецЕсли;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
СобытияФормКлиент.ПриИзмененииЭлемента(ЭтотОбъект, Элементы.Товары, ДополнительныеПараметры);
Если ДополнительныеПараметры.Свойство("ТребуетсяСерверныйВызов") Тогда
ПодключитьОбработчикОжидания("ТоварыПриОкончанииРедактированияДляСерверногоВызова", 0.5, Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ТоварыПриОкончанииРедактированияСервер(ЭтоОтменаНовойСтроки)
ПриходныйОрдерНаТоварыЛокализация.УстановитьПризнакИспользованияМаркируемойПродукции(ЭтаФорма);
УстановитьВидимостьЭлементовУпаковкиПриМаркировке();
Если ЭтоОтменаНовойСтроки Тогда
ПересчитатьКоличествоМест();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
УпаковочныеЛистыКлиент.ПередУдалениемСтрокТЧСУпаковочнымиЛистами(Элементы.Товары, КэшированныеЗначения, ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
ТоварыПослеУдаленияСервер(КэшированныеЗначения);
УпаковочныеЛистыКлиент.ОбновитьКешированныеЗначенияДляТЧСУпаковочнымиЛистами(Элементы.Товары, КэшированныеЗначения, ПараметрыУказанияСерий);
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбновитьАвтоотметкуНезаполненного(Объект.Статус, Элементы.Товары);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если УпаковочныеЛистыКлиент.ПроверитьПодготовитьПереходВУпаковочныйЛистПриВыборе(Элементы.Товары, Поле.Имя) Тогда
ПриПереходеНаДругойУровеньСервер(Элементы.Товары.ТекущиеДанные.УпаковочныйЛист);
ИначеЕсли Поле = Элементы.ТоварыСтатусУказанияСерий Тогда
ОткрытьПодборСерий();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыДокументОтгрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФормуВыбораДокументаОтгрузки(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
УпаковочныеЛистыКлиент.НачалоВыбораТоварногоМеста(ЭтаФорма, Элемент, СтандартнаяОбработка, Объект.РежимПросмотраПоТоварам);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
УпаковочныеЛистыКлиент.ПередНачаломДобавленияВТЧСУпаковочнымиЛистами(Элементы.Товары, Отказ, Копирование, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковочныйЛистРодительОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПоказатьЗначение(Неопределено, Элементы.Товары.ТекущиеДанные.УпаковочныйЛистРодитель);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковочныйЛистРодительОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
Если Не СкрытьДополнительнуюИнформацию Тогда
ПодключитьОбработчикОжидания("ТоварыПриАктивизацииСтрокиНаКлиенте", 0.2, Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьКачествоНоменклатуры(Команда)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ОчиститьСообщения();
Если ТекущаяСтрока = Неопределено Тогда
ТекстСообщения = НСтр("ru='Выберите строку табличной части'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
Возврат
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", Новый Структура("Номенклатура", "ТипИзмеряемойВеличины"));
СтруктураДействий.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
СтруктураДействий.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
СтруктураДействий.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
СтруктураДействий.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
СтруктураДействий.Вставить("ПересчитатьВесОбъем");
СтруктураДействий.Вставить("ПроверитьЗаполнитьНазначение");
Если ЗначениеЗаполнено(ТекущаяСтрока.Характеристика) Тогда
СтруктураДействий.Вставить("ЗаполнитьХарактеристикуНекачественногоТовара", ТекущаяСтрока.Характеристика);
КонецЕсли;
Если ЗначениеЗаполнено(ТекущаяСтрока.Упаковка) Тогда
СтруктураДействий.Вставить("ЗаполнитьУпаковкуНекачественногоТовара", ТекущаяСтрока.Упаковка);
КонецЕсли;
УпаковочныеЛистыКлиент.ОбновитьКешированныеЗначенияДляТЧСУпаковочнымиЛистами(Элементы.Товары,КэшированныеЗначения,ПараметрыУказанияСерий);
Оповещение = Новый ОписаниеОповещения("ИзменитьКачествоНоменклатурыЗавершение", ЭтотОбъект,
Новый Структура("ТекущаяСтрока", ТекущаяСтрока));
СкладыКлиент.ИзменитьКачество(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьКачествоНоменклатурыЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если НоменклатураКлиент.НеобходимоОбновитьСтатусыСерий(Элементы.Товары,
КэшированныеЗначения, ПараметрыУказанияСерий) Тогда
ТекущаяСтрокаИдентификатор = ДополнительныеПараметры.ТекущаяСтрока.ПолучитьИдентификатор();
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
УпаковочныеЛистыКлиент.ОбновитьКешированныеЗначенияДляТЧСУпаковочнымиЛистами(Элементы.Товары,КэшированныеЗначения,ПараметрыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьТолькоНоменклатуру(Команда)
Автотест_ЗаполнитьПоРаспоряжению("Номенклатура");
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьНоменклатуруИКоличество(Команда)
Автотест_ЗаполнитьПоРаспоряжению("НоменклатураКоличество");
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьТолькоКоличество(Команда)
Автотест_ЗаполнитьПоРаспоряжению("Количество");
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьВозвращаемоеКоличество(Команда)
ЗаполнитьВозвращаемоеКоличествоНаСервере(КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличество(Команда)
ПроверитьКоличествоВДокументеКлиент();
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект);
УпаковочныеЛистыКлиент.РазбитьСтрокуТЧСУпаковочнымиЛистами(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ИдентификаторТекущейСтроки = Элементы.Товары.ТекущаяСтрока;
Если НоваяСтрока <> Неопределено Тогда
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, СтруктураДействий);
ИдентификаторНовойСтроки = НоваяСтрока.ПолучитьИдентификатор();
ОбработатьИПеренумероватьСтрокиТЧ(ИдентификаторНовойСтроки, ИдентификаторТекущейСтроки, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВес(Команда)
ТекущаяСтрока = МенеджерОборудованияУТКлиент.ТекущаяСтрока(ЭтаФорма);
Если ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
МенеджерОборудованияКлиент.НачатьПолученияВесаСЭлектронныхВесов(
Новый ОписаниеОповещения("ПолучитьВесЗавершение", ЭтотОбъект, ТекущаяСтрока),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьВесЗавершение(РезультатВыполнения, ТекущаяСтрока) Экспорт
Если РезультатВыполнения.Результат Тогда
ТекущаяСтрока.КоличествоУпаковок = РезультатВыполнения.Вес;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(РезультатВыполнения, Параметры) Экспорт
Если РезультатВыполнения.Результат Тогда
ОбработатьШтрихкоды(РезультатВыполнения.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(РезультатВыполнения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерии(Команда)
ОткрытьПодборСерий();
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(
ЭтаФорма,
"Товары",
"Номенклатура,Характеристика,Количество");
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайла(Команда)
ПараметрыЗагрузки = РаботаСТабличнымиЧастямиКлиент.ПараметрыЗагрузкиНоменклатуры();
ПараметрыЗагрузки.ЗагружатьУпаковочныеЛисты = Истина;
ПараметрыЗагрузки.ПараметрыОтбора.Вставить("ТипНоменклатуры",
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
Оповещение = Новый ОписаниеОповещения("ЗагрузитьИзВнешнегоФайлаЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.ПоказатьФормуЗагрузкиНоменклатуры(ПараметрыЗагрузки, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзВнешнегоФайлаЗавершение(АдресЗагруженныхДанных, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресЗагруженныхДанных) Тогда
ПолучитьЗагруженныеТоварыИзХранилища(АдресЗагруженныхДанных, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзДокументовОтгрузки(Команда)
ОткрытьФормуВыбораДокументаОтгрузки();
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура НаУровеньВверх(Команда)
НаУровеньВверхСервер();
КонецПроцедуры
&НаКлиенте
Процедура Распаковать(Команда)
УпаковочныеЛистыКлиент.РаспаковатьУпаковочныйЛист(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСерииПоРаспоряжению(Команда)
ОчиститьСообщения();
Заполнены = ЗаполнитьСерииПоРаспоряжениюСервер(КэшированныеЗначения);
Если Заполнены Тогда
ТекстОповещения = НСтр("ru='Серии заполнены по данным распоряжения на поступление.'");
ПоказатьОповещениеПользователя(ТекстОповещения, , , БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СортироватьПоВозрастанию(Команда)
ТекущаяКолонка = Элементы.Товары.ТекущийЭлемент;
Если ТекущаяКолонка <> Неопределено Тогда
СортироватьСтроки(ТекущаяКолонка.Имя, "ВОЗР");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СортироватьПоУбыванию(Команда)
ТекущаяКолонка = Элементы.Товары.ТекущийЭлемент;
Если ТекущаяКолонка <> Неопределено Тогда
СортироватьСтроки(ТекущаяКолонка.Имя, "УБЫВ");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Упаковка");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения(Истина, Истина);
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтотОбъект, ПараметрыУсловногоОформления);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковка.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьАдресноеХранение");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Товар;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.СтатусыПриходныхОрдеров.КПоступлению);
СписокЗначений.Добавить(Перечисления.СтатусыПриходныхОрдеров.ВРаботе);
СписокЗначений.Добавить(Перечисления.СтатусыПриходныхОрдеров.ТребуетсяОбработка);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТипИзмеряемойВеличины");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыИзмеряемыхВеличин.КоличествоШтук;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыКоличествоУпаковок.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.СтатусыПриходныхОрдеров.КПоступлению);
СписокЗначений.Добавить(Перечисления.СтатусыПриходныхОрдеров.ВРаботе);
СписокЗначений.Добавить(Перечисления.СтатусыПриходныхОрдеров.ТребуетсяОбработка);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатура.Имя);
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДопИнфоНоменклатура.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.СтатусыПриходныхОрдеров.КПоступлению);
СписокЗначений.Добавить(Перечисления.СтатусыПриходныхОрдеров.ВРаботе);
СписокЗначений.Добавить(Перечисления.СтатусыПриходныхОрдеров.ТребуетсяОбработка);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Штрихкод");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.УпаковочныйЛистРодитель");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма,
"СерииВсегдаВТЧТовары");
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма,
Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.НаборУпаковок.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборУпаковок");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(WindowsШрифты.DefaultGUIFont, , , Истина, Ложь, Ложь, Ложь, ));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокШтрихКодовНоменклатураЕдиницаИзмерения.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СписокШтрихКодовУпаковка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокШтрихКодов.Упаковка");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НезаполненноеПолеТаблицы);
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = "СписокШтрихКодовНоменклатураЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "СписокШтрихКодов.Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтотОбъект, ПараметрыУсловногоОформления);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ШаблонЭтикетки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ШаблонЭтикетки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(WindowsШрифты.DefaultGUIFont, , , Истина, Ложь, Ложь, Ложь, ));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ШаблонЦенника.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ШаблонЦенника");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(WindowsШрифты.DefaultGUIFont, , , Истина, Ложь, Ложь, Ложь, ));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВесНоменклатуры.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВесБулево");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(WindowsШрифты.DefaultGUIFont, , , Истина, Ложь, Ложь, Ложь, ));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбъемНоменклатуры.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбъемБулево");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(WindowsШрифты.DefaultGUIFont, , , Истина, Ложь, Ложь, Ложь, ));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СкладскаяГруппаСтрока.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладскаяГруппаБулево");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(WindowsШрифты.DefaultGUIFont, , , Истина, Ложь, Ложь, Ложь, ));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.НаборУпаковок.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("НаборУпаковок");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(WindowsШрифты.DefaultGUIFont, , , Истина, Ложь, Ложь, Ложь, ));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДопИнфоУпаковочныйЛист.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДопИнфоНоменклатура.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Штрихкод");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ШтрихкодНеОпределен");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 1;
ГруппаОтбора2 = ГруппаОтбора1.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ГруппаОтбора3 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора3.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЭтоУпаковочныйЛист");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбора3.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.УпаковочныйЛист");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбора4 = ГруппаОтбора2.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора4.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбора4.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЭтоУпаковочныйЛист");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора4.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Номенклатура");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<неизвестный штрихкод>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыУпаковочныйЛист.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыНоменклатура.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДопИнфоУпаковочныйЛист.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДопИнфоНоменклатура.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ТребуетсяОбработка");
ОтборЭлемента.ПравоеЗначение = 1;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветОсобогоТекста);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыДокументОтгрузки.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ЭтоУпаковочныйЛист");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не используется>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыВес.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВесУпаковки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не используется>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыОбъем.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ОбъемУпаковки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<не используется>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕдиницаИзмеренияВеса.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ВесУпаковки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ТоварыЕдиницаИзмеренияОбъема.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.ОбъемУпаковки");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма);
УпаковочныеЛистыСервер.УстановитьУсловноеОформлениеСУчетомУпаковочныхЛистов(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
Если ЗначениеЗаполнено(Объект.Распоряжение) Тогда
ОбщегоНазначенияУТКлиентСервер.ДобавитьПараметрВыбора(Элементы.Склад, "Ссылка", Документы.ПриходныйОрдерНаТовары.ОрдерныеСклады(Объект));
КонецЕсли;
УстановитьПараметрыФункциональныхОпцийФормы(Новый Структура("Склад, Помещение",Объект.Склад, Объект.Помещение));
РозничныйВидЦены = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Склад, "РозничныйВидЦены");
УстановитьПривилегированныйРежим(Истина);
Если ЗначениеЗаполнено(Объект.Распоряжение) Тогда
ОрганизацияРаспоряжения = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Распоряжение, "Организация");
КонецЕсли;
УстановитьПривилегированныйРежим(Ложь);
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ПриходныйОрдерНаТовары));
УстановитьЗависимыеОтАдресногоХранения();
Элементы.ГруппаИнформация.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);
Элементы.Помещение.Видимость = СкладыСервер.ИспользоватьСкладскиеПомещения(Объект.Склад,Объект.Дата);
Если Объект.СкладскаяОперация = Перечисления.СкладскиеОперации.ВозвратНепринятыхТоваров
Или Объект.СкладскаяОперация = Перечисления.СкладскиеОперации.ВозвратНепринятыхТоваровУстарел Тогда
Элементы.ДатаВходящегоДокумента.Видимость = Ложь;
Элементы.НомерВходящегоДокумента.Видимость = Ложь;
Элементы.ЗаполнитьВозвращаемоеКоличество.Видимость = Истина;
Элементы.ЗаполнитьТолькоКоличество.Видимость = Ложь;
Элементы.ЗаполнитьТолькоНоменклатуру.Видимость = Ложь;
Элементы.ЗаполнитьНоменклатуруИКоличество.Видимость = Ложь;
Элементы.ТоварыЗаполнитьСерииПоРаспоряжению.Видимость = Ложь;
Элементы.ТоварыПроверитьКоличество.Видимость = Ложь;
Элементы.РаспоряжениеПредставление.Видимость = Ложь;
Иначе
Элементы.РаспоряжениеПредставление.Видимость = Истина;
Элементы.ТоварыДокументОтгрузки.Видимость = Ложь;
Элементы.ЗаполнитьВозвращаемоеКоличество.Видимость = Ложь;
Элементы.ТоварыДобавитьИзДокументовОтгрузки.Видимость = Ложь;
КонецЕсли;
ИспользоватьУпаковки = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры");
Элементы.СписокУпаковок.Видимость = ИспользоватьУпаковки;
Элементы.НаборУпаковок.Видимость = ИспользоватьУпаковки;
Элементы.СписокШтрихКодовСоздатьШтрихКод.Видимость = ПравоДоступа("Изменение", Метаданные.РегистрыСведений.ШтрихкодыНоменклатуры);
Элементы.СписокШтрихКодовПечать.Видимость = ПравоДоступа("Просмотр", Метаданные.Обработки.ПечатьЭтикетокИЦенников);
УпаковочныеЛистыСервер.ПриЧтенииСозданииФормыСУпаковочнымиЛистами(ЭтаФорма, Объект.Товары,
Объект.Ссылка.Метаданные().ПредставлениеОбъекта);
ЗаполнитьСлужебныеРеквизитыТЧТовары(Ложь);
ОтобразитьСтраницуФильтраСнятьОтборПриНеобходимости();
ВозможноЗаполнениеСерийПоРаспоряжению = Документы.ПриходныйОрдерНаТовары.ВозможноЗаполнениеСерийПоРаспоряжению(Объект, Ложь);
ПоказатьПредставлениеРаспоряжения(РаспоряжениеПредставление, Объект.Распоряжение);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтаФорма, ПараметрыУказанияСерий, Текст, ТекущиеДанные)Тогда
Если ТекущиеДанные = Неопределено Тогда
ТекущиеДанныеИдентификатор = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
Иначе
ТекущиеДанныеИдентификатор = ТекущиеДанные.ПолучитьИдентификатор();
КонецЕсли;
ПараметрыФормыУказанияСерий = ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор);
ЗначениеВозврата = Неопределено;
ОписаниеОповещения = Новый ОписаниеОповещения("ОткрытьПодборСерийЗавершение",
ЭтотОбъект,
Новый Структура("ПараметрыФормыУказанияСерий", ПараметрыФормыУказанияСерий));
ОткрытьФорму(ПараметрыФормыУказанияСерий.ИмяФормы,
ПараметрыФормыУказанияСерий,
ЭтаФорма
,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПараметрыФормыУказанияСерий = ДополнительныеПараметры.ПараметрыФормыУказанияСерий;
ЗначениеВозврата = Результат;
Если ЗначениеВозврата <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий);
КонецЕсли;
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура СкладПомещениеПриИзмененииСервер(ИмяЭлемента)
УстановитьПараметрыФункциональныхОпцийФормы(Новый Структура("Склад, Помещение",Объект.Склад, Объект.Помещение));
УстановитьЗависимыеОтАдресногоХранения();
РеквизитыСклада = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Склад, "РозничныйВидЦены,
|ИспользоватьСтатусыПриходныхОрдеров");
РозничныйВидЦены = РеквизитыСклада.РозничныйВидЦены;
ИспользоватьСтатусыПриходныхОрдеров = РеквизитыСклада.ИспользоватьСтатусыПриходныхОрдеров;
ИспользоватьСтатусыПриходныхОрдеров = ?(ЗначениеЗаполнено(ИспользоватьСтатусыПриходныхОрдеров),
ИспользоватьСтатусыПриходныхОрдеров, Ложь);
Если ИспользоватьСтатусыПриходныхОрдеров Тогда
Объект.Статус = Перечисления.СтатусыПриходныхОрдеров.КПоступлению;
Иначе
Объект.Статус = Перечисления.СтатусыПриходныхОрдеров.Принят;
КонецЕсли;
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ПриходныйОрдерНаТовары));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
Элементы.Помещение.Видимость = СкладыСервер.ИспользоватьСкладскиеПомещения(Объект.Склад,Объект.Дата);
КонецПроцедуры
&НаСервере
Процедура СтатусПриИзмененииСервер()
ОбновитьАвтоотметкуНезаполненного(Объект.Статус, Элементы.Товары);
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ПриходныйОрдерНаТовары));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
&НаСервере
Процедура ДатаПриИзмененииСервер()
УстановитьЗависимыеОтАдресногоХранения();
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
Элементы.Помещение.Видимость = СкладыСервер.ИспользоватьСкладскиеПомещения(Объект.Склад,Объект.Дата);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриОкончанииРедактированияДляСерверногоВызова()
ТоварыПриОкончанииРедактированияНаСервере();
КонецПроцедуры
&НаСервере
Процедура ТоварыПриОкончанииРедактированияНаСервере()
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеКлиент()
АдресХранилища = "";
ВыгруженаТолькоНеМаркируемаяПродукция = Ложь;
ОчиститьСообщения();
Если ПроверитьТоварыИПоместитьВоВременноеХранилище(АдресХранилища, ВыгруженаТолькоНеМаркируемаяПродукция) Тогда
Если ЕстьМаркируемаяПродукция Тогда
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресХранилища);
ПараметрыОткрытия.Вставить("ИмяТабличнойЧасти", "Товары");
ПараметрыОткрытия.Вставить("Ссылка", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ПревышениеКоличестваТоваровРазрешено", Истина);
ПараметрыОткрытия.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыОткрытия.Вставить("ВыводитьВесОбъем", Истина);
ПараметрыОткрытия.Вставить("ВыгруженаТолькоНеМаркируемаяПродукция", ВыгруженаТолькоНеМаркируемаяПродукция);
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьКоличествоВДокументеЗавершение", ЭтаФорма);
ОткрытьФорму("ОбщаяФорма.ПроверкаЗаполненияДокументов",
ПараметрыОткрытия,,,,, ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Иначе
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВоВременномХранилище", АдресХранилища);
ПараметрыОткрытия.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыОткрытия.Вставить("Склад", Объект.Склад);
ПараметрыОткрытия.Вставить("Помещение", Объект.Помещение);
ПараметрыОткрытия.Вставить("Статус", Объект.Статус);
ПараметрыОткрытия.Вставить("СкладскаяОперация", Объект.СкладскаяОперация);
ПараметрыОткрытия.Вставить("Распоряжение", Объект.Распоряжение);
ПараметрыОткрытия.Вставить("Ордер", Объект.Ссылка);
ПараметрыОткрытия.Вставить("УпаковочныйЛистРодитель", УпаковочныйЛистРодитель);
ПараметрыОткрытия.Вставить("ЕстьМаркируемаяПродукция", ЕстьМаркируемаяПродукция);
ОписаниеОповещения = Новый ОписаниеОповещения("ИзменитьТабличнуюЧастьПоРезультатамПроверки", ЭтаФорма);
ОткрытьФорму("Обработка.ПроверкаКоличестваТоваровВПриходномОрдере.Форма.Форма",
ПараметрыОткрытия, ЭтаФорма, УникальныйИдентификатор,,,ОписаниеОповещения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьТабличнуюЧастьПоРезультатамПроверки(Результат, Параметры) Экспорт
Если Не ЗначениеЗаполнено(Результат) Тогда
Возврат;
КонецЕсли;
ИзменитьТабличнуюЧастьПоРезультатамПроверкиСервер(Результат, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьКоличествоВДокументеЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВозвращаемыеПараметры = Результат;
Если ВозвращаемыеПараметры <> Неопределено Тогда
ИзменитьТабличнуюЧастьПоРезультатамПроверкиДоп(ВозвращаемыеПараметры, ?(КэшированныеЗначения = Неопределено, ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения(), КэшированныеЗначения));
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ИзменитьТабличнуюЧастьПоРезультатамПроверкиДоп(ВозвращаемыеПараметры, КэшированныеЗначения)
Модифицированность = Истина;
ТаблицаТовары = ПолучитьИзВременногоХранилища(ВозвращаемыеПараметры.Товары);
УдаляемыеСтроки = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив;
ОбрабатываемыеСтрокиПризнак = Новый Массив;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, СтруктураДействий);
Для Каждого СтрокаИсточник Из ТаблицаТовары Цикл
Отбор = Новый Структура("Номенклатура, Характеристика, Серия, СтатусУказанияСерий, Упаковка");
ЗаполнитьЗначенияСвойств(Отбор, СтрокаИсточник);
НайденныеСтроки = Объект.Товары.НайтиСтроки(Отбор);
Если НайденныеСтроки.Количество() = 0 Тогда
СтрокаТЧ = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаИсточник);
ОбрабатываемыеСтрокиПризнак.Добавить(СтрокаТЧ);
Иначе
Для Каждого СтрокаТЧ Из НайденныеСтроки Цикл
Если СтрокаИсточник.КоличествоУпаковок = 0 Тогда
Прервать;
КонецЕсли;
Если СтрокаИсточник.КоличествоУпаковок >= 0 Тогда
СтрокаТЧ.КоличествоУпаковок = СтрокаТЧ.КоличествоУпаковок + СтрокаИсточник.КоличествоУпаковок;
СтрокаИсточник.КоличествоУпаковок = 0;
Иначе
КоличествоКСписанию = -СтрокаИсточник.КоличествоУпаковок;
КоличествоВСтроке = СтрокаТЧ.КоличествоУпаковок;
Если КоличествоКСписанию > КоличествоВСтроке Тогда
СтрокаИсточник.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
СтрокаТЧ.КоличествоУпаковок = 0;
Иначе
СтрокаИсточник.КоличествоУпаковок = 0;
СтрокаТЧ.КоличествоУпаковок = КоличествоВСтроке - КоличествоКСписанию;
КонецЕсли;
КонецЕсли;
Если СтрокаТЧ.КоличествоУпаковок = 0 Тогда
УдаляемыеСтроки.Добавить(СтрокаТЧ);
Иначе
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
СтруктураДействий.Вставить("ЗаполнитьПризнакТовМестаТребуетсяОбработка");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтрокиПризнак,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Для Каждого СтрокаТЧ Из УдаляемыеСтроки Цикл
Объект.Товары.Удалить(СтрокаТЧ);
КонецЦикла;
ЗаполнитьСлужебныеРеквизитыТЧТовары(Ложь,КэшированныеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ПересчитатьКоличествоМест();
ОтобразитьСтраницуФильтраСнятьОтборПриНеобходимости();
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
СобытияФорм.ПриИзмененииЭлемента(ЭтотОбъект, "Товары");
КонецПроцедуры
&НаСервере
Процедура ИзменитьТабличнуюЧастьПоРезультатамПроверкиСервер(Результат, КэшированныеЗначения)
Модифицированность = Истина;
ТЧРезультат = ПолучитьИзВременногоХранилища(Результат);
Объект.Товары.Загрузить(ТЧРезультат);
ЗаполнитьСлужебныеРеквизитыТЧТовары(Ложь,КэшированныеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ПересчитатьКоличествоМест();
ОтобразитьСтраницуФильтраСнятьОтборПриНеобходимости();
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(ДанныеШтрихкодов) Тогда
Возврат;
КонецЕсли;
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТовМестаТребуетсяОбработка");
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", Новый Структура("Номенклатура", "ТипИзмеряемойВеличины"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ПересчитатьВесОбъем");
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, СтруктураДействийСДобавленнымиСтроками);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками.Вставить("ЗаполнитьПризнакТовМестаТребуетсяОбработка");
СтруктураДействийСИзмененнымиСтроками.Вставить("ПересчитатьВесОбъем");
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, СтруктураДействийСИзмененнымиСтроками);
СтруктураДействийСоСтрокамиИзУпаковочныхЛистов = Новый Структура;
СтруктураДействийСоСтрокамиИзУпаковочныхЛистов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействийСоСтрокамиИзУпаковочныхЛистов.Вставить("ЗаполнитьПризнакТипНоменклатуры",
Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСоСтрокамиИзУпаковочныхЛистов.Вставить("ЗаполнитьПризнакАртикул",
Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСоСтрокамиИзУпаковочныхЛистов.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", Новый Структура("Номенклатура", "ТипИзмеряемойВеличины"));
СтруктураДействийСоСтрокамиИзУпаковочныхЛистов.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
СтруктураДействийСоСтрокамиИзУпаковочныхЛистов.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
СтруктураДействийСоСтрокамиИзУпаковочныхЛистов.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
СтруктураДействийСоСтрокамиИзУпаковочныхЛистов.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
СтруктураДействийСоСтрокамиИзУпаковочныхЛистов.Вставить("ПересчитатьВесОбъем");
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
СтруктураДействий.ТолькоТовары = Истина;
СтруктураДействий.ШтрихкодыВТЧ = Истина;
СтруктураДействий.УчитыватьУпаковочныеЛисты = ИспользоватьУпаковочныеЛисты;
СтруктураДействий.ДействияСНеизвестнымиШтрихкодами = "НетДействий";
СтруктураДействий.СтруктураДействийСоСтрокамиИзУпаковочныхЛистов = СтруктураДействийСоСтрокамиИзУпаковочныхЛистов;
СтруктураДействий.ОтработатьИзменениеУпаковочныхЛистов = Истина;
СтруктураДействий.ТекущийУпаковочныйЛист = УпаковочныйЛистРодитель;
ЭтоВозвратНепринятых = (Объект.СкладскаяОперация = ПредопределенноеЗначение("Перечисление.СкладскиеОперации.ВозвратНеПринятыхТоваров"));
СтруктураДействий.ЗаполнятьНазначения = Не ЭтоВозвратНепринятых;
ОбработатьШтрихкодыСервер(СтруктураДействий,КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры",0.1,Истина);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураДействий,КэшированныеЗначения)
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма,Объект,СтруктураДействий,КэшированныеЗначения);
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
СтруктураДействийСТекущейСтрокой = Новый Структура;
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", Новый Структура("Номенклатура", "ТипИзмеряемойВеличины"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
СтруктураДействийСТекущейСтрокой.Вставить("ПересчитатьВесОбъем");
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(СтруктураДействий.ТекущаяСтрока);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействийСТекущейСтрокой, КэшированныеЗначения);
КонецЕсли;
УпаковочныеЛистыДоОбработки = УпаковочныеЛисты.Выгрузить(, "УпаковочныйЛист");
УпаковочныеЛистыПослеОбработки = УпаковочныеЛисты.Выгрузить(, "УпаковочныйЛист");
ОбщегоНазначенияКлиентСервер.РазностьМассивов(УпаковочныеЛистыПослеОбработки, УпаковочныеЛистыДоОбработки);
УдалитьДублиТоваровБезКоличества(Истина, УпаковочныеЛистыПослеОбработки);
ПересчитатьКоличествоМест();
ДекорацияФильтрОбработкаНавигационнойСсылкиСервер("СнятьОтбор");
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(ТекущаяСтрокаИдентификатор, КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Объект,
ПараметрыУказанияСерий, ТекущаяСтрокаИдентификатор, КэшированныеЗначения);
Если ТекущаяСтрокаИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущаяСтрокаИдентификатор);
Если ТекущиеДанные <> Неопределено
И ТекущиеДанные.ЭтоУпаковочныйЛист Тогда
ТекущиеДанные.СтатусУказанияСерий = 0;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий)
Действия = Новый Структура;
Действия.Вставить("ОбновлятьКоличествоТоваровПриРегистрацииСерий", Истина);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ЭтотОбъект, Действия);
Действия.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
Действия.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
Действия.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
Действия.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", Объект.Склад, ПараметрыУказанияСерий));
Действия.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", Новый Структура("Номенклатура", "ТипИзмеряемойВеличины"));
Действия.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
Действия.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
Действия.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
Действия.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
Действия.Вставить("ПересчитатьВесОбъем");
НоменклатураСервер.ОбработатьУказаниеСерий(Объект, ПараметрыУказанияСерий, ПараметрыФормыУказанияСерий, Действия);
УпаковочныеЛистыСервер.ПеренумероватьСтроки(ЭтотОбъект, Объект.Товары);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(,ТекущиеДанные);
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыУказанияСерий(ТекущиеДанныеИдентификатор)
Возврат НоменклатураСервер.ПараметрыФормыУказанияСерий(Объект, ПараметрыУказанияСерий, ТекущиеДанныеИдентификатор, ЭтаФорма);
КонецФункции
#КонецОбласти
#Область ДополнительнаяПанельИнформации
&НаСервере
Процедура ПеренестиУпаковку(Упаковка, Идентификатор, КэшированныеЗначения)
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
ТекущаяСтрока.Упаковка = Упаковка;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействий.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
СтруктураДействий.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
СтруктураДействий.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
СтруктураДействий.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьВесОбъем");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ЗаблокироватьДанныеФормыДляРедактирования();
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииСтрокиНаКлиенте()
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если ТекущаяСтрока <> Неопределено Тогда
ВывестиДополнительнуюИнформациюПоНоменклатуре(
ТекущаяСтрока.Номенклатура,
ТекущаяСтрока.Характеристика,
ТекущаяСтрока.Упаковка);
Элементы.СписокУпаковок.ТекущаяСтрока = ТекущаяСтрока.Упаковка;
Иначе
ВывестиДополнительнуюИнформациюПоНоменклатуре();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НоменклатураПриИзмененииСервер(КэшированныеЗначения)
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(Элементы.Товары.ТекущаяСтрока);
СтруктураДействийСТекущейСтрокой = Новый Структура;
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСТекущейСтрокой.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействийСТекущейСтрокой.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействийСТекущейСтрокой.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействийСТекущейСтрокой.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
СтруктураДействийСТекущейСтрокой.Вставить("ПроверитьЗаполнитьНазначение");
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", Новый Структура("Номенклатура", "ТипИзмеряемойВеличины"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
СтруктураДействийСТекущейСтрокой.Вставить("ПересчитатьВесОбъем");
СтруктураДействийСТекущейСтрокой.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий", Объект.Склад, ПараметрыУказанияСерий));
УпаковочныеЛистыСервер.НоменклатураУпаковочныйЛистПриИзменении(ЭтаФорма, Объект.Товары,
"ТоварыНоменклатура", КэшированныеЗначения, СтруктураДействийСТекущейСтрокой);
ВывестиДополнительнуюИнформациюПоНоменклатуре(ТекущаяСтрока.Номенклатура, ТекущаяСтрока.Характеристика, ТекущаяСтрока.Упаковка);
КонецПроцедуры
&НаСервере
Процедура ВывестиДополнительнуюИнформациюПоНоменклатуре(Номенклатура = Неопределено , Характеристика = Неопределено, Упаковка = Неопределено)
РеквизитыНоменклатуры = Новый Структура;
РеквизитыНоменклатуры.Вставить("ШаблонЭтикеткиВида");
РеквизитыНоменклатуры.Вставить("ШаблонЦенникаВида");
РеквизитыНоменклатуры.Вставить("ШаблонЦенникаНоменклатуры");
РеквизитыНоменклатуры.Вставить("ШаблонЭтикеткиНоменклатуры");
РеквизитыНоменклатуры.Вставить("НаборУпаковок");
РеквизитыНоменклатуры.Вставить("ФайлКартинки");
РеквизитыНоменклатуры.Вставить("СкладскаяГруппа");
Если Не ЗначениеЗаполнено(Номенклатура) Тогда
Номенклатура = Справочники.Номенклатура.ПустаяСсылка();
Характеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
Упаковка = Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка();
ШаблонЭтикеткиСтрока = "";
ШаблонЦенникаСтрока = "";
АдресКартинки = "";
НаборУпаковокСтрока = "";
Иначе
РеквизитыНоменклатуры.Вставить("ШаблонЭтикеткиВида", "ВидНоменклатуры.ШаблонЭтикетки");
РеквизитыНоменклатуры.Вставить("ШаблонЦенникаВида", "ВидНоменклатуры.ШаблонЦенника");
РеквизитыНоменклатуры.Вставить("ШаблонЦенникаНоменклатуры", "ШаблонЦенника");
РеквизитыНоменклатуры.Вставить("ШаблонЭтикеткиНоменклатуры", "ШаблонЭтикетки");
РеквизитыНоменклатуры.Вставить("НаборУпаковок", "НаборУпаковок");
РеквизитыНоменклатуры.Вставить("ФайлКартинки", "ФайлКартинки");
РеквизитыНоменклатуры.Вставить("СкладскаяГруппа", "СкладскаяГруппа");
РеквизитыНоменклатуры = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Номенклатура,РеквизитыНоменклатуры);
КонецЕсли;
Если Не ЗначениеЗаполнено(РеквизитыНоменклатуры.СкладскаяГруппа) Тогда
Надпись = НСтр("ru = '<Не указан>'");
СкладскаяГруппаБулево = Ложь;
СкладскаяГруппаСтрока = Надпись;
Иначе
СкладскаяГруппаБулево = Истина;
СкладскаяГруппаСтрока = Строка(РеквизитыНоменклатуры.СкладскаяГруппа);
КонецЕсли;
СтруктураУпаковки = Справочники.УпаковкиЕдиницыИзмерения.КоэффициентВесОбъемПрочиеРеквизитыУпаковки(Упаковка,Номенклатура,,Ложь);
РеквизитыНоменклатуры.Вставить("Вес", СтруктураУпаковки.ВесНетто);
РеквизитыНоменклатуры.Вставить("Объем", СтруктураУпаковки.Объем);
Если Не ЗначениеЗаполнено(РеквизитыНоменклатуры.Вес) Тогда
Надпись = НСтр("ru = '<Не указан>'");
ВесБулево = Ложь;
ВесНоменклатуры = Надпись;
Иначе
ВесБулево = Истина;
ВесНоменклатуры = Строка(РеквизитыНоменклатуры.Вес) + " " + ЕдиницаИзмеренияВеса;
КонецЕсли;
Если Не ЗначениеЗаполнено(РеквизитыНоменклатуры.Объем) Тогда
Надпись = НСтр("ru = '<Не указан>'");
ОбъемБулево = Ложь;
ОбъемНоменклатуры = Надпись;
Иначе
ОбъемБулево = Истина;
ОбъемНоменклатуры = Строка(РеквизитыНоменклатуры.Объем) + " " + ЕдиницаИзмеренияОбъема;
КонецЕсли;
Если Не ЗначениеЗаполнено(РеквизитыНоменклатуры.ШаблонЭтикеткиНоменклатуры) Тогда
Если Не ЗначениеЗаполнено(РеквизитыНоменклатуры.ШаблонЭтикеткиВида) Тогда
Надпись = НСтр("ru = '<Не указан>'");
ШаблонЭтикетки = Ложь;
ШаблонЭтикеткиСтрока = Надпись;
Иначе
ШаблонЭтикетки = Истина;
ШаблонЭтикеткиСтрока = Строка(РеквизитыНоменклатуры.ШаблонЭтикеткиВида);
КонецЕсли;
Иначе
ШаблонЭтикетки = Истина;
ШаблонЭтикеткиСтрока = Строка(РеквизитыНоменклатуры.ШаблонЭтикеткиНоменклатуры);
КонецЕсли;
Если Не ЗначениеЗаполнено(РеквизитыНоменклатуры.ШаблонЦенникаНоменклатуры) Тогда
Если Не ЗначениеЗаполнено(РеквизитыНоменклатуры.ШаблонЦенникаВида) Тогда
Надпись = НСтр("ru = '<Не указан>'");
ШаблонЦенникаСтрока = Надпись;
ШаблонЦенника = Ложь;
Иначе
ШаблонЦенника = Истина;
ШаблонЦенникаСтрока = Строка(РеквизитыНоменклатуры.ШаблонЦенникаВида);
КонецЕсли;
Иначе
ШаблонЦенника = Истина;
ШаблонЦенникаСтрока = Строка(РеквизитыНоменклатуры.ШаблонЦенникаНоменклатуры);
КонецЕсли;
Если Не ЗначениеЗаполнено(РеквизитыНоменклатуры.НаборУпаковок) Тогда
Надпись = НСтр("ru = '<Упаковки не используются>'");
НаборУпаковокСтрока = Надпись;
НаборУпаковок = Ложь;
Иначе
НаборУпаковок = Истина;
НаборУпаковокСтрока = Строка(РеквизитыНоменклатуры.НаборУпаковок);
КонецЕсли;
Если ЗначениеЗаполнено(РеквизитыНоменклатуры.ФайлКартинки) Тогда
Попытка
АдресКартинки = РаботаСФайлами.ДанныеФайла(РеквизитыНоменклатуры.ФайлКартинки, ЭтотОбъект.УникальныйИдентификатор).СсылкаНаДвоичныеДанныеФайла;
Исключение
АдресКартинки = "";
Элементы.АдресКартинки.ТекстНевыбраннойКартинки = НСтр("ru = 'Ошибка при чтении файла изображения'");
Элементы.АдресКартинки.ЦветТекста = ЦветаСтиля.ПоясняющийОшибкуТекст;
КонецПопытки;
Иначе
АдресКартинки = "";
Элементы.АдресКартинки.ТекстНевыбраннойКартинки = НСтр("ru = 'Изображение отсутствует'");
Элементы.АдресКартинки.ЦветТекста = ЦветаСтиля.ЦветТекстаНевыбраннойКартинки;
КонецЕсли;
Если Не ЗначениеЗаполнено(Номенклатура)
Или РеквизитыНоменклатуры.НаборУпаковок = НаборУпаковокИндивидуальный Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(СписокУпаковок, "Владелец", Номенклатура,
ВидСравненияКомпоновкиДанных.Равно,,Истина);
Иначе
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(СписокУпаковок, "Владелец", РеквизитыНоменклатуры.НаборУпаковок,
ВидСравненияКомпоновкиДанных.Равно,,Истина);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(СписокУпаковок, "ТипИзмеряемойВеличины", Перечисления.ТипыИзмеряемыхВеличин.Упаковка,
ВидСравненияКомпоновкиДанных.Равно,,Истина);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(СписокШтрихКодов, "Номенклатура",Номенклатура,
ВидСравненияКомпоновкиДанных.Равно,,Истина);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(СписокШтрихКодов, "Характеристика",Характеристика,
ВидСравненияКомпоновкиДанных.Равно,,Истина);
КонецПроцедуры
&НаСервере
Процедура УпаковочныйЛистПриИзмененииСервер(КэшированныеЗначения)
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(Элементы.Товары.ТекущаяСтрока);
СтруктураДействийСТекущейСтрокой = Новый Структура;
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСТекущейСтрокой.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействийСТекущейСтрокой.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействийСТекущейСтрокой.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействийСТекущейСтрокой.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", Новый Структура("Номенклатура", "ТипИзмеряемойВеличины"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
СтруктураДействийСТекущейСтрокой.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
СтруктураДействийСТекущейСтрокой.Вставить("ПересчитатьВесОбъем");
СтруктураДействийСТекущейСтрокой.Вставить("ПроверитьЗаполнитьНазначение");
СтруктураДействийСДобавляемымиСтроками = Новый Структура;
СтруктураДействийСДобавляемымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавляемымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействийСДобавляемымиСтроками.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействийСДобавляемымиСтроками.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", Новый Структура("Номенклатура", "ТипИзмеряемойВеличины"));
СтруктураДействийСДобавляемымиСтроками.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
СтруктураДействийСДобавляемымиСтроками.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
СтруктураДействийСДобавляемымиСтроками.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
СтруктураДействийСДобавляемымиСтроками.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
УпаковочныеЛистыДоОбработки = УпаковочныеЛисты.Выгрузить(, "УпаковочныйЛист");
УпаковочныеЛистыСервер.НоменклатураУпаковочныйЛистПриИзменении(ЭтаФорма, Объект.Товары,
"ТоварыУпаковочныйЛист", КэшированныеЗначения, СтруктураДействийСТекущейСтрокой, СтруктураДействийСДобавляемымиСтроками);
УпаковочныеЛистыПослеОбработки = УпаковочныеЛисты.Выгрузить(, "УпаковочныйЛист");
ОбщегоНазначенияКлиентСервер.РазностьМассивов(УпаковочныеЛистыПослеОбработки, УпаковочныеЛистыДоОбработки);
Если ЗначениеЗаполнено(КэшированныеЗначения.Номенклатура) Тогда
ВывестиДополнительнуюИнформациюПоНоменклатуре();
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекущаяСтрока.Штрихкод) Тогда
ТекущаяСтрока.ШтрихкодНеОпределен = 0;
КонецЕсли;
Если ЗначениеЗаполнено(ТекущаяСтрока.ДокументОтгрузки) Тогда
ТекущаяСтрока.ДокументОтгрузки = Неопределено;
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТовМестаТребуетсяОбработка");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ЗначениеЗаполнено(ТекущаяСтрока.УпаковочныйЛист) Тогда
УдалитьДублиТоваровБезКоличества(Истина, УпаковочныеЛистыПослеОбработки);
КонецЕсли;
ОтобразитьСтраницуФильтраСнятьОтборПриНеобходимости();
КонецПроцедуры
&НаСервере
Процедура УдалитьДублиТоваровБезКоличества(Перенумеровать, ДобавляемыеУпаковочныеЛисты)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение
|ПОМЕСТИТЬ ТоварыУпаковочныхЛистов
|ИЗ
| &ТаблицаТовары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.УпаковочныйЛистРодитель В(&ДобавляемыеУпаковочныеЛисты)
| И НЕ ТаблицаТовары.ЭтоУпаковочныйЛист
| И ТаблицаТовары.Количество <> 0
|;
|
|
|ВЫБРАТЬ
| ТаблицаТовары.НомерСтроки КАК НомерСтроки,
| ТаблицаТовары.Штрихкод КАК Штрихкод,
| ТаблицаТовары.Номенклатура КАК Номенклатура,
| ТаблицаТовары.Характеристика КАК Характеристика,
| ТаблицаТовары.Назначение КАК Назначение
|ПОМЕСТИТЬ ТаблицаДублей
|ИЗ
| &ТаблицаТовары КАК ТаблицаТовары
|ГДЕ
| ТаблицаТовары.УпаковочныйЛистРодитель = ЗНАЧЕНИЕ(Документ.УпаковочныйЛист.ПустаяСсылка)
| И НЕ ТаблицаТовары.ЭтоУпаковочныйЛист
| И ТаблицаТовары.Количество = 0
|;
|
|
|ВЫБРАТЬ
| ТаблицаДублей.НомерСтроки КАК НомерСтроки
|ИЗ
| ТоварыУпаковочныхЛистов КАК ТаблицаТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаДублей КАК ТаблицаДублей
| ПО ТаблицаТовары.Номенклатура = ТаблицаДублей.Номенклатура
| И ТаблицаТовары.Характеристика = ТаблицаДублей.Характеристика
| И ТаблицаТовары.Назначение = ТаблицаДублей.Назначение
| И ТаблицаДублей.Штрихкод = """"
|
|УПОРЯДОЧИТЬ ПО
| ТаблицаДублей.НомерСтроки УБЫВ";
Запрос.УстановитьПараметр("ТаблицаТовары", Объект.Товары.Выгрузить());
Запрос.УстановитьПараметр("ДобавляемыеУпаковочныеЛисты", ДобавляемыеУпаковочныеЛисты);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект.Товары.Удалить(Выборка.НомерСтроки - 1);
КонецЦикла;
Если Перенумеровать
И Выборка.Количество() > 0 Тогда
УпаковочныеЛистыСервер.ПеренумероватьСтроки(ЭтаФорма, Объект.Товары);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПараметрыДляПечати(ВыделенныеСтроки, ЕстьОшибки = Ложь)
Порядок = 1;
ТоварыДляПечати = Новый Массив;
Для Каждого Идентификатор Из ВыделенныеСтроки Цикл
СтрокаТоваров = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
СтрокаПечати = Новый Структура("Порядок, Номенклатура, Характеристика, Упаковка, Количество");
ЗаполнитьЗначенияСвойств(СтрокаПечати, СтрокаТоваров);
СтрокаПечати.Порядок = Порядок;
ТоварыДляПечати.Добавить(СтрокаПечати);
Если Не ЗначениеЗаполнено(СтрокаТоваров.Номенклатура) Тогда
ТекстСообщения = НСтр("ru = 'Не заполнена колонка ""Номенклатура"" в строке %НомерСтроки% списка ""Товары"".'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НомерСтроки%", СтрокаТоваров.НомерСтроки);
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, Неопределено, "", "", ЕстьОшибки);
КонецЕсли;
Если Не ЗначениеЗаполнено(СтрокаТоваров.Количество) Тогда
ТекстСообщения = НСтр("ru = 'Не заполнена колонка ""Количество"" в строке %НомерСтроки% списка ""Товары"".'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%НомерСтроки%", СтрокаТоваров.НомерСтроки);
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, Неопределено, "", "", ЕстьОшибки);
КонецЕсли;
Порядок = Порядок + 1;
КонецЦикла;
СтруктураДействий = Новый Структура;
Если Не Объект.СкладскаяОперация = ПредопределенноеЗначение("Перечисление.СкладскиеОперации.ВозвратНеПринятыхТоваров")
И Не Объект.СкладскаяОперация = ПредопределенноеЗначение("Перечисление.СкладскиеОперации.ВозвратНеПринятыхТоваровУстарел") Тогда
СтруктураДействий.Вставить("ЗаполнитьОрганизацию", ОрганизацияРаспоряжения);
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьСклад", Объект.Склад);
СтруктураДействий.Вставить("ЗаполнитьВидЦены", РозничныйВидЦены);
СтруктураДействий.Вставить("ПоказыватьКолонкуКоличествоВДокументе", Истина);
СтруктураДействий.Вставить("УстановитьРежим", "ПечатьЭтикеток");
СтруктураДействий.Вставить("УстановитьРежимПечатиИзДокумента");
СтруктураДействий.Вставить("ЗаполнитьТаблицуТоваров");
СтруктураДействий.Вставить("ЗаполнитьКоличествоЭтикетокПоДокументу");
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Товары", ТоварыДляПечати);
ПараметрыЗаполнения.Вставить("СтруктураДействий", СтруктураДействий);
ПараметрыДляПечати = Новый Структура("АдресВХранилище, ПараметрыЗаполнения, ПечатьНаПринтер", "", ПараметрыЗаполнения,
Истина);
Возврат ПараметрыДляПечати;
КонецФункции
&НаКлиенте
Процедура СоздатьШтрихКод(Команда)
Если Элементы.Товары.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ЗначенияЗаполнения = Новый Структура;
ЗначенияЗаполнения.Вставить("Номенклатура", Элементы.Товары.ТекущиеДанные.Номенклатура);
ЗначенияЗаполнения.Вставить("Характеристика", Элементы.Товары.ТекущиеДанные.Характеристика);
Если Элементы.СписокУпаковок.ТекущиеДанные <> Неопределено Тогда
ЗначенияЗаполнения.Вставить("Упаковка", Элементы.СписокУпаковок.ТекущиеДанные.Ссылка);
КонецЕсли;
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЗначенияЗаполнения);
ОткрытьФорму("РегистрСведений.ШтрихкодыНоменклатуры.ФормаЗаписи",
ПараметрыФормы,
ЭтаФорма,
,
,
,
,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура СписокУпаковокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Если НаборУпаковок = Ложь Тогда
Отказ = Истина;
Текст = НСтр("ru = 'Добавить упаковку невозможно, т.к. для номенклатуры не включено использование упаковок.
|Откройте карточку номенклатуры и включите использование упаковок.'");
ПоказатьПредупреждение(Неопределено, Текст);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьОтображениеПанелиДополнительнойИнформации()
Элементы.ДопРабочееМесто.Видимость = Не СкрытьДополнительнуюИнформацию;
Если СкрытьДополнительнуюИнформацию Тогда
ТекстПоказатьСкрыть = НСтр("ru = 'Показать панель дополнительной информации'");
Иначе
ТекстПоказатьСкрыть = НСтр("ru = 'Скрыть панель дополнительной информации'");;
КонецЕсли;
Элементы.ДополнительнаяПанель.Заголовок = ТекстПоказатьСкрыть;
КонецПроцедуры
&НаСервере
Процедура УстановитьЗависимыеОтАдресногоХранения()
ИспользоватьАдресноеХранение = СкладыСервер.ИспользоватьАдресноеХранение(Объект.Склад, Объект.Помещение, Объект.Дата);
Если ИспользоватьАдресноеХранение Тогда
Объект.ЗонаПриемки = Справочники.СкладскиеЯчейки.ЗонаПриемкиПоУмолчанию(Объект.Склад, Объект.Помещение, Объект.ЗонаПриемки);
КонецЕсли;
Элементы.ЗонаПриемки.Видимость = ИспользоватьАдресноеХранение;
КонецПроцедуры
&НаСервере
Процедура ПодготовитьЗаполнитьУстановитьВидимостьСерий()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ПриходныйОрдерНаТовары));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
УстановитьВидимостьЭлементовСерий();
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовСерий()
Элементы.ТоварыСтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
Элементы.ТоварыУказатьСерии.Видимость = ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыТЧТовары(Перенумеровать = Истина, КэшированныеЗначения = Неопределено)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьВесОбъем");
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры",
Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул",
Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипИзмеряемойВеличины", Новый Структура("Номенклатура", "ТипИзмеряемойВеличины"));
СтруктураДействий.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
СтруктураДействий.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
СтруктураДействий.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
СтруктураДействий.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
УпаковочныеЛистыСервер.ЗаполнитьСлужебныеРеквизиты(ЭтотОбъект, Объект.Товары, СтруктураДействий, ,Перенумеровать, КэшированныеЗначения);
ТЗШтрихкоды = Объект.Товары.Выгрузить(,"Штрихкод");
ТЗШтрихкоды.Свернуть("Штрихкод");
МассивШтрихкодов = ТЗШтрихкоды.ВыгрузитьКолонку("Штрихкод");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
РегистрыСведений.ШтрихкодыНоменклатуры.ПолучитьДанныеПоШтрихкодам(КэшированныеЗначения, МассивШтрихкодов);
Если Объект.Товары.НайтиСтроки(Новый Структура("ЭтоУпаковочныйЛист", Истина)).Количество() > 0 Тогда
Документы.УпаковочныйЛист.ДополнитьДанныеПоШтрихкодам(КэшированныеЗначения, МассивШтрихкодов);
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТовМестаТребуетсяОбработка");
ОбрабатываемыеСтроки = Новый Массив;
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
Если Не ЗначениеЗаполнено(СтрокаТЧ.Штрихкод)
Или ЗначениеЗаполнено(КэшированныеЗначения.Штрихкоды[СтрокаТЧ.Штрихкод])
И КэшированныеЗначения.Штрихкоды[СтрокаТЧ.Штрихкод].Количество() > 0 Тогда
СтрокаТЧ.ШтрихкодНеОпределен = 0;
Иначе
СтрокаТЧ.ШтрихкодНеОпределен = 1;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(СтрокаТЧ);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ДобавитьСтрокиПоДокументамОтгрузки(МассивСсылок,КэшированныеЗначения)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыКОтгрузкеОбороты.ДокументОтгрузки КАК ДокументОтгрузки,
| ТоварыКОтгрузкеОбороты.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузкеОбороты.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ТоварыКОтгрузкеОбороты.Номенклатура.Артикул КАК Артикул,
| ТоварыКОтгрузкеОбороты.Характеристика КАК Характеристика,
| ТоварыКОтгрузкеОбороты.Назначение,
| ВЫБОР
| КОГДА ТоварыКОтгрузкеОбороты.Номенклатура.ИспользованиеХарактеристик В (ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры), ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры), ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ХарактеристикиИспользуются
|ИЗ
| РегистрНакопления.ТоварыКОтгрузке.Обороты(,
| ,
| ,
| ДокументОтгрузки В(&МассивСсылок)
|
| ) КАК ТоварыКОтгрузкеОбороты";
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(Запрос.Выполнить().Выгрузить(),Объект.Товары);
ЗаполнитьСлужебныеРеквизитыТЧТовары(Ложь,КэшированныеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВыбораДокументаОтгрузки(ОтбиратьПоТовару = Ложь)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Склад", Объект.Склад);
Если ОтбиратьПоТовару Тогда
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ПараметрыФормы.Вставить("Номенклатура", ТекущаяСтрока.Номенклатура);
ПараметрыФормы.Вставить("Характеристика", ТекущаяСтрока.Характеристика);
КонецЕсли;
ПараметрыФормы.Вставить("ОтбиратьПоТовару", ОтбиратьПоТовару);
ОткрытьФорму("Документ.ПриходныйОрдерНаТовары.Форма.ФормаВыбораДокументаОтгрузки",
ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьАвтоотметкуНезаполненного(Статус, ТаблицаФормы)
Если Статус = ПредопределенноеЗначение("Перечисление.СтатусыПриходныхОрдеров.КПоступлению")
Или Статус = ПредопределенноеЗначение("Перечисление.СтатусыПриходныхОрдеров.ВРаботе") Тогда
ТаблицаФормы.АвтоОтметкаНезаполненного = Ложь;
ТаблицаФормы.ОтметкаНезаполненного = Ложь;
Иначе
ТаблицаФормы.АвтоОтметкаНезаполненного = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура АдресКартинкиНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПросмотретьИзображение();
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Если Открыта() Тогда
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНаСервере(ВидЗаполнения, ДатаПоступления, КэшированныеЗначения)
ТекОбъект = РеквизитФормыВЗначение("Объект");
ТекОбъект.ЗаполнитьТоварыПоТоварамКПоступлению(ВидЗаполнения,ДатаПоступления);
ЗначениеВРеквизитФормы(ТекОбъект, "Объект");
ЗаполнитьСлужебныеРеквизитыТЧТовары(Ложь,КэшированныеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
УпаковочныеЛистыСервер.ПеренумероватьСтроки(ЭтотОбъект, Объект.Товары);
УпаковочныеЛистыСервер.ПриЧтенииСозданииФормыСУпаковочнымиЛистами(ЭтаФорма, Объект.Товары,
Объект.Ссылка.Метаданные().ПредставлениеОбъекта);
ТекущийОбъект = РеквизитФормыВЗначение("Объект");
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриходныйОрдерНаТоварыЛокализация.УстановитьПризнакИспользованияМаркируемойПродукции(ЭтаФорма);
УстановитьВидимостьЭлементовУпаковкиПриМаркировке();
ОтобразитьСтраницуФильтраСнятьОтборПриНеобходимости();
КонецПроцедуры
&НаКлиенте
Процедура Автотест_ЗаполнитьПоРаспоряжению(ВидЗаполнения) Экспорт
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.Распоряжение)Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Не указано распоряжение.'"));
Возврат;
КонецЕсли;
Если ВидЗаполнения = "Количество" Тогда
Если Объект.Товары.Итог("КоличествоУпаковок") <> 0 Тогда
Ответ = Неопределено;
Если ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры Тогда
ТекстСообщения = НСтр("ru = 'В некоторых строках количество уже заполнено и будет перезаполнено остатками по распоряжению, заполненные серии будут очищены. Продолжить?'");
Иначе
ТекстСообщения = НСтр("ru = 'В некоторых строках количество уже заполнено и будет перезаполнено остатками по распоряжению. Продолжить?'");
КонецЕсли;
ПараметрыОповещения = Новый Структура("ВидЗаполнения", ВидЗаполнения);
ОписаниеОповещения = Новый ОписаниеОповещения("Автотест_ЗаполнитьПоРаспоряжениюЗавершение2",
ЭтотОбъект,
ПараметрыОповещения);
ПоказатьВопрос(ОписаниеОповещения, ТекстСообщения, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
Иначе
Если Объект.Товары.Количество() > 0 Тогда
Если ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры Тогда
ТекстСообщения = НСтр("ru = 'Перед заполнением табличная часть будет очищена, указанные серии будут очищены. Продолжить?'");
Иначе
ТекстСообщения = НСтр("ru = 'Перед заполнением табличная часть будет очищена. Продолжить?'");
КонецЕсли;
ПараметрыОповещения = Новый Структура("ВидЗаполнения", ВидЗаполнения);
ОписаниеОповещения = Новый ОписаниеОповещения("Автотест_ЗаполнитьПоРаспоряжениюПослеВопроса",
ЭтотОбъект,
ПараметрыОповещения);
ПоказатьВопрос(ОписаниеОповещения, ТекстСообщения, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
КонецЕсли;
Автотест_ЗаполнитьПоРаспоряжениюФрагмент1(ВидЗаполнения);
КонецПроцедуры
&НаКлиенте
Процедура Автотест_ЗаполнитьПоРаспоряжениюЗавершение2(РезультатВопроса, ДополнительныеПараметры) Экспорт
ВидЗаполнения = ДополнительныеПараметры.ВидЗаполнения;
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Автотест_ЗаполнитьПоРаспоряжениюФрагмент1(ВидЗаполнения);
КонецПроцедуры
&НаКлиенте
Процедура Автотест_ЗаполнитьПоРаспоряжениюФрагмент1(Знач ВидЗаполнения)
Автотест_ЗаполнитьПоРаспоряжениюФрагмент(ВидЗаполнения);
КонецПроцедуры
&НаКлиенте
Процедура Автотест_ЗаполнитьПоРаспоряжениюПослеВопроса(РезультатВопроса, ДополнительныеПараметры) Экспорт
ВидЗаполнения = ДополнительныеПараметры.ВидЗаполнения;
Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Автотест_ЗаполнитьПоРаспоряжениюФрагмент(ВидЗаполнения);
КонецПроцедуры
&НаКлиенте
Процедура Автотест_ЗаполнитьПоРаспоряжениюФрагмент(Знач ВидЗаполнения)
ПараметрыФормыВыбораДаты = Новый Структура;
ПараметрыФормыВыбораДаты.Вставить("ТекущийДокумент", Объект.Ссылка);
ПараметрыФормыВыбораДаты.Вставить("Распоряжение", Объект.Распоряжение);
ПараметрыФормыВыбораДаты.Вставить("Склад", Объект.Склад);
ПараметрыОповещения = Новый Структура("ВидЗаполнения", ВидЗаполнения);
ОписаниеОповещения = Новый ОписаниеОповещения("Автотест_ЗаполнитьПоРаспоряжениюЗавершение",
ЭтотОбъект,
ПараметрыОповещения);
ОткрытьФорму("Документ.ПриходныйОрдерНаТовары.Форма.ФормаВыбораДатыПоступления",
ПараметрыФормыВыбораДаты,
,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура Автотест_ЗаполнитьПоРаспоряжениюЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВидЗаполнения = ДополнительныеПараметры.ВидЗаполнения;
ДатаПоступления = Результат;
Если ЗначениеЗаполнено(ДатаПоступления) Тогда
ЗаполнитьНаСервере(ВидЗаполнения, ДатаПоступления, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(Форма, Действия)
Действия.Вставить("ПересчитатьКоличествоЕдиниц");
Действия.Вставить("ПересчитатьВесОбъем");
Действия.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий", Форма.Объект.Склад, Форма.ПараметрыУказанияСерий));
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриАктивизацииСтроки(Элемент)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ПриходныйОрдерНаТовары.ФормаДокумента.Элемент.Товары.ПриАктивизацииСтроки");
Если Не СкрытьДополнительнуюИнформацию Тогда
ПодключитьОбработчикОжидания("ТоварыПриАктивизацииСтрокиНаКлиенте", 0.2, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокУпаковокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПеренестиУпаковку(ВыбраннаяСтрока,Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор(),КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
Если Не СкрытьДополнительнуюИнформацию Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(СписокШтрихКодов,
"Характеристика",
Элементы.Товары.ТекущиеДанные.Характеристика,
ВидСравненияКомпоновкиДанных.Равно,
,
Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьУпаковку(Команда)
Если Элементы.СписокУпаковок.ТекущиеДанные <> Неопределено Тогда
ПеренестиУпаковку(Элементы.СписокУпаковок.ТекущиеДанные.Ссылка,Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор(),КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Редактировать(Команда)
Если Элементы.Товары.ТекущиеДанные <> Неопределено Тогда
Если Не Элементы.Товары.ТекущиеДанные.Номенклатура.Пустая() Тогда
УпаковочныеЛистыКлиент.ПриНачалеРедактированияТЧСУпаковочнымиЛистами(ЭтаФорма, КэшированныеЗначения, Ложь);
НоменклатураКлиент.ОбновитьКешированныеЗначенияДляУчетаСерий(Элементы.Товары, КэшированныеЗначения,
ПараметрыУказанияСерий, Ложь);
ПоказатьЗначение(Неопределено, Элементы.Товары.ТекущиеДанные.Номенклатура);
Возврат;
КонецЕсли;
КонецЕсли;
ТекстСообщения = НСтр("ru='Выберете строку с номенклатурой.'");
ПоказатьПредупреждение(Неопределено, ТекстСообщения);
КонецПроцедуры
&НаКлиенте
Процедура ДополнительнаяПанель(Команда)
СкрытьДополнительнуюИнформацию = Не СкрытьДополнительнуюИнформацию;
НастроитьОтображениеПанелиДополнительнойИнформации();
КонецПроцедуры
&НаКлиенте
Процедура Печать(Команда)
ОчиститьСообщения();
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru = 'Не выбрано ни одного товара.'");
ПоказатьПредупреждение(Неопределено, ТекстПредупреждения);
Возврат;
КонецЕсли;
ЕстьОшибки = Ложь;
ПараметрыПечати = ПараметрыДляПечати(ВыделенныеСтроки, ЕстьОшибки);
Если Не ЕстьОшибки Тогда
ИдентификаторУникальности = Новый УникальныйИдентификатор;
ОткрытьФорму("Обработка.ПечатьЭтикетокИЦенников.Форма.ФормаТовары", ПараметрыПечати, , ИдентификаторУникальности);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(АдресТарыВХранилище,КэшированныеЗначения)
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьВесУпаковки",Новый Структура("Номенклатура, Упаковка", "ВесУпаковки"));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьОбъемУпаковки",Новый Структура("Номенклатура, Упаковка", "ОбъемУпаковки"));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьЕдиницуИзмеренияВеса",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияВеса"));
СтруктураДействийИзмененныеСтроки.Вставить("ЗаполнитьЕдиницуИзмеренияОбъема",Новый Структура("Номенклатура, Упаковка", "ЕдиницаИзмеренияОбъема"));
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьВесОбъем");
СтруктураДействийИзмененныеСтроки.Вставить(
"ПересчитатьКоличествоУпаковок",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.СтруктураПересчетаКоличестваУпаковок());
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(
Объект,
АдресТарыВХранилище,
"Товары",
"Номенклатура,Характеристика",
СтруктураДействийИзмененныеСтроки,
СтруктураДействийИзмененныеСтроки);
ЗаполнитьСлужебныеРеквизитыТЧТовары(Ложь,КэшированныеЗначения);
Если ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры Тогда
Для Каждого СтрТабл Из Объект.Товары Цикл
Если СтрТабл.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.МногооборотнаяТара Тогда
СтрТабл.Серия = Справочники.СерииНоменклатуры.ПустаяСсылка();
КонецЕсли;
КонецЦикла;
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
&НаСервере
Процедура ПолучитьЗагруженныеТоварыИзХранилища(АдресТоваровВХранилище, КэшированныеЗначения)
ТоварыИзХранилища = ПолучитьИзВременногоХранилища(АдресТоваровВХранилище);
СтрокиДляДополнения = Новый Массив;
Для Каждого СтрокаТоваров Из ТоварыИзХранилища Цикл
Если ЗначениеЗаполнено(СтрокаТоваров.УпаковочныйЛист)
И Объект.Товары.НайтиСтроки(Новый Структура("УпаковочныйЛист",СтрокаТоваров.УпаковочныйЛист)).Количество() > 0 Тогда
ТекстСообщения = НСтр("ru='%УпаковочныйЛист% уже был добавлен в табличную часть.'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%УпаковочныйЛист%", СтрокаТоваров.УпаковочныйЛист);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
Продолжить;
КонецЕсли;
СтрокаТЧТовары = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЧТовары, СтрокаТоваров);
Если ЗначениеЗаполнено(СтрокаТоваров.УпаковочныйЛист) Тогда
СтрокиДляДополнения.Добавить(СтрокаТЧТовары);
СтрокаТЧТовары.ЭтоУпаковочныйЛист = Истина;
СтрокаТЧТовары.Количество = 1;
СтрокаТЧТовары.КоличествоУпаковок = 1;
КонецЕсли;
КонецЦикла;
УпаковочныеЛистыДоОбработки = УпаковочныеЛисты.Выгрузить(, "УпаковочныйЛист");
УпаковочныеЛистыСервер.ДополнитьСтрокамиПоУпаковочнымЛистам(ЭтаФорма, Объект.Товары, СтрокиДляДополнения);
УпаковочныеЛистыПослеОбработки = УпаковочныеЛисты.Выгрузить(, "УпаковочныйЛист");
ОбщегоНазначенияКлиентСервер.РазностьМассивов(УпаковочныеЛистыПослеОбработки, УпаковочныеЛистыДоОбработки);
УдалитьДублиТоваровБезКоличества(Ложь, УпаковочныеЛистыПослеОбработки);
ЗаполнитьСлужебныеРеквизитыТЧТовары(Ложь,КэшированныеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
Если Не Объект.РежимПросмотраПоТоварам Тогда
УпаковочныеЛистыСервер.ПриПереходеНаДругойУровень(ЭтаФорма,
Объект.Товары, "0", Объект.Ссылка.Метаданные().ПредставлениеОбъекта);
КонецЕсли;
ПересчитатьКоличествоМест();
КонецПроцедуры
&НаСервере
Процедура ПриПереходеНаДругойУровеньСервер(НавигационнаяСсылка)
УпаковочныеЛистыСервер.ПриПереходеНаДругойУровень(ЭтаФорма,
Объект.Товары, НавигационнаяСсылка, Объект.Ссылка.Метаданные().ПредставлениеОбъекта);
КонецПроцедуры
&НаСервере
Процедура РежимПросмотраПриИзмененииСервер()
УпаковочныеЛистыСервер.РежимПросмотраПриИзменении(ЭтаФорма, Объект.Товары, Объект.Ссылка.Метаданные().ПредставлениеОбъекта);
КонецПроцедуры
&НаСервере
Процедура ТоварыПослеУдаленияСервер(КэшированныеЗначения)
ПриходныйОрдерНаТоварыЛокализация.УстановитьПризнакИспользованияМаркируемойПродукции(ЭтаФорма);
УстановитьВидимостьЭлементовУпаковкиПриМаркировке();
ЗаполнитьСтатусыУказанияСерийПриОкончанииРедактированияСтрокиТЧ(Неопределено, КэшированныеЗначения);
УпаковочныеЛистыСервер.ПослеУдаленияВТЧСУпаковочнымиЛистами(ЭтаФорма, Объект.Товары, Объект.РежимПросмотраПоТоварам);
ОтобразитьСтраницуФильтраСнятьОтборПриНеобходимости();
КонецПроцедуры
&НаСервере
Процедура ДекорацияФильтрОбработкаНавигационнойСсылкиСервер(НавигационнаяСсылка)
Если НавигационнаяСсылка = "Отобрать" Тогда
Элементы.СтраницыФильтр.ТекущаяСтраница = Элементы.СтраницаФильтрСбросить;
ОтборСтрок = Новый ФиксированнаяСтруктура("ЭтоУпаковочныйЛист, ТребуетсяОбработка", Ложь, 1);
Объект.РежимПросмотраПоТоварам = Истина;
РежимПросмотраПриИзмененииСервер();
Иначе
Элементы.СтраницыФильтр.ТекущаяСтраница = Элементы.СтраницаФильтрУстановить;
Если Объект.РежимПросмотраПоТоварам Тогда
ОтборСтрок = Новый ФиксированнаяСтруктура("ЭтоУпаковочныйЛист", Ложь);
Иначе
ОтборСтрок = Новый ФиксированнаяСтруктура(
"УпаковочныйЛистРодитель, ЭтоСлужебнаяСтрокаПустогоУпаковочногоЛиста",
УпаковочныйЛистРодитель, 0);
КонецЕсли;
КонецЕсли;
Элементы.Товары.ОтборСтрок = ОтборСтрок;
КонецПроцедуры
&НаСервере
Процедура ОтобразитьСтраницуФильтраСнятьОтборПриНеобходимости()
КоличествоСтрокДляОбработки = Объект.Товары.Итог("ТребуетсяОбработка") - Объект.Товары.Итог("ЭтоСлужебнаяСтрокаПустогоУпаковочногоЛиста");
Если КоличествоСтрокДляОбработки = 0 Тогда
Элементы.СтраницыФильтр.ТекущаяСтраница = Элементы.СтраницаФильтрПусто;
Если Объект.РежимПросмотраПоТоварам Тогда
Элементы.Товары.ОтборСтрок = Новый ФиксированнаяСтруктура("ЭтоУпаковочныйЛист", Ложь);
Иначе
Элементы.Товары.ОтборСтрок = Новый ФиксированнаяСтруктура(
"УпаковочныйЛистРодитель, ЭтоСлужебнаяСтрокаПустогоУпаковочногоЛиста", УпаковочныйЛистРодитель, 0);
КонецЕсли;
ИначеЕсли Элементы.СтраницыФильтр.ТекущаяСтраница <> Элементы.СтраницаФильтрСбросить Тогда
Элементы.СтраницыФильтр.ТекущаяСтраница = Элементы.СтраницаФильтрУстановить;
МассивСтрок = Новый Массив;
МассивСтрок.Добавить(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Есть товарные места, требующие обработки (%1).'"),
КоличествоСтрокДляОбработки));
МассивСтрок.Добавить(" ");
МассивСтрок.Добавить(Новый ФорматированнаяСтрока("Отобрать",,,,"Отобрать"));
НадписьОтбор = Новый ФорматированнаяСтрока(МассивСтрок);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗакрытияВопросаОРаспаковке(Результат, Параметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
РаспаковатьСервер();
ОтобразитьСтраницуФильтраСнятьОтборПриНеобходимости();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РаспаковатьСервер()
УпаковочныеЛистыСервер.РаспаковатьУпаковочныйЛист(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура НаУровеньВверхСервер()
НайденныеСтроки = УпаковочныеЛисты.НайтиСтроки(Новый Структура("УпаковочныйЛист",УпаковочныйЛистРодитель));
ПриПереходеНаДругойУровеньСервер(НайденныеСтроки[0].УпаковочныйЛистРодитель);
КонецПроцедуры
&НаСервере
Процедура ПересчитатьКоличествоМест()
УпаковочныеЛистыСервер.ПересчитатьКоличествоМест(ЭтаФорма, Объект.Товары)
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Элементы.Товары.ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаСервере
Функция ЗаполнитьСерииПоРаспоряжениюСервер(КэшированныеЗначения)
Заполнены = Документы.ПриходныйОрдерНаТовары.ЗаполнитьСерииПоРаспоряжению(Объект, Истина);
Если Заполнены Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ЗаполнитьСлужебныеРеквизитыТЧТовары(Истина,КэшированныеЗначения);
КонецЕсли;
Возврат Заполнены;
КонецФункции
&НаСервере
Процедура ОбработатьИПеренумероватьСтрокиТЧ(ИдентификаторНовойСтроки, ИдентификаторТекущейСтроки, СтруктураДействий, КэшированныеЗначения)
НоваяСтрока = Объект.Товары.НайтиПоИдентификатору(ИдентификаторНовойСтроки);
ТекущаяСтрока = Объект.Товары.НайтиПоИдентификатору(ИдентификаторТекущейСтроки);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
УпаковочныеЛистыСервер.ПеренумероватьСтроки(ЭтаФорма, Объект.Товары);
КонецПроцедуры
&НаСервере
Функция ПроверитьТоварыИПоместитьВоВременноеХранилище(АдресХранилища, ВыгруженаТолькоНеМаркируемаяПродукция = Ложь)
ШаблонСообщения = НСтр("ru = 'Для открытия обработки проверки количества товаров в ордере необходимо заполнить номенклатуру в строке %НомерСтроки%.'");
ПроверкаПройдена = Истина;
ТабличнаяЧастьТовары = Объект.Товары.Выгрузить();
Если ЕстьМаркируемаяПродукция И Модифицированность Тогда
ПровестиЗаписать = ?(Объект.Проведен, НСтр("ru = 'Провести'"), НСтр("ru = 'Записать'"));
СообщениеОбОшибке = СтрШаблон(НСтр("ru = 'Документ был изменен. Перед проверкой его необходимо %1.'"), ПровестиЗаписать);
ОбщегоНазначения.СообщитьПользователю(СообщениеОбОшибке, , , "Объект");
ПроверкаПройдена = Ложь;
КонецЕсли;
Если ПроверкаПройдена Тогда
Для Каждого Строка Из ТабличнаяЧастьТовары Цикл
Если Не ЗначениеЗаполнено(Строка.Номенклатура)
И Не ЗначениеЗаполнено(Строка.УпаковочныйЛист)
И Не ЗначениеЗаполнено(Строка.УпаковочныйЛистРодитель) Тогда
СообщениеОбОшибке = СтрЗаменить(ШаблонСообщения, "%НомерСтроки%", Строка.НомерСтрокиОтображаемый);
Поле = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", Строка.НомерСтроки, "Номенклатура");
ОбщегоНазначения.СообщитьПользователю(СообщениеОбОшибке, , Поле, "Объект");
ПроверкаПройдена = Ложь;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ПроверкаПройдена Тогда
Если ЕстьМаркируемаяПродукция
И ТабличнаяЧастьТовары.Колонки.Найти("ВидПродукцииИС") <> Неопределено Тогда
НомерТекущейСтроки = ТабличнаяЧастьТовары.Количество()-1;
Пока НомерТекущейСтроки >= 0 Цикл
ВедетсяПоштучныйУчетПродукции = Ложь;
ПриходныйОрдерНаТоварыЛокализация.ОпределениеПризнакаПоэкземплярногоУчетаПродукцииНаДату(ТабличнаяЧастьТовары[НомерТекущейСтроки].ВидПродукцииИС, Объект.Дата, ВедетсяПоштучныйУчетПродукции);
Если ВедетсяПоштучныйУчетПродукции Тогда
ТабличнаяЧастьТовары.Удалить(НомерТекущейСтроки);
ВыгруженаТолькоНеМаркируемаяПродукция = Истина;
КонецЕсли;
НомерТекущейСтроки = НомерТекущейСтроки - 1;
КонецЦикла;
КонецЕсли;
АдресХранилища = ПоместитьВоВременноеХранилище(ТабличнаяЧастьТовары);
КонецЕсли;
Возврат ПроверкаПройдена;
КонецФункции
&НаКлиенте
Процедура ПросмотретьИзображение()
ОчиститьСообщения();
ТекущиеДанные = Элементы.Товары.ТекущиеДанные;
ТекстСообщения = НСтр("ru='Отсутствует изображение для просмотра.'");
Если Не ЗначениеЗаполнено(АдресКартинки) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
Возврат;
КонецЕсли;
Если ТекущиеДанные <> Неопределено
И ЗначениеЗаполнено(ТекущиеДанные.Номенклатура) Тогда
ПрисоединенныйФайл = ФайлКартинкиНоменклатуры(ТекущиеДанные.Номенклатура);
Если ЗначениеЗаполнено(ПрисоединенныйФайл) Тогда
РаботаСФайламиКлиент.ОткрытьФайл(
РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайла(ПрисоединенныйФайл, УникальныйИдентификатор));
Иначе
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ФайлКартинкиНоменклатуры(Номенклатура)
ФайлКартинки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура, "ФайлКартинки");
Возврат ФайлКартинки;
КонецФункции
&НаСервере
Процедура ЗаполнитьВозвращаемоеКоличествоНаСервере(КэшированныеЗначения)
Распоряжения = Объект.Товары.Выгрузить(, "ДокументОтгрузки").ВыгрузитьКолонку("ДокументОтгрузки");
Распоряжения = ОбщегоНазначенияКлиентСервер.СвернутьМассив(Распоряжения);
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыКОтгрузкеОбороты.ДокументОтгрузки КАК ДокументОтгрузки,
| ТоварыКОтгрузкеОбороты.Номенклатура КАК Номенклатура,
| ТоварыКОтгрузкеОбороты.Характеристика КАК Характеристика,
| ТоварыКОтгрузкеОбороты.Назначение КАК Назначение,
| ТоварыКОтгрузкеОбороты.Серия КАК Серия,
| ТоварыКОтгрузкеОбороты.КОтгрузкеРасход КАК Количество
|ИЗ
| РегистрНакопления.ТоварыКОтгрузке.Обороты(
| ,
| ,
| Регистратор,
| Склад = &Склад
| И Получатель = &Получатель
| И ДокументОтгрузки В (&Распоряжения)
| ) КАК ТоварыКОтгрузкеОбороты";
Запрос.УстановитьПараметр("Распоряжения", Распоряжения);
Запрос.УстановитьПараметр("Склад", Объект.Склад);
Запрос.УстановитьПараметр("Получатель", Объект.Отправитель);
Товары = Объект.Товары.Выгрузить();
Товары.ЗаполнитьЗначения(0, "Количество");
ТаблицаОрдера = Запрос.Выполнить().Выгрузить();
Ключ = "ДокументОтгрузки, Номенклатура, Характеристика, Назначение, Серия";
Условие = "";
НакладныеСервер.РаспределитьКоличество(ТаблицаОрдера, Товары, "Количество", Ключ, Условие, Истина);
Ключ = "ДокументОтгрузки, Номенклатура, Характеристика, Назначение";
Условие = "";
НакладныеСервер.РаспределитьКоличествоИЗаполнить(ТаблицаОрдера, Товары, "Количество", Ключ, Условие, Истина, "Серия");
Объект.Товары.Загрузить(Товары);
СтруктураДействий = Новый Структура();
СтруктураДействий.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьВесОбъем");
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",
Новый Структура("Склад, ПараметрыУказанияСерий", Объект.Склад, ПараметрыУказанияСерий));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий);
КонецПроцедуры
&НаСервере
Процедура СортироватьСтроки(ИмяКолонки, Направление)
ИмяКолонкиНаправление = СтрЗаменить(Элементы[ИмяКолонки].ПутьКДанным, "Объект.Товары.","") + " " + Направление;
Объект.Товары.Сортировать(ИмяКолонкиНаправление);
Если ИспользоватьУпаковочныеЛисты Тогда
УпаковочныеЛистыСервер.ПеренумероватьСтроки(ЭтотОбъект, Объект.Товары);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РаспоряжениеВыборКлиент(ВыбранноеЗначение, Параметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
Модифицированность = Истина;
ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение);
Объект.СкладскаяОперация = СкладыКлиентСервер.СкладскаяОперацияПриемкиПоХозяйственнойОперации(
Объект.ХозяйственнаяОперация);
ПоказатьПредставлениеРаспоряжения(РаспоряжениеПредставление, Объект.Распоряжение);
Если Объект.СкладскаяОперация <> ПредопределенноеЗначение("Перечисление.СкладскиеОперации.ВозвратНепринятыхТоваров") Тогда
Если Объект.СкладскаяОперация = ПредопределенноеЗначение("Перечисление.СкладскиеОперации.ПриемкаПоПеремещению")
Или Объект.СкладскаяОперация = ПредопределенноеЗначение("Перечисление.СкладскиеОперации.ПриемкаПродукцииИзПроизводства") Тогда
Автотест_ЗаполнитьПоРаспоряжению("НоменклатураКоличество");
Иначе
Автотест_ЗаполнитьПоРаспоряжению("Номенклатура");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПоказатьПредставлениеРаспоряжения(РаспоряжениеПредставление, Распоряжение)
МассивСтрок = Новый Массив;
Если ЗначениеЗаполнено(Распоряжение) Тогда
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(Строка(Распоряжение),
,
,
,
"ОткрытьРаспоряжение"));
МассивСтрок.Добавить(" ");
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Изменить'"),
,
,
,
"ВыбратьРаспоряжение"));
Иначе
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = '<не выбрано>'")));
МассивСтрок.Добавить(" ");
МассивСтрок.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Выбрать'"),
,
,
,
"ВыбратьРаспоряжение"));
КонецЕсли;
РаспоряжениеПредставление = Новый ФорматированнаяСтрока(МассивСтрок);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовУпаковкиПриМаркировке()
ВидимостьЭлементов = ПолучитьФункциональнуюОпцию("ИспользоватьУпаковочныеЛисты")
И Не ЕстьМаркируемаяПродукция;
Элементы.ТоварыУпаковочныйЛистКод.Видимость = ВидимостьЭлементов;
Элементы.ВсегоМест.Видимость = ВидимостьЭлементов;
Элементы.ДекорацияМест.Видимость = ВидимостьЭлементов;
Элементы.ГруппаРежимПросмотраНавигация.Видимость = ВидимостьЭлементов;
Элементы.ТоварыГруппаКнопокУпаковочныйЛист.Видимость = ВидимостьЭлементов;
Элементы.ТоварыКартинкаУпаковочногоЛиста.Видимость = ВидимостьЭлементов;
Элементы.ТоварыДопИнфоУпаковочныйЛист.Видимость = ВидимостьЭлементов;
Элементы.ТоварыУпаковочныйЛист.Видимость = ВидимостьЭлементов;
Элементы.ТоварыУпаковочныйЛистРодитель.Видимость = ВидимостьЭлементов;
Элементы.ТоварыНомерСтрокиОтображаемый.Видимость = ВидимостьЭлементов;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьЭлементовФормы()
Элементы.ТоварыПроверитьКоличество.Доступность = Не ТолькоПросмотр;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти