Appearance
Преимущества Турбо КД
- Скорость
- Простота
- Типизация данных
- Сжатие данных
- Универсальность
- Спец. возможности для упрощения обменов данными в среде 1С
Скорость
В типовых сценариях обмена данными между 1С достигается скорость сериализации-десериализации от 35 000 до 100 000 стандартных строк в секунду (под стандартной строкой здесь и далее понимается строка с 8 колонками).
В реальности - это выгрузка-загрузка 3 000 накладных по 10 строк товара в секунду.
Обмен со сторонними программами
Скорость загрузки-выгрузки в системы на других языках выше еще на порядок.
Простота
Простой код
При разработке Турбо КД большое внимание уделялось тому чтобы сделать код сериализации(десериализации) и передачи данных максимально простым и понятным.
- Используется небольшое количество общих модулей.
- Минимизировано количество клиент-серверных вызовов, обработок оповещения и т.д.
- Сокращено количество параметров функций до 2...3.
Простая отладка
- Весь код обменов сосредоточен в обработке загрузки данных (конвертере) - не нужно вносить изменения в 3 базах (источнике, получателе, конвертации данных).
- Все процедуры выгрузки сводятся к написанию пакета запросов по получению данных.
- Процедуры загрузки - это просто заполнение и запись объектов получателя готовыми данными - т.к. автоматически переносятся и конвертируются ссылочные значения.
- При составлении пакета запросов может сразу выполняться и мапинг полей источника-приемника.
- Отладка ведется в автоматически перезагружаемой внешней обработке - что позволяет значительно уменьшить паразитные нажатия на кнопки и движения мышью.
- Не требуется сохранение конфигураций и. соответственно перезапуск баз.
Простая модификация
При разработке решения, мы старались сделать код максимально простым и понятным.
Мы надеемся что это позволит достаточно просто и быстро дорабатывать (при необходимости) поставляемые решения под нужды конкретной организации.
Типизация
Одной из самых востребованых задач при обмене данными является корректный перенос информации о типах значений.
Текстовые форматы обмена, как правило, не в состоянии обеспечить перенос данной информации:
- csv - информация о типах отсутствует.
- json - различные числа и строки, все остальное костыли или ручное кодирование процедур загрузки выгрузки (с костылями).
- xml - формально поддерживает произволные наборы типов (xsd) - но реализация крайне сложна и не очень удобна.
Турбо КД использует бинарный формат обмена Apache Parquet который изначально разрабатывался с учетом требований типизации данных. Использование данного формата позволяет переносить данные о следующих типах:
Ссылки
Решение автоматически включает в состав передаваемых данных информацию о типах ссылок, что позволяет:
- Выгружать-загружать ссылки различных типов в одной колонке данных.
- Игнорировать отсутствующие в базе получателе типы ссылок (неопознанные типы автоматически приводятся к типу "Уникальный идентификатор").
- Заменять типы ссылок при загрузке.
- Сопоставлять значения ссылок при загрузке (заменять одни ссылки на другие).
Примитивные значения
Поддерживаются все основные примитивные типы данных 1С:
- Булево
- Время
- Дата
- Двоичные данные
- Строка
- Числа целые
- Числа десятичные
- Уникальные идентификаторы
Перенос типов
Все поддерживаемые типы переносятся в пакетах данных абсолютно прозрачно. Это означанет что выгруженный тип полностью соответствует принимаемому - без всяких "танцев с бубнами" и не требует ни строчки кода.
Сжатие данных
Формат Apache Parquet поддерживает сжатие данных "из коробки".
Т.е. не требуется никаких дополнительных процедур по упаковке распаковке данных. Сравнительные объемы пакетов данных можно посмотреть в разделе "Производительность"
Универсальность
Формат Apache Parquet применяется не только в Турбо КД (1С) но и во множестве систем на других языках программирования. Это позволяет достаточно просто наладить двусторонний обмен данными с другими программами.
Доп. функции для 1С
Замена типов
Довольно часто встречается ситуация когда одинаковые, по сути, объекты имеют разные наименования в различных информационных базах.
Например:
Объект ИБ | УТ 10.3 | УТ 11.5 | БУХ 3.0 |
---|---|---|---|
Заказ покупателя | ЗаказПокупателя | ЗаказКлиента | СчетНаОплатуПокупателю |
Заказ поставщику | ЗаказПоставщику | ЗаказПоставщику | СчетНаОплатуПоставщика |
Поступление на РС | ПлатежноеПоручениеВходящее | ПоступлениеБезналичныхДенежныхСредств | ПоступлениеНаРасчетныйСчет |
И т.д. ... |
Не будем предъявлять претензии художникам.....они так видят.....
Но с этим приходится как то жить.
В системе Турбо КД реализован простой механизм замены типов ссылок. Типы ссылок автоматически заменяются во входящем пакете в соответствии с правилами конвертации.
Например:
- Выгрузим документ "Заказ покупателя" из бызы УТ 10.3:
- Прочитаем данные файла в той-же базе УТ 10.3:
В базе УТ 10.3 ссылка на документ "Заказ покупателя" прочиталась корректно - именно как "Заказ покупателя".
- Прочитаем тот же файл в базе БУХ 3.0
Так как при загрузке не использовались правила обмена ссылка на объект источника "Документ.ЗаказПокупателя" загрузилась как "Уникальный идентификатор".
В БУХ 3.0 нет документа "ЗаказПокупателя" поэтому ссылка автоматически конвертировалась в тип "УникальныйИдентификатор". - Добавим в загрузку правила конвертации
- Прочитаем файл с заказами еще раз
Ссылка на заказ была конвертирована в ссылку на "СчетНаОплатуПокупателю".
Содержимое файла правил конвертации
json
{
"СоответствиеТипов_Ист_Тек": {
"Документ.ЗаказПокупателя": "Документ.СчетНаОплатуПокупателю",
},
"СоответствиеПеречислений_Ист_Тек": {
},
"СоответствиеРеквизитов_Ист_Тек": {
}
}
Подробнее см. Правила конвертации.
Правила по умолчанию
В файле конвертации указаны правила только для типа "Документ.ЗаказПокупателя".
Ссылка типа "Справочник.Контрагенты" была конвертирована АВТОМАТИЧЕСКИ, так как данный тип присутсвует в базе источнике и базе получателе.
Таким образом НЕ ТРЕБУЕТСЯ писать правила для объектов совпадающих типов, в правилах фиксируется только сопоставление для отличающихся типов, что позволяет значительно упростить правила для баз с "похожей" структурой или баз "почти УРБД".