Настройка правил синхронизации в соответствии с бизнес-процессом выполняется с помощью Мастера добавления справочников. Запустить его можно в разделе "Синхронизация с 1С" в меню "Система" в режиме администратора "Первой Формы".
Вызов мастера добавления справочников
Перед запуском Мастера либо откройте профиль настроек, который вы хотите дозаполнить (выберите его в выпадающем списке "Имя настроек" и нажмите кнопку Получить настройки по имени), либо создайте новый профиль настроек (выберите пункт "Сгенерировать шаблон настроек" в выпадающем списке "Прочие действия"), заполните тег SyncSettings и нажмите кнопку Записать настройки. |
---|
Советы по работе с Мастером добавления справочников
Лучше всего запускать Мастер, когда справочники, которые должны синхронизироваться, уже есть в 1С, но еще не настроены в "Первой Форме". В этом случае маппинг ДП будет настроен Мастером автоматически, и вам не придется настраивать маппинг вручную.
При добавлении уже настроенной категории через Мастер лучше предварительно, по возможности, удалить из нее ДП, не участвующие в обмене.
Во время работы Мастера не рекомендуется описывать события "1С:Предприятие" и "Первой Формы" – это удобнее делать потом, при настройке уже созданной категории. На этапе создания категории следует в первую очередь обращать внимание на список создаваемых ДП — если какой-то ДП не будет создан во время работы Мастера, придется подключать его к системе вручную.
Если вы работаете с уже созданным ранее профилем настроек, то перед тем, как настраивать синхронизацию какой-то категории с помощью Мастера, проверьте, не была ли она настроена ранее. Для этого попробуйте поиском найти в xml-файле настроек название этой категории. Обратите внимание: на странице "Настройки синхронизации с 1С" поиск по xml-тегам (с помощью Ctrl+F) не всегда работает корректно, поэтому лучше скопировать настройки в отдельный файл и запустить поиск там.
Шаг 0
Данный шаг необходимо выполнять, если в системе отсутствуют данные, необходимые для настройки синхронизации. Этот шаг отображается только первый раз при запуске подсистемы в конкретном приложении или если настройки были нарушены действиями администраторов.
Заполните все доступные поля и нажмите кнопку Создать автоматически.
Подготовительный шаг Мастера добавления справочников
Примечание. Если вы не хотите выполнять этот шаг автоматически, то вам придется вручную создать следующие объекты:
•Системный пользователь, от имени которого будут по умолчанию выполняться действия по синхронизации данных. Пользователь должен иметь ровно одну индивидуальную группу. ID пользователя прописывается в пользовательских настройках в строку с ключом TC1С_SystemUser.
•Раздел, в который будут синхронизироваться справочники/документы из баз "1С:Предприятие". ID раздела прописывается в пользовательских настройках в строку с ключом TC1С_CatID. Раздел используется только при создании категорий, потом их можно перенести в любой раздел в иерархии.
•ДП типа "Текст", в котором будет храниться GUID для каждой базы "1С:Предприятие", (его ID нужно будет прописать в настройках синхронизации в теге SyncSettings в атрибуте GUIDExtParamID). Для каждой базы "1С:Предприятие", с которой будет синхронизироваться "Первая Форма", нужен отдельный ДП для хранения GUID.
Шаг 1
На первом шаге из "1С:Предприятие" динамически подгружается список объектов, доступных для выгрузки из "1С:Предприятие". Отметьте в списке те справочники и документы, которые будут выгружены в "Первую Форму" из "1С:Предприятие", и нажмите кнопку "Сформировать предварительные настройки".
Шаг 1 Мастера добавления справочников
Шаг 2
Данный шаг является ключевым. Для элементов, отмеченных на предыдущем шаге, автоматически генерируется XML-код, который необходимо настроить в соответствии с бизнес-процессами.
На данном этапе необходимо как минимум определиться с реквизитами, которые будут синхронизироваться из "1С:Предприятие". В левом окне Мастера отображается дерево подсказок, в котором приведены все возможные теги, атрибуты и значения XML. По наведению на узел дерева отображается подсказка, по клику – элемент добавляется в XML справа от текущего положения курсора.
Если категория уже настроена и в ней есть ДП, то их ID придется вручную проставлять в настройках, подготовленных Мастером, т.к. Мастер указывает все ExtParamID=0.
Если для справочников и документов не настроена обработка событий, то по ним производится лишь выгрузка данных в "Первую Форму". Для динамической синхронизации изменений используется механизм событий. В "Первой Форме" и "1С:Предприятие" существуют несколько видов событий: изменение доп. параметра, переход в статус, проведение документа, удаление документа и др. На каждое событие в одной из систем можно назначить действие во второй системе. Основными атрибутами в настройке событий являются "Event" и "Action".
Шаг 2 Мастера добавления справочников
Простейший пример настройки секции событий
Шаг 3
На третьем шаге необходимо проверить список категорий и ДП, которые будут созданы как отражение справочников и документов "1С:Предприятие". Если информация верная, переходите к следующему шагу, нажав на кнопку "Создать категории". Если информация неверная, вернитесь на предыдущий шаг, нажав на кнопку "Назад", и внесите корректировки.
Шаг 3 Мастера добавления справочников
Шаг 4
На четвертом шаге отображается результат создания категорий – в случае успеха рядом с названиями категорий и ДП появятся их ID, в случае неудачи – сообщение об ошибке.
Если в системе уже есть ДП нужного типа с таким же названием, Мастер будет использовать их, если таких ДП нет — создаст новые.
Флажок "Добавить правила в конфигурацию интеграции" отключать не рекомендуется. Отключение может потребоваться только в случае, если необходимо создать категорию и никак не учитывать ее при дальнейшей интеграции — в этом случае категорию стоит добавить в правила конфигурации (на шаге 1), но не надо описывать для нее никаких событий (на шаге 2).
Шаг 4 Мастера добавления справочников
Если созданные категории необходимо дополнительно настроить, в интерфейсе администратора "Первой Формы" перейдите в раздел "Категории", выберите нужную категорию и перейдите на вкладку "1С". Здесь отображается та часть 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>.
3. Вручную создайте в "Первой Форме" доп. параметр нужного типа (см. тег <Type>) с требуемым наименованием. В случае Lookup-поля обратите внимание на то, что оно требует создания не одного, а двух ДП.
4. В скопированном участке текста укажите правильный ID созданного ДП в теге <ExtParamID> (и дополнительно <TCLookupGUIDEPID> для ссылочных полей).
5. В разделе "Синхронизация с 1С" выберите имя настроек и нажмите кнопку Получить настройки по имени. Добавьте отредактированный текст в общие XML-настройки, нажмите кнопку Записать настройки, а затем — кнопку Отправить XML настройки в 1С.
Если в Мастере добавления справочников на шаге 4 флажок "Выгрузить первичные данные из 1С для новых элементов" был снят, то созданные в "Первой Форме" категории остались пустыми. Чтобы наполнить их данными, выберите имя настроек (1), нажмите кнопку Получить настройки по имени (2), а затем — кнопку Произвести первичную выгрузку по текущим настройкам (3) и отметьте нужные категории (4).
Первичная выгрузка данных из 1С
Режим первичной выгрузки применяется также в том случае, если сначала синхронизация настраивалась на тестовой БД, и перед началом работы нужно получить из 1С реальные данные.
После загрузки данных рекомендуется проверить успешность операции в журнале синхронизации с 1С.
Порядок выгрузки
Если в категории А есть ДП Lookup, который настроен на категорию В, то при получении данных сначала должны загружаться задачи из категорию В, чтобы при загрузке данных в категорию А ДП Lookup мог на них ссылаться. Если порядок загрузки данных нарушен, ДП Lookup не заполнится.
Чтобы данные заполнились корректно, выгрузку необходимо произвести дважды: в первый раз ДП Lookup останутся пустыми, а при второй загрузке они заполнятся соответствующими ссылками. Сопоставление задач производится по GUID-ам (именно для этого в настройках синхронизации в теге SyncSettings указывается параметр GUIDExtParamID).
Полезные ссылки