Товары на складах по срокам годности / Модуль объекта

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

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

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

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

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

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

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

	Если ЭлементыФормы.Найти("Периоды") <> Неопределено
		И ЭлементыФормы.Периоды.ПодчиненныеЭлементы.Количество() Тогда
		
		СтруктураИстечениеСрокаГодности = НайтиЭлементФормыПоПредставлениюОтбора(ЭтаФорма,
																				"С истекающим сроком годности",
																				Истина);
		
		Если СтруктураИстечениеСрокаГодности <> Неопределено Тогда
			
			Если СтруктураИстечениеСрокаГодности.ГруппаОтбораИспользование <> Неопределено Тогда
				ЭлементыФормы.Переместить(СтруктураИстечениеСрокаГодности.ГруппаОтбораИспользование,
											ЭлементыФормы.Периоды,
											ЭлементыФормы.Периоды.ПодчиненныеЭлементы[0]);
			КонецЕсли;
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

Функция ПараметризуемыеЗаголовкиПолей()
	
	Возврат КомпоновкаДанныхСервер.СоответствиеЗаголовковПолейЕдиницИзмерений(КомпоновщикНастроек);
	
КонецФункции

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

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

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

#КонецЕсли

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