Номенклатура / Модуль менеджера

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

#Область ПрограммныйИнтерфейс

// СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт

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

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

// Возвращает имена блокируемых реквизитов для механизма блокирования реквизитов БСП.
//
// Возвращаемое значение:
//	Массив - имена блокируемых реквизитов.
//
Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт

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

КонецФункции

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

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

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

// Если для переданной номенклатуры ведутся характеристики, то в параметре возвращается владелец характеристик.
//
//	Параметры:
//		Номенклатура - СправочникСсылка.Номенклатура - проверяемая номенклатура
//		ВладелецХарактеристики - СправочникСсылка.Номенклатура, СправочникСсылка.ВидыНоменклатуры - в этом параметре
//			возвращается владелец характеристик (это зависит от того, какие характеристики используются - индивидуальные
//			или общие для вида номенклатуры).
//	Возвращаемое значение:
//		Булево - признак того, что для переданной номенклатуры ведется учет по характеристикам.
//
Функция ПроверитьИспользованиеХарактеристикИПолучитьВладельцаДляВыбора(Номенклатура, ВладелецХарактеристики) Экспорт

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

	Если ЗначенияРеквизитовВИБ.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать Тогда
		ИспользованиеХарактеристик = Ложь;
	Иначе
		ИспользованиеХарактеристик = Истина;

		Если ЗначенияРеквизитовВИБ.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры Тогда
			ВладелецХарактеристики = ЗначенияРеквизитовВИБ.ВидНоменклатуры;
		ИначеЕсли ЗначенияРеквизитовВИБ.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры Тогда
			ВладелецХарактеристики = ЗначенияРеквизитовВИБ.ВладелецХарактеристик;
		Иначе
			ВладелецХарактеристики = Номенклатура;
		КонецЕсли;
	КонецЕсли;

	Возврат ИспользованиеХарактеристик;

КонецФункции

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

// Процедура выполняет гармонизацию значений реквизитов между собой, исключая недопустимые сочетания значений.
//
// Параметры:
//  Номенклатура - СправочникОбъект.Номенклатура, ДанныеФормыСтруктура - элемент, для которого нужно отработать логику
//                                                                       связи реквизитов.
Процедура ОтработатьЛогикуСвязиРеквизитов(Номенклатура) Экспорт
	
	РеквизитыПризнаковОсобенностейУчета = РеквизитыПризнаковОсобенностейУчета(Метаданные.Справочники.Номенклатура);
	
	Для Каждого ИмяРеквизита Из РеквизитыПризнаковОсобенностейУчета Цикл
		Номенклатура[ИмяРеквизита] =
			Номенклатура.ОсобенностьУчета = ПредопределенноеЗначение("Перечисление.ОсобенностиУчетаНоменклатуры." + ИмяРеквизита);
	КонецЦикла;

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

		ИспользованиеРеквизитов = ИспользованиеЭлементов(Номенклатура, Ложь, Истина);
		МетаданныеОбъекта = Метаданные.Справочники.Номенклатура;

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

	КонецЕсли;

	Если ОтключитьОчисткуРеквизитов = Истина Тогда
		Номенклатура.ДополнительныеСвойства.ОтключитьОчисткуРеквизитов = Ложь;
	КонецЕсли;

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

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

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

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

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

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

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

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

#Область ДляВызоваИзДругихПодсистем

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

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

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

	Параметры.ТипДанныхКолонки.Вставить("ВесЗнаменатель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
	Параметры.ТипДанныхКолонки.Вставить("ВесЧислитель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
	Параметры.ТипДанныхКолонки.Вставить("ДлинаЗнаменатель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
	Параметры.ТипДанныхКолонки.Вставить("ДлинаЧислитель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
	Параметры.ТипДанныхКолонки.Вставить("ОбъемДАЛ", Новый ОписаниеТипов("Число", НеотрицательноеЧисло18_6));
	Параметры.ТипДанныхКолонки.Вставить("СрокГодности", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_0));
	Параметры.ТипДанныхКолонки.Вставить("ОбъемЗнаменатель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
	Параметры.ТипДанныхКолонки.Вставить("ОбъемЧислитель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
	Параметры.ТипДанныхКолонки.Вставить("ПлощадьЗнаменатель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
	Параметры.ТипДанныхКолонки.Вставить("ПлощадьЧислитель", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
	Параметры.ТипДанныхКолонки.Вставить("КоэффициентЕдиницыДляОтчетов", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
	Параметры.ТипДанныхКолонки.Вставить("Крепость", Новый ОписаниеТипов("Число", НеотрицательноеЧисло15_3));
	
	МассивОбязательныхКолонок = Новый Массив;
	МассивОбязательныхКолонок.Добавить("Наименование");
	МассивОбязательныхКолонок.Добавить("ЕдиницаИзмерения");
	МассивОбязательныхКолонок.Добавить("ВариантОформленияПродажи");
	МассивОбязательныхКолонок.Добавить("ВидНоменклатуры");
	МассивОбязательныхКолонок.Добавить("ИспользованиеХарактеристик");
	МассивОбязательныхКолонок.Добавить("Качество");
	МассивОбязательныхКолонок.Добавить("СтавкаНДС");
	МассивОбязательныхКолонок.Добавить("ТипНоменклатуры");
	
	Если Справочники.ГруппыДоступаНоменклатуры.ИспользуютсяГруппыДоступа() Тогда
		МассивОбязательныхКолонок.Добавить("ГруппаДоступа");
	КонецЕсли;
	
	Параметры.ОбязательныеКолонки = МассивОбязательныхКолонок;
	
	НоменклатураЛокализация.ОпределитьПараметрыЗагрузкиДанныхИзФайла(Параметры);
	
КонецПроцедуры

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

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

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

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

// СтандартныеПодсистемы.УправлениеДоступом

// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

	Ограничение.Текст =
	"РазрешитьЧтение
	|ГДЕ ИСТИНА
	|;
	|РазрешитьИзменениеЕслиРазрешеноЧтение
	|ГДЕ
	|	ЭтоГруппа ИЛИ
	|	ЗначениеРазрешено(Ссылка)";

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

// Конец СтандартныеПодсистемы.УправлениеДоступом

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

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

#КонецЕсли

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

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

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
	
	НоменклатураВызовСервера.НоменклатураОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка);
	
КонецПроцедуры

#КонецЕсли

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
	// СтандартныеПодсистемы.БазоваяФункциональность
	МультиязычностьКлиентСервер.ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка);
	// Конец СтандартныеПодсистемы.БазоваяФункциональность
КонецПроцедуры

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
	// СтандартныеПодсистемы.БазоваяФункциональность
	МультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка);
	// Конец СтандартныеПодсистемы.БазоваяФункциональность
КонецПроцедуры

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

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

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

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

// Заполняет список команд печати.
// 
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

	// Карточка номенклатуры
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "КарточкаНоменклатуры";
	КомандаПечати.Представление = НСтр("ru = 'Печать'");
	КомандаПечати.ЗаголовокФормы = НСтр("ru = 'Карточка номенклатуры'");
	
КонецПроцедуры

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

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

#Область КарточкаНоменклатуры

// Возвращает табличный документ номенклатуры.
// Параметры:
//  Номенклатура - СправочникОбъект.Номенклатура, ДанныеФормыСтруктура - элемент, для которого нужно отработать логику
//                                                                       связи реквизитов.
//  НастройкиВидимостиИЗаголовков - см. НастройкиВидимостиИЗаголовков
//  ДляПечати - Булево - признак того, что табличный документ формируетс для печати
//
// Возвращаемое значение:
//	ТабличныйДокумент - табличный документ с реквизитами.
//
Функция ТабличныйДокументКарточкиНоменклатуры(Номенклатура, НастройкиВидимостиИЗаголовков, ДляПечати) Экспорт
	
	Перем Заголовок;
	
	Если НастройкиВидимостиИЗаголовков = Неопределено Тогда
		НастройкиВидимостиИЗаголовков = НастройкиВидимостиИЗаголовков(Номенклатура);
	КонецЕсли;
	
	Объект = Неопределено;
	Если ТипЗнч(Номенклатура) = Тип("СправочникСсылка.Номенклатура") Тогда
		Объект = Номенклатура.ПолучитьОбъект();
	ИначеЕсли ТипЗнч(Номенклатура) = Тип("СправочникОбъект.Номенклатура")
		Или ТипЗнч(Номенклатура) = Тип("ДанныеФормыСтруктура") Тогда
		Объект = Номенклатура;
	Иначе
		Возврат Новый ТабличныйДокумент;
	КонецЕсли;
	
	ТабличныйДокументКарточка = Новый ТабличныйДокумент;
	
	СтруктураВидимости = НастройкиВидимостиИЗаголовков.ВидимостьЭлементов;
	СтруктураЗаголовков = НастройкиВидимостиИЗаголовков.ЗаголовкиЭлементов;
	
	Макет = ПолучитьМакет("ПФ_MXL_КарточкаНоменклатуры");
	
	#Область Шапка
	
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ЗаполнитьЗначенияСвойств(ОбластьШапка.Параметры, Объект);
		
	Если Не ЗначениеЗаполнено(Объект.Наименование) Тогда
		ОбластьШапка.Параметры.Наименование = ТекстЗначенияНеЗаполнен("Наименование");
	КонецЕсли;
	Если Не ДляПечати Тогда
		ОбластьШапка.Параметры.РасшифровкаНаименование = "Наименование";
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(Объект.НаименованиеПолное) Тогда
		ОбластьШапка.Параметры.НаименованиеПолное = ТекстЗначенияНеЗаполнен("НаименованиеПолное");
	КонецЕсли;
	Если Не ДляПечати Тогда
		ОбластьШапка.Параметры.РасшифровкаНаименованиеПолное = "НаименованиеПолное";
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(Объект.Артикул) Тогда
		ОбластьШапка.Параметры.Артикул = ТекстЗначенияНеЗаполнен("Артикул");
	КонецЕсли;
	Если Не ДляПечати Тогда
		ОбластьШапка.Параметры.РасшифровкаАртикул = "Артикул";
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(Объект.Код) Тогда
		ОбластьШапка.Параметры.Код = ТекстЗначенияНеЗаполнен("Код");
	КонецЕсли;
	Если Не ДляПечати Тогда
		ОбластьШапка.Параметры.РасшифровкаКод = "Код";
	КонецЕсли;
	
	Если РазделВиден("ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами", СтруктураВидимости) Тогда
		Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами", Заголовок) Тогда
			ОбластьШапка.Параметры.ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами = Строка(Заголовок);
		КонецЕсли;
		Если Не ДляПечати Тогда
			ОбластьШапка.Параметры.РасшифровкаГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами = "ГиперссылкаПерейтиНоменклатураСАналогичнымиСвойствами";
		КонецЕсли;
	КонецЕсли;
	
	Если РазделВиден("ГиперссылкаПерейтиШтрихкодыНоменклатуры", СтруктураВидимости) Тогда 
		Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиШтрихкодыНоменклатуры", Заголовок) Тогда
			ОбластьШапка.Параметры.ГиперссылкаПерейтиШтрихкодыНоменклатуры = Строка(Заголовок);
		КонецЕсли;
		Если Не ДляПечати Тогда
			ОбластьШапка.Параметры.РасшифровкаГиперссылкаПерейтиШтрихкодыНоменклатуры = "ГиперссылкаПерейтиШтрихкодыНоменклатуры";
		КонецЕсли;
	КонецЕсли;
	
	ТабличныйДокументКарточка.Присоединить(ОбластьШапка);
	
	#КонецОбласти
		
	ТабличныйДокументКолонки = Новый ТабличныйДокумент;
	
	#Область ТабличныйДокументЛево
	
	ТабличныйДокументЛево = Новый ТабличныйДокумент;
		
	#Область Описание
	
	Если ГлаваВидна("Описание", СтруктураВидимости) Тогда 
		
		ОбластьОписаниеЗаголовок = Макет.ПолучитьОбласть("ОписаниеЗаголовок");
		ТабличныйДокументЛево.Вывести(ОбластьОписаниеЗаголовок);
		
		// Вывод картинки
		Если ЗначениеЗаполнено(Объект.ФайлКартинки) Тогда
			
			ОбластьОписаниеКартинка = Макет.ПолучитьОбласть("ОписаниеКартинка");
			Попытка
				УстановитьПривилегированныйРежим(Истина);
				КартинкаНоменклатуры = РаботаСФайлами.ДвоичныеДанныеФайла(Объект.ФайлКартинки);
				УстановитьПривилегированныйРежим(Ложь);
			Исключение
				КартинкаНоменклатуры = Неопределено;
			КонецПопытки;
			
			Если ЗначениеЗаполнено(КартинкаНоменклатуры) Тогда
				ОбластьКартинка = ОбластьОписаниеКартинка.Области.АдресКартинки;
				
				Если ТипЗнч(КартинкаНоменклатуры) = Тип("Картинка") Тогда
					ОбластьКартинка.Картинка = КартинкаНоменклатуры;
				ИначеЕсли ТипЗнч(КартинкаНоменклатуры) = Тип("ДвоичныеДанные") Тогда
					КартинкаКарточки = Новый Картинка(КартинкаНоменклатуры);
					
					ОбластьКартинка.Картинка = ?(КартинкаКарточки.Формат() = ФорматКартинки.НеизвестныйФормат,
												Неопределено,
												КартинкаКарточки);
				КонецЕсли;
				
				Если Не ДляПечати Тогда
					ОбластьОписаниеКартинка.Параметры.Расшифровка = "ФайлКартинки";
				КонецЕсли;
				
				ТабличныйДокументЛево.Вывести(ОбластьОписаниеКартинка);
			Иначе
				ОписаниеКартинкиОшибка = Макет.ПолучитьОбласть("ФайлКартинкиСтрокаОшибка");
				Если Не ДляПечати Тогда
					ОписаниеКартинкиОшибка.Параметры.Расшифровка = "ФайлКартинки";
				КонецЕсли;
				ТабличныйДокументЛево.Вывести(ОписаниеКартинкиОшибка);
			КонецЕсли;
			
		Иначе
			
			ОписаниеКартинкиНет = Макет.ПолучитьОбласть("ФайлКартинкиСтрока");
			Если Не ДляПечати Тогда
				ОписаниеКартинкиНет.Параметры.Расшифровка = "ФайлКартинки";
			КонецЕсли;
			ТабличныйДокументЛево.Вывести(ОписаниеКартинкиНет);
			
		КонецЕсли;	
		
		ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
		ПараметрыВыводаРаздела.ИмяРаздела = "Описание";
		ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ОписаниеСтрока";
		ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ОписаниеРеквизит";
		ПараметрыВыводаРаздела.ТекстЗначенияРеквизита =  Объект.Описание;
		ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
		
		Если РазделВиден("ФайлОписанияДляСайта", СтруктураВидимости) Тогда
			ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
			ПараметрыВыводаРаздела.ИмяРаздела = "ФайлОписанияДляСайта";
			ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ФайлОписанияДляСайтаСтрока";
			ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ФайлОписанияДляСайтаРеквизит";
			ПараметрыВыводаРаздела.ТекстЗначенияРеквизита =  Объект.ФайлОписанияДляСайта;
			ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
		КонецЕсли;
		
		Если РазделВиден("ГиперссылкаПерейтиФайлы", СтруктураВидимости) Тогда
			ОбластьОписаниеФайлыСтрока = Макет.ПолучитьОбласть("ФайлыСтрока");
			
			Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиФайлы", Заголовок) Тогда
				ОбластьОписаниеФайлыСтрока.Параметры.Файлы = Строка(Заголовок);
				Если Не ДляПечати Тогда
					ОбластьОписаниеФайлыСтрока.Параметры.Расшифровка = "ГиперссылкаПерейтиФайлы";
				КонецЕсли;
			КонецЕсли;
			ТабличныйДокументЛево.Вывести(ОбластьОписаниеФайлыСтрока);
		КонецЕсли;
		
		Если РазделВиден("ВестиУчетСертификатовНоменклатуры", СтруктураВидимости) Тогда 
			
			
			Область = Макет.ПолучитьОбласть("ВестиУчетСертификатовНоменклатурыСтрока");
			Картинка = КартинкаФлагаПоЗначению(Объект.ВестиУчетСертификатовНоменклатуры);
			Область.Область("ВестиУчетСертификатовНоменклатурыФлаг").Картинка = Картинка;
						
			Если СтруктураЗаголовков.Свойство("ГиперссылкаПерейтиСертификатыНоменклатуры", Заголовок) Тогда
				Область.Параметры.ГиперссылкаПерейтиСертификатыНоменклатуры = Строка(Заголовок);
				Если РазделВиден("ГиперссылкаПерейтиСертификатыНоменклатурыВнимание", СтруктураВидимости) Тогда 
					Область.Область("ГиперссылкаПерейтиСертификатыНоменклатурыВнимание").Картинка = БиблиотекаКартинок.Внимание16;
				КонецЕсли;
				Если Не ДляПечати Тогда
					Область.Параметры.РасшифровкаГиперссылки = "ГиперссылкаПерейтиСертификатыНоменклатуры";
				КонецЕсли;
			КонецЕсли;
			
			Если Не ДляПечати Тогда
				Область.Параметры.Расшифровка = "ВестиУчетСертификатовНоменклатуры";
			КонецЕсли;
			ТабличныйДокументЛево.Вывести(Область);
			
		КонецЕсли;
		
		
	КонецЕсли;
		
	#КонецОбласти
	
	#Область ДополнительныеРеквизиты
	
	ТекстЗапроса =
	"ВЫБРАТЬ
	|	НаборыДопРеквизитов.НомерСтроки			КАК НомерСтрокиДляСортировки,
	|	ЛОЖЬ									КАК ОбщееСвойство,
	|	ВидыНоменклатуры.НаборСвойств			КАК НаборСвойств,
	|	НаборыДопРеквизитов.Свойство			КАК Свойство,
	|	НаборыДопРеквизитов.Свойство.Имя		КАК ИмяРеквизита,
	|	НаборыДопРеквизитов.Свойство.Заголовок	КАК ПредставлениеРеквизита,
	|	ДопРеквизитыНоменклатуры.Значение		КАК Значение
	|ПОМЕСТИТЬ ДопРеквизитыНоменклатуры
	|ИЗ
	|	Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыДопРеквизитов
	|		ПО ВидыНоменклатуры.НаборСвойств = НаборыДопРеквизитов.Ссылка
	|		
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК ДопРеквизитыНоменклатуры
	|		ПО ДопРеквизитыНоменклатуры.Ссылка = &Номенклатура
	|			И НаборыДопРеквизитов.Свойство = ДопРеквизитыНоменклатуры.Свойство
	|ГДЕ
	|	ВидыНоменклатуры.Ссылка В(&ВидНоменклатуры)
	|	И НЕ НаборыДопРеквизитов.Свойство.ЭтоДополнительноеСведение
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	НаборыДопРеквизитов.НомерСтроки			КАК НомерСтрокиДляСортировки,
	|	ИСТИНА									КАК ОбщееСвойство,
	|	&ОбщийНабор								КАК НаборСвойств,
	|	НаборыДопРеквизитов.Свойство			КАК Свойство,
	|	НаборыДопРеквизитов.Свойство.Имя		КАК ИмяРеквизита,
	|	НаборыДопРеквизитов.Свойство.Заголовок	КАК ПредставлениеРеквизита,
	|	ДопРеквизитыНоменклатуры.Значение		КАК Значение
	|ИЗ
	|	Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК НаборыДопРеквизитов
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК ДопРеквизитыНоменклатуры
	|		ПО ДопРеквизитыНоменклатуры.Ссылка = &Номенклатура
	|			И НаборыДопРеквизитов.Свойство = ДопРеквизитыНоменклатуры.Свойство
	|ГДЕ
	|	НаборыДопРеквизитов.Ссылка = &ОбщийНабор
	|	И НЕ НаборыДопРеквизитов.Свойство.ЭтоДополнительноеСведение
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Свойство
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ЗависимостиДопРеквизитов.Ссылка		КАК Свойство,
	|	ЗависимостиДопРеквизитов.Реквизит	КАК Реквизит,
	|	ЗависимостиДопРеквизитов.Условие	КАК Условие,
	|	ЗависимостиДопРеквизитов.Значение	КАК Значение
	|ПОМЕСТИТЬ УсловияВидимостиДопРеквизтов
	|ИЗ
	|	ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ЗависимостиДополнительныхРеквизитов КАК ЗависимостиДопРеквизитов
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДопРеквизитыНоменклатуры КАК ДопРеквизитыНоменклатуры
	|		ПО ЗависимостиДопРеквизитов.Ссылка = ДопРеквизитыНоменклатуры.Свойство
	|
	|ГДЕ
	|	ЗависимостиДопРеквизитов.НаборСвойств В(&НаборВида, &ОбщийНабор)
	|	И ЗависимостиДопРеквизитов.ЗависимоеСвойство ПОДОБНО ""Виден""";
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса,
								"&НаборВида",
								"ВЫРАЗИТЬ(&ВидНоменклатуры КАК Справочник.ВидыНоменклатуры).НаборСвойств");
	
	Запрос = Новый Запрос;
	Запрос.Текст = ТекстЗапроса;
	
	Запрос.УстановитьПараметр("ВидНоменклатуры",	Объект.ВидНоменклатуры);
	Запрос.УстановитьПараметр("Номенклатура",		Объект.Ссылка);
	Запрос.УстановитьПараметр("ОбщийНабор",			УправлениеСвойствами.НаборСвойствПоИмени("Справочник_Номенклатура_Общие"));
	
	РезультатЗапроса = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
	ДополнительныеРеквизиты		= РезультатЗапроса[0].Выгрузить();
	УсловияВидимостиРеквизитов	= РезультатЗапроса[1].Выгрузить();
	
	Если ГлаваВидна("ДополнительныеРеквизиты", СтруктураВидимости, ДополнительныеРеквизиты.Количество()) Тогда
		
		ОбластьЗаголовок = Макет.ПолучитьОбласть("ДополнительныеРеквизитыЗаголовок");
		
		ТабличныйДокументЛево.Вывести(ОбластьЗаголовок);
		
		ДополнительныеРеквизиты.Сортировать("ОбщееСвойство Убыв, НомерСтрокиДляСортировки Возр");
		УсловияВидимостиРеквизитов.Индексы.Добавить("Свойство");
		
		Для Каждого ДопРеквизит Из ДополнительныеРеквизиты Цикл
			
			ЗначениеРеквизита = ДопРеквизит.Значение;
			Если Не ЗначениеЗаполнено(ЗначениеРеквизита)
				И ДопРеквизит.Свойство.ТипЗначения = Новый ОписаниеТипов("Булево") Тогда
				
				ЗначениеРеквизита = Ложь;
				
			КонецЕсли;
			
			ИмяЭлементаДопРеквизита = "ДополнительныйРеквизитЗначение_" 
										+ СтрЗаменить(ВРег(Строка(ДопРеквизит.НаборСвойств.УникальныйИдентификатор())), "-", "x")
										+ "_"
										+ СтрЗаменить(ВРег(Строка(ДопРеквизит.Свойство.УникальныйИдентификатор())), "-", "x");
			
				
			ВыводитьРеквизит = ВидимостьДополнительногоРеквизита(Объект,
																ДопРеквизит,
																ДополнительныеРеквизиты,
																УсловияВидимостиРеквизитов)
								И РазделВиден(ИмяЭлементаДопРеквизита, СтруктураВидимости);
			
			Если ВыводитьРеквизит Тогда
				ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
				ПараметрыВыводаРаздела.ИмяРаздела				= "ДополнительныеРеквизиты";
				ПараметрыВыводаРаздела.ИмяОбластиСтрока			= "ДополнительныеРеквизитыСтрока";
				ПараметрыВыводаРаздела.ИмяПараметраРеквизит		= "ДополнительныеРеквизитыРеквизит";
				ПараметрыВыводаРаздела.ТекстЗначенияРеквизита	= ЗначениеРеквизита;
				ПараметрыВыводаРаздела.ТекстЗаголовкаРеквизита	= ДопРеквизит.ПредставлениеРеквизита;
				ПараметрыВыводаРаздела.НовоеИмяРаздела			= ИмяЭлементаДопРеквизита;
				
				ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументЛево, Макет, ДляПечати, ПараметрыВыводаРаздела);
			КонецЕсли;
		КонецЦикла;
		
	КонецЕсли;
	
	#КонецОбласти	
	
	#Область СведенияОПроизводителе
	
	Если ГлаваВидна("СведенияОПроизводителе", СтруктураВидимости) Тогда 

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

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

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

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

		КонецЕсли;
		
		Если РазделВиден("НоменклатураМногооборотнаяТара", СтруктураВидимости) Тогда
			
			СтрокаЗаполнения = НоменклатураКлиентСервер.ПредставлениеНоменклатуры(
				Объект.НоменклатураМногооборотнаяТара,
				Объект.ХарактеристикаМногооборотнаяТара);				
			
			ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
			ПараметрыВыводаРаздела.ИмяРаздела = "НоменклатураМногооборотнаяТара";
			ПараметрыВыводаРаздела.ИмяОбластиСтрока = "НоменклатураМногооборотнаяТараСтрока";
			ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "НоменклатураМногооборотнаяТараРеквизит";
			ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = СтрокаЗаполнения;
			ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
			
		КонецЕсли;
		
		Если РазделВиден("ЕдиницаДляОтчетов", СтруктураВидимости) Тогда
			
			СтрокаЗаполнения = НСтр("ru = '<не указана>'");
			
			Если ЗначениеЗаполнено(Объект.ЕдиницаДляОтчетов) Тогда
				Если Объект.ЕдиницаДляОтчетов <> Объект.ЕдиницаИзмерения Тогда
					СтрокаЗаполнения = НСтр("ru = '%ЕдиницаДляОтчетов%, содержит %Количество% %ЕдиницаИзмерения%'");
					СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Количество%", Объект.КоэффициентЕдиницыДляОтчетов);
					СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", Объект.ЕдиницаИзмерения);
				Иначе
					СтрокаЗаполнения = НСтр("ru = '%ЕдиницаДляОтчетов%'");
				КонецЕсли;
				
				СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаДляОтчетов%", Объект.ЕдиницаДляОтчетов);
			КонецЕсли;
			
			ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
			ПараметрыВыводаРаздела.ИмяРаздела = "ЕдиницаДляОтчетов";
			ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ЕдиницаДляОтчетовСтрока";
			ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ЕдиницаДляОтчетовРеквизит";
			ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = СтрокаЗаполнения;
			ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
			
		КонецЕсли;
		
		Если РазделВиден("Вес", СтруктураВидимости) Тогда
			
			Если Объект.ВесИспользовать Тогда
				СтрокаЗаполнения = НСтр("ru = '%Количество1% %ЕдиницаИзмерения% весит %Количество2% %Единица%, %МожноУказыватьВДокументах%'");
				СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Количество1%", Объект.ВесЗнаменатель);
				СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Количество2%", Объект.ВесЧислитель);
				СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", Объект.ЕдиницаИзмерения);
				СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%Единица%", Объект.ВесЕдиницаИзмерения);				
				Если Объект.ВесМожноУказыватьВДокументах Тогда
					СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%МожноУказыватьВДокументах%", НСтр("ru = 'можно указывать количество в %ЕдиницаИзмерения% в документах'"));
					СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%ЕдиницаИзмерения%", Объект.ВесЕдиницаИзмерения);
				Иначе
					СтрокаЗаполнения = СтрЗаменить(СтрокаЗаполнения, "%МожноУказыватьВДокументах%", НСтр("ru = 'указан справочно'"));
				КонецЕсли;
			Иначе
				СтрокаЗаполнения = НСтр("ru = '<не измеряется>'");
			КонецЕсли;
			
			ПараметрыВыводаРаздела = ПараметрыВыводаРазделаСУчетомРазмераЗначений();
			ПараметрыВыводаРаздела.ИмяРаздела = "Вес";
			ПараметрыВыводаРаздела.ИмяОбластиСтрока = "ВесСтрока";
			ПараметрыВыводаРаздела.ИмяПараметраРеквизит = "ВесРеквизит";
			ПараметрыВыводаРаздела.ТекстЗначенияРеквизита = СтрокаЗаполнения;
			ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокументПраво, Макет, ДляПечати, ПараметрыВыводаРаздела);
			
		КонецЕсли;

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

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

Функция ТекстЗначенияНеЗаполнен(ИмяРаздела)

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

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

// Вывести раздел с учетом размера значений.
// 
// Параметры:
//  ТабличныйДокумент - ТабличныйДокумент - Табличный документ
//  Макет - ТабличныйДокумент - Макет
//  ДляПечати - Булево - Для печати
//  ПараметрыВывода - См. ПараметрыВыводаРазделаСУчетомРазмераЗначений
Процедура ВывестиРазделСУчетомРазмераЗначений(ТабличныйДокумент, Макет, ДляПечати, ПараметрыВывода) Экспорт
	
	ОбластьСтрока = Макет.ПолучитьОбласть(ПараметрыВывода.ИмяОбластиСтрока);
		
	Если ПараметрыВывода.ТекстЗаголовкаРеквизита <> Неопределено Тогда
		ОбластьСтрока.Параметры[ПараметрыВывода.ИмяПараметраРеквизит] = Строка(ПараметрыВывода.ТекстЗаголовкаРеквизита) + ":";
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ПараметрыВывода.ТекстЗначенияРеквизита) Тогда 
		ОбластьСтрока.Параметры[ПараметрыВывода.ИмяРаздела] = ПараметрыВывода.ТекстЗначенияРеквизита;
	Иначе
		ОбластьСтрока.Параметры[ПараметрыВывода.ИмяРаздела] = ТекстЗначенияНеЗаполнен(ПараметрыВывода.ИмяРаздела);
	КонецЕсли;
	
	Если Не ДляПечати Тогда
		Если ПараметрыВывода.НовоеИмяРаздела = Неопределено Тогда 
			ОбластьСтрока.Параметры.Расшифровка = ПараметрыВывода.ИмяРаздела;
		Иначе
			ОбластьСтрока.Параметры.Расшифровка = ПараметрыВывода.НовоеИмяРаздела;
		КонецЕсли;
	КонецЕсли;
	
	ТабличныйДокумент.Вывести(ОбластьСтрока);
	
	КоличествоДополнительныхСтрок = 0;
	
	КоличествоДополнительныхСтрок = КоличествоДополнительныхСтрок(
			ТабличныйДокумент,
			ПараметрыВывода.ИмяРаздела,
			ПараметрыВывода.ТекстЗначенияРеквизита,
			ПараметрыВывода.ТекстЗаголовкаРеквизита);
	
	Счетчик = КоличествоДополнительныхСтрок;
	
	ОбластьДопСтрока = Макет.ПолучитьОбласть(ПолучитьИмяОбластиДопСтрокиПоИмениРаздела(ПараметрыВывода.ИмяРаздела));
	
	Пока Счетчик > 0 Цикл
		Счетчик = Счетчик - 1;
		ТабличныйДокумент.Вывести(ОбластьДопСтрока);
	КонецЦикла;
	
	ОбъединитьРазделСоСтрокамиНиже(ТабличныйДокумент, ПараметрыВывода.ИмяОбластиСтрока, КоличествоДополнительныхСтрок);
	
КонецПроцедуры

Процедура ОбъединитьРазделСоСтрокамиНиже(ТабличныйДокумент, ИмяОбласти, КоличествоДопСтрок)
	
	Если КоличествоДопСтрок = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Область = ТабличныйДокумент.Область(ИмяОбласти);
	Область.Разъединить();
	Область.Имя = Неопределено;
	АдресОбласти = Область.Имя;
	СтруктураАдреса = СтруктураАдреса(АдресОбласти);
	
	АдресКолонкиЗаголовкаНачало = СтруктураАдреса.АдресКолонкиНачало + 1; // + 1, т.к. слева колонка-отступ
	АдресКолонкиЗаголовкаКонец = АдресКолонкиЗаголовкаНачало + 7; // +7, т.к. заголовок занимает 8 колонок
	АдресКолонкиЗначенияНачало = АдресКолонкиЗаголовкаКонец + 1;
	
	// В левой колонке карточки разность должна быть равна 20, в правой - 21
	Если СтруктураАдреса.АдресКолонкиКонец - СтруктураАдреса.АдресКолонкиНачало = 20 Тогда
		АдресКолонкиЗначенияКонец = СтруктураАдреса.АдресКолонкиКонец;
	ИначеЕсли СтруктураАдреса.АдресКолонкиКонец - СтруктураАдреса.АдресКолонкиНачало = 21 Тогда
		АдресКолонкиЗначенияКонец = СтруктураАдреса.АдресКолонкиКонец - 1;
	КонецЕсли;
	
	АдресСтрокиНачало = СтруктураАдреса.АдресСтрокиНачало;
	АдресСтрокиКонец = СтруктураАдреса.АдресСтрокиКонец;
	
	// Для заголовка
	НовыйАдрес = "R" + АдресСтрокиНачало + "C" + АдресКолонкиЗаголовкаНачало + ":"
				+ "R" + (АдресСтрокиКонец + КоличествоДопСтрок) + "C" + АдресКолонкиЗаголовкаКонец;
	Область = ТабличныйДокумент.Область(НовыйАдрес);
	Область.Объединить();
	
	// Для значения
	НовыйАдрес = "R" + АдресСтрокиНачало + "C" + АдресКолонкиЗначенияНачало + ":"
				+ "R" + (АдресСтрокиКонец + КоличествоДопСтрок) + "C" + АдресКолонкиЗначенияКонец;
	Область = ТабличныйДокумент.Область(НовыйАдрес);
	Область.Объединить();
	
КонецПроцедуры

Функция СтруктураАдреса(Адрес)
	
	МассивАдресОбласти = СтрРазделить(Адрес, ":");
	Если МассивАдресОбласти.Количество() <> 2 Тогда
		// Это значит, что строка состоит из одной колонки, процедура объединения с такими не работает.
		Возврат Неопределено;
	КонецЕсли;
	
	АдресНачало = МассивАдресОбласти[0];
	МассивАдресНачало = СтрРазделить(АдресНачало, "C");
	АдресСтрокиНачало = СтрЗаменить(МассивАдресНачало[0], "R", "");
	АдресКолонкиНачало = МассивАдресНачало[1];
	
	АдресКонец = МассивАдресОбласти[1];
	МассивАдресКонец = СтрРазделить(АдресКонец, "C");
	АдресСтрокиКонец = СтрЗаменить(МассивАдресКонец[0], "R", "");
	АдресКолонкиКонец = МассивАдресКонец[1];

	СтруктураАдреса = Новый Структура;
	СтруктураАдреса.Вставить("АдресСтрокиНачало", 	Число(АдресСтрокиНачало));
	СтруктураАдреса.Вставить("АдресКолонкиНачало", 	Число(АдресКолонкиНачало));
	СтруктураАдреса.Вставить("АдресСтрокиКонец", 	Число(АдресСтрокиКонец));
	СтруктураАдреса.Вставить("АдресКолонкиКонец", 	Число(АдресКолонкиКонец));
	
	Возврат СтруктураАдреса;
	
КонецФункции

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

Функция КоличествоДополнительныхСтрок(ТабличныйДокумент, ИмяРаздела, ТекстЗаполненияЗначения, ТекстЗаполненияРеквизита)
	
	ШиринаКолонки = 2.38;
	КоличествоКолонокВЗначенииРеквизита = 12;
	ШиринаЗначенияРеквизита = КоличествоКолонокВЗначенииРеквизита * ШиринаКолонки;
	ЧислоСтрокЗначения = КоличествоСтрок(ШиринаЗначенияРеквизита, ТекстЗаполненияЗначения);
	
	ЧислоСтрокСвойства = 0;
	Если ЗначениеЗаполнено(ТекстЗаполненияРеквизита) Тогда
		КоличествоКолонокВЗаголовкеРеквизита = 8;
		ШиринаЗаголовкаРеквизита = ШиринаКолонки * КоличествоКолонокВЗаголовкеРеквизита;
		ЧислоСтрокСвойства = КоличествоСтрок(ШиринаЗаголовкаРеквизита, ТекстЗаполненияРеквизита);
	КонецЕсли;
	
	ЧислоСтрок = Макс(ЧислоСтрокЗначения, ЧислоСтрокСвойства);
	
	Если ЧислоСтрок = 0 Тогда
		Возврат 0;
	КонецЕсли;
	
	Возврат ЧислоСтрок - 1;
	
КонецФункции

Функция КоличествоСтрок(ШиринаОбласти, Строка)
	
	Если Не ЗначениеЗаполнено(Строка) Тогда
		Возврат 0;
	КонецЕсли;
	
	СредняяШиринаСимвола = 0.75;
	
	МассивСлов = СтрРазделить(Строка, " ");
		
	КоличествоСтрок = 1; // = 1, т.к. проверку на заполненность мы сделали выше, а значит одна строка нужна точно
	ТекущаяСтрока = "";
	
	Для Каждого Слово Из МассивСлов Цикл
		
		ТекущаяСтрока = ТекущаяСтрока + Слово + " ";
		Если СтрДлина(ТекущаяСтрока) * СредняяШиринаСимвола > ШиринаОбласти Тогда
			КоличествоСтрок = КоличествоСтрок + 1;
			ТекущаяСтрока = Слово + " ";
		КонецЕсли;
		
	КонецЦикла;	 
	 	 
	Возврат КоличествоСтрок;
	
КонецФункции

Функция КартинкаФлагаПоЗначению(ЗначениеФлага) Экспорт
	
	Если ЗначениеФлага Тогда
		Возврат БиблиотекаКартинок.ФлагУстановлен;
	Иначе
		Возврат БиблиотекаКартинок.ФлагНеУстановлен;
	КонецЕсли;
	
КонецФункции

Функция РазделВиден(ИмяРаздела, СтруктураВидимости) Экспорт
	
	Видимость = Истина;
	Если СтруктураВидимости.Свойство(ИмяРаздела) Тогда
		Видимость = СтруктураВидимости[ИмяРаздела];
	КонецЕсли;
	
	Возврат Видимость;
	
КонецФункции

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

Функция ПравоДоступаНаОбъектМетаданныхПоРеквизиту(Право, РеквизитОбъектМетаданных) Экспорт

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

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

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

Процедура ЗаполнитьУсловияЗависимостей(УсловияЗависимостей, ДанныеДопРеквизита, ПутьКРеквизиту)
	
	// Преобразование старого условия для обратной совместимости.
	НовоеУсловие	= "";
	УсловиеЧастями	= СтрРазделить(ДанныеДопРеквизита.Условие, " ");
	
	Если УсловиеЧастями.Количество() > 0 Тогда
		Для Каждого ЧастьУсловия Из УсловиеЧастями Цикл
			НовоеУсловие = НовоеУсловие + ВРег(Лев(ЧастьУсловия, 1)) + Сред(ЧастьУсловия, 2);
		КонецЦикла;
	КонецЕсли;
	
	Если ЗначениеЗаполнено(НовоеУсловие) Тогда
		ДанныеДопРеквизита.Условие = НовоеУсловие;
	КонецЕсли;
	
	ШаблонУсловия = "";
	
	Если ДанныеДопРеквизита.Условие = "Равно" Тогда
		ШаблонУсловия = "%1 = %2";
	ИначеЕсли ДанныеДопРеквизита.Условие = "НеРавно" Тогда
		ШаблонУсловия = "%1 <> %2";
	КонецЕсли;
	
	Если ДанныеДопРеквизита.Условие = "ВСписке" Тогда
		ШаблонУсловия = "%2.НайтиПоЗначению(%1) <> Неопределено";
	ИначеЕсли ДанныеДопРеквизита.Условие = "НеВСписке" Тогда
		ШаблонУсловия = "%2.НайтиПоЗначению(%1) = Неопределено";
	КонецЕсли;
	
	ПравоеЗначение = "";
	
	Если ЗначениеЗаполнено(ШаблонУсловия) Тогда
		ПравоеЗначение = "Параметры.ЗначенияПараметров[""%1""]";
		ПравоеЗначение = СтрШаблон(ПравоеЗначение, ПутьКРеквизиту);
	КонецЕсли;
	
	Если ДанныеДопРеквизита.Условие = "Заполнено" Тогда
		ШаблонУсловия = "ЗначениеЗаполнено(%1)";
	ИначеЕсли ДанныеДопРеквизита.Условие = "НеЗаполнено" Тогда
		ШаблонУсловия = "Не ЗначениеЗаполнено(%1)";
	КонецЕсли;
	
	Если ЗначениеЗаполнено(ПравоеЗначение) Тогда
		КодУсловия = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонУсловия,
																			ПутьКРеквизиту,
																			ПравоеЗначение);
	Иначе
		КодУсловия = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонУсловия, ПутьКРеквизиту);
	КонецЕсли;
	
	УстановитьУсловиеЗависимости(УсловияЗависимостей, ДанныеДопРеквизита, ПутьКРеквизиту, КодУсловия);
	
КонецПроцедуры

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

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

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

#Область ПодменюСоздатьНаОсновании

// Определяет список команд создания на основании.
//
// Параметры:
//  КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//  Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
	
	БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
КонецПроцедуры

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

#Область ПодменюОтчеты

// Определяет список команд отчетов.
//
// Параметры:
//   КомандыОтчетов - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
//   Параметры - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
	КомандаОтчет = Отчеты.ОстаткиИДоступностьТоваров.ДобавитьКомандуОтчета(КомандыОтчетов);//СтрокаТаблицыЗначений
	Если КомандаОтчет <> Неопределено Тогда
		КомандаОтчет.Важность = "Важное";
		КомандаОтчет.РежимЗаписи = "";
	КонецЕсли;
	
	КомандаОтчет = Отчеты.ТоварыВЯчейках.ДобавитьКомандуОтчета(КомандыОтчетов);
	Если КомандаОтчет <> Неопределено Тогда
		КомандаОтчет.Важность = "Важное";
		КомандаОтчет.РежимЗаписи = "";
	КонецЕсли;
	
	КомандаОтчет = Отчеты.ABCXYZАнализНоменклатуры.ДобавитьКомандуОтчета(КомандыОтчетов);
	Если КомандаОтчет <> Неопределено Тогда
		КомандаОтчет.Порядок = 1;
		КомандаОтчет.РежимЗаписи = "";
	КонецЕсли;
	
	КомандаОтчет = Отчеты.ВедомостьПоТоварамОрганизаций.ДобавитьКомандуОтчета(КомандыОтчетов);
	Если КомандаОтчет <> Неопределено Тогда
		КомандаОтчет.Порядок = 2;
		КомандаОтчет.РежимЗаписи = "";
	КонецЕсли;
	
	КомандаОтчет = Отчеты.ВедомостьПоТоварамНаСкладах.ДобавитьКомандуДвиженияТовара(КомандыОтчетов);
	Если КомандаОтчет <> Неопределено Тогда
		КомандаОтчет.Порядок = 3;
		КомандаОтчет.РежимЗаписи = "";
	КонецЕсли;
	
	КомандаОтчет = Отчеты.ТоварыВЯчейках.ДобавитьКомандуОтчетаДвиженияТовара(КомандыОтчетов);
	Если КомандаОтчет <> Неопределено Тогда
		КомандаОтчет.Порядок = 4;
		КомандаОтчет.РежимЗаписи = "";
	КонецЕсли;
	
	КомандаОтчет = Отчеты.ВедомостьПоСериямНоменклатуры.ДобавитьКомандуОтчета(КомандыОтчетов);
	Если КомандаОтчет <> Неопределено Тогда
		КомандаОтчет.Порядок = 5;
		КомандаОтчет.РежимЗаписи = "";
	КонецЕсли;
	
	
	КомандаОтчет = Отчеты.ТоварыНаСкладахПоСрокамГодности.ДобавитьКомандуОтчета(КомандыОтчетов);
	Если КомандаОтчет <> Неопределено Тогда
		КомандаОтчет.РежимЗаписи = "";
	КонецЕсли;
	
	КомандаОтчет = Отчеты.ВыручкаИСебестоимостьПродаж.ДобавитьКомандуПродажиПоНоменклатуре(КомандыОтчетов);
	Если КомандаОтчет <> Неопределено Тогда
		КомандаОтчет.Важность = "СмТакже";
		КомандаОтчет.РежимЗаписи = "";
	КонецЕсли;
	
	КомандаОтчет = Отчеты.СостояниеАссортимента.ДобавитьКомандуОтчета(КомандыОтчетов);
	Если КомандаОтчет <> Неопределено Тогда
		КомандаОтчет.Важность = "СмТакже";
		КомандаОтчет.РежимЗаписи = "";
		КомандаОтчет.ФункциональныеОпции = "ИспользоватьАссортимент";
	КонецЕсли;
	
	//++ Локализация


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

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

#Область МеханизмыНастройкиРаботыСРеквизитамиВВидеНоменклатуры

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

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

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

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

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

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

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

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

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

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

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

Функция РекомендуемыеДляКонтроляУникальностиРеквизиты(ТипНоменклатуры, ОсобенностьУчета)
	
	РекомендуемыеДляКонтроляУникальностиРеквизиты = Новый Массив;
	
	НоменклатураЛокализация.РекомендуемыеДляКонтроляУникальностиРеквизиты(РекомендуемыеДляКонтроляУникальностиРеквизиты, ТипНоменклатуры, ОсобенностьУчета); 
	
	Возврат РекомендуемыеДляКонтроляУникальностиРеквизиты;
	
КонецФункции

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

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

	
	ТекстыСоединения = Новый Массив;
	
	Для Каждого СтрокаУсловия Из РеквизитыКонтроляУникальности Цикл
		
		Если Не СтрокаУсловия.ЭтоДопРеквизит Тогда
			
			ТекстУсловия = СтрЗаменить(ШаблонУсловияПоРеквизиту, "ИмяРеквизита", СтрокаУсловия.ИмяРеквизита);
			ТекстыУсловий.Добавить(ТекстУсловия);
			
			Запрос.УстановитьПараметр(СтрокаУсловия.ИмяРеквизита, Форма.Объект[СтрокаУсловия.ПутьКДанным]);
			
		Иначе
			СчетчикУсловийСтрока = Формат(СчетчикУсловий,"ЧГ=");
			ТекстУсловия = ШаблонУсловияПоДопРеквизиту;
			ТекстУсловия = СтрЗаменить(ТекстУсловия, "&Свойство_СчетчикУсловий", "&Свойство_" + СчетчикУсловийСтрока);
			ТекстУсловия = СтрЗаменить(ТекстУсловия, "&Значение_СчетчикУсловий", "&Значение_" + СчетчикУсловийСтрока);
			ТекстУсловия = СтрЗаменить(ТекстУсловия, "&ЗначениеПустое_СчетчикУсловий", "&ЗначениеПустое_" + СчетчикУсловийСтрока);
			ТекстУсловия = СтрЗаменить(ТекстУсловия, "СчетчикУсловий", СчетчикУсловийСтрока);
			ТекстыУсловий.Добавить(ТекстУсловия);
			
			Запрос.УстановитьПараметр("Свойство_" + СчетчикУсловий, СтрокаУсловия.Свойство);
			Запрос.УстановитьПараметр("Значение_" + СчетчикУсловий, Форма[СтрокаУсловия.ПутьКДанным]);
			Запрос.УстановитьПараметр("ЗначениеПустое_" + СчетчикУсловий, ?(ТипЗнч(Форма[СтрокаУсловия.ПутьКДанным]) = Тип("Булево")
																				И Не Форма[СтрокаУсловия.ПутьКДанным],
																			Истина,
																			Не ЗначениеЗаполнено(Форма[СтрокаУсловия.ПутьКДанным])));
			
			ТекстСоединения = СтрЗаменить(ШаблонТекстаСоединения, "СчетчикУсловий", Формат(СчетчикУсловий,"ЧГ="));
			ТекстыСоединения.Добавить(ТекстСоединения);
			СчетчикУсловий = СчетчикУсловий + 1;
		КонецЕсли;
		
	КонецЦикла;
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ",&ТекстЗапросаСоединенияСТЧДопРеквизитов", СтрСоединить(ТекстыСоединения));
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстЗапросаУсловияПоРеквизитам", СтрСоединить(ТекстыУсловий, Символы.ПС + "И" + Символы.НПП));
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ИмяПроверяемогоСправочника", ?(ЭтоНоменклатура, "Номенклатура", "ХарактеристикиНоменклатуры"));
	
	Запрос.Текст = ТекстЗапроса;
	
	Форма.ТаблицаНайдено.Загрузить(Запрос.Выполнить().Выгрузить());
	
КонецПроцедуры

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

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

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

// Проверяет наличие прав у текущего пользователя на ввод информации по номенклатуре без контроля.
//
// Возвращаемое значение:
//	Булево - наличие права ввода
//
Функция ДоступенВводБезКонтроля() Экспорт
	
	Возврат ПраваПользователяПовтИсп.ВводИнформацииПоНоменклатуреБезКонтроля();
	
КонецФункции

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

	Возврат Запрос.Выполнить().Пустой();
	
КонецФункции

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

	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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


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

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

	НоменклатураЛокализация.ИспользованиеЭлементов(ИспользованиеЭлементов, Объект, РежимВидимостиПоказатьТолькоВажные, РежимПроверкиИспользованияРеквизитов);
	
	Возврат ИспользованиеЭлементов;
	
КонецФункции

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

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

КонецФункции

// Параметры:
// 	ЭлементЗаголовок - Строка, ФорматированнаяСтрока - см. ЗаголовкиЭлементов 
// 					 - Структура - содержит - см. ЗаголовкиЭлементов:
// 					 	* Значение - Структура:
// 					 		** Заголовок - Строка
// Возвращаемое значение:
// 	Строка - заголовок
//
Функция ЗаголовокГиперссылки(ЭлементЗаголовок) Экспорт
	Если ТипЗнч(ЭлементЗаголовок.Значение) = Тип("Строка") 
		Или ТипЗнч(ЭлементЗаголовок.Значение) = Тип("ФорматированнаяСтрока") Тогда
		Возврат ЭлементЗаголовок.Значение;
	Иначе
		Возврат ЭлементЗаголовок.Значение.Заголовок;
	КонецЕсли;	
КонецФункции

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

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

Процедура ДобавитьЗначениеСвойства(ТаблицаСвойств, Свойства, Префикс, ИмяКолонки, Значение)
	ИмяСвойства = СокрЛП(СтандартныеПодсистемыСервер.ПреобразоватьАдаптированноеНаименованиеКолонкиВСтроку(Сред(ИмяКолонки, СтрДлина(Префикс) + 1)));
	Свойство = Свойства.Получить(ИмяСвойства); // ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения
	Если Свойство <> Неопределено Тогда
		НоваяСтрокаСвойств = ТаблицаСвойств.Добавить();
		НоваяСтрокаСвойств.Свойство = Свойство.Ссылка;
		НоваяСтрокаСвойств.Значение = Значение;
	КонецЕсли;
КонецПроцедуры

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

#Область ОбновлениеИнформационнойБазы

//++ Локализация

// см. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления
//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт

	Обработчик = Обработчики.Добавить();
	Обработчик.Процедура = "Справочники.Номенклатура.ОбработатьДанныеДляПереходаНаНовуюВерсию";
	Обработчик.Версия = "11.5.23.28";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Идентификатор = Новый УникальныйИдентификатор("51119c20-5762-4c2b-bdf7-2f9a8da27bec");
	Обработчик.Многопоточный = Истина;
	Обработчик.ПроцедураЗаполненияДанныхОбновления = "Справочники.Номенклатура.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
	Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
	
	СписокОписаний = Новый Массив;
	СписокОписаний.Добавить(НСтр("ru = 'Обновление справочника ""Номенклатура"":'"));
	СписокОписаний.Добавить(НСтр("ru = '- замена код ОКВЭД2 с типом справочник Классификатор ОКВЭД2 на строка';"));
	
	Обработчик.Комментарий = СтрСоединить(СписокОписаний, Символы.ПС);
	Обработчик.Порядок = Перечисления.ПорядокОбработчиковОбновления.Обычный;
	
	Читаемые = Новый Массив;
	Читаемые.Добавить(Метаданные.Справочники.Номенклатура.ПолноеИмя());
	Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
	
	Изменяемые = Новый Массив;
	Изменяемые.Добавить(Метаданные.Справочники.Номенклатура.ПолноеИмя());
	Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
	
	Блокируемые = Новый Массив;
	Блокируемые.Добавить(Метаданные.Справочники.Номенклатура.ПолноеИмя());
	Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");

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

// Параметры:
// 	Параметры - см. ОбновлениеИнформационнойБазы.ОсновныеПараметрыОтметкиКОбработке
//
Процедура ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию(Параметры) Экспорт
	
	ПараметрыВыборки = Параметры.ПараметрыВыборки;
	ПараметрыВыборки.ПолныеИменаОбъектов = ПустаяСсылка().Метаданные().ПолноеИмя();
	ПараметрыВыборки.СпособВыборки = ОбновлениеИнформационнойБазы.СпособВыборкиСсылки();

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

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

//-- Локализация

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

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

#КонецЕсли

#Иначе
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	Поля.Добавить("Наименование");
КонецПроцедуры
#КонецЕсли

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