12.01.2021 Максим Федоров 18299
Структура данных в виде дерева

Содержание:

  1. Подготовка "дерева" через формирование запроса базы данных.
  2. Подготовка "дерева" через СКД в 1С.

 

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

 

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

 

Для примера возьмем документ "Рейс" в конфигурации "ТМС логистика". В документе на закладке "Маршрут" выводиться информация о виде операции (погрузка, выгрузка) и адрес.


Пример документа ТМС логистика

Пример документа «ТМС логистика»


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

 

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

 

1. Подготовка "дерева" через формирование запроса базы данных.


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

 

Формируем запрос:

                               Запрос = Новый Запрос;

                               Запрос.УстановитьПараметр("ТЗМаршрут",объект.Маршрут.Выгрузить());

                               Запрос.Текст =

                               "ВЫБРАТЬ

                               |              упРейсМаршрут.НомерСтроки КАК НомерСтроки,

                               |              упРейсМаршрут.ЗаданиеНаПеревозкуГруза КАК ЗаданиеНаПеревозкуГруза,

                               |              упРейсМаршрут.Операция КАК Операция,

                               |              упРейсМаршрут.Адрес КАК Адрес,

                               |              упРейсМаршрут.НомерЗвена КАК НомерЗвена

                               |ПОМЕСТИТЬ ВТМаршрут

                               |ИЗ

                               |              &ТЗМаршрут КАК упРейсМаршрут

                               |;

                               |

                               |////////////////////////////////////////////////////////////////////////////////

                               |ВЫБРАТЬ

                               |              ВТМаршрут.НомерСтроки КАК НомерСтрокиТЧ,

                               |              ВТМаршрут.ЗаданиеНаПеревозкуГруза КАК ЗаданиеНаПеревозкуГруза,

                               |              ВТМаршрут.Операция КАК Операция,

                               |              ВТМаршрут.Адрес КАК Адрес,

                               |              ВТМаршрут.НомерЗвена КАК НомерЗвена

                               |ИЗ

                               |              ВТМаршрут КАК ВТМаршрут

                               |ИТОГИ ПО

                               |              Операция";

               

                РезультатЗапроса = Запрос.Выполнить();

               

                ПромежуточноеДерево = РезультатЗапроса.Выгрузить(ОбходРезультатазапроса.ПоГруппировкам);

    ЗначениеВРеквизитФормы(ПромежуточноеДерево,"ДеревоМаршрутов");

 

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


документ ТМС логистика в 1С

Дерево типов данных  

 

2.       Подготовка "дерева" через СКД в 1С


Данный метод подходит, если надо сделать группировку по нескольким полям. Например, нам необходимо сгруппировать данные по полям "Операция" и "Адрес".

 

Создаем схему компоновки данных, где на закладке "Настройка" указываем группировку по нескольким полям. В данном примере 2 поля:


Схема компоновки данных

Схема компоновки данных


Затем пишем вызов СКД в 1С:

 

                //получаем схему СКД

                ТекОбъект = РеквизитФормыВЗначение("Объект");

                НовыйСКД = ТекОбъект.ПолучитьМакет("МакетСКДМаршрут");

                //инициализируем настройки СКД     

                Настройки = НовыйСКД.НастройкиПоУмолчанию;

                ДанныеРасшифровкиСКД = Новый ДанныеРасшифровкиКомпоновкиДанных;

                КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

                ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;

                МакетКомпоновки = КомпоновщикМакета.Выполнить(НовыйСКД,Настройки,

                ДанныеРасшифровкиСКД,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

                //передаем данные в СКД

                ВнешниеДанные = Новый Структура("Маршруты",Объект.Маршрут.Выгрузить());

                ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешниеДанные,ДанныеРасшифровкиСКД);

                //подготавливаем данные для получения из СКД

                ПромежуточноеДерево = Новый ДеревоЗначений;

                ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

                ПроцессорВывода.УстановитьОбъект(ПромежуточноеДерево);

                ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);              

                //передаем полученное дерево на форму

                ЗначениеВРеквизитФормы(ПромежуточноеДерево, "ДеревоМаршрутов");

 

В результате выполнения мы получаем базу данных в виде дерева, группируемого по двум полям:


Таблица в виде дерева

Таблица в виде дерева

 

Специалист компании «Кодерлайн»

Максим Федоров

 

Наши проекты

ООО «Аэроэкспресс»
ООО «Аэроэкспресс»

Отрасль:

Внедренное типовое решение:
1С:ERP. Управление холдингом

· Планирование закупок · Управление закупочными процедурами, включая 223 ФЗ · Управление цепочками поставок · Управление договорами, включа...

Автоматизации учета затрат и расчета себестоимости с использованием конфигурации «Koderline: Управление проектами строительства скважин»
ООО «Буровая сервисная компания «ГРАНД»

Отрасль:
Нефтесервис

Внедренное типовое решение:
«Koderline: Управление проектами строительства скважин»

Учет и планирование:
- собственную разработку компании «Кодерлайн» – конфигурацию «Koderline: Управление проектами строительства скважин»...

ФГОУ ВПО «Горский государственный аграрный университет»
ФГОУ ВПО «Горский государственный аграрный университет»

Отрасль:
Образование

Внедренное типовое решение:
1С:Колледж ПРОФ

- Управление персоналом и кадровый учет (HRM):
Кадровый учет
Управление обучением и повышением квалификации
- Финансы, управлен...

ООО "АСК ИНЖИНИРИНГ"
ООО "АСК ИНЖИНИРИНГ"

Отрасль:
Машиностроение, приборостроение

Внедренное типовое решение:
1С:Документооборот ПРОФ

Делопроизводство
Учет и хранение документов
Ведение номенклатуры дел
Учет и контроль исполнения поручений
Учет договоров...

ООО "НЦКТ"
ООО "НЦКТ"

Отрасль:
Профессиональные услуги

Внедренное типовое решение:
1С:Управление нашей фирмой 8 ПРОФ

Взаиморасчеты с покупателями
Автоматизация бизнес-процессов...

АО «РЭП Холдинг»
АО «РЭП Холдинг»

Отрасль:
Энергомашиностроительный холдинг

Внедренное типовое решение:
«1С: Управление производственным предприятием» и «1С:Консолидация ПРОФ»

- Функциональный блок «Консолидированная отчетность РСБУ» - разработка частного технического задания - Функциональный блок «Консолидированн...

Установка программного продукта БИТ.Финанс для 1С:Бухгалтерия 8
ООО «Джи Эй Си Шиппинг энд Лоджистикс»

Отрасль:
Транспорт

Внедренное типовое решение:
БИТ.Финанс

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

Разработка функциональных требований к информсистеме на базе «1С:Управление холдингом 8»
ФГУП «СВЯЗЬ-безопасность»

Отрасль:
Охранные услуги

Внедренное типовое решение:
1С:Управление холдингом

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

ООО «ЛИГА-ТРАНС»
ООО «ЛИГА-ТРАНС»

Отрасль:
Профессиональные услуги, бытовое обслуживание

Внедренное типовое решение:
«1С:ERP Управление предприятием 2.1».

- Сделано ТЗ по автоматизации учета МСФО: - Разработана карта бюджета доходов и расходов в разрезе управленческого учета - Установлены форм...

Фармацевтическое предприятие «Оболенское»
АО «Фармацевтическое предприятие «Оболенское»

Отрасль:
Фармацевтическая промышленность

Внедренное типовое решение:
1С:Управление производственным предприятием

- Адаптации блоков/подсистем планирования продаж, закупок и казначейства. ...

Автоматизация производственного планирования нефтесервисной компании на базе 1С:ЕРП 2.0
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Блок планирования проектов (процессы объемно-календарного планирования производства)...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

Внедренное типовое решение:
1С:Управление холдингом 8

Бухгалтерский учет;
Расчет зарплаты и кадровый учет;...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение