Обработка на Инфостарте
Выгрузка регистров 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
Гонять прогон и сверку
Прогон каждую ночь: окно, паспорт, версии, новый пакет. Сверку приёмника после его загрузки. Разбор дня по требованию, на красный день или на дату, про которую спросили.
O'zingiz hal qila olmayapsizmi? Yozing, birga ko'ramiz
1C ni istalgan tizim bilan bogʻlaymiz: boshqa 1C bazalari, saytlar, CRM, banklar, davlat tizimlari. "Uzilib qoladigan" va navbat toʻplaydigan almashinuvlarni tuzatamiz.
- Narxi
- 450 000 ₸ danalmashinuv quyi tizimini toʻliq joriy etish; soliqlarsiz, alohida vazifalar - arzonroq
Mavzu boyicha tahlillar
Рядом по теме
Отчёт в хранилище не сходится с 1С
Разбор по типам правок: что теряет окно, что видит число строк, паспорт дня и версии, плюс SQL сверки на стороне приёмника.
Регистрация изменений в плане обмена 1С
Платформенная альтернатива версиям документов: как изменение встаёт в очередь узла и почему иногда не встаёт.
Карта объёмов базы 1С
Сколько строк поедет в первую выгрузку и какой регистр самый тяжёлый, до того как её запускать.
Ko'p so'raladigan savollar
Можно указать FTP вместо каталога?
Нет, ни на каком порту. Пакет пишет сервер 1С обычными файлами, поэтому нужна локальная или сетевая папка, которую видят и сервер 1С, и загрузчик приёмника. Если приёмник доступен только по FTP, переложить туда пакет должен ваш загрузчик.
Обработка сама грузит данные в хранилище?
Нет. Она готовит пакет и описание формата, а загружает ваша сторона по правилу "удалить строки дней из пакета, вставить строки пакета" в одной транзакции. Как такая загрузка выглядит на MS SQL, показано в разборе про хранилище, которое не сходится с 1С.
Почему не план обмена с регистрацией изменений?
План обмена надёжнее, если базу можно менять: он ловит и запись набора записей мимо документа. Но в типовой конфигурации плана под такую выгрузку нет, а добавить его можно только правкой конфигурации или расширением, которое надо согласовать и сопровождать. Обработка работает с базой как она есть.
Что она не увидит?
Движения, записанные кодом прямо в набор записей без записи документа, если число строк и суммы дня не изменились. Версия документа в этом случае не меняется. Такой день находит только разбор дня по строкам, если знать, какую дату смотреть.
Работает с регистрами сведений?
Нет. Проверка версий держится на документе-регистраторе, а у независимого регистра сведений его нет. Поддерживаются регистры накопления, остатков и оборотные, и регистры бухгалтерии.
Сверяет с распределённой базой, узлом РИБ?
Нет, только 1С против внешней базы по паспорту приёмника.
1C tizimingiz uchun bepul ekspress-audit
1-2 kun ichida bazangizni ko'rib chiqamiz, unumdorlik qayerda yo'qolayotganini topamiz va nima qilish kerakligini aytamiz. Majburiyatsiz.
Vazifani muhokama qilamiz
Eng tezi WhatsApp: vazifa haqida bir-ikki qator yozing, ish kuni davomida javob beramiz.