Типовые сценарии¶
Отмена подписки на несинхронизируемые объекты¶
При установке продукта обмена в базе "1С:Предприятие" создается глобальная подписка на изменения объектов, и при любом изменении объекта выполняется проверка необходимости синхронизации изменений. Если в базе есть большое количество несинхронизируемых объектов, то такие проверки будут создавать непродуктивную нагрузку на сервер. Для высоконагруженных систем рекомендуется отключать ненужные подписки.
Зная, какие именно объекты синхронизируются в конкретной базе данных "1С:Предприятие", вы можете в режиме конфигуратора в подписках "rgПередЗаписьюСправочников" и "rgПриЗаписиОбъектов" отключить глобальное использование подписок и оставить подписки только на нужные объекты (справочники, отмеченные на иллюстрации ниже, выбраны для примера). После этого необходимо обновить базу.
Использование входящего и исходящего фильтров¶
Входящий фильтр¶
Если в "Первую Форму" нужно загружать не все задачи, которые приходят из "1С:Предприятие", то можно использовать один из двух вариантов:
1 способ (рекомендуемый)
Настройте в "1С:Предприятие" правила выгрузки (они настраиваются там же, где и виртуальные реквизиты).
Перед записью объектов в "Первую Форму" происходит вычисление правил выгрузки:
-
если Выгружать = Ложь, то текущий объект не будет выгружаться в "Первую Форму";
-
если значение переменной не определено в обработчике или равно Истина — данные выгружаются.
2 способ (не рекомендуемый)
В категории, синхронизируемой с "1С:Предприятие", создайте смарт-пакет действий на событие "Перед созданием задачи" с необходимым по бизнес-логике смарт-фильтром. Пакет должен содержать одно действие "Отменить", и тогда задачи, удовлетворяющие условию смарт-фильтра, будут отклоняться и не будут создаваться в "Первой Форме".
ℹ️ При таком способе в модуле обмена создается очередь, которую потом необходимо чистить
Исходящий фильтр¶
Если не все задачи из "Первой Формы" необходимо выгружать в "1С:Предприятие" можно создать исходящий фильтр. Для этого в категории, связанной с "1С:Предприятие", создайте смарт-фильтр. В XML-настройках синхронизации "1С:Предприятие" для соответствующего документа/справочника в теге <Record> пропишите атрибут SmartFilterID, равный ID созданного смарт-фильтра. После этого в "1С:Предприятие" будут отправляться только задачи, удовлетворяющие условию смарт-фильтра.
Односторонний обмен данными из "1С:Предприятие" в "Первую Форму"¶
Предположим, что необходимо организовать простейший импорт данных из справочника "1С:Предприятие" в категорию "Первой Формы". Помимо передачи данных необходимо также импортировать из "1С:Предприятие" факт пометки записи на удаление.
Для реализации этой задачи после создания категории с помощью Мастера добавления справочников выполните следующие действия:
1. Изменить маршрут движения документа в "Первой Форме". Доработайте маршрут таким образом:
Здесь статусу "Действует" соответствует нормальное состояние записи справочника "1С:Предприятие", а статусу "Отклонена" соответствует пометке на удаление.
2. Указать стандартный шаг при постановке задачи:
3. Добавить блок обработки событий в настройку справочника:
(1) <SyncEvents1C>
(2) <Event1C Event="Create" Action="ChangeTask" IsAllowed="true" CanBeDeclined="true" RefreshExtParams="true" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false" MessageOnSuccess="1Ф Новая запись Объект" />
(3) <Event1C Event="Modify" Action="ChangeTask" IsAllowed="true" CanBeDeclined="true" RefreshExtParams="true" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false" MessageOnSuccess="Обновлена запись" />
(4) <Event1C Event="Post" Action="ChangeTask" IsAllowed="true" CanBeDeclined="true" RefreshExtParams="true" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false" MessageOnSuccess="Обновлена запись" />
(5) <Event1C Event="MarkDelete" Action="ChangeToStatus" Status="43" IsAllowed="true" CanBeDeclined="true" RefreshExtParams="true" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false" MessageOnSuccess="Объект помечен на удаление" />
(6) <Event1C Event="UnmarkDelete" Action="ChangeToStatus" Status="44" IsAllowed="true" CanBeDeclined="true" RefreshExtParams="true" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false" MessageOnSuccess="Снята пометка на удаление" />
(7) </SyncEvents1C>
Рассмотрим указанные выше настройки более подробно, по строкам:
(1) заголовок блока событий со стороны "1С:Предприятие". Указывается всегда.
(2) реакция на событие "Создана новая запись справочника" в "1С:Предприятие". В качестве ответного действия в "Первой Форме" указано действие ChangeTask, которое создаст задачу, если такой задачи нет. Если указано RefreshExtParams="true", то действие также обновит реквизиты задачи. Таким образом, в ответ на создание записи в "1С:Предприятие" в "Первой Форме" также будет создана задача в соответствующей категории. Поскольку в категории настроен "Шаг при постановке" (см. выше п.2), после создания задачи в "Первой Форме" она сразу перейдет в статус "Действует в 1С".
(3) реакция на событие "Изменена запись справочника". В "Первую Форму" также будет передано действие ChangeTask.
(4) реакция на событие "Документ проведен". В "Первую Форму" также будет передано действие ChangeTask.
(5) реакция на пометку записи справочника на удаление. Событие MarkDelete вызовет в "Первой Форме" действие ChangeToStatus — переход задачи к статусу, указанному в Status (в данном примере значение 43 соответствует статусу "Отклонена").
(6) действие, обратное удалению: событие UnmarkDelete (снятие пометки удаления) в "1С:Предприятие" вызывает в "Первой Форме" действие ChangeToStatus — переход задачи к статусу, указанному в Status (в данном примере значение 44 соответствует статусу "Действует в 1С").
По аналогии с рассмотренной настройкой для отражения факта пометки документа на удаление настраивается реакция на проведение документа в "1С:Предприятие" (для тех документов, у которых в "1С:Предприятие" есть механизм проведения):
<Event1C Event="Post" Action="ChangeToStatus" Status="..." IsAllowed="true" CanBeDeclined="true" RefreshExtParams="true" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false" MessageOnSuccess="Обновлена запись"/>
<Event1C Event="ClearPost" Action="ChangeToStatus" Status="..." IsAllowed="true" CanBeDeclined="true" RefreshExtParams="true" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false" MessageOnSuccess="Обновлена запись"/>
Здесь Post -- это реакция на проведение документа в "1С:Предприятие", а ClearPost -- на снятие признака проведения. Понятно, что для работы такой настройки обмена в маршруте документа должен присутствовать статус, соответствующий состоянию проведенного документа, а также два перехода: в такой статус и из него.
Односторонний обмен данными из "Первой Формы" в "1С:Предприятие"¶
Предположим, что необходимо организовать передачу из "Первой Формы" в "1С:Предприятие" согласованных платежных документов. Документ создается в "Первой Форме", согласуется, после чего оправляется на оплату, чему должно соответствовать проведение документа в "1С:Предприятие".
Для реализации этой задачи после создания категории с помощью Мастера добавления справочников выполните следующие действия:
1. Изменить маршрут движения документа в "Первой Форме". Доработайте маршрут таким образом:
Здесь видно, что на шаге "Согласовать" запрашиваются подписи ответственных лиц, а статусу "Оплачено" должно соответствовать конечное состояние проведенного документа в "1С:Предприятие". Ниже представлен тот же маршрут в виде таблицы:
2. Настройте доступ к документу в "Первой Форме" таким образом, чтобы в статусе "Оплачено" он был доступен пользователям только для чтения (чтобы предотвратить попытки изменить проведенный документ в "1С:Предприятие").
3. Добавьте блок обработки событий в настройку документа:
(1) <SyncEventsTC>
(2) <EventTC Event="MakeStep" Step="40819" Action="Create" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false"/>
(3) <EventTC Event="ChangeTask" Action="Modify" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false" />
(4) <EventTC Event="MakeStep" Step="40820" Action="Post" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false" />
(5) <EventTC Event="MakeStep" Step="40821" Action="ClearPost" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false" />
(6) <EventTC Event="MakeStep" Step="40822" Action="MarkDelete" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false" />
(7) <EventTC Event="MakeStep" Step="40823" Action="UnmarkDelete" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false" />
(8) </SyncEventsTC>
Рассмотрим указанные выше настройки более подробно, по строкам:
(1) заголовок блока событий со стороны "1С:Предприятие". Указывается всегда.
(2) переход по маршруту "Согласовать" в "Первой Форме" (Event="MakeStep" Step="40819") приведет к созданию документа (Action="Create") в "1С:Предприятие".
(3) при изменении доп. параметров документа в "Первой Форме" (Event="ChangeTask") эти изменения будут переданы в "1С:Предприятие" и отразятся в виде изменения реквизитов (Action="Modify") соответствующего документа.
(4) переход в статус "Оплачено" в "Первой Форме" (Event="MakeStep" Step="40820") приведет к проведению документа (Action="Post") в "1С:Предприятие". Таким образом, статус "Оплачено" в "Первой Форме" будет соответствовать проведенному документу в "1С:Предприятие", что и требовалось.
(5) переход по маршруту "Отменить оплату" в "Первой Форме" (Event="MakeStep" Step="40821") приведет к отмене проведения документа (Action="ClearPost") в "1С:Предприятие".
(6) переход по маршруту "Анулировать" в "Первой Форме" (Event="MakeStep" Step="40822") приведет к пометке документа на удаление (Action=" MarkDelete ") в "1С:Предприятие". Таким образом, статус "Отклонена" в "Первой Форме" будет соответствовать помеченному на удаление документу в "1С:Предприятие", что и требовалось.
(7) переход по маршруту "Восстановить" в "Первой Форме" (Event="MakeStep" Step="40823") приведет снятию пометки удаления с документа (Action=" UnmarkDelete ") в "1С:Предприятие".
Вместо действия MakeStep также можно использовать ChangeToStatus ).
Двусторонний обмен данными на базе единственного документа¶
Предположим, что необходимо организовать двусторонний обмен данными для справочника "Договоры". Договор изначально создается в "Первой Форме", там же проходит его согласование, после чего он передается в "1С:Предприятие". Далее бухгалтер контролирует и при необходимости меняет параметры Договора в соответствующем справочнике "1С:Предприятие" (например, переносит его в определенную папку справочника). Изменения, внесенные бухгалтером, должны быть переданы в "Первую Форму".
Для реализации этой задачи после создания категории с помощью Мастера добавления справочников выполните следующие действия:
1. Измените маршрут движения документа в "Первой Форме". Помимо статусов и переходов, реализующих алгоритмы согласования, в маршруте должен быть подобный участок:
Здесь статусу "Действует" соответствует нормальное состояние договора в "1С:Предприятие", а статусу "Отклонена" — пометке на удаление.
2. Настройте права доступа к доп. параметрам документа так, чтобы на статусах "Действует в 1С" и "Отклонена" права на изменение документа были только у технической учетной записи, от имени которой работает модуль обмена.
Настройка прав доступа к ДП
3. С помощью смарт-действий настройте категорию таким образом, чтобы после перехода договора по шагу "Ввести в действие" бухгалтер назначался исполнителем документа:
Таким образом, бухгалтер будет автоматически оповещен в "Первой Форме" о том, что ему необходимо проконтролировать в 1С новый импортированный договор.
4. Таким образом, бухгалтер будет автоматически оповещен в "Первой Форме" о том, что ему необходимо проконтролировать в "1С:Предприятие" новый импортированный договор.
5. Добавьте блок обработки событий в настройку справочника:
(1) <SyncEvents1С>
(2) <Event1С Event="Modify" Action="ChangeTask" IsAllowed="true" CanBeDeclined="true" RefreshExtParams="false" ActionNotificationsAddCommentOnSuccess="false" />
(3) <Event1С Event="MarkDelete" Action="ChangeToStatus" Status=" НомерСтатусаОтклонен" IsAllowed="true" CanBeDeclined="false" RefreshExtParams="true" ActionNotificationsAddCommentOnSuccess="false" />
(4) <Event1С Event="UnmarkDelete" Action="ChangeToStatus" Status="НомерСтатусаДействует" IsAllowed="true" CanBeDeclined="false" RefreshExtParams="true" ActionNotificationsAddCommentOnSuccess="false" />
(5) </SyncEvents1С>
(6) <SyncEventsTC>
(7) <EventTC Event="MakeStep" Step="НомерШагаВвестиВДействие" Action="Create" ActionOnError="Cancel" NotificationsOnError="Both" AddCommentOnSuccess="false" />
(8) </SyncEventsTC>
Рассмотрим указанные настройки более подробно, по строкам:
(1) заголовок блока событий со стороны "1С:Предприятие". Указывается всегда.
(2) при изменении реквизитов договора (Event="Modify") бухгалтером в "1С:Предприятие" изменения будут переданы в "Первую Форму" (Action="ChangeTask") и станут видны всем заинтересованным пользователям.
(3) при пометке договора на удаление в "1С:Предприятие" (Event="MarkDelete") документ Договор в "Первой Форме" перейдет в статус "Отклонена" (Action="ChangeToStatus" Status="НомерСтатусаОтклонен").
(4) при снятии с договора пометки удаление в "1С:Предприятие" (Event="UnmarkDelete") документ Договор в "Первой Форме" вернется в статус "Действует в 1С" (Action="ChangeToStatus" Status="НомерСтатусаДействует").
(5) завершение секции событий "1С:Предприятие".
(6) заголовок блока событий со стороны "Первой Формы".
(7) когда документ Договор в "Первой Форме" совершит переход в статус "Ввести в действие" (Event="MakeStep" Step="НомерШагаВвестиВДействие"), его данные будут переданы в "1С:Предприятие", и там будет создан соответствующий элемент (Action="Create") в справочнике "Договоры".