#Область ОписаниеПеременных
&НаКлиенте
Перем ПараметрыОбработчикаОжидания;
&НаКлиенте
Перем ЗадаватьВопросПередЗакрытием;
&НаКлиенте
Перем ВыполняетсяЗакрытие;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Склад = Параметры.Склад;
ИменаОбъектов = Справочники.Склады.ИменаОбъектовСПустымПомещением(Склад);
ЗаполняемыеСправочники = "";
ЕстьРабочиеУчастки = Ложь;
ЕстьСправочныеЯчейки = Ложь;
ЕстьХранениеОстатков = Ложь;
Для Каждого СтрМас Из ИменаОбъектов Цикл
Если СтрМас = "СкладскиеЯчейки" Тогда
Текст = "- " + Метаданные.Справочники.СкладскиеЯчейки.ПредставлениеСписка + Символы.ПС;
ИначеЕсли СтрМас = "РабочиеУчастки" Тогда
Текст = "- " + Метаданные.Справочники.РабочиеУчастки.ПредставлениеСписка + Символы.ПС;
ЕстьРабочиеУчастки = Истина;
ИначеЕсли СтрМас = "ОбластиХранения" Тогда
Текст = "- " + Метаданные.Справочники.ОбластиХранения.ПредставлениеСписка + Символы.ПС;
ЕстьХранениеОстатков = Истина;
ИначеЕсли СтрМас = "ПравилаРазмещенияТоваровВЯчейках" Тогда
Текст = "- " + Метаданные.РегистрыСведений.ПравилаРазмещенияТоваровВЯчейках.ПредставлениеСписка + Символы.ПС;
ЕстьХранениеОстатков = Истина;
ИначеЕсли СтрМас = "РазмещениеНоменклатурыПоСкладскимЯчейкам" Тогда
Текст = "- " + Метаданные.РегистрыСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам.ПредставлениеСписка + Символы.ПС;
ЕстьСправочныеЯчейки = Истина;
Иначе
Текст = "";
КонецЕсли;
ЗаполняемыеСправочники = ЗаполняемыеСправочники + Текст;
КонецЦикла;
МассивОтборов = Новый Массив;
Если ЕстьРабочиеУчастки Тогда
ПараметрВыбора = Новый ПараметрВыбора("ИспользованиеРабочихУчастков", Перечисления.ИспользованиеСкладскихРабочихУчастков.Использовать);
МассивОтборов.Добавить(ПараметрВыбора);
КонецЕсли;
Если ЕстьХранениеОстатков Тогда
ПараметрВыбора = Новый ПараметрВыбора("НастройкаАдресногоХранения", Перечисления.НастройкиАдресногоХранения.ЯчейкиОстатки);
МассивОтборов.Добавить(ПараметрВыбора);
ИначеЕсли ЕстьСправочныеЯчейки Тогда
ПараметрВыбора = Новый ПараметрВыбора("НастройкаАдресногоХранения", Перечисления.НастройкиАдресногоХранения.ЯчейкиСправочно);
МассивОтборов.Добавить(ПараметрВыбора);
КонецЕсли;
Элементы.Помещение.ПараметрыВыбора = Новый ФиксированныйМассив(МассивОтборов);
УстановитьВидимостьНаСервере();
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ЗавершениеРаботы
И ЗадаватьВопросПередЗакрытием Тогда
Отказ = Истина;
ТекстПредупреждения = НСтр("ru = 'Работа помощника по заполнению реквизита ""Помещение"" в справочниках будет прервана.'");
Возврат;
КонецЕсли;
Если ВыполняетсяЗакрытие Тогда
Если Не ЗадаватьВопросПередЗакрытием Тогда
Возврат;
КонецЕсли;
НСтрока = НСтр("ru = 'Завершить работу с помощником?'");
Отказ = Истина;
ПоказатьВопрос(Новый ОписаниеОповещения("ПередЗакрытиемЗавершение", ЭтотОбъект), НСтрока, РежимДиалогаВопрос.ДаНет, ,КодВозвратаДиалога.Нет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытиемЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Да Тогда
ВыполняетсяЗакрытие = Истина;
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЗадаватьВопросПередЗакрытием = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура КомандаДалее(Команда)
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Помещение) Тогда
ТекстСообщения = НСтр("ru = 'Не заполнено поле ""Помещение"".'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения,,"Помещение");
Возврат;
КонецЕсли;
ПодключитьОбработчикОжидания("ОбработкаСправочников", 0.1, Истина);
Элементы.ПанельОсновная.ТекущаяСтраница = Элементы.СтраницаСостояниеОбработки;
Элементы.ПанельНавигации.ТекущаяСтраница = Элементы.СтраницаНавигацииОжидание;
КонецПроцедуры
&НаКлиенте
Процедура КомандаГотово(Команда)
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура КомандаОтмена(Команда)
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура СоздатьРезервнуюКопиюНажатие(Элемент)
ОткрытьФорму("Обработка.РезервноеКопированиеИБ.Форма");
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьНаСервере()
ЗначениеВидимости = ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюДанных");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Элементы,
"СинхронизацияДанных",
"Видимость",
ЗначениеВидимости);
КонецПроцедуры
&НаСервере
Функция ОбработкаСправочниковСервер()
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Склад",Склад);
ПараметрыЗаполнения.Вставить("Помещение",Помещение);
НаименованиеЗадания = НСтр("ru = 'Заполнение помещения в справочниках по складу ""%Склад%"".'");
НаименованиеЗадания = СтрЗаменить(НаименованиеЗадания, "%Склад%", Склад);
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.ОжидатьЗавершение = 0;
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеЗадания;
Результат = ДлительныеОперации.ВыполнитьВФоне(
"Справочники.Склады.ЗаполнитьПомещениеВСправочниках",
ПараметрыЗаполнения,
ПараметрыВыполнения);
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ОбработкаСправочников()
Результат = ОбработкаСправочниковСервер();
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ЗавершитьОбработку", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(Результат, ОповещениеОЗавершении, ПараметрыОжидания);
КонецПроцедуры
&НаКлиенте
Процедура ЗавершитьОбработку(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
Элементы.ПанельОсновная.ТекущаяСтраница = Элементы.СтраницаЗавершение;
Элементы.ПанельНавигации.ТекущаяСтраница = Элементы.СтраницаНавигацииОкончание;
Элементы.КомандаГотово.КнопкаПоУмолчанию = Истина;
ЗадаватьВопросПередЗакрытием = Ложь;
Оповестить("Склады_ЗаполненоПомещениеВСправочникахИРегистрах");
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Инициализация
ВыполняетсяЗакрытие = Ложь;
#КонецОбласти