#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
УстановитьУсловноеОформление();
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма, "Поступления");
ЗаполнитьСкладПоУмолчанию();
ФильтрЗаданий = "Невыполненные";
ФильтрОрдеров = "КПриемке";
ПулНоменклатурыРазмещение.Параметры.УстановитьЗначениеПараметра("ЗонаПриемки", Неопределено);
УстановитьЗаголовкиКолонокВесОбъем();
СтруктураБыстрогоОтбора = Неопределено;
Параметры.Свойство("СтруктураБыстрогоОтбора", СтруктураБыстрогоОтбора);
Если СтруктураБыстрогоОтбора <> Неопределено Тогда
СтруктураБыстрогоОтбора.Свойство("Склад", Склад);
СтруктураБыстрогоОтбора.Свойство("ОтборРаспоряжений", ОтборРаспоряжений);
Если СтруктураБыстрогоОтбора.Свойство("ЗонаПриемки", ЗонаПриемки) Тогда
ПулНоменклатурыРазмещение.Параметры.УстановитьЗначениеПараметра("ЗонаПриемки", ЗонаПриемки);
КонецЕсли;
КонецЕсли;
СкладПомещениеПриИзмененииСервер();
ПараметрыПриСозданииНаСервере = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаСписка();
ПараметрыПриСозданииНаСервере.Форма = ЭтотОбъект;
ПараметрыПриСозданииНаСервере.МестоРазмещенияКоманд = Элементы.ПодменюЭДО;
ПараметрыПриСозданииНаСервере.КолонкаСостоянияЭДО = Элементы.ПредставлениеСостояния;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаСписка(ПараметрыПриСозданииНаСервере);
СписокТипов = ОрдераВРаботе.КомпоновщикНастроек.Настройки.Выбор.ДоступныеПоляВыбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Ссылка")).Тип;
ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
ПараметрыРазмещения.Источники = СписокТипов;
ПараметрыРазмещения.КоманднаяПанель = Элементы.ОрдераВРаботеГруппаКоманднаяПанель;
ПараметрыРазмещения.ПрефиксГрупп = "ОрдераВРаботе";
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
СписокТипов = ЗаданияВРаботе.КомпоновщикНастроек.Настройки.Выбор.ДоступныеПоляВыбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Ссылка")).Тип;
ПараметрыРазмещения = ПодключаемыеКоманды.ПараметрыРазмещения();
ПараметрыРазмещения.Источники = СписокТипов;
ПараметрыРазмещения.КоманднаяПанель = Элементы.ПеремещенияВРаботеГруппаКоманднаяПанель;
ПараметрыРазмещения.ПрефиксГрупп = "ПеремещенияВРаботе";
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВСтруктуру(Параметр));
КонецЕсли;
КонецЕсли;
ПараметрыОповещенияЭДО = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаСписка();
ПараметрыОповещенияЭДО.Форма = ЭтотОбъект;
ПараметрыОповещенияЭДО.ИмяДинамическогоСписка = "ОрдераВРаботе";
ПараметрыОповещенияЭДО.ЕстьОбработчикОбновленияВидимостиСостоянияЭДО = Истина;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаСписка(ИмяСобытия, Параметр, Источник, ПараметрыОповещенияЭДО);
Если ИмяСобытия = "ИзменениеСписка_ОрдераВРаботе" Тогда
ИзменениеСпискаОрдераВРаботе(РаспоряжениеНаПоступление());
ИначеЕсли Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаРазмещение
И (ИмяСобытия = "ИзменениеСписка_ЗаданияВРаботе"
Или ИмяСобытия = "Запись_Номенклатура"
Или ИмяСобытия = "Запись_УпаковкиНоменклатуры"
Или ИмяСобытия = "Запись_ПравилаРазмещенияТоваровВЯчейках") Тогда
Элементы.ПулНоменклатурыРазмещение.Обновить();
ИначеЕсли ИмяСобытия = "Запись_СоглашенияСПоставщиками"
Или ИмяСобытия = "Запись_ЗаказПоставщику"
Или ИмяСобытия = "Запись_ЗаявкаНаВозвратТоваровОтКлиента"
Или ИмяСобытия = "Запись_ПеремещениеТоваров"
Или ИмяСобытия = "Запись_ПриобретениеТоваровУслуг"
Или ИмяСобытия = "Запись_ПриемкаТоваровНаХранение"
Или ИмяСобытия = "Запись_СборкаТоваров" Тогда
ЗаполнитьРаспоряженияНаПоступление();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбщегоНазначенияУТ.ОчиститьНастройкиИлиРеквизитыФормыОтНесуществующихСсылок(Настройки);
ПолучатьСкладИзНастроек =
Склад = Настройки.Получить("Склад")
ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов");
Если ПолучатьСкладИзНастроек Тогда
Если СтруктураБыстрогоОтбора = Неопределено Тогда
Склад = Настройки.Получить("Склад");
Помещение = Настройки.Получить("Помещение");
ЗонаПриемки = Настройки.Получить("ЗонаПриемки");
Иначе
Если Не СтруктураБыстрогоОтбора.Свойство("Склад") Тогда
Склад = Настройки.Получить("Склад");
КонецЕсли;
Если Не СтруктураБыстрогоОтбора.Свойство("Помещение") Тогда
Помещение = Настройки.Получить("Помещение");
КонецЕсли;
Если Не СтруктураБыстрогоОтбора.Свойство("ЗонаПриемки") Тогда
ЗонаПриемки = Настройки.Получить("ЗонаПриемки");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Настройки.Удалить("Склад");
Настройки.Удалить("Помещение");
Настройки.Удалить("ЗонаПриемки");
СкладПомещениеПриИзмененииСервер();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ЗонаПриемкиПриИзменении(Элемент)
УстановитьОтборыВоВсехСписках(РаспоряжениеНаПоступление());
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Обработка.УправлениеПоступлением.Форма.Элемент.Склад.ПриИзменении");
СкладПриИзмененииСервер(РаспоряжениеНаПоступление());
КонецПроцедуры
&НаКлиенте
Процедура ПомещениеПриИзменении(Элемент)
СкладПомещениеПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПоступленияПриИзменении(Элемент)
УстановитьОтборыВОсновныхСписках();
КонецПроцедуры
&НаКлиенте
Процедура ФильтрОрдеровПриИзменении(Элемент)
УстановитьОтборыВЗависимыхСписках(РаспоряжениеНаПоступление());
КонецПроцедуры
&НаКлиенте
Процедура ФильтрЗаданийПриИзменении(Элемент)
УстановитьОтборыВОсновныхСписках();
КонецПроцедуры
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
ГруппаСтраницыПриСменеСтраницыСервер(ТекущаяСтраница.Имя);
КонецПроцедуры
&НаКлиенте
Процедура СостояниеПоступленияФильтрПриИзменении(Элемент)
УстановитьОтборыВоВсехСписках(РаспоряжениеНаПоступление());
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыРаспоряженияНаПоступление
&НаКлиенте
Процедура РаспоряженияНаПоступлениеПриАктивизацииСтроки(Элемент)
УстановитьОтборыВЗависимыхСписках(РаспоряжениеНаПоступление());
КонецПроцедуры
&НаКлиенте
Процедура РаспоряженияНаПоступлениеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Поле = Элементы.РаспоряженияНаПоступлениеСостояниеПоступления
И ЗначениеЗаполнено(Элемент.ТекущиеДанные.СостояниеПоступления) Тогда
Отбор = Новый Структура("Склад, Распоряжение", Склад, Элемент.ТекущиеДанные.Распоряжение);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", Отбор);
ПараметрыФормы.Вставить("КлючНазначенияИспользования", "СостояниеПриемкиКонтекст");
ПараметрыФормы.Вставить("КлючВарианта", "СостояниеПриемкиКонтекст");
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ОткрытьФорму("Отчет.ТоварыКПоступлению.Форма", ПараметрыФормы, ЭтаФорма);
Иначе
ПоказатьЗначение(Неопределено, Элемент.ТекущиеДанные.Распоряжение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РаспоряженияНаПоступлениеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа, Параметр)
Отказ = Истина;
КонецПроцедуры
&НаКлиенте
Процедура РаспоряженияНаПоступлениеПередУдалением(Элемент, Отказ)
Отказ = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПулНомекнлатурыРазмещение
&НаКлиенте
Процедура ПулНоменклатурыРазмещениеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущиеДанные = Элементы.ПулНоменклатурыРазмещение.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Если Поле = Элементы.ПулНоменклатурыРазмещение.ПодчиненныеЭлементы.ГруппаКолонокПулНоменклатурыРазмещениеТовар.ПодчиненныеЭлементы.ПулНоменклатурыРазмещениеНоменклатура Тогда
ПоказатьЗначение(Неопределено, ТекущиеДанные.Номенклатура);
ИначеЕсли Поле = Элементы.ПулНоменклатурыРазмещение.ПодчиненныеЭлементы.ПулНоменклатурыРазмещениеУпаковка Тогда
ПоказатьЗначение(Неопределено, ТекущиеДанные.Упаковка);
ИначеЕсли Поле = Элементы.ПулНоменклатурыРазмещение.ПодчиненныеЭлементы.ПулНоменклатурыРазмещениеСкладскаяГруппаНоменклатуры Тогда
ПоказатьЗначение(Неопределено, ТекущиеДанные.СкладскаяГруппаНоменклатуры);
ИначеЕсли Поле = Элементы.ПулНоменклатурыРазмещение.ПодчиненныеЭлементы.ПулНоменклатурыРазмещениеСкладскаяГруппаУпаковок Тогда
ПоказатьЗначение(Неопределено, ТекущиеДанные.СкладскаяГруппаУпаковок);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыЗаданияВРаботе
&НаКлиенте
Процедура ЗаданияВРаботеПриИзменении(Элемент)
Оповестить("ИзменениеСписка_ЗаданияВРаботе", Новый Структура);
КонецПроцедуры
&НаКлиенте
Процедура ЗаданияВРаботеПриАктивизацииСтроки(Элемент)
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОрдераВРаботе
&НаКлиенте
Процедура ОрдераВРаботеПриИзменении(Элемент)
Оповестить("ИзменениеСписка_ОрдераВРаботе", Новый Структура);
КонецПроцедуры
&НаКлиенте
Процедура ОрдераВРаботеПриАктивизацииСтроки(Элемент)
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура СоздатьЗадания(Команда)
ОчиститьСообщения();
Отказ = Ложь;
Если Не ЗначениеЗаполнено(Склад) Тогда
ТекстСообщения = НСтр("ru='Перед выполнением операции необходимо выбрать склад.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,,,Отказ);
КонецЕсли;
Если Не Отказ Тогда
Структура = Новый Структура;
Структура.Вставить("Помещение",Помещение);
Структура.Вставить("Склад",Склад);
ФормаПараметры = Новый Структура("Заголовок, Операция, ПараметрОбъект", "УправлениеПоступлением", "ФормированиеЗаданий",Структура);
Ответ = Неопределено;
ОткрытьФорму("Документ.ОтборРазмещениеТоваров.Форма.ФормаНастроек",ФормаПараметры,ЭтаФорма,,,, Новый ОписаниеОповещения("СоздатьЗаданияЗавершение", ЭтотОбъект, Новый Структура("Структура", Структура)), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьЗаданияЗавершение(Результат, ДополнительныеПараметры) Экспорт
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Обработка.УправлениеПоступлением.Форма.Оповещение.СоздатьЗаданияЗавершение");
Структура = ДополнительныеПараметры.Структура;
Ответ = Результат;
ВыделенныеСтроки = Новый Массив;
Если ПоВсейНоменклатуре <> 0 Тогда
Для Каждого СтрМас Из Элементы.ПулНоменклатурыРазмещение.ВыделенныеСтроки Цикл
ДанныеСтроки = Элементы.ПулНоменклатурыРазмещение.ДанныеСтроки(СтрМас);
СтрТабл = Новый Структура;
СтрТабл.Вставить("Номенклатура",ДанныеСтроки.Номенклатура);
СтрТабл.Вставить("Характеристика",ДанныеСтроки.Характеристика);
СтрТабл.Вставить("Серия",ДанныеСтроки.Серия);
СтрТабл.Вставить("Назначение",ДанныеСтроки.Назначение);
ВыделенныеСтроки.Добавить(СтрТабл);
КонецЦикла;
КонецЕсли;
Если Ответ = КодВозвратаДиалога.ОК Тогда
СоздатьЗаданияСервер(ВыделенныеСтроки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВзятьЗаданияВРаботу(Команда)
Оповещение = Новый ОписаниеОповещения("ВзятьЗаданияВРаботуЗавершение", ЭтотОбъект);
СкладыКлиент.ВзятьЗаданияВРаботу(ЭтаФорма, Элементы.ЗаданияВРаботе , "УправлениеПоступлением", Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВзятьЗаданияВРаботуЗавершение(Результат, ДополнительныеПараметры) Экспорт
УстановитьОтборыВОсновныхСписках();
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьЗадания(Команда)
Оповещение = Новый ОписаниеОповещения("ВыполнитьЗаданияЗавершение", ЭтотОбъект);
СкладыКлиент.ОтметитьВыполнениеЗаданийБезОшибок(ЭтаФорма, Элементы.ЗаданияВРаботе, "ОтборРазмещение", Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьЗаданияЗавершение(Результат, ДополнительныеПараметры) Экспорт
УстановитьОтборыВОсновныхСписках();
КонецПроцедуры
&НаКлиенте
Процедура СоздатьОрдер(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Обработка.УправлениеПоступлением.Форма.Команда.СоздатьОрдер");
ОчиститьСообщения();
ТекущиеДанные = Элементы.РаспоряженияНаПоступление.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
Основание = Новый Структура;
Основание.Вставить("Распоряжение", ТекущиеДанные.Распоряжение);
Основание.Вставить("Отправитель", ТекущиеДанные.Отправитель);
Основание.Вставить("Склад", Склад);
Основание.Вставить("Помещение", Помещение);
Основание.Вставить("ЗонаПриемки", ЗонаПриемки);
Основание.Вставить("ДатаВходящегоДокумента", ТекущиеДанные.ДатаВходящегоДокумента);
Основание.Вставить("НомерВходящегоДокумента", ТекущиеДанные.НомерВходящегоДокумента);
Основание.Вставить("ДатаПоступления", ДатаПоступления);
Основание.Вставить("ХозяйственнаяОперация", ТекущиеДанные.ХозяйственнаяОперация);
ОткрытьФорму("Документ.ПриходныйОрдерНаТовары.Форма.ФормаДокумента",
Новый Структура("Основание",Основание));
Иначе
ТекстПредупреждения = НСтр("ru = 'Выберите распоряжение на поступление товаров.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСпискиПоступление(Команда)
ОбновитьСписки("Поступление", РаспоряжениеНаПоступление());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСпискиРазмещение(Команда)
ОбновитьСписки("Размещение");
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьДанныеВТСД(Команда)
ПараметрыФормы = Новый Структура("ВариантЗаполнения, СкладПриемки, ДатаПриемки", "ПоРаспоряжениямНаПриемку", Склад, ДатаПоступления);
ОткрытьФорму("Обработка.ВыгрузкаБазыТоваровВТСД.Форма", ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура ПечатьЭтикетокПоВыделеннымСтрокамНоменклатуры(Команда)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПоказыватьКолонкуКоличествоВДокументе", Истина);
СтруктураДействий.Вставить("УстановитьРежимПечатиИзДокумента");
СтруктураДействий.Вставить("УстановитьРежим", "ПечатьЭтикеток");
СтруктураДействий.Вставить("ЗаполнитьКоличествоЭтикетокПоДокументу");
СтруктураДействий.Вставить("ЗаполнитьТаблицуТоваров");
МассивТовары = Новый Массив;
Для каждого ИдентификаторСтрокиПула Из Элементы.ПулНоменклатурыРазмещение.ВыделенныеСтроки Цикл
СтрокаПула = Элементы.ПулНоменклатурыРазмещение.ДанныеСтроки(ИдентификаторСтрокиПула);
СтрокаТовар = Новый Структура;
СтрокаТовар.Вставить("Номенклатура", СтрокаПула.Номенклатура);
СтрокаТовар.Вставить("Характеристика", СтрокаПула.Характеристика);
СтрокаТовар.Вставить("Количество", СтрокаПула.Разместить);
СтрокаТовар.Вставить("Упаковка", СтрокаПула.Упаковка);
МассивТовары.Добавить(СтрокаТовар);
КонецЦикла;
СтруктураРезультат = Новый Структура;
СтруктураРезультат.Вставить("Товары", Новый ФиксированныйМассив(МассивТовары));
СтруктураРезультат.Вставить("СтруктураДействий", СтруктураДействий);
АдресХранилища = ПоместитьВоВременноеХранилище(СтруктураРезультат);
ОткрытьФорму(
"Обработка.ПечатьЭтикетокИЦенников.Форма.ФормаТовары",
Новый Структура("АдресВХранилище, НазначениеШаблона", АдресХранилища, Неопределено));
КонецПроцедуры
&НаКлиенте
Процедура ПечатьЭтикетокПоРаспоряжению(Команда)
Если Элементы.РаспоряженияНаПоступление.ТекущиеДанные = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Команда не может быть выполнена для указанного объекта!'");
КонецЕсли;
АдресХранилища = ДанныеДляПечатиЭтикетокПоРаспоряжению(Элементы.РаспоряженияНаПоступление.ТекущиеДанные.Распоряжение);
ОткрытьФорму(
"Обработка.ПечатьЭтикетокИЦенников.Форма.ФормаТовары",
Новый Структура("АдресВХранилище, НазначениеШаблона", АдресХранилища, Неопределено));
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
Если Найти(Команда.Имя, "ОрдераВРаботе") Тогда
Список = Элементы.ОрдераВРаботе;
Иначе
Список = Элементы.ЗаданияВРаботе;
КонецЕсли;
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Список);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
Если Найти(Контекст.ИмяКомандыВФорме, "ОрдераВРаботе") Тогда
Список = Элементы.ОрдераВРаботе;
Иначе
Список = Элементы.ЗаданияВРаботе;
КонецЕсли;
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Список, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаПоступление Тогда
Список = Элементы.ОрдераВРаботе;
ИначеЕсли Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаРазмещение Тогда
Список = Элементы.ЗаданияВРаботе;
КонецЕсли;
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Список);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ДоступныКомандыЭДО = Истина;
ЭтоКомандаТекущиеДелаЭДО = СтрНайти(Команда.Имя, "ТекущиеДелаЭДО");
ЭтоКомандаПроизвольныйДокумент = СтрНайти(Команда.Имя, "ПроизвольныйДокумент");
Если Не ЭтоКомандаТекущиеДелаЭДО И Не ЭтоКомандаПроизвольныйДокумент Тогда
Если Элементы.ОрдераВРаботе.ТекущиеДанные <> Неопределено Тогда
ТекущийДокумент = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Элементы.ОрдераВРаботе.ТекущиеДанные, "Ссылка");
Если ЗначениеЗаполнено(ТекущийДокумент) Тогда
РезультатыПроверки = ЭлектронноеВзаимодействиеУТВызовСервера.ПроверитьНаличиеПараметровЭДПоИсточнику(ТекущийДокумент);
ДоступныКомандыЭДО = РезультатыПроверки.Получить("ЕстьЭДО");
Если РезультатыПроверки.Получить("ЕстьЭДО") Тогда
Если РезультатыПроверки.Получить("Направление") = "Входящий" Тогда
ОбменСКонтрагентамиУТКлиент.ИзменитьДоступностьКомандыПерезаполнить(ЭтотОбъект, Истина);
Иначе
ОбменСКонтрагентамиУТКлиент.ИзменитьДоступностьКомандыПерезаполнить(ЭтотОбъект, Ложь);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Иначе
ДоступныКомандыЭДО = Ложь;
КонецЕсли;
КонецЕсли;
Если Не ДоступныКомандыЭДО Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для данного типа документов ЭДО не предусмотрен.'"));
Возврат;
КонецЕсли;
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтотОбъект, Элементы.ОрдераВРаботе);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКомандыЭДО()
ОбменСКонтрагентамиКлиент.ОбновитьКоманды(ЭтотОбъект, Элементы.ОрдераВРаботе);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьВидимостьСостоянияЭДО()
ОбменСКонтрагентамиКлиент.ОбработчикОбновленияВидимостьСостоянияЭДО(ЭтотОбъект, Элементы.ПредставлениеСостояния);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПулНоменклатурыРазмещениеСкладскаяГруппаНоменклатуры.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПулНоменклатурыРазмещениеСкладскаяГруппаУпаковок.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПулНоменклатурыРазмещение.ОшибкаВОбластиХранения");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ПолеСОшибкойФон);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПулНоменклатурыРазмещениеУпаковка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПулНоменклатурыРазмещение.ОшибкаВУпаковке");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ПолеСОшибкойФон);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПулНоменклатурыРазмещениеНоменклатура.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПулНоменклатурыРазмещение.ОшибкаВНоменклатуре");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.ПолеСОшибкойФон);
КонецПроцедуры
#Область ЗаполнениеИИнициализация
&НаСервере
Процедура ЗаполнитьСкладПоУмолчанию()
СтруктураЗаполнения = Новый Структура("Склад");
ОбщегоНазначенияУТ.ОбработкаЗаполнения(СтруктураЗаполнения, Неопределено, Неопределено);
Склад = СтруктураЗаполнения.Склад;
Если НЕ ЗначениеЗаполнено(Склад) Тогда
Склад = ЗначениеНастроекПовтИсп.ПолучитьСкладПоУмолчанию(Склад);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ГруппаСтраницыПриСменеСтраницыСервер(ИмяТекущейСтраницы)
ТекущаяСтраница = Элементы[ИмяТекущейСтраницы];
Если ТекущаяСтраница = Элементы.СтраницаПоступление Тогда
ЗонаПриемки = Справочники.СкладскиеЯчейки.ЗонаПриемкиПоУмолчанию(Склад, Помещение, ЗонаПриемки);
Элементы.Склад.Доступность = Истина;
Элементы.Помещение.Доступность = Истина;
Элементы.ЗонаПриемки.АвтоОтметкаНезаполненного = Ложь;
Элементы.ЗонаПриемки.ОтметкаНезаполненного = Ложь;
ИначеЕсли ТекущаяСтраница = Элементы.СтраницаРазмещение Тогда
Элементы.Склад.Доступность = Ложь;
Элементы.Помещение.Доступность = Ложь;
Элементы.ЗонаПриемки.АвтоОтметкаНезаполненного = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Функция СсылкаНаЭлементСпискаПоШтрихкоду(Штрихкод)
Менеджеры = Новый Массив();
Менеджеры.Добавить(ПредопределенноеЗначение("Документ.ОтборРазмещениеТоваров.ПустаяСсылка"));
Возврат ШтрихкодированиеПечатныхФормКлиент.ПолучитьСсылкуПоШтрихкодуТабличногоДокумента(Штрихкод, Менеджеры);
КонецФункции
&НаКлиенте
Процедура ОбработатьШтрихкоды(Данные)
Если Не ШтрихкодированиеНоменклатурыКлиент.ШтрихкодыВалидны(Данные) Тогда
Возврат;
КонецЕсли;
МассивСсылок = СсылкаНаЭлементСпискаПоШтрихкоду(Данные.Штрихкод);
Если МассивСсылок.Количество() > 0 Тогда
Ссылка = МассивСсылок[0];
Элементы.ЗаданияВРаботе.ТекущаяСтрока = Ссылка;
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаСтраницы.ПодчиненныеЭлементы.СтраницаРазмещение;
ПоказатьЗначение(Неопределено, Ссылка);
Иначе
ШтрихкодированиеПечатныхФормКлиент.ОбъектНеНайден(Данные.Штрихкод);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Процедура СоздатьЗаданияСервер(ВыделенныеСтроки)
ТаблицаВыделеннойНоменклатуры = Новый ТаблицаЗначений;
ТаблицаВыделеннойНоменклатуры.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ТаблицаВыделеннойНоменклатуры.Колонки.Добавить("Характеристика",Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
ТаблицаВыделеннойНоменклатуры.Колонки.Добавить("Назначение",Новый ОписаниеТипов("СправочникСсылка.Назначения"));
ТаблицаВыделеннойНоменклатуры.Колонки.Добавить("Серия",Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
Если ПоВсейНоменклатуре <> 0 Тогда
Для Каждого СтрМас Из ВыделенныеСтроки Цикл
ЗаполнитьЗначенияСвойств(ТаблицаВыделеннойНоменклатуры.Добавить(), СтрМас);
КонецЦикла;
КонецЕсли;
Менеджер = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Менеджер;
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Назначение КАК Назначение,
| Таблица.Серия КАК Серия
|ПОМЕСТИТЬ ТаблицаНоменклатурыДляЗапроса
|ИЗ
| &ТаблицаВыделеннойНоменклатуры КАК Таблица
|;
|
|
|ВЫБРАТЬ
| ТоварыВЯчейкахОстатки.Номенклатура КАК Номенклатура,
| ТоварыВЯчейкахОстатки.Характеристика КАК Характеристика,
| ТоварыВЯчейкахОстатки.Назначение КАК Назначение,
| ТоварыВЯчейкахОстатки.Серия,
| ТоварыВЯчейкахОстатки.Упаковка КАК Упаковка,
| ВЫБОР
| КОГДА ТоварыВЯчейкахОстатки.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.КоличествоШтук)
| ТОГДА ВЫРАЗИТЬ(ТоварыВЯчейкахОстатки.ВНаличииОстаток - ТоварыВЯчейкахОстатки.КОтборуОстаток - 0.5 КАК ЧИСЛО(15, 0))
| ИНАЧЕ ТоварыВЯчейкахОстатки.ВНаличииОстаток - ТоварыВЯчейкахОстатки.КОтборуОстаток
| КОНЕЦ КАК КоличествоУпаковок
|ПОМЕСТИТЬ ТаблицаНоменклатуры
|ИЗ
| РегистрНакопления.ТоварыВЯчейках.Остатки(
| ,
| (&ПоВсейНоменклатуре
| ИЛИ (Номенклатура, Характеристика, Серия, Назначение) В
| (ВЫБРАТЬ
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Серия КАК Серия,
| Таблица.Назначение КАК Назначение
| ИЗ
| ТаблицаНоменклатурыДляЗапроса КАК Таблица))
| И Ячейка = &ЗоныПриемки) КАК ТоварыВЯчейкахОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ПолитикиУчетСерий
| ПО ТоварыВЯчейкахОстатки.Номенклатура.ВидНоменклатуры = ПолитикиУчетСерий.Ссылка
| И (ПолитикиУчетСерий.Склад = &Склад)
|ГДЕ
| ТоварыВЯчейкахОстатки.ВНаличииОстаток - ТоварыВЯчейкахОстатки.КОтборуОстаток > 0
|;
|
|
|УНИЧТОЖИТЬ ТаблицаНоменклатурыДляЗапроса";
Запрос.УстановитьПараметр("ЗоныПриемки", ЗонаПриемки);
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("ТаблицаВыделеннойНоменклатуры", ТаблицаВыделеннойНоменклатуры);
Запрос.УстановитьПараметр("ПоВсейНоменклатуре", ПоВсейНоменклатуре = 0);
Результаты = Запрос.ВыполнитьПакет();
Выборка = Результаты[1].Выбрать();
Выборка.Следующий();
Если Выборка.Количество = 0 Тогда
ТекстСообщения = НСтр("ru = 'Задания на размещение не сформированы: все товары или уже размещены, или по ним уже есть задания на размещение.'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
Возврат;
КонецЕсли;
ОшибкаПроверки = Ложь;
Если НастройкаФормированияПоРабочимУчасткам = "ПоОдномуРабочемуУчастку" Тогда
СтруктураВозврата = СкладыСервер.РазместитьТоварВЯчейках(Менеджер, Склад, Помещение, РабочийУчасток, ЗонаПриемки, ОшибкаПроверки, Ложь);
Иначе
СтруктураВозврата = СкладыСервер.РазместитьТоварВЯчейках(Менеджер, Склад, Помещение, Справочники.РабочиеУчастки.ПустаяСсылка(), ЗонаПриемки, ОшибкаПроверки, Ложь);
КонецЕсли;
Если ОшибкаПроверки Тогда
Возврат;
КонецЕсли;
Если СтруктураВозврата.ТаблицаРезультатов.Количество() = 0 Тогда
ТекстСообщения = НСтр("ru='Задания на размещение не сформированы: не удалось разместить номенклатуру согласно правилам размещения.'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
Возврат;
КонецЕсли;
Если НастройкаФормированияПоРабочимУчасткам = "СРазбиениемПоРабочимУчасткам" Тогда
ЗапросУчастки = Новый Запрос;
ЗапросУчастки.Текст = "ВЫБРАТЬ
| РабочиеУчастки.Ссылка КАК РабочийУчасток,
| РабочиеУчастки.ОграничиватьПоВесу,
| РабочиеУчастки.ОграничениеПоВесу,
| РабочиеУчастки.ОграничиватьПоОбъему,
| РабочиеУчастки.ОграничениеПоОбъему
|ИЗ
| Справочник.РабочиеУчастки КАК РабочиеУчастки
|ГДЕ
| РабочиеУчастки.Владелец = &Склад
| И РабочиеУчастки.Помещение = &Помещение";
ЗапросУчастки.УстановитьПараметр("Склад",Склад);
ЗапросУчастки.УстановитьПараметр("Помещение",Помещение);
ТаблицаРабочихУчастков = ЗапросУчастки.Выполнить().Выгрузить();
НоваяСтрока = ТаблицаРабочихУчастков.Добавить();
НоваяСтрока.РабочийУчасток = Справочники.РабочиеУчастки.ПустаяСсылка();
НоваяСтрока.ОграничиватьПоОбъему = Ложь;
НоваяСтрока.ОграничиватьПоВесу = Ложь;
Иначе
ТаблицаРабочихУчастков = Новый ТаблицаЗначений;
ТаблицаРабочихУчастков.Колонки.Добавить("РабочийУчасток", Новый ОписаниеТипов("СправочникСсылка.РабочиеУчастки"));
НоваяСтрока = ТаблицаРабочихУчастков.Добавить();
Если НастройкаФормированияПоРабочимУчасткам = "БезРазбиенияПоРабочимУчасткам" Тогда
НоваяСтрока.РабочийУчасток = Справочники.РабочиеУчастки.ПустаяСсылка();
Иначе
НоваяСтрока.РабочийУчасток = РабочийУчасток;
КонецЕсли;
КонецЕсли;
НевозможныйНабор = 9999999999;
Для Каждого СтрокаРабочийУчасток Из ТаблицаРабочихУчастков Цикл
Если НастройкаФормированияПоРабочимУчасткам = "СРазбиениемПоРабочимУчасткам" Тогда
МаксимальныйОбъем = ?(СтрокаРабочийУчасток.ОграничиватьПоОбъему, СтрокаРабочийУчасток.ОграничениеПоОбъему, НевозможныйНабор);
МаксимальныйВес = ?(СтрокаРабочийУчасток.ОграничиватьПоВесу, СтрокаРабочийУчасток.ОграничениеПоВесу, НевозможныйНабор);
Иначе
МаксимальныйОбъем = ?(ОграничиватьПоОбъему, ОграничениеПоОбъему, НевозможныйНабор);
МаксимальныйВес = ?(ОграничиватьПоВесу, ОграничениеПоВесу, НевозможныйНабор);
КонецЕсли;
Если НастройкаФормированияПоРабочимУчасткам <> "БезРазбиенияПоРабочимУчасткам" Тогда
НайденныеСтроки = СтруктураВозврата.ТаблицаРезультатов.НайтиСтроки(Новый Структура("РабочийУчасток",СтрокаРабочийУчасток.РабочийУчасток));
ТаблицаРезультата = СтруктураВозврата.ТаблицаРезультатов.Скопировать(НайденныеСтроки);
Если ТаблицаРезультата.Количество() = 0
И ТаблицаРабочихУчастков.Количество() = 1 Тогда
ТекстСообщения = НСтр("ru = 'Нет товаров для размещения по рабочему участку %РабочийУчасток%'");
ТекстСообщения = СтрЗаменить(ТекстСообщения," %РабочийУчасток%", СтрокаРабочийУчасток.РабочийУчасток);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
Иначе
ТаблицаРезультата = СтруктураВозврата.ТаблицаРезультатов;
КонецЕсли;
ТаблицаРезультата = РазбитьСтрокиПоОграничениям(ТаблицаРезультата, МаксимальныйОбъем, МаксимальныйВес);
ОбъемДокумента = 0;
ВесДокумента = 0;
ТекущийДокумент = НовоеЗаданиеНаРазмещение(СтрокаРабочийУчасток.РабочийУчасток);
ТаблицаЗаполнения = ТаблицаРезультата.СкопироватьКолонки();
КоличествоОбработано = 0;
Для Каждого СтрТабл Из ТаблицаРезультата Цикл
Если (ОбъемДокумента + СтрТабл.ОбъемУпаковки * СтрТабл.КоличествоУпаковок) > МаксимальныйОбъем
Или (ВесДокумента + СтрТабл.ВесУпаковки * СтрТабл.КоличествоУпаковок) > МаксимальныйВес Тогда
СкладыСервер.ДополнитьМногооборотнойТаройТаблицуРазмещения(ТаблицаЗаполнения);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ТаблицаЗаполнения, ТекущийДокумент.ТоварыРазмещение);
ЗаписатьДокумент(ТекущийДокумент, ОбъемДокумента, ВесДокумента);
ОбъемДокумента = 0;
ВесДокумента = 0;
ТекущийДокумент = НовоеЗаданиеНаРазмещение(СтрокаРабочийУчасток.РабочийУчасток);
ТаблицаЗаполнения.Очистить();
КонецЕсли;
НоваяСтрока = ТаблицаЗаполнения.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрТабл);
ОбъемДокумента = ОбъемДокумента + СтрТабл.ОбъемУпаковки * СтрТабл.КоличествоУпаковок;
ВесДокумента = ВесДокумента + СтрТабл.ВесУпаковки * СтрТабл.КоличествоУпаковок;
КоличествоОбработано = КоличествоОбработано + 1;
КонецЦикла;
Если ТаблицаЗаполнения.Количество() > 0 Тогда
СкладыСервер.ДополнитьМногооборотнойТаройТаблицуРазмещения(ТаблицаЗаполнения);
ОбщегоНазначенияКлиентСервер.ДополнитьТаблицу(ТаблицаЗаполнения, ТекущийДокумент.ТоварыРазмещение);
ЗаписатьДокумент(ТекущийДокумент,ОбъемДокумента,ВесДокумента);
КонецЕсли;
КонецЦикла;
Менеджер.Закрыть();
УстановитьОтборыВОсновныхСписках();
КонецПроцедуры
&НаСервере
Функция РазбитьСтрокиПоОграничениям(РазмещениеТоваровВЯчейках, МаксимальныйОбъем, МаксимальныйВес)
ТаблицаРезультата = РазмещениеТоваровВЯчейках.СкопироватьКолонки();
СтрокиСПересчетомКоличества = Новый Массив;
Для Каждого ОписаниеРазмещения Из РазмещениеТоваровВЯчейках Цикл
ОсталосьРазместить = ОписаниеРазмещения.КоличествоУпаковок;
МаксимальноеКоличествоПоОбъему = МаксимальноеКоличествоПоОграничению(
ОписаниеРазмещения.ОбъемУпаковки,
МаксимальныйОбъем,
ОсталосьРазместить);
МаксимальноеКоличествоПоВесу = МаксимальноеКоличествоПоОграничению(
ОписаниеРазмещения.ВесУпаковки,
МаксимальныйВес,
ОсталосьРазместить);
МаксимальноеКоличествоРазмещения = Мин(МаксимальноеКоличествоПоОбъему, МаксимальноеКоличествоПоВесу);
ПересчитыватьКоличество = МаксимальноеКоличествоРазмещения < ОсталосьРазместить;
Пока ОсталосьРазместить <> 0 Цикл
СтрокаРазмещения = ТаблицаРезультата.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаРазмещения, ОписаниеРазмещения);
Если ОсталосьРазместить > МаксимальноеКоличествоРазмещения Тогда
РазмещаемоеКоличествоУпаковок = МаксимальноеКоличествоРазмещения;
Иначе
РазмещаемоеКоличествоУпаковок = ОсталосьРазместить;
КонецЕсли;
СтрокаРазмещения.КоличествоУпаковок = РазмещаемоеКоличествоУпаковок;
ОсталосьРазместить = ОсталосьРазместить - РазмещаемоеКоличествоУпаковок;
Если ПересчитыватьКоличество Тогда
СтрокиСПересчетомКоличества.Добавить(СтрокаРазмещения);
КонецЕсли;
КонецЦикла;
КонецЦикла;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(СтрокиСПересчетомКоличества, СтруктураДействий,
ТаблицаРезультата);
Возврат ТаблицаРезультата;
КонецФункции
&НаСервереБезКонтекста
Функция МаксимальноеКоличествоПоОграничению(Значение, Ограничение, ЗначениеПоУмолчанию)
Если Значение = 0 Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;
Возврат Цел(Ограничение / Значение);
КонецФункции
&НаСервере
Функция НовоеЗаданиеНаРазмещение(РабочийУчасток)
ДокументОбъект = Документы.ОтборРазмещениеТоваров.СоздатьДокумент();
ДокументОбъект.Дата = ТекущаяДатаСеанса();
ДокументОбъект.Статус = Перечисления.СтатусыОтборовРазмещенийТоваров.Подготовлено;
ДокументОбъект.ВидОперации = Перечисления.ВидыОперацийОтбораРазмещенияТоваров.Размещение;
ДокументОбъект.Склад = Склад;
ДокументОбъект.Помещение = Помещение;
ДокументОбъект.ЗонаПриемки = ЗонаПриемки;
ДокументОбъект.Ответственный = Пользователи.ТекущийПользователь();
ДокументОбъект.РабочийУчасток = РабочийУчасток;
ДокументОбъект.Исполнитель = ?(НазначитьИсполнителя, Исполнитель, Справочники.Пользователи.ПустаяСсылка());
Возврат ДокументОбъект;
КонецФункции
&НаСервере
Процедура ЗаписатьДокумент(ДокументОбъект, Объем, Вес)
Попытка
ПараметрыУказаниСерий = НоменклатураСервер.ПараметрыУказанияСерий(ДокументОбъект, Документы.ОтборРазмещениеТоваров);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(ДокументОбъект,ПараметрыУказаниСерий.Размещение);
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецПроцедуры
&НаСервере
Процедура СкладПомещениеПриИзмененииСервер()
СтруктураУстанавливаемыхПараметров = Новый Структура;
Если ЗначениеЗаполнено(Склад) Тогда
СтруктураУстанавливаемыхПараметров.Вставить("Склад",Склад);
СтруктураУстанавливаемыхПараметров.Вставить("Помещение",Помещение);
ИспользоватьАдресноеХранение = СкладыСервер.ИспользоватьАдресноеХранение(Склад, Помещение);
Если ИспользоватьАдресноеХранение Тогда
ЗонаПриемки = Справочники.СкладскиеЯчейки.ЗонаПриемкиПоУмолчанию(Склад, Помещение, ЗонаПриемки);
Элементы.ГруппаСтраницы.ОтображениеСтраниц = ОтображениеСтраницФормы.ЗакладкиСверху;
Элементы.ЗонаПриемки.Видимость = Истина;
Иначе
Элементы.ГруппаСтраницы.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
Элементы.ЗонаПриемки.Видимость = Ложь;
КонецЕсли;
Иначе
СтруктураУстанавливаемыхПараметров.Вставить("Склад",Неопределено);
СтруктураУстанавливаемыхПараметров.Вставить("Помещение",Неопределено);
Элементы.ГруппаСтраницы.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
Элементы.ЗонаПриемки.Видимость = Ложь;
КонецЕсли;
РабочийУчасток = Справочники.РабочиеУчастки.ПустаяСсылка();
УстановитьПараметрыФункциональныхОпцийФормы(СтруктураУстанавливаемыхПараметров);
ИспользоватьСтатусыПриходныхОрдеров = ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыПриходныхОрдеров", Новый Структура("Склад", Склад));
Элементы.СостояниеПоступленияФильтр.СписокВыбора.Очистить();
Если ИспользоватьСтатусыПриходныхОрдеров Тогда
Элементы.СостояниеПоступленияФильтр.СписокВыбора.Добавить("", НСтр("ru = 'Все'"));
Элементы.СостояниеПоступленияФильтр.СписокВыбора.Добавить("ВсеКПриемке", НСтр("ru = 'Все к приемке'"));
Элементы.СостояниеПоступленияФильтр.СписокВыбора.Добавить("ОжидаетсяПриемка", НСтр("ru = 'Ожидается приемка'"));
Элементы.СостояниеПоступленияФильтр.СписокВыбора.Добавить("ВПроцессеПриемки", НСтр("ru = 'В процессе приемки'"));
Элементы.СостояниеПоступленияФильтр.СписокВыбора.Добавить("Перепоставка", НСтр("ru = 'Перепоставка'"));
Элементы.СостояниеПоступленияФильтр.СписокВыбора.Добавить("ОжидаетсяОформлениеНакладных", НСтр("ru = 'Ожидается оформление накладных'"));
СостояниеПоступленияФильтр = "ВсеКПриемке";
Иначе
Элементы.СостояниеПоступленияФильтр.СписокВыбора.Добавить("", НСтр("ru = 'Все'"));
Элементы.СостояниеПоступленияФильтр.СписокВыбора.Добавить("ОжидаетсяПриемка", НСтр("ru = 'Ожидается приемка'"));
Элементы.СостояниеПоступленияФильтр.СписокВыбора.Добавить("Перепоставка", НСтр("ru = 'Перепоставка'"));
Элементы.СостояниеПоступленияФильтр.СписокВыбора.Добавить("ОжидаетсяОформлениеНакладных", НСтр("ru = 'Ожидается оформление накладных'"));
СостояниеПоступленияФильтр = "ОжидаетсяПриемка";
КонецЕсли;
Элементы.ОрдераВРаботеСтатус.Видимость = ИспользоватьСтатусыПриходныхОрдеров;
Элементы.СоздатьВозвратНепринятыхТоваров.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач", Новый Структура("Склад", Склад));
УстановитьОтборыВОсновныхСписках();
ЗаполнитьСписокВыбораФильтраОрдеров();
УстановитьВидимостьПомещений();
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовкиКолонокВесОбъем()
ЕдиницаИзмеренияОбъема = Строка(Константы.ЕдиницаИзмеренияОбъема.Получить());
ЕдиницаИзмеренияВеса = Строка(Константы.ЕдиницаИзмеренияВеса.Получить());
ЗаголовокЭлемента = НСтр("ru='Объем, %ЕдиницаИзмерения%'");
ЗаголовокЭлемента = СтрЗаменить(ЗаголовокЭлемента, "%ЕдиницаИзмерения%", ЕдиницаИзмеренияОбъема);
Элементы.ЗаданияВРаботе.ПодчиненныеЭлементы.ПеремещенияВРаботеОбъемРазмещение.Заголовок = ЗаголовокЭлемента;
ЗаголовокЭлемента = НСтр("ru='Вес (брутто), %ЕдиницаИзмерения%'");
ЗаголовокЭлемента = СтрЗаменить(ЗаголовокЭлемента, "%ЕдиницаИзмерения%", ЕдиницаИзмеренияВеса);
Элементы.ЗаданияВРаботе.ПодчиненныеЭлементы.ПеремещенияВРаботеВесРазмещение.Заголовок = ЗаголовокЭлемента;
КонецПроцедуры
&НаСервере
Процедура УстановитьОтборыВОсновныхСписках()
ЗаполнитьРаспоряженияНаПоступление();
ПулНоменклатурыРазмещение.Параметры.УстановитьЗначениеПараметра("ЗонаПриемки", ЗонаПриемки);
СписокСтатусов = Новый СписокЗначений;
СписокСтатусов.Добавить(Перечисления.СтатусыОтборовРазмещенийТоваров.Подготовлено);
СписокСтатусов.Добавить(Перечисления.СтатусыОтборовРазмещенийТоваров.ВРаботе);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ЗаданияВРаботе, "Статус", СписокСтатусов, ВидСравненияКомпоновкиДанных.ВСписке,,ФильтрЗаданий <> "");
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ЗаданияВРаботе, "Проведен", Истина,,,ФильтрЗаданий <> "");
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ЗаданияВРаботе, "Склад", Склад, ВидСравненияКомпоновкиДанных.ВСписке,,Истина);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ЗаданияВРаботе, "Помещение", Помещение, ВидСравненияКомпоновкиДанных.ВСписке,,Истина);
Элементы.ПулНоменклатурыРазмещение.Обновить();
КонецПроцедуры
&НаСервере
Процедура УстановитьОтборыВЗависимыхСписках(РаспоряжениеНаПоступление)
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ЗаданияВРаботе, "ЗонаПриемки", ЗонаПриемки,
ВидСравненияКомпоновкиДанных.ВСписке,,ЗначениеЗаполнено(ЗонаПриемки));
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ОрдераВРаботе, "Ссылка.ЗонаПриемки",ЗонаПриемки,
ВидСравненияКомпоновкиДанных.ВСписке,,ЗначениеЗаполнено(ЗонаПриемки));
СписокТипов = Новый СписокЗначений;
СписокТипов.Добавить(Тип("ДокументСсылка.ПриходныйОрдерНаТовары"));
СписокТипов.Добавить(Тип("ДокументСсылка.ОрдерНаПеремещениеТоваров"));
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ОрдераВРаботе, "Тип", СписокТипов, ВидСравненияКомпоновкиДанных.ВСписке,,Истина);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ОрдераВРаботе, "Склад", Склад, ВидСравненияКомпоновкиДанных.Равно,,Истина);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ОрдераВРаботе, "ПомещениеПолучатель", Помещение, ВидСравненияКомпоновкиДанных.Равно,,ЗначениеЗаполнено(Помещение));
СписокСтатусов = Новый СписокЗначений;
СписокСтатусов.Добавить(Перечисления.СтатусыПриходныхОрдеров.КПоступлению);
СписокСтатусов.Добавить(Перечисления.СтатусыПриходныхОрдеров.ВРаботе);
СписокСтатусов.Добавить(Перечисления.СтатусыПриходныхОрдеров.ТребуетсяОбработка);
СписокСтатусов.Добавить(Перечисления.СтатусыОрдеровНаПеремещение.КОтгрузке);
Если ФильтрОрдеров = "" Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ОрдераВРаботе, "Статус", СписокСтатусов, ВидСравненияКомпоновкиДанных.ВСписке,,Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ОрдераВРаботе, "Ссылка", Неопределено, ВидСравненияКомпоновкиДанных.Равно,,Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ОрдераВРаботе, "Проведен", Истина, ВидСравненияКомпоновкиДанных.Равно,,Ложь);
ИначеЕсли ФильтрОрдеров = "КПриемке" Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ОрдераВРаботе, "Статус", СписокСтатусов, ВидСравненияКомпоновкиДанных.ВСписке,,Истина);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ОрдераВРаботе, "Ссылка", Неопределено, ВидСравненияКомпоновкиДанных.Равно,,Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ОрдераВРаботе, "Проведен", Истина, ВидСравненияКомпоновкиДанных.Равно,,Истина);
ИначеЕсли ФильтрОрдеров = "ПоТекущемуРаспоряжению" Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ОрдераВРаботе, "Статус", СписокСтатусов, ВидСравненияКомпоновкиДанных.ВСписке,,Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ОрдераВРаботе, "Проведен", Истина, ВидСравненияКомпоновкиДанных.Равно,,Ложь);
ПриходныеОрдера = ПриходныеОрдераПоРаспоряжению(РаспоряжениеНаПоступление);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ОрдераВРаботе, "Ссылка", ПриходныеОрдера, ВидСравненияКомпоновкиДанных.ВСписке,,Истина);
КонецЕсли;
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.ГруппаСтраницы.ПодчиненныеЭлементы.СтраницаРазмещение Тогда
Элементы.ПулНоменклатурыРазмещение.Обновить();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСписки(НаборСписков, РаспоряжениеНаПоступление = Неопределено)
Если НаборСписков = "Поступление" Тогда
ЗаполнитьРаспоряженияНаПоступление();
Элементы.ОрдераВРаботе.Обновить();
УстановитьОтборыВЗависимыхСписках(РаспоряжениеНаПоступление);
Иначе
Элементы.ПулНоменклатурыРазмещение.Обновить();
Элементы.ЗаданияВРаботе.Обновить();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция РаспоряжениеНаПоступление()
Если Элементы.РаспоряженияНаПоступление.ТекущиеДанные <> Неопределено Тогда
Возврат Элементы.РаспоряженияНаПоступление.ТекущиеДанные.Распоряжение;
КонецЕсли;
Возврат ПредопределенноеЗначение("Документ.ПриобретениеТоваровУслуг.ПустаяСсылка");
КонецФункции
&НаСервере
Процедура ЗаполнитьСписокВыбораФильтраОрдеров()
СписокВыбора = Элементы.ФильтрОрдеров.СписокВыбора;
ЭлементСписка = СписокВыбора.НайтиПоЗначению("КПриемке");
Если СкладыСервер.ИспользоватьСтатусыОрдеров(Склад, Истина, Ложь) Тогда
Если ЭлементСписка = Неопределено Тогда
ЭлементСписка = СписокВыбора.Вставить(1, "КПриемке");
КонецЕсли;
ЭлементСписка.Представление = НСтр("ru = 'К приемке'");
Иначе
Если ЭлементСписка <> Неопределено Тогда
Если ФильтрОрдеров = "КПриемке" Тогда
ФильтрОрдеров = СписокВыбора[0].Значение;
КонецЕсли;
СписокВыбора.Удалить(ЭлементСписка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьПомещений()
ИспользоватьСкладскиеПомещения = СкладыСервер.ИспользоватьСкладскиеПомещения(Склад,ТекущаяДатаСеанса());
Элементы.Помещение.Видимость = ИспользоватьСкладскиеПомещения;
Элементы.ОрдераВРаботеПомещение.Видимость = ИспользоватьСкладскиеПомещения;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьРаспоряженияНаПоступление()
Если Не ЗначениеЗаполнено(Склад) Тогда
РаспоряженияНаПоступление.Очистить();
Возврат;
КонецЕсли;
Если Не Пользователи.ЭтоПолноправныйПользователь(Неопределено) Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Склады.Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.Ссылка = &Склад";
Запрос.УстановитьПараметр("Склад", Склад);
Если Запрос.Выполнить().Пустой() Тогда
РаспоряженияНаПоступление.Очистить();
Возврат;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыКПоступлениюОстаткиТекущие.ДокументПоступления КАК ДокументПоступления,
| ТоварыКПоступлениюОстаткиТекущие.Отправитель КАК Отправитель,
| ТоварыКПоступлениюОстаткиТекущие.Номенклатура КАК Номенклатура,
| ТоварыКПоступлениюОстаткиТекущие.Характеристика КАК Характеристика,
| ТоварыКПоступлениюОстаткиТекущие.Назначение КАК Назначение,
| ТоварыКПоступлениюОстаткиТекущие.Склад КАК Склад,
| ТоварыКПоступлениюОстаткиТекущие.КОформлениюОрдеровОстаток КАК КОформлениюОрдеровОстаток,
| ТоварыКПоступлениюОстаткиТекущие.КОформлениюПоступленийПоОрдерамОстаток КАК КОформлениюПоступленийПоОрдерамОстаток,
| ТоварыКПоступлениюОстаткиТекущие.ПринимаетсяОстаток КАК ПринимаетсяОстаток,
| ТоварыКПоступлениюОстаткиТекущие.ХозяйственнаяОперация КАК ХозяйственнаяОперацияДляФильтра
|ПОМЕСТИТЬ ТоварыКПоступлениюОстаткиТекущие
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Остатки(, Склад = &Склад) КАК ТоварыКПоступлениюОстаткиТекущие
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение,
| Склад,
| ДокументПоступления,
| Отправитель
|;
|
|
|ВЫБРАТЬ
| ТоварыКОформлениюОрдеровОбороты.Номенклатура КАК Номенклатура,
| ТоварыКОформлениюОрдеровОбороты.Характеристика КАК Характеристика,
| ТоварыКОформлениюОрдеровОбороты.Назначение КАК Назначение,
| ТоварыКОформлениюОрдеровОбороты.Склад КАК Склад,
| ТоварыКОформлениюОрдеровОбороты.ДокументПоступления КАК ДокументПоступления,
| ТоварыКОформлениюОрдеровОбороты.Отправитель КАК Отправитель,
| ТоварыКОформлениюОрдеровОбороты.КОформлениюОрдеровОборот КАК КОформлениюОрдеровОборот,
| ТоварыКОформлениюОрдеровОбороты.КОформлениюОрдеровПриход КАК КОформлениюОрдеровПриход,
| ТоварыКОформлениюОрдеровОбороты.КОформлениюОрдеровРасход КАК КОформлениюОрдеровРасход,
| ТоварыКОформлениюОрдеровОбороты.ПринимаетсяОборот КАК ПринимаетсяОборот,
| ТоварыКОформлениюОрдеровОбороты.ПринимаетсяПриход КАК ПринимаетсяПриход,
| ТоварыКОформлениюОрдеровОбороты.ПринимаетсяРасход КАК ПринимаетсяРасход
|ПОМЕСТИТЬ ТоварыКОформлениюОрдеровОбороты
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Обороты(, , , &ФильтрОборотов) КАК ТоварыКОформлениюОрдеровОбороты
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение,
| Склад,
| ДокументПоступления,
| Отправитель
|;
|
|
|ВЫБРАТЬ
| ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления КАК ДокументПоступления,
| ТоварыКПоступлениюОстаткиНаДату.Отправитель КАК Отправитель,
| ТоварыКПоступлениюОстаткиНаДату.Номенклатура КАК Номенклатура,
| ТоварыКПоступлениюОстаткиНаДату.Характеристика КАК Характеристика,
| ТоварыКПоступлениюОстаткиНаДату.Назначение КАК Назначение,
| МИНИМУМ(ТоварыКПоступлениюОстаткиНаДату.Серия) КАК Серия,
| ТоварыКПоступлениюОстаткиНаДату.Склад КАК Склад,
| ТоварыКПоступлениюОстаткиНаДату.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| СУММА(ТоварыКПоступлениюОстаткиНаДату.КОформлениюОрдеровОстаток) КАК КОформлениюОрдеровОстаток,
| МАКСИМУМ(ТоварыКПоступлениюОстаткиНаДату.КОформлениюПоступленийПоОрдерамОстаток) КАК КОформлениюПоступленийПоОрдерамОстаток,
| СУММА(ТоварыКПоступлениюОстаткиНаДату.ПринимаетсяОстаток) КАК ПринимаетсяОстаток
|ПОМЕСТИТЬ ТоварыКПоступлениюОстаткиНаДату
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Остатки(
| &ДатаПоступления,
| (Номенклатура, Характеристика, Назначение, Склад, ДокументПоступления, Отправитель, ХозяйственнаяОперация) В
| (ВЫБРАТЬ
| ФильтрТоваровКПоступлению.Номенклатура,
| ФильтрТоваровКПоступлению.Характеристика,
| ФильтрТоваровКПоступлению.Назначение,
| ФильтрТоваровКПоступлению.Склад,
| ФильтрТоваровКПоступлению.ДокументПоступления,
| ФильтрТоваровКПоступлению.Отправитель,
| ФильтрТоваровКПоступлению.ХозяйственнаяОперацияДляФильтра КАК ХозяйственнаяОперация
| ИЗ
| ТоварыКПоступлениюОстаткиТекущие КАК ФильтрТоваровКПоступлению)) КАК ТоварыКПоступлениюОстаткиНаДату
|
|СГРУППИРОВАТЬ ПО
| ТоварыКПоступлениюОстаткиНаДату.Характеристика,
| ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления,
| ТоварыКПоступлениюОстаткиНаДату.Номенклатура,
| ТоварыКПоступлениюОстаткиНаДату.Отправитель,
| ТоварыКПоступлениюОстаткиНаДату.Склад,
| ТоварыКПоступлениюОстаткиНаДату.ХозяйственнаяОперация,
| ТоварыКПоступлениюОстаткиНаДату.Назначение
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Назначение,
| Склад,
| ДокументПоступления,
| Отправитель,
| ХозяйственнаяОперация
|;
|
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Распоряжение КАК Распоряжение,
| ВложенныйЗапрос.Отправитель КАК Отправитель,
| ВложенныйЗапрос.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| МАКСИМУМ(ВложенныйЗапрос.Номер) КАК Номер,
| МАКСИМУМ(ВложенныйЗапрос.Дата) КАК Дата,
| МАКСИМУМ(ВложенныйЗапрос.НомерВходящегоДокумента) КАК НомерВходящегоДокумента,
| МАКСИМУМ(ВложенныйЗапрос.ДатаВходящегоДокумента) КАК ДатаВходящегоДокумента,
| МИНИМУМ(ВложенныйЗапрос.Перепоставка) КАК Перепоставка,
| МИНИМУМ(ВложенныйЗапрос.Состояние) КАК Состояние,
| ВЫБОР
| КОГДА МИНИМУМ(ВложенныйЗапрос.Состояние) = 1
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияПоступленияТоваров.ВПроцессеПриемки)
| КОГДА МИНИМУМ(ВложенныйЗапрос.Состояние) = 2
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияПоступленияТоваров.ОжидаетсяПриемка)
| КОГДА МИНИМУМ(ВложенныйЗапрос.Состояние) = 3
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияПоступленияТоваров.Перепоставка)
| КОГДА МИНИМУМ(ВложенныйЗапрос.Состояние) = 4
| ТОГДА ЗНАЧЕНИЕ(Перечисление.СостоянияПоступленияТоваров.ОжидаетсяОформлениеНакладных)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.СостоянияПоступленияТоваров.ПустаяСсылка)
| КОНЕЦ КАК СостояниеПоступления,
| ВложенныйЗапрос.ТипДокумента КАК ТипДокумента
|ИЗ
| (ВЫБРАТЬ
| ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления КАК Распоряжение,
| ТоварыКПоступлениюОстаткиНаДату.Отправитель КАК Отправитель,
| ТоварыКПоступлениюОстаткиНаДату.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ВЫБОР
| КОГДА ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления ССЫЛКА Справочник.СоглашенияСПоставщиками
| ТОГДА ВЫРАЗИТЬ(ВЫРАЗИТЬ(ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления КАК Справочник.СоглашенияСПоставщиками).Номер КАК СТРОКА(11))
| КОГДА ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления ССЫЛКА Справочник.ДоговорыКонтрагентов
| ТОГДА ВЫРАЗИТЬ(ВЫРАЗИТЬ(ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления КАК Справочник.ДоговорыКонтрагентов).Номер КАК СТРОКА(11))
| ИНАЧЕ ЕСТЬNULL(РеестрДокументов.НомерДокументаИБ, """")
| КОНЕЦ КАК Номер,
| ВЫБОР
| КОГДА ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления ССЫЛКА Справочник.СоглашенияСПоставщиками
| ТОГДА ВЫРАЗИТЬ(ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления КАК Справочник.СоглашенияСПоставщиками).Дата
| КОГДА ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления ССЫЛКА Справочник.ДоговорыКонтрагентов
| ТОГДА ВЫРАЗИТЬ(ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления КАК Справочник.ДоговорыКонтрагентов).Дата
| ИНАЧЕ ЕСТЬNULL(РеестрДокументов.ДатаДокументаИБ, ДАТАВРЕМЯ(1, 1, 1))
| КОНЕЦ КАК Дата,
| ВЫБОР
| КОГДА ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления ССЫЛКА Справочник.СоглашенияСПоставщиками
| ИЛИ ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления ССЫЛКА Справочник.ДоговорыКонтрагентов
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(РеестрДокументов.НомерПервичногоДокумента, """")
| КОНЕЦ КАК НомерВходящегоДокумента,
| ВЫБОР
| КОГДА ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления ССЫЛКА Справочник.СоглашенияСПоставщиками
| ИЛИ ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления ССЫЛКА Справочник.ДоговорыКонтрагентов
| ТОГДА ДАТАВРЕМЯ(1, 1, 1)
| ИНАЧЕ ЕСТЬNULL(РеестрДокументов.ДатаПервичногоДокумента, ДАТАВРЕМЯ(1, 1, 1))
| КОНЕЦ КАК ДатаВходящегоДокумента,
| ВЫБОР
| КОГДА ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления ССЫЛКА Справочник.СоглашенияСПоставщиками
| ТОГДА ВЫРАЗИТЬ(ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления КАК Справочник.СоглашенияСПоставщиками).Наименование
| КОГДА ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления ССЫЛКА Справочник.ДоговорыКонтрагентов
| ТОГДА ВЫРАЗИТЬ(ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления КАК Справочник.ДоговорыКонтрагентов).Наименование
| КОГДА &УсловиеИспользованияХозяйственнойОперацииРеестра
| ТОГДА ПРЕДСТАВЛЕНИЕ(РеестрДокументов.ХозяйственнаяОперация)
| ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ТИПЗНАЧЕНИЯ(ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления))
| КОНЕЦ КАК ТипДокумента,
| ВЫБОР
| КОГДА ТоварыКПоступлениюОстаткиНаДату.КОформлениюОрдеровОстаток - ТоварыКПоступлениюОстаткиНаДату.ПринимаетсяОстаток < 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК Перепоставка,
| ВЫБОР
| КОГДА &УсловиеСостояниеВПроцессеПриемки
| ТОГДА 1
| КОГДА &УсловиеСостояниеОжидаетсяПриемка
| ТОГДА 2
| КОГДА &УсловиеСостояниеПерепоставка
| ТОГДА 3
| КОГДА ЕСТЬNULL(ТоварыКПоступлениюОстаткиНаДату.КОформлениюПоступленийПоОрдерамОстаток, 0) <> 0
| ТОГДА 4
| КОГДА &УсловиеСостояниеДопустимоеОтклонение
| ТОГДА 6
| ИНАЧЕ 404
| КОНЕЦ КАК Состояние
| ИЗ
| ТоварыКПоступлениюОстаткиНаДату КАК ТоварыКПоступлениюОстаткиНаДату
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыКПоступлениюОстаткиТекущие КАК ТоварыКПоступлениюОстаткиТекущие
| ПО ТоварыКПоступлениюОстаткиНаДату.Номенклатура = ТоварыКПоступлениюОстаткиТекущие.Номенклатура
| И ТоварыКПоступлениюОстаткиНаДату.Характеристика = ТоварыКПоступлениюОстаткиТекущие.Характеристика
| И ТоварыКПоступлениюОстаткиНаДату.Назначение = ТоварыКПоступлениюОстаткиТекущие.Назначение
| И ТоварыКПоступлениюОстаткиНаДату.Отправитель = ТоварыКПоступлениюОстаткиТекущие.Отправитель
| И ТоварыКПоступлениюОстаткиНаДату.Склад = ТоварыКПоступлениюОстаткиТекущие.Склад
| И ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления = ТоварыКПоступлениюОстаткиТекущие.ДокументПоступления
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыКОформлениюОрдеровОбороты КАК ТоварыКОформлениюОрдеровОбороты
| ПО ТоварыКПоступлениюОстаткиНаДату.Номенклатура = ТоварыКОформлениюОрдеровОбороты.Номенклатура
| И ТоварыКПоступлениюОстаткиНаДату.Характеристика = ТоварыКОформлениюОрдеровОбороты.Характеристика
| И ТоварыКПоступлениюОстаткиНаДату.Назначение = ТоварыКОформлениюОрдеровОбороты.Назначение
| И ТоварыКПоступлениюОстаткиНаДату.Отправитель = ТоварыКОформлениюОрдеровОбороты.Отправитель
| И ТоварыКПоступлениюОстаткиНаДату.Склад = ТоварыКОформлениюОрдеровОбороты.Склад
| И ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления = ТоварыКОформлениюОрдеровОбороты.ДокументПоступления
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РеестрДокументов КАК РеестрДокументов
| ПО ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления = РеестрДокументов.Ссылка
| И (НЕ РеестрДокументов.ДополнительнаяЗапись)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ДоговорыКонтрагентов.Ссылка,
| ДоговорыКонтрагентов.Партнер,
| ДоговорыКонтрагентов.ХозяйственнаяОперация,
| ВЫРАЗИТЬ(ДоговорыКонтрагентов.Номер КАК СТРОКА(11)),
| ДоговорыКонтрагентов.Дата,
| """",
| ДАТАВРЕМЯ(1, 1, 1),
| ДоговорыКонтрагентов.Наименование,
| ЛОЖЬ,
| 5
| ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
| ГДЕ
| ДоговорыКонтрагентов.ВариантПриемкиТоваров = ЗНАЧЕНИЕ(Перечисление.ВариантыПриемкиТоваров.ПоДоговорамБезЗаказовИНакладных)
| И ДоговорыКонтрагентов.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.Действует)
| И НЕ ДоговорыКонтрагентов.ПометкаУдаления) КАК ВложенныйЗапрос
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Распоряжение,
| ВложенныйЗапрос.Отправитель,
| ВложенныйЗапрос.ХозяйственнаяОперация,
| ВложенныйЗапрос.ТипДокумента
|
|ИМЕЮЩИЕ
| МИНИМУМ(ВложенныйЗапрос.Состояние) В (&УсловиеПоСостоянию)
|
|УПОРЯДОЧИТЬ ПО
| Дата";
УсловиеИспользованияХозяйственнойОперацииРеестра = "ТИПЗНАЧЕНИЯ(ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления) = ТИП(Документ.ПрочееОприходованиеТоваров)";
УсловиеИспользованияХозяйственнойОперацииРеестра = УсловиеИспользованияХозяйственнойОперацииРеестра + "
| ИЛИ ТИПЗНАЧЕНИЯ(ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления) = ТИП(Документ.ДвижениеПродукцииИМатериалов)";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеИспользованияХозяйственнойОперацииРеестра", УсловиеИспользованияХозяйственнойОперацииРеестра);
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров =
Константы.ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров.Получить();
Если ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров <> 0 Тогда
УсловиеСостояниеОжидаетсяПриемка = "ТоварыКПоступлениюОстаткиНаДату.КОформлениюОрдеровОстаток > ВЫБОР
| КОГДА ТоварыКПоступлениюОстаткиНаДату.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины
| В (&МерныеТипыЕдиницИзмерений)
| ТОГДА &ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100
| * ЕСТЬNULL(ТоварыКОформлениюОрдеровОбороты.КОформлениюОрдеровПриход,0)
| ИНАЧЕ 0
| КОНЕЦ
| И ТоварыКПоступлениюОстаткиНаДату.ПринимаетсяОстаток = 0";
УсловиеСостояниеПерепоставка = "ТоварыКПоступлениюОстаткиТекущие.КОформлениюОрдеровОстаток < ВЫБОР
| КОГДА ТоварыКПоступлениюОстаткиНаДату.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины
| В (&МерныеТипыЕдиницИзмерений)
| ТОГДА - &ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100
| * ЕСТЬNULL(ТоварыКОформлениюОрдеровОбороты.КОформлениюОрдеровПриход,0)
| ИНАЧЕ 0
| КОНЕЦ
| И ТоварыКПоступлениюОстаткиТекущие.ПринимаетсяОстаток = 0";
УсловиеСостояниеВПроцессеПриемки = "ТоварыКПоступлениюОстаткиНаДату.ПринимаетсяОстаток > 0";
УсловиеСостояниеДопустимоеОтклонение = "ТоварыКПоступлениюОстаткиНаДату.КОформлениюОрдеровОстаток <= ВЫБОР
| КОГДА ТоварыКПоступлениюОстаткиНаДату.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В(&МерныеТипыЕдиницИзмерений)
| ТОГДА &ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100
| * ЕСТЬNULL(ТоварыКОформлениюОрдеровОбороты.КОформлениюОрдеровПриход, 0)
| ИНАЧЕ 0
| КОНЕЦ
| И ТоварыКПоступлениюОстаткиТекущие.КОформлениюОрдеровОстаток >= ВЫБОР
| КОГДА ТоварыКПоступлениюОстаткиНаДату.Номенклатура.ЕдиницаИзмерения.ТипИзмеряемойВеличины В(&МерныеТипыЕдиницИзмерений)
| ТОГДА -&ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров / 100
| * ЕСТЬNULL(ТоварыКОформлениюОрдеровОбороты.КОформлениюОрдеровПриход, 0)
| ИНАЧЕ 0
| КОНЕЦ
| И ТоварыКПоступлениюОстаткиТекущие.ПринимаетсяОстаток = 0";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеСостояниеОжидаетсяПриемка", УсловиеСостояниеОжидаетсяПриемка);
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеСостояниеПерепоставка", УсловиеСостояниеПерепоставка);
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеСостояниеВПроцессеПриемки", УсловиеСостояниеВПроцессеПриемки);
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеСостояниеДопустимоеОтклонение",УсловиеСостояниеДопустимоеОтклонение);
ФильтрОборотов =
" (Номенклатура, Характеристика, Назначение, Склад, ДокументПоступления, Отправитель) В
| (ВЫБРАТЬ
| ТоварыКПоступлениюОстаткиТекущие.Номенклатура,
| ТоварыКПоступлениюОстаткиТекущие.Характеристика,
| ТоварыКПоступлениюОстаткиТекущие.Назначение,
| ТоварыКПоступлениюОстаткиТекущие.Склад,
| ТоварыКПоступлениюОстаткиТекущие.ДокументПоступления,
| ТоварыКПоступлениюОстаткиТекущие.Отправитель
| ИЗ
| ТоварыКПоступлениюОстаткиТекущие КАК ТоварыКПоступлениюОстаткиТекущие)";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ФильтрОборотов", ФильтрОборотов);
Иначе
УсловиеСостояниеОжидаетсяПриемка = "ТоварыКПоступлениюОстаткиНаДату.КОформлениюОрдеровОстаток > 0
| И ТоварыКПоступлениюОстаткиНаДату.ПринимаетсяОстаток = 0";
УсловиеСостояниеПерепоставка = "ТоварыКПоступлениюОстаткиТекущие.КОформлениюОрдеровОстаток < 0
| И ТоварыКПоступлениюОстаткиТекущие.ПринимаетсяОстаток = 0";
УсловиеСостояниеВПроцессеПриемки = "ТоварыКПоступлениюОстаткиНаДату.ПринимаетсяОстаток > 0";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеСостояниеПерепоставка", УсловиеСостояниеПерепоставка);
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеСостояниеОжидаетсяПриемка", УсловиеСостояниеОжидаетсяПриемка);
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеСостояниеВПроцессеПриемки", УсловиеСостояниеВПроцессеПриемки);
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&УсловиеСостояниеДопустимоеОтклонение","ЛОЖЬ");
Запрос.Текст = СтрЗаменить(Запрос.Текст,"&ФильтрОборотов", "ЛОЖЬ");
КонецЕсли;
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров =
Константы.ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров.Получить();
Запрос.УстановитьПараметр("ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров",
ДопустимоеОтклонениеОтгрузкиПриемкиМерныхТоваров);
Запрос.УстановитьПараметр("МерныеТипыЕдиницИзмерений",
Справочники.УпаковкиЕдиницыИзмерения.МерныеТипыЕдиницИзмерений());
Запрос.УстановитьПараметр("Склад", Склад);
Если ЗначениеЗаполнено(ДатаПоступления) Тогда
Запрос.УстановитьПараметр("ДатаПоступления", Новый Граница(КонецДня(ДатаПоступления), ВидГраницы.Включая));
Иначе
Запрос.УстановитьПараметр("ДатаПоступления", ДатаПоступления);
КонецЕсли;
СостоянияПоступления = Новый Массив;
СоотвествиеСостоянийИндексов = Новый Соответствие;
СоотвествиеСостоянийИндексов.Вставить(Перечисления.СостоянияПоступленияТоваров.ВПроцессеПриемки, 1);
СоотвествиеСостоянийИндексов.Вставить(Перечисления.СостоянияПоступленияТоваров.ОжидаетсяПриемка, 2);
СоотвествиеСостоянийИндексов.Вставить(Перечисления.СостоянияПоступленияТоваров.Перепоставка, 3);
СоотвествиеСостоянийИндексов.Вставить(Перечисления.СостоянияПоступленияТоваров.ОжидаетсяОформлениеНакладных, 4);
СоотвествиеСостоянийИндексов.Вставить(Перечисления.СостоянияПоступленияТоваров.ПустаяСсылка(),5);
Если СостояниеПоступленияФильтр = "" Тогда
Для Каждого ЗначениеПеречисления Из Перечисления.СостоянияПоступленияТоваров Цикл
СостоянияПоступления.Добавить(СоотвествиеСостоянийИндексов.Получить(ЗначениеПеречисления));
КонецЦикла;
СостоянияПоступления.Добавить(СоотвествиеСостоянийИндексов.Получить(Перечисления.СостоянияПоступленияТоваров.ПустаяСсылка()));
ИначеЕсли СостояниеПоступленияФильтр = "ВсеКПриемке" Тогда
СостоянияПоступления.Добавить(СоотвествиеСостоянийИндексов.Получить(Перечисления.СостоянияПоступленияТоваров.ОжидаетсяПриемка));
СостоянияПоступления.Добавить(СоотвествиеСостоянийИндексов.Получить(Перечисления.СостоянияПоступленияТоваров.ВПроцессеПриемки));
СостоянияПоступления.Добавить(СоотвествиеСостоянийИндексов.Получить(Перечисления.СостоянияПоступленияТоваров.ПустаяСсылка()));
Иначе
СостоянияПоступления.Добавить(СоотвествиеСостоянийИндексов.Получить(Перечисления.СостоянияПоступленияТоваров[СостояниеПоступленияФильтр]));
КонецЕсли;
СостоянияПоступления.Добавить(404);
Запрос.УстановитьПараметр("УсловиеПоСостоянию", СостоянияПоступления);
Если ЗначениеЗаполнено(Элементы.РаспоряженияНаПоступление.ТекущаяСтрока) Тогда
ТекущаяСтрокаРаспоряженияНаОтгрузку =
РаспоряженияНаПоступление.НайтиПоИдентификатору(Элементы.РаспоряженияНаПоступление.ТекущаяСтрока);
Если ТекущаяСтрокаРаспоряженияНаОтгрузку <> Неопределено Тогда
ТекущееРаспоряжение = ТекущаяСтрокаРаспоряженияНаОтгрузку.Распоряжение;
КонецЕсли;
Иначе
ТекущееРаспоряжение = Неопределено;
КонецЕсли;
РаспоряженияНаПоступление.Загрузить(Запрос.Выполнить().Выгрузить());
Если ЗначениеЗаполнено(ТекущееРаспоряжение) Тогда
Строки = РаспоряженияНаПоступление.НайтиСтроки(Новый Структура("Распоряжение", ТекущееРаспоряжение));
Если Строки.Количество() > 0 Тогда
Элементы.РаспоряженияНаПоступление.ТекущаяСтрока = Строки[0].ПолучитьИдентификатор();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьВозвратНепринятыхТоваров(Команда)
Основание = Новый Структура;
Основание.Вставить("Склад", Склад);
Основание.Вставить("Помещение", Помещение);
Основание.Вставить("ЗонаПриемки", ЗонаПриемки);
Основание.Вставить("СкладскаяОперация", ПредопределенноеЗначение("Перечисление.СкладскиеОперации.ВозвратНеПринятыхТоваров"));
ОткрытьФорму("Документ.ПриходныйОрдерНаТовары.Форма.ФормаДокумента",
Новый Структура("Основание",Основание));
КонецПроцедуры
&НаСервере
Функция ДанныеДляПечатиЭтикетокПоРаспоряжению(Распоряжение)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыКПоступлениюОстаткиНаДату.Номенклатура КАК Номенклатура,
| ТоварыКПоступлениюОстаткиНаДату.Характеристика КАК Характеристика,
| ТоварыКПоступлениюОстаткиНаДату.Назначение,
| ВЫБОР
| КОГДА ТоварыКПоступлениюОстаткиНаДату.КОформлениюОрдеровОстаток - ТоварыКПоступлениюОстаткиНаДату.ПринимаетсяОстаток > 0
| ТОГДА ТоварыКПоступлениюОстаткиНаДату.КОформлениюОрдеровОстаток - ТоварыКПоступлениюОстаткиНаДату.ПринимаетсяОстаток
| ИНАЧЕ 0
| КОНЕЦ КАК Количество,
| ВЫБОР
| КОГДА ТоварыКПоступлениюОстаткиТекущие.КОформлениюОрдеровОстаток - ТоварыКПоступлениюОстаткиТекущие.ПринимаетсяОстаток < 0
| ТОГДА -(ТоварыКПоступлениюОстаткиТекущие.КОформлениюОрдеровОстаток - ТоварыКПоступлениюОстаткиТекущие.ПринимаетсяОстаток)
| ИНАЧЕ 0
| КОНЕЦ КАК Перепоставка,
| ТоварыКПоступлениюОстаткиНаДату.ПринимаетсяОстаток КАК Принимается
|ИЗ
| РегистрНакопления.ТоварыКПоступлению.Остатки(
| &ДатаПоступления,
| ДокументПоступления = &Распоряжение
| И Склад = &Склад) КАК ТоварыКПоступлениюОстаткиНаДату
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПоступлению.Остатки(
| ,
| ДокументПоступления = &Распоряжение
| И Склад = &Склад) КАК ТоварыКПоступлениюОстаткиТекущие
| ПО ТоварыКПоступлениюОстаткиНаДату.ДокументПоступления = ТоварыКПоступлениюОстаткиТекущие.ДокументПоступления
| И ТоварыКПоступлениюОстаткиНаДату.Номенклатура = ТоварыКПоступлениюОстаткиТекущие.Номенклатура
| И ТоварыКПоступлениюОстаткиНаДату.Характеристика = ТоварыКПоступлениюОстаткиТекущие.Характеристика
| И ТоварыКПоступлениюОстаткиНаДату.Склад = ТоварыКПоступлениюОстаткиТекущие.Склад
| И ТоварыКПоступлениюОстаткиНаДату.Назначение = ТоварыКПоступлениюОстаткиТекущие.Назначение";
Запрос.УстановитьПараметр("Распоряжение", Распоряжение);
Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("ДатаПоступления", ДатаПоступления);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПоказыватьКолонкуКоличествоВДокументе", Истина);
СтруктураДействий.Вставить("УстановитьРежимПечатиИзДокумента");
СтруктураДействий.Вставить("УстановитьРежим", "ПечатьЭтикеток");
СтруктураДействий.Вставить("ЗаполнитьКоличествоЭтикетокПоДокументу");
СтруктураДействий.Вставить("ЗаполнитьТаблицуТоваров");
СтруктураРезультат = Новый Структура;
СтруктураРезультат.Вставить("Товары", Запрос.Выполнить().Выгрузить());
СтруктураРезультат.Вставить("СтруктураДействий", СтруктураДействий);
Возврат ПоместитьВоВременноеХранилище(СтруктураРезультат);
КонецФункции
&НаСервереБезКонтекста
Функция ПриходныеОрдераПоРаспоряжению(Распоряжение)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПриходныйОрдерНаТовары.Ссылка
|ИЗ
| Документ.ПриходныйОрдерНаТовары КАК ПриходныйОрдерНаТовары
|ГДЕ
| ПриходныйОрдерНаТовары.Распоряжение = &Распоряжение";
Запрос.УстановитьПараметр("Распоряжение", Распоряжение);
ПриходныеОрдера = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
Возврат ПриходныеОрдера;
КонецФункции
&НаСервере
Процедура ИзменениеСпискаОрдераВРаботе(РаспоряжениеНаПоступление)
ЗаполнитьРаспоряженияНаПоступление();
УстановитьОтборыВЗависимыхСписках(РаспоряжениеНаПоступление);
Элементы.ПулНоменклатурыРазмещение.Обновить();
КонецПроцедуры
&НаСервере
Процедура СкладПриИзмененииСервер(РаспоряжениеНаПоступление)
СкладПомещениеПриИзмененииСервер();
УстановитьОтборыВЗависимыхСписках(РаспоряжениеНаПоступление);
КонецПроцедуры
&НаСервере
Процедура УстановитьОтборыВоВсехСписках(РаспоряжениеНаПоступление)
УстановитьОтборыВОсновныхСписках();
УстановитьОтборыВЗависимыхСписках(РаспоряжениеНаПоступление);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область Производительность
&НаКлиенте
Процедура ОрдераВРаботеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Обработка.УправлениеПоступлением.Форма.Элемент.ОрдераВРаботе.Выбор");
СтандартнаяОбработка = Ложь;
ОбщегоНазначенияУТКлиент.ИзменитьЭлемент(Элемент);
Если Поле = Элементы.ПредставлениеСостояния Тогда
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаСписка(Элемент.ТекущиеДанные.Ссылка, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти