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

   AlekseiYunniPodavvan

29.10.19 — 08:57

Добрый день! Подскажите пожалуйста вывести 2 доп реквизита в одну строку с контрагентом.

  

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

   Курцвейл

1 — 29.10.19 — 09:00

ПРЕДСТАВЛЕНИЕ(Контрагент)+(Контрагент.Комментарий)+ЕщеКакаятоСтрока

   AlekseiYunniPodavvan

2 — 29.10.19 — 09:01

(0) Сразу из запроса в СКД

   vicof

3 — 29.10.19 — 09:03

(2) см. (1)

   ДенисЧ

4 — 29.10.19 — 09:05

(1) И давно в запросе можно ПРЕДСТАВЛЕНИЕ() складывать с чем-то?

   AlekseiYunniPodavvan

5 — 29.10.19 — 09:06

Часть запроса

ВЫБРАТЬ

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

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

    ВЫБОР

        КОГДА КонтрагентыДополнительныеРеквизиты.Свойство.Наименование = «Основные виды расходов (Контрагенты)»

            ТОГДА КонтрагентыДополнительныеРеквизиты.Значение

    КОНЕЦ КАК ОсновныеВидыРасходов,

    ВЫБОР

        КОГДА КонтрагентыДополнительныеРеквизиты.Свойство.Наименование = «Наш контрагент (Контрагенты)»

            ТОГДА КонтрагентыДополнительныеРеквизиты.Значение

    КОНЕЦ КАК НашКонтрагент

ПОМЕСТИТЬ ДопРеквизиты

ИЗ

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

ГДЕ

    (КонтрагентыДополнительныеРеквизиты.Свойство.Наименование = «Основные виды расходов (Контрагенты)»

            ИЛИ КонтрагентыДополнительныеРеквизиты.Свойство.Наименование = «НашКонтрагент (Контрагенты)»)

;

   AlekseiYunniPodavvan

6 — 29.10.19 — 09:09

1) Реквизит выводится в результат

2) Условие для рассчета в запросе

   Курцвейл

7 — 29.10.19 — 09:12

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

По наитию T-SQL думал :)

   Курцвейл

8 — 29.10.19 — 09:13

(6) Сделай вычисляемое поле, в котором и складывай строки

   catena

9 — 29.10.19 — 09:13

(7)Здрасте, со строками-то что не так?

   catena

10 — 29.10.19 — 09:14

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

   AlekseiYunniPodavvan

11 — 29.10.19 — 09:17

(10) С соединением и есть вопрос. Подскажите пож

   Консультант Баранов

12 — 29.10.19 — 09:18

«ВЫБРАТЬ

|    Контрагенты.Ссылка КАК Ссылка1,

|    ЕСТЬNULL(взЗначения.Значение1, «»»») КАК Значение1,

|    ЕСТЬNULL(взЗначения.Значение2, «»»») КАК Значение2

|ИЗ

|    (ВЫБРАТЬ

|        ВложенныйЗапрос.Ссылка КАК Ссылка,

|        МАКСИМУМ(ВложенныйЗапрос.Значение1) КАК Значение1,

|        МАКСИМУМ(ВложенныйЗапрос.Значение2) КАК Значение2

|    ИЗ

|        (ВЫБРАТЬ

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

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

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

|        ИЗ

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

|        ГДЕ

|            КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство1

|        

|        ОБЪЕДИНИТЬ ВСЕ

|        

|        ВЫБРАТЬ

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

|            0,

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

|        ИЗ

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

|        ГДЕ

|            КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство2) КАК ВложенныйЗапрос

|    

|    СГРУППИРОВАТЬ ПО

|        ВложенныйЗапрос.Ссылка) КАК взЗначения

|        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты

|        ПО взЗначения.Ссылка = Контрагенты.Ссылка»

   catena

13 — 29.10.19 — 09:19

(11)Как-то так:

Выбрать контрагент из справочник левое соединение допсвойства по свойство=1… левое соединение допсвойства по свойство=2…

   AlekseiYunniPodavvan

14 — 29.10.19 — 09:21

Спасибо!

   AlekseiYunniPodavvan

15 — 29.10.19 — 11:10

(13) не получилось

   AlekseiYunniPodavvan

16 — 29.10.19 — 11:11

только наплодил строк

   AlekseiYunniPodavvan

17 — 29.10.19 — 11:12

не кидайтесь пож. тапками. Как выставить связи?

ВЫБРАТЬ

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

    ВЫБОР

        КОГДА КонтрагентыДополнительныеРеквизиты.Свойство.Наименование = «Основные виды расхов (Контрагенты)»

            ТОГДА КонтрагентыДополнительныеРеквизиты.Значение

    КОНЕЦ КАК ОсновныеВидыРасходов,

    ВЫБОР

        КОГДА КонтрагентыДополнительныеРеквизиты.Свойство.Наименование = «Наш контрагент (Контрагенты)»

            ТОГДА КонтрагентыДополнительныеРеквизиты.Значение

    КОНЕЦ КАК НашКонтрагент,

    КонтрагентыДополнительныеРеквизиты.Свойство.Наименование = «НашКонтрагент (Контрагенты)» КАК СвойствоНашКонтрагент,

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

ПОМЕСТИТЬ ДопРеквизиты

ИЗ

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

;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ

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

    ДопРеквизиты.НашКонтрагент КАК НашКонтрагент,

    ДопРеквизиты.ОсновныеВидыРасходов КАК ОсновныеВидыРасходов

ИЗ

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

        ЛЕВОЕ СОЕДИНЕНИЕ ДопРеквизиты КАК ДопРеквизиты

        ПО КонтрагентыДополнительныеРеквизиты.Свойство = ДопРеквизиты.Свойство

   MSOliver

18 — 29.10.19 — 11:18

СКД умеет пользовать экспортные функции общих модулей

   catena

19 — 29.10.19 — 12:55

(17)А разве у меня так написано?

  

AlekseiYunniPodavvan

20 — 31.10.19 — 05:41

(12) (19) Спасибо за помощь! Все получилось!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ВЫБРАТЬ ПЕРВЫЕ 100

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

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

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

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

ИЗ

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

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

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

ВЫБРАТЬ

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

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

ИЗ

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

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

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

ВЫБРАТЬ

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

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

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

ИЗ

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

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

Yulunga

1142 / 689 / 203

Регистрация: 22.04.2013

Сообщений: 5,160

Записей в блоге: 1

1

запрос к доп реквизитам

23.03.2021, 08:49. Показов 9637. Ответов 5

Метки нет (Все метки)


всем добра.
есть доп реквизит (для простоты — булево) в документе кадровом документе
как мне вывести
иванов иван ИСТИНА если есть этот доп реквизит (если его кто-то уже установил)
или
иванов иван ЛОЖЬ если он установлен в ложь или если его ещё никто не устанавливал (ну и как следствие — его нет в ТЧ допреквизиты)
запросом это можно сделать?

Добавлено через 3 минуты
а, да
вопрос, который я всегда сам задаю — а что вы сделали?
таки вот

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
ВЫБРАТЬ
    КадровыйПеревод.Сотрудник КАК Сотрудник,
    КадровыйПеревод.Сотрудник.Код КАК СотрудникКод,
    КадровыйПеревод.Ссылка КАК Ссылка
ПОМЕСТИТЬ ВТ_Сотрудник
ИЗ
    Документ.КадровыйПеревод КАК КадровыйПеревод
ГДЕ
    КадровыйПеревод.Сотрудник = &Сотрудник
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КадровыйПереводДополнительныеРеквизиты.Ссылка.Сотрудник КАК Сотрудник,
    КадровыйПереводДополнительныеРеквизиты.Ссылка.Сотрудник.Код КАК СотрудникКод,
    ВЫБОР КОГДА КадровыйПереводДополнительныеРеквизиты.Свойство = Неопределено
        ТОГДА  "Нету"
        ИНАЧЕ КадровыйПереводДополнительныеРеквизиты.Значение
    КОНЕЦ КАК Значение,
    КадровыйПереводДополнительныеРеквизиты.Ссылка.Номер КАК Номер,
    КадровыйПереводДополнительныеРеквизиты.Ссылка.Дата КАК Дата
ИЗ
    ВТ_Сотрудник КАК ВТ_Сотрудник
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.КадровыйПеревод.ДополнительныеРеквизиты КАК КадровыйПереводДополнительныеРеквизиты
        ПО ВТ_Сотрудник.Ссылка = КадровыйПереводДополнительныеРеквизиты.Ссылка
ГДЕ
    КадровыйПереводДополнительныеРеквизиты.Свойство.Имя = "моёиммя"

танцевал с этим условием по-разному, которое щас выглядит как выбор когда тогда
но безуспешно

Добавлено через 19 минут
только если разделить на два и выполнить пакет? если результат второго пустой, то брать первый.
а тогда если там два кадровых документа . один заполнен второй нет этот доп реквизит. вроде тоже не выходит.



0



Scratchsv

369 / 173 / 74

Регистрация: 04.03.2020

Сообщений: 659

23.03.2021, 09:36

2

Лучший ответ Сообщение было отмечено Tklwegsd как решение

Решение

Может так:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
"ВЫБРАТЬ
    |   КадровыйПеревод.Сотрудник КАК Сотрудник,
    |   КадровыйПеревод.Сотрудник.Код КАК СотрудникКод,
    |   КадровыйПеревод.Ссылка КАК Ссылка,
    |   КадровыйПеревод.Номер КАК Номер,
    |   КадровыйПеревод.Дата КАК Дата,
    |   ЕСТЬNULL(КадровыйПереводДополнительныеРеквизиты.Значение, ЛОЖЬ) КАК Значение
    |ИЗ
    |   Документ.КадровыйПеревод КАК КадровыйПеревод
    |       ЛЕВОЕ СОЕДИНЕНИЕ Документ.КадровыйПеревод.ДополнительныеРеквизиты КАК КадровыйПереводДополнительныеРеквизиты
    |       ПО КадровыйПеревод.Ссылка = КадровыйПереводДополнительныеРеквизиты.Ссылка
    |           И (КадровыйПереводДополнительныеРеквизиты.Свойство.Имя = ""моёиммя"")
    |ГДЕ
    |   КадровыйПеревод.Сотрудник = &Сотрудник"



1



Phil

Эксперт 1С

434 / 305 / 92

Регистрация: 28.05.2014

Сообщений: 1,247

23.03.2021, 09:40

3

Yulunga, Ничего не понял, но очень интересно)

Есть документ и из него нужно получить значение доп реквизита?

Если есть БСП более-менее не старая, то

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Возвращает значение дополнительного свойства объекта.
//
// Параметры:
//  Объект   - ЛюбаяСсылка - ссылка на объект, например, СправочникСсылка.Номенклатура,
//                           ДокументСсылка.ЗаказПокупателя, ...
//  Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на
//                           дополнительный реквизит, значение которого нужно получить.
//           - Строка - имя дополнительного свойства.
//
// Возвращаемое значение:
//  Произвольный - любое значение, допустимое для свойства.
 
 
УправлениеСвойствами.ЗначениеСвойства(Объект,Свойство)



0



1142 / 689 / 203

Регистрация: 22.04.2013

Сообщений: 5,160

Записей в блоге: 1

23.03.2021, 10:09

 [ТС]

4

Scratchsv, спасибо.
это было самое очевидное решение
и, соответственно, самое первое, которое я попробовал
и не получилось
переделал с = неопределено — тоже не получилось.
хз кагтаг



0



369 / 173 / 74

Регистрация: 04.03.2020

Сообщений: 659

23.03.2021, 10:29

5

А чё не получилось-та. Не находит? Даёт ошибку?
Что говорит, когда нет? Когда истина? Ложь?
У меня подобный запрос нормально работает.

Добавлено через 8 минут
А, понял.
Могут быть глюки в СКД.
Там может так заоптимизировать запрос, что не дай БГ.
Тогда действительно, бубен нужен.
Или запрос на временные таблицы разбивать, или подзапросы, или вообще, запросом в таблицу выгружать, а уже оттуда формировать.



0



1142 / 689 / 203

Регистрация: 22.04.2013

Сообщений: 5,160

Записей в блоге: 1

23.03.2021, 11:10

 [ТС]

6

щас получилось. чо не получилось вчера — уже не найти. я запрос удалил. но делал также
интересно конечно что было не так. раз этот сработал а мой вчерашний — нет.
а то я уже начал в обработке запроса искать в плане видов арактеристик для данного документа заполнен реквизит или нет и на основании этого уже строить дальнейшие действия свои ))



0



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Google+

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