Приглашаю консультантов поделиться своими маленькими "тайнами" при поиске наиболее оптимальных решений по вопросам, которые на первый взгляд кажутся незначительными, а на самом деле требуют глубокого анализа.
Хочется обратить внимание на синхронизацию данных (например между TS и 1C) при сохранении записи в одной из систем.
Клиент часто на этапе синхронизации сам не очень хорошо представляет, при каких условиях и какие именно данные должны передаваться из одной системы в другую.
Первый вариант – синхронизация происходит в момент сохранения данных. При нажатии на кнопку ОК запускается утилита синхронизации.
Второй вариант – когда создается дополнительная кнопка «Синхронизировать» и сохранение данных происходит только при нажатии на эту кнопку.
Оба варианта имеют право на внедрение. При этом необходимо помнить, что при первом варианте в обеих системах записи будут идентичны (При условии первичной синхронизации всех данных в обеих системах). Во втором варианте необходимо помнить, что записи будут отличаться. Для второго варианта предпочтительно сделать дополнительное поле (реквизит), «Признак синхронизации». Тогда можно будет визуально определять, какие из записей синхронизированы, а какие нет.
Здравствуйте.
Мне не раз приходилось объединять Terrasoft и 1С и вопрос синхронизации был основным. Дело в том, что в описанных вам двух вариантах есть одно основное условие - это обязательное наличие клиента 1С на рабочем месте Terrasoft(хотя у одного заказчика это тоже приходилось обходить). Это не всегда удобно, поэтому, я всегда делаю автоматический план сонхронизации, т.е. предположим счета синхронизируются каждые 2 мин., накладные каждые 10 мин и т.д. Конечно-же это синхронизация новых, измененных и удаленых, а раз в сутки (где-то ночью) происходит полная синхронизация данных (максимальная давность актуальных данных для синхронизации указывается в настройках)
Евгений, а как Вы обходите такие ситуации?
1. За две минуты группа менеджеров создала порядка 50 счетов. Началась синхронизация, которой для полного цикла необходимо время больше, чем две минуты. В это время создаются ещё некоторое количество счетов. Что произойдет в следующие две минуты? Как утилита синхронизации справляется с такой задачей? Ставится очередь?
2. Что присходит при "полной" синхронизации? Утилита проверяет есть ли не синхронизированные записи? Т.е. бывают ситуации, когда во время автоматической синхронизации не все записи успевают синхронизироваться?
Заранее спасибо за ответ ;)
Мы сейчас работаем над таким вариантом:
Синхронизацию предполагается проводить на стороне сервера . Что-то вроде сервиса, который с некоторой периодичностью проверяет специально созданную для этого таблицу. В этой таблице храниться информация об объектах которые нужно синхронизировать, она же служит своеобразным протоколом процесса синхронизации.
Предполагается два способа внесения записей в таблицу синхронизации: первый - по событиям вставки, удаления, редактирования; второй - на основе полной проверки всех объектов на соотношение дат создания/редактирования и даты последней синхронизации этого объекта.
Это как раз два способа синхронизации: текущий и полный.
Следовательно, на стороне достаточно установить только Террасофт. 1С нужна только на сервере.
По поводу вопросов:
1) Если я верно предполагаю, то при работе сервиса синхронизации не будет выполняться обновление датасета, следовательно, сервис добежит до конца первой группы операций (которые уже были загружены на момент старта), затем снова будет запущен, так как прошло больше двух минут, обнаружит, что были добавлены новые записи и станет обрабатывать их.
2) При полной синхронизации предполагается делать выборку из всех нужных таблиц тех записией, у которых дата последней синхронизации меньше, чем дата создания или модификации записи.
"Милова Марина" написал:Т.е. бывают ситуации, когда во время автоматической синхронизации не все записи успевают синхронизироваться
Такое теоретически возможно, так что лучше лишний раз перестраховаться.
Марина, скажите, пожалуйста, а что входит в полный цикл синхронизации, которая проходит каждые 2 минуты?
Как сказал Александр, целесообразно реализовать, чтобы эти действия происходили на стороне сервера, таким образом время на вставку или обновление пусть даже нескольких десятков записей, которые успели создать менеджеры за 2 минуты, измеряется секундами, поэтому мне кажется маловероятным то, что записи не успеют перенестись. Кроме того, можно определить, что информация из карточки счета и детали "Продукты", например, обязательно должны актуализироваться каждые 2 минуты, а задачи по счету достаточно чтобы были перенесены раз в сутки, таким образом можно уменьшить количество операций.
Например, в одном проекте у нас было реализовано обновление данных по клиенту из полей карточки при нажатие на кнопку "ОК", а обновление счетов этого клиента только при переходе на деталь "Счета".
Стоп-стоп-стоп.
Я рассказал пример синхронизации.
2 мин. это пример. При разработке срнхронизации с заказчиком составляется ТЗ в котором описыюатся такие моменты:
1. Что сонхронизируем (сущности, поля,констатнты, бизнес-процессы.)
2.Обязательно описывается "Где информация зарождается" и "какая система ответственна за актуальность". Это очень важный пункт
3.Частота "ленивых" сонхронизаций
4. Часттота полных синхронизаций.
Как было прапвильно замеченоЂ выше (я тоже об этом говорил в пред. посте) что синхронизация должна быть на сервере (или на одной отдельной машине).
И еще. По моему опыту, "ленивые" синхронизации (созданные и измененные сегодня) выполняются не более 20 сек. Для этого они и есть "ленивые" :)
Ольга.
Цель этого поста - обменяться информацией по возможным решениям при синхронизации. У каждого конкретного случая - свои "заморочки". И приятно, когда обладаешь какими-то знаниями. Ещё приятней, когда кто-то подсказал какое-то решение. Благодарю Евгения и Алексея, за то что они откликнулись.
Ольга Вам тоже огромная благодарность, за то что не остались равнодушной :)))
По вопросу "полной" синхронизации сама не очень поняла. Думаю, что просто в ночь включается "проверка", всё ли синхронизировано? нет ли записей, которые должны были синхронизироваться, но по каким-то причинам снхронизация не произошла. Например - была разорвана связь TS - 1C. Запись в одной из систем создалась, но не синхронизировалась.