"Буфер обмена" через web-сервис




Перенос объектов (табличных частей, элементов справочников и т.д.) из одной конфигурации в другую при помощи web-сервисов.

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

В качестве решения было предложено реализовать "буфер обмена" с помощью web-сервиса. Не секрет, что можно настроить синхронизацию данных (средствами БСП). Но что если конфигурация достаточно старая или самописная, и в ней нет БСП? К тому же настройка БСП довольно хлопотное занятие (Настройка регистрации, создание правил конвертации и т.д.). 

Идея решения заключается в том, что данные сохраняются не в хранилище значения текущей конфигурации, а сериализуется и хранится в дополнительной конфигурации "Сервер буфера обмена". Эта дополнительная конфигурация имеет методы web-сервиса для добавления, получения и удаления данных:

getData(id, erase);
Возвращает данные типа строка. Данные которые были ранее скопированы (добавлены) в виде строки.
    • id, строка – ИД записи для считывания;
    • erase,  булево – признак необходимости удаления записи после передачи

getLastData (erase);
Возвращает данные типа строка. Самые последние данные, которые были ранее скопированы (добавлены) в виде строки.
    • erase,  булево – признак необходимости удаления записи после передачи

putData(dataType, data,  dataName, id);
Возвращает значение типа строка (id сохранения данных). Помещает данные для хранения.
    • dataType, строка – Тип данных хранения (см. тестовые конфигурации);
    • data,  строка – сохраняемые данные;
    • dataName, строка – представление хранимых данных;
    • id, строка – необязательный – присвоить собственный id для хранения.

getStoreList ();
Возвращает данные типа строка. Сериализованное значение типа «Таблица значений». См. тестовые конфигурации. Получает текущий состав сохраненных данных.

eraseData(id);
Возвращает данные типа булево (успех). Удаляет запись по id.
    • id, строка – ИД записи для удаления;

eraseLastData ();
Возвращает данные типа булево (успех). Удаляет самую последнюю добавленную запись.

Во вложении 2-е БД клиенты для проверки и БД с сервисом. В doc файле описана установка.

Может кому-нибудь пригодится.

Тестировалось на платформа 1С 8.3.9.

2 Comments

  1. suepifanov

    Интересно.

    Пользователь видит только свой буфер?

    Т.к. буфер собирает их нескольких баз, то мне кажется надо больше инфы для выбора объекта вставки — хотя бы видеть из какой базы лежит и, возможно, предварительный просмотр самих вставляемых данных…

    Reply
  2. eugenevk

    (1) Любое описание данных можно сформировать для буфера. В методе putData — 3 параметр. Для примера упростил.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *