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

Правила синхронизации

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

ℹ️ Перед запуском Мастера либо откройте профиль настроек, который вы хотите дозаполнить (выберите его в выпадающем списке Имя настроек и нажмите кнопку Получить настройки по имени), либо создайте новый профиль настроек по кнопке Сгенерировать шаблон настроек, заполните тег SyncSettings и нажмите кнопку Записать настройки.

Результат генерации шаблона настроек:

Советы по работе с Мастером добавления справочников

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

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

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

Если вы работаете с уже созданным ранее профилем настроек, то перед тем, как настраивать синхронизацию какой-то категории с помощью Мастера, проверьте, не была ли она настроена ранее. Для этого попробуйте поиском найти в xml-файле настроек название этой категории. Обратите внимание: на странице "Настройки синхронизации с 1С" поиск по xml-тегам (с помощью Ctrl+F) не всегда работает корректно, поэтому лучше скопировать настройки в отдельный файл и запустить поиск там.

Шаг 0

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

Заполните все доступные поля и нажмите кнопку Создать автоматически.

Примечание. Если вы не хотите выполнять этот шаг автоматически, то вам придется вручную создать следующие объекты:

  • Системный пользователь, от имени которого будут по умолчанию выполняться действия по синхронизации данных. Пользователь должен иметь ровно одну индивидуальную группу. ID пользователя прописывается в пользовательских настройках в строку с ключом TC1С_SystemUser.

  • Раздел, в который будут синхронизироваться справочники/документы из баз "1С:Предприятие". ID раздела прописывается в пользовательских настройках в строку с ключом TC1С_CatID. Раздел используется только при создании категорий, потом их можно перенести в любой раздел в иерархии.

  • ДП типа "Текст", в котором будет храниться GUID для каждой базы "1С:Предприятие", (его ID нужно будет прописать в настройках синхронизации в теге SyncSettings в атрибуте GUIDExtParamID). Для каждой базы "1С:Предприятие", с которой будет синхронизироваться "Первая Форма", нужен отдельный ДП для хранения GUID. При наличии нескольких задач в категории с одинаковым GUID в ходе синхронизации обновляется только последняя задача с наибольшим значением TaskID. Новые задачи при этом не создаются.

Шаг 1

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

Шаг 2

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

На данном этапе необходимо как минимум определиться с реквизитами, которые будут синхронизироваться из "1С:Предприятие". В левом окне Мастера отображается дерево подсказок, в котором приведены все возможные теги, атрибуты и значения XML. По наведению на узел дерева отображается подсказка, по клику -- элемент добавляется в XML справа от текущего положения курсора.

Если категория уже настроена и в ней есть ДП, то их ID придется вручную проставлять в настройках, подготовленных Мастером, т.к. Мастер указывает все ExtParamID=0.

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

Простейший пример настройки секции событий:

<SyncEvents1С>
      <Event1С Event="Modify" Action="ChangeTask" IsAllowed="true" CanBeDeclined="false" RefreshExtParams="true"
ActionOnError="NotAssigned" NotificationsOnError="Both" AddCommentOnSuccess="false" />
      <Event1С Event="Repost" Action="ChangeTask" IsAllowed="true" CanBeDeclined="false" RefreshExtParams="true"
ActionOnError="NotAssigned" NotificationsOnError="Both" AddCommentOnSuccess="false" />
    </SyncEvents1С>
    <SyncEventsTC>
      <EventTC Event="ChangeTask" Action="Modify" ActionOnError="NotAssigned" NotificationsOnError="NotAssigned"
AddCommentOnSuccess="false" />
    </SyncEventsTC>

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

Шаг 3

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

Шаг 4

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

Если в системе уже есть ДП нужного типа с таким же названием, Мастер будет использовать их, если таких ДП нет — создаст новые.

Параметр Добавить правила в конфигурацию интеграции отключать не рекомендуется. Отключение может потребоваться только в случае, если необходимо создать категорию и никак не учитывать ее при дальнейшей интеграции — в этом случае категорию стоит добавить в правила конфигурации (на шаге 1), но не надо описывать для нее никаких событий (на шаге 2).

Если созданные категории необходимо дополнительно настроить, в интерфейсе администратора "Первой Формы" перейдите в раздел Категории, выберите нужную категорию и перейдите на страницу . Здесь отображается та часть XML настроек, которая относится к конкретной категории.

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

Настройка синхронизации ДП Lookup

В "Первой Форме" в ДП Lookup хранится ID задачи, на которую ссылается ДП. Но при синхронизации с 1С используется не ID задачи, а ее GUID. Поэтому для каждого ДП Lookup, участвующего в синхронизации, необходимо создавать в категории еще один скрытый текстовый ДП, который будет хранить GUID задачи (обычно их называют так же, как и сам ДП Lookup, но к имени прибавляют суффикс link: например, Контрагент и Контрагент_link).

ID этого дополнительного текстового ДП указывается в теге Property в атрибуте TCLookupGUIDEPID.

Настройка синхронизации вложенных файлов

ℹ️ Данный раздел носит информационный (ознакомительный) характер и не содержит полного описания необходимых настроек. Данный функционал должен настраиваться специалистами "Первой Формы" по запросу клиента. Стоимость настройки для каждого клиента определяется индивидуально. Если вам требуется настройка данного функционала, обратитесь к своему клиентскому менеджеру или в службу поддержки "Первой Формы".

Синхронизация вложенных файлов настраивается независимо для каждого типа документа/справочника. Настройка происходит в интерфейсе администрирования "Первой Формы", в разделе "Синхронизация с 1С" (пункт меню "Система" -- "Синхронизация с 1С"), и на стороне 1С.

Настройка на стороне "Первой Формы"

Чтобы в определенном справочнике начался обмен файлами, необходимо в блоке <Record> добавить секцию <Files></Files> (или <Files />) в XML-настройки для этого справочника.

Общая структура будет выглядеть так:

<SyncRecords ...>
   <Record...>
   <Files ...></Files>
   <SyncProperties>
       ...
   </SyncProperties>
   </Record>
</SyncRecords>

Секция Files должна иметь указанными следующие атрибуты:

Атрибут Описание Правильное значение
CatalogName Имя справочника в "1С:Предприятие", содержащего вложенные файлы для конкретного типа документов \
OwnerProperty Имя реквизита в CatalogName, в котором находится ссылка на родительский документ (к которому файл считается "приложенным") "ВладелецФайла"
SendContent Отправлять непосредственно файл в виде двоичных данных. Если необходимо передавать файл, а не только его название то необходимо устанавливать как True \

Следующие атрибуты имеют значения по умолчанию, поэтому их можно не указывать:

Атрибут Описание
SyncDirections Направление синхронизации файлов. По умолчанию файлы синхронизируются только из "1С:Предприятие" в "Первую Форму"
ActionOnError Действие при сетевой ошибке при передаче файлов (ошибки приложения не относятся к такому роду -- только обрывы связи и пр.). По умолчанию -- не назначено
NotificationsOnError Способ уведомления пользователя об ошибке. По умолчанию Both — пользователь по возможности уведомляется и комментарием к задаче/документу, и сообщением на экран

Пример корректно заполненной секции

<Record OneCDocName="Справочник.Организации" OneCSynonym="Организации" TCSubcatID="7651" TCSubcatName="Справочник.Организации" SmartFilterID="0" SyncSource="Both" SyncDirections="TwoSided" DefaultActionOnError="NotAssigned" DefaultNotificationOnError="Both" DisableTaskTextSync="false" InboxQueueFlowId="">
     <Files CatalogName="Справочник.ОрганизацииПрисоединенныеФайлы" SendContent="true" SendFileMetaData="false" OwnerProperty="Test" SyncDirections="TwoSided" ActionOnError="NotAssigned" NotificationsOnError="Both" />
<SyncProperties>

Настройка на стороне 1С

При передаче файлов в 1С, "Первая Форма" вызывает метод веб-сервиса UploadFile со следующими параметрами:

Параметр Описание
Filename Имя передаваемого файла
FileNameProperty GUID документа, к которому прикрепляется файл
ParentDocName Имя документа, к которому прикрепляется файл
FileData Файл в формате двоичных данных.

Если необходимо передать только наименование без данных файла, необходимо установить признак SendContent="false" Чтобы 1С сохранила себе файл, необходимо дописать код на языке 1С, в котором будет осуществляться сохранение. Для этого необходимо добавить Виртуальные реквизиты (в нашем примере для справочника ОрганизацииПрисоединенныеФайлы). При загрузке файла 1С по умолчанию получает виртуальный реквизит для указанного в настройках справочника, и для этого реквизита ищет данные по имени BinFileProperty. Реквизит FileNameProperty не участвует в выгрузке и загрузке данных, а используется для пометки файлов на удаление в 1С.

ℹ️ Дополнительный справочник для вложенных файлов должен быть заранее создан заказчиком на стороне 1С (например, для справочника "ФизическиеЛица" — "ФизическиеЛицаПрисоединенныеФайлы"). Без этого синхронизация файлов работать не будет.

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

Алгоритм вычисления: данный алгоритм срабатывает при выгрузке из 1С и получает файл по ссылке для дальнейшей отправки.

Если Найти(ТипЗнч(Источник),"объект:")>0 Тогда

 Отбор=Источник.Ссылка;

Иначе

 Отбор=Источник;

КонецЕсли;

НаборЗаписей=РегистрыСведений.ПрисоединенныеФайлы.СоздатьНаборЗаписей();

НаборЗаписей.Отбор.ПрисоединенныйФайл.Установить(Отбор);

НаборЗаписей.Прочитать();

Если НаборЗаписей.Количество()>0 Тогда

 ДанныеФайла = НаборЗаписей[0].ХранимыйФайл.Получить();

КонецЕсли;

Алгоритм записи: данный алгоритм срабатывает при загрузке в 1С. Он обрабатывает входящий файл и сохраняет его в 1С с переданным наименованием.

// Готовим файл и помещаем его в хранилище

ВременноеХранилище = ПоместитьВоВременноеХранилище(FileData);

// Подготоваливаем описание файла заполнив все необходимые параметры

ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();

ПараметрыФайла.Автор = ИмяПользователя();

ПараметрыФайла.ВладелецФайлов = ВладелецФайла;

ПараметрыФайла.ИмяБезРасширения = Лев(Filename, Найти(Filename, ".")-1);

ПараметрыФайла.РасширениеБезТочки = Прав(Filename, СтрДлина(Filename) - Найти(Filename, "."));

// Используем функцию БСП и добавляем файл к объекту

РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, ВременноеХранилище);

Настройка синхронизации ДП "Таблица" (колонки "только для чтения" и скрытые)

При синхронизации данных из "Первой Формы" в "1С:Предприятие" колонки "только для чтения" и скрытые колонки из ДП "Таблица" игнорируются. При этом число колонок ДП "Таблица" в базе данных и число фактически передаваемых колонок не совпадают, и возникает ошибка. Чтобы избежать ее, необходимо при синхронизации таких категорий использовать постановку в очередь. Для этого в настройках синхронизации в теге ActionOnError должно быть указано значение ForceAddToQuery. Это правило выполняется как на отправку данных из "Первой Формы" в "1С:Предприятие", так и в обратную сторону.

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

Настройка синхронизации по произвольному событию

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

Пример

<EventTC Event="CustomEvent" CustomEventID="EventID" Action="Modify" AddCommentOnSuccess="false" />

Добавление ДП для обмена вручную

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

1. Запустите заново мастер добавления справочника для нужного типа документа и на шаге 2 найдите в XML-настойках описание нужного реквизита.

2. Скопируйте текст описания, ограниченного тегом <Property>.

  1. Вручную создайте в "Первой Форме" доп. параметр нужного типа (см. тег \<Type>) с требуемым наименованием. В случае Lookup-поля обратите внимание на то, что оно требует создания не одного, а двух ДП.

  2. В скопированном участке текста укажите правильный ID созданного ДП в теге <ExtParamID> (и дополнительно <TCLookupGUIDEPID> для ссылочных полей).

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

Первичная выгрузка данных

Если в Мастере добавления справочников на шаге 4 параметр Выгрузить первичные данные из 1С для новых элементов был снят, то созданные в "Первой Форме" категории остались пустыми. Чтобы наполнить их данными, выберите имя настроек (1), нажмите кнопку Получить настройки по имени (2), а затем — кнопку Произвести первичную выгрузку по текущим настройкам (3) и отметьте нужные категории.

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

После загрузки данных рекомендуется проверить успешность операции в журнале синхронизации с 1С.

Порядок выгрузки

Если в категории А есть ДП Lookup, который настроен на категорию В, то при получении данных сначала должны загружаться задачи из категорию В, чтобы при загрузке данных в категорию А ДП Lookup мог на них ссылаться. Если порядок загрузки данных нарушен, ДП Lookup не заполнится.

Чтобы данные заполнились корректно, выгрузку необходимо произвести дважды: в первый раз ДП Lookup останутся пустыми, а при второй загрузке они заполнятся соответствующими ссылками. Сопоставление задач производится по GUID-ам (именно для этого в настройках синхронизации в теге SyncSettings указывается параметр GUIDExtParamID).

Полезные ссылки

Профили настройки