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

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, и нам нужно вывести в отчет другую.

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

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

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

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

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

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

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

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

 

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

См. также

Связь настроек спецификации и настроек структуры заказа в ЕРП 2.5

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

Проблемы при создании ресурсной спецификации. Связь настроек спецификации и настроек структуры заказа в ЕРП 2.5.

06.05.2024    389    It-digit    1    

2

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

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

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

1 стартмани

11.04.2024    606    tango    0    

3

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

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

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

10 стартмани

11.04.2024    481    tango    5    

4

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

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

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

08.04.2024    840    tango    0    

2

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

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

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

1 стартмани

05.04.2024    687    tango    12    

2

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

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

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

07.02.2024    2849    YA_418728146    11    

48

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

8

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

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

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

28.12.2023    5224    mrXoxot    11    

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

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

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