Skip to content

Библиотека интеграции с 1С загрузка данных из CouchDB

nmivan edited this page Nov 7, 2017 · 6 revisions

Библиотека интеграции с 1С предоставляет три принципиальных способа загрузки данных из CouchDB:

  • автоматическая загрузка по расписанию;
  • ручная массовая загрузка объектов одного типа (класса);
  • ручная загрузка произвольного объекта.

Автоматическая загрузка

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

Загрузке из CouchDB подлежат все объекты из базы doc, для которых в панели администрирования, на закладке "Метаданные", в колонке "Загружать" выбран любой тип загрузки, кроме not_upload.

За один такт загрузки обрабатывается 20 объектов. Если на загрузку 20 объектов ушло менее 15 секунд, то выполняется еще один такт загрузки. Загрузка малыми порциями не создает проблем производительности и наложения регл.заданий.

Если у вас инфраструктура проекта такова, что лимит в 20 объектов необходимо изменить, то сделать это можно в значениях параметров по умолчанию процедуры CouchDB_ЗагрузитьИзменения общего модуля ИнтеграцияСериализацияСервер. Мы такой способ не рекомендуем, т.к. модуль придется снять с поддержки, что приведет к трудностям с обновлением библиотеки интеграции.

Автоматическую загрузку данных можно вызвать принудительно, без использования регламентного задания. Выполняется такая операция через панель администрирования. Ключевое отличие ручного старта загрузки в том, что появляется возможность загрузить данные из базы ram (регламентное задание читает только из doc). Разумеется, нужно четко понимать цель своих действий, загружая данные из ram. Технически эта база для CouchDB - такая же, как doc, но методически предполагается, что в ram данные только записываются, а обратно не читаются.

Исключения встречаются во время внедрения, когда для объекта метаданных была указана база ram, но в процессе внедрения потребовалось изменение места хранения - например, на doc, и нужно сделать перенос данных. Хотя, конечно, лучше воспользоваться обработкой ручной массовой загрузки объектов одного типа.

Ручная масовая загрузка объектов одного типа (класса)

Обработка "Интеграция: массовая загрузка из CouchDB" позволяет получить все объекты определенного класса (например, конкретный справочник), сравнить их с соответствующими в 1С, и выборочно записать в ИБ. Для загрузки необходимо указать базу (ram или doc), в которой находятся объекты, и имя класса - так, как он называется в CouchDB (например, cat.partners).

Флаг Учитывать настройки предварительной загрузки говорит о том, что если для загружаемого класса установлен тип загрузки preload, то объекты будут загружены в спец.приемник предварительной загрузки. Если флаг снят, то загрузка выполнится непосредственно в ИБ.

Флаг Такт после чтения включает выполнение переопределяемых обработчиков после загрузки объекта.

Чтение объектов из CouchDB выполняется по кнопке Прочитать. Будут получены все объекты соответствующего класса из CouchDB, и появятся в табличной части формы. Обработка автоматически определит, отличается ли загружаемый объект от существующего в ИБ 1С - в этом случае будет установлен флаг Есть изменения. Дополнительно обработка поставит флаг Новый, если в ИБ 1С нет соответствующего объекта.

При нажатии на строку табличной части с объектом, для которого взведен флаг Есть изменения, внизу будет показана табличка с изменениями - какой реквизит отличается, какое значение было в 1С, какое пришло из CouchDB.

Будет объект загружен или нет, зависит от флага Загрузить. По умолчанию этот флаг устанавливается у всех новых и измененных объектов.

Кнопка Загрузить изменения запишет изменения выбранных объектов в ИБ 1С.

Ручная загрузка произвольного объекта

Ручная загрузка доступна в панели администрирования. Такой способ загрузки позволяет получить произвольный объект из CouchDB, зная его идентификатор.

Основное отличие данного инструмента в том, что можно не записывать объект сразу, а увидеть его до записи в виде 1Сного объекта. Например, если загружается элемент некоего справочника, то изменения из CouchDB будут внесены в объект 1С, и будет открыта форма объекта 1С. Дальше пользователь сам решает, записывать объект 1С или нет.

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

Предварительная загрузка объектов

Предварительная загрузка объектов - это тип загрузки, при котором объект из CouchDB не сразу записывается в ИБ 1С, а сначала помещается в спец.приемник - регистр сведений Интеграция: предварительная загрузка объектов. Регистр сведений хранит информацию о:

  • идентификаторе объекта из CouchDB;
  • дате записи (т.е. моменте, в который объект попал в предварительную загрузку);
  • дате обновления (т.е. моменте, когда из CouchDB пришли изменения для объекта, который уже есть в предварительной загрузке);
  • представлении объекта (например, наименовании элемента справочника);
  • имени метаданных (например, Справочник.Валюты);
  • ссылке (если объект уже есть в 1С, ссылка поможет принять решение о загрузке);
  • изменениях реквизитов (детали отличий объекта в 1С от объекта в CouchDB).

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

Информация о датах записи и обновления - справочная, ни на что не влияет, но позволяет построить систему управления загрузкой, если таковая требуется на конкретном внедрении. Например, если просмотр объектов перед загрузкой - обязанность человека - то с помощью этих дат можно проверять, насколько ответственно и своевременно человек свою обязанность выполняет.

Действий с объектом в предварительной загрузке всего два:

  • Принять изменения - объект будет записан в ИБ 1С, запись предварительной загрузки удалится;
  • Проигнорировать изменения - объект не будет записан в 1С, запись предварительной загрузки удалится.

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