Məzmuna keç
Tez Base

Обработка на Инфостарте

Выгрузка регистров 1С во внешнюю базу, которая проверяет всю историю

Хранилище под отчёты расходится с 1С тихо: документ поправили задним числом, а выгрузка перечитывает только последние две недели. Обработка возит движения регистра пакетами по дням и каждую ночь сверяет все дни истории, а не только окно. Расхождение она называет датой, а при разборе дня ещё документом, строкой и полем.

Обработка продаётся на Инфостарте за 10 SM, код открыт. Внешняя обработка на управляемых формах, к СУБД базы не обращается и в базу не пишет. Собрана и проверена на платформе 8.3.27, Управлении торговлей 11.5 и Бухгалтерии для Казахстана 3.0.

Обычная инкрементальная выгрузка держит приёмник свежим окном: последние N дней перечитываются целиком, остальное считается неизменным. На переносе документа на полгода назад это ломается дважды. В новой дате строка не появляется, потому что дата вне окна, а в старой исчезает, потому что окно её честно удалило. Журнал при этом чистый.

Обработка добавляет к окну две проверки всей истории. Паспорт дня: число строк и сумма каждого ресурса по каждой дате против того, что уже выгружено. Версии документов-регистраторов: ВерсияДанных, дата, проведение и пометка. Первая ловит перенос даты и правку суммы, вторая правку без изменения сумм, например другой товар или склад.

Третий вопрос, который обычно не задают: дошёл ли пакет до приёмника. Приёмник кладёт в каталог свой паспорт, обработка сравнивает его с выгруженным, называет красные дни и сама собирает на них ремонтный пакет. Всё на запросах 1С и CSV-файлах: к СУБД базы обработка не обращается, конфигурацию не меняет и в базу ничего не пишет.

Что делает обработка

Пакеты по дням

Регистр накопления (остатков или оборотный) или бухгалтерии уезжает в каталог пакетами: список дней к замене и все строки этих дней. У регистра бухгалтерии есть субконто и отбор по счетам. Пакеты пронумерованы сквозным номером и грузятся строго по порядку.

Паспорт дня по всей истории

Каждый прогон заново считает число строк и суммы ресурсов по каждому дню с начала истории. День, который разошёлся с выгруженным, уходит в пакет целиком, даже если ему полгода. На 10 миллионах строк это 4-9 секунд.

Версии документов

ВерсияДанных, дата, проведение и пометка каждого регистратора. Документ, у которого что-то поменялось, отправляет в пакет все свои дни: и старые, и новые. Так закрываются правки, при которых суммы дня не меняются.

Сверка приёмника и ремонт

Приёмник кладёт файл со своим паспортом, обработка показывает дни, где не сошлись строки или суммы, и собирает на них ремонтный пакет со следующим номером в общем ряду.

Разбор дня

Строки приёмника за один день против строк 1С по ключу "регистратор плюс номер строки": чего нет, что лишнее, какое поле какой строки отличается. Подмену значения при тех же суммах находит только он.

Замок на каталог

Пока идёт прогон, в каталоге лежит замок. Второй запуск в тот же каталог получит отказ с именем того, кто его занял, и не перемешает два пакета.

Что лежит в каталоге пакета

Один каталог ведёт одну выгрузку: один регистр, одно начало истории, один отбор счетов. Файлы в UTF-8 без BOM, разделитель точка с запятой. Точное описание колонок для вашего регистра обработка кладёт рядом файлом format.txt при каждом прогоне.

ФайлЗачем он
paket-NNNNNN-.../dni.csv Дни, которые приёмник должен заменить целиком, и причина: первая выгрузка, окно, паспорт дня, версия документа, ремонт приёмника.
paket-NNNNNN-.../stroki.csv Все строки регистра за эти дни. Ключ строки: тип регистратора, регистратор и номер строки.
pasport-1c.csv Паспорт выгруженного состояния: день, число строк, сумма каждого ресурса. С ним сравнивается следующий прогон.
versii-1c.csv Версии документов-регистраторов на момент выгрузки и дни, где у каждого были движения.
pasport-priemnik.csv Кладёт ваша сторона: тот же паспорт, посчитанный в приёмнике. Нужен для кнопки "Сверить приёмник".
zhurnal.csv, zamok.txt Журнал прогонов и сверок с вердиктом и временем; замок на время прогона.

Что поймали на тестовых сценариях

Управление торговлей 11.5.22.67, платформа 8.3.27, регистр "Товары на складах", 5 545 строк, окно 14 дней, приёмник на отдельной базе MS SQL. Отдельно Бухгалтерия для Казахстана 3.0, регистр бухгалтерии с корреспонденцией и тремя субконто, и синтетика до 10 миллионов строк для замера времени.

Показатель Значение Как надо Вердикт Что это значит
Документ перенесли с 25.09 на 25.03 пойманы оба дня оба дня норма сентябрь попал бы в окно и так, март нашёл только паспорт дня
Товар в старой строке заменили, количество то же 1 день, вне окна найден норма паспорт 0 дней, версии документа 1 день
Перенос поступления с 03.08 на 15.03, Бухгалтерия для Казахстана 2 дня вне окна за 0,2 с найден норма август: 2 проводки на 194 000 стали 1 на 14 000; март: появилась проводка на 180 000
В приёмнике плюс 1 к количеству одной строки красный день 20.06 найден норма строк 500 и 500, суммы разные; разбор дня назвал документ, строку 1 и поле ВНаличии
Пакет с новым документом не загрузили красный день 25.09 найден норма в 1С 5 546 строк, в приёмнике 5 545; ремонтный пакет собран автоматически
В приёмнике подменили товар, суммы те же паспорт зелёный - внимание находит только разбор дня по строкам, его запускают на конкретную дату
Паспорт и версии на 10 млн строк 4,0-8,6 с и 4,8-8,5 с - инфо 16 ГБ памяти, 1С и SQL Server на одной машине; холодный кэш СУБД 35 с, под нагрузкой около 20 с
Первая выгрузка около 600 строк в секунду - внимание 300 000 строк за 481-521 с; регистр на десятки миллионов строк в одну ночь не выгрузить

Разбор результата

Главное в этой таблице две верхние строки: обе правки окно в 14 дней не видит совсем, а число строк в приёмнике после них совпадает с 1С или отличается на единицу где-то в итоге за всё время. Паспорт и версии называют конкретные даты и стоят секунды даже на 10 миллионах строк, поэтому их можно гонять по всей истории каждую ночь.

Как подключить

  1. 01

    Выбрать регистр и каталог

    Регистр накопления или бухгалтерии, дату начала истории, окно в днях, для бухгалтерии при необходимости счета. Каталог открывается на сервере 1С: в клиент-серверном варианте это папка сервера или сетевая папка, которую видит и загрузчик приёмника.

  2. 02

    Сделать первую выгрузку

    Первый прогон кладёт всю историю. Она пишется кодом 1С, около 600 строк в секунду, поэтому большой регистр лучше выгружать в выходные.

  3. 03

    Научить приёмник грузить пакеты

    Правило одно: по возрастанию номера, удалить строки дней из dni.csv, вставить stroki.csv, в одной транзакции. Описание колонок лежит в каталоге файлом format.txt, а пример загрузки и паспорта приёмника на MS SQL есть в разборе по ссылке ниже.

  4. 04

    Гонять прогон и сверку

    Прогон каждую ночь: окно, паспорт, версии, новый пакет. Сверку приёмника после его загрузки. Разбор дня по требованию, на красный день или на дату, про которую спросили.

Özünüz həll edə bilmirsiniz? Yazın, birlikdə baxaq

1C-i hər şeylə əlaqələndiririk: digər 1C bazaları, saytlar, CRM, banklar, dövlət sistemləri. "Qopan" və növbə yığan mübadilələri təmir edirik.

Qiyməti
450 000 ₸-dənmübadilə altsisteminin tam tətbiqi; vergilərsiz, nöqtəvi tapşırıqlar - daha ucuz

Рядом по теме

Tez-tez verilən suallar

Можно указать FTP вместо каталога?

Нет, ни на каком порту. Пакет пишет сервер 1С обычными файлами, поэтому нужна локальная или сетевая папка, которую видят и сервер 1С, и загрузчик приёмника. Если приёмник доступен только по FTP, переложить туда пакет должен ваш загрузчик.

Обработка сама грузит данные в хранилище?

Нет. Она готовит пакет и описание формата, а загружает ваша сторона по правилу "удалить строки дней из пакета, вставить строки пакета" в одной транзакции. Как такая загрузка выглядит на MS SQL, показано в разборе про хранилище, которое не сходится с 1С.

Почему не план обмена с регистрацией изменений?

План обмена надёжнее, если базу можно менять: он ловит и запись набора записей мимо документа. Но в типовой конфигурации плана под такую выгрузку нет, а добавить его можно только правкой конфигурации или расширением, которое надо согласовать и сопровождать. Обработка работает с базой как она есть.

Что она не увидит?

Движения, записанные кодом прямо в набор записей без записи документа, если число строк и суммы дня не изменились. Версия документа в этом случае не меняется. Такой день находит только разбор дня по строкам, если знать, какую дату смотреть.

Работает с регистрами сведений?

Нет. Проверка версий держится на документе-регистраторе, а у независимого регистра сведений его нет. Поддерживаются регистры накопления, остатков и оборотные, и регистры бухгалтерии.

Сверяет с распределённой базой, узлом РИБ?

Нет, только 1С против внешней базы по паспорту приёмника.

1C sisteminiz üçün pulsuz ekspress-audit

1-2 gün ərzində bazanıza baxıb, məhsuldarlığın harada itdiyini tapacağıq və nə etmək lazım olduğunu deyəcəyik. Öhdəliksiz.

Pulsuz ekspress-audit əldə edin

Tapşırığı müzakirə edək

Ən sürətlisi WhatsApp: tapşırıq barədə bir-iki sətir yazın, iş günü ərzində cavab verəcəyik.

[email protected]

Müraciəti forma ilə qoymaq daha rahatdır