В типовой 1С торговле 11 дополнительные реквизиты хранятся не в регистре сведений, а в табличной части справочника (речь идет не о справочнике номенклатуры). Табличная часть называется “ДополнительныеРеквизиты”. Строки табличной части содержат реквизиты: Значение и Свойство. Если в качестве источника значений выбрать таблицу справочника, то СКД не дает в качестве Поля Вида и Поля Значения выбрать реквизиты табличной части справочника, можно только саму табличную часть. То же и с запросом.
loginza7oi6IWyXZ5RHccDYmqYbcD
11 лет назад
Люди! Скажите пожалуйста, что это за секретное кунг-фу?:
В УТ 11 для номенклатуры создайте общий доп. реквизит, напр. “Бренд”
Потом в конфигураторе сделайте простейший внешний отчет с выборкой номенклатуры и группировкой по Номенклатура.Ссылка
Потом в режиме предприятия откройте этот отчет, измените вариант настройки, на закладке “Отбор” плюсиком разверните реквизиты номенклатуры. и что мы там видим? Помимо заданных в конфигураторе реквизитов обнаруживаем реквизит “Бренд”, по которому можно делать отбор, причем с правильным типом. Как такое возможно? Откуда компоновка знает о доп. реквизитах? Как она делает отбор по значениям реквизитов в ТЧ номенклатуры?
Бьюсь с тем же – как попадают доп.реквизиты в поля СКД в типовых?? откуда он их подхватывает?
Что у нас есть?
Пример будем приводить на конфигурации «Управление производственным предприятием» версии 1.3. В информационной базе для всех элементов справочника «Организации» добавлены свойства «Основной склад», «Связанный контрагент» и «Страна размещения». Нам нужно создать отчет в системе компоновки данных (СКД), в котором мы сможем накладывать отбор по дополнительным характеристиками организаций.
При этом мы будем использовать стандартный функционал СКД для работы с характеристиками объектов. Также рассмотрим особенность разработки подобных отчетов, а именно — отсутствие возможности использовать дополнительные характеристики в конструкторе схемы компоновки данных в режиме «Конфигуратор». Последнее не позволяет использовать поля характеристик в настройке выводимых полей в отчете, отборах, группировка в структуре отчета и так далее.
Создаем отчет и настраиваем характеристики
Создадим простой отчет. В нем будет один набор данных со следующим запросом:
ВЫБРАТЬ Организации.Ссылка КАК Организация, Организации.ИНН, Организации.КПП ИЗ Справочник.Организации КАК Организации
Структура отчета будет иметь вывод только по детальным записям со всеми полями, выбираемыми в запросе. В конструкторе настройка структуры отчета будет выглядит следующим образом:
На скриншоте ниже представлен вывод отчета с текущими настройками.
Отлично. Теперь перейдем к настройке характеристик, но перед этим напомню в общих чертах работу механизма характеристик в большинстве типовых конфигураций, в том числе и УПП. Для этого используются несколько объектов конфигурации.
- План видов характеристик
СвойстваОбъектов
- Регистр сведений
ЗначенияСвойствОбъектов
Графически связь между объектом информационной базы и его характеристиками можно изобразить по такой схеме:
Опишем схему подробнее. В регистре сведений ЗначенияСвойствОбъектов
в измерении Объект
содержится ссылка на элемент информационной базы, для которого сохраняется свойство. В нашем примере это ссылка на элемент справочника Организации
. Все возможные свойства объекта определяются в плане видов характеристик (ПВХ) СвойстваОбъектов
. Значение характеристики, сохраняемое в регистре сведений, зависиот от доступных типов данных для элемента плана видов характеристик, записанного в измерение Свойство
. Это описание должно дать лишь общее представление о механизме доп.свойств. На практике он сложнее.
Теперь перейдем к настройке характеристик в схеме компоновки данных. Для этого запустим конструктор запроса и перейдем на вкладку «Характеристики». Здесь нужно добавить поле связи объекта информационной базы с таблицами свойств и значений свойств. Ранее мы рассматривали схему связи между объектами конфигурации для хранения доп.свойств/характеристик. В соответствии с этой информацией настройка будет следюущей:
После этого запрос набора данных дополнится инструкциями получения характеристик объектов.
ВЫБРАТЬ Организации.Ссылка КАК Организация, Организации.ИНН, Организации.КПП ИЗ Справочник.Организации КАК Организации // Доп. инструкции для получения характеристик {ХАРАКТЕРИСТИКИ ТИП(Справочник.Организации) ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.СвойстваОбъектов ПОЛЕКЛЮЧА Ссылка ПОЛЕИМЕНИ Наименование ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов ПОЛЕОБЪЕКТА Объект ПОЛЕВИДА Свойство ПОЛЕЗНАЧЕНИЯ Значение}
На этом все. Функционал отчета теперь позволяет выбрать поля дополнительных характеристик в отчете (поля вывода, отборы и т.д.). Но есть одно НО. Использовать эти поля в настройках отчета мы можем только в режиме 1С:Предприятия. В конфигураторе мы не можем увидеть поля характеристик, что логично, ведь характеристики вводятся пользователем и хранятся в информационной базе.
Но если есть необходимость, мы можем добавить поля характеристик, например, в отбор перед его открытием. Рассмотрим небольшой пример.
Программная работа с характеристиками
При открытии формы отчета выполним следующим программный код:
ТекущиеНастройки = КомпоновщикНастроек.Настройки; КоллекцияОтборов = ТекущиеНастройки.Отбор.Элементы; // Добавляем отбор по доп. реквизиту номенклатуры "Основной склад" НовЭл = КоллекцияОтборов.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовЭл.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовЭл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация.[Основной склад]"); НовЭл.Использование = Ложь; // Добавляем отбор по доп. реквизиту номенклатуры "Страна размещения" НовЭл = КоллекцияОтборов.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовЭл.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовЭл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация.[Страна размещения]"); НовЭл.Использование = Ложь; // Добавляем отбор по доп. реквизиту номенклатуры "Связанный контрагент" НовЭл = КоллекцияОтборов.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовЭл.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; НовЭл.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация.[Связанный контрагент]"); НовЭл.Использование = Ложь;
Тогда если мы посмотрим в отбор отчета в режиме 1С:Предприятие, то увидим следующиую картину:
Таким образом, мы программно добавили отбор по дополнительным характеристикам справочника Организации, не смотря на то, что в конструкторе СКД эти поля не были доступны. Обратите внимание на синтаксис определения поля компоновки данных.
Новый ПолеКомпоновкиДанных("Организация.[Связанный контрагент]")
а именно на текст [Связанный контрагент]
. Если мы напишем вот так:
Новый ПолеКомпоновкиДанных("Организация.СвязанныйКонтрагент"),
то при запуске отчета СКД неправильно определит поля компоновки. В настройках поля отбора будут выделены как некорректные:
Для дополнительных свойст и реквизитов, которые не доступны в конструкторе СКД, при программном обращении необходимо использовать следующий синтаксис:
Новый ПолеКомпоновкиДанных(".[]")
Таким образом, мы можем устанавливать настройки отчета, даже если поля недоступны в конструкторе СКД.
Вывод
Использование настройки характеристик в СКД позволяет значительно упростить разработку сложных отчетов. Несмотря на некоторые недостатки в работе, такие как отсутствие возможности настройки отбора по доп. свойствам в конструкторе и т.д., механизм характеристик можно считать значительным шагом в упрощении разработки отчетов в системе 1С:Предприятие.
В статье мы рассмотрели далеко не все возможности характеристик в СКД. За рамками статьи остались такие возможности как: произвольное определение источников данных, как для свойств, так и для значений характеристик, а также отбор по владельцу для всех доступных характеристик в информационной базе и многое другое. Тема большая, есть куда расширять круг своих знания.
Отбор по значению дополнительных реквизитов |
Я |
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
ИЗ
ВТ_ИтогПоКоличествуЗаказов КАК ВТ_ИтогПоКоличествуЗаказов,
ВТ_КоличествоИСуммаЗаказов КАК ВТ_КоличествоИСуммаЗаказов
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОтгруженныеЗаказы КАК ВТ_ОтгруженныеЗаказы
ПО ВТ_КоличествоИСуммаЗаказов.Менеджер = ВТ_ОтгруженныеЗаказы.ЗаказМенеджер
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗаказыЕщёВРаботе КАК ВТ_ЗаказыЕщёВРаботе
ПО ВТ_КоличествоИСуммаЗаказов.Менеджер = ВТ_ЗаказыЕщёВРаботе.ЗаказМенеджер
1 — 23.10.17 — 07:59
(0+) Нет ссылки в запросе для связи с таблицей дополнительные реквизиты. Не соображу как её прицепить к нему(
2 — 23.10.17 — 08:00
(0) сначала отдельным запросом отобрази все доп реквизиты, определись с нужным допреквизитом после «свойство» если я не ошибаюсь допустим оно будет «источник» в условии получится
Где
допреквизиты.свойство=»источник»
и допреквизиты.значение=&НужноеЗначение
както так.
3 — 23.10.17 — 08:01
ИЗ
Документ.ЗаказКлиента КАК ЗаказКлиента
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
ПО ЗаказКлиентаДополнительныеРеквизиты.Ссылка = ЗаказКлиента.Ссылка
4 — 23.10.17 — 08:03
И СостоянияЗаказовКлиентов.Заказ.ПометкаУдаления = ЛОЖЬ
И СостоянияЗаказовКлиентов.Заказ.Проведен = ИСТИНА
подстраховался на всякий случай?
5 — 23.10.17 — 08:05
(2) Важно кажется задавать только значение.
Да все правильно у вас.
Но вот этот запрос в (0), как сделать отбор по значению
дополнительных реквизитов в нем? Не пойму как прицепить к нему эти доп реквизиты.
(3) Это правильно. Но видите у меня в пакетных запросах подсчитывается количество. Получается отбор нужно накладывать на каждый пакет, т.к. нужно видеть данные с отбором по источнику.
Но возможно ли это сделать в запросе (0) Ссылки на заказ то в пакетах нет, что бы связывать с таблицей дополнительные реквизиты.
6 — 23.10.17 — 08:06
(4) Ну вроде это нужно делать. Не знаю стоит ли устанавлявать ложи на пометку удаления? Так как проведен в истину и так отберет же только проведенные. А проведенные не могут быть помеченными на удаление?!
7 — 23.10.17 — 08:08
(5) нифига не понял что тебе не нравится. В пакетных запросах ссылка есть. соединяй с ТЧ и фильтруй. Не вижу никаких проблем
8 — 23.10.17 — 08:11
(6)»ложи» — нет такого слова, есть слово «клади».
9 — 23.10.17 — 08:15
(8) Не сильно за грамматикой сейчас слежу.
(7) Есть группировка по менеджеру, ссылка используется для подсчета количества, и сумма.
Может я чего то не понимаю, но как вот в этих к примеру двух пакетах наложить отбор на значение таблицы дополнительных реквизитов?
Как её прицепить к ним, что бы наложить отбор?
10 — 23.10.17 — 08:15
(9+)
ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиента.Ссылка) КАК ИтогПоКоличествуЗаказов
ПОМЕСТИТЬ ВТ_ИтогПоКоличествуЗаказов
ИЗ
Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
И ЗаказКлиента.Проведен = ИСТИНА
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказКлиента.Менеджер,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ЗаказКлиента.Ссылка, 0)) КАК КоличествоЗаказов,
СУММА(ЕСТЬNULL(ЗаказКлиента.СуммаДокумента, 0)) КАК СуммаЗаказов
ПОМЕСТИТЬ ВТ_КоличествоИСуммаЗаказов
ИЗ
Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
И ЗаказКлиента.Проведен = ИСТИНА
СГРУППИРОВАТЬ ПО
ЗаказКлиента.Менеджер
;
////////////////////////////////////////////////////////////////////////////////
11 — 23.10.17 — 08:18
(9)
ВЫБРАТЬ
ЗаказКлиента.Менеджер,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ЗаказКлиента.Ссылка, 0)) КАК КоличествоЗаказов,
СУММА(ЕСТЬNULL(ЗаказКлиента.СуммаДокумента, 0)) КАК СуммаЗаказов
ПОМЕСТИТЬ ВТ_КоличествоИСуммаЗаказов
ИЗ
Документ.ЗаказКлиента КАК ЗаказКлиента
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
ПО ЗаказКлиентаДополнительныеРеквизиты.Ссылка = ЗаказКлиента.Ссылка
ГДЕ
ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
И ЗаказКлиента.Проведен = ИСТИНА
И ЗаказКлиентаДополнительныеРеквизиты.Свойство = &Свойство
И ЗаказКлиентаДополнительныеРеквизиты.Значение = &Значение
СГРУППИРОВАТЬ ПО
ЗаказКлиента.Менеджер
Дальше сам думай
12 — 23.10.17 — 08:21
(11) А так нельзя?
ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиента.Ссылка) КАК ИтогПоКоличествуЗаказов
ПОМЕСТИТЬ ВТ_ИтогПоКоличествуЗаказов
ИЗ
Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
И ЗаказКлиента.Проведен = ИСТИНА
И ЗаказКлиента.ДополнительныеРеквизиты.Значение = &Знач
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказКлиента.Менеджер,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ЗаказКлиента.Ссылка, 0)) КАК КоличествоЗаказов,
СУММА(ЕСТЬNULL(ЗаказКлиента.СуммаДокумента, 0)) КАК СуммаЗаказов
ПОМЕСТИТЬ ВТ_КоличествоИСуммаЗаказов
ИЗ
Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
И ЗаказКлиента.Проведен = ИСТИНА
И ЗаказКлиента.ДополнительныеРеквизиты.Значение = &Знач
СГРУППИРОВАТЬ ПО
ЗаказКлиента.Менеджер
;
13 — 23.10.17 — 08:24
(12)Тебе можно, но 1С будет ругаться.
14 — 23.10.17 — 08:24
(12) попробуй, может и можно
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) КАК ЕщёВРаботе
ИЗ
ВТ_ИтогПоКоличествуЗаказов КАК ВТ_ИтогПоКоличествуЗаказов,
ВТ_КоличествоИСуммаЗаказов КАК ВТ_КоличествоИСуммаЗаказов
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОтгруженныеЗаказы КАК ВТ_ОтгруженныеЗаказы
ПО ВТ_КоличествоИСуммаЗаказов.Менеджер = ВТ_ОтгруженныеЗаказы.ЗаказМенеджер
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗаказыЕщёВРаботе КАК ВТ_ЗаказыЕщёВРаботе
ПО ВТ_КоличествоИСуммаЗаказов.Менеджер = ВТ_ЗаказыЕщёВРаботе.ЗаказМенеджер
16 — 23.10.17 — 08:36
(14)Ну и как? Что ощущаешь после провалившейся акции милосердия?))
17 — 23.10.17 — 08:37
Как у вас дела? Получилось донести до ТС мысли?
18 — 23.10.17 — 08:39
(16) ну вот запрос итоговый в (15) я сделал как подсказывали, он нормальный?
19 — 23.10.17 — 08:39
(16) Подскажите пожалуйста!
20 — 23.10.17 — 08:40
(18)Нет, ты сделал НЕ как подсказывали. Помнишь детскую игру «найди три отличия»? Сиди, сверяй.
21 — 23.10.17 — 08:41
(17)У него переполнение стека, то и дело всё выплескивается.
22 — 23.10.17 — 08:42
(20) вы про то что не хватает этого?
И ЗаказКлиентаДополнительныеРеквизиты.Свойство = &Свойство
это у меня на форме, и там только нужные значения уже, то есть я считал что = &Знач достаточно!
23 — 23.10.17 — 08:44
(21) И смех, и грех (С)
24 — 23.10.17 — 08:44
(20) Подскажите что именно не так в запросе?
25 — 23.10.17 — 08:45
(24) всё норм. не парься
falselight
26 — 23.10.17 — 08:47
(25) Спасибо большое за поддержку! Пойду вставлять в отчет.
Дополнительные реквизиты объектов с помощью плана видов характеристик
Достаточно часто возникает необходимость в добавлении объектам дополнительных реквизитов (характеристик). При этом каждый раз вносить для этого изменения в конфигурацию и проводить реструктуризацию базы данных не хочется.
В этой статье я расскажу о том, как реализовать такую возможность с помощью плана видов характеристик и регистра сведений и поделюсь парой приёмов использования этих реквизитов в отчётах и списках.
Быстрый переход
- Изменения в конфигурации
- Использование дополнительных реквизитов в отчётах и списках
- Вариант №1
- Вариант №2
Изменения в конфигурации
Разработку конфигурации будем вести на базе платформе 1С: Предприятие 8.2 с установленным свойством “Основной режим запуска” – “Управляемое приложение”. В качестве основы для разработки подойдет любая демо-конфигурация. Добавим новый план видов характеристик “Виды характеристик”. На закладке “Основные” плана видов характеристик в поле “Тип значения характеристик” выберем необходимые типы.
В качестве одного из возможных типов значений характеристик выберем предварительно добавленный в конфигурацию справочник “Значения характеристик”, подчиненный плану видов характеристик “Виды характеристик”. Его же выберем в поле “Дополнительные значения характеристик”. Это позволит добавлять характеристики с произвольными ссылочными значениями (например, цвет или размер).
Создадим регистр сведений “Характеристики” с измерениями “Объект”, “Вид характеристики” и ресурсом “Значение”. Измерение “Объект” должно включать в себя все типы объектов для которых необходимо использовать дополнительные реквизиты. В нашем случае это будет справочник “Контрагенты”, В свойствах измерения “Объект” должны быть установлены флаги “Ведущее”, “Основной отбор” и “Запрет незаполненных”.
Это обеспечит связь объекта с записями регистра сведений. В форме элемента справочника “Контрагенты” переход к редактированию характеристик будет возможен с помощью соответствующего пункта меню “Перейти” в левой части формы.
Измерению “Вид характеристики” необходимо назначить тип “ПланВидовХарактеристикСсылка.ВидыХарактеристик”, а ресурсу “Значение” – “Характеристика.ВидыХарактеристик”.
Для обеспечения взаимосвязи значений ресурса “Значение” со значениями измерения “ВидХарактеристик” регистра “Характеристики” необходимо чтобы в свойстве “Связи параметров выбора” ресурса “Значение” было указано “Отбор.Владелец(ВидХарактеристики)”, а в свойстве “Связь по типу” – “ВидХарактеристики”
Теперь всё готово для того чтобы мы могли вводить в базу данных дополнительные реквизиты справочника “Контрагенты”.
Попробуем добавить дополнительный реквизит “Адрес”
Использование дополнительных реквизитов в отчётах и списках
После того как все необходимые изменения в конфигурации выполнены возникает вопрос о том как использовать дополнительные реквизиты для вывода и фильтрации данных в отчётах и списках.
Вариант №1
Начнём с использования характеристик в отчёте, разработанном с использованием системы компоновки данных. За основу возьмём отчёт “Ведомость взаиморасчетов”. Добавим в конфигурацию копию этого отчёта и назовём его “Ведомость взаиморасчетов (с характеристиками)”.
Оригинал отчёта нам понадобится для демонстрации второго варианта использования характеристик.
Итак, откроем набор данных “Взаиморасчеты” схемы компоновки данных нашего отчета в конструкторе запросов и перейдем на закладку “Характеристики”.
- В таблицу на вкладке “Характеристики” добавим строку.
- В поле “Тип” выберем “СправочникСсылка.Контрагенты” (это объект для которого в отчёте необходимо использовать дополнительные характеристики).
- В поле “Источник видов” выберем вариант “Запрос” (хотя в нашем случае можно ограничиться и вариантом “Таблица”).
- В колонку “Виды характеристик” внесём текст запроса, которым будут выбираться виды характеристик, используемые для справочника “Контрагенты”.
Текст запроса обязательно должен содержать три поля – ссылка на вид характеристики, наименование характеристики и тип значения характеристики. Наименования этих полей выбираются в колонках “Поле ключа”, “Поле имени” и “Поле типа значения” таблицы на закладке “Характеристики”.
- Для визуального выделения дополнительных реквизитов объекта в запросе по видам характеристик к наименованиям добавлен текст “(доп. реквизит)”.
- В колонке “Источник значений” на вкладке “Характеристики” выберем вариант “Таблица”.
- В колонке “Значения характеристик” выберем “РегистрСведений.Характеристики”,
- в колонке “Поле объекта” – наименование измерения регистра “Объект”,
- в колонке “Поле вида” – наименование измерения “ВидХарактеристики”,
- в колонке “Поле значения” – наименование ресурса “Значение”.
В тексте запроса схемы компоновки результат добавления характеристик выглядит следующим образом (в обычных запросах применение таких конструкций невозможно):
{ХАРАКТЕРИСТИКИ
ТИП(Справочник.Контрагенты)
ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
ВидыХарактеристик.Ссылка,
ВидыХарактеристик.Наименование + » (доп. реквизит)» КАК Наименование,
ВидыХарактеристик.ТипЗначения
ИЗ
ПланВидовХарактеристик.ВидыХарактеристик КАК ВидыХарактеристик)
ПОЛЕКЛЮЧА Ссылка
ПОЛЕИМЕНИ Наименование
ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.Характеристики
ПОЛЕОБЪЕКТА Объект
ПОЛЕВИДА ВидХарактеристики
ПОЛЕЗНАЧЕНИЯ Значение }
Проверим работу отчёта. Для этого откроем отчёт “Ведомость взаиморасчетов (с характеристиками)”. Перейдем в пункт меню “Все действия -> Изменить вариант”. В окне настроек перейдём на закладку “Отбор” и добавим отбора по дополнительному реквизиту контрагента “Адрес”
Вариант №2
Рассмотрим более универсальный вариант работы с характеристикам объектов, благодаря которому характеристики возможно будет использовать в любых отчетах, содержащих объект-владелец характеристик, а также устанавливать отборы по значению этих характеристик в формах списков.
Перейдём на закладку “Данные” справочника “Контрагенты” и нажмём кнопку “Характеристики”.
- В открывшемся окне “Дополнительных характеристик объекта метаданных” добавим строку.
- В колонке “Виды характеристик” выберем “ПланВидовХарактеристик.ВидыХарактеристик”, в колонке “Поле ключа” – “Ссылка”.
- В колонке “Значения характеристик” выберем “РегистрСведений.Характеристики”, в колонке “Поле объекта” – “Объект”,
- в колонке “Поле вида” – “ВидХарактеристики”, в колонке “Поле значения” – “Значение”.
Сохраним конфигурацию и попробуем воспользоваться дополнительными характеристиками справочника “Контрагенты” в форме списка (в отчёте “Ведомость взаиморасчетов” использование дополнительных реквизитов будет выглядеть аналогичному тому как это было описано в Варианте №1, с той лишь разницей, что наименованию вида характеристики не будет добавляться текст “(доп. реквизит)”).
Откроем список справочника “Контрагенты”, перейдем в пункт меню “Все действия -> Настройка списка” и установим отбор по дополнительному реквизиту “Адрес”.
Стоит отметить, что при использовании Варианта №1 в отчётах с использованием СКД отключается приведенный механизм платформы и используется описанный пользователем.
Статья найдена на просторах интернета.
Делать деньги без рекламы может только монетный двор.
Главная страница » Вопросы пользователей » Вопросы 1С Бухгалтерия » Можно ли установить отбор по двум Доп. реквизитам в журнале документов в 1С
Вопрос задал
Наталья М. (Саратов, Саратовская область)
Ответственный за ответ:
Шаврова Ирина (★9.90/10)
Можно поставить одновременно два условия? Подписан и Подпись УПД (доп.реквизит).
Обсуждение (30)
-
Приложение
Здравствуйте!
Подскажите, пожалуйста, я правильно поняла, что проблема именно в том, что вам не вывести в отбор дополнительный реквизит? Что вы его не видите в списке реквизитов при настройке списка и поэтому не можете вывести условие Подпись УПД … в Шапку для отбора?Если так, то я вам постараюсь помочь.
Я покажу в ответе вывод дополнительного реквизита/сведения в условия Отбора на двух примерах:— при добавлении дополнительного сведения в счф вданный (вы пишите про дополнительный реквизит к счф, но в типовой форме настройки объектов для дополнительных реквизитов нет возможности добавить к счф выданному дополнительный реквизит, только дополнительное сведение. Если вы добавили все-таки дополнительный реквизит (судя высланному по скрину это так), то, скорее всего, у вас доработанная программа).
— при добавлении дополнительного реквизита на примере Ведомости в банк (там типовая настройка позволяет добавить дополнительный реквизит).
Первый вариант для счф:
В разделе Администрирование — Обшие настройки — Дополнительные реквизиты и сведения переходим на ссылку Дополнительные сведения и добавляем данные Подпись УПД (Реализация (акты, накладные, УПД) , Булево. -
В списке сф выданных установка дополнительных сведений происходит по специальной кнопке, как показано на скрине.
После выставления дополнительного сведения в счф отрываем настройку списка формы по кн. Еще — Настроить список — вкладка Отбор.
Добавляем новое условие по дополнительному сведению: спускаемся на реквизит Ссылка, раскрываем по «плюсику» слева его вложенность и там обязательно будет нужное нам поле. Выбираем его, сохраняем настройку.В Шапке будут отражены все установленные нами условия: типовой реквизит счф выданной «Проведен» и дополнительное сведение «Подпись УПД…»
-
Приложение
Устанавливая флаги в указанных отборах, мы добиваемся получения нужной информации в нужном нам разрезе. В данном случае условия работают по схеме «И», т.е, например, при установке флага «Проведен» и флага «Подпись УПД…» отбираются все проведенные данные с подписью УПД. Хотя есть возможность настраивать более сложные схемы отборов, используя группировки условий по группам «ИЛИ», «И», «НЕ», используя кн. «Сгруппировать условия».
В моем примере оба условия «Проведен» (Нет) и «Подпись УПД…» (Да) отработали как показано на скрине.
-
Это настройка для списков счф выданной типовой конфигурации.
Второй вариант для дополнитильного РЕКВИЗИТА, например, для документа Ведомость в банк.
Добавляем дополнительный реквизит для указанного документа: он появляется в форме ведомости — именно там мы с ним работаем.
После этого открываем настройку списка по кн. ЕЩЕ — Настроить список, спускаемся к реквизиту Ссылка, раскрываем «плюсик» слева и находим наш новый реквизит «Дополнительный реквизит».
Переносим его в настройку Отбора и используем в работе.
Подробно по шагам показано на скринах.
Насколько я понимаю — это ваш случай, в Шапку условие отбора по вашему дополнительному реквизиту вы перенесете, раскрыв данные Ссылки.
-
Программа типовая. Возможно я добавила дополнительные сведения, а не реквизит.
У меня не получается сделать отбор по «Оригинал подписан», а потом еще одно условие добавить «Подпись УПД=ДА» -
Если отбор стоит только по Подписан, то работает. Если установить еще и Подпись УПД, то все пусто.
-
Добрый день, тогда соберите все скрины в один файл и прикрепите к ответу: все файлы от вас видит только куратор, поэтому пришлите все максимально подробно.
В файле укажите место обоих доп. реквизитов или сведений, где создали в программе (как сделала в ответе я). И как создаёте условия в настройке списка.
Прямо по шагам и уточните, в чем проблема?
Я очень подробно описала вывод условий и работу с ними для случаев как с доп. реквизитом, так и для доп. сведения. И как выбрать условие. Поэтому, не видя вашей базы, не могу понять, почему у вас не получается вывести в Шапку условия для использования.Пришлите в необходимую информацию по реквизитам или сведениям, а также как пытаетесь использовать их в отборе, чтобы полностью воспроизвести ситуацию.
-
-
Если поставить отбор Подпись УПД=ДА, тоже работает.
-
В шапку мне нет необходимости выводить, но я вывела. У меня не срабатывает сам ДВОЙНОЙ отбор по типу НЕТ в реквизите Подпись УПД.
-
Спасибо за файлы, теперь ещё два главных скрина: как созданы и где реквизиты Подписан и Подпись УПД.
-
Важно видеть создание данных, что не выводятся: какой тип задан при создании, как это выглядит при раскрытии карточки этого Подпись УПД и Подпись тоже желательно видеть, чтобы понимать их взаимосвязь.
-
И ещё сделайте скрин, где есть хотя бы один вариант с установленным значением Да для «Подпись УПД».
Если везде «Нет» то на некоторых платформах может не работать отбор, поскольку нет разных данных для него.
Но нужно всё-таки для начала посмотреть карточку слздания используемых данных. -
Подписан — это стандартный механизм для галочек. Подпись УПД — доп. сведения по умолчанию проставляется — НЕТ. Подпись УПД создавала если на документе есть подпись получателя, но нет ни печати, ни доверенности. Соответственно проставляю доп.сведения, но не ставлю галочку, что документ подписан.
-
Не вижу ошибок в создании доп. сведения. Поэтому уберите группировку в настройке отбора и выведите:
1. отбор только для Подпись УПД (проверьте для Да и Нет)
2. Добавьте условие Подпись. Без группировки! Это и так работает по схеме «И». Проверьте работу в различных вариантах.Удалите все настройки отбора перед этим, что есть сейчас: помимо схемы «И» у вас дважды использовано «Подпись».
Если не получится проверьте работает ли отбор из списка по командке контексного меню отобрать по значению: сначала по одному реквизиту, потом по второму.
Если там все ок, то попробуйте условие для Подпись УПЛ «Не» Да, возможно, ошибка в воспринятии программой значения Нет для данного реквизита — это уже смотреть только по тестированию базы.
Пока пробуем все вышеуказанное. -
Еще один момент давайте отработаем: проставьте принудительно в доп. сведение «Подпись УПД» в нескольких случаях «Нет» и сохраните. Не по умолчанию — сами. И сделайте отбор. Возможно, без ручного выбора что-то возвращается типа «Неопределено» на самом деле, поэтому нужно исключить и этот случай. Если все получится, то, чтобы не перебивать Нет — будете использовать отбор по «Не» Да.
Хотя в моих примерах все отработало корректно по доп. сведению Подпись УПД.
Я бы вам в любои случае рекомендовала провести тестирование и исправление базы данных, возможно, есть внутренние ошибки.
-
Да, вы были правы. Не срабатывает отбор по «НЕТ».
-
Даже принудительно поставила, все равно не срабатывает.
-
Приложение
Принудительно НЕТ ставили через кнопку в списке документов?
По идее, должно быть все хорошо и при автоматической установке НЕТ по умолчанию, но, похоже, что возвращается неопределено там. И тогда непонятно, почему не отрабатывает Не равно ДА, ведь в этом случае должны попасть значения любые отличные от ДА.
Хотя, возможно, при отборе все равно анализируется не все, а только два значения, заложенных в типе Булево: ДА и НЕТ, тогда ситуация более-менее понятна.
-
-
Не равно = Да, тоже не срабатывает.((
-
Тогда что-то с данными Подпись УПД по значению НЕТ.
Попробуйте создать новое доп. сведение Подпись УПД РТУ, например, в пару Подпись УПД и попробуйте взять в отбор его.
У меня отбор по созданному доп. сведению Подпись УПД (скрин приводила выше в ответах) нормально отрабатывает на НЕТ и ДА, поэтому есть вероятность довольно высокая, что что-то нехорошо с его данными — это может показать тестирование и исправление базы, которая ловит внутренние ошибки. -
Приложение
Еще однин момент, посмотрела сейчас по коду, программа реагирует еще на данные ЗАПОЛНЕНО (=ДА), НЕ ЗАПОЛНЕНО (=НЕТ).
Попробуйте по этим условиям выставить. Поменяйте принудительно где-нибудь на НЕТ, кн. ЕЩЕ — Обновить (обновляется список) и посмотрите результат.Это должно сработать, это более распространенное условие, которое работает для всех типов: Булево, Строка, объекты.
-
Новое доп.сведения тоже не срабатывает. А Ваше по отбору «НЕТ» я не увидела. У вас правда срабатывает?
-
-
До этого пробовала, не получалось.
-
Вот смотрите, прилагаю скрины — у меня все работает в тестовой базе (3.0.103.12)
-
Видно по номерам СФ, что не пересекаются отобранные данные. В форму списка я не выводила доп. сведение, работаю только в Шапке с условиями.
-
Спасибо! Можно закрывать.
-
Рада была помочь! Обращайтесь, пожалуйста.
-
-
Приложение
Вот вывела доп. сведение в форму списка, прилагаю скрины. Это условие точно должно работать. Это действует на все типы объектов.
Если нет — проверяйте базу на Тестирование и исправление. сначала в копии.
Комментарии закрыты
По мере использования 1С, у многих предприятий возникает потребность создать для какого-либо объекта информационной базы реквизит, позволяющий хранить дополнительную информацию, например, добавление дополнительного специфического, характерного для вашей продукции описания номенклатуры в текстовом виде или же в виде числовых характеристик. Для удовлетворения данной потребности есть два пути либо заказать доработку конфигурации у фирмы 1С:Франчайзи, либо воспользоваться механизмом добавления дополнительных реквизитов.
В данной статье будет описан второй вариант. Использование механизма дополнительных реквизитов позволяет добавить реквизит в режиме 1С Предприятия, не прибегая к помощи «конфигуратора». Если ваша цель ограничена лишь добавлением дополнительной аналитики объекта и последующего использования этой аналитики в типовых отчетах (например, использование дополнительного реквизита в качестве условия отбора или простого вывода в табличный документ), то не понадобится даже помощь программиста. Однако стоит сразу оговориться, что более сложные задачи, связанные с дополнительным реквизитом, например, вывод в печатную форму, все же потребует изменений в программном коде.
Дополнительные реквизиты можно найти на форме объекта – Ещё – Изменить состав дополнительных реквизитов или же через НСИАдминистрирование – Общие настройки, как показано на рисунке 1. На данном рисунке видно, что сначала необходимо проставить флажок для включения интересующей нас опции. Так же видно, что помимо реквизитов, есть и дополнительные сведения. С точки зрения пользователя они отличаются тем, что доп. реквизиты вынесены на форму, а сведения вызываются отдельной формой специальной командой из кнопки Ещё на форме объекта.
Рисунок 1 – Настройка дополнительных реквизитов и сведений через Общие настройки
На рисунке 2 можно увидеть окно, в котором можно увидеть список доп. реквизитов, а также возможность создать их.
Рисунок 2 – Окно «Дополнительные реквизиты»
На рисунке 3 изображено окно непосредственного создания нового реквизита.
Пользователю доступны следующие настройки:
1. Наименование – Имя реквизита, которое видит пользователь
2. Для разработчиков, Имя – Уникальное имя реквизита, по которому разработчик сможет получатьизменять значения, модифицировать элемент формы связанный с доп. реквизитом.
3. Тип значения:
- Строка – доступна настройка длины строки, настройки элемента ввода элемента (однострочноемногострочное поле ввода)
- Число – доступны настройки длины числа, точности, флажок неотрицательное, представления нуля и отрицательных чисел.
- Булево – Просто флажок.
- Дата – Есть возможность выбора формата даты, состава даты (дата, время, дата и время), а также представления пустой даты
- Составной тип данных – Пользователь сам выбирает тип данных при вводе.
- Дополнительные значения – При выборе данного типа значения задаются на вкладке «значения», рисунок 3.
- Пользователь – значение из справочника пользователи.
4. Настройки видимости, доступности и обязательности заполнения элемента формы.
Рисунок 3 – Окно создания дополнительного реквизита
Добавим дополнительные реквизиты для справочника Организации, рисунок 4, 5. Дополнительные реквизиты, в зависимости от структуры элемента формы, добавляются на закладку «Дополнительно» или в подраздел «Дополнительные реквизиты» в порядке создания реквизитов.
Рисунок 4 – Добавленные реквизиты
Рисунок 5 – Элементы формы дополнительных реквизитов
Теперь попробуем применить новые элементы справочника Организации на примере отчета «Универсальный отчет» и выведем их на экран. Как видно из рисунка 6, к новым реквизитам (у данных реквизитов после названия в скобках указан справочник, которому они принадлежат) можно обратиться «через точку».
Рисунок 6 – Использование новых реквизитов при настройке варианта отчета
Рисунок 7 – Вывод дополнительных реквизитов на экран с помощью «универсального отчета»
В итоге на рисунке 7 мы видим, что возможно добавление новой аналитики в отчет, не прибегая к помощи разработчиков используя механизм дополнительных реквизитов.
Нужна помощь с 1С?
Мы можем взять на себя ваш бухгалтерский учет. Вам не нужно будет думать о расчете налогов и сдаче отчетности. Мы будем вести финансовую ответственность за ошибки. Мы — команда профессионалов, а не один бухгалтер, мы не заболеем, не пропадем и не уйдем внезапно в отпуск. Сосредоточьтесь на управлении. А учет и отчетность мы возьмем на себя. Чтобы получить бесплатную консультацию по автоматизации своего бизнеса Вы можете пообщаться с нашими специалистами в офисе компании или позвонив по телефону: 8-800-707-01-02.
Сопровождение 1С
Наш специалист
Специалист отдела разработки
Чем мы можем быть вам полезны?
Доброго дня, коллеги!
Тренер курса Профессиональная разработка отчетов в 1С 8.3 на СКД на протяжении уже нескольких лет ежедневно отвечает на многочисленные и разнообразные вопросы слушателей по теме СКД. Неудивительно, что он с полуслова понимает суть заданных вопросов, формулировки которых бывают теми еще задачками!
Вопрос:
Добрый день! Вопрос по отборам в СКД. Предположим, у нас следующая задача. Есть УТ11, Справочник Номенклатура. Дополнительные реквизиты уже “связаны” в настройках справочника. Есть дополнительный реквизит, например “Доп Первый“. Выводим в табличный документ список справочника Номенклатура с отбором по доп.реквизиту. Какой ключ указать в Отборе? На ключ “Ссылка.[Доп Первый]” возникает ошибка. На ключ, указанный как значение в доп. реквизите для технического специалиста – не отбирает, судя по всему не находит такой ключ. Я так понимаю, что это из-за того, что доп.реквизит для справочника Номенклатура создан в пользовательском режиме. Но ведь на какой-то стадии формирования отчета на СКД он его видит. Если открою просто отчет в режиме пользователя, то доп.реквизит в списке присутствует, его можно включить в отборы. Выглядит он именно как “Ссылка.[Доп Первый]“. Есть ли какие особенности отбора по доп.реквизитам?
Ответ:
Добрый день! 1С: УТ 11 – типовая конфигурация, поэтому в ней можно подсмотреть, как решается подобная задача. В курсе рассматривается похожий пример из 1С: УТ 11. В уроке рассматривается прием, как передавать заполненные пользовательские настройки в открываемую форму отчета. А в пользовательских настройках размещаем отбор по доп.реквизиту.
Пример:
В демобазе 1С:УТ 11 есть доп.реквизит “Расчетная масса (кг/км)”:
Доработаем программный код из типовой 1C:УТ, чтобы открывалась ведомость по товарам на складах для тех номенклатур, у которых Расчетная масса (кг/км) = 82:
&НаКлиенте Процедура ОткрытьВедомостьПоТоварамНаСкладах(Команда) Форма = ПолучитьФорму("Отчет.ВедомостьПоТоварамНаСкладах.Форма"); КомпоновщикНастроекКомпоновкиДанных = Форма.Отчет.КомпоновщикНастроек; ПользовательскиеНастройки = КомпоновщикНастроекКомпоновкиДанных.ПользовательскиеНастройки; НастройкаНоменклатура = Новый Структура; НастройкаНоменклатура.Вставить("ВидСравнения",ВидСравненияКомпоновкиДанных.Равно); НастройкаНоменклатура.Вставить("ПравоеЗначение", 82); НастройкаНоменклатура.Вставить("Использование", Истина); УстановитьПользовательскуюНастройку(КомпоновщикНастроекКомпоновкиДанных, ПользовательскиеНастройки, "Номенклатура.[Расчетная масса (кг/км)]", НастройкаНоменклатура); ПараметрыФормы = Новый Структура("СформироватьПриОткрытии, ПользовательскиеНастройки", Истина, ПользовательскиеНастройки); ОткрытьФорму("Отчет.ВедомостьПоТоварамНаСкладах.Форма", ПараметрыФормы); КонецПроцедуры &НаКлиенте Процедура УстановитьПользовательскуюНастройку(КомпоновщикНастроекКомпоновкиДанных, ПользовательскиеНастройки, ИмяНастройки, Настройка) ПолеКомпоновки = Новый ПолеКомпоновкиДанных(ИмяНастройки); ЭлементОтбора = Неопределено; Для Каждого Элемент Из КомпоновщикНастроекКомпоновкиДанных.Настройки.Отбор.Элементы Цикл Если Элемент.ЛевоеЗначение = ПолеКомпоновки Тогда ЭлементОтбора = Элемент; Прервать; КонецЕсли; КонецЦикла; Если ЭлементОтбора = Неопределено Тогда Для каждого Элемент Из ПользовательскиеНастройки.Элементы Цикл Если ТипЗнч(Элемент) = Тип("ОтборКомпоновкиДанных") Тогда ЭлементОтбора = Элемент.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновки; ЭлементОтбора.ВидСравнения = Настройка.ВидСравнения; ЭлементОтбора.Использование = Настройка.Использование; ЭлементОтбора.ПравоеЗначение = Настройка.ПравоеЗначение; КонецЕсли; КонецЦикла; Иначе Элемент = ПользовательскиеНастройки.Элементы.Найти(ЭлементОтбора.ИдентификаторПользовательскойНастройки); Элемент.ВидСравнения = Настройка.ВидСравнения; Элемент.ПравоеЗначение = Настройка.ПравоеЗначение; Элемент.Использование = Настройка.Использование; КонецЕсли; КонецПроцедуры
Сформируется вот такой отчет:
Вопрос слушателя:
Спасибо за ответ Вот только на новом, не типовом отчете УТ, отбор не срабатывает. Как я думаю, надо выполнить еще какие-то настройки компоновки. Но какие, понять не могу.
Ответ тренера:
Обратите внимание, что в типовом отчете ВедомостьПоТоварамНаСкладах отбор вынесен в пользовательские настройки:
Не только отбор по конкретному полю (Склад или Номенклатура), а отбор отчета в целом добавлен в пользовательские настройки. Именно эта особенность используется в программном коде – выполняется проверка наличия отбора в пользовательских настройках:
Если ТипЗнч(Элемент) = Тип("ОтборКомпоновкиДанных") Тогда
Добавить отбор в пользовательские настройки можно следующим образом:
Попробуйте такую настройку выполнить для своего отчета.