Примеры работы с дополнительными реквизитами.
Как получить значение дополнительного реквизита:
Пример: мы делаем печатную форму документа “Заказ клиента” и хотим вывести на неё значение определённого дополнительного реквизита – “Должность покупателя”.
Используем вложенный запрос, в котором соединяем левым соединением таблицу “Дополнительные реквизиты” документа “Заказ клиента” с Планом видов характеристик “Дополнительные реквизиты и сведения”. Устанавливаем условие: заголовок дополнительного реквизита должен быть таким – “Должность покупателя”. Таблицы соединяем по ссылке на “Заказ клиента”.
Получается вот такой запрос:
Также можно использовать метод НайтиПоНаименованию ( “***” ) .
Переменная Ссылка – это ссылка на “Договор контрагента”.
Проверка на предмет того, что дополнительный реквизит заполнен:
Как изменить значения дополнительных реквизитов:
Задействуем общий модуль УправлениеСвойствами , который входит в состав БСП.
Поделиться с друзьями
Области
Реклама
Продукт
Новые обсуждения форума
Статистика
Авторское право
Права на информацию в разделе “Справка УПП”, “Справка БП” и “Справка ЗУП” принадлежат фирме 1С (http://1c.ru)
Права на информацию в разделе “Практический опыт” принадлежат Мутовкину А.М.
Перепечатка разрешена только с активной ссылкой на правообладателя.
Программное создание дополнительных реквизитов
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С дополнительные сведения запись и получение.