1с карта маршрута бизнес процесса сохранить

Обновлено: 02.07.2024

Графическое представление информации добавляет наглядности. На форме бизнес-процесса можно отобразить значения его реквизитов: Номер, Дата, Стартован, Завершен и так далее. Эта информация может быть полезна для идентификации конкретного бизнес-процесса, но по ней не получится сказать, в какой точке маршрута сейчас находится бизнес-процесс, какие задачи уже выполнены, а какие еще нужно будет выполнить.

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

Для сдачи экзамена необходимо на форме бизнес-процесса отображать его карту маршрута. Текущая точка маршрута должна быть выделена на карте, чтобы пользователь в режиме «1С:Предприятие» мог видеть текущее состояние бизнес-процесса.

Далее подробно рассмотрим, как реализовать отображение на форме карты маршрута конкретного бизнес-процесса.

Процесс реализации вывода карты маршрута на форму бизнес-процесса наглядно в формате видеоуроков показан в бесплатном курсе Программирование в 1С – за 21 день! (см. Модуль 6, День 21).

Как вывести карту маршрута на форме?

Создадим форму бизнес-процесса. Добавим реквизит формы КартаМаршрута с типом ГрафическаяСхема:

Создание реквизита «КартаМаршрута» формы бизнес-процесса

Рисунок 1 – Создание реквизита «КартаМаршрута» формы бизнес-процесса

Перенесем созданный реквизит на форму. Получим поле графической схемы, связанное с реквизитом КартаМаршрута:

Размещение созданного реквизита на форме

Рисунок 2 – Размещение созданного реквизита на форме

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

К сожалению, у Вас недостаточно прав для дальнейшего просмотра.

Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "///// echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1.
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

global $wpdb2;
global $failure;
global $file_hist;

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
>

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure) ///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
>
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
< foreach ( $results as $r)
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
>
>
>
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
>

////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\

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

Так как реализовывать я собираюсь универсальную обработку то логично сразу делать ее внешней. Единственным реквизитом моей обработки будет Бизнес-Процесс (БП) с типом БизнесПроцессСсылка.


Карта маршрута это ничто иное, как графическая схема, соответственно в форму обработки кроме поля БП необходимо вставить поле графической схемы. Я это поле назову КартаМаршрута. В итоге получится что то вроде этого:


Далее в модуле формы опишем получение карты маршрута выбранного пользователем БП.

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

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


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

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

В форме по событию "Выбор" опишем получение списка задач. Если задача одна то откроем ее форму (вызовем событие "АктивизироватьИнтерактивно", при этом может открыться и не форма задачи, а например форма БП). В том случае если задач запрос вернет несколько предложим пользователю выбрать необходимую из списка.

Естественно, в конкретных случаях можно наделить работу с картой маршрута какими-нибудь специфическими возможностями для работы с БП.


Бизнес-процессы могут быть вложенными. На карте маршрута вложенные бизнес-процессы отмечаются с помощью точки вложенного бизнес-процесса:

Точка вложенного бизнес-процесса

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

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

ведущая задача

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

В свойствах точки вложенного бизнес-процесса нужно выбрать бизнес-процесс, который будет вложенным:

Вложенный бизнес-процесс

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

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

  1. Вызывается обработчик ПередСозданиемВложенныхБизнесПроцессов у точки вложенного бизнес-процесса.
  2. Вызывается обработчик ПередСозданиемЗадач у точки вложенного бизнес-процесса.
  3. Вызывается обработчик ПриСозданииЗадач у точки вложенного бизнес-процесса.
  4. Ведущие задачи записываются в базу данных.
  5. Вызывается обработчик ПриСозданииВложенныхБизнесПроцессов у точки вложенного бизнес-процесса.
  6. Вложенные бизнес-процессы записываются в базу данных и выполняется их запуск.

Все действия выполняются в рамках одной транзакции.

Обработчик ПередСозданиемВложенныхБизнесПроцессов

У данного обработчика есть 3 параметра:

Данный обработчик можно использовать для ручного создания бизнес-процессов:

Читайте также: