Как учесть секунды, при выполнении регламентной задачи

1. Tailor_Made 16.10.20 23:02 Сейчас в теме
Здравствуйте
Есть регламетная задача, которая загружает данные продаж с другой системы. Расписание: каждый день, каждые 300 секунд. Со внешней системы получаю данные за отрезок времени Data between *a and *b. Переменные передаю из 1С a = ТекущаяДата() - 300, b = ТекущаяДата()
Но некоторые документы не попадают. Думаю, что проблема может быть в том, что эти отрезки времени не все секунды затрагивают... Как правильно поступить в этом случае? Какую-то переменную завести, чтобы записывать дату b с точностью до секунды или как?
Найденные решения
4. FatPanzer 7 16.10.20 23:30 Сейчас в теме
Угадать никогда не получится. Либо надо брать с запасом, либо рисовать систему обмена полноценную.
С запасом - это запускать каждые 5 минут, брать данные за 6 минут, ранее полученные не обрабатывать (как уже выше предложили).

Может системное время разниться в пару секунд в разных системах, может там дата документу присваивается за пару секунд до фактической записи и т.д....
Tailor_Made; +1 Ответить
6. FatPanzer 7 17.10.20 10:32 Сейчас в теме
На самом деле - у этого варианта куча недостатков и засад:
1. Про время я уже сказал, но это самая мелочь.
2. Может отвалиться канал связи на полчаса. В итоге во внешней системе появится куча документов, а текущая 1С запросит только за 5 минут.
3. Текущая база 1С может уйти на сервисное обслуживание или обновление. В итоге вторая плодит документы, а третья их не получает.

Поэтому желательно такой обмен делать по схеме регистрации новых документов во внешней системе. Но если такой возможности нет, то можно изменить обмен на следующих условиях:
1. Отправлять в качестве параметров запроса во внешнюю систему не две дате интересуемого периода, а номер и дату последнего принятого документа (или даже ГУИД, если на той стороне тоже 1С и гуиды тоже синхронизируются). После чего внешняя система выдает результат начиная именнно с этой хронологической точки.
2. Для снижения нагрузки можно отправлять третий параметр - максимальное количество получаемых документов за один запрос. Этим параметром можно играться в режиме Предприятия в каких-нибудь настройках. Это поможет порционно и без пиковой нагрузки наверстать пропущенные документы за время локаута простым поднятием количества документов в одном пакете.
3. Иметь обработку для ручного запуска обмена с возможностью вручную указать необходимые параметры.
Tailor_Made; +1 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. user1464234 16.10.20 23:12 Сейчас в теме
Чем плох вариант загружать с той же периодичностью регламентного задания в диапазоне с начала дня 00:00:00 по конец дня 23:59:59 и не модифицировать уже загруженные?
Или модифицировать например проведенные/помеченные на удаление.
Tailor_Made; +1 Ответить
3. Tailor_Made 16.10.20 23:26 Сейчас в теме
(2)это документы данных продаж, которые создаются на стороне почти каждую секунду, а загружать их надо не реже, чем каждые 5 минут, ибо дальше выгружаются и обрабатываются
4. FatPanzer 7 16.10.20 23:30 Сейчас в теме
Угадать никогда не получится. Либо надо брать с запасом, либо рисовать систему обмена полноценную.
С запасом - это запускать каждые 5 минут, брать данные за 6 минут, ранее полученные не обрабатывать (как уже выше предложили).

Может системное время разниться в пару секунд в разных системах, может там дата документу присваивается за пару секунд до фактической записи и т.д....
Tailor_Made; +1 Ответить
5. Tailor_Made 16.10.20 23:38 Сейчас в теме
(4)попробую тогда вариант с 6 минутами и проверкой по Уникальному идентификатору
Спасибо!
6. FatPanzer 7 17.10.20 10:32 Сейчас в теме
На самом деле - у этого варианта куча недостатков и засад:
1. Про время я уже сказал, но это самая мелочь.
2. Может отвалиться канал связи на полчаса. В итоге во внешней системе появится куча документов, а текущая 1С запросит только за 5 минут.
3. Текущая база 1С может уйти на сервисное обслуживание или обновление. В итоге вторая плодит документы, а третья их не получает.

Поэтому желательно такой обмен делать по схеме регистрации новых документов во внешней системе. Но если такой возможности нет, то можно изменить обмен на следующих условиях:
1. Отправлять в качестве параметров запроса во внешнюю систему не две дате интересуемого периода, а номер и дату последнего принятого документа (или даже ГУИД, если на той стороне тоже 1С и гуиды тоже синхронизируются). После чего внешняя система выдает результат начиная именнно с этой хронологической точки.
2. Для снижения нагрузки можно отправлять третий параметр - максимальное количество получаемых документов за один запрос. Этим параметром можно играться в режиме Предприятия в каких-нибудь настройках. Это поможет порционно и без пиковой нагрузки наверстать пропущенные документы за время локаута простым поднятием количества документов в одном пакете.
3. Иметь обработку для ручного запуска обмена с возможностью вручную указать необходимые параметры.
Tailor_Made; +1 Ответить
7. Tailor_Made 17.10.20 11:14 Сейчас в теме
(6)Большое спасибо за понятный ответ.
1. Загружаю из БД SQL, там есть поле с Уникальным Идентификатором, буду брать отрезок времени больше, но проверять был ли загружен документ с этим УИ ранее
2. Это полезно, постараюсь реализовать
3. Это имеется
8. FatPanzer 7 17.10.20 11:18 Сейчас в теме
(7) Я вообще-то говорил о принципиальной порочности оперативного обмена способом "по отрезку времени" и необходимости отказа от него, и о переходе на обмен способом "от последней остановки"...
Ну ладно, дело ваше.
Оставьте свое сообщение
Вопросы с вознаграждением