86 lines
6.5 KiB
Plaintext
86 lines
6.5 KiB
Plaintext
// Общий модуль серверного HTTP-сервиса. Все экспортные методы только читают данные.
|
|
// Модуль предназначен для публикации в тестовой конфигурации, а не для выполнения
|
|
// из SQL-адаптера. Аутентификацию и разбор HTTP-запроса реализует модуль сервиса.
|
|
|
|
Функция НайтиДополнительныеРеквизиты(ТекстПоиска = "", ВключатьПомеченныеНаУдаление = Ложь) Экспорт
|
|
|
|
Результат = Новый Массив;
|
|
Выборка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.Выбрать();
|
|
Пока Выборка.Следующий() Цикл
|
|
Если Не ВключатьПомеченныеНаУдаление И Выборка.ПометкаУдаления Тогда
|
|
Продолжить;
|
|
КонецЕсли;
|
|
Если ЗначениеЗаполнено(ТекстПоиска)
|
|
И СтрНайти(НРег(Выборка.Наименование), НРег(ТекстПоиска)) = 0 Тогда
|
|
Продолжить;
|
|
КонецЕсли;
|
|
|
|
ОбъектСвойства = Выборка.ПолучитьОбъект();
|
|
СтрокаСвойства = Новый Структура;
|
|
СтрокаСвойства.Вставить("ref", Строка(Выборка.Ссылка.УникальныйИдентификатор()));
|
|
СтрокаСвойства.Вставить("description", Выборка.Наименование);
|
|
СтрокаСвойства.Вставить("marked_for_deletion", Выборка.ПометкаУдаления);
|
|
ДобавитьСвойствоЕслиЕсть(СтрокаСвойства, ОбъектСвойства, "Имя", "name");
|
|
ДобавитьСвойствоЕслиЕсть(СтрокаСвойства, ОбъектСвойства, "ИдентификаторДляФормул", "identifier_for_formula");
|
|
ДобавитьСвойствоЕслиЕсть(СтрокаСвойства, ОбъектСвойства, "НаборСвойств", "property_set");
|
|
ДобавитьСвойствоЕслиЕсть(СтрокаСвойства, ОбъектСвойства, "ТипЗначения", "value_type");
|
|
// Отдельно фиксируем наличие реквизита в объекте ПВХ. Это позволяет
|
|
// SQL-разработке отличить пустое значение от отсутствующей семантики.
|
|
СтрокаСвойства.Вставить("semantic_fields", Новый Структура(
|
|
"name,identifier_for_formula,property_set,value_type",
|
|
СтрокаСвойства.Свойство("name"),
|
|
СтрокаСвойства.Свойство("identifier_for_formula"),
|
|
СтрокаСвойства.Свойство("property_set"),
|
|
СтрокаСвойства.Свойство("value_type")));
|
|
Результат.Добавить(СтрокаСвойства);
|
|
КонецЦикла;
|
|
|
|
Возврат Результат;
|
|
КонецФункции
|
|
|
|
Функция МаршрутЗначенийДополнительногоРеквизита(Свойство, ВладелецМетаданных) Экспорт
|
|
|
|
Если ТипЗнч(Свойство) <> Тип("ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения") Тогда
|
|
ВызватьИсключение "Свойство должно быть ссылкой ПВХ ДополнительныеРеквизитыИСведения.";
|
|
КонецЕсли;
|
|
Если ВладелецМетаданных <> "Справочник.СтруктурныеЕдиницы" Тогда
|
|
ВызватьИсключение "Маршрут подтвержден только для Справочник.СтруктурныеЕдиницы.";
|
|
КонецЕсли;
|
|
|
|
// Текст предназначен для СКД и не исполняется сервисом. В этой
|
|
// конфигурации значения подтверждённо находятся в табличной части владельца.
|
|
Возврат Новый Структура(
|
|
"source,object_field,property_field,value_field,query_join,parameter",
|
|
"Справочник.СтруктурныеЕдиницы.ДополнительныеРеквизиты",
|
|
"Ссылка",
|
|
"Свойство",
|
|
"Значение",
|
|
"ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтруктурныеЕдиницы.ДополнительныеРеквизиты КАК ДополнительныеРеквизиты "
|
|
+ "ПО ДополнительныеРеквизиты.Ссылка = СтруктурныеЕдиницы.Ссылка "
|
|
+ "И ДополнительныеРеквизиты.Свойство = &Свойство",
|
|
Строка(Свойство.УникальныйИдентификатор())
|
|
);
|
|
КонецФункции
|
|
|
|
Процедура ДобавитьСвойствоЕслиЕсть(Приемник, Источник, ИмяСвойства, ИмяПоля) Экспорт
|
|
ЗначениеСвойства = Неопределено;
|
|
Если Источник.Свойство(ИмяСвойства, ЗначениеСвойства) Тогда
|
|
Приемник.Вставить(ИмяПоля, ПредставлениеДляJSON(ЗначениеСвойства));
|
|
КонецЕсли;
|
|
КонецПроцедуры
|
|
|
|
Функция ПредставлениеДляJSON(ЗначениеСвойства) Экспорт
|
|
Если ЗначениеСвойства = Неопределено Тогда
|
|
Возврат Неопределено;
|
|
КонецЕсли;
|
|
Если ТипЗнч(ЗначениеСвойства) = Тип("Структура") Или ТипЗнч(ЗначениеСвойства) = Тип("Массив") Тогда
|
|
Возврат ЗначениеСвойства;
|
|
КонецЕсли;
|
|
Попытка
|
|
УникальныйИдентификатор = ЗначениеСвойства.УникальныйИдентификатор();
|
|
Возврат Новый Структура("ref,presentation", Строка(УникальныйИдентификатор), Строка(ЗначениеСвойства));
|
|
Исключение
|
|
КонецПопытки;
|
|
Возврат Строка(ЗначениеСвойства);
|
|
КонецФункции
|