Синхронизация данных.
Имеются база источник и база приемник. Рассмотрим задачу перенос справочников и документов из базы источник в базу приемник.
1. Нумерация кодов справочников.
Рассмотрим случай автонумерация, контроль уникальности кодов во всем справочнике. В базе источник пользователи создают элементы справочника. Уникальность кодов обеспечена. Пользователи могут также создавать элементы справочника в базе приемнике. И там тоже уникальность кодов обеспечена. В начале кода может быть префикс, а может и не быть. Это зависит от конфигурации. В типовых конфигурациях на управляемых формах префикс предположительно равен номеру узла РИБ, для простого случая это будет два ноля в базе источник и базе приемник. То есть фактически префикс одинаковый в базе источник и базе приемник. Пользователи могут создать разные элементы справочника с одинаковым кодом в базах источник и приемник. Тут нужно или договариваться, что в базе приемник пользователи вводить справочники не будут или нужно сделать так, чтобы префикс в базе приемник был другой.
2. Идентификация справочников.
Идентификация используется при синхронизации. Берем элемент справочника из базы источник, идентифицируем его с базой приемник. Если в приемнике элемент не найден - добавляем, если найден то или ничего не делаем или корректируем.
2.1 Идентификация справочников по коду.
Берем код элемента справочника из базы источник, в базе приемник используем метод справочника НайтиПоКоду().
2.2 Идентификация справочников по наименованию.
Берем наименование элемента справочника из базы источник, в базе приемник используем метод справочника НайтиПоНаименованию(,Истина). Установка второго параметра обеспечивает точное соответствие.
Уникальность наименований не обеспечена, поэтому могут быть ошибки, связанне с повторением наименования у разных элементов. Если в приемнике элемент не найден - добавляем, если найден то или ничего не делаем или корректируем.
2.3 Идентификация справочников и документов по ГУИД.
ГУИД - это глобальный уникальный идентификатор. В строковом представлении выглядит так: 9fb58eea-17f2-4200-b105-b288d62f4303
ГУИД создается для каждого элемента справочника. Получить его можно так: СсылкаНаОбъект.УникальныйИдентификатор().
Вновь созданному элементу справочника, документу можно перед записью прикрепить заданный уникальный идентификатор с помощью метода УстановитьСсылкуНового(). Значение не может равняться ссылке какого-либо из имеющихся в базе данных объекта данного типа. Уникальность ссылки проверяется при записи объекта.
Мы можем по ГУИД базы источника создавать элементы справочников, документы в базе приемника и проводить идентификацию по ГУИД. Что делать, если в базе приемнике уже есть элементы справочника?
В этом случае необходимо выполнить сопоставление https://its.1c.ru/db/metod8dev/content/5870/hdoc.
3. Нумерация документов.
В номере документа сначала идет префикс, потом номер.
Префикс устанавливается в справочнике организации. Если префиксы в базах источник и приемник разные, можно вводить документы в базах источник и приемник.
3.1 Идентификация документов по номеру и дате.
Идентификация производится методом НайтиПоНомеру() с использованием номера и даты.
Берем номер и дату документа из базы источник, в базе приемник используем метод документа НайтиПоНомеру().
4. Версия данных.
Свойство ВерсияДанных документа или справочника позволяет узнать изменялся документ или справочник или нет. В базе источник создаем таблицу (можно в регистре сведений). Перед выгрузкой записываем версию каждого элемента справочника и документа.
Перед следующей выгрузкой сравниваем версии. Если версия изменилась - документ или справочник перегружаем в базу приемник.
5. Использование плана обмена для получения измененных элементов справочников, документов. В план обмена включаем справочники, документы, которые будем перегружать. Создаем запись сообщения, формируем выборку изменений. В выборку попадут элементы для выгрузки. Удалим регистрацию изменений. Алгоритм п 4. такой же как п 5. Таблица версий в этом случае записывается в соответствующий план обмена, а не в регистр сведений как в п 4.
6. Регламентные задания. Создадим регламентное задание. Галочки Использование, Предопределенное. Подключим метод из общего модуля. Например, запишем файл протокола. В платформе проверим выполнение задание по журналу регистрации. Проверим файл протокола.