Перейти к содержанию

Специфические кейсы

ДП "Таблица"

При синхронизации категории "Первой Формы", в которой есть ДП "Таблица", рекомендуется создавать дополнительный (буферный) скрытый ДП "Таблица": при обновлении главного ДП "Таблица" с помощью смарт-автоматизации обновляется буферная таблица, и именно эта буферная таблица участвует в синхронизации с 1С.

Использование буферной таблицы позволяет решить следующие проблемы:

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

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

При синхронизации ДП "Таблица", которая содержит столбец типа "Lookup поле", значение, указанное в поле Synonym для соответствующей колонки в XML-настройках, должно в точности совпадать с именем этого столбца в настройках самого ДП в интерфейсе Первой Формы. В данном случае система определяет значение не по внутреннему ID столбца и не через вспомогательные текстовые параметры (как для ДП Lookup), а исключительно по совпадению имени из интерфейса с Synonym из XML. Если настройки отличаются, данные в 1С переданы не будут. Ошибка в этом случае не отобразится в логе 1С, но будет зафиксирована в журнале ошибок системы в формате: System.Exception: Sequence contains no matching element, Тип: Table, Значение: {...}

Синхронизация статуса задачи

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

В таких случаях между системами передаются не только ДП, но и статус задачи. Для этого мы рекомендуем создавать в "Первой Форме" скрытый ДП, в котором будет храниться статус задачи. Он будет актуализироваться с помощью смарт-автоматизации на переходах. В 1С нужно создать виртуальный реквизит, который будет соответствовать статусу задачи и вычисляться по какой-то специфической логике. ДП, хранящий статус в "Первой Форме", должен синхронизироваться с этим виртуальным реквизитом.

Важно, чтобы в каждый момент времени задача менялась только в одной системе:

  • когда процесс ведется в "Первой Форме", задача в 1С либо еще не существует, либо заблокирована для изменений;

  • когда процесс передан в 1С, блокируется изменение задачи в "Первой Форме";

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

Переименование файлов, вложенных в ДП

При обмене файлами с 1С файлы должны иметь типовые имена — в имени не должно быть номера версии и должен быть ключ SyncFrom1F, примерно так:

SyncFrom1F ИмяФайла _ФотоРакурс2.jpeg

Когда пользователь вкладывает в ДП "Файл" файл для отправки в 1С, имя этого файла не соответствует требованиям обмена. Поэтому файл переименовывается нужным образом, под этим именем записывается в буферный ДП для отправки в 1С, а затем переименовывается обратно так, как изначально был назван пользователем.

Для автоматизации используется пакет действий, который состоит из трех смарт-действий:

1. Обновить параметры с помощью T-SQL вычислений:

Параметр Как определяется Значение
Номер задачи Smart-выражение Номер текущей задачи
ID параметра Smart-выражение ID измененного ДП
Имя TSQL процедуры Значение dbo.Rename_File_In_DP
Режим выполнения Значение AddKey

В этом действии имя файла, вложенного в ДП, приводится к стандартному имени для обмена с 1С: из исходного имени файла удаляется номер версии и добавляется ключ SyncFrom1F. Для этого вызывается хранимая процедура Rename_File_In_DP с параметром AddKey

2. Вложить файл в ДП:

Параметр Как определяется Значение
Задача Текущая задача
От чьего имени файл вкладывается Значение Systemrobot
Целевой ДП Значение ДП Файл "Буфер для отправки в 1С"
Файл Smart-выражение Файл из измененного ДП

В этом действии файл, вложенный в ДП и переименованный нужным образом, записывается в буферный ДП для отправки в 1С.

3. Обновить параметры с помощью T-SQL вычислений:

Параметр Как определяется Значение
Номер задачи Smart-выражение Номер текущей задачи
ID параметра Smart-выражение ID измененного ДП
Имя TSQL процедуры Значение dbo.Rename_File_In_DP
Режим выполнения Значение DeleteKey

В этом действии имя файла, вложенного в ДП, возвращается к исходному виду. Для этого вызывается хранимая процедура Rename_File_In_DP с параметром DeleteKey

В первом и третьем смарт-действии вызывается хранимая процедура Rename_File_In_DP. Скачать ее можно здесь.

Во втором смарт-действии вызывается смарт-выражение "Файл из измененного ДП":