От 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 – это поддержка динамичности кортежей, хранение истории атрибутов справочников, состояния регистров.

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

Резюме.

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

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

Что будет с интернетом, мобильной связью, Почтой России, электронными услугами, ИТ: заявления Минцифры

Максут Шадаев перед утверждением на должность министра цифрового развития, связи и массовых коммуникаций РФ назвал основные направления работы и какие вызовы стоят перед Минцифры.

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

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

Новое приложение «Ситидрайва» удалили из App Store

Уже установленные приложения будут работать на iOS. Пользователям рекомендуют отключить функцию «Сгружать неиспользуемые».

Платись, платись большая и маленькая: независимо от размера зарплату нужно платить два раза в месяц! 💰«Ночной бухгалтер» № 1684

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

Иллюстрация: Вера Ревина/Клерк.ру
Лучшие спикеры, новый каждый день

Расценки на техобслуживание газового оборудования, возможно, будет устанавливать государство

Регионы предлагают ввести государственное регулирование стоимости услуг по техобслуживанию газового оборудования.

Обменники крипты: как выбрать подходящий

Сегодня купить и продать криптовалюту* в России можно несколькими способами: через криптовалютные биржи, P2P-сервисы, криптоматы и обменники, работающие онлайн и офлайн. Последний вариант позволяет проводить сделки анонимно – без отправки своих персональных данных и платежных реквизитов.

Обменники крипты: как выбрать подходящий

Можно ли выдать за раз маленькую зарплату, как оплачивать переработку в командировке, на ГПД положен стандартный вычет. 3 важных разъяснения для бухгалтеров по зарплате

Собрали полезные разъяснения Роструда и Минфина по расчетам с работниками.

Иллюстрация: Вера Ревина/Клерк.ру
Опытом делятся эксперты-практики, без воды

Приобретение лицом из недружественного государства доли (акций) в российской компании (ООО или АО) в 2024 году

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

Зарплата

Выделено финансирование на увеличенные выплаты педагогам

Правительство направит более 8 млрд рублей на увеличенные выплаты классным руководителям и кураторам.

IT-компании

Нидерландская компания Yandex сменит свое название до 31 июля

До 31 июля иностранная организация продаст остаток акций, перестанет использовать бренды российской компании «Яндекс» и сменит название.

Бесплатно с Налоговые проверки

Продажа авто учредителю по цене ниже рыночной: сколько доначислят налоговики

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

Продажа авто учредителю по цене ниже рыночной: сколько доначислят налоговики

ФАС рассказала, как, где и на что контролирует цены

Контроль ценообразования на социально значимых рынках остается для Федеральной антимонопольной службы приоритетной задачей.

В России нашли фейковый магазин приложений Play Market

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

Миникурсы, текстовые и видеоинструкции для бухгалтеров

⚡️ Итоги дня: искусственный интеллект защитит смартфон от кражи, в Петербурге будут следить за курильщиками, а в TikTok появятся часовые видео

Подготовили обзор главных событий дня — 17 мая 2024 года. Все самое интересное, что писали и обсуждали в сети, в одной подборке.

Малый бизнес получил 130 млрд рублей по программе «1764»

По льготной ставке 13,4% годовых финансирование привлекли представители МСП из сферы гостиничных услуг, обрабатывающих производств, сельского хозяйства, а также транспортные компании и склады.

С 2025 года социальный заказ будет работать во всех регионах

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

Модульбанк запустил оценку юридического риск-профиля клиентов

Модульбанк запустил новый сервис по оценке юридического риск-профиля бизнеса на базе направления Модульюрист. Сервис подойдет для продавцов на маркетплейсах, производственных компаний и других типов бизнеса.

Росимуществу передали две рыбопромышленные компании

Суд национализировал две компании из Владивостока по добыче рыбы. Их договоры с Росрыболовством признали недействительными.

Когда сотрудник не хочет уходить: как уволить скандального работника

Увольняя сотрудника за прогулы, хамство и пьянство, вы всегда рискуете. Он может добиться возвращения по суду, и вам придется выплатить штраф — а сотрудник и дальше будет вести себя так же. Разбираемся, как обосновать увольнение и правильно оформить документы.

Когда сотрудник не хочет уходить: как уволить скандального работника

😏 КС РФ: затянувшаяся налоговая проверка не продлит срок взыскания. Но есть неприятный нюанс, поясняет налоговый юрист

Если налоговые инспекторы нарушили сроки проведения проверок, то это не изменит порядок исчисления сроков на взыскание налогов, пеней и штрафов.

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

Новая схема мошенничества: клиентам предлагают продлить срок действия банковских карт

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