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