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

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

Резюме.

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

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

Юристы СПБ Банка разместили шаблон и инструкцию для самостоятельного обращения в OFAC

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

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

21
Официальное удостоверение с занесением в госреестр Рособрнадзора
Бесплатно с Трудовые отношения

Трудовые споры: обязан ли работодатель выдавать работнику характеристику

Характеристика может понадобиться не только для трудоустройства у нового работодателя, но и для суда, военкомата и для расследования происшествий внутри фирмы. Обязан ли работодатель давать характеристику? И если да, то что в ней должно быть?

Трудовые споры: обязан ли работодатель выдавать работнику характеристику
Ведение бизнеса

Основы предпринимательской экспертизы: как стать успешным предпринимателем

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

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

Как получить кредит на открытие бизнеса с нуля

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

Иллюстрация: создано с помощью ИИ OpenAI © Вера Ревина/Клерк.ру
1
Самозанятые

Резко выросло число самозанятых IT-специалистов: почему

Согласно прогнозам, к 2030 году число IT-специалистов вырастет на 56%. Работодатели предпочитают сотрудничать с самозанятыми, чтобы сохранить ставку НДФЛ 13% с работниками из других стран.

Отчетность

ИП с сотрудниками: налоги и отчетность

Если у предпринимателя есть сотрудники, он уплачивает те же налоги, что ИП без работников. Кроме того, он платит за работников страховые взносы, удерживает с их зарплат НДФЛ и перечисляет его в бюджет. Все нюансы изложены в нашей статье.

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

Бесплатное обслуживание банком счетов оказалось не таким уж и бесплатным

ПАО Банк Синара исполнил предупреждение ФАС с требованием разместить достоверную информацию о брокерских услугах на своем сайте.

Банки

Центробанк рекомендует усилить контроль за платежными агентами

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

Цифровизация в школах чрезмерна, показал опрос председателя Госдумы

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

Новости ФНС

Информация о компаниях будет храниться в открытом доступе 1 месяц

ФНС сократила срок хранения открытой информации об организациях с года до одного месяца.

Самозанятых и начинающий бизнес в новых регионах поддержат дополнительно

Правительство приняло решение дополнительно выделить из федерального бюджетам ДНР, ЛНР, Запорожской и Херсонской областям 3,75 млрд рублей.

Логика вышла из чата: за несданную декларацию по НДС ИП на патенте и самозанятым грозят блокировкой счета.✍«Ночной бухгалтер» № 1685

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

Иллюстрация: Вера Ревина / Клерк.ру
Миникурсы, текстовые и видеоинструкции для бухгалтеров

Создадут единую платформу по борьбе с киберпреступлениями

Замглавы Минцифры Александр Шойтов рассказал о планах в сфере информационной безопасности.

Обзоры новостей

⚡️ Итоги дня: садоводам предложили выдавать бесплатные семена, в Москве подорожал проезд в метро, а стоимость золота обновила рекорд

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

Криптовалюта

Где безопасно обменять наличные на крипту

За 15 лет существования криптовалюты* не только не утратили своей актуальности, но наоборот — по популярности приблизились к фиатным деньгам и ценным металлам. Так, капитализация того же Биткоина сегодня превышает 1,4 триллиона долларов, что уже выше, чем у серебра! Неудивительно, что обмен крипты на наличные сегодня так востребован.

Где безопасно обменять наличные на крипту

Как загрузить отчеты о продажах с WB и OZON в 1С:Бухгалтерия

Начиная с релиза 1С:БП 3.0.114.23, в программе появился функционал, который позволяет загружать отчеты из маркетплейсов Ozon и Wildberries. Для WB загрузка данных доступна из табличного документа Excel, а также с помощью интеграции с личным кабинетом. Для площадки Ozon интеграцию с личным кабинетом добавили, начиная с релиза 3.0.126.

Как загрузить отчеты о продажах с WB и OZON в 1С:Бухгалтерия

Начался эксперимент по маркировке силовых кабелей

7 из 16 образцов кабелей и проводов не соответствуют требованиям ГОСТ по качеству и безопасности, поэтому власти проводят эксперимент по маркировке этой продукции.

Обязательная регистрация работодателя в системе ЕИСОТ

С принятием нового порядка обучения у работодателей появилась новая обязанность: помимо проведения внутреннего обучения еще и занесение сведений об обученных в реестр Минтруда.

Обязательная регистрация работодателя в системе ЕИСОТ

Свежая вакансия: «Союзмультфильм» ищет бухгалтера по производству

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

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

Бухгалтеры

Дарим топовый онлайн-курс «Бухгалтер маркетплейсов-2024» с подпиской «Клерк.Премиум»

При покупке подписки «Клерк.Премиум» от полугода вы получаете наш флагманский курс «Бухгалтер маркетплейсов-2024: учет, налоги, 1С» бесплатно!