Управление данными объектов через отчеты

MVP.CARE позволяет массово изменять данные, в том числе находящиеся в разных таблицах. Запрос на изменение можно добавить к любому отчету – необходимо указать новые значения колонок, отобранных в отчете. Таким запросом можно удалять объекты и их реквизиты, а также создавать новые записи, подчиненные или связанные с выбранными в отчете объектами.

Изменение данных происходит в 2 этапа. Сначала формируется шаблон отчет, в котором указаны какие данные будут изменены и каким образом, после чего формируется отчет, и пользователь дает команду внести изменения.

Рассмотрим пример. Нам необходимо отобрать всех Клиентов, с кем первая встреча была осенью 2016 года, и указать в Примечании Клиента «Осень 2016». Отчет, выполняющий эту работу, будет выглядеть так (обратите внимание на графу «Присвоить»):

Запускаем отчет. Результат работы отчета будет следующим:

В графе «Присвоить» указано, какие изменения будут внесены в данные. При нажатии гиперссылки «Выполнить» отчет сформируется еще раз, и все изменения будут применены:

Но в таблице Клиентов мы увидим обновленные данные:

Обратите внимание, что в построителе отчетов присваиваемое значение заключено в кавычки, в отличие от полей Значение (от и до) и Функция (от и до). Поле «Присвоить» может использовать значения поля «Формула», а также функции языка SQL для вычисления присваиваемого значения. Для демонстрации этих возможностей на примере усложним задачу – будем не заменять Примечание Клиента, а дописывать к нему текст в конце с указанием номера телефона. Доработаем наш отчет следующим образом:

Теперь мы не будем терять информацию из Примечания, а просто дополним её:

У вас может возникнуть вопрос: что будет, если какой-то объект встречается в отчете больше одного раза, и мы пытаемся его изменить. Ответ: объект будет изменен только 1 раз. Например, в следующем отчете мы добавляем Примечание клиента, который упомянут в нескольких строках отчета, и MVP.CARE выполнит изменение только 1 раз для каждого клиента:

Теперь продемонстрируем создание новых записей. Пример: нам нужно запланировать на 1 ноября 2016 года встречи со всеми клиентами в статусе «Лид». Создадим такой отчет:

Внимание! Если в колонке отчета заданы условия отбора и заполнено поле «Присвоить», то MVP.CARE трактует условие отбора как заданное условием или пустое. Таким образом можно убедиться, что будет создано только одно новое значение и предотвратить создание дубликатов при многократном запуске отчета.

Этот отчет выдаст нам следующее:

Как следует из отчета, у этих клиентов пока нет встреч на 1.11.2016, но MVP.CARE добавит им соответствующие записи, когда мы нажмем «Выполнить»:

Зайдём во Встречи одного из этих клиентов и убедимся, что нужная запись создана:

Если мы запустим этот отчет снова, то он уже не добавит еще раз эти записи, но исправит Тему встречи, если она будет отличаться от заданной (например, мы заменили «Интеграл» на CRM):

В следующем примере мы удалим информацию обо всех встречах сентября 2016 года:

Для удаления записей используется пустое значение: "". MVP.CARE не тратит память на пустые значения, поэтому информация будет просто удалена:

При нажатии кнопки «Выполнить» все эти записи будут удалены, включая все подчиненные им реквизиты (в том числе массивы).

Внимание! При удалении записей таким образом MVP.CARE не проводит проверку существующих связей, то есть, вы можете удалить даже справочные значения, использующиеся в других объектах (например, удалить менеджера, на которого есть ссылка у одного или более клиентов).

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

Запросы на изменение данных в Объектах в MVP.CARE – это очень мощный инструмент, не имеющий аналогов в других системах хранения и управления данными.

В строке адреса отчета, выполняющего изменения, можно наблюдать флаг «confirmed» – этот флаг сообщает MVP.CARE, что изменения подтверждены пользователем и должны быть немедленно выполнены. Вы можете использовать это знание для генерации ссылок на страницах интерфейса пользователя, чтобы выполнять изменения без подтверждения: по ссылке будет запущен отчет, который сразу выполнит запрошенные изменения.

Аналог ключа LIMIT в отчетах MVP.CARE

Пользователь может задать максимальное количество возвращаемых отчетом записей и смещение, начиная с которого необходимо выбирать записи: аналог ключа LIMIT в языке SQL. Соответствующий параметр отчета называется «Вернуть не более» и он может принимать пару значений, разделенный запятой, аналогично LIMIT. Этот параметр можно передать запросом POST или GET при вызове отчета, например.