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

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

Я
   Khan7779

23.12.15 — 14:21

Здравствуйте! Очень нужна помощь! 1С 8.3, УТ 11.1. Как запросом получить дополнительные реквизиты добавленные справочнику через режим предприятия?

  

Партнерская программа EFSOL Oblako

   Naumov

1 — 23.12.15 — 14:21

а как вы пытались?

   Naumov

2 — 23.12.15 — 14:21

+ доп реквизиты  скорее через ТЧ объекта.

   Cyberhawk

3 — 23.12.15 — 14:22

Значения сидят в ТЧ каждого объекта, а сами реквизиты (их описание) — в соответствующем ПВХ и в справочнике «Наборы значений реквизитов»

   Khan7779

4 — 23.12.15 — 14:36

(1) вот именно, что никак, потому что первый раз с этим сталкиваюсь

   Khan7779

5 — 23.12.15 — 14:37

(3) вижу у объекта ТЧ доп. реквизиты, но что из нее взять, чтоб работать с нужным мне доп. реквизитами? Под описанием реквизитов имеется ввиду их название из предприятия? Не нашел ничего подобного.

   Naumov

6 — 23.12.15 — 15:14

(5) Реквизит Значение из ТЧ — это значение доп.реквизита.

   Cyberhawk

7 — 23.12.15 — 15:46

(5) ИР тебе в помощь — там увидишь стркутуру ТЧ и данные, в ней хранящиеся

   vicof

8 — 23.12.15 — 15:50

(0)

ВЫБРАТЬ * ИЗ Документ.Мегадокумент.ТЧ_Допреквизитов

   Khan7779

9 — 24.12.15 — 09:27

В общем у меня получилось достать данные доп. реквизитов.

Вот код запроса:

Запрос = Новый Запрос;

    Запрос.УстановитьПараметр(«МассивОбъектов»,МассивОбъектов);

    Запрос.Текст = «ВЫБРАТЬ

                   |    ЗаказКлиента.Номер,

                   |    ЗаказКлиента.Дата КАК ДатаДоговора,

                   |    ЗаказКлиента.Контрагент.Наименование КАК ПокупательКратко,

                   |    ЗаказКлиента.Контрагент.НаименованиеПолное КАК ОрганизацияПокупатель,

                   |    ЗаказКлиента.Контрагент.ИНН КАК ИННПокупателя,

                   |    ЗаказКлиента.Контрагент.КПП КАК КПППокупателя,

                   |    ЗаказКлиента.СуммаДокумента,

                   |    ЗаказКлиента.БанковскийСчетКонтрагента.НомерСчета,

                   |    ЗаказКлиента.БанковскийСчетКонтрагента.БанкДляРасчетов,

                   |    ЗаказКлиента.БанковскийСчетКонтрагента.БИКБанкаДляРасчетов,

                   |    ЗаказКлиента.Контрагент.ДополнительныеРеквизиты.(

                   |        Свойство.Ссылка КАК Название,

                   |        Значение КАК Значение

                   |    ),

                   |    ЗаказКлиента.Товары.(

                   |        НомерСтроки,

                   |        Номенклатура.Наименование,

                   |        Упаковка.ЕдиницаИзмерения,

                   |        КоличествоУпаковок,

                   |        Цена,

                   |        Сумма

                   |    )

                   |ИЗ

                   |    Документ.ЗаказКлиента КАК ЗаказКлиента

                   |ГДЕ

                   |    ЗаказКлиента.Ссылка В(&МассивОбъектов)»;

                  
    Запрос.Выполнить().Выгрузить();

Как теперь достать из массива нужные мне доп. реквизиты по отдельности?

   Khan7779

10 — 24.12.15 — 09:59

Ну пожалуйста, помогите! Нигде в гугле не могу найти как это сделать.

   cw014

11 — 24.12.15 — 10:04

(10) ты же в (9) все уже сделал

   Khan7779

12 — 24.12.15 — 10:06

(11) не все. У меня доп. реквизиты в массиве кучей. Теперь мне нужно вычленить их по отдельности.

   cw014

13 — 24.12.15 — 10:07

Вычленяй

   cw014

14 — 24.12.15 — 10:07

У тебя в результате есть поле «ДополнительныеРеквизиты»

   cw014

15 — 24.12.15 — 10:07

Это таблица значений из двух колонок «Название» и «Значение»

   cw014

16 — 24.12.15 — 10:08

Свойство.Ссылка КАК Название, замени на  Свойство КАК Название,

   Khan7779

17 — 24.12.15 — 10:10

(15) ну да, я знаю, я как бэ в курсе) В этой таблице 3 доп. реквизита. Теперь мне нужно их по отдельности заполучить.

   Khan7779

18 — 24.12.15 — 10:13

(16) заменил. Так что мне это даст?

   cw014

19 — 24.12.15 — 10:14

(17) У тебя три реквизита. Значит в таблице 3 строки. Что именно ты хочешь?

   cw014

20 — 24.12.15 — 10:14

Отдельно получаю:

СтрокаТЧ.ДополнительныеРеквизиты[0].Значение — 1 реквизит

СтрокаТЧ.ДополнительныеРеквизиты[1].Значение — 2 реквизит

СтрокаТЧ.ДополнительныеРеквизиты[2].Значение — 3 реквизит

   cw014

21 — 24.12.15 — 10:15

Отдельно? Отдельно

   Nolan

22 — 24.12.15 — 10:17

(0) А запрос где ты писать будешь?

   Khan7779

23 — 24.12.15 — 10:19

(22) запрос уже написан, смотри выше

   Khan7779

24 — 24.12.15 — 10:21

(19) нужно получить значение доп. реквизита и присвоить его отдельной переменной, для дальнейшего использования.

   Khan7779

25 — 24.12.15 — 10:21

(20) этот код не работает

   Nolan

26 — 24.12.15 — 10:22

(23) я понял, что написан. ты его в конфигураторе пишешь или где?

   cw014

27 — 24.12.15 — 10:23

(23)Что именно у тебя не получается?

   cw014

28 — 24.12.15 — 10:23

Спорим работает?

   Khan7779

29 — 24.12.15 — 10:23

(26) эм, ну да, через конфигуратор, в модуле внешней обработки.

   cw014

30 — 24.12.15 — 10:24

ТЗ = Запрос.Выполнить().Выгрузить();

СтрокаТЧ = ТЗ[0];

СтрокаТЧ.ДополнительныеРеквизиты[0].Значение; // 1 реквизит

СтрокаТЧ.ДополнительныеРеквизиты[1].Значение; // 2 реквизит

СтрокаТЧ.ДополнительныеРеквизиты[2].Значение; // 3 реквизит

   cw014

31 — 24.12.15 — 10:24

И почему у меня то все получается?

   Khan7779

32 — 24.12.15 — 10:26

(31) вылетает ошибка: неопознанный оператор.

   cw014

33 — 24.12.15 — 10:26

В какой строке?

   Nolan

34 — 24.12.15 — 10:26

(30) так должно работать)

   Khan7779

35 — 24.12.15 — 10:29

(33) в этих трех:

                  СтрокаТЧ.ДополнительныеРеквизиты[0].Значение;// 1 реквизит

            СтрокаТЧ.ДополнительныеРеквизиты[1].Значение;// 2 реквизит

            СтрокаТЧ.ДополнительныеРеквизиты[2].Значение;// 3 реквизит

   cw014

36 — 24.12.15 — 10:30

1) точку с запятой пропустил

2) Это просто пример. Ну сделай так:

Реквизит1 = СтрокаТЧ.ДополнительныеРеквизиты[0].Значение;

Реквизит2 = СтрокаТЧ.ДополнительныеРеквизиты[1].Значение;

Реквизит3 = СтрокаТЧ.ДополнительныеРеквизиты[2].Значение;

   Khan7779

37 — 24.12.15 — 10:32

(36) Ошибок нет. Теперь этим реквизиту 1,2 и 3 присвоено значение тех доп. реквизитов?

  

Nolan

38 — 24.12.15 — 10:34

(37) Посмотри как пользоваться отладчиком. Тогда ты сможешь сам проверять значения.

Опубликовано в Статьи по 1С 27.10.2018

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

Отличие дополнительного реквизита от дополнительного сведения в том, что

  • Дополнительные реквизиты – список реквизитов, доступных в форме документа или справочника; причем эти реквизиты хранятся в табличной части объекта, к которому они добавлены;
  • Дополнительные сведения – список значений доступных по дополнительной кнопке; причем доп. сведения  хранятся в  отдельном регистре.

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

Как получить 1С дополнительные реквизиты и сведения программно:

Для получения дополнительных данных используем запрос, в котором получим значение дополнительных реквизитов и сведений:

////
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДополнительныеСведения.Свойство,
| ДополнительныеСведения.Значение
|ИЗ
| РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
|ГДЕ
| ДополнительныеСведения.Объект = &Объект»;
Запрос.УстановитьПараметр(«Объект», СсылкаДокумент);
////

Для получения дополнительного реквизита использую код вида:

////
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| НоменклатураДополнительныеРеквизиты.Свойство,
| НоменклатураДополнительныеРеквизиты.Значение
|ИЗ
| Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
|ГДЕ
| НоменклатураДополнительныеРеквизиты.Свойство = &Свойство
| И НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка»;
Запрос.УстановитьПараметр(«Ссылка», СсылкаДокумент);
Запрос.УстановитьПараметр(«Свойство», ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(«Коэффициент бруто»));
////

Теперь вы без труда сможете добавить и получить необходимые дополнительные 1С данные без снятия конфигурации 1С с поддержки и изменения типовой конфигурации. Без сомнения, такой инструмент должен быть в арсенале 1С программиста и активно использоваться в работе.

На чтение 2 мин. Просмотров 635 Опубликовано 15.12.2019

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

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

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

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

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

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

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

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

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

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

Юзайте на здоровья!

3 thoughts on “Получить значение дополнительных реквизитов 1С 8”

Спасибо, очень помогло.

К сожалению, на строчке
Запрос.УстановитьПараметр(«Объект», Объект);
спотыкается и отказывается дальше работать

Как редактировать доп реквизиты:

редактировать их состав можно тут:

хранятся они тут:

где типы реквизитов:

получить их в запросе можно так:

НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка,

НоменклатураДополнительныеРеквизиты.Ссылка.Код КАК Код,

НоменклатураДополнительныеРеквизиты.Свойство КАК Свойство,

НоменклатураДополнительныеРеквизиты.Значение КАК Значение

Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты

Разберем что откуда берется.

Дополнительные реквизиты заводятся в «ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения» и там же указан тип значений допРеквизитов:

ДополнительныеРеквизитыИСведения.Ссылка КАК Ссылка,

ДополнительныеРеквизитыИСведения.ТипЗначения КАК ТипЗначения

ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения

Для справки: Кроме ссыка и типЗначения в «ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения» хранится куча свойств этих реквизитов

Если указан типЗначеня «ДополнительноеЗначение», то виды этих доп значений можем посмотреть тут:

ЗначенияСвойствОбъектов.Владелец КАК Владелец,

ЗначенияСвойствОбъектов.Ссылка КАК Ссылка,

ЗначенияСвойствОбъектов.Владелец.ТипЗначения КАК ВладелецТипЗначения

Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов

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

Google+

  • © 2019 Услуги 1С программиста. Доработка и обслуживание 1С. Удаленное программирование по всей России. Платформы 7.7 8.2 8.3 , битрикс.
  • 1с дополнительные реквизиты и сведения

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

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

    Пример добавление дополнительного реквизита вручную вы можете посмотреть в публикации Брутто в ТОРГ12, где добавляется новый реквизит «Коэффициент брутто» в справочнике «Номенклатура». Таким образом можно добавлять реквизиты всех известных типов (число, строка, булево, список значений, ссылки на справочники и т.д.) к распространенным справочникам и документам 1С.

    Отличие дополнительного реквизита от дополнительного сведения в том, что

    • Дополнительные реквизиты – список реквизитов, доступных в форме документа или справочника; причем эти реквизиты хранятся в табличной части объекта, к которому они добавлены;
    • Дополнительные сведения – список значений доступных по дополнительной кнопке; причем доп. сведения  хранятся в  отдельном регистре.

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

    Для получения дополнительных данных приведу примеры запросов, в которых получу 1С дополнительные реквизиты и сведения.

    Для получения дополнительного сведения использую запрос вида:

    Запрос = Новый Запрос;
    Запрос.Текст =
    	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
    	|	ДополнительныеСведения.Свойство,
    	|	ДополнительныеСведения.Значение
    	|ИЗ
    	|	РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
    	|ГДЕ
    	|	ДополнительныеСведения.Объект = &Объект";
    Запрос.УстановитьПараметр("Объект", СсылкаДокумент);

    Для получения дополнительного реквизита использую код вида (пример получения коэффициента брутто в ТОРГ12):

    Запрос = Новый Запрос;
    Запрос.Текст = 
    	"ВЫБРАТЬ
    	|	НоменклатураДополнительныеРеквизиты.Свойство,
    	|	НоменклатураДополнительныеРеквизиты.Значение
    	|ИЗ
    	|	Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
    	|ГДЕ
    	|	НоменклатураДополнительныеРеквизиты.Свойство = &Свойство
    	|	И НоменклатураДополнительныеРеквизиты.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", СсылкаДокумент);
    Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Коэффициент бруто"));
    

    Теперь вы без труда сможете добавить и получить необходимые дополнительные 1С данные без снятия конфигурации 1С с поддержки и изменения типовой конфигурации. Без сомнения, такой инструмент должен быть в арсенале 1С программиста и активно использоваться в работе.

    Получение доп реквизита справочника в запросе

    Автор NAPYTO1613, 03 авг 2018, 23:31

    0 Пользователей и 1 гость просматривают эту тему.

    ВЫБРАТЬ
    ЖурналПроводокЕПСБУОбороты.Субконто1 КАК Контрагент,
    КонтрагентыДополнительныеРеквизиты.Значение КАК СтранаМестонахождения
    ИЗ
    РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Обороты(, , Регистратор, Счет В ИЕРАРХИИ (&Группа), , , , ) КАК ЖурналПроводокЕПСБУОбороты
    ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.ДополнительныеРеквизиты КАК КонтрагентыДополнительныеРеквизиты
    ПО (КонтрагентыДополнительныеРеквизиты.Ссылка.Код = ЖурналПроводокЕПСБУОбороты.Регистратор.Контрагент.Код )
    ГДЕ
    КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство

    Пытаюсь прикрутить к контрагенту доп реквизит путем соединения по условию
    Дело в том, что, если реквизит не заполнен, то  запись не выводится вообще
    можно ли как-нибудь решить такую проблему?


    Оберни КонтрагентыДополнительныеРеквизиты.Значение КАК СтранаМестонахождения в ЕСТЬNULL.
    Cоединяй не полным, а левым соединением.


    Цитата: AIFrame от 04 авг 2018, 15:03
    Оберни КонтрагентыДополнительныеРеквизиты.Значение КАК СтранаМестонахождения в ЕСТЬNULL.
    Cоединяй не полным, а левым соединением.

    обернул, но все равно выдаёт только с заполненными значениями



    ВЫБРАТЬ
    ЖурналПроводокЕПСБУОбороты.Счет КАК Счет,
    ЖурналПроводокЕПСБУОбороты.Субконто1 КАК Контрагент,
    ЖурналПроводокЕПСБУОбороты.СуммаОборот КАК СуммаОборот,
    ОперацииДокументов.Операция КАК Операция,
    ЕСТЬNULL(КонтрагентыДополнительныеРеквизиты.Значение, 0) КАК СтранаМестонахождения
    ИЗ
    РегистрБухгалтерии.ЖурналПроводокЕПСБУ.Обороты(, , Регистратор, Счет В ИЕРАРХИИ (&Группа), , , , ) КАК ЖурналПроводокЕПСБУОбороты
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОперацииДокументов КАК ОперацииДокументов
    ПО (ОперацииДокументов.Документ.Дата = ЖурналПроводокЕПСБУОбороты.Регистратор.Дата)
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.ДополнительныеРеквизиты КАК КонтрагентыДополнительныеРеквизиты
    ПО ЖурналПроводокЕПСБУОбороты.Регистратор.Контрагент.Код = КонтрагентыДополнительныеРеквизиты.Ссылка.Код
    ГДЕ
    ЖурналПроводокЕПСБУОбороты.Регистратор ССЫЛКА Документ.КассовоеПоступление
    И КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство

    Целиком запрос так выглядит


    Цитата: NAPYTO1613 от 05 авг 2018, 12:28И КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство

    в условии сравнение с таблицей, с которой соединение и может быть NULL , но NULL никогда не  равно &Свойство, по этому строки в запрос не попадают.

    можно например так:
    КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство
    или КонтрагентыДополнительныеРеквизиты.Свойство is null

    Спасибо за Сказать спасибо


    Положи КонтрагентыДополнительныеРеквизиты во вложенный запрос или предварительно отбери все во временную таблицу и уже в конце соединяй с журналом проводок.


    Цитата: alex0402 от 05 авг 2018, 14:25

    Цитата: NAPYTO1613 от 05 авг 2018, 12:28И КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство

    в условии сравнение с таблицей, с которой соединение и может быть NULL , но NULL никогда не  равно &Свойство, по этому строки в запрос не попадают.

    можно например так:
    КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство
    или КонтрагентыДополнительныеРеквизиты.Свойство is null

    Помогло, спасибо

    Добавлено: 05 авг 2018, 20:27


    Цитата: AIFrame от 05 авг 2018, 18:46
    Положи КонтрагентыДополнительныеРеквизиты во вложенный запрос или предварительно отбери все во временную таблицу и уже в конце соединяй с журналом проводок.

    от вложенного запроса было решено отказаться (изначально использовался он, но тоже кстати работал не так как надо )


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

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

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

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

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

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

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

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

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

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

    • Дополнительные реквизиты и сведения
    • План видов характеристик
    • Программирование 1С
    Комментарии

    У вас ошибка в коде:
    МассивСтруктур.Добавить(Новый Структура(«Свойство, Значение», ДопРеквизитДатаОтправки, ТекущаяДата());

    Не хватает закрывающей скобки.

    У вас ошибка в коде:
    МассивСтруктур.Добавить(Новый Структура(«Свойство, Значение», ДопРеквизитДатаОтправки, ТекущаяДата());

    Условие в запросе 1с как допреквизит

    Рассматриваемая задача может быть актуальна, когда требуется соединить данные двух регистров, причем набор условий соединения не полностью идентифицирует строку регистра, т.е. в результате соединения по данному условию в выборке может быть несколько «одинаковых» строк.
    Допустим, есть две таблицы:

    Реквизит 1 Реквизит 2
    а 1
    а 2
    б 34
    в 10
    в 15

    Требуется присоединить Реквизит 2 к Таблице 1, не размножая при этом строки, взяв случайным образом (т.е. любое) значение Реквизита 2 по условию равенства Реквизитов 1 таблицы 1 и 2.

    Если написать запрос с Левым соединением:

    , то строки исходной таблицы «размножатся».

    ВЫБРАТЬ РАЗЛИЧНЫЕ тут тоже не поможет, т.к. значения Реквизит 2 различные.

    Свернуть результирующую таблицу по Реквизиту 1 тоже не получится, т.к. ни сумма, ни среднее арифметическое нам не подходит.

    Чтобы решить эту задачу, можно использовать получение максимального значения «Реквизита 2». Метод подходит не только для числового значения этого реквизита, а и для любого другого. Но получим мы при этом, конечно не случайное значение из множества, а то, что система вычислит как макимальное. В большинстве случаев такое решение задачи полностью удовлетворит.

    Вот запрос, решающий эту задачу:

    Однако, можно использовать и другой (не очень красивый) метод.

    Запоминаем Таблицу 2 в ее копии, затем Таблицу 2 сворачиваем по Реквизиту 1 и затем перебором строк свернутой таблицы 2 и ее копии выбираем Реквизит2:

    Пишите, если найдете другой интересный метод решения. С удовольствием посмотрим.

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

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

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

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

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

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

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

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

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

    Юзайте на здоровья!

    3 thoughts on “Получить значение дополнительных реквизитов 1С 8”

    Спасибо, очень помогло.

    К сожалению, на строчке
    Запрос.УстановитьПараметр(«Объект», Объект);
    спотыкается и отказывается дальше работать

    Как редактировать доп реквизиты:

    редактировать их состав можно тут:

    хранятся они тут:

    где типы реквизитов:

    получить их в запросе можно так:

    НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка,

    НоменклатураДополнительныеРеквизиты.Ссылка.Код КАК Код,

    НоменклатураДополнительныеРеквизиты.Свойство КАК Свойство,

    НоменклатураДополнительныеРеквизиты.Значение КАК Значение

    Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты

    Разберем что откуда берется.

    Дополнительные реквизиты заводятся в «ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения» и там же указан тип значений допРеквизитов:

    ДополнительныеРеквизитыИСведения.Ссылка КАК Ссылка,

    ДополнительныеРеквизитыИСведения.ТипЗначения КАК ТипЗначения

    ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения

    Для справки: Кроме ссыка и типЗначения в «ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения» хранится куча свойств этих реквизитов

    Если указан типЗначеня «ДополнительноеЗначение», то виды этих доп значений можем посмотреть тут:

    ЗначенияСвойствОбъектов.Владелец КАК Владелец,

    ЗначенияСвойствОбъектов.Ссылка КАК Ссылка,

    ЗначенияСвойствОбъектов.Владелец.ТипЗначения КАК ВладелецТипЗначения

    Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов

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

    Понравилась статья? Поделить с друзьями:

    Другие крутые статьи на нашем сайте:

  • 1с при создании документа программно как заполнить реквизиты
  • Альфабанк бизнес клиент банк личный кабинет физического лица
  • 1с управление нашей фирмой эффективно для проектных компаний
  • Амбулатория новоселье ломоносовский район часы работы врачей
  • 2 й котляковский пер д 6 часы работы вневедомственная охрана

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии