1с создать дополнительный реквизит программно

Примеры работы с дополнительными реквизитами.

Как получить значение дополнительного реквизита:

Пример: мы делаем печатную форму документа «Заказ клиента» и хотим вывести на неё значение определённого дополнительного реквизита — «Должность покупателя».

Используем вложенный запрос, в котором соединяем левым соединением таблицу «Дополнительные реквизиты» документа «Заказ клиента» с Планом видов характеристик «Дополнительные реквизиты и сведения». Устанавливаем условие: заголовок дополнительного реквизита должен быть таким – «Должность покупателя». Таблицы соединяем по ссылке на «Заказ клиента».

Получается вот такой запрос:

Также можно использовать метод НайтиПоНаименованию ( «***» ) .

Переменная Ссылка – это ссылка на «Договор контрагента».

Проверка на предмет того, что дополнительный реквизит заполнен:

Как изменить значения дополнительных реквизитов:

Задействуем общий модуль УправлениеСвойствами , который входит в состав БСП.

Поделиться с друзьями

Области

Реклама

Продукт

Новые обсуждения форума

Статистика

Авторское право

Права на информацию в разделе «Справка УПП», «Справка БП» и «Справка ЗУП» принадлежат фирме 1С )

Права на информацию в разделе «Практический опыт» принадлежат Мутовкину А.М.

Перепечатка разрешена только с активной ссылкой на правообладателя.

Программное создание дополнительных реквизитов

Submitted by admin on пн, 12/08/2014 — 16:07

  • БСП
  • Готовые функции
  • Платформа 8.2
  • Платформа 8.3
  • Практический опыт
  • Программирование
  • УНФ
  • УПП

Допустим вам надо предоставить клиенту обработку, которая должна работать с доп. реквизитами типовой конфигурации. Например необходимо в заказе покупателя поддерживать реквизиты ORDER_ID, DEP_ID, CLIENT_ID, PLDATE, PAYTYPE, котрые получаются при обмене с ИнфоАптека 3. Объяснять заказчику как добавить доп. реквизиты не всегда удобно. Сделаем это сами за него.

//выполним начальные настройки доп. реквизитов
&НаСервере
Процедура НачальныеНастройкиНаСервере ()

//включим константу использования
Если Не Константы . ИспользоватьДополнительныеРеквизитыИСведения . Получить () Тогда
Константы . ИспользоватьДополнительныеРеквизитыИСведения . Установить ( Истина );
КонецЕсли;

//создадим строковые доп. реквизиты длины 100
ПроверитьДобавитьСтроковыйДопРеквизитЗаказаПокупателя ( «ORDER_ID» , 100 );
ПроверитьДобавитьСтроковыйДопРеквизитЗаказаПокупателя ( «DEP_ID» , 100 );
ПроверитьДобавитьСтроковыйДопРеквизитЗаказаПокупателя ( «CLIENT_ID» , 100 );
ПроверитьДобавитьСтроковыйДопРеквизитЗаказаПокупателя ( «PLDATE» , 100 );
ПроверитьДобавитьСтроковыйДопРеквизитЗаказаПокупателя ( «PAYTYPE» , 100 );

//проверим и создадим строковый доп. реквизит к документу заказ покупателя
&НаСервере
Процедура ПроверитьДобавитьСтроковыйДопРеквизитЗаказаПокупателя ( ИмяРеквизита , ДлинаСтроки = )

//пробуем найти доп. реквизит по заголовку
ЭлПВХ_Ссылка = ПланыВидовХарактеристик . ДополнительныеРеквизитыИСведения . НайтиПоРеквизиту ( «Заголовок» , ИмяРеквизита );
Если ЭлПВХ_Ссылка . Пустая () Тогда
//если не найдено, то создадим новый
ЭлПВХ = ПланыВидовХарактеристик . ДополнительныеРеквизитыИСведения . СоздатьЭлемент ();
ЭлПВХ . Заголовок = ИмяРеквизита ;
ЭлПВХ . НаборСвойств = Справочники . НаборыДополнительныхРеквизитовИСведений . Документ_ЗаказПокупателя ;
ЭлПВХ . Наименование = ЭлПВХ . Заголовок + » (» + ЭлПВХ . НаборСвойств + «)» ;
ЭлПВХ . ТипЗначения = Новый ОписаниеТипов ( «Строка» . Новый КвалификаторыСтроки ( ДлинаСтроки ));
ЭлПВХ . Записать ();
ЭлПВХ_Ссылка = ЭлПВХ . Ссылка ;
КонецЕсли;

//проверим, что реквизит указан в наборе доп. реквизитов заказа покупателя
НаборОб = Справочники . НаборыДополнительныхРеквизитовИСведений . Документ_ЗаказПокупателя . ПолучитьОбъект ();
Если НаборОб . ДополнительныеРеквизиты . Найти ( ЭлПВХ_Ссылка , «Свойство» ) = Неопределено Тогда
//добавим реквизит в набор
СтрНаборОб = НаборОб . ДополнительныеРеквизиты . Добавить ();
СтрНаборОб . Свойство = ЭлПВХ_Ссылка ;
КонецЕсли;
Если НаборОб . Модифицированность () Тогда
//запишем при необходимости
НаборОб . Записать ();
КонецЕсли;

Теперь мы можем легко устанавливать значения этих реквизитов в документе заказ.

ДокОб = Документы . ЗаказПокупателя . СоздатьДокумент ();
//.
//записать в доп. реквизиты ORDER_ID и другие данные
УстановитьДополнительныйРеквизитОбъекта ( ДокОб , «ORDER_ID» , «32312312» );
//.

&НаСервере
Процедура УстановитьДополнительныйРеквизитОбъекта ( Объект , ИмяРеквизита , ЗначениеРеквизита )

ЭлПВХ_Ссылка = ПланыВидовХарактеристик . ДополнительныеРеквизитыИСведения . НайтиПоРеквизиту ( «Заголовок» , ИмяРеквизита );
Если ЭлПВХ_Ссылка . Пустая () Тогда
Сообщить ( «Не найден доп. реквизит » + ИмяРеквизита + «, значение не установлено!» );
Возврат;
КонецЕсли;

СтрДопРеквизиты = Объект . ДополнительныеРеквизиты . Найти ( ЭлПВХ_Ссылка , «Свойство» );
Если СтрДопРеквизиты = Неопределено Тогда
СтрДопРеквизиты = Объект . ДополнительныеРеквизиты . Добавить ();
КонецЕсли;
СтрДопРеквизиты . Свойство = ЭлПВХ_Ссылка ;
СтрДопРеквизиты . Значение = ЗначениеРеквизита ;

демонстрация доп. реквизитов

Дополнительные реквизиты в 1с 8 представляют из себя специальную табличную часть у некоторых документов и справочников. В ней хранятся дополнительные данные, касающиеся данного объекта метаданных. Данный механизм реализован только в конфигурация работающих на управляемом приложении. По своему назначению дополнительные реквизиты напоминают дополнительные сведения, разница в том, что доп. сведения хранятся в отдельном регистре, это их плюс, но зато доп. реквизиты автоматически выводятся на форму объекта. В этой статье будет рассказано, как получать и записывать дополнительные реквизиты программно.

Получить дополнительные реквизиты программно

Функция получает значение дополнительного реквизита объекта по ссылке и свойству.

  • Ссылка. Тип: Любая ссылка. Ссылка на искомый объект;
  • Свойство. Тип: План видов характеристик ДополнительныеРеквизитыИСведения. Дополнительное свойство.

Записать дополнительные реквизиты программно

Функция записывает значение доп. реквизита объекта по ссылке и свойству.

  • Ссылка. Тип: Любая ссылка. Ссылка на искомый объект;
  • Свойство. Тип: План видов характеристик ДополнительныеРеквизитыИСведения. Дополнительное свойство;
  • Значение. Тип: заданный для данного свойства.

Если вы еще не знаете, как правильно работать с механизмом дополнительных сведений в 1с 8, то прочтите об этом в статье 1С дополнительные сведения запись и получение.

Оцените статью
SoftLast
Добавить комментарий