В ЗУП не знаю, в БП это в ГМ УправлениеСвойствами
// Возвращает значения дополнительных свойств объекта.
//
// Параметры:
// ВладелецСвойств — Ссылка — например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя, …
// ПолучатьДопРеквизиты — Булево — в результат включать дополнительные реквизиты.
// ПолучатьДопСведения — Булево — в результат включать дополнительные сведения.
// МассивСвойств — Массив — свойства:
// * ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения — значения
// которых следует получить.
// — Неопределено — получить значения всех свойств владельца.
// Возвращаемое значение:
// ТаблицаЗначений — колонки:
// * Свойство — ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения — свойство владельца.
// * Значение — Произвольный — значения любого типа из описания типов свойства объекта метаданных:
// «Метаданные.ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.Тип».
//
Функция ПолучитьЗначенияСвойств(ВладелецСвойств,
ПолучатьДопРеквизиты = Истина,
ПолучатьДопСведения = Истина,
МассивСвойств = Неопределено) Экспорт
Опубликовано в Статьи по 1С 27.10.2018
В библиотеке стандартных подсистем 1С дополнительные реквизиты и сведения включены и активно применяются. Эти механизмы позволяют добавить дополнительный реквизит к объекту метаданных без изменения типовой конфигурации. Принцип работы дополнительных реквизитов и сведений, их добавление и получение значений.
Отличие дополнительного реквизита от дополнительного сведения в том, что
- Дополнительные реквизиты – список реквизитов, доступных в форме документа или справочника; причем эти реквизиты хранятся в табличной части объекта, к которому они добавлены;
- Дополнительные сведения – список значений доступных по дополнительной кнопке; причем доп. сведения хранятся в отдельном регистре.
После ввода дополнительного реквизита или сведения 1С, можно создать подключаемую обработку, где считать введенные дополнительные данные и задать необходимую логику обработки данных, в которой использовать этот реквизит или сведение.
Как получить 1С дополнительные реквизиты и сведения программно:
Для получения дополнительных данных используем запрос, в котором получим значение дополнительных реквизитов и сведений:
////
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДополнительныеСведения.Свойство,
| ДополнительныеСведения.Значение
|ИЗ
| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
|ГДЕ
| ДополнительныеСведения.Объект = &Объект»;
Запрос.УстановитьПараметр(«Объект», СсылкаДокумент);
////
Для получения дополнительного реквизита использую код вида:
////
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| НоменклатураДополнительныеРеквизиты.Свойство,
| НоменклатураДополнительныеРеквизиты.Значение
|ИЗ
| Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
|ГДЕ
| НоменклатураДополнительныеРеквизиты.Свойство = &Свойство
| И НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка»;
Запрос.УстановитьПараметр(«Ссылка», СсылкаДокумент);
Запрос.УстановитьПараметр(«Свойство», ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(«Коэффициент бруто»));
////
Теперь вы без труда сможете добавить и получить необходимые дополнительные 1С данные без снятия конфигурации 1С с поддержки и изменения типовой конфигурации. Без сомнения, такой инструмент должен быть в арсенале 1С программиста и активно использоваться в работе.
1. Создание на форме дополнительных реквизитов в 1С 8.3 и их функции
Механизм дополнительных реквизитов в 1С 8.3 позволяет пользователю самостоятельно добавлять реквизиты к объектам, не меняя при этом конфигурации. После добавления и настройки реквизит отобразится на форме, пользователь сможет заполнить его и значения будут сохраняться в базе.
Вывести реквизиты на форму можно динамически, при ее открытии. Если смотреть отладчиком, то видно, что после процедур ПриСозданииНаСервере и ПриОткрытии дополнительных реквизитов в 1С 8.3 еще нет. Появятся они, когда активизируется закладка «Дополнительно». При создании на форме, реквизитам присваиваются длинные, страшные, ни о чем не говорящие имена. Например:
Имена значений дополнительных реквизитов на форме
Из-за этого возникают сложности с программным обращением к дополнительным реквизитам в 1С 8.3.
Дополнительные реквизиты на форме создаются типовой процедурой УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме:
Создание дополнительных реквизитов на форме
Посмотрим отладчиком, как выглядит форма с созданными на ней дополнительными реквизитами для программного обращения:
Форма с созданными на ней дополнительными реквизитами в 1С 8.3
2. Установка значения дополнительного реквизита в 1С 8.3 с помощью обращения к нему по имени
Чтобы иметь возможность программного обращения к созданным дополнительным реквизитам, нужно знать их имена на форме. Помочь разработчику узнать имена дополнительных реквизитов может специальный реквизит Свойства_ОписаниеДополнительныхРеквизитов. Его автоматически создает система, когда используется механизм дополнительных реквизитов. Тип этого служебного реквизита ДанныеФормыКоллекция. Он содержит список всех дополнительных реквизитов объекта и все сведения о них. Теперь, мы сможем найти нужный дополнительный реквизит в 1С 8.3 по имени, или по соответствующему ему свойству плана видов характеристик. Итак, обращаясь по имени к доп.реквизиту можно присвоить ему нужное значение, либо, наоборот, получить его значение и, например, как-то проверить.
Найти в плане видов характеристик интересующий нас реквизит можно по имени для разработчиков. Имя дополнительного реквизита для разработчиков видно в пользовательском режиме в нижней части формы характеристики, в разделе Для разработчиков:
Раздел Для разработчиков в нижней части формы характеристики
Вот вариант процедуры, которая получает поле доп. реквизита по его имени:
Параметры функции: форма и имя дополнительного реквизита
Функция принимает два параметра – форма и имя дополнительного реквизита (имя для разработчиков). Сперва получим тот самый служебный реквизит, в котором содержатся данные о всех дополнительных реквизитах на форме. Затем по имени дополнительного реквизита в 1С 8.3 найдем свойство в плане видов характеристик. Теперь по этому свойству можем в списке реквизитов найти соответствующий реквизит.
Так может выглядеть код, вызывающий процедуру и устанавливающий значение дополнительному реквизиту:
Код, вызывающий процедуру и устанавливающий значение дополнительному реквизиту в 1С 8.3
Главное преимущество использования механизма дополнительных реквизитов состоит в том, что у нас нет необходимости вносить изменения в типовую конфигурацию. При этом, зная несколько тонкостей обращения с дополнительными реквизитами в 1С 8.3, мы получаем возможность работать с ними так же свободно, как и с основными реквизитами объекта.
Специалист компании «Кодерлайн»
Екатерина Редько
Рассмотрим работу с дополнительными сведениями и дополнительными реквизитами в Конфигураторе на примере конфигурации УТ 11.
Сами элементы дополнительных сведений и дополнительных реквизитов хранятся в плане видов характеристик ДополнительныеРеквизитыИСведения (рис. 1):
Рис. 1. План видов характеристик ДополнительныеРеквизитыИСведения
Значения дополнительных сведений хранятся в непериодическом независимом регистре сведений ДополнительныеСведения (рис. 2):
Рис. 2. Регистр сведений ДополнительныеСведения
Значения дополнительных реквизитов хранятся в табличных частях объектов ДополнительныеРеквизиты, например, справочник Номенклатура (рис. 3):
Рис. 3. Табличная часть объекта ДополнительныеРеквизиты
Получить значения дополнительных сведений и дополнительных реквизитов можно с помощью типовой функции ПолучитьЗначенияСвойств() общего модуля УправлениеСвойствами (рис. 4):
Рис. 4. Функция ПолучитьЗначенияСвойств() общего модуля УправлениеСвойствами
Автор Дина Королева.
Подписывайтесь на канал
«Полезный 1С»
В телеграм канале — наш практический опыт, бизнес-кейсы и способы повышения эффективности компании, которые мы опробовали внутри группы Neti.
Возврат к списку
В библиотеке стандартных подсистем 1С дополнительные реквизиты и сведения включены и активно применяются. Эти механизмы позволяют добавить дополнительный реквизит к объекту метаданных без изменения типовой конфигурации. В публикации хочу продемонстрировать работу дополнительных реквизитов и сведений, их добавление и получение значений.
Краткое описание механизма дополнительных реквизитов и сведений
Пример добавление дополнительного реквизита вручную вы можете посмотреть в публикации Брутто в ТОРГ12, где добавляется новый реквизит «Коэффициент брутто» в справочнике «Номенклатура». Таким образом можно добавлять реквизиты всех известных типов (число, строка, булево, список значений, ссылки на справочники и т.д.) к распространенным справочникам и документам 1С.
Отличие дополнительного реквизита от дополнительного сведения в том, что
- Дополнительные реквизиты – список реквизитов, доступных в форме документа или справочника; причем эти реквизиты хранятся в табличной части объекта, к которому они добавлены;
- Дополнительные сведения – список значений доступных по дополнительной кнопке; причем доп. сведения хранятся в отдельном регистре.
После ввода дополнительного реквизита или сведения 1С, можно создать подключаемую обработку, где считать введенные дополнительные данные и задать необходимую логику обработки данных, в которой использовать этот реквизит или сведение.
Для получения дополнительных данных приведу примеры запросов, в которых получу 1С дополнительные реквизиты и сведения.
Для получения дополнительного сведения использую запрос вида:
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ДополнительныеСведения.Свойство, | ДополнительныеСведения.Значение |ИЗ | РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения |ГДЕ | ДополнительныеСведения.Объект = &Объект"; Запрос.УстановитьПараметр("Объект", СсылкаДокумент);
Для получения дополнительного реквизита использую код вида (пример получения коэффициента брутто в ТОРГ12):
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НоменклатураДополнительныеРеквизиты.Свойство, | НоменклатураДополнительныеРеквизиты.Значение |ИЗ | Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты |ГДЕ | НоменклатураДополнительныеРеквизиты.Свойство = &Свойство | И НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", СсылкаДокумент); Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Коэффициент бруто"));
Теперь вы без труда сможете добавить и получить необходимые дополнительные 1С данные без снятия конфигурации 1С с поддержки и изменения типовой конфигурации. Без сомнения, такой инструмент должен быть в арсенале 1С программиста и активно использоваться в работе.
Дополнительные реквизиты в 1с 8 представляют из себя специальную табличную часть у некоторых документов и справочников. В ней хранятся дополнительные данные, касающиеся данного объекта метаданных. Данный механизм реализован только в конфигурация работающих на управляемом приложении. По своему назначению дополнительные реквизиты напоминают дополнительные сведения, разница в том, что доп. сведения хранятся в отдельном регистре, это их плюс, но зато доп. реквизиты автоматически выводятся на форму объекта. В этой статье будет рассказано, как получать и записывать дополнительные реквизиты программно.
Получить дополнительные реквизиты программно
Функция получает значение дополнительного реквизита объекта по ссылке и свойству.
- Ссылка. Тип: Любая ссылка. Ссылка на искомый объект;
- Свойство. Тип: План видов характеристик ДополнительныеРеквизитыИСведения. Дополнительное свойство.
Код:
Функция ПолучитьЗначениеДопРеквизита(Ссылка, Свойство) Экспорт
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Свойство",Свойство);
Массив = Ссылка.ДополнительныеРеквизиты.НайтиСтроки(ПараметрыОтбора);
Если Массив.Количество() = 0 Тогда
Возврат Неопределено;
Иначе
Возврат Массив[0].Значение;
КонецЕсли;
КонецФункции
Записать дополнительные реквизиты программно
Функция записывает значение доп. реквизита объекта по ссылке и свойству.
- Ссылка. Тип: Любая ссылка. Ссылка на искомый объект;
- Свойство. Тип: План видов характеристик ДополнительныеРеквизитыИСведения. Дополнительное свойство;
- Значение. Тип: заданный для данного свойства.
Функция ЗаписатьЗначениеДопРеквизита(Ссылка, Свойство, Значение)
Попытка
ОбъектСсылки = Ссылка.ПолучитьОбъект();
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Свойство",Свойство);
Массив = ОбъектСсылки.ДополнительныеРеквизиты.НайтиСтроки(ПараметрыОтбора);
Если Массив.Количество() = 0 Тогда
НовоеСвойство = ОбъектСсылки.ДополнительныеРеквизиты.Добавить();
НовоеСвойство.Свойство = Свойство;
НовоеСвойство.Значение = Значение;
Иначе
Массив[0].Значение = Значение;
КонецЕсли;
ОбъектСсылки.Записать();
Исключение
Возврат Ложь;
КонецПопытки
КонецФункции
Если вы еще не знаете, как правильно работать с механизмом дополнительных сведений в 1с 8, то прочтите об этом в статье 1С дополнительные сведения запись и получение.
На чтение 2 мин. Просмотров 635 Опубликовано 15.12.2019
Примеры работы с дополнительными реквизитами.
Как получить значение дополнительного реквизита:
Пример: мы делаем печатную форму документа «Заказ клиента» и хотим вывести на неё значение определённого дополнительного реквизита — «Должность покупателя».
Используем вложенный запрос, в котором соединяем левым соединением таблицу «Дополнительные реквизиты» документа «Заказ клиента» с Планом видов характеристик «Дополнительные реквизиты и сведения». Устанавливаем условие: заголовок дополнительного реквизита должен быть таким – «Должность покупателя». Таблицы соединяем по ссылке на «Заказ клиента».
Получается вот такой запрос:
Также можно использовать метод НайтиПоНаименованию ( «***» ) .
Переменная Ссылка – это ссылка на «Договор контрагента».
Проверка на предмет того, что дополнительный реквизит заполнен:
Как изменить значения дополнительных реквизитов:
Задействуем общий модуль УправлениеСвойствами , который входит в состав БСП.
Юзайте на здоровья!
3 thoughts on “Получить значение дополнительных реквизитов 1С 8”
Спасибо, очень помогло.
К сожалению, на строчке
Запрос.УстановитьПараметр(«Объект», Объект);
спотыкается и отказывается дальше работать
Как редактировать доп реквизиты:
редактировать их состав можно тут:
хранятся они тут:
где типы реквизитов:
получить их в запросе можно так:
НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка,
НоменклатураДополнительныеРеквизиты.Ссылка.Код КАК Код,
НоменклатураДополнительныеРеквизиты.Свойство КАК Свойство,
НоменклатураДополнительныеРеквизиты.Значение КАК Значение
Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
Разберем что откуда берется.
Дополнительные реквизиты заводятся в «ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения» и там же указан тип значений допРеквизитов:
ДополнительныеРеквизитыИСведения.Ссылка КАК Ссылка,
ДополнительныеРеквизитыИСведения.ТипЗначения КАК ТипЗначения
ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
Для справки: Кроме ссыка и типЗначения в «ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения» хранится куча свойств этих реквизитов
Если указан типЗначеня «ДополнительноеЗначение», то виды этих доп значений можем посмотреть тут:
ЗначенияСвойствОбъектов.Владелец КАК Владелец,
ЗначенияСвойствОбъектов.Ссылка КАК Ссылка,
ЗначенияСвойствОбъектов.Владелец.ТипЗначения КАК ВладелецТипЗначения
Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
а сами значения дополнительных реквизитов хранятся тут:
Google+