Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Возвращает структуру, содержащую значения реквизитов прочитанные из информационной базы
- // по ссылке на объект.
- //
- // Если доступа к одному из реквизитов нет, возникнет исключение прав доступа.
- // Если необходимо зачитать реквизит независимо от прав текущего пользователя,
- // то следует использовать предварительный переход в привилегированный режим.
- //
- // Функция не предназначена для получения значений реквизитов пустых ссылок.
- //
- // Параметры:
- // Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить.
- //
- // Реквизиты - Строка - имена реквизитов, перечисленные через запятую, в формате
- // требований к свойствам структуры.
- // Например, "Код, Наименование, Родитель".
- // - Структура, ФиксированнаяСтруктура - в качестве ключа передается
- // псевдоним поля для возвращаемой структуры с результатом, а в качестве
- // значения (опционально) фактическое имя поля в таблице.
- // Если значение не определено, то имя поля берется из ключа.
- // - Массив, ФиксированныйМассив - имена реквизитов в формате требований
- // к свойствам структуры.
- //
- // Возвращаемое значение:
- // Структура - содержит имена (ключи) и значения затребованных реквизитов.
- // Если строка затребованных реквизитов пуста, то возвращается пустая структура.
- // Если в качестве объекта передана пустая ссылка, то все реквизиты вернутся со значением Неопределено.
- //
- Функция ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты) Экспорт
- Если ТипЗнч(Реквизиты) = Тип("Строка") Тогда
- Если ПустаяСтрока(Реквизиты) Тогда
- Возврат Новый Структура;
- КонецЕсли;
- Реквизиты = СтрРазделить(Реквизиты, ",", Ложь);
- КонецЕсли;
- СтруктураРеквизитов = Новый Структура;
- Если ТипЗнч(Реквизиты) = Тип("Структура") Или ТипЗнч(Реквизиты) = Тип("ФиксированнаяСтруктура") Тогда
- СтруктураРеквизитов = Реквизиты;
- ИначеЕсли ТипЗнч(Реквизиты) = Тип("Массив") Или ТипЗнч(Реквизиты) = Тип("ФиксированныйМассив") Тогда
- Для Каждого Реквизит Из Реквизиты Цикл
- СтруктураРеквизитов.Вставить(СтрЗаменить(Реквизит, ".", ""), Реквизит);
- КонецЦикла;
- Иначе
- ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неверный тип второго параметра Реквизиты: %1'"), Строка(ТипЗнч(Реквизиты)));
- КонецЕсли;
- ТекстПолей = "";
- Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
- ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение),
- СокрЛП(КлючИЗначение.Значение),
- СокрЛП(КлючИЗначение.Ключ));
- Псевдоним = СокрЛП(КлючИЗначение.Ключ);
- ТекстПолей = ТекстПолей + ?(ПустаяСтрока(ТекстПолей), "", ",") + "
- | " + ИмяПоля + " КАК " + Псевдоним;
- КонецЦикла;
- Запрос = Новый Запрос;
- Запрос.УстановитьПараметр("Ссылка", Ссылка);
- Запрос.Текст =
- "ВЫБРАТЬ
- |" + ТекстПолей + "
- |ИЗ
- | " + Ссылка.Метаданные().ПолноеИмя() + " КАК ПсевдонимЗаданнойТаблицы
- |ГДЕ
- | ПсевдонимЗаданнойТаблицы.Ссылка = &Ссылка
- |";
- Выборка = Запрос.Выполнить().Выбрать();
- Выборка.Следующий();
- Результат = Новый Структура;
- Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
- Результат.Вставить(КлючИЗначение.Ключ);
- КонецЦикла;
- ЗаполнитьЗначенияСвойств(Результат, Выборка);
- Возврат Результат;
- КонецФункции
- // Возвращает значение реквизита, прочитанного из информационной базы по ссылке на объект.
- //
- // Если доступа к реквизиту нет, возникнет исключение прав доступа.
- // Если необходимо зачитать реквизит независимо от прав текущего пользователя,
- // то следует использовать предварительный переход в привилегированный режим.
- //
- // Функция не предназначена для получения значений реквизитов пустых ссылок.
- //
- // Параметры:
- // Ссылка - ссылка на объект, - элемент справочника, документ, ...
- // ИмяРеквизита - Строка, например, "Код".
- //
- // Возвращаемое значение:
- // Произвольный - зависит от типа значения прочитанного реквизита.
- //
- Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита) Экспорт
- Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита);
- Возврат Результат[СтрЗаменить(ИмяРеквизита, ".", "")];
- КонецФункции
- // Возвращает значения реквизитов, прочитанные из информационной базы
- // для нескольких объектов.
- //
- // Если доступа к одному из реквизитов нет, возникнет исключение прав доступа.
- // Если необходимо зачитать реквизит независимо от прав текущего пользователя,
- // то следует использовать предварительный переход в привилегированный режим.
- //
- // Функция не предназначена для получения значений реквизитов пустых ссылок.
- //
- // Параметры:
- // МассивСсылок - массив ссылок на объекты одного типа.
- // ВАЖНО! значения массива должны быть ссылками на
- // объекты одного типа!
- // ИменаРеквизитов - Строка, имена реквизитов перечисленные через запятую,
- // в формате требований к свойствам структуры.
- // Например, "Код, Наименование, Родитель".
- //
- // Возвращаемое значение:
- // Соответствие - где ключ - ссылка на объект, а Значение - структура, которая
- // содержит список свойств, как список имен в строке.
- // ИменаРеквизитов, со значениям реквизитов, прочитанными из информационной базы.
- //
- Функция ЗначенияРеквизитовОбъектов(МассивСсылок, ИменаРеквизитов) Экспорт
- ЗначенияРеквизитов = Новый Соответствие;
- Если МассивСсылок.Количество() = 0 Тогда
- Возврат ЗначенияРеквизитов;
- КонецЕсли;
- Запрос = Новый Запрос;
- Запрос.Текст =
- "ВЫБРАТЬ
- | Ссылка КАК Ссылка, " + ИменаРеквизитов + "
- |ИЗ
- | " + МассивСсылок[0].Метаданные().ПолноеИмя() + " КАК Таблица
- |ГДЕ
- | Таблица.Ссылка В (&МассивСсылок)";
- Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);
- Выборка = Запрос.Выполнить().Выбрать();
- Пока Выборка.Следующий() Цикл
- Результат = Новый Структура(ИменаРеквизитов);
- ЗаполнитьЗначенияСвойств(Результат, Выборка);
- ЗначенияРеквизитов[Выборка.Ссылка] = Результат;
- КонецЦикла;
- Возврат ЗначенияРеквизитов;
- КонецФункции
- // Возвращает значения реквизита, прочитанного из информационной базы для нескольких объектов.
- //
- // Если доступа к реквизиту нет, возникнет исключение прав доступа.
- // Если необходимо зачитать реквизит независимо от прав текущего пользователя,
- // то следует использовать предварительный переход в привилегированный режим.
- //
- // Функция не предназначена для получения значений реквизитов пустых ссылок.
- //
- // Параметры:
- // МассивСсылок - массив ссылок на объекты одного типа.
- // ВАЖНО! значения массива должны быть ссылками на
- // объекты одного типа!
- // ИмяРеквизита - Строка, например, "Код".
- //
- // Возвращаемое значение:
- // Соответствие - Ключ - ссылка на объект, Значение - значение прочитанного реквизита.
- //
- Функция ЗначениеРеквизитаОбъектов(МассивСсылок, ИмяРеквизита) Экспорт
- ЗначенияРеквизитов = ЗначенияРеквизитовОбъектов(МассивСсылок, ИмяРеквизита);
- Для Каждого Элемент Из ЗначенияРеквизитов Цикл
- ЗначенияРеквизитов[Элемент.Ключ] = Элемент.Значение[ИмяРеквизита];
- КонецЦикла;
- Возврат ЗначенияРеквизитов;
- КонецФункции
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement