Обработка на Инфостарте
Выгрузка регистров 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 миллионах строк, поэтому их можно гонять по всей истории каждую ночь.
Как подключить
- 01
Выбрать регистр и каталог
Регистр накопления или бухгалтерии, дату начала истории, окно в днях, для бухгалтерии при необходимости счета. Каталог открывается на сервере 1С: в клиент-серверном варианте это папка сервера или сетевая папка, которую видит и загрузчик приёмника.
- 02
Сделать первую выгрузку
Первый прогон кладёт всю историю. Она пишется кодом 1С, около 600 строк в секунду, поэтому большой регистр лучше выгружать в выходные.
- 03
Научить приёмник грузить пакеты
Правило одно: по возрастанию номера, удалить строки дней из dni.csv, вставить stroki.csv, в одной транзакции. Описание колонок лежит в каталоге файлом format.txt, а пример загрузки и паспорта приёмника на MS SQL есть в разборе по ссылке ниже.
- 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
Mövzu üzrə təhlillər
Рядом по теме
Отчёт в хранилище не сходится с 1С
Разбор по типам правок: что теряет окно, что видит число строк, паспорт дня и версии, плюс SQL сверки на стороне приёмника.
Регистрация изменений в плане обмена 1С
Платформенная альтернатива версиям документов: как изменение встаёт в очередь узла и почему иногда не встаёт.
Карта объёмов базы 1С
Сколько строк поедет в первую выгрузку и какой регистр самый тяжёлый, до того как её запускать.
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.
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.