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