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

Отбор по значению дополнительных реквизитов

Я
   falselight

23.10.17 — 07:54

Здравствуйте! Подскажите пожалуйста по особенно важному вопросу.

Есть запрос. Состоит из нескольких пакетов. В нем подсчитывается

количество и сумма по различным условиям.

Сейчас задача отобрать запись этого запроса по источнику.

Источник хранится в табличной части Дополнительные реквизиты

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

отбор значения в таблице дополнительные реквизиты?

//

ВЫБРАТЬ

    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиента.Ссылка) КАК ИтогПоКоличествуЗаказов

ПОМЕСТИТЬ ВТ_ИтогПоКоличествуЗаказов

ИЗ

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

ГДЕ

    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата

    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ

    И ЗаказКлиента.Проведен = ИСТИНА

;

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

ВЫБРАТЬ

    ЗаказКлиента.Менеджер,

    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ЗаказКлиента.Ссылка, 0)) КАК КоличествоЗаказов,

    СУММА(ЕСТЬNULL(ЗаказКлиента.СуммаДокумента, 0)) КАК СуммаЗаказов

ПОМЕСТИТЬ ВТ_КоличествоИСуммаЗаказов

ИЗ

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

ГДЕ

    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата

    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ

    И ЗаказКлиента.Проведен = ИСТИНА

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

    ЗаказКлиента.Менеджер

;

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

ВЫБРАТЬ

    СостоянияЗаказовКлиентов.Заказ.Менеджер,

    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(СостоянияЗаказовКлиентов.Заказ.Ссылка, 0)) КАК КоличествоОтгруженныхЗаказов,

    СУММА(ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОтгрузки, 0)) КАК СуммаОтгрузки

ПОМЕСТИТЬ ВТ_ОтгруженныеЗаказы

ИЗ

    РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов

ГДЕ

    СостоянияЗаказовКлиентов.Заказ.Дата МЕЖДУ &НачДата И &КонДата

    И СостоянияЗаказовКлиентов.Состояние = &Закрыт

    И СостоянияЗаказовКлиентов.ПроцентОтгрузки = 100

    И СостоянияЗаказовКлиентов.Заказ.ПометкаУдаления = ЛОЖЬ

    И СостоянияЗаказовКлиентов.Заказ.Проведен = ИСТИНА

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

    СостоянияЗаказовКлиентов.Заказ.Менеджер

;

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

ВЫБРАТЬ

    СостоянияЗаказовКлиентов.Заказ.Менеджер,

    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СостоянияЗаказовКлиентов.Заказ.Ссылка) КАК ЕщёВРаботе

ПОМЕСТИТЬ ВТ_ЗаказыЕщёВРаботе

ИЗ

    РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов

ГДЕ

    СостоянияЗаказовКлиентов.Заказ.Дата МЕЖДУ &НачДата И &КонДата

    И СостоянияЗаказовКлиентов.Состояние <> &ЗАКРЫТ

    И СостоянияЗаказовКлиентов.Заказ.ПометкаУдаления = ЛОЖЬ

    И СостоянияЗаказовКлиентов.Заказ.Проведен = ИСТИНА

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

    СостоянияЗаказовКлиентов.Заказ.Менеджер

;

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

ВЫБРАТЬ

    ВТ_ИтогПоКоличествуЗаказов.ИтогПоКоличествуЗаказов КАК ИтогПоКоличествуЗаказов,

    ВТ_КоличествоИСуммаЗаказов.Менеджер,

    ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) КАК КоличествоЗаказов,

    ВЫРАЗИТЬ(ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) / ВТ_ИтогПоКоличествуЗаказов.ИтогПоКоличествуЗаказов * 100 КАК ЧИСЛО(15, 2)) КАК ПроцентОтОбщегоКоличества,

    ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.СуммаЗаказов, 0) КАК СуммаЗаказов,

    ЕСТЬNULL(ВТ_ОтгруженныеЗаказы.КоличествоОтгруженныхЗаказов, 0) КАК КоличествоОтгруженныхЗаказов,

    ВЫРАЗИТЬ(ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) — ЕСТЬNULL(ВТ_ОтгруженныеЗаказы.КоличествоОтгруженныхЗаказов, 0) / ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) КАК ЧИСЛО(15, 2)) КАК КПД,

    ЕСТЬNULL(ВТ_ОтгруженныеЗаказы.СуммаОтгрузки, 0) КАК СуммаОтгруженныхЗаказов,

    ЕСТЬNULL(ВТ_ЗаказыЕщёВРаботе.ЕщёВРаботе, 0) КАК Поле1

ИЗ

    ВТ_ИтогПоКоличествуЗаказов КАК ВТ_ИтогПоКоличествуЗаказов,

    ВТ_КоличествоИСуммаЗаказов КАК ВТ_КоличествоИСуммаЗаказов

        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОтгруженныеЗаказы КАК ВТ_ОтгруженныеЗаказы

        ПО ВТ_КоличествоИСуммаЗаказов.Менеджер = ВТ_ОтгруженныеЗаказы.ЗаказМенеджер

        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗаказыЕщёВРаботе КАК ВТ_ЗаказыЕщёВРаботе

        ПО ВТ_КоличествоИСуммаЗаказов.Менеджер = ВТ_ЗаказыЕщёВРаботе.ЗаказМенеджер

  

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

   falselight

1 — 23.10.17 — 07:59

(0+) Нет ссылки в запросе для связи с таблицей дополнительные реквизиты. Не соображу как её прицепить к нему(

   riks05

2 — 23.10.17 — 08:00

(0) сначала отдельным запросом отобрази все доп реквизиты, определись с нужным допреквизитом после «свойство» если я не ошибаюсь допустим оно будет «источник» в условии получится

Где

допреквизиты.свойство=»источник»

и допреквизиты.значение=&НужноеЗначение

както так.

   1dvd

3 — 23.10.17 — 08:01

ИЗ

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

    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты

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

   Fram

4 — 23.10.17 — 08:03

И СостоянияЗаказовКлиентов.Заказ.ПометкаУдаления = ЛОЖЬ

    И СостоянияЗаказовКлиентов.Заказ.Проведен = ИСТИНА

подстраховался на всякий случай?

   falselight

5 — 23.10.17 — 08:05

(2) Важно кажется задавать только значение.

Да все правильно у вас.

Но вот этот запрос в (0), как сделать отбор по значению

дополнительных реквизитов в нем? Не пойму как прицепить к нему эти доп реквизиты.

(3) Это правильно. Но видите у меня в пакетных запросах подсчитывается количество. Получается отбор нужно накладывать на каждый пакет, т.к. нужно видеть данные с отбором по источнику.

Но возможно ли это сделать в запросе (0) Ссылки на заказ то в пакетах нет, что бы связывать с таблицей дополнительные реквизиты.

   falselight

6 — 23.10.17 — 08:06

(4) Ну вроде это нужно делать. Не знаю стоит ли устанавлявать ложи на пометку удаления? Так как проведен в истину и так отберет же только проведенные. А проведенные не могут быть помеченными на удаление?!

   1dvd

7 — 23.10.17 — 08:08

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

   catena

8 — 23.10.17 — 08:11

(6)»ложи» — нет такого слова, есть слово «клади».

   falselight

9 — 23.10.17 — 08:15

(8) Не сильно за грамматикой сейчас слежу.

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

Может я чего то не понимаю, но как вот в этих к примеру двух пакетах наложить отбор на значение таблицы дополнительных реквизитов?

Как её прицепить к ним, что бы наложить отбор?

   falselight

10 — 23.10.17 — 08:15

(9+)

ВЫБРАТЬ

    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиента.Ссылка) КАК ИтогПоКоличествуЗаказов

ПОМЕСТИТЬ ВТ_ИтогПоКоличествуЗаказов

ИЗ

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

ГДЕ

    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата

    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ

    И ЗаказКлиента.Проведен = ИСТИНА

;

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

ВЫБРАТЬ

    ЗаказКлиента.Менеджер,

    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ЗаказКлиента.Ссылка, 0)) КАК КоличествоЗаказов,

    СУММА(ЕСТЬNULL(ЗаказКлиента.СуммаДокумента, 0)) КАК СуммаЗаказов

ПОМЕСТИТЬ ВТ_КоличествоИСуммаЗаказов

ИЗ

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

ГДЕ

    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата

    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ

    И ЗаказКлиента.Проведен = ИСТИНА

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

    ЗаказКлиента.Менеджер

;

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

   1dvd

11 — 23.10.17 — 08:18

(9)

ВЫБРАТЬ

    ЗаказКлиента.Менеджер,

    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ЗаказКлиента.Ссылка, 0)) КАК КоличествоЗаказов,

    СУММА(ЕСТЬNULL(ЗаказКлиента.СуммаДокумента, 0)) КАК СуммаЗаказов

ПОМЕСТИТЬ ВТ_КоличествоИСуммаЗаказов

ИЗ

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

    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты

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

ГДЕ

    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата

    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ

    И ЗаказКлиента.Проведен = ИСТИНА

    И ЗаказКлиентаДополнительныеРеквизиты.Свойство = &Свойство

    И ЗаказКлиентаДополнительныеРеквизиты.Значение = &Значение

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

    ЗаказКлиента.Менеджер

Дальше сам думай

   falselight

12 — 23.10.17 — 08:21

(11) А так нельзя?

ВЫБРАТЬ

    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиента.Ссылка) КАК ИтогПоКоличествуЗаказов

ПОМЕСТИТЬ ВТ_ИтогПоКоличествуЗаказов

ИЗ

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

ГДЕ

    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата

    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ

    И ЗаказКлиента.Проведен = ИСТИНА

    И ЗаказКлиента.ДополнительныеРеквизиты.Значение = &Знач

;

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

ВЫБРАТЬ

    ЗаказКлиента.Менеджер,

    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ЗаказКлиента.Ссылка, 0)) КАК КоличествоЗаказов,

    СУММА(ЕСТЬNULL(ЗаказКлиента.СуммаДокумента, 0)) КАК СуммаЗаказов

ПОМЕСТИТЬ ВТ_КоличествоИСуммаЗаказов

ИЗ

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

ГДЕ

    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата

    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ

    И ЗаказКлиента.Проведен = ИСТИНА

    И ЗаказКлиента.ДополнительныеРеквизиты.Значение = &Знач

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

    ЗаказКлиента.Менеджер

;

   catena

13 — 23.10.17 — 08:24

(12)Тебе можно, но 1С будет ругаться.

   1dvd

14 — 23.10.17 — 08:24

(12) попробуй, может и можно

   falselight

15 — 23.10.17 — 08:32

Подскажите пожалуйста по итоговому запросу, я попытался добавить таблицу. Все ли в нем верно?

||

ВЫБРАТЬ

    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиента.Ссылка) КАК ИтогПоКоличествуЗаказов

ПОМЕСТИТЬ ВТ_ИтогПоКоличествуЗаказов

ИЗ

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

        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты

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

ГДЕ

    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата

    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ

    И ЗаказКлиента.Проведен = ИСТИНА

    И ЗаказКлиента.ДополнительныеРеквизиты.Значение = &Знач

;

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

ВЫБРАТЬ

    ЗаказКлиента.Менеджер,

    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ЗаказКлиента.Ссылка, 0)) КАК КоличествоЗаказов,

    СУММА(ЕСТЬNULL(ЗаказКлиента.СуммаДокумента, 0)) КАК СуммаЗаказов

ПОМЕСТИТЬ ВТ_КоличествоИСуммаЗаказов

ИЗ

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

        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты

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

ГДЕ

    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата

    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ

    И ЗаказКлиента.Проведен = ИСТИНА

    И ЗаказКлиента.ДополнительныеРеквизиты.Значение = &Знач

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

    ЗаказКлиента.Менеджер

;

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

ВЫБРАТЬ

    СостоянияЗаказовКлиентов.Заказ.Менеджер,

    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(СостоянияЗаказовКлиентов.Заказ.Ссылка, 0)) КАК КоличествоОтгруженныхЗаказов,

    СУММА(ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОтгрузки, 0)) КАК СуммаОтгрузки

ПОМЕСТИТЬ ВТ_ОтгруженныеЗаказы

ИЗ

    РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов

        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты

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

ГДЕ

    СостоянияЗаказовКлиентов.Заказ.Дата МЕЖДУ &НачДата И &КонДата

    И СостоянияЗаказовКлиентов.Состояние = &Закрыт

    И СостоянияЗаказовКлиентов.ПроцентОтгрузки = 100

    И СостоянияЗаказовКлиентов.Заказ.ПометкаУдаления = ЛОЖЬ

    И СостоянияЗаказовКлиентов.Заказ.Проведен = ИСТИНА

    И ЗаказКлиентаДополнительныеРеквизиты.Значение = &Знач

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

    СостоянияЗаказовКлиентов.Заказ.Менеджер

;

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

ВЫБРАТЬ

    СостоянияЗаказовКлиентов.Заказ.Менеджер,

    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СостоянияЗаказовКлиентов.Заказ.Ссылка) КАК ЕщёВРаботе

ПОМЕСТИТЬ ВТ_ЗаказыЕщёВРаботе

ИЗ

    РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов

        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты

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

ГДЕ

    СостоянияЗаказовКлиентов.Заказ.Дата МЕЖДУ &НачДата И &КонДата

    И СостоянияЗаказовКлиентов.Состояние <> &ЗАКРЫТ

    И СостоянияЗаказовКлиентов.Заказ.ПометкаУдаления = ЛОЖЬ

    И СостоянияЗаказовКлиентов.Заказ.Проведен = ИСТИНА

    И ЗаказКлиентаДополнительныеРеквизиты.Значение = &Знач

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

    СостоянияЗаказовКлиентов.Заказ.Менеджер

;

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

ВЫБРАТЬ

    ВТ_ИтогПоКоличествуЗаказов.ИтогПоКоличествуЗаказов КАК ИтогПоКоличествуЗаказов,

    ВТ_КоличествоИСуммаЗаказов.Менеджер,

    ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) КАК КоличествоЗаказов,

    ВЫРАЗИТЬ(ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) / ВТ_ИтогПоКоличествуЗаказов.ИтогПоКоличествуЗаказов * 100 КАК ЧИСЛО(15, 2)) КАК ПроцентОтОбщегоКоличества,

    ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.СуммаЗаказов, 0) КАК СуммаЗаказов,

    ЕСТЬNULL(ВТ_ОтгруженныеЗаказы.КоличествоОтгруженныхЗаказов, 0) КАК КоличествоОтгруженныхЗаказов,

    ВЫРАЗИТЬ(ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) — ЕСТЬNULL(ВТ_ОтгруженныеЗаказы.КоличествоОтгруженныхЗаказов, 0) / ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) КАК ЧИСЛО(15, 2)) КАК КПД,

    ЕСТЬNULL(ВТ_ОтгруженныеЗаказы.СуммаОтгрузки, 0) КАК СуммаОтгруженныхЗаказов,

    ЕСТЬNULL(ВТ_ЗаказыЕщёВРаботе.ЕщёВРаботе, 0) КАК ЕщёВРаботе

ИЗ

    ВТ_ИтогПоКоличествуЗаказов КАК ВТ_ИтогПоКоличествуЗаказов,

    ВТ_КоличествоИСуммаЗаказов КАК ВТ_КоличествоИСуммаЗаказов

        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОтгруженныеЗаказы КАК ВТ_ОтгруженныеЗаказы

        ПО ВТ_КоличествоИСуммаЗаказов.Менеджер = ВТ_ОтгруженныеЗаказы.ЗаказМенеджер

        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗаказыЕщёВРаботе КАК ВТ_ЗаказыЕщёВРаботе

        ПО ВТ_КоличествоИСуммаЗаказов.Менеджер = ВТ_ЗаказыЕщёВРаботе.ЗаказМенеджер

   catena

16 — 23.10.17 — 08:36

(14)Ну и как? Что ощущаешь после провалившейся акции милосердия?))

   Масянька

17 — 23.10.17 — 08:37

Как у вас дела? Получилось донести до ТС мысли?

   falselight

18 — 23.10.17 — 08:39

(16) ну вот запрос итоговый в (15) я сделал как подсказывали, он нормальный?

   falselight

19 — 23.10.17 — 08:39

(16) Подскажите пожалуйста!

   catena

20 — 23.10.17 — 08:40

(18)Нет, ты сделал НЕ как подсказывали. Помнишь детскую игру «найди три отличия»? Сиди, сверяй.

   catena

21 — 23.10.17 — 08:41

(17)У него переполнение стека, то и дело всё выплескивается.

   falselight

22 — 23.10.17 — 08:42

(20) вы про то что не хватает этого?

    И ЗаказКлиентаДополнительныеРеквизиты.Свойство = &Свойство

это у меня на форме, и там только нужные значения уже, то есть я считал что = &Знач достаточно!

   Масянька

23 — 23.10.17 — 08:44

(21) И смех, и грех (С)

   falselight

24 — 23.10.17 — 08:44

(20) Подскажите что именно не так в запросе?

   1dvd

25 — 23.10.17 — 08:45

(24) всё норм. не парься

  

falselight

26 — 23.10.17 — 08:47

(25) Спасибо большое за поддержку! Пойду вставлять в отчет.

igforu

В типовой 1С торговле 11 дополнительные реквизиты хранятся не в регистре сведений, а в табличной части справочника (речь идет не о справочнике номенклатуры). Табличная часть называется “ДополнительныеРеквизиты”. Строки табличной части содержат реквизиты: Значение и Свойство. Если в качестве источника значений выбрать таблицу справочника, то СКД не дает в качестве Поля Вида и Поля Значения выбрать реквизиты табличной части справочника, можно только саму табличную часть. То же и с запросом.

loginza7oi6IWyXZ5RHccDYmqYbcD

loginza7oi6IWyXZ5RHccDYmqYbcD

11 лет назад

Люди! Скажите пожалуйста, что это за секретное кунг-фу?:
В УТ 11 для номенклатуры создайте общий доп. реквизит, напр. “Бренд”
Потом в конфигураторе сделайте простейший внешний отчет с выборкой номенклатуры и группировкой по Номенклатура.Ссылка
Потом в режиме предприятия откройте этот отчет, измените вариант настройки, на закладке “Отбор” плюсиком разверните реквизиты номенклатуры. и что мы там видим? Помимо заданных в конфигураторе реквизитов обнаруживаем реквизит “Бренд”, по которому можно делать отбор, причем с правильным типом. Как такое возможно? Откуда компоновка знает о доп. реквизитах? Как она делает отбор по значениям реквизитов в ТЧ номенклатуры?

MrGray

Бьюсь с тем же – как попадают доп.реквизиты в поля СКД в типовых?? откуда он их подхватывает?

Yulunga

1142 / 689 / 203

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

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

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

1

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

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

Записей в блоге: 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,159

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

23.03.2021, 11:10

 [ТС]

6

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



0



Как в языке запросов 1С отобрать не заполненное значение. Какое условие указать в запросе после ключевого слова «ГДЕ», когда нужно сделать отбор по не заполненным полям?
Есть запрос:

    Запрос.Текст =
    "ВЫБРАТЬ 
    |    усЕдиницыХранения.Ссылка
    |ИЗ
    |    Справочник.усЕдиницыХранения КАК усЕдиницыХранения

Требуется отобрать по условию, что у справочника усЕдиницыХранения реквизит РазрешитьОтборИзРезервнойЗоны пустой
Реквизит РазрешитьОтборИзРезервнойЗоны имеет тип булево
Вариант 1. сравнение с не заполненным булевым значением:

    |ГДЕ
    |     усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны = Ложь

Вариант 2. Если это булево определено, то лучше так:

    // условие на отрицательное булево значение:
    |ГДЕ
    |     НЕ усЕдиницыХранения.РазрешитьОтборИзРезервнойЗоны

Требуется отобрать по условию, что у справочника усЕдиницыХранения реквизит АктивнаяОбластьОтбора пустой
Реквизит АктивнаяОбластьОтбора имеет тип Справочник.усОбластиОтбора

    // Пример 3. выборка по условию не заполненного поля, имеющего тип "справочник конкретного типа"
     |ГДЕ
    |    усЕдиницыХранения.АктивнаяОбластьОтбора = ЗНАЧЕНИЕ(Справочник.усОбластиОтбора.ПустаяСсылка)

Требуется отобрать по условию, что у регистра сведений НашРегистрСведений реквизит Документ пустой
Реквизит Документ имеет тип Документ.НашДокумент1

    // Пример 3а. выборка по условию не заполненного поля, имеющего тип "документ конкретного типа"
    |ГДЕ
    |    НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент.ПустаяСсылка)

Требуется отобрать по условию, что у регистра сведений НашРегистрСведений реквизит Документ пустой
Реквизит Документ имеет составной тип значения: Документ.НашДокумент1, Документ.НашДокумент2 и т.д.

    // Пример 3б. выборка по условию не заполненного поля, имеющего тип "документы разных типов" (составное поле)
    |ГДЕ
    |    (НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент1.ПустаяСсылка)
    |    ИЛИ НашРегистрСведений.Документ = ЗНАЧЕНИЕ(Документ.НашДокумент2.ПустаяСсылка) 
    |    ИЛИ ...(и т.д. - последовательно перечисляем условия для всех возможных типов этого составного поля))

Требуется отобрать по условию, что реквизит не пустой (заполнен хоть чем-то)
Тип значения реквизита — Строка.

    
    // Пример 4. или наоборот, если нужно выбрать заполненное значение типа "строка", то поможет условие:
    |ГДЕ
    |    усЕдиницыХранения.Наименование > """"

Допустим требуется отобрать данные, при условии, что реквизит Задание регистра сведений ВыполняемыеЗадания содержит какой-либо Документ.Отбор
Реквизит Задание имеет составной тип значения: Документ.Отбор, Документ.Поступление и т.д.

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

Еще аналогичный пример, когда нужно выбрать документы конкретного типа

    // Пример 5а. Еще аналогичный пример, когда нужно выбрать документы конкретного типа
    |	ВЫБОР
    |		КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.ПоступлениеТоваровУслуг) ССЫЛКА Документ.ПоступлениеТоваровУслуг
    |			ТОГДА ""ПоступлениеТоваровУслуг""
    |		КОГДА ВЫРАЗИТЬ(агСоответствиеДокументов.ДокументБУ КАК Документ.РеализацияТоваровУслуг) ССЫЛКА Документ.РеализацияТоваровУслуг
    |			ТОГДА ""РеализацияТоваровУслуг""
    |		ИНАЧЕ """"
    |	КОНЕЦ КАК ВидДокумента

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

    // Пример 6. выбор по условию не определенного значения:
    |ГДЕ
    |    СохраненныеНастройки.Пользователь = НЕОПРЕДЕЛЕНО

Отобрать по условию, что вид движения — Приход

    // Пример 7. выбор по виду движения "Приход" регистра накопления, "Расход" - аналогично):
    |ГДЕ
    |    РегТоварыВРознице.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)

Как в запросе указать, что выполнять запрос не нужно (например, нужно программно, в зависимости от какого-то условия, вернуть пустой результат запроса: Запрос.Текст = СтрЗаменить(Запрос.Текст, «ГДЕ Док.Ссылка = &ДокументСсылка», «ГДЕ ЛОЖЬ»);).
Для этого достаточно добавить условие «Где Ложь». Кстати, независимо от объема запрашиваемых в выборке данных, такой запрос будет выполнен мгновенно.

    // Пример 8. Не исполнять запрос:
    |ГДЕ ЛОЖЬ

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

    // Пример 9. Проверка на то, что результат выполнения запроса содержит данные:
    Если НЕ Запрос.Выполнить().Пустой() Тогда

Отобрать записи с не заполненной датой (реквизит ДатаОтмены имеет тип Дата)

    // Пример 10. выбор по условию не заполненной даты:
    |ГДЕ
    |    тбСтроки.ДатаОтмены = ДАТАВРЕМЯ(1, 1, 1)

Next Post

  • SQL Server

  • v8

  • Программисту 1C

Установка 1С: Предприятие. Установка 1С:Предприятия 8 в варианте «клиент-сервер» (на SQLServer) (1С)

Вт Май 18 , 2010

Вопрос Как установить 1С: Предприятие в клиент-серверном варианте. Раздел содержит практические рекомендации по решению проблем, возникающих при установке и настройке клиент-серверного варианта 1С:Предприятия 8. При подготовке раздела учтен опыт партнеров и пользователей, которым в процессе установки 1С:Предприятия потребовалась дополнительная настройка различных служб Microsoft Windows. Более подробно с материалом можно ознакомиться […]

Что у нас есть?

Пример будем приводить на конфигурации «Управление производственным предприятием» версии 1.3. В информационной базе для всех элементов справочника «Организации» добавлены свойства «Основной склад», «Связанный контрагент» и «Страна размещения». Нам нужно создать отчет в системе компоновки данных (СКД), в котором мы сможем накладывать отбор по дополнительным характеристиками организаций.

При этом мы будем использовать стандартный функционал СКД для работы с характеристиками объектов. Также рассмотрим особенность разработки подобных отчетов, а именно — отсутствие возможности использовать дополнительные характеристики в конструкторе схемы компоновки данных в режиме «Конфигуратор». Последнее не позволяет использовать поля характеристик в настройке выводимых полей в отчете, отборах, группировка в структуре отчета и так далее.

Создаем отчет и настраиваем характеристики

Создадим простой отчет. В нем будет один набор данных со следующим запросом:

ВЫБРАТЬ
  Организации.Ссылка КАК Организация,
  Организации.ИНН,
  Организации.КПП
ИЗ
  Справочник.Организации КАК Организации

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

На скриншоте ниже представлен вывод отчета с текущими настройками.

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

  • План видов характеристик СвойстваОбъектов
  • Регистр сведений ЗначенияСвойствОбъектов

Графически связь между объектом информационной базы и его характеристиками можно изобразить по такой схеме:

Опишем схему подробнее. В регистре сведений ЗначенияСвойствОбъектов в измерении Объект содержится ссылка на элемент информационной базы, для которого сохраняется свойство. В нашем примере это ссылка на элемент справочника Организации. Все возможные свойства объекта определяются в плане видов характеристик (ПВХ) СвойстваОбъектов. Значение характеристики, сохраняемое в регистре сведений, зависиот от доступных типов данных для элемента плана видов характеристик, записанного в измерение Свойство. Это описание должно дать лишь общее представление о механизме доп.свойств. На практике он сложнее.

Теперь перейдем к настройке характеристик в схеме компоновки данных. Для этого запустим конструктор запроса и перейдем на вкладку «Характеристики». Здесь нужно добавить поле связи объекта информационной базы с таблицами свойств и значений свойств. Ранее мы рассматривали схему связи между объектами конфигурации для хранения доп.свойств/характеристик. В соответствии с этой информацией настройка будет следюущей:

После этого запрос набора данных дополнится инструкциями получения характеристик объектов.

ВЫБРАТЬ
  Организации.Ссылка КАК Организация,
  Организации.ИНН,
  Организации.КПП
ИЗ
  Справочник.Организации КАК Организации
// Доп. инструкции для получения характеристик
{ХАРАКТЕРИСТИКИ
  ТИП(Справочник.Организации)
  ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.СвойстваОбъектов
  ПОЛЕКЛЮЧА Ссылка
  ПОЛЕИМЕНИ Наименование
  ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
  ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
  ПОЛЕОБЪЕКТА Объект
  ПОЛЕВИДА Свойство
  ПОЛЕЗНАЧЕНИЯ Значение}

На этом все. Функционал отчета теперь позволяет выбрать поля дополнительных характеристик в отчете (поля вывода, отборы и т.д.). Но есть одно НО. Использовать эти поля в настройках отчета мы можем только в режиме 1С:Предприятия. В конфигураторе мы не можем увидеть поля характеристик, что логично, ведь характеристики вводятся пользователем и хранятся в информационной базе.

Но если есть необходимость, мы можем добавить поля характеристик, например, в отбор перед его открытием. Рассмотрим небольшой пример.

Программная работа с характеристиками

При открытии формы отчета выполним следующим программный код:

ТекущиеНастройки = КомпоновщикНастроек.Настройки;
КоллекцияОтборов = ТекущиеНастройки.Отбор.Элементы;

// Добавляем отбор по доп. реквизиту номенклатуры "Основной склад" 
НовЭл = КоллекцияОтборов.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовЭл.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовЭл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация.[Основной склад]");
НовЭл.Использование = Ложь;

// Добавляем отбор по доп. реквизиту номенклатуры "Страна размещения"
НовЭл = КоллекцияОтборов.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовЭл.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовЭл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация.[Страна размещения]");
НовЭл.Использование = Ложь;

// Добавляем отбор по доп. реквизиту номенклатуры "Связанный контрагент"
НовЭл = КоллекцияОтборов.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовЭл.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовЭл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация.[Связанный контрагент]");
НовЭл.Использование = Ложь;

Тогда если мы посмотрим в отбор отчета в режиме 1С:Предприятие, то увидим следующиую картину:

Таким образом, мы программно добавили отбор по дополнительным характеристикам справочника Организации, не смотря на то, что в конструкторе СКД эти поля не были доступны. Обратите внимание на синтаксис определения поля компоновки данных.

Новый ПолеКомпоновкиДанных("Организация.[Связанный контрагент]")

а именно на текст [Связанный контрагент]. Если мы напишем вот так:

Новый ПолеКомпоновкиДанных("Организация.СвязанныйКонтрагент"),

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

Для дополнительных свойст и реквизитов, которые не доступны в конструкторе СКД, при программном обращении необходимо использовать следующий синтаксис:

Новый ПолеКомпоновкиДанных(".[]")

Таким образом, мы можем устанавливать настройки отчета, даже если поля недоступны в конструкторе СКД.

Вывод

Использование настройки характеристик в СКД позволяет значительно упростить разработку сложных отчетов. Несмотря на некоторые недостатки в работе, такие как отсутствие возможности настройки отбора по доп. свойствам в конструкторе и т.д., механизм характеристик можно считать значительным шагом в упрощении разработки отчетов в системе 1С:Предприятие.

В статье мы рассмотрели далеко не все возможности характеристик в СКД. За рамками статьи остались такие возможности как: произвольное определение источников данных, как для свойств, так и для значений характеристик, а также отбор по владельцу для всех доступных характеристик в информационной базе и многое другое. Тема большая, есть куда расширять круг своих знания.

Дополнительные реквизиты объектов с помощью плана видов характеристик

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

В этой статье я расскажу о том, как реализовать такую возможность с помощью плана видов характеристик и регистра сведений и поделюсь парой приёмов использования этих реквизитов в отчётах и списках.

Быстрый переход

  • Изменения в конфигурации
  • Использование дополнительных реквизитов в отчётах и списках
    • Вариант №1
    • Вариант №2

Изменения в конфигурации

Разработку конфигурации будем вести на базе платформе 1С: Предприятие 8.2 с установленным свойством “Основной режим запуска” – “Управляемое приложение”. В качестве основы для разработки подойдет любая демо-конфигурация. Добавим новый план видов характеристик “Виды характеристик”. На закладке “Основные” плана видов характеристик в поле “Тип значения характеристик” выберем необходимые типы.

plany-vidov-harakteristik-tip-znacheniya

В качестве одного из возможных типов значений характеристик выберем предварительно добавленный в конфигурацию справочник “Значения характеристик”, подчиненный плану видов характеристик “Виды характеристик”. Его же выберем в поле “Дополнительные значения характеристик”. Это позволит добавлять характеристики с произвольными ссылочными значениями (например, цвет или размер).

Создадим регистр сведений “Характеристики” с измерениями “Объект”, “Вид характеристики” и ресурсом “Значение”. Измерение “Объект” должно включать в себя все типы объектов для которых необходимо использовать дополнительные реквизиты. В нашем случае это будет справочник “Контрагенты”, В свойствах измерения “Объект” должны быть установлены флаги “Ведущее”, “Основной отбор” и “Запрет незаполненных”.

osnovnoj-otbor-u-rekvizitaЭто обеспечит связь объекта с записями регистра сведений. В форме элемента справочника “Контрагенты” переход к редактированию характеристик будет возможен с помощью соответствующего пункта меню “Перейти” в левой части формы.

Измерению “Вид характеристики” необходимо назначить тип “ПланВидовХарактеристикСсылка.ВидыХарактеристик”, а ресурсу “Значение” – “Характеристика.ВидыХарактеристик”.

Для обеспечения взаимосвязи значений ресурса “Значение” со значениями измерения “ВидХарактеристик” регистра “Характеристики” необходимо чтобы в свойстве “Связи параметров выбора” ресурса “Значение” было указано “Отбор.Владелец(ВидХарактеристики)”, а в свойстве “Связь по типу” – “ВидХарактеристики”

otbor-znacheniya-po-tipu-v-harakteristka

Теперь всё готово для того чтобы мы могли вводить в базу данных дополнительные реквизиты справочника “Контрагенты”.

Попробуем добавить дополнительный реквизит “Адрес”

primer-ispolzovaniya-plana-harakteristik

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

После того как все необходимые изменения в конфигурации выполнены возникает вопрос о том как использовать дополнительные реквизиты для вывода и фильтрации данных в отчётах и списках.

Вариант №1

Начнём с использования характеристик в отчёте, разработанном с использованием системы компоновки данных. За основу возьмём отчёт “Ведомость взаиморасчетов”. Добавим в конфигурацию копию этого отчёта и назовём его “Ведомость взаиморасчетов (с характеристиками)”.

Оригинал отчёта нам понадобится для демонстрации второго варианта использования характеристик.

Итак, откроем набор данных “Взаиморасчеты” схемы компоновки данных нашего отчета в конструкторе запросов и перейдем на закладку “Характеристики”.

konstruktor-harakteristika

  • В таблицу на вкладке “Характеристики” добавим строку.
  • В поле “Тип” выберем “СправочникСсылка.Контрагенты” (это объект для которого в отчёте необходимо использовать дополнительные характеристики).
  • В поле “Источник видов” выберем вариант “Запрос” (хотя в нашем случае можно ограничиться и вариантом “Таблица”).
  • В колонку “Виды характеристик” внесём текст запроса, которым будут выбираться виды характеристик, используемые для справочника “Контрагенты”.

Текст запроса обязательно должен содержать три поля – ссылка на вид характеристики, наименование характеристики и тип значения характеристики. Наименования этих полей выбираются в колонках “Поле ключа”, “Поле имени” и “Поле типа значения” таблицы на закладке “Характеристики”.

  • Для визуального выделения дополнительных реквизитов объекта в запросе по видам характеристик к наименованиям добавлен текст “(доп. реквизит)”.
  • В колонке “Источник значений” на вкладке “Характеристики” выберем вариант “Таблица”.
  • В колонке “Значения характеристик” выберем “РегистрСведений.Характеристики”,
  • в колонке “Поле объекта” – наименование измерения регистра “Объект”,
  • в колонке “Поле вида” – наименование измерения “ВидХарактеристики”,
  • в колонке “Поле значения” – наименование ресурса “Значение”.

В тексте запроса схемы компоновки результат добавления характеристик выглядит следующим образом (в обычных запросах применение таких конструкций невозможно):

{ХАРАКТЕРИСТИКИ
    ТИП(Справочник.Контрагенты)
    ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
        ВидыХарактеристик.Ссылка,
        ВидыХарактеристик.Наименование + » (доп. реквизит)» КАК Наименование,
        ВидыХарактеристик.ТипЗначения
    ИЗ
        ПланВидовХарактеристик.ВидыХарактеристик КАК ВидыХарактеристик)
ПОЛЕКЛЮЧА Ссылка
ПОЛЕИМЕНИ Наименование
ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.Характеристики
ПОЛЕОБЪЕКТА Объект
ПОЛЕВИДА ВидХарактеристики
ПОЛЕЗНАЧЕНИЯ Значение }

Проверим работу отчёта. Для этого откроем отчёт “Ведомость взаиморасчетов (с характеристиками)”. Перейдем в пункт меню “Все действия -> Изменить вариант”. В окне настроек перейдём на закладку “Отбор” и добавим отбора по дополнительному реквизиту контрагента “Адрес”

otbor-v-skd

Вариант №2

Рассмотрим более универсальный вариант работы с характеристикам объектов, благодаря которому характеристики возможно будет использовать в любых отчетах, содержащих объект-владелец характеристик, а также устанавливать отборы по значению этих характеристик в формах списков.
Перейдём на закладку “Данные” справочника “Контрагенты” и нажмём кнопку “Характеристики”.

dopolnitelnye-harakteristiki-obekta-metadannyh

  • В открывшемся окне “Дополнительных характеристик объекта метаданных” добавим строку.
  • В колонке “Виды характеристик” выберем “ПланВидовХарактеристик.ВидыХарактеристик”, в колонке “Поле ключа” – “Ссылка”.
  • В колонке “Значения характеристик” выберем “РегистрСведений.Характеристики”, в колонке “Поле объекта” – “Объект”,
  • в колонке “Поле вида” – “ВидХарактеристики”, в колонке “Поле значения” – “Значение”.

Сохраним конфигурацию и попробуем воспользоваться дополнительными характеристиками справочника “Контрагенты” в форме списка (в отчёте “Ведомость взаиморасчетов” использование дополнительных реквизитов будет выглядеть аналогичному тому как это было описано в Варианте №1, с той лишь разницей, что наименованию вида характеристики не будет добавляться текст “(доп. реквизит)”).

Откроем список справочника “Контрагенты”, перейдем в пункт меню “Все действия -> Настройка списка” и установим отбор по дополнительному реквизиту “Адрес”.

nastrojka-spiska-dobavlenie-v-otbor

Стоит отметить, что при использовании Варианта №1 в отчётах с использованием СКД отключается приведенный механизм платформы и используется описанный пользователем.

Статья найдена на просторах интернета.

Вы обязательно истратите слишком много, если захотите сэкономить на хорошей рекламе. Это подобно покупке билета на три четверти пути в Европу: вы потратили деньги, но туда не доехали.

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

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

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

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