Загрузка данных


Результат = Новый Структура;
	Результат.Вставить("Ссылка");
	Результат.Вставить("СтруктурноеПодразделение");
	Результат.Вставить("СтруктурноеПодразделениеOID");
	Результат.Вставить("Должность");
	Результат.Вставить("Специальность");
	
	Результат = ЭМД_Сотрудник_НовыйМеханизм(ДокументСсылка);
	
	Если Результат.Ссылка = Неопределено Тогда
		Результат = ЭМД_Сотрудник_СтарыйМеханизм(ДокументСсылка);
	КонецЕсли;
	
	Возврат Результат;

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

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

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