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