От V7 к V8. Обсуждение концепций структур данных. Иерархия кортежей.

Безусловно, поддержка иерархии элементов справочников в V7 относится к одному из ее основных достоинств. Особенно в свете того, что запросы к регистрам позволяют получать итоги не только по группировкам запроса, но и по группам элементов справочников...

Безусловно, поддержка иерархии элементов справочников в V7 относится к одному из ее основных достоинств. Особенно в свете того, что запросы к регистрам позволяют получать итоги не только по группировкам запроса, но и по группам элементов справочников (здесь и далее обращаем внимание на отличие понятий групп/группирования и группировка).

Как органично включить иерархию справочников в платформу? Возможно ли это без нарушения основополагающего принципа, что все агрегатные объекты являются наследниками объекта ТД? Или все же иерархия и таблицы – две вещи несовместные?

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

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

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

Теперь о том, как проецировать группы кортежей в ТД. Предположим, что имеем ТД, где значениями одной из колонок являются ссылки на кортежи какого-либо типа. В эту ТД необходимо добавить учет определенной иерархии данных кортежей. В V7, как известно, элементы-группы в таблице значений помещаются в той же колонке, что и обычные элементы справочника. Является ли данное решение приемлемым? На наш взгляд, нет.

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

Алгоритм формирования такой колонки будет следующим:

  • На первом шаге исходная ТД группируется "вверх" по реквизиту элементов "Родитель". Это обычная группировка, при определении которой могут быть указаны также колонки с какими-либо итогами.
  • На втором шаге перебираются кортежи получившейся таблицы-владельца, и для каждого элемента-группы в таблицу добавляются кортежи со значениями всех его родителей (значения итоговых колонок копируются).
  • На третьем шаге производится свертка кортежей-групп и их упорядочивание обычным последовательным обходом (разворотом) всех ветвей дерева, начиная с верхнего.
Итак, все кортежи ТД с обычными элементами становятся подчиненными по отношению ТД с группами. Таким образом, перебирая группы в таблице-владельце, в подчиненной таблице получаем элементы, принадлежащие только данной группе. Отметим, что при данном способе представления иерархии в ТД (а он представляется нам наиболее логичным) обход элементов иерархии отличается от аналогичного обхода групп и элементов объекта Запрос в V7.

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

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

Поясним сказанное на примере. Пусть мы имеем некий набор элементов класса ABCD с определенной иерархией Hier1 и некую ТД с итогами для элементов ABCD:

ABCD
Элемент Родитель
a p
b p
c r
d s
Hier1
Элемент Родитель
s -
p -
r s
ТД2
Элемент Родитель
a 1
b 3
c 2
d 3
Элементы ABCD с иерархией и таблица данных.

Сгруппируем последовательно ТД2 по группам Hier1 элементов ABCD с учетом итогов по NUM:

Шаг 1
Hier1 NUM
p 4
r 2
s 3
Шаг 2
Hier1 NUM
p 4
r 2
s 3
s 2
Шаг 3
Hier1 NUM
p 4
s 5
r 2
Последовательное добавление "группировки по группам" ТД2.

Исходная ТД2 получает идентификатор ТД2.Hier1 (или подобный) и становится подчиненной ТД2. Отметим, что для элементов-групп итоги по суммируемым колонкам подчиненных им таблиц могут не совпадать (быть меньше) с итогами, записанными в таблице-владельце (элемент s в ТД2).

Таким образом, мы кратко обсудили "разумные" подходы к организации поддержки иерархий кортежей в платформе, рассмотрели взаимодействие понятий Иерархия и Группировка ТД. Следующий интересный момент в V7 – это поддержка динамичности кортежей, хранение истории атрибутов справочников, состояния регистров.

Попытаемся нащупать общий подход к проблемам на основе понятия Функциональная зависимость (ФЗ).

Резюме.

  • Поддержка групп кортежей должна осуществляться в отдельной ТД.
  • Допускается поддержка нескольких иерархий элементов одного и того же типа.
  • Операция группировки ТД по группам элементов выполняется в три этапа. Элементы-группы и просто элементы не смешиваются в одной колонке.
  • Нет причин, препятствующих организации поддержки иерархий документов.

Начать дискуссию

Практика Конституционного Суда по налогам за второе полугодие 2023

Рассматриваются ключевые решения КС по налоговым вопросам.

Заявлений в колледж через Госуслуги уже больше, чем за весь прошлый год: самые популярные места и специальности

Более 600 тыс. заявлений в колледж подали абитуриенты с помощью Госуслуг. Это уже на 100 тыс. больше, чем за весь прошлый год.

Общество

Принят закон, упрощающий проведение общих собраний СНТ

Совет Федерации одобрил разработанный при участии Росреестра закон, по которому дачникам, садоводам и огородникам станет проще проводить общие собрания членов СНТ и ОНТ.

Курсы повышения
квалификации

18
Официальное удостоверение с занесением в госреестр Рособрнадзора

Директора–руководили в разные периоды, в их действиях нет группы лиц по предварительному сговору

Суд первой инстанции осудил двух руководителей налогоплательщика, управлявших им в разные периоды, по части 2 ст. 199 УК, в том числе, по пункту «а», за уклонение от уплаты налогов по предварительному сговору группой лиц.

Известны итоги Статистического диктанта-2024

В этом году число написавших статистический диктант увеличилось вдвое в сравнении с 2023 годом и составило 33 933 человек.

Число МСП в гостиничном бизнесе на Кавказе выросло вдвое за 3 года

Гостиничный бизнес демонстрирует наибольший рост среди всех сфер, в которых работают малые и средние предприятия (МСП) Северо-Кавказского федерального округа (СКФО).

Опытом делятся эксперты-практики, без воды
Общество

Росреестр разработал методическое пособие по социальной догазификации

Для садоводов и огородников Росреестр разработал методические рекомендации по бесплатной догазификации СНТ.

Ужесточат контроль за содержанием пестицидов в готовой продукции

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

Инвестиции

Как застройщики дают ипотеку под 5,9%? Недвижка дорожает, конец дивидендного сезона, рост акций, облигации и другие новости. Воскресный инвестдайджест

Массовые льготные ипотеки под 8% всё, зато у застройщиков теперь можно взять под 5,9%! Ессссстессссна, есть нюанс. Зато это помогает толкать цены на квартиры снова вверх. Закончились обвалы акций и облигаций, ждём новую ключевую ставку, тыкаем палкой доллар. И ни слова про хомяка. Собрал самые интересные новости недели и упаковал их в этот пост. Го!

Как застройщики дают ипотеку под 5,9%? Недвижка дорожает, конец дивидендного сезона, рост акций, облигации и другие новости. Воскресный инвестдайджест

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

Попробуем сформулировать основные  рекомендации организационного (стратегического и тактического)  характера, соблюдение которых  поможет отбить как минимум 90% обвинений налоговиков в умышленном дроблении с целью незаконной оптимизации налогов.

Детские пособия

Почти 500 тысяч семей получили пособие при рождении ребенка

В течение шести месяцев с момента рождения ребенка у семей есть возможность подать заявление на единовременное пособие. Размер выплаты составляет больше 24 тысяч рублей.

Общество

Опубликован рейтинг регионов по органической продукции

Роскачество представило обновленный рейтинг субъектов РФ по количеству сертифицированных производителей органической продукции по итогам первого полугодия 2024 года.

Торговый сбор

Мастерская по ремонту телефонов не платит торговый сбор

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

Инвестиции

Элементарные 19%. Свежие облигации: элемент лизинг на размещении

Кто на рынке всех смелее? Можно даже не сомневаться — это лизинговые компании. За деньгами инвесторов снова идёт Элемент Лизинг, а в качестве козыря в рукаве — девятнадцатипроцентный купон. При нём также есть ежемесячный купон и амортизация. Выглядит вполне интересно, посмотрим, что внутри.

Элементарные 19%. Свежие облигации: элемент лизинг на размещении

В России растет число патентных поверенных

Квалификационные экзамены Роспатента успешно сдали 95 человек с начала 2024 года и 179 человек за 2023 год.

🍒 Зарегистрирован первый региональный бренд новых регионов РФ

Федеральная служба по интеллектуальной собственности (Роспатент) выдала первое свидетельство об исключительном праве на региональный бренд в новых регионах России. Им стало географическое указание «Мелитопольская черешня».

5
Земельный налог

Земельный налог начисляют по данным Росреестра. ФНС: к нему и претензии

Налоговая база по земельному налогу – это кадастровая стоимость, внесенная в ЕГРН. Она применяется с 1 января года, являющегося налоговым периодом.

Продление льгот, уплата взносов предпринимателем-пенсионером, налоговая помощь Трампа Байдену в обзоре

События дня. Налоговые события.

Обзоры для бухгалтера

Знакомство с экспертами Клерк.Консультаций: Надежда Камышева

Мы начинаем вести серию заметок о наших экспертах. Сегодня рассказываем о самом опытном эксперте — Надежде Камышевой, которая уже более 20 лет помогает бухгалтерам решать их рабочие вопросы.

Иллюстрация: Вера Ревина / Клерк

Интересные материалы

На 6 рублей в 6-НДФЛ могут быть отклонения. Богатым инвесторам обещают вернуть больше НДФЛ. 🙏«Ночной бухгалтер» № 1728

Не стоит волноваться, если при умножении дохода на ставку рассчитанный налог в 6-НДФЛ не сойдется с реальным. Чем больше сотрудников, тем больше может быть разбег.

На 6 рублей в 6-НДФЛ могут быть отклонения. Богатым инвесторам обещают вернуть больше НДФЛ. 🙏«Ночной бухгалтер» № 1728