csm-ivanovo-ru / 1s-GoToLinkedObjects

Разработка на github.com прекращена. Репозиторий перемещён на gitlab.ivcsm.ru. Расширение, добавляющее в конфигурации 1С 8.3 на управляемых формах общую команду перехода к сопоставленными при обмене объектам
https://gitlab.ivcsm.ru/1c-shared/bgu/1s-GoToLinkedObjects
The Unlicense
2 stars 1 forks source link

Добавить возможность немедленной отправки синхронизируемого объекта из формы объекта #9

Open sergey-s-betke opened 2 years ago

sergey-s-betke commented 2 years ago

Требуемая возможность

Добавить возможность немедленной отправки синхронизируемого объекта из формы объекта.

Текущее поведение

Сейчас после изменения / создания объекта приходится ждать несколько минут.

Возможное решение

Не обязательно.

sergey-s-betke commented 2 years ago

Отправить мало. Необходимо ещё дождаться ответа. По этой причине целесообразно в этом случае использовать обмен не через файлы, а через вызов COM сервера. Что в нашем случае доступно.

Либо активный обмен через Web сервис (SOAP) (это уже для совместимости с Linux в дальнейшем).

sergey-s-betke commented 2 years ago

Важно!

Если две информационные базы, между которыми настроен обмен данными, расположены в одной локальной сети или на одной машине, то рекомендуется, чтобы константы КаталогСообщенийОбменаДаннымиДляWindows и КаталогСообщенийОбменаДаннымиДляLinux в обеих базах указывали на один и тот же каталог обмена. Это позволит повысить производительность обмена данными.

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

sergey-s-betke commented 2 years ago

https://its.1c.ru/db/metod8dev/content/2267/hdoc

sergey-s-betke commented 2 years ago

Пока вижу такой алгоритм:

sergey-s-betke commented 2 years ago

https://its.1c.ru/db/metod8dev/content/2272/hdoc

Да, есть пример прямо жёсткого варианта:

Dim connector = CreateObject("V8.COMConnector")
    Dim connection = connector.connect("file=c:\IB")
    Dim nodeRef = connection.ПланыОбмена.УдаленныеОфисы.НайтиПоКоду("Офис1")
    If (Not nodeRef.Пустая()) Then
        Dim node = nodeRef.ПолучитьОбъект()
        node.ПрочитатьСообщениеСИзменениями() 
        node.ЗаписатьСообщениеСИзменениями() 
    End If
sergey-s-betke commented 2 years ago

http://infostart.applix.ru/public/281433/

sergey-s-betke commented 2 years ago

https://its.1c.ru/db/v8std/content/539/hdoc

sergey-s-betke commented 2 years ago

https://infostart.ru/1c/articles/1550198/

sergey-s-betke commented 2 years ago

Видимо, целесообразно будет использовать указанный выше вариант запуска сценария обмена на сервере, но - в длительной операции. И необходимо проверить работу обмена с вызовом через COM. Надеюсь, получим достаточно быстрый результат.

sergey-s-betke commented 2 years ago

Ждать придётся до тех пор, пока регистрация изменений объекта не уйдёт из плана обмена. А уйдёт она при получении квитанции о доставке изменений.