Склады / Форма элемента / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;
	
	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
	
	Если Параметры.Свойство("ЗначенияЗаполнения") И Параметры.ЗначенияЗаполнения.Свойство("ТипСклада") Тогда
		ТипаСкладаПриИзмененииСервер();
	КонецЕсли;

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

	// СтандартныеПодсистемы.ВерсионированиеОбъектов
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
	
	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
	
	ОбновитьЗаголовокФормы(ЭтаФорма);
	НастроитьФормуЛокализация();
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.УправлениеДоступом

	ПриЧтенииСОграниченнымиПравами(ТекущийОбъект);
	
	// СтандартныеПодсистемы.КонтактнаяИнформация
	УправлениеКонтактнойИнформацией.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.КонтактнаяИнформация
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	ПриЧтенииСозданииНаСервере();

	МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
КонецПроцедуры

&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
	
	МассивНепроверяемыхРеквизитов = Новый Массив;
	
	Если Не Объект.ЦеховаяКладовая Тогда
		МассивНепроверяемыхРеквизитов.Добавить("Цех");
	КонецЕсли;
	
	ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);
	
	// СтандартныеПодсистемы.КонтактнаяИнформация
	УправлениеКонтактнойИнформацией.ОбработкаПроверкиЗаполненияНаСервере(ЭтаФорма, Объект, Отказ);
	// Конец СтандартныеПодсистемы.КонтактнаяИнформация
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

	ПередЗаписьюСОграниченнымиПравами(ТекущийОбъект);
	
	// СтандартныеПодсистемы.КонтактнаяИнформация
	УправлениеКонтактнойИнформацией.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.КонтактнаяИнформация
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	Если Не ТекущийОбъект.ПроверитьЗаполнение() Тогда
		Отказ = Истина;
	КонецЕсли;

	Если Не Отказ Тогда
		ТекущийОбъект.ДополнительныеСвойства.Вставить("ПропуститьОбновлениеФлагаКонтроляОперативныхОстатков");
	КонецЕсли;

	МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);

КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	// СтандартныеПодсистемы.КонтактнаяИнформация
	УправлениеКонтактнойИнформацией.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.КонтактнаяИнформация
	
	// подсистема запрета редактирования ключевых реквизитов объектов
	ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);
	УстановитьПараметрыФункциональныхОпцийФормы(Новый Структура("Склад",Объект.Ссылка));
	УстановитьДоступностьПолей();
	
	Если Объект.НастройкаАдресногоХранения = Перечисления.НастройкиАдресногоХранения.ЯчейкиОстатки
		И Не ПолучитьФункциональнуюОпцию("ИспользоватьУпаковкиНоменклатуры") Тогда
		ОповещатьОбОтключенныхУпаковках = Истина;
	КонецЕсли;

	МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);

	ОбновитьЗаголовокФормы(ЭтаФорма);
	
КонецПроцедуры

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

	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
		МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
		МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	Если ИмяСобытия = "Склады_ЗаполненоПомещениеВСправочникахИРегистрах" Тогда
		Элементы.ЗаполнениеПомещенияВСправочниках.Видимость = Ложь;
	КонецЕсли;
	
	Если ИмяСобытия = "ЗаписьНастроекКонтроляОбеспечения" И Параметр = Объект.Ссылка Тогда
		ОбновитьКоличествоИсключений();
	КонецЕсли;
	
	// СтандартныеПодсистемы.Свойства 
	Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
		ОбновитьЭлементыДополнительныхРеквизитов();
		УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.Свойства
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	
	Если ИсточникВыбора.ИмяФормы = "Справочник.Склады.Форма.ЗаполнениеУсловийОтветственногоХранения" Тогда
		ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение);
		УстановитьЗаголовокЭлементовОтветственногоХранения(ЭтаФорма);
	ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.НастройкиСбораЗаказовИКурьерскойДоставки.Форма.Настройки" Тогда
		Модифицированность = Истина;
		ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение);
		УстановитьЗаголовокЭлементовНастройкиСборкиЗаказовИКурьерскойДоставки(ЭтаФорма);
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ИспользоватьОрдернуюСхемуПриПоступленииПриИзменении(Элемент)
	
	ИспользоватьОрдернуюСхемуПриПоступленииПриИзмененииСервер();
	
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьОрдернуюСхемуПриОтгрузкеПриИзменении(Элемент)
	
	ИспользоватьОрдернуюСхемуПриОтгрузкеПриИзмененииСервер();
	
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостачПриИзменении(Элемент)
	
	ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостачПриИзмененииСервер();
	
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьСкладскиеПомещенияПриИзменении(Элемент)
	
	ИспользоватьСкладскиеПомещенияПриИзмененииСервер();
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкаАдресногоХраненияОчистка(Элемент, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;

КонецПроцедуры

&НаКлиенте
Процедура НастройкаАдресногоХраненияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	
	ДанныеВыбора = Новый СписокЗначений;
	ДанныеВыбора.Добавить(ПредопределенноеЗначение("Перечисление.НастройкиАдресногоХранения.НеИспользовать"));
	ДанныеВыбора.Добавить(ПредопределенноеЗначение("Перечисление.НастройкиАдресногоХранения.ЯчейкиСправочно"));
	Если Объект.ИспользоватьОрдернуюСхемуПриОтгрузке
		И Объект.ИспользоватьОрдернуюСхемуПриПоступлении
		И Объект.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач
		И Объект.ТипСклада <> ПредопределенноеЗначение("Перечисление.ТипыСкладов.РозничныйМагазин") Тогда
		ДанныеВыбора.Добавить(ПредопределенноеЗначение("Перечисление.НастройкиАдресногоХранения.ЯчейкиОстатки"));
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ИспользованиеРабочихУчастковНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ДанныеВыбора = Новый СписокЗначений;
	ДанныеВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ИспользованиеСкладскихРабочихУчастков.НеИспользовать"));
	ДанныеВыбора.Добавить(ПредопределенноеЗначение("Перечисление.ИспользованиеСкладскихРабочихУчастков.Использовать"));
	
КонецПроцедуры

&НаКлиенте
Процедура ИспользованиеРабочихУчастковОчистка(Элемент, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;

КонецПроцедуры

&НаКлиенте
Процедура ТипСкладаПриИзменении(Элемент)
	
	ТипаСкладаПриИзмененииСервер();
	
	ОбновитьПредставленияиВидимостьВидовЦенПоФорматуМагазина();
	
	ОбновитьЗаголовокФормы(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкаАдресногоХраненияПриИзменении(Элемент)
	
	НастройкаАдресногоХраненияПриИзмененииСервер();
	
КонецПроцедуры

&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
	
	// СтандартныеПодсистемы.Свойства
	Если ТекущаяСтраница.Имя = "ГруппаДополнительныеРеквизиты"
		И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
		
		СвойстваВыполнитьОтложеннуюИнициализацию();
		УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.Свойства
	
	// СтандартныеПодсистемы.КонтактнаяИнформация
	Если ТекущаяСтраница.Имя = ПараметрыКонтактнойИнформации.ГруппаКонтактнаяИнформация.ГруппаДляРазмещения
		И Не ПараметрыКонтактнойИнформации.ГруппаКонтактнаяИнформация.ВыполненаОтложеннаяИнициализация Тогда
		
		КонтактнаяИнформацияПриСменеСтраницы();
		
	КонецЕсли;
	// Конец СтандартныеПодсистемы.КонтактнаяИнформация
	
КонецПроцедуры

&НаКлиенте
Процедура ПорядокУказанияЗаданияНаПеревозкуПриИзменении(Элемент)
	Если ПорядокУказанияЗаданияНаПеревозку = "СобиратьТоварыВПорядкеДоставки" Тогда
		Объект.НачинатьОтгрузкуПослеФормированияЗаданияНаПеревозку = Истина; 
	Иначе
		Объект.НачинатьОтгрузкуПослеФормированияЗаданияНаПеревозку = Ложь; 
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ЦеховаяКладоваяПриИзменении(Элемент)
	ЦеховаяКладоваяПриИзмененииСервер();
КонецПроцедуры

&НаСервере
Процедура ЦеховаяКладоваяПриИзмененииСервер()
	
	Если Объект.ЦеховаяКладовая
		И ЗначениеЗаполнено(Объект.Подразделение) Тогда
		Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Подразделение, "ПроизводственноеПодразделение") Тогда
			Цех = Объект.Подразделение;
		Иначе
			Объект.Подразделение = Неопределено;
		КонецЕсли;
	Иначе
		Цех = Неопределено;
	КонецЕсли;
	
	СкладыКлиентСервер.СогласоватьЗначенияПризнаков(Объект);
	УстановитьДоступностьПолей();
	
КонецПроцедуры

&НаКлиенте
Процедура ЦехПриИзменении(Элемент)
	
	Объект.Подразделение = Цех;
	
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьИндивидуальныйВидЦеныПриИзмененииНаКлиенте()

	Если ИспользоватьИндивидуальныйВидЦены Тогда
	
		Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
			
			Возврат;
			
		КонецЕсли;

		РезультатОтключения = НайтиИндивидуальныйВидЦенСервер();
	
	Иначе
		
		Если Объект.ИндивидуальныйВидЦены.Пустая() Тогда
			
			Возврат;
			
		КонецЕсли;
		
//		ПоказатьОповещениеПользователя("Отключаем индивидуальный вид цены", , , , СтатусОповещенияПользователя.Информация );
		
		РезультатОтключения = ОтключитьИндивидуальныйВидЦенСервер();
		
		Если Не РезультатОтключения.Результат Тогда
			
			ИспользоватьИндивидуальныйВидЦены = Истина;
			
			ОчиститьСообщения();
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
				НСтр("ru='Возникла ошибка при отключении индивидуального прайс листа'") + РезультатОтключения.ОписаниеОшибки,
				Объект.Ссылка,
				);
			
		КонецЕсли;
		
	КонецЕсли;
		
КонецПроцедуры

&НаСервере
Функция ОтключитьИндивидуальныйВидЦенСервер()
	
	РезультатОтключения = Справочники.ВидыЦен.ОтключитьИндивидуальныйВидЦен(Объект.ИндивидуальныйВидЦены);

	Если РезультатОтключения.Результат Тогда
		
		Объект.ИндивидуальныйВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
		ОбновитьИндивидуальныйВидЦеныПредставление();
		
	КонецЕсли;
		
	Возврат РезультатОтключения;
	
КонецФункции

&НаСервере
Функция НайтиИндивидуальныйВидЦенСервер()
	
	РезультатПоиска = Справочники.ВидыЦен.НайтиИндивидуальныйВидЦенСервер(Объект.Ссылка);
	
	Если РезультатПоиска.Результат Тогда
		Объект.ИндивидуальныйВидЦены = РезультатПоиска.Ссылка;
		ОбновитьИндивидуальныйВидЦеныПредставление();
	КонецЕсли;
			
	Возврат РезультатПоиска;
	
КонецФункции

&НаКлиенте
Процедура ИспользоватьИндивидуальныйВидЦеныПриИзменении(Элемент)
	
	ИспользоватьИндивидуальныйВидЦеныПриИзмененииНаКлиенте();
	НастроитьВидимостьДоступностьЭлементовНастройкиИндивидуальногоВидаЦены(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Функция ПараметрыПереходаПоГиперссылке(ИмяЭлемента, Гиперссылка = "")
	
	Если ИмяЭлемента = "ГиперссылкаПерейтиПрайсЛист" Тогда
		
		ВидыЦен = Новый Массив();
		ВидыЦен.Добавить(Объект.УчетныйВидЦены);
		ВидыЦен.Добавить(Объект.РозничныйВидЦены);
		ВидыЦен.Добавить(Объект.ИндивидуальныйВидЦены);
		
		ПараметрыФормы = Новый Структура;
		ПараметрыФормы.Вставить("ВидыЦен",  ВидыЦен);
		
		ПараметрыПереходаПоГиперссылке = Новый Структура;
		ПараметрыПереходаПоГиперссылке.Вставить("ИмяФормы", "Обработка.ПрайсЛист.Форма.Форма");
		ПараметрыПереходаПоГиперссылке.Вставить("ПараметрыФормы",ПараметрыФормы);
		
	ИначеЕсли ИмяЭлемента = "ГиперссылкаПерейтиИсторияИзмененияЦен" Тогда
		
		ВидыЦен = Новый Массив();
		ВидыЦен.Добавить(Объект.УчетныйВидЦены);
		ВидыЦен.Добавить(Объект.РозничныйВидЦены);
		ВидыЦен.Добавить(Объект.ИндивидуальныйВидЦены);
		
		ПараметрыФормы = Новый Структура;
		ПараметрыФормы.Вставить("ВидыЦен",  ВидыЦен);
		
		ПараметрыПереходаПоГиперссылке = Новый Структура;
		Если ИспользуетсяЦенообразование25 Тогда
			ПараметрыПереходаПоГиперссылке.Вставить("ИмяФормы", "РегистрСведений.ЦеныНоменклатуры25.Форма.ФормаСписка");
		Иначе	
			ПараметрыПереходаПоГиперссылке.Вставить("ИмяФормы", "РегистрСведений.ЦеныНоменклатуры.Форма.ФормаСписка");
		КонецЕсли;
		ПараметрыПереходаПоГиперссылке.Вставить("ПараметрыФормы", ПараметрыФормы);
			
	КонецЕсли;
	
	Если Не ПараметрыПереходаПоГиперссылке.Свойство("РежимОткрытияОкнаФормы") Тогда
		ПараметрыПереходаПоГиперссылке.Вставить("РежимОткрытияОкнаФормы", РежимОткрытияОкнаФормы.Независимый);
	КонецЕсли;
	ПараметрыПереходаПоГиперссылке.Вставить("ИмяЭлемента", ИмяЭлемента);
	ПараметрыПереходаПоГиперссылке.Вставить("Гиперссылка", Гиперссылка);
	
	Возврат ПараметрыПереходаПоГиперссылке
КонецФункции

&НаКлиенте
Процедура ГиперссылкаПерейтиПрайсЛистОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ПараметрыПереходаПоГиперссылке = ПараметрыПереходаПоГиперссылке(Элемент.Имя);
	ГиперссылкаПерейтиСформироватьПараметрыИВопрос(ПараметрыПереходаПоГиперссылке);
КонецПроцедуры

&НаКлиенте
Процедура ГиперссылкаПерейтиИсторияИзмененияЦенОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ПараметрыПереходаПоГиперссылке = ПараметрыПереходаПоГиперссылке(Элемент.Имя);
	ГиперссылкаПерейтиСформироватьПараметрыИВопрос(ПараметрыПереходаПоГиперссылке);
КонецПроцедуры

&НаКлиенте
Процедура ГиперссылкаПерейтиСформироватьПараметрыИВопрос(ПараметрыПереходаПоГиперссылке)
	
	ОчиститьСообщения();
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка)
		Или Модифицированность Тогда
		
		ТекстВопроса = Нстр("ru = 'Данные еще не записаны.
		|Переход к дополнительной информации возможен только после записи элемента.
		|Записать элемент?'");
		
		ПоказатьВопрос(Новый ОписаниеОповещения("ГиперссылкаПерейтиВопросЗавершение", ЭтотОбъект, ПараметрыПереходаПоГиперссылке), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
		Возврат;
		
	КонецЕсли;
	
	ГиперссылкаПерейти(ПараметрыПереходаПоГиперссылке);
КонецПроцедуры

&НаКлиенте
Процедура ГиперссылкаПерейтиВопросЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	Если РезультатВопроса <> КодВозвратаДиалога.Да Тогда
		Возврат;
	КонецЕсли;
	
	Попытка
		ЭлементЗаписан = Записать();
	Исключение
		Возврат;
	КонецПопытки;
	
	Если Не ЭлементЗаписан Тогда
		Возврат;
	КонецЕсли;
	
	ПараметрыПереходаПоГиперссылке = ПараметрыПереходаПоГиперссылке(ДополнительныеПараметры.ИмяЭлемента,
																		ДополнительныеПараметры.Гиперссылка);
	ГиперссылкаПерейти(ПараметрыПереходаПоГиперссылке);
КонецПроцедуры

&НаКлиенте
Процедура ГиперссылкаПерейти(ПараметрыПереходаПоГиперссылке)
	
	Если ПараметрыПереходаПоГиперссылке.Свойство("ИмяФормы") Тогда
		ОткрытьФорму(ПараметрыПереходаПоГиперссылке.ИмяФормы,
			ПараметрыПереходаПоГиперссылке.ПараметрыФормы, , ЭтаФорма.УникальныйИдентификатор, , , ,
			ПараметрыПереходаПоГиперссылке.РежимОткрытияОкнаФормы);
	Иначе
		ТекстИсключения = НСтр("ru = 'Не определено действие по гиперссылке.'");
		ВызватьИсключение ТекстИсключения;
	КонецЕсли;
	
КонецПроцедуры

#Область ПроцедурыПодсистемыКонтактнаяИнформация

// СтандартныеПодсистемы.КонтактнаяИнформация

&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияПриИзменении(Элемент)
	УправлениеКонтактнойИнформациейКлиент.НачатьИзменение(ЭтотОбъект, Элемент);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	УправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент, , СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияПриНажатии(Элемент, СтандартнаяОбработка)
	УправлениеКонтактнойИнформациейКлиент.НачатьВыбор(ЭтотОбъект, Элемент,, СтандартнаяОбработка);
КонецПроцедуры

// Параметры:
//	Элемент - ГруппаФормы, ТаблицаФормы, ПолеФормы, КнопкаФормы - ЭлементФормы
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияОчистка(Элемент, СтандартнаяОбработка)
	УправлениеКонтактнойИнформациейКлиент.НачатьОчистку(ЭтотОбъект, Элемент.Имя);
КонецПроцедуры

// Параметры:
//	Команда - КомандаФормы - 
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияВыполнитьКоманду(Команда)
	УправлениеКонтактнойИнформациейКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда.Имя);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	УправлениеКонтактнойИнформациейКлиент.АвтоПодборАдреса(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка);
	
КонецПроцедуры

// Параметры:
//	Элемент - ГруппаФормы, ТаблицаФормы, ПолеФормы, КнопкаФормы - ЭлементФормы
&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	
	УправлениеКонтактнойИнформациейКлиент.ОбработкаВыбора(ЭтотОбъект, ВыбранноеЗначение, Элемент.Имя, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_КонтактнаяИнформацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	УправлениеКонтактнойИнформациейКлиент.НачатьОбработкуНавигационнойСсылки(ЭтотОбъект, Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПродолжитьОбновлениеКонтактнойИнформации(Результат, ДополнительныеПараметры) Экспорт
	ОбновитьКонтактнуюИнформацию(Результат);
КонецПроцедуры

&НаСервере
Процедура КонтактнаяИнформацияПриСменеСтраницы()
	
	УправлениеКонтактнойИнформацией.ВыполнитьОтложеннуюИнициализацию(ЭтотОбъект, Объект);
	
КонецПроцедуры

// Конец СтандартныеПодсистемы.КонтактнаяИнформация

#КонецОбласти

&НаКлиенте
Процедура КонтролироватьСвободныеОстаткиПриИзменении(Элемент)
	ОбновитьКоличествоИсключений();
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)

	Если Не Объект.Ссылка.Пустая() Тогда
		ОткрытьФорму("Справочник.Склады.Форма.РазблокированиеРеквизитов",,,,,, 
			Новый ОписаниеОповещения("Подключаемый_РазрешитьРедактированиеРеквизитовОбъектаЗавершение", ЭтотОбъект), 
			РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъектаЗавершение(Результат, ДополнительныеПараметры) Экспорт
    
    Если ТипЗнч(Результат) = Тип("Массив") И Результат.Количество() > 0 Тогда
        
        ЗапретРедактированияРеквизитовОбъектовКлиент.УстановитьДоступностьЭлементовФормы(ЭтаФорма, Результат);
        УстановитьДоступностьПолей();
        
    КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура НастройкиПодпитки(Команда)
	ПараметрыФормы = Новый Структура("Ключ",КлючЗаписиНастроекПодпитки());
	ОткрытьФорму("РегистрСведений.НастройкиАдресныхСкладов.ФормаЗаписи", ПараметрыФормы, ЭтаФорма,,);
КонецПроцедуры

&НаКлиенте
Процедура НастройкаСпособовОбеспеченияПотребностей(Команда)
	
	// &ЗамерПроизводительности
	ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
		"Справочник.Склады.Форма.ФормаЭлемента.Команда.НастройкаСпособовОбеспеченияПотребностей");
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		
		ТекстВопроса = НСтр("ru='Для настройки параметров обеспечения необходимо записать объект. Записать?'");
		Ответ = Неопределено;
		
		ПоказатьВопрос(Новый ОписаниеОповещения("НастройкаСпособовОбеспеченияПотребностейЗавершение", ЭтотОбъект), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
		Возврат;
		
	КонецЕсли;
	
	НастройкаСпособовОбеспеченияПотребностейФрагмент();
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкаСпособовОбеспеченияПотребностейЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	Ответ = РезультатВопроса;
	
	Если Ответ = КодВозвратаДиалога.Да Тогда
		Записать();
	КонецЕсли;
	
	
	НастройкаСпособовОбеспеченияПотребностейФрагмент();
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкаСпособовОбеспеченияПотребностейФрагмент()
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		Возврат
	КонецЕсли;
	
	Отбор = Новый Структура("Склад", Объект.Ссылка);
	ПараметрыФормы = Новый Структура("Отбор, Источник", Отбор, "Склад");
	
	ОткрытьФорму("Обработка.НастройкаСпособовОбеспеченияПотребностей.Форма.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкаПоддержанияЗапасов(Команда)
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		
		ТекстВопроса = НСтр("ru='Для настройки параметров обеспечения необходимо записать объект. Записать?'");
		Ответ = Неопределено;
		
		ПоказатьВопрос(Новый ОписаниеОповещения("НастройкаПоддержанияЗапасовЗавершение", ЭтотОбъект), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
		Возврат;
		
	КонецЕсли;
	
	НастройкаПоддержанияЗапасовФрагмент();
КонецПроцедуры

&НаКлиенте
Процедура НастройкаПоддержанияЗапасовЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	Ответ = РезультатВопроса;
	
	Если Ответ = КодВозвратаДиалога.Да Тогда
		Записать();
	КонецЕсли;
	
	
	НастройкаПоддержанияЗапасовФрагмент();
	
КонецПроцедуры

&НаКлиенте
Процедура НастройкаПоддержанияЗапасовФрагмент()
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		Возврат
	КонецЕсли;
	
	Отбор = Новый Структура("Склад", Объект.Ссылка);
	ПараметрыФормы = Новый Структура("Отбор, Источник", Отбор, "Склад");
	ОткрытьФорму("Обработка.НастройкаПоддержанияЗапасов.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнениеПомещенияВСправочниках(Команда)
	
	Если Модифицированность Тогда
		ТекстВопроса = НСтр("ru = 'Чтобы приступить к заполнению реквизита ""Помещение"" в справочниках, необходимо сохранить изменения. Продолжить?'");
		Режим = Новый СписокЗначений;
		Режим.Добавить(КодВозвратаДиалога.Да,НСтр("ru='Сохранить и продолжить'"));
		Режим.Добавить(КодВозвратаДиалога.Нет,НСтр("ru='Не продолжать'"));

		ПоказатьВопрос(Новый ОписаниеОповещения("ЗаполнениеПомещенияВСправочникахЗавершение", ЭтотОбъект), ТекстВопроса,Режим);
        Возврат;
	КонецЕсли;
	
	ЗаполнениеПомещенияВСправочникахФрагмент();
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнениеПомещенияВСправочникахЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
    
    Ответ = РезультатВопроса;
    Если Ответ <> КодВозвратаДиалога.Да Тогда
        Возврат;
    КонецЕсли;
    Записать();
    
    ЗаполнениеПомещенияВСправочникахФрагмент();

КонецПроцедуры

&НаКлиенте
Процедура ЗаполнениеПомещенияВСправочникахФрагмент()
    
    ПараметрыОбработки = Новый Структура;
    ПараметрыОбработки.Вставить("Склад", Объект.Ссылка);
    ОткрытьФорму("Справочник.Склады.Форма.ЗаполнениеПомещенияВСправочниках",ПараметрыОбработки, ЭтаФорма);

КонецПроцедуры

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

&НаКлиенте
Процедура ИсключенияКонтроляНажатиеЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
    
    Если РезультатВопроса = КодВозвратаДиалога.Отмена Тогда
        Возврат;
    КонецЕсли;
    
    Попытка
        ЭлементЗаписан = Записать();
    Исключение
        Возврат;
    КонецПопытки;
    
    Если Не ЭлементЗаписан Тогда
        Возврат;
    КонецЕсли;
    
    
    ИсключенияКонтроляНажатиеФрагмент();

КонецПроцедуры

&НаКлиенте
Процедура ИсключенияКонтроляНажатиеФрагмент()
    
    ПараметрыФормы = Новый Структура("Склад, КонтролироватьСвободныеОстатки", Объект.Ссылка, КонтролироватьСвободныеОстатки);
    ОткрытьФорму("РегистрСведений.НастройкаКонтроляОбеспечения.Форма.ИсключенияПоСкладу", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);

КонецПроцедуры

&НаКлиенте
Процедура НастроитьОтветственноеХранение(Команда)
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("УсловияХраненияТоваров", Объект.УсловияХраненияТоваров);
	ПараметрыФормы.Вставить("ОсобыеОтметки", Объект.ОсобыеОтметки);
	ПараметрыФормы.Вставить("СкладОтветственногоХранения", Объект.СкладОтветственногоХранения);
	ПараметрыФормы.Вставить("ВидПоклажедержателя", Объект.ВидПоклажедержателя);
	ПараметрыФормы.Вставить("Поклажедержатель", Объект.Поклажедержатель);
	ПараметрыФормы.Вставить("СрокОтветственногоХранения", Объект.СрокОтветственногоХранения);
	ПараметрыФормы.Вставить("ОтветственноеХранениеДоВостребования", Объект.ОтветственноеХранениеДоВостребования);
	
	ОткрытьФорму("Справочник.Склады.Форма.ЗаполнениеУсловийОтветственногоХранения", ПараметрыФормы, ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура НастроитьСборкуЗаказовИКурьерскуюДоставку(Команда)
	
	Если ЗначениеЗаполнено(ФорматМагазина)
		И ТипЗнч(ФорматМагазина) = Тип("СправочникСсылка.ФорматыМагазинов") Тогда
		
		ПараметрыФормы = Новый Структура;
		ПараметрыФормы.Вставить("Ключ", ФорматМагазина);
		
		ОткрытьФорму("Справочник.ФорматыМагазинов.Форма.ФормаЭлемента", ПараметрыФормы, ЭтаФорма);
		
	Иначе
		
		ПараметрыФормы = Новый Структура;
		ПараметрыФормы.Вставить("ВМагазинеПоддерживаетсяСборкаЗаказов", Объект.ВМагазинеПоддерживаетсяСборкаЗаказов);
		ПараметрыФормы.Вставить("ВМагазинеПоддерживаетсяДоставкаСвоимиКурьерами", Объект.ВМагазинеПоддерживаетсяДоставкаСвоимиКурьерами);
		ПараметрыФормы.Вставить("СпособСозданияРеализацииПриСборкеЗаказов", Объект.СпособСозданияРеализацииПриСборкеЗаказов);
		ПараметрыФормы.Вставить("СпособФискализацииПриДоставке", Объект.СпособФискализацииПриДоставке);
		ПараметрыФормы.Вставить("СборкаИДоставкаВыполняетсяОднимСотрудником", Объект.СборкаИДоставкаВыполняетсяОднимСотрудником);
		ПараметрыФормы.Вставить("КурьерыМогутНазначатьСебеЗаказы", Объект.КурьерыМогутНазначатьСебеЗаказы);
		ПараметрыФормы.Вставить("СборщикиМогутНазначатьСебеЗаказы", Объект.СборщикиМогутНазначатьСебеЗаказы);
		ПараметрыФормы.Вставить("НормативныйСрокДоставкиЗаказов", Объект.НормативныйСрокДоставкиЗаказов);
		ПараметрыФормы.Вставить("КурьерыИспользуютЭквайринговыеТерминалы", Объект.КурьерыИспользуютЭквайринговыеТерминалы);
		ПараметрыФормы.Вставить("КурьерыИспользуютАвтономныеККТ", Объект.КурьерыИспользуютАвтономныеККТ);
		ПараметрыФормы.Вставить("ДатаНачалаСборкиЗаказов", Объект.ДатаНачалаСборкиЗаказов);
		ПараметрыФормы.Вставить("ДатаНачалаДоставкиСвоимиКурьерами", Объект.ДатаНачалаДоставкиСвоимиКурьерами);
		ПараметрыФормы.Вставить("РежимФормы", 2);
		ПараметрыФормы.Вставить("Объект", Объект);
		ПараметрыФормы.Вставить("ГруппировкаТоваров", Объект.ГруппировкаТоваров);
		
		ОткрытьФорму("Обработка.НастройкиСбораЗаказовИКурьерскойДоставки.Форма.Настройки", ПараметрыФормы, ЭтаФорма);
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

// Конец СтандартныеПодсистемы.Свойства

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура ТипаСкладаПриИзмененииСервер()
	
	Если Не ИспользоватьНесколькоВидовЦен Тогда
		Если Объект.ТипСклада = ПредопределенноеЗначение("Перечисление.ТипыСкладов.РозничныйМагазин") Тогда
			Объект.РозничныйВидЦены = Ценообразование.ВидЦеныПрайсЛист();
		КонецЕсли;
	КонецЕсли;
	СкладыКлиентСервер.СогласоватьЗначенияПризнаков(Объект);
	УстановитьДоступностьПолей();
	
	ОбновитьФлажокИспользоватьРозничныйВидЦены();
КонецПроцедуры

#Область Прочее

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

&НаСервере
Процедура УстановитьДоступностьПолей()
	
	Элементы.ДатаНачалаОрдернойСхемыПриПоступлении.Доступность = Объект.ИспользоватьОрдернуюСхемуПриПоступлении;
	Элементы.ДатаНачалаОрдернойСхемыПриОтгрузке.Доступность = Объект.ИспользоватьОрдернуюСхемуПриОтгрузке;
	
	Элементы.ИспользоватьСтатусыПриходныхОрдеров.Доступность = Объект.ИспользоватьОрдернуюСхемуПриПоступлении;
	Элементы.ИспользоватьСтатусыРасходныхОрдеров.Доступность = Объект.ИспользоватьОрдернуюСхемуПриОтгрузке
		И НЕ Объект.НастройкаАдресногоХранения = Перечисления.НастройкиАдресногоХранения.ЯчейкиОстатки
		И НЕ Объект.НастройкаАдресногоХранения = Перечисления.НастройкиАдресногоХранения.ОпределяетсяНастройкамиПомещения
		И НЕ Объект.ИспользоватьСерииНоменклатуры
		И НЕ Константы.РежимФормированияРасходныхОрдеров.Получить() = Перечисления.РежимыФормированияРасходныхОрдеров.Автоматически;
	
	Элементы.ГруппаДоставка.Доступность = Объект.ИспользоватьОрдернуюСхемуПриОтгрузке;
	Элементы.ГруппаДоставка.ТолькоПросмотр = Элементы.ИспользоватьОрдернуюСхемуПриОтгрузке.ТолькоПросмотр;
	
	Элементы.ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач.Доступность = 
		Объект.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач;
	
	Элементы.ИспользоватьСтатусыПересчетовТоваров.Доступность = 
		Не Объект.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач;
	Элементы.ИспользоватьСтатусыПересчетовТоваров.ТолькоПросмотр = 
		Не Элементы.ИспользоватьСтатусыПересчетовТоваров.Доступность;
	
	Элементы.ИспользоватьСкладскиеПомещения.Доступность = Объект.ИспользоватьОрдернуюСхемуПриОтгрузке
		И Объект.ИспользоватьОрдернуюСхемуПриПоступлении
		И Объект.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач;
	Элементы.ДатаНачалаИспользованияСкладскихПомещений.Доступность = Объект.ИспользоватьСкладскиеПомещения;
	
	Элементы.НастройкаАдресногоХранения.ТолькоПросмотр = Объект.ИспользоватьСкладскиеПомещения
		Или Элементы.ИспользоватьОрдернуюСхемуПриОтгрузке.ТолькоПросмотр;
	
	Если Объект.НастройкаАдресногоХранения = Перечисления.НастройкиАдресногоХранения.ЯчейкиОстатки Тогда
		Элементы.СтраницыНастройкиПодпитки.ТекущаяСтраница = Элементы.СтраницаНастройкиПодпиткиГиперссылка;
		Элементы.СтраницыДатаНачалаАдресногоХраненияОстатков.ТекущаяСтраница = 
			Элементы.СтраницаДатаНачалаАдресногоХраненияОстатковДата;
	Иначе
		Элементы.СтраницыНастройкиПодпитки.ТекущаяСтраница = Элементы.СтраницаНастройкиПодпиткиПустая;
		Элементы.СтраницыДатаНачалаАдресногоХраненияОстатков.ТекущаяСтраница = 
			Элементы.СтраницаДатаНачалаАдресногоХраненияОстатковПустая;
	КонецЕсли;
		
	Элементы.ИспользованиеРабочихУчастков.ТолькоПросмотр = 
		Не Объект.НастройкаАдресногоХранения = Перечисления.НастройкиАдресногоХранения.ЯчейкиОстатки
		И Не Объект.НастройкаАдресногоХранения = Перечисления.НастройкиАдресногоХранения.ЯчейкиСправочно;
	
	Элементы.ДекорацияЯчейки.Видимость = (Объект.ТипСклада = Перечисления.ТипыСкладов.ОптовыйСклад)
		И ПолучитьФункциональнуюОпцию("ИспользоватьОрдерныеСклады");
	
	Элементы.Цех.Доступность               = Объект.ЦеховаяКладовая;
	Элементы.Цех.АвтоОтметкаНезаполненного = Объект.ЦеховаяКладовая;
	
	Элементы.Подразделение.Доступность               = Не Объект.ЦеховаяКладовая;
	Элементы.Подразделение.АвтоОтметкаНезаполненного = Ложь;
	
	Элементы.ИспользоватьОрдернуюСхемуПриПоступлении.Доступность = Не Объект.ЦеховаяКладовая;
	Элементы.ИспользоватьОрдернуюСхемуПриОтгрузке.Доступность    = Не Объект.ЦеховаяКладовая;
	
	УстановитьДоступностьРозничногоВидаЦенИФормата();
	
КонецПроцедуры

&НаСервере
Процедура СогласоватьЗначенияИУстановитьДоступность()
	
	СкладыКлиентСервер.СогласоватьЗначенияПризнаков(Объект);
	УстановитьДоступностьПолей();
	
КонецПроцедуры

&НаСервере
Процедура УстановитьДоступностьРозничногоВидаЦенИФормата()
	
	ЭтоРозничныйСклад = (Объект.ТипСклада = Перечисления.ТипыСкладов.РозничныйМагазин);
	
	ДоступенРозничныйВидЦен = ЭтоРозничныйСклад;
	
	Элементы.КонтролироватьАссортимент.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьРозничныеПродажи") 
													И ЭтоРозничныйСклад;
	ЕстьНастройкиАссортимента = ПолучитьФункциональнуюОпцию("ИспользоватьФорматыМагазинов")
								ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьАссортимент") 
								И ПолучитьФункциональнуюОпцию("ИспользоватьРозничныеПродажи")
								И ЭтоРозничныйСклад;
	Элементы.ГруппаАссортимент.Видимость = ЕстьНастройкиАссортимента;
	
	Элементы.УстановитьНовыйФормат.Видимость = ЕстьНастройкиАссортимента И 
		ПравоДоступа("Редактирование", Метаданные.РегистрыСведений.ИсторияИзмененияФорматовМагазинов);
	Элементы.ОткрытьИсториюИзмененияФорматов.Видимость = ЕстьНастройкиАссортимента 
		И ПравоДоступа("Чтение", Метаданные.РегистрыСведений.ИсторияИзмененияФорматовМагазинов);
	
	Если ЭтоРозничныйСклад Тогда
	
		Элементы.ФорматМагазина.Заголовок = НСтр("ru = 'Формат магазина'");
	
	Иначе
	
		Элементы.ФорматМагазина.Заголовок = НСтр("ru = 'Формат склада'");
	
	КонецЕсли; 
	
	Если КонтролироватьАссортимент Тогда
		ДоступенРозничныйВидЦен = Ложь;
	КонецЕсли;
	
	Элементы.ГруппаРозничныйВидЦены.Доступность 	= ДоступенРозничныйВидЦен;
	
	НастроитьВидимостьДоступностьЭлементовНастройкиИндивидуальногоВидаЦены(ЭтаФорма);
	
КонецПроцедуры


&НаСервере
Процедура УстановитьВидимостьПоФО()
	
	Элементы.ГруппаТипСклада.Видимость                              = ПолучитьФункциональнуюОпцию("ИспользоватьРозничныеПродажи");
	Элементы.ГруппаРозничныйВидЦены.Видимость                    	= ПолучитьФункциональнуюОпцию("ИспользоватьРозничныеПродажи");
	Элементы.ГруппаАссортимент.Видимость                            = ПолучитьФункциональнуюОпцию("ИспользоватьФорматыМагазинов")
																		ИЛИ ПолучитьФункциональнуюОпцию("ИспользоватьАссортимент") 
																		И ПолучитьФункциональнуюОпцию("ИспользоватьРозничныеПродажи")
																		И Объект.ТипСклада = Перечисления.ТипыСкладов.РозничныйМагазин;
	Элементы.КонтролироватьАссортимент.Видимость                    = ПолучитьФункциональнуюОпцию("ИспользоватьРозничныеПродажи")
																		И Объект.ТипСклада = Перечисления.ТипыСкладов.РозничныйМагазин;
	Элементы.ОрдернаяСхема.Видимость 								= ПолучитьФункциональнуюОпцию("ИспользоватьОрдерныеСклады");
	Элементы.ГруппаДоставка.Видимость                               = ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеДоставкой");
	
	Элементы.Родитель.Видимость                                     = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов");
	
	ИспользоватьРасширенноеОбеспечениеПотребностей = ПолучитьФункциональнуюОпцию("ИспользоватьРасширенноеОбеспечениеПотребностей");
	Элементы.НастройкаПоддержанияЗапасов.Видимость                  = ИспользоватьРасширенноеОбеспечениеПотребностей;
	Элементы.НастройкаСпособовОбеспеченияПотребностей.Видимость     = ИспользоватьРасширенноеОбеспечениеПотребностей;
	
	Если ПолучитьФункциональнуюОпцию("УправлениеТорговлей") Тогда
		Элементы.ГруппаЦеховаяКладовая.Видимость = Ложь;
	КонецЕсли; 
	
	Если ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен") Тогда
		Элементы.ГруппаСтраницыВидыЦен.ТекущаяСтраница = Элементы.ГруппаСтраницыВидыЦен.ПодчиненныеЭлементы.ГруппаИспользоватьНесколькоВидовЦен;
	Иначе
		Элементы.ГруппаСтраницыВидыЦен.ТекущаяСтраница = Элементы.ГруппаСтраницыВидыЦен.ПодчиненныеЭлементы.ГруппаИспользоватьОдинВидЦены;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура НастроитьЭлементыФормыПоПравамДоступа()

	// Элементы группы "Контроль остатков и обеспечение".
	ЧтениеНастройкаКонтроляОбеспечения = ПравоДоступа("Чтение", Метаданные.РегистрыСведений.НастройкаКонтроляОбеспечения);
	ИзменениеНастройкаКонтроляОбеспечения = ПравоДоступа("Изменение", Метаданные.РегистрыСведений.НастройкаКонтроляОбеспечения);
	Элементы.КонтролироватьСвободныеОстатки.Видимость = ЧтениеНастройкаКонтроляОбеспечения;
	Элементы.КонтролироватьСвободныеОстатки.Доступность = ИзменениеНастройкаКонтроляОбеспечения;
	Элементы.ИсключенияКонтроля.Видимость = ЧтениеНастройкаКонтроляОбеспечения;

	// Элементы могли быть отключены по ФО.

	Если Элементы.НастройкаПоддержанияЗапасов.Видимость Тогда
		
		ПросмотрНастройкаПоддержанияЗапасов = ПравоДоступа("Просмотр", Метаданные.Обработки.НастройкаПоддержанияЗапасов);
		Элементы.НастройкаПоддержанияЗапасов.Видимость = ПросмотрНастройкаПоддержанияЗапасов;
		
	КонецЕсли;
	
	Если Элементы.НастройкаСпособовОбеспеченияПотребностей.Видимость Тогда
		
		ПросмотрНастройкаСпособовОбеспеченияПотребностей = ПравоДоступа("Просмотр",
			Метаданные.Обработки.НастройкаСпособовОбеспеченияПотребностей);
		Элементы.НастройкаСпособовОбеспеченияПотребностей.Видимость = ПросмотрНастройкаСпособовОбеспеченияПотребностей;
		
	КонецЕсли;

	ПравоРедактированияСклада = ПравоДоступа("Изменение", Метаданные.Справочники.Склады);
	
	Элементы.ПорядокУказанияЗаданияНаПеревозку1.Доступность = ПравоРедактированияСклада;
	Элементы.ПорядокУказанияЗаданияНаПеревозку2.Доступность = ПравоРедактированияСклада;
	
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииСОграниченнымиПравами(ТекущийОбъект)

	// Реквизиты группы "Контроль остатков и обеспечение".
	УстановитьПривилегированныйРежим(Истина);
	НастройкаКонтроляОбеспечения = Неопределено;
	НастройкаКонтроляОбеспечения = РегистрыСведений.НастройкаКонтроляОбеспечения.НастройкаСклада(Объект.Ссылка);

	Если ЗначениеЗаполнено(НастройкаКонтроляОбеспечения.КонтролироватьСвободныеОстатки) Тогда
		КонтролироватьСвободныеОстатки = НастройкаКонтроляОбеспечения.КонтролироватьСвободныеОстатки;
	Иначе
		КонтролироватьСвободныеОстатки = ТекущийОбъект.КонтролироватьСвободныеОстатки;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюСОграниченнымиПравами(ТекущийОбъект)

	// Сохранение данных в реквизитах.
	Если ПравоДоступа("Изменение", Метаданные.РегистрыСведений.НастройкаКонтроляОбеспечения) Тогда
		ТекущийОбъект.КонтролироватьСвободныеОстатки  = КонтролироватьСвободныеОстатки;
	КонецЕсли;

КонецПроцедуры

&НаСервере
Функция КлючЗаписиНастроекПодпитки()
	СтруктураИзмерений = Новый Структура;
	СтруктураИзмерений.Вставить("Склад", Объект.Ссылка);
	СтруктураИзмерений.Вставить("Помещение", Справочники.СкладскиеПомещения.ПустаяСсылка());
	
	Возврат РегистрыСведений.НастройкиАдресныхСкладов.СоздатьКлючЗаписи(СтруктураИзмерений);
КонецФункции

&НаСервере
Процедура ИспользоватьОрдернуюСхемуПриПоступленииПриИзмененииСервер()
	
	СогласоватьЗначенияИУстановитьДоступность();
	Если НЕ Объект.ИспользоватьОрдернуюСхемуПриПоступлении
		ИЛИ НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
		Возврат;
	КонецЕсли;
	Запрос = Новый Запрос();
	Запрос.УстановитьПараметр("Склад", Объект.Ссылка);
	Запрос.Текст = Справочники.Склады.ТекстЗапросаПоДокументамЗависящимОтОрдернойСхемыПриПоступлении();
	
	УстановитьПривилегированныйРежим(Истина);
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	Если ЗначениеЗаполнено(Выборка.Дата) Тогда
		РекомендуемаяДата = Выборка.Дата + 60 * 60 * 24;
		Объект.ДатаНачалаОрдернойСхемыПриПоступлении = Макс(ТекущаяДатаСеанса(), РекомендуемаяДата);
	Иначе
		Элементы.ДатаНачалаОрдернойСхемыПриПоступлении.ТолькоПросмотр = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ИспользоватьОрдернуюСхемуПриОтгрузкеПриИзмененииСервер()
	
	СогласоватьЗначенияИУстановитьДоступность();
	Объект.КонтролироватьОперативныеОстатки    = Объект.ИспользоватьОрдернуюСхемуПриОтгрузке;
	Объект.ИспользоватьСтатусыРасходныхОрдеров = Объект.ИспользоватьОрдернуюСхемуПриОтгрузке;
	
	Если НЕ Объект.ИспользоватьОрдернуюСхемуПриОтгрузке
		ИЛИ НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
		Возврат;
	КонецЕсли;
	
	Запрос = Новый Запрос();
	Запрос.УстановитьПараметр("Склад", Объект.Ссылка);
	Запрос.Текст = Справочники.Склады.ТекстЗапросаПоДокументамЗависящимОтОрдернойСхемыПриОтгрузке();
	
	УстановитьПривилегированныйРежим(Истина);
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	Если ЗначениеЗаполнено(Выборка.Дата) Тогда
		РекомендуемаяДата = Выборка.Дата + 60 * 60 * 24;
		Объект.ДатаНачалаОрдернойСхемыПриОтгрузке = Макс(ТекущаяДатаСеанса(), РекомендуемаяДата);
	Иначе
		Элементы.ДатаНачалаОрдернойСхемыПриОтгрузке.ТолькоПросмотр = Ложь;
	КонецЕсли;
	
	УстановитьЗаголовокЭлементовНастройкиСборкиЗаказовИКурьерскойДоставки(ЭтаФорма);
	
КонецПроцедуры

&НаСервере
Процедура ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостачПриИзмененииСервер()
	
	СогласоватьЗначенияИУстановитьДоступность();
	Если НЕ Объект.ИспользоватьОрдернуюСхемуПриОтраженииИзлишковНедостач
		ИЛИ НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
		Возврат;
	КонецЕсли;
	
	Запрос = Новый Запрос();
	Запрос.УстановитьПараметр("Склад", Объект.Ссылка);
	Запрос.Текст = Справочники.Склады.ТекстЗапросаПоДокументамЗависящимОтОрдернойСхемыПриОтраженииИзлишковНедостач();
	
	УстановитьПривилегированныйРежим(Истина);
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	Если ЗначениеЗаполнено(Выборка.Дата) Тогда
		РекомендуемаяДата = Выборка.Дата + 60 * 60 * 24;
		Объект.ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач = Макс(ТекущаяДатаСеанса(), РекомендуемаяДата);
	Иначе
		Элементы.ДатаНачалаОрдернойСхемыПриОтраженииИзлишковНедостач.ТолькоПросмотр = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ИспользоватьСкладскиеПомещенияПриИзмененииСервер()
	
	СогласоватьЗначенияИУстановитьДоступность();
	
	Элементы.ЗаполнениеПомещенияВСправочниках.Видимость = ПравоДоступа("Изменение", Метаданные.Справочники.СкладскиеЯчейки)
		И Объект.ИспользоватьСкладскиеПомещения
		И (Справочники.Склады.ИменаОбъектовСПустымПомещением(Объект.Ссылка).Количество() <> 0);
	
	Если НЕ Объект.ИспользоватьСкладскиеПомещения
		ИЛИ НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
		Возврат;
	КонецЕсли;
	
	Запрос = Новый Запрос();
	Запрос.УстановитьПараметр("Склад", Объект.Ссылка);
	Запрос.Текст = Справочники.Склады.ТекстЗапросаПоДокументамЗависящимОтИспользованияСкладскихПомещений();
	
	УстановитьПривилегированныйРежим(Истина);
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	Если ЗначениеЗаполнено(Выборка.Дата) Тогда
		РекомендуемаяДата = Выборка.Дата + 60 * 60 * 24;
		Объект.ДатаНачалаИспользованияСкладскихПомещений = Макс(ТекущаяДатаСеанса(), РекомендуемаяДата);
	Иначе
		Элементы.ДатаНачалаИспользованияСкладскихПомещений.ТолькоПросмотр = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура НастройкаАдресногоХраненияПриИзмененииСервер()
	
	СогласоватьЗначенияИУстановитьДоступность();
	
	Если НЕ (Объект.НастройкаАдресногоХранения = Перечисления.НастройкиАдресногоХранения.ЯчейкиОстатки)
		ИЛИ НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
		Возврат;
	КонецЕсли;
	
	Запрос = Новый Запрос();
	Запрос.УстановитьПараметр("Склад", Объект.Ссылка);
	Запрос.Текст = Справочники.Склады.ТекстЗапросаПоДокументамЗависящимОтИспользованияАдресногоХранения();
	
	УстановитьПривилегированныйРежим(Истина);
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	Если ЗначениеЗаполнено(Выборка.Дата) Тогда
		РекомендуемаяДата = Выборка.Дата + 60 * 60 * 24;
		Объект.ДатаНачалаАдресногоХраненияОстатков = Макс(ТекущаяДатаСеанса(), РекомендуемаяДата);
	Иначе
		Элементы.ДатаНачалаАдресногоХраненияОстатков.ТолькоПросмотр = Ложь;
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьКоличествоИсключений()
	
	Если Не ПравоДоступа("Чтение", Метаданные.РегистрыСведений.НастройкаКонтроляОбеспечения) Тогда
		Возврат;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ НастройкаКонтроляОбеспечения.Номенклатура) КАК КоличествоИсключений
		|ИЗ
		|	РегистрСведений.НастройкаКонтроляОбеспечения КАК НастройкаКонтроляОбеспечения
		|ГДЕ
		|	НастройкаКонтроляОбеспечения.Склад = &Склад
		|	И НастройкаКонтроляОбеспечения.КонтролироватьСвободныеОстатки = &КонтролироватьСвободныеОстатки
		|	И НастройкаКонтроляОбеспечения.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)";
		
	Запрос.УстановитьПараметр("КонтролироватьСвободныеОстатки",  НЕ КонтролироватьСвободныеОстатки);
	Запрос.УстановитьПараметр("Склад", Объект.Ссылка);

	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();

	КоличествоИсключений = 0;
	Если Выборка.Следующий() Тогда
		КоличествоИсключений = Выборка.КоличествоИсключений;
	КонецЕсли;
	
	ЗаголовокКоличествоИсключений = НСтр("ru='Исключения (%КоличествоИсключений%)'");
	ЗаголовокКоличествоИсключений = СтрЗаменить(ЗаголовокКоличествоИсключений, "%КоличествоИсключений%", КоличествоИсключений);
	
	Элементы.ИсключенияКонтроля.Заголовок = ЗаголовокКоличествоИсключений;
	
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

&НаКлиенте
Процедура ОткрытьИсториюИзмененияФорматов(Команда)
	
	Если Объект.Ссылка.Пустая() Тогда
	
		ТекстВопроса = НСтр("ru = 'Для открытия истории изменения настроек магазина, необходимо записать элемент. Записать?'");
		Кнопки = Новый СписокЗначений;
		Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Записать'"));
		Кнопки.Добавить(КодВозвратаДиалога.Отмена);
		Оповещение = Новый ОписаниеОповещения("ОткрытьИсториюИзмененияФорматовЗавершение", ЭтотОбъект);
		ПоказатьВопрос(Оповещение, ТекстВопроса, Кнопки);
		Возврат;
	
	КонецЕсли;
	
	ОткрытьИсториюИзмененияФорматовОткрытьФорму();
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьНовыйНастройки(Команда)
	
	Если Объект.Ссылка.Пустая() Тогда
	
		ТекстВопроса = НСтр("ru = 'Для установки настроек магазина, необходимо записать элемент. Записать?'");
		Кнопки = Новый СписокЗначений;
		Кнопки.Добавить(КодВозвратаДиалога.Да, НСтр("ru = 'Записать'"));
		Кнопки.Добавить(КодВозвратаДиалога.Отмена);
		Оповещение = Новый ОписаниеОповещения("УстановитьНовыйФорматЗавершение", ЭтотОбъект);
		ПоказатьВопрос(Оповещение, ТекстВопроса, Кнопки);
		Возврат;
	
	КонецЕсли; 
	
	УстановитьНовыйФорматОткрытьФорму();
	
КонецПроцедуры

// СтандартныеПодсистемы.Свойства

&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
	УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
	УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры

&НаКлиенте
Процедура УстановитьНовыйФорматЗавершение(Результат, ДополнительныеПараметры) Экспорт 
	
	Если Результат = КодВозвратаДиалога.Да Тогда
		
		Если Записать() Тогда
			УстановитьНовыйФорматОткрытьФорму();
		КонецЕсли;
	
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьИсториюИзмененияФорматовЗавершение(Результат, ДополнительныеПараметры) Экспорт 
	
	Если Результат = КодВозвратаДиалога.Да Тогда
		
		Если Записать() Тогда
			ОткрытьИсториюИзмененияФорматовОткрытьФорму();
		КонецЕсли;
	
	КонецЕсли; 
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьНовыйФорматОткрытьФорму()

	ЗначенияЗаполнения = Новый Структура;
	ЗначенияЗаполнения.Вставить("Склад", Объект.Ссылка);
	ЗначенияЗаполнения.Вставить("ФорматМагазина", ФорматМагазина);
	ЗначенияЗаполнения.Вставить("КонтролироватьАссортимент", КонтролироватьАссортимент);
	ЗначенияЗаполнения.Вставить("РозничныеЦеныИзФорматаМагазина", РозничныеЦеныИзФорматаМагазина);
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);
	
	Оповещение = Новый ОписаниеОповещения("ФормаИсторияИзмененияФорматовЗавершение", ЭтотОбъект);
	
	ОткрытьФорму("РегистрСведений.ИсторияИзмененияФорматовМагазинов.ФормаЗаписи", ПараметрыФормы, ЭтаФорма,,,, Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

КонецПроцедуры

&НаКлиенте
Процедура ОткрытьИсториюИзмененияФорматовОткрытьФорму()
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("Склад", Объект.Ссылка);
	
	Оповещение = Новый ОписаниеОповещения("ФормаИсторияИзмененияФорматовЗавершение", ЭтотОбъект);
	
	ОткрытьФорму("РегистрСведений.ИсторияИзмененияФорматовМагазинов.Форма.ФормаРедактирования", ПараметрыФормы, ЭтаФорма,,,,Оповещение);
	
КонецПроцедуры

&НаКлиенте
Процедура ФормаИсторияИзмененияФорматовЗавершение(Результат, ДополнительныеПараметры) Экспорт 

	ОбновитьИнформациюОФорматеМагазина();

КонецПроцедуры

&НаСервере
Процедура ОбновитьИнформациюОФорматеМагазина()

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

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЗаголовокЭлементовОтветственногоХранения(Форма)
	
	СкладОтветственногоХранения = Форма.Объект.СкладОтветственногоХранения;
	
	Форма.Элементы.НастроитьОтветственноеХранение.Заголовок = ?(СкладОтветственногоХранения, 
		НСтр("ru='Товары находятся на ответственном хранении'"),
		НСтр("ru='Настроить ответственное хранение'"));
		
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьЗаголовокЭлементовНастройкиСборкиЗаказовИКурьерскойДоставки(Форма)
	
	ТекстЗаголовка = НСтр("ru='Настроить сборку заказов и доставку своими курьерами'");
	Объект = Форма.Объект;
	
	Если Объект.ТипСклада = ПредопределенноеЗначение("Перечисление.ТипыСкладов.ОптовыйСклад") Тогда
		Форма.Элементы.НастроитьСборкуЗаказовИКурьерскуюДоставку.Доступность = Ложь;
	ИначеЕсли ЗначениеЗаполнено(Форма.ФорматМагазина)
		И ТипЗнч(Форма.ФорматМагазина) = Тип("СправочникСсылка.ФорматыМагазинов") Тогда
		ТекстЗаголовка = НСтр("ru='Посмотреть настройки сборки заказов и доставки своими курьерами формата магазина'");
	ИначеЕсли Объект.ВМагазинеПоддерживаетсяСборкаЗаказов
		ИЛИ Объект.ВМагазинеПоддерживаетсяДоставкаСвоимиКурьерами Тогда
		ТекстЗаголовка = НСтр("ru='Изменить настройки сборки заказов и доставки своими курьерами'");
	КонецЕсли;
	
	Форма.Элементы.НастроитьСборкуЗаказовИКурьерскуюДоставку.Заголовок = ТекстЗаголовка;
		
КонецПроцедуры

// СтандартныеПодсистемы.Свойства 
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()

	УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);

КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства

&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьЗаголовокФормы(Форма)

	Форма.АвтоЗаголовок = Ложь;
		
	Если Форма.Объект.ТипСклада = ПредопределенноеЗначение("Перечисление.ТипыСкладов.РозничныйМагазин") Тогда
		ПредставлениеЗаголовка = НСтр("ru = 'Магазин'");
	Иначе
		ПредставлениеЗаголовка = НСтр("ru = 'Склад'");
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(Форма.Объект.Ссылка) Тогда
		Форма.Заголовок = ПредставлениеЗаголовка + " (" + НСтр("ru='создание'") + ")";
	Иначе
		Форма.Заголовок = Форма.Объект.Наименование + " (" + ПредставлениеЗаголовка + ")";
	КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура НастроитьФормуЛокализация()
	
	Элементы.ГруппаПодразделение.РасширеннаяПодсказка.Заголовок = НСтр("ru = 'Используется при синхронизации данных о товародвижении.'");
	
	//++ Локализация
	Элементы.ИсточникИнформации.РасширеннаяПодсказка.Заголовок	= НСтр("ru = 'Источник информации о ценах по умолчанию в регламентированных печатных формах (ИНВ-3, ИНВ-19, ТОРГ-15, ТОРГ-16).'");
	Элементы.ВидЦены.РасширеннаяПодсказка.Заголовок				= НСтр("ru = 'Этот вид цен будет использоваться при выводе в регламентированных печатных формах документов, в которых цены пользователем не указываются. Например, при печати формы М-11 из документа ""Внутреннее потребление"".'");
	Элементы.ГруппаПодразделение.РасширеннаяПодсказка.Заголовок	= НСтр("ru = 'Используется при синхронизации с Бухгалтерией КОРП данных о товародвижении.'");

	//-- Локализация
	Возврат;
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьФлажокИспользоватьРозничныйВидЦены()

	ИспользоватьРозничныйВидЦены = (Объект.ТипСклада = Перечисления.ТипыСкладов.РозничныйМагазин);
	
КонецПроцедуры

&НаСервере
Процедура ОбновитьФлажокИспользоватьИндивидуальныйВидЦены()

	ИспользоватьИндивидуальныйВидЦены = ЗначениеЗаполнено(Объект.ИндивидуальныйВидЦены) И (Объект.ТипСклада = Перечисления.ТипыСкладов.РозничныйМагазин);
	
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьВидимостьДоступностьЭлементовНастройкиИндивидуальногоВидаЦены(Форма)
	
	Форма.Элементы.ИндивидуальныйВидЦеныПредставление.Доступность	= (Форма.ИспользоватьИндивидуальныйВидЦены 
												И Не Форма.Элементы.ИспользоватьИндивидуальныйВидЦены.ТолькоПросмотр)
												И Форма.РазрешеноСоздаватьВидыЦен;
	Форма.Элементы.ИспользоватьИндивидуальныйВидЦены.Доступность = Форма.РазрешеноСоздаватьВидыЦен;

	Форма.Элементы.ДекорацияИндивидуальныйВидЦен.Видимость = Форма.ИспользуетсяЦенообразование25;

КонецПроцедуры


&НаСервере
Процедура ОбновитьИндивидуальныйВидЦеныПредставление()
	Если ЗначениеЗаполнено(Объект.ИндивидуальныйВидЦены) Тогда
		МассивТекстов = Новый Массив;

		МассивТекстов.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Индивидуальный вид цен'")));
		
		МассивТекстов.Добавить(" (");
		МассивТекстов.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'настроить'"),,,,"ОткрытьИВЦ"));
		МассивТекстов.Добавить(")");
		
	Иначе
		МассивТекстов = Новый Массив;
		МассивТекстов.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'Индивидуальный вид цен (не настроен)'")));

		МассивТекстов.Добавить(" (");
		МассивТекстов.Добавить(Новый ФорматированнаяСтрока(НСтр("ru = 'настроить'"),,,,"СоздатьИВЦ"));
		МассивТекстов.Добавить(")");
	КонецЕсли;
	
	ИндивидуальныйВидЦеныПредставление = Новый ФорматированнаяСтрока(МассивТекстов);
КонецПроцедуры

&НаКлиенте
Процедура ИндивидуальныйВидЦеныПредставлениеОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Если НавигационнаяСсылкаФорматированнойСтроки = "СоздатьИВЦ" Тогда
		
		Если Не ЗначениеЗаполнено(Объект.Ссылка)
		Или Модифицированность Тогда
		
			ТекстВопроса = Нстр("ru = 'Данные модифицированы.
			|Настройка индивидуального прайс-листа возможна только после записи элемента.
			|Записать элемент?'");
			
			ПоказатьВопрос(Новый ОписаниеОповещения("СоздатьИВЦВопросЗавершение", ЭтотОбъект), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
			Возврат;
			
		КонецЕсли;
	
		СоздатьИВЦЗавершение();
		
	ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ОткрытьИВЦ" Тогда
			 	
		ПоказатьЗначение(Неопределено, Объект.ИндивидуальныйВидЦены);
		
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура СоздатьИВЦВопросЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
	
	Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
		Возврат;
	КонецЕсли;

	Попытка
		ЭлементЗаписан = Записать();
	Исключение
		Возврат;
	КонецПопытки;
	
	Если Не ЭлементЗаписан Тогда
		Возврат;
	КонецЕсли;
	
	СоздатьИВЦЗавершение();
	
КонецПроцедуры

&НаКлиенте
Процедура СоздатьИВЦЗавершение()
	
	РезультатПереноса = СоздатьИПЛСервер();
	
	Если РезультатПереноса.Результат Тогда
		
		Прочитать();
		ОбновитьИндивидуальныйВидЦеныПредставление();
		ПоказатьЗначение(Неопределено, Объект.ИндивидуальныйВидЦены);
		
	Иначе
		
		ОчиститьСообщения();
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
			НСтр("ru='Возникла ошибка при создании индивидуального прайс листа.'") + " " + РезультатПереноса.ОписаниеОшибки,
			Объект.Ссылка,
			);
			
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Функция СоздатьИПЛСервер()
	
	РезультатПереноса = УстановкаЦенСервер.СоздатьИПЛ(Объект.Ссылка, ТекущаяДатаСеанса());
	
	Возврат РезультатПереноса;
	
КонецФункции

&НаСервере
Процедура ОбновитьПредставленияиВидимостьВидовЦенПоФорматуМагазина()
	Если Объект.ТипСклада = Перечисления.ТипыСкладов.РозничныйМагазин И РозничныеЦеныИзФорматаМагазина Тогда
		
		Элементы.ГруппаРозничныйВидЦеныФорматМагазина.Видимость = Истина;
		Элементы.ГруппаРозничныйВидЦеныСклад.Видимость 			= Ложь;
		
		ВидыЦен = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ФорматМагазина, "РозничныйВидЦены, ИндивидуальныйВидЦены");
		
		Если ЗначениеЗаполнено(ВидыЦен.РозничныйВидЦены) Тогда
			РозничныйВидЦенПредставление = ВидыЦен.РозничныйВидЦены;
		Иначе	 
			РозничныйВидЦенПредставление = "<не указан>";
		КонецЕсли;
		
		Если ЗначениеЗаполнено(ВидыЦен.ИндивидуальныйВидЦены) Тогда
			ИндивидуальныйВидЦенПредставление = "<используется>";
		Иначе	 
			ИндивидуальныйВидЦенПредставление = "<не используется>";
		КонецЕсли;
	Иначе
		Элементы.ГруппаРозничныйВидЦеныФорматМагазина.Видимость = Ложь;
		Элементы.ГруппаРозничныйВидЦеныСклад.Видимость 			= Истина;
		
		РозничныйВидЦенПредставление = "";
		ИндивидуальныйВидЦенПредставление = "";
	КонецЕсли;	
КонецПроцедуры

#КонецОбласти

&НаСервере
Процедура ОбновитьКонтактнуюИнформацию(Результат)
	
	УправлениеКонтактнойИнформацией.ОбновитьКонтактнуюИнформацию(ЭтотОбъект, Объект, Результат);
	
КонецПроцедуры

#КонецОбласти


Связанные материалы