Специфические кейсы¶
ДП "Таблица"¶
При синхронизации категории "Первой Формы", в которой есть ДП "Таблица", рекомендуется создавать дополнительный (буферный) скрытый ДП "Таблица": при обновлении главного ДП "Таблица" с помощью смарт-автоматизации обновляется буферная таблица, и именно эта буферная таблица участвует в синхронизации с 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. Скачать ее можно здесь.
Во втором смарт-действии вызывается смарт-выражение "Файл из измененного ДП":