Содержание:
1. Пример постановки задачи в 1С:УХ
2. База Управление холдингом 8: Создание нового элемента НСИ с единым ГУИД
3. Бух База: Создание нового элемента НСИ с единым ГУИД
4. Бух база: перенос исторических (ранее накопленных) элементов НСИ с единым ГУИД
5. База 1С УХ: Отправка документов, содержащих НСИ с единым ГУИД
6. Бух база: Отправка документов, содержащих НСИ с единым ГУИД
Встречается разновидность задачи синхронизации данных, при которой объекты нормативно-справочной информации (НСИ) создаются в разных базах 1С (например, один и тот же контрагент может быть введен в различных бухгалтерских базах 1С); при этом требуется, чтобы они были синхронизированы.
1. Пример постановки задачи в 1С УХ
Существует исторический набор множества бухгалтерских баз 1С; информацию из этих баз необходимо собрать в одной базе 1С:Управление холдингом.
· В каждой бухгалтерской базе накоплен большой объем данных НСИ, одинаковой по сути (контрагенты с одним и тем же ИНН и т.п.), но не синхронизированной по глобальным уникальным идентификаторам (код ГУИД).
· Требуется обмен банковскими документами (выписками) и связанными справочниками (Организация, Контрагенты, Договоры) + справочниками, которые могут быть в субконто.
· Требуется исключить дублирования данных НСИ.
Принципы:
· Общий УИД элемента НСИ – тот, который хранится в базе 1С УХ
· В Бух базах для справочников с единым ГУИД вводится признак «СоответствуетОбщемуГУИД» (замочки снимаем, но добавление нового реквизита не усложнит последующее обновление Бух баз типовыми релизами)
· Во всех Бух базах элементы таких справочников заменяются на элементы из базы 1С:Управление холдингом 8
Для первичного сопоставления элемента справочника в базе Управление холдингом 8 и в одной из Бух баз являются «ключевые атрибуты» (для Контрагентов – ИНН + КПП)
2. База Управление холдингом 8: Создание нового элемента НСИ с единым ГУИД
1. Новый элемент создается как обычно
2. Созданный элемент помещается в очередь (план обмена) «Перенести в Бух» (одна очередь на все Бух базы или для каждой Бух базы – отдельная)
a. Из этой очереди элементы отправляются в Бух базы
b. В Бух базах полученные элементы проверяются на существование по «ключевым атрибутам»
c. Если не найдены – просто создаются:
i. ГУИД = ГУИД_УХ
ii. СоответствуетОбщемуГУИД = Истина
d. Если найден, то:
i. Создается новый
ii. Производится автоматическая замена «старого» элемента на новый по механизму ссылочной целостности; в результате:
iii. ГУИД = ГУИД_УХ
iv. СоответствуетОбщемуГУИД = Истина
e. Успешно перенесенные в Бух базы элементы исключаются из очереди «Перенести в Бух».
3. Бух База: Создание нового элемента НСИ с единым ГУИД
1. При создании нового элемента база обращается через http-сервисы к 1С:УХ:
a. Идет попытка создания нового элемента именно в базе системы Управление холдингом (открывается аналогичная форма нового элемента)
b. Если новый элемент в базе Управление холдингом 3.1 создан успешно, то он возвращается в ответе http-сервиса
c. На основании полученного ответа элемент базы НСИ автоматически создается в Бух базе
i. ГУИД = ГУИД_УХ
ii. СоответствуетОбщемуГУИД = Истина
d. В Бух базе запускается поиск дублей (вдруг не нашли уже существующий в Бух базе элемент) по «ключевым атрибутам»; если находятся – происходит замена элемента.
2. Если онлайн обращение не удалось (например, если база 1С:УХ перегружена запросами), то новый элемент создается в Бух базе как обычно
a. признак СоответствуетОбщемуГУИД = Ложь
b. Элемент ставится в очередь «Оправить в УХ»
c. Далее через http-сервисы элемент отправляется в Базу Управление холдингом 8
i. В базе 1С:УХ элемент проверяется по «ключевым атрибутам»
ii. Если найден, то возвращается в Бух базу ответом http-сервиса; Если не найден, то создается новый, который возвращается в Бух базу ответом http-сервиса и заменяется в Бух базе; в результате:
1. ГУИД = ГУИД_УХ
2. СоответствуетОбщемуГУИД = Истина
iii. Созданный элемент рассылается в другие Бух базы.
d. После успешной передачи элемента в базу 1С:УХ он исключается из очереди «Отправить в УХ».
4. Бух база: перенос исторических (ранее накопленных) элементов НСИ с единым ГУИД
Бух базы по какому-либо приоритету выстраиваются в очередь, и в каждой из них по какому-либо принципу старые элементы НСИ ставятся в очередь «Оправить в УХ». Далее – алгоритм аналогичен описанному выше.
5. База 1С УХ: Отправка документов, содержащих НСИ с единым ГУИД
1. Отправка из Базы 1С:УХ – как обычно одним из механизмов обмена
2. При получении данных (документы + НСИ) в Бух базе:
a. Элементы НСИ ищутся по «Ключевым атрибутам»
b. Если не находятся – создаются новые (ГУИД = ГУИД_УХ и СоответствуетОбщемуГУИД = Истина) и подставляются в загружаемые документы
c. Если находятся и СоответствуетОбщемуГУИД = Истина, то подставляются в загружаемые документы
d. Если находятся и СоответствуетОбщемуГУИД = Ложь, то:
i. Создаются новые (ГУИД = ГУИД_УХ и СоответствуетОбщемуГУИД = Истина)
ii. Старые заменяются на новые о подставляются в загружаемые документы
6. Бух база: Отправка документов, содержащих НСИ с единым ГУИД
1. Если в отправляемых документах для элемента НСИ:
a. СоответствуетОбщемуГУИД = Истина, то отправляется как обычно
b. СоответствуетОбщемуГУИД = Ложь, то такие элементы ставятся в очередь «Оправить в УХ»
c. Только после успешной синхронизации НСИ запускается выгрузка документов.
Заключение:
· Предложенная схема минимизирует ручные действия для исключения дублирования НСИ;
· Для единообразия рекомендуется все обмены во всех направлениях выполнять через http-сервисы, информацию кодировать json-строками.
Специалист компании «Кодерлайн»
Игорь Борисенко