Initial project import
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
// Общий модуль серверного 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", Строка(УникальныйИдентификатор), Строка(ЗначениеСвойства));
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
Возврат Строка(ЗначениеСвойства);
|
||||
КонецФункции
|
||||
Reference in New Issue
Block a user