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

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 Конфигурации 1cv8 Бесплатно (free)

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

07.02.2024    2348    YA_418728146    11    

40

Регистры накопления в 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    1014    6    2ncom    3    

8

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

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

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

28.12.2023    4826    mrXoxot    11    

99

Ключи аналитик учета в ЕРП, КА, УТ

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

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

08.11.2023    7039    ids79    25    

74

Распределение по базе среднего в ЗИКГУ 3.1

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

Результат расчета начислений (отпуск, БЛ и т.д.) может распределятся по базе среднего заработка. У таких начислений на вкладке "Налоги, взносы, бухучет" стоит галка "По базе среднего заработка". Но бывают случаи, что данное распределение необходимо скорректировать.

1 стартмани

14.09.2023    445    2    Vlx    0    

1

Расширение типового механизма настройки заполнения бухгалтерской отчетности (на примере конфигурации 1С:ERP. Управление холдингом 3.1.8.15)

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

В статье приведен алгоритм доработок типового механизма настройки заполнения бухгалтерской отчетности на примере конфигурации 1С:ERP. Управление холдингом (3.1.8.15). Цель доработок - сделать процесс настроек более гибким и удобным для пользователей

11.09.2023    1926    ICL-Soft    3    

12

Разбор механизма "Настройки полей формы" в 1С:ERP. Управление холдингом

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

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

18.07.2023    2156    it_box    1    

7

Работа с контактной информацией. Часть 2

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

Во второй части статьи рассмотрим вопрос преобразования адреса из старого формата в новый. Рассмотрим реальные задачи, связанные с контактной информацией.

05.06.2023    6948    biimmap    4    

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

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

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