Альтернативная иерархия справочника

30.08.22

Разработка - Механизмы типовых конфигураций

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

Скачать исходный код

Наименование Файл Версия Размер
Альтернативная иерархия справочника БСП, БП 3.0:
.erf 6,59Kb
1
.erf 6,59Kb 1 Скачать
Альтернативная иерархия справочника:
.cf 83,86Kb
1
.cf 83,86Kb 1 Скачать

Способ 1

Подходит для типовых конфигураций последних версий, в которых используется БСП (Библиотека стандартных подсистем). Преимущество способа в том, что не требуется доработка конфигурации. Для решения задачи используется подсистема "Свойства" (Дополнительные реквизиты и сведения). Продемонстрирую на примере конфигурации Бухгалтерия предприятия, редакция 3.0 (3.0.115.15). Использовалась версия платформы 1С:Предприятие 8.3 (8.3.17.1851).

 
 К примеру, справочник "Контрагенты" имеет следующую структуру:

 

 
 Отчет, в который выводится этот справочник с иерархией, будет иметь такую-же структуру:

 

 
 А нам нужна другая иерархия в отчете, к примеру такая:

 

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

Для реализации необходимо добавить для справочника "Контрагенты" дополнительный реквизит (или дополнительное свойство) с типом значения "Дополнительное значение (иерархия)". В качестве значений создать элементы нашей "Альтернативной" иерархии, и затем присвоить эти значения нужным элементам справочника контрагенты.

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

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

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

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

 

Нужно иметь в виду, что в выборку попадут только те контрагенты, у которых дополнительный реквизит заполнен. Что делать с остальными контрагентами? Возможны 2 варианта.

1. Заполнить значения для всех контрагентов, установить признак "Заполнять обязательно" в форме редактирования дополнительного реквизита. Тогда при добавлении нового контрагента (по крайне мере) в пользовательском режиме система будет контролировать заполнение реквизита.

2. Дописать запрос таким образом, чтобы контрагенты  с незаполненным значением реквизита попадали в одну из "Групп" альтернативной иерархии.

 
 Пример запроса, в который попадут все контрагенты:

 

Как связать получившуюся таблицу альтернативной иерархии с таблицей регистра в котором содержаться показатели для вывода в отчет? Очень просто: левым или внутренним соединением. Левым - в случае если нужно вывести всех контрагентов, даже без показателей. Внутренним - если в отчет должны попасть только те контрагенты, по которым есть показатели.

 
 Пример запроса, в котором происходит соединение альтернативной иерархии с таблицей регистра

 

 
 Дополнительная информация:

Пример отчета прилагается.

 

Способ 2

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

Решение: создаем новый справочник, в котором будет описана иерархия, назовём его например "АльтернативнаяИерархия". 

 
 Пример структуры нового справочника:

В справочник "Контрагенты" добавляем новый реквизит "АльтернативнаяИерархия" с типом значения "СправочникСсылка.АльтернативнаяИерархия". В качестве значений реквизита будут выступать ЭЛЕМЕНТЫ нижних уровней справочника "АльтернативнаяИерархия". 

Запрос в таком решении может быть довольно простым. Достаточно выбрать подходящую виртуальную таблицу регистра, выбрать поле контрагент, новый реквизит контрагента "АльтернативнаяИерархия" и необходимые ресурсы.

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

В настройках отчета первой группировкой будет наш новый реквизит "АльтернативнаяИерархия", второй - контрагент. Ну и про ресурсы нужно не забыть.

 
 Настройки отчета и выходная форма:

Пример отчета в составе простой конфигурации прилагается.

 

иерархия справочник Дополнительное значение реквизит НаборыДополнительныхРеквизитовИСведений ДополнительныеРеквизитыИСведения ЗначенияСвойствОбъектовИерархия ДополнительныеРеквизиты Контрагенты

См. также

Ценовая власть. Выносим из цикла схему СКД

Механизмы типовых конфигураций Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

Продолжение темы вынесения кусков повторно-используемого кода в запрос. В прошлый раз мы сделали это с вычислением пользовательских формул. Здесь замахнулись на формулы, задаваемые пользователем запросами.

1 стартмани

11.04.2024    630    tango    1    

3

Формула в реквизите. Приквелл к сериалу "Ценовая власть"

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Какому-либо элементу списка сопоставляется числовое значение, зависящее от других значений, причем эта зависимость изменяется от элемента к элементу. Так, в справочнике "Валюты" курс какой-либо валюты может быть задан формулой (или даже запросом) от значения другой валюты. А в справочнике "Виды цен" формула определяет расчет цены для товарной позиции, т.е. элементов справочника "Номенклатура", у которых в карточке указан этот вид цены. А в 1С:ERP, например, этот механизм используется в ресурсной спецификации.

10 стартмани

11.04.2024    494    tango    5    

4

Ценовая власть. Второй сезон

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Бесплатно (free)

В первом сезоне мы рассмотрели (с точки зрения программиста) внутренний механизм, помещающий цены в регистр "Цены". Из этого регистра цена попадает в исходящие УПД (в продажи). Но эта цена (в прайс-листе) дифференцирована (ценообразована) в разрезах свойств самой номенклатуры. Но стратегия ценообразования, ценовая власть - это в первую очередь о работе с ценами для клиента. И тут вступает в дело второй акт марлезонского, Скидки (наценки) и кешбек.

08.04.2024    857    tango    0    

2

Ценовая власть или Управление ценообразованием (УТ 11.5)

Ценообразование, анализ цен Механизмы типовых конфигураций Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Абонемент ($m)

Ценовая власть - это способность (возможность) компании изменять в некоторых пределах отпускную цену своего товара (услуг, продукции). Чем в более широких пределах вы можете играть в цену продажи, тем больше этой власти у вас. Если вы не можете управлять отпускной ценой, то это или не ваш бизнес, или не бизнес вовсе. Здесь в рубрике "База знаний аналитика и руководителя проекта" слово проект не ограничено "проектом в 1С". Посмотрим, что для этого есть в УТ 11.5.

1 стартмани

05.04.2024    714    tango    12    

2

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2916    YA_418728146    11    

49

Регистры накопления в 1С:КА2 и 1С:ERP для расчета НДФЛ, страховых взносов и взаиморасчетов с сотрудниками на январь 2024 года. Краткое описание

Зарплата Механизмы типовых конфигураций Программист Бухгалтер Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет НДФЛ Абонемент ($m)

Для расчета зарплаты и соответствующих налогов в конфигурациях 1С:КА2 и 1С:ERP используется 22 регистра накопления, 7 регистров сведений, 1 регистр расчета и бухгалтерские проводки. В таблице приведены названия этих регистров, указаны основные регистраторы и виды движений приход/расход. В описании приводится краткое функциональное назначение регистров в основных зарплатных процессах. Описание регистров родилось из черновиков при написании различных отчетов и обработок при эксплуатации 1С-овских конфигураций и исправлении ошибок по НДФЛ, взаиморасчетов с сотрудниками и прочих. Информация не претендует на полноценное описание работы регистров, скорее это дискуссионный материал. Но, возможно, кому-то пригодится и сократит время при подготовке отчетности за непростой (в плане учета зарплаты) 2023 год. А возможно, кто-то поделится своим опытом.

1 стартмани

10.01.2024    1411    8    2ncom    6    

8

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Стажер Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

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

28.12.2023    5259    mrXoxot    11    

104
Отзывы
1. MonteCriZto 114 14.12.23 08:20 Сейчас в теме
Делал раньше чуть проще
Добавлял в запрос поле текстового типа - "Тип отчета"
в самом запросе, его заполнял в зависимости от пакета..
Например: "1_Управленческие"
Однако, поступила заявка на отчет, с расшифровкой до Регистратора) и мой метод, начал давать сбои ).
Воспользовался вашим методом, все отлично работает - Спасибо!
з.ы.
Не совсем понял зачем вы по ГДЕ.. фильтруете
Я собрал все необходимые данные, выкинул в отдельный пакет (ГотОтчБезИерархии)
Затем левым соединением добавил в гот. отчет поля иерархии

ВЫБРАТЬ
	ГотОтчБезИерархии.Подразделения КАК Подразделения,
	ГотОтчБезИерархии.СтатьиЗатрат КАК СтатьиЗатрат,
	ГотОтчБезИерархии.Сумма КАК Сумма,
	ГотОтчБезИерархии.Регистратор КАК Регистратор,
	ПодразделенияОрганизацийДополнительныеРеквизиты.Значение КАК АльтернативнаяИерархия
ИЗ
	ГотОтчБезИерархии КАК ГотОтчБезИерархии
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций.ДополнительныеРеквизиты КАК ПодразделенияОрганизацийДополнительныеРеквизиты
		ПО ГотОтчБезИерархии.Подразделения = ПодразделенияОрганизацийДополнительныеРеквизиты.Ссылка
			И (ПодразделенияОрганизацийДополнительныеРеквизиты.Свойство.Наименование = "АльтернативнаяИерархия")
Показать
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. MonteCriZto 114 14.12.23 08:20 Сейчас в теме
Делал раньше чуть проще
Добавлял в запрос поле текстового типа - "Тип отчета"
в самом запросе, его заполнял в зависимости от пакета..
Например: "1_Управленческие"
Однако, поступила заявка на отчет, с расшифровкой до Регистратора) и мой метод, начал давать сбои ).
Воспользовался вашим методом, все отлично работает - Спасибо!
з.ы.
Не совсем понял зачем вы по ГДЕ.. фильтруете
Я собрал все необходимые данные, выкинул в отдельный пакет (ГотОтчБезИерархии)
Затем левым соединением добавил в гот. отчет поля иерархии

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