Блог Интеграм

Рассказываем о проектах, обновлениях и событиях

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

Например, при заполнении адреса некоего объекта нам надо показать в списке только улицы выбранного города, а в списке домов – только дома выбранной улицы.

enter image description here

На скриншоте мы видим выбранный город, в котором в списке улиц только его улицы, а в списке домов только дома выбранной улицы этого города.

В меню Структура иерархия для этого примера выглядит так:

enter image description here

Обратите внимание, что у ссылок на Улицу и Дом есть ссылочный реквизит, указывающий на родительский объект: город улицы и улица дома.

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

enter image description here

Аналогично добавляется Улица для Дома.

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

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

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

enter image description here

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

Есть ещё такое ограничение, что среди прочих колонок, если таковые есть, ссылка на родителя должна быть левее всех. То есть, если мы ограничиваем дома по улицам, то колонка Улица должна идти до колонки Серия, которая тоже является справочной.

enter image description here

Обращение по API

При обращении за данными для выпадающего списка методом _ref_reqs необходимо передать в запросе два параметра: ID текущего объекта (параметр id) и ID значения из родительского списка (параметр r):

enter image description here

Запрос АПИ будет выглядеть примерно так:

https://app.integram.io/dtp/_ref_reqs/4152?JSON&id=4182&r=4162

Хочу рассказать (видео-формат youtube, rutube) про удобный инструмент для редактирования данных из разных таблиц в виде единой таблицы, как в Excel. Для наглядности мы часто собираем данные в отчеты, где их удобно изучать. Теперь эти данные можно редактировать прямо в отчете, и они будут компактно храниться в таблицах Интеграла, в отличие от Excel.

Интеллектуальный отчет для редактирования данных в таблицах

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

Мы видим здесь 5 связанных уровней данных, по которым у нас построен запрос Мы видим здесь 5 связанных уровней данных, по которым у нас построен запрос

Запустить специальный режим работы с отчетом можно вот этой кнопкой в конструкторе запросов.

Интеллектуальный отчет для редактирования данных в таблицах

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

Интеллектуальный отчет для редактирования данных в таблицах

Первая колонка в этом отчете – название услуги, и если по ней кликнуть, то её можно изменить. Мы видим, что значение повторяется много раз в разных строках – одинаковые значения выделены цветом. Если отредактировать эту услугу и нажать Enter, то она изменится сразу во всех строках – она обновится в справочнике. Так мы можем изменить справочное значение прямо здесь, не переходя в сам справочник.

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

Интеллектуальный отчет для редактирования данных в таблицах

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

Интеллектуальный отчет для редактирования данных в таблицах

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

Интеллектуальный отчет для редактирования данных в таблицах

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

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

Интеллектуальный отчет для редактирования данных в таблицах

Это будет стоимость услуги для iPhone 12 и, задав цену, мы выбираем эту модель из выпадающего списка.

Интеллектуальный отчет для редактирования данных в таблицах

Давайте добавим цены двух деталей для услуги – гидры и шлейфа. Теперь похожим образом указываем для них закупочные цены от разных поставщиков. Таблица растягивается и трансформируется по мере ввода данных.

Интеллектуальный отчет для редактирования данных в таблицах

Итак, мы видим, что в отчете есть много записей для одной услуги, они все выделены цветом. Можно посмотреть цену этой услуги для конкретной модели.

Интеллектуальный отчет для редактирования данных в таблицах

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

Интеллектуальный отчет для редактирования данных в таблицах

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

Интеллектуальный отчет для редактирования данных в таблицах

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

Вот эти 4 колонки позволят вам редактировать данные в отчете. В самом отчете идентификаторы будут скрыты.

Конструктор запросов и Структура таблиц Конструктор запросов и Структура таблиц

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

Для вашего удобства при наведении курсора на поле первой колонки таблицы в конструкторе запросов появляется кнопка [ID], по которой поле с ID и нужным именем добавляется автоматически:

enter image description here

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

Мы называем это умный отчет, и продолжаем его улучшать по вашей обратной связи – пользуйтесь им и не стесняйтесь обращаться.

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

Спасибо!

Важно учесть время на разработку отчетов при оценке проекта. Заказчику важен контроль над системой, и ему необходимы регулярные отчеты для отслеживания состояния бизнеса. Хотя некоторые из них он может создавать сам, большинство требуют вашего участия. В low-code конструкторах создание отчетов обычно занимает всего несколько минут, в сложных случаях – до 2-4 часов. На практике, даже в простых приложениях количество отчетов может быстро увеличиться до сотен и более. Разработка информационных табло требует больше времени из-за работы с дизайном. Важно запрашивать макет табло от заказчика, что экономит время и силы, поскольку часто клиент не осознает своих требований до тех пор, пока не предоставит визуальное представление.

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

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

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

Минимально жизнеспособный продукт (MVP) — продукт с ограниченным функционалом, достаточным для удовлетворения первых потребителей. *****Главная цель*****: получение обратной связи для формирования гипотез дальнейшего развития. Вы, как заказчик, можете ждать лучшего решения. Но на старте стоит начать с низкого уровня удобства и постепенно двигаться к совершенству.

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

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

Не рекомендуется участвовать в составлении ТЗ, потому что это накладывает на вас дополнительную ответственность.

Если в программировании у вас есть преимущество в скорости и эффективности: лучше концентрируйтесь на реализации конкретных решений, чем на составлении ТЗ.

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

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

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

Самая быстрая работа – это организация структуры данных, которая занимает пару часов. Самая долгая – это разработка и верстка рабочих мест. Наибольшие риски связаны с интеграцией, при которой происходит длительное решение неожиданных проблем. Например, импорт двух таблиц из 8 колонок каждая займет у вас не более 4 часов. Трудоемкость импорта данных заказчика зависит от количества атрибутов. Максимальное время, требуемое на импорт, можно приблизительно рассчитать: 15 минут на каждый атрибут.

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