Склады / Модуль объекта

файл
#Если НЕ МобильныйАвтономныйСервер Тогда
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ОписаниеПеременных

Перем ЗаписьСОграниченнымиПравами;

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

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

Процедура ПередЗаписью(Отказ)

	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;

	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);

	ЗаписьСОграниченнымиПравами = Не ПравоДоступа("Добавление", ЭтотОбъект.Метаданные());

	Если ЗаписьСОграниченнымиПравами Тогда

		// Проверка программной записи объекта.
		УправлениеДоступомУТ.ПроверитьДопустимостьИзмененияРеквизитовСправочника(ЭтотОбъект, "Наименование", Отказ);

		// Есть доступ только на изменение отдельных реквизитов склада (роль "ИзменениеНастроекОбеспеченияПоСкладу")
		// дополнительные обработки данных склада выполнять не требуется.
		Возврат;

	КонецЕсли;

	Если Не ЭтоГруппа Тогда

		ЗаполнитьВыборГруппыТекущегоСклада();
		ОбновитьФлагИспользованияСерий();
		ОбновитьФлагКонтроляОперативныхОстатков();
		
		СкладыКлиентСервер.СогласоватьЗначенияПризнаков(ЭтотОбъект);

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

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

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

Процедура ПередУдалением(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	Если ЭтоГруппа Тогда
		Возврат;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ВидыНоменклатурыПолитикиУчетаСерий.Ссылка КАК Ссылка,
	|	ВидыНоменклатурыПолитикиУчетаСерий.НомерСтроки КАК НомерСтроки 
	|ИЗ
	|	Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК ВидыНоменклатурыПолитикиУчетаСерий
	|ГДЕ
	|	ВидыНоменклатурыПолитикиУчетаСерий.Склад = &Склад
	|	И НЕ ВидыНоменклатурыПолитикиУчетаСерий.Ссылка.НастройкиСерийБерутсяИзДругогоВидаНоменклатуры";
	
	Запрос.УстановитьПараметр("Склад", Ссылка);
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		ВидНоменклатурыОбъект = Выборка.Ссылка.ПолучитьОбъект();
		ВидНоменклатурыОбъект.ПолитикиУчетаСерий.Удалить(ВидНоменклатурыОбъект.ПолитикиУчетаСерий[Выборка.НомерСтроки - 1]);
		ВидНоменклатурыОбъект.ДополнительныеСвойства.Вставить("ПропуститьЗаполнениеТЧПолитикиУчетаСерий");
		ВидНоменклатурыОбъект.ДополнительныеСвойства.Вставить("ПропуститьОбновлениеФлагаИспользованияСерий");
		ВидНоменклатурыОбъект.ДополнительныеСвойства.Вставить("ПропуститьОбновлениеФлагаКонтроляОперативныхОстатков");
		ВидНоменклатурыОбъект.Записать();
	КонецЦикла;
	
КонецПроцедуры

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

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
	
	МассивНепроверяемыхРеквизитов = Новый Массив;

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

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

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

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

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

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

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

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

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

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

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

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

Процедура УстановитьНастройкуОбеспечения(Объект)

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

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

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

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

Функция ПараметрыСинхронизацииКлючей()
	
	Результат = Новый Соответствие;
	
	Результат.Вставить("Справочник.КлючиАналитикиУчетаНоменклатуры", "ПометкаУдаления");
	Результат.Вставить("Справочник.КлючиРеестраДокументов", "ПометкаУдаления,Наименование");
	
	Возврат Результат;
	
КонецФункции

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

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

#КонецЕсли
#КонецЕсли

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