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С программиста и активно использоваться в работе.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Google+

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

    Автор 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
    Положи КонтрагентыДополнительныеРеквизиты во вложенный запрос или предварительно отбери все во временную таблицу и уже в конце соединяй с журналом проводок.

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


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

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

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

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

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

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

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

    Пример запроса:

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

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

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

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

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

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

    ДопРеквизитДатаОтправки = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Дата отправки", Истина);
    ДопРеквизитДоставка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Доставка", Истина);
    
    МассивСтруктур = Новый Массив;
    МассивСтруктур.Добавить(Новый Структура("Свойство, Значение", ДопРеквизитДатаОтправки, ТекущаяДата()));
    МассивСтруктур.Добавить(Новый Структура("Свойство, Значение", ДопРеквизитДоставка, Истина));
    УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ЗаказКлиентаСсылка, МассивСтруктур);
    

    Yulunga

    1142 / 689 / 203

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

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

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

    1

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

    23.03.2021, 08:49. Показов 9643. Ответов 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



    Понравилась статья? Поделить с друзьями:
  • 1с изменение реквизитов справочника программно
  • Яндекс это продуктовая или сервисная компания
  • Cis компании что это значит в банковской сфере
  • 1с как обратиться к реквизиту формы на клиенте
  • Яндекс это российская компания или зарубежная