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

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

Может системное время разниться в пару секунд в разных системах, может там дата документу присваивается за пару секунд до фактической записи и т.д....
Tailor_Made; +1 Ответить
6. FatPanzer 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 16.10.20 23:30 Сейчас в теме
Угадать никогда не получится. Либо надо брать с запасом, либо рисовать систему обмена полноценную.
С запасом - это запускать каждые 5 минут, брать данные за 6 минут, ранее полученные не обрабатывать (как уже выше предложили).

Может системное время разниться в пару секунд в разных системах, может там дата документу присваивается за пару секунд до фактической записи и т.д....
Tailor_Made; +1 Ответить
5. Tailor_Made 16.10.20 23:38 Сейчас в теме
(4)попробую тогда вариант с 6 минутами и проверкой по Уникальному идентификатору
Спасибо!
6. FatPanzer 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 17.10.20 11:18 Сейчас в теме
(7) Я вообще-то говорил о принципиальной порочности оперативного обмена способом "по отрезку времени" и необходимости отказа от него, и о переходе на обмен способом "от последней остановки"...
Ну ладно, дело ваше.
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день