Интеграция между 1С без боли и страданий

10.09.25

Интеграция - WEB-интеграция

Делимся опытом использования собственного фреймворка для интеграции систем 1С. Фреймворк, построенный на простых технологиях – HTTP-сервисы, JSON и конфигуратор 1С, помогает решать такие сложные задачи, как перенос остатков или консолидация данных между десятками баз, с минимальными затратами времени и ресурсов. Удобство, надежность и простота настройки позволят значительно упростить процессы обмена данными для IT-команд.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Бесплатно
Фреймворк CoreTech Exchange
.zip 356,65Kb
325 Скачать бесплатно

Хочу презентовать фреймворк собственной разработки, открытый и свободно распространяемый, который реализован на технологиях REST, JSON и использует функционал исключительно платформы 1С. Данный фреймворк мы используем практически во всех интеграциях, где это технически возможно. Также расскажу о технических, архитектурных и методических подходах, которые мы используем, и которые могут быть вам полезны при решении задач интеграции. При этом я ограничусь исключительно обменами между системами 1С и вопросами, которые возникают скорее у небольших IT команд.


 

Анализ существующих решений на рынке


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

Сравнение существующих решений для интеграции 1С


Но интеграция это не про передачу каких-то данных из системы А в Б, мы с помощью интеграции решаем какие-то задачи бизнеса, обеспечиваем какой-то функционал.

На самом деле такая ситуация имеет объяснение: у крупных ИТ-команд, интеграторов, крупного консалтинга выделены инженеры на интеграцию. Они полностью обеспечивают уровень транспорта данных между системами, и именно на них интеграционные решения и ориентируются.

Но мир 1С не ограничивается такими командами. Большая часть мира 1С – это команды из десяти, пяти, иногда даже из одного человека, который в одно лицо выполняет и поддержку существующих решений, и их развитие, внедрение новых решений. Читая эти описания, он не понимает, как данные решения упростят выполнение задач, которые перед ним ставятся.

Интегрируемые системы обеспечивают для заказчика некую бизнес-логику, и вопрос интеграции – это интеграция этой бизнес-логики в единый бизнес-процесс.
 

История создания фреймворка
 

Пример интеграции MES с 1С:ЗУП и бухгалтерией


Все началось с того, что у нас был проект по внедрению системы производственного управления MES и, в частности, была задача по интеграции MES с ЗУП и Бухгалтерским учетом. Нужно было передавать, что мы выпустили, и кто сколько сделал.

Встал вопрос, чем интегрироваться. Этот проект был примерно семь лет назад. Посмотрев, что мы раньше использовали, что есть на рынке, я увидел очень много минусов: где-то по срокам, где-то по надежности. И мы решили попробовать реализовать обмен через HTTP-сервис, который в тот момент уже предоставлялся платформой.

В итоге на примере с интеграцией ЗУП у нас получилось очень простое и эффективное решение.
 

Пример работы обмена через HTTP-сервис в 1С


Пользователь, заходя в типовой документ ввода показателей заработной платы и указывая, за какой период и с каких подразделений и сотрудников нужно собрать данные, нажимал кнопку «Заполнить». Система отправляла HTTP-запрос в систему MES, которая возвращала результат – данные по сотрудникам в виде табельного номера и ФИО. При этом интеграция справочников не требовалась.

Пользователь, во-первых, выполняет обмен тогда, когда ему нужно, а не по какому-то условному регламенту – он нажимает кнопку, что вызывает обмен. Во-вторых, он сразу видит, если происходят какие-то ошибки, и может контролировать полученный результат. Например, если у нас табельный номер не сошелся с ФИО – система выдает ошибку, пользователь понимает, почему обмен не работает и может сам эту ошибку обработать тем или иным образом, не звоня в службу поддержки 1С.

В результате обмен показал себя настолько быстрым, удобным, эффективным, что мы такие подходы и в целом HTTP-сервисы начали пытаться применять в остальных проектах, что в итоге привело нас к реализации своего фреймворка.

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

Концепт фреймворка
 

Схема концепта фреймворка для интеграции 1С


Уровень транспорта и доставки, гарантии доставки у нас обеспечивают уже реализованные технологии – это REST и HTTP. Они в нашей практике оказываются более чем достаточными. Ядро решения обеспечивает непосредственно обмен сообщениями, сериализацию с JSON и множество другого функционала. Настройки под конкретную интеграцию выполняются в программном коде на языке 1С. Настройка в виде программного кода дает множество плюсов, начиная с того, что мы говорим про интеграцию бизнес-логики, которую в системе обеспечивает разработчик через ее реализацию в программном коде.
 

Методические и технические решения


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

  • Повышает прозрачность для пользователя и службы поддержки.

  • Исключает необходимость регламентации процесса обмена данными. Пользователь не должен задумываться, что обмен должен произойти ночью или раз в полчаса, и надо подождать.

  • Упрощает взаимодействие между пользователями в разных системах.

  • Исключает проблемы коллизий.

  • Повышает ощущение надежности интеграции у пользователей.
     

Разные подходы к интеграции
 

Разные подходы к интеграции систем 1С


Классический подход – это рассылка изменений. Это то, что знают все: изменения происходят в одной системе, мы их рассылаем в интегрированные.

Вытягивающий принцип. Его демонстрирует пример MES, который я привел ранее, когда пользователь сам запрашивает необходимые ему данные нажатием условной кнопки.

Событийная интеграция. Событийной интеграцией обычно называют то, что я называю онлайн-обменом: когда при записи данных все рассылается в остальные системы. С моей точки зрения, событийная интеграция – это не рассылка данных, а отправка информации о произошедшем событии. Допустим, закрывается период бухгалтерского учета, информация об этом событии передается в систему, например, экономического анализа, которая уже может с этой информацией что-то делать. Или изменили какие-то данные в закрытом периоде – об этом также оповещаются нужные системы.

Но самое интересное – бесшовная интеграция. Это интеграция, при которой мы можем реализовывать какие-то алгоритмы и интерфейсы в системе A, используя данные проинтегрированных систем B, C и т.д.
 

Ключевое преимущество бесшовной интеграции
 

Пример бесшовной интеграции в 1С


Допустим, разработчик в рамках реализации определенного алгоритма или процесса указывает, какие данные ему нужно получить из системы Б, работая при этом в системе А. Для этого он может сформировать запрос на языке 1С, отправить его в систему Б и затем обработать полученный результат. Либо это может быть не запрос к данным, а вызов процедур и функций, находящихся в системе Б. Таким образом формируется единый непрерывный бизнес-процесс между системой А и системой Б.
 

Пример пользовательской формы в системе 1С для бесшовной интеграции


Также в рамках бесшовной интеграции мы часто применяем следующий способ: в системе А реализовываем пользовательские формы, которые используют данные системы Б, не перенося эти данные в систему А. Например, пользователь основное свое рабочее время работает в системе А, но иногда, ему нужно редактировать и отслеживать какой-то классификатор в системе Б. Мы можем сделать этот классификатор в метаданных в системе А и синхронизировать эти данные. Но если эти данные для системы Б не нужны, то можно просто сделать форму 1С, в которой пользователь сможет эти данные просматривать и редактировать, не перенося их из системы А.

Также мы можем поступить с отчетами, данные для которых необходимо получать из других систем. Мы реализовываем отчет на СКД с полноценным функционалом по отбору, сортировке, расшифровке, но при этом на данных, которые могут отсутствовать в системе А. Причем этот отчет может использовать данные системы Б, а может одновременно и Б, и C, то есть нескольких систем одновременно. Это дает огромные возможности.
 

Регистрация изменений и очередь обмена
 

Регистрация изменений и очередь обмена в 1С


Регистрация изменений у нас реализована через регистр сведений, в котором мы храним сведения о том, какие данные изменились. Измерения в регистре – Данные и Получатель.

Данные – это всегда ссылка на объект системы. Мы в общем случае не храним само сообщение. Во-первых, это зачастую избыточно в большинстве подходов интеграции. Во-вторых, это позволяет быстрее записывать в регистр за счет того, что в процессе записи, которая должна происходить внутри транзакции, мы не формируем сам текст сообщения, а этот процесс может занимать достаточно длительное время. Мы храним просто ссылку об измененном объекте.

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

ВерсияДанных соответствует значению одноименного атрибута любого объекта 1С.


Очередь обмена данными в 1С с использованием ВерсияДанных


В момент записи объекта внутри транзакции данные заносятся в очередь, после чего сразу запускается фоновое задание на отправку сообщения. Фоновое задание дожидается завершения транзакции и затем выполняет отправку.

Отправка может занимать значительное время. Например, при передаче данных в ERP – когда речь идет о документе Реализация товаров и услуг на пару сотен строк – обработка проведения может длиться 2 минуты и более. За это время данные в исходной системе могут измениться, причем не один раз. Поэтому по завершении отправки система сверяет версии данных. Если отправленная версия совпадает с актуальной в регистре сведений – все в порядке. Если же нет, требуется повторная отправка объекта.
 

Работа с наборами данных и технический справочник
 

Технический справочник ОбъектОбмена в 1С


Наборы записей у нас регистрируются через специальный технический справочник ОбъектОбмена, в котором хранятся данные. В нем мы сохраняем значения измерений только для тех записей, которые были изменены.

Например, в регистре курса валют «валюта» и «период» определяют конкретную запись. Мы формируем справочник, передавая в него валюту и период, а затем создаем хэш этих параметров. Это позволяет не создавать каждый раз новый элемент справочника и точно понимать, какая запись была изменена. Этот справочник затем отправляется в регистр сведений.

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

Настройка интеграции через конфигуратор 1С


Очень часто в существующих решениях, стремясь к централизации настроек, приходится создавать собственную IDE для разработчиков. С моей точки зрения, это не лучший путь. Разработчик должен заниматься интеграцией наравне с реализацией бизнес-логики и функционала. В случае системы 1С разработчик работает в конфигураторе или в EDT.

Если же мы оставим настройку всех правил обмена и всей бизнес-логики интеграции на уровне конфигуратора, то разработчик получает несколько преимуществ: во-первых, ему не нужно осваивать новые инструменты; во-вторых, у него есть привычные средства отладки и удобные инструменты для групповой работы, тот же Git.

И еще один плюс, который не сразу виден, заключается в том, что мы можем полностью алгоритмизировать формирование правил обмена.

Правила = СтруктураПравилВыгрузки(«Документ»);
Правила.ДопустимыеРеквизиты = «Номер,
			|Дата,
			|Проведен,
			|ПометкаУдаления»
Для Каждого ОбъектМета Из Метаданные.Документы Цикл
  Если ОбъектМета.Реквизиты.Найти(«Организация») Тогда
      Правила = СтруктураПравилВыгрузки(«Документ.»+ ОбъектМета.Имя);
      Правила.РеквизитыКонтроля = «Организация»;
      Правила.ВыражениеКонтроля = «кт_ОбменПереопределяемый.ПроверитьОрганизацию(Данные)»;
   КонецЕсли;
КонецЦикла;

В приведенном примере описаны полноценные правила обмена: мы выгружаем все документы системы, но только ключевые поля – «Номер», «Дата», «Проведен» и «ПометкаУдаления». Если у документа есть реквизит «Организация», мы выгружаем все данные объекта, при этом контролируя, какая организация указана в документе – то есть документы отправляются не для всех организаций.

Это полный код для отправки, например, всех документов из Бухгалтерии в другую систему. Он простой и понятный для разработчика.

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

Передача ссылок в JSON: эффективный подход

    "Организация": {
        "Тип": "Справочник",
        "Вид": "Организации",
        "УИД": "686a3031-4c98-11e1-ac59-003048668de6",
        "ИНН": "31543215",
        "Наименование": "ТриО"
    }

Очень часто в JSON значение ссылочного типа пытаются передавать так же, как в XML – в виде структуры, которая содержит информацию о том, как искать ссылку на стороне приемника. Например, указывают тип объекта, вид, УИД. Если по УИД объект не найден, то можно искать его по другим признакам, например, по ИНН или наименованию организации.

Мы передаем значения ссылочных типов как строки с определенным префиксом. Префикс #ref указывает, что объект нужно искать в конкретной таблице приемника по УИД, а префикс #refbyname – что поиск следует вести по наименованию. При необходимости можно реализовывать собственные префиксы с логикой конкретной интеграции.

    "Организация": "#ref:/Справочник/Организации/686a3031-4c98-11e1-ac59-003048668de6"

или

    "Организация": "#refbyname:/Справочник/Организации/ТриО"

или

    "Организация": "#Organization:/31543215"

Такой подход имеет несколько преимуществ: во-первых, он упрощает код; во-вторых, значительно сокращает объем передаваемого сообщения; и, наконец, устраняется необходимость постобработки данных после десериализации из JSON, что делает процесс более надежным и быстрым.
 

Соответствие ссылок между системами
 

Соответствие ссылок – это ключевая составляющая, особенно когда речь идет о бесшовной интеграции. Рассмотрим пример со справочником контрагентов. Возможно, он выдуманный, но достаточно понятный.
 


В простейшем случае у нас есть справочник контрагентов как в системе A, так и в системе Б, и один элемент справочника в системе A соответствует одному элементу в системе Б.
 


Если в системе Б существуют два справочника, например, «Поставщики» и «Покупатели», и наш контрагент может быть либо поставщиком, либо покупателем, то все просто. Но если контрагент одновременно является и поставщиком, и покупателем, то такая ситуация для обмена данными недопустима.
 


Решить это можно следующим образом: определять, является ли контрагент поставщиком или покупателем, исходя из контекста. Например, при передаче документа о поступлении товаров и услуг контрагент будет поставщиком, а при передаче документа о реализации – покупателем. Для обмена изменениями в данных это вполне подходящее решение, но для бесшовной интеграции оно не совсем подходит, т.к. при работе с данными нескольких систем в одном алгоритме мы не всегда можем определить такой контекст.

Можно реализовать бизнес-логику и архитектуру системы A в системе Б, то есть создать единый справочник контрагентов в системе Б. Пользователи продолжат работать с отдельными справочниками для поставщиков и покупателей, а сам справочник контрагентов будет на техническом уровне. Такой подход эффективен, он упрощает отладку и поддержку интеграции.
 

Контроль целостности данных при интеграции
 


Контроль целостности данных – это важный момент, про который часто забывают в интеграциях. В нашем случае мы решили этот вопрос так: отправитель просто отправляет данные объекта, не задумываясь о том, есть ли все необходимые ссылки у получателя. Мы передаем именно данные объекта, а получатель уже разбирает JSON и проверяет наличие всех нужных ссылок. Если каких-то ссылок не хватает, получатель запрашивает недостающие данные в исходной системе.

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

Описание фреймворка: архитектура и лицензия
 

  • Фреймворк построен на основе расширений.

  • Полноценно работает с версией 8.3.22, а также может функционировать в режиме совместимости с версии 8.3.10, предоставляя почти 100% функционала.

  • На практике мы пока не пробовали, но теоретически фреймворк должен работать с версии 8.3.6, и даже с версией 8.2.13.

  • Поддерживаются как Обычный, так и Управляемый интерфейсы.

  • Фреймворк распространяется по MIT License, что фактически означает свободное распространение при сохранении авторства.

  • Подходы open-source, в том числе Git, пока не используются, но это возможно в будущем.
     

Архитектура фреймворка для интеграции 1С


Фреймворк состоит из двух расширений, объединенных в одно ядро системы, и не требует дополнительных доработок. Ядро системы отвечает за весь процесс обмена, обеспечивая техническую сторону. Вся бизнес-логика разрабатывается в индивидуальном расширении ctExchangeCustom, которое реализуется алгоритмически с использованием API ядра системы.
 

Принцип работы ядра и индивидуальных расширений фреймворка


Это означает, что в ядре системы есть инструменты для отправки сообщений, регистрации очередей и подготовки правил. В индивидуальном расширении описываются все правила обмена и алгоритмы подготовки этих правил.
 

Механизм распространения индивидуальных расширений в разных системах


Таким образом, мы можем распространять индивидуальное расширение сразу на несколько информационных баз. Например, при консолидации данных архитектурная логика систем, откуда данные поступают, может быть одинаковой с точки зрения интеграции, даже если технически они отличаются. В таком случае для всех систем будет использоваться одно расширение ядра и индивидуальное расширение для интеграции, например, для консолидированной системы – одно, для всех источников – второе.
 

Поддерживаемые топологии интеграции
 

Поддерживаемые топологии интеграции: точка-точка, звезда, галактика


Поддерживаемая топология:

  • «Точка-точка», с которой все начинается,

  • «Звезда»,

  • «Галактика» – объединенные несколько «Звезд»,

  • Смешанная топология, которую часто называют «Спагетти», когда интеграция может быть хаотична. При «Спагетти» не все функции системы полностью поддерживаются, но мы планируем решить этот вопрос.
     

Процесс запуска фреймворка
 

Этапы запуска фреймворка интеграции в 1С


Простой вариант запуска фреймворка:

  • Установка всех необходимых расширений.

  • Настройка связей между интегрированными системами с разверткой веб-сервера.

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

  • Подготовка к эксплуатации:

    • настройка соответствия объектов между системами (на примере тех же контрагентов мы сверяем, какие контрагенты в какой системе уже присутствуют),

    • определение, что мы делаем с предопределенными элементами (с этим очень часто возникают вопросы),

    • определение прав доступа.
       

Интерфейсы программирования (API) в фреймворке
 

Пример API во фреймворке интеграции 1С


Приведу примеры API для отправки сообщений и подготовки правил. Ключевое здесь то, что разработчик, работающий над интеграцией и настройкой правил, не взаимодействует с техническим уровнем системы, например, с принципами передачи ссылок. Он просто указывает, например, что нужно отправить данные конкретного контрагента, вызывает соответствующий API - ОтправитьДанныеПоОбъекту с указанием ссылки на контрагента – и все, вопрос решен.

Кроме того, существует API на стороне клиента, который реализует такие задачи, как, например, интеграция интерфейса.
 

Пример 1: Централизованное казначейство
 

Пример интеграции централизованного казначейства через фреймворк


Задача заключалась во внедрении централизованного казначейства с централизацией бухгалтерских данных. У заказчика более 50 юридических лиц, каждое из которых работает в своей базе на основе 1С:Бухгалтерия. Есть отраслевые решения, доработки, различные релизы и версии.

Мы создали центральную систему на базе типовой 1С:Бухгалтерия и интегрировали ее с помощью нашего фреймворка. Внедрение заняло примерно три дня работы одного специалиста. Это решение успешно эксплуатируется уже полтора года.

За весь этот период не потребовалось вносить изменения в правила или бизнес-логику интеграции. Для понимания: за полтора года было множество обновлений, включая обновления в разных базах, разные релизы, отраслевые решения и так далее.

Кроме того, с помощью фреймворка был реализован функционал администрирования, включая рассылку обновлений по казначейскому функционалу, который также реализован на расширениях. В центральной системе мы указываем обновленные расширения, нажимаем кнопку «Разослать», и система через фреймворк автоматически рассылает и устанавливает новые расширения.

По объему данных и скорости работы: каждый месяц формируется порядка 12000 бухгалтерских документов во всех системах. Мы понимаем, что для казначейства онлайн обмен данными критичен. 12000 документов – это не так много, но когда закрывается период и необходимо перепроводить квартальные данные, объем может вырасти до 36000 документов в течении дня.
 

Пример 2: Производственный заказчик
 

Пример интеграции производственной системы с помощью фреймворка


У заказчика несколько разных систем на 1С, но с разными версиями. В их числе, например, управленческая система, основной функционал которой был разработан еще на версии 8.1. С помощью нашего фреймворка была реализована практически вся интеграция. Топология системы напоминает «Спагетти». Фреймворк показывает отличные результаты, особенно в плане поддержки, отладки и стабильности работы.
 

Планы по развитию фреймворка
 

  • Описание фреймворка (оно недостаточное, мы будем это исправлять).

  • Развитие инструментов мониторинга и администрирования.

  • Консоль анализа данных, которая позволяет обрабатывать данные сразу нескольких систем в рамках одного запроса. Разработчик работает с ней как с обычной консолью запросов. Это огромное преимущество, которое я не встречал в других решениях. Такой подход удобен не только для разработчиков, но и для аналитиков. Также это упрощает процесс поддержки.

  • Визуализация схемы интеграций.

  • Визуализация правил обмена.

 

logo

Интеграция 1С без лишних сложностей

Настроим бесшовный обмен данными между 1С и вашими системами

Подробнее

 

*************

Статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART TECH EVENT.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

57600 руб.

26.11.2024    6215    4    3    

7

WEB-интеграция Программист Бизнес-аналитик 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    3535    17    2    

19

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    21336    29    24    

24

WEB-интеграция 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Оптовая торговля, дистрибуция, логистика Россия Платные (руб)

В расширении реализован механизм интеграции между системой поставщика и Личным кабинетом СДТ. Реализован обмен заказами и реализациями (накладными), предусмотрено отслеживание статусов документов. Расширение предназначено для 1С:УТ 11.4.

35856 руб.

27.11.2024    1903    1    0    

1

WEB-интеграция Программист 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разработана для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

12000 руб.

02.02.2021    20357    58    52    

36

Обмен с ГосИС WEB-интеграция Бухгалтер Пользователь 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

5196 руб.

28.04.2016    97521    110    218    

359
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. lada2011 10.09.25 14:56 Сейчас в теме
Попробовал подключить к конфигурации УПП, получил сообщение "Структура данных не поддерживает хранение расширений, отключите режим совместимости". Режим совместимости отключить не могу, последствия непредсказуемы.. Платформа 1С:Предприятие 8.3 (8.3.22.1704). Будем думать
2. dabu-dabu 361 10.09.25 14:58 Сейчас в теме
(1) а режим совместимости с какой версией?
3. ixijixi 2059 10.09.25 16:50 Сейчас в теме
(1) Расширения только для управляемых форм
4. PaStrel 130 10.09.25 22:22 Сейчас в теме
В статье: "поддерживаются как Обычный, так и Управляемый интерфейсы" и "например, управленческая система, основной функционал которой был разработан еще на версии 8.1.", а решение на расширениях. Каким образом интегрировались с 8.1.?
5. dabu-dabu 361 11.09.25 00:03 Сейчас в теме
(4) можно все расширения залить в конфигурацию, что мы для таких систем и делаем.
А касательно примера - разработан, да на 8.1, но сейчас работает в режиме совместимости 8.3.10
То же УПП большинство, как я встречал, переводило в режим совместимости 8.3.6 если не ошибаюсь
16. PaStrel 130 11.09.25 21:01 Сейчас в теме
(5) Конфигурация на платформе 8.3.9 в режиме совместимости с 8.2.13. Объекты и код расширения в конфигурацию встроить можно, не на поддержке. Web-сервер имеется. Взлетит?
17. dabu-dabu 361 11.09.25 23:07 Сейчас в теме
(16) Теоретически должно, но на такие старые не пробовали.
Наверняка часть функций придется закомментировать для прохождения контроля синтаксиса.
6. troy66 11.09.25 09:10 Сейчас в теме
Опубликовал две базы, попробовал настроить и на первом шаге "Тест связи" получаю ошибку. Хотя в браузере Ping проходит. Подскажите где ошибка в настройках?
Прикрепленные файлы:
8. dabu-dabu 361 11.09.25 09:22 Сейчас в теме
(6) Точно ли у вас https? Попробуйте снять флаг и порт стандартным оставить. Тем более localhost
9. troy66 11.09.25 09:27 Сейчас в теме
(8) пробовал, результат тот же.
Прикрепленные файлы:
10. troy66 11.09.25 09:28 Сейчас в теме
(8) пробовал, результат тот же.
Прикрепленные файлы:
11. dabu-dabu 361 11.09.25 09:43 Сейчас в теме
(10) что-то не нравиться вашему веб-серверу, скорее всего что-то с заголовками в запросе.
Посмотрите текст ошибки в журнале регистрации, там будет полный текст
7. aximo 2433 11.09.25 09:13 Сейчас в теме
Вот такими методами обычно интеграцию с мобильными устройствами делаем
12. troy66 11.09.25 09:53 Сейчас в теме
(11)
Прикрепленные файлы:
13. dabu-dabu 361 11.09.25 10:23 Сейчас в теме
(12) что-то веб серверу не нравится, но что сказать не могу
как вариант - у веб-сервера, я так понимаю кодировка по умолчанию US
может попробовать пользователя латиницей набрать
а так, логи поискать на веб-сервере, возможно он ждет что-то в заголовках запроса
shinauroviju; +1 Ответить
14. rinik88 36 11.09.25 14:49 Сейчас в теме
Добрый день.
Почему то 500 ошибка.
Ошибка инициализации модуля: ctExchange HTTPСервис.ctExchange.Модуль
15. dabu-dabu 361 11.09.25 20:07 Сейчас в теме
(14) В журнале регистрации должна быть более подробная информация
18. rinik88 36 12.09.25 08:35 Сейчас в теме
(15)
В журнале регистрации должна быть более подробная информация

была блокировка внешних соединений. Теперь не совсем ясно как провести обмен, например валюты справчоник, ошибка Значение недопустимого для выгрузки типа:
Ссылка: RUB
Тип: Справочник.Валюты
Настройки интеграции: main
19. troy66 12.09.25 08:44 Сейчас в теме
Добрый день.
Просьба привести примеры настройки правил.
Возникли вопросы при настройке процесса выгрузки и обмена определенными видами документов, а также относительно выгрузки и обмена реквизитами ссылочного типа.
Буду признателен за обратную связь и рекомендации.
20. dabu-dabu 361 12.09.25 09:32 Сейчас в теме
(18)
(19) Во вложении в описании фреймворка см. главу Настройки интеграции в программном коде.
Для настроек используются процедуры раздела СтруктурыНастроекИнтеграции в общем модуле кт_Обмен.
Часть процедур с описаниями, рекомендую посмотреть.
Также постараюсь сегодня записать видео, в котором покажу реализацию простых настроек.
Описания и в коде и в виде дополнительных материалов будем постепенно готовить.
devtelscargo; Sergik_D; Rafaraf; +3 Ответить
21. troy66 12.09.25 14:33 Сейчас в теме
26. dabu-dabu 361 16.09.25 10:38 Сейчас в теме
(18)
(19)
Записал видео как начать использовать фреймворк:
https://drive.google.com/file/d/1jSBWoWKNyvfkyOyrkyLsVDIH2HlHxt9O/view?usp=sharing
22. vasilev2015 2813 13.09.25 07:39 Сейчас в теме
Благодарю автора за альтруизм. Такое сейчас редко встречается. Боюсь, что в нашем засоренном информацией мире эта публикация останется недооцененной.
mike-d; Sergik_D; +2 Ответить
23. dkoder 6 15.09.25 17:12 Сейчас в теме
Добрый день! С 19 года разрабатываю аналогичный фреймворк. Очень ценная вещь по сравнению с мастадонтом КД2 и xml.
Отмечу пару вещей:
- добавил идентификацию и самоидентификацию информационных систем, что бы копии баз не отправляли запросы в рабочие базы

- данные оборачиваю не в JSON. В ходе опытов делаю так.
1. формирую Структуру. (в том числе и обработку в виде двоичных данных упакованных в Base64)
2. далее перевожу во внутренний формат 1С, и оборачиваю в Base64 (делаю именно через файл, а не через ЗначениеВСтрокуВнутр, т.к. в руководствах 1С последнее оставлено как совместимость с 7.7, а через файл нормально)
ЗначениеВФайл(ИмяФайлаДанных, ДанныеСессии);
ЭтотОбъект.ДанныеЗапросаСессииСтрока = Base64Строка(Новый ДвоичныеДанные(ИмяФайлаДанных));
3. Упаковываю в JSON
ЗаписатьJSON(ЗаписьJSON, ДанныеТранспорта);

- добавил RPC вызовы когда в запросе передается обработка, и она вызывается в другой ИС, использую, например для получения метаданных

- т.к. на стороне принимающей информационной системы мы получаем данные во внутреннем формате 1С, то можно передать ТаблицуЗначений, соответственно ее можно сразу пихнуть в запрос, что дает неимоверную скорость синхронизации, а с версии 8.3.22 в запросе можно использовать ГУИД... это космос (у меня есть шаблонная 1С для номенклатуры с основными реквизитами, через такой механизм можно проверить изменения основных реквизитов и добавление новой номенклатуры за пару минут{для справочника 100 000 + элементов}, что позволяет реализовать стратегию контроля данных, вместо стратегии согласования изменений)

Все тоже времени не хватает отрефакторить и документировать, ну и выложить
Приведу свое рабочее расширение
Прикрепленные файлы:
dbus_1.5.1.1.cfe
aleksey2; +1 Ответить
28. dabu-dabu 361 16.09.25 10:48 Сейчас в теме
(23)
Интересно, посмотрю

Для ограничения копий баз у нас есть две функции:
1. использование режима копий из БСП (если БСП нет, то используется собственный аналогичный механизм)
2. ограничения через строки подключений, т.е. в каждой базе описываем из каких баз она может получать запросы.
Механизм копий используется всегда, а ограничения по списку - опционально

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

Аналог RPC у нас есть.

Со стратегией контроля данных - не понял, если не сложно - просьба объяснить, интересно.
29. dkoder 6 16.09.25 11:52 Сейчас в теме
(28)
Со стратегией контроля данных - не понял, если не сложно - просьба объяснить, интересно.


Стратегия относится к МДМ системам. Обычно, для ввода и изменения элементов НСИ есть одна стратегия - согласование ответственными лицами добавления (изменения) элементов, далее согласованные данные попадают в Группу НСИ, при это Группа НСИ должна провести Контроль вводимых данных.

Другой стратегии при использовании КД2(3) как таковой и нет.

При возможности онлайн проверки, добавленных (измененных) данных, можно использовать Группой НСИ только Контроль данных. При этом освобожнается ресурс компании на согласование. Данные вводятся ответственными пользователя без согласования.
30. dkoder 6 16.09.25 12:17 Сейчас в теме
(28)
но ухудшаются возможности отладки


С отладкой все впорядке. Разработчик работает только с Сессией (обработка) использует только "ДанныеЗапроса" {Структура}, и пишет в "ДанныеОтвета" {Структура}. Эти данные пишутся в журнал логирования во внутреннем формате 1С, эти данные элементарно выводятся в ТабличныйДокумент (если режим Предприятия) в виде иерархии, ну или в отладчике можно напрямую посмотреть. В отличии от типового обмена через нечитаемый xml - небо и земля

Ну и самое главное возможность работы напрямую с ТаблицейЗначения
31. dabu-dabu 361 16.09.25 12:49 Сейчас в теме
(30) Да, в типовом КД вообще все плохо, используют не от хорошей жизни,
вот многие и изобретают свои решения
32. dabu-dabu 361 16.09.25 13:02 Сейчас в теме
(30) А по поводу передачи Таблицы значений.
Я представляю для чего вы ее используете.
Но можно ведь и как массив структур передавать.
Собственно, это исключительно вопрос сериаллизации данных.
И у нас есть функции преобразования в JSON и для таблиц значений и, например, для результата запроса.

Приведу наш пример:
мы с помощью представленного фреймворка сделали консоль запроса позволяющую анализировать данные сразу нескольких систем.
Внешне сильно похоже на обычную консоль.
Запускаем ее в одной системе, пишем запросы получения данных в смежных системах (можно в нескольких), их результаты складываются во временные таблицы, которые используются уже в итоговом запросе.
33. dkoder 6 16.09.25 15:21 Сейчас в теме
(32)
И у нас есть функции преобразования в JSON


Если примерно такой код

Процедура ПреобразоватьДанныеВТипИзJSON(Данные, НастройкиИнтеграции, НайденныеСсылки, ТипДанных = Неопределено) Экспорт
	
	Если ТипДанных = Неопределено Тогда
		ТипДанных = ТипЗнч(Данные);
	КонецЕсли;
	
	Если ТипДанных = Тип("Массив") Тогда
		Для й=0 По Данные.ВГраница() Цикл
			ПреобразоватьДанныеВТипИзJSON(Данные[й], НастройкиИнтеграции, НайденныеСсылки);
			ПроверитьПолученноеЗначениеНаСсылочныйТип(Данные[й], НайденныеСсылки);
		КонецЦикла;
		Возврат;
		
	ИначеЕсли ТипДанных = Тип("Структура") Тогда
		Для Каждого ЭлементСтруктуры Из Данные Цикл
			ТипПодчиненныхДанных = ТипЗнч(ЭлементСтруктуры.Значение);
			Если ТипПодчиненныхДанных = Тип("Массив") или ТипПодчиненныхДанных = Тип("Структура") Тогда
				ПреобразоватьДанныеВТипИзJSON(ЭлементСтруктуры.Значение, НастройкиИнтеграции, НайденныеСсылки, ТипПодчиненныхДанных);
			Иначе
				ПодчиненныеДанные = ЭлементСтруктуры.Значение;
				ПреобразоватьДанныеВТипИзJSON(ПодчиненныеДанные, НастройкиИнтеграции, НайденныеСсылки, ТипПодчиненныхДанных);
				ПроверитьПолученноеЗначениеНаСсылочныйТип(ПодчиненныеДанные, НайденныеСсылки);
				Данные.Вставить(ЭлементСтруктуры.Ключ, ПодчиненныеДанные);
			КонецЕсли;
		КонецЦикла;

Показать


то крайне не эффективный для передачи ТаблицыЗначений:
1. Тут двойной цикл по каждой колонке в каждой строке
2. Рекурсия жрет процессорное время

Но Вам виднее, у Вас другой подход к сценарию разрабоки программистом

Сложность моего подхода - нужно динамически формировать запрос по метаданным для получения ссылочных данных - но скорость гораздо выше, и я не использую работу с данными на слое транспорта, это у меня другие подсистемы
34. dabu-dabu 361 16.09.25 16:21 Сейчас в теме
(33) в разных подходах - свои плюсы и минусы
как я говорил данный фреймворк - не про высоконагруженные системы
но он вполне рабочий для приведенных в статье примеров и многих других, где мы его использовали

В целом, в рамках одного http запроса, мне кажется странным передавать какие-то большие объемы данных
А если таблица всего-лишь из сотен строк, то не принципиально наличие вложенного цикла.
Здесь более значимую историю несут накладные расходы, на создание сессии, на подготовку правил и многие другие.
А пример кода который вы привели - его плюс - универсальность и относительная простота.

Но также отмечу, что у вас то-же вполне цикл в цикле, при преобразовании таблицы значений по другому быть не может. Просто у вас это отдано на откуп платформе, что безусловно ускоряет процесс.
Зато у вас отдельный затратный процесс по записи и чтению файла с диска. Причем одновременно и запись и чтение выполняется и при выгрузке и при загрузке.
36. dkoder 6 16.09.25 20:36 Сейчас в теме
(34) В любом случае, я рад что не один применил такой подход, который на порядки прогрессивней КД и 1С:Шина.
Детали реализации - это детали реализации, всегда идем на компромис между плюсами и минусами.
Желаю успешной дальнейшей разработки - людям нужны прогрессивные идеи.

Обязательно потестирую Вашу конфу, подсмотрю решения ;)

P.S. Для дальнейшего прогресса жду от 1С преобразования в языке запросов УникальногоИдентификатора в Строку и обратно, тогда можно было бы обходится без костылей при интеграциях

Ждал еще WebSocket`ы в 8.3.27, но дали только клиент, Была надежда делать распределенные транзакции, только средствами 1С. Через наши фреймворки можно вывернуться, но уж больно геморойно. Попробую поднять WebSocket сервер на NodeJS и тупо гонять данные транзитом.
37. dabu-dabu 361 16.09.25 20:44 Сейчас в теме
(36) На самом деле очень многие делают свои интеграции на http сервисах. И не мало видел систем и фреймворков, в том числе в открытом доступе

Распределенные транзакции на WebSocket - интересно, не думал в эту сторону.
54. rambomax 22 29.09.25 08:23 Сейчас в теме
(36) От скромности вы не умрёте, это точно.
Однако со стороны это выглядит так: вы не стали разбираться в отлично работающем коде, по которому есть огромное количество материалов. Нет, для вас это "многабукаф". Поэтому вы сделали свой собственный велосипед, кривой, с багами, без документации, который понятен только вам.
Со стороны: возможно, вместо изобретания своего кривого велосипеда, нужно было потратить это время на изучение "базы", а потом, вооружённым знаниями сделать реальную задачу?
Посмотрите историю: то, что вы называете "монструозным кд" сделано выпускником ВУЗа и прожило два десятка лет без необходимости что-то изменять. Задумайтесь: вы не стали разобраться в том, что 20 лет назад было ясно каждому студенту, а стали пилить по мере своего незнания.
Не похоже, что вы занимаетесь продуктивной деятельностью.
Развитие Цивилизации это не когда каждый делает свои колёса. Развитие - это когда берут чужие колёса и делают автомобиль.
55. dabu-dabu 361 29.09.25 10:30 Сейчас в теме
(54) Не очень понял, про какой "отлично работающий код" вы говорите.
Если про КД, то у меня больше 20 лет практики, в том числе и использования КД.
Работал с КД 1, КД 2 и КД 3.
И я нигде не говорю, что существующие решения плохие.
Я говорю про то, что они далеко не всем и не во всех случаях подходят.
56. rambomax 22 29.09.25 11:15 Сейчас в теме
(55) Мой комментарий был не вам, а господину, написавшему, что его велосипед "на порядки прогрессивней КД и 1С:Шина")))

Ваше решение "лучше подходит" только по одному показателю: "детям" с ним проще разобраться, поэтому "внедрение" быстрее.
У вас принцип "будь проще - массы потянутся")))
Именно поэтому там столько слов про JSON, который во всём существенно хуже технологии XML, кроме одного показателя: "зумеры-однодневки" постоянно читают про него в статьях по Веб-разработке и думают, что "браузер" и "1С" это одно и то же, поэтому больше его "любят".
И принцип "каждый сам кузнец своего несчастья" вас тоже настигнет, просто позже: жизнь такая интересная штука, что она достаточно длинная, чтобы вы успели увидеть, как объём данных в интегрируемых системах вырастет настолько, что ваша разработка "не вывезет".
Именно поэтому лучше "на входе" сразу прикинуть, примерно через сколько времени количество претензий превысит приемлемый для вас уровень и на основании этого принять решение, стОит или нет делать собственный велосипед. А в статье, похоже, основной расчёт на то, что "живи быстро, умирай завтра", но не у всех так получается)))
Да, "мистер Фёст", который с помощью "синема"(XML) хотел возвышать людей, проиграл "мистеру Секонду", который дал людям более им понятное, но, возможно лучше скакать за маленькой компанией с "Фёстом" - использовать "проверенные временем решения" и сразу надеяться на долгую жизнь)))
57. dkoder 6 30.09.25 12:33 Сейчас в теме
(54) а ты смешной...
Столько дичи, давно не читал. Даже комментировать не буду... - крути дальше чужие колеса, говорят, особенно от телеги хороши...
35. dabu-dabu 361 16.09.25 16:37 Сейчас в теме
(33) А вообще предлагаю потестировать и сравнить скорость:
В фреймворке есть функция
кт_ОбменСервер.ПолучитьДанныеИзВнешнейСистемыЗапросом
Вы ей даете текст запроса с параметрами, который система выполнит в смежной системе и вернет вам результат в виде массива структур. Можете так-же прописать код создания таблицы значений.
Но если будете передавать значения ссылочного типа, то нужно прописать правила выгрузки таких типов.
24. triviumfan 102 15.09.25 23:04 Сейчас в теме
Фоновое задание дожидается завершения транзакции и затем выполняет отправку

Каким образом?
25. dabu-dabu 361 16.09.25 10:34 Сейчас в теме
(24) установка блокировки на РС очереди
соответственно платформа ждет возможности установить блокировку, которая появится после завершения транзакции записи
40. triviumfan 102 20.09.25 23:38 Сейчас в теме
(25) Не нашёл в коде расширений никакой блокировки =\
41. dabu-dabu 361 21.09.25 12:50 Сейчас в теме
(40) см. кт_ОбменСервер.ВыполнитьОбменДанными()
Прикрепленные файлы:
42. triviumfan 102 22.09.25 12:37 Сейчас в теме
(41) А, вот вы про что...
это на случай, если транзакция записи ещё не завершена

Разве это возможно? Если объект ещё записывается и транзакция не завершена, то и записи в вашем независимом регистре не будет. Да и фоновое ведь запускается во время записи и никакого ожидания тут нет, т.к. оно выполняется асинхронно.
43. dabu-dabu 361 22.09.25 12:47 Сейчас в теме
(42) Да, выполняется асинхронно, но механизм транзакции ведь единый.
Фоновое задание запускается после записи в РС очереди, но до окончания транзакции записи.
Когда мы пытаемся установить блокировку данных, система проверяет наличие незавершенной транзакции и если она есть ждет некоторое время (по умолчанию 20 секунд). Если за это время транзакция завершается, то блокировка устанавливается, если нет, то выводится исключение.
Длительность ожидания можно настроить для каждой базы в конфигураторе: Администрирование -> Параметры информационной базы -> Прочее -> Время ожидания блокировки данных.

И кроме того, вы некорректно указали, что при незавершенной транзакции записей в данных не будет. В этот момент данные уже записаны и их можно считать, в том числе другим сеансом. Такое надо знать всем программистам, учите мат. часть.
44. triviumfan 102 25.09.25 11:24 Сейчас в теме
(43)
И кроме того, вы некорректно указали, что при незавершенной транзакции записей в данных не будет. В этот момент данные уже записаны и их можно считать, в том числе другим сеансом

8.3.27, MS SQL (READ COMMITTED SNAPSHOT)
Прикрепленные файлы:
45. dabu-dabu 361 25.09.25 11:56 Сейчас в теме
(44) учитывайте, что поставив точку останова в событии ПриЗаписи, записываемый объект еще в базу не записан, хотя набор записей записан. А на скриншоте не видно что у вас в отборе запроса.
Кроме того, возможно, у вас режим блокировки Автоматический, а не Управляемый. Там, на сколько я помню работает не так, хотя вроде зависит от СУБД.
Да, и если у вас файловая база, то, да, вы данных так не увидите, насколько я помню.
Вы думаете зачем в типовых в событии проведения, записи из регистров вначале удаляются, вот что-бы можно было читать без данных перепроводимого документа.
Почитайте:
https://its.1c.ru/db/metod8dev/content/5839/hdoc
там в частности есть описание проблемы грязного чтения
46. triviumfan 102 25.09.25 14:40 Сейчас в теме
(45)
учитывайте, что поставив точку останова в событии ПриЗаписи, записываемый объект еще в базу не записан, хотя набор записей записан. А на скриншоте не видно что у вас в отборе запроса.

В данном примере ссылка уже есть, а в запросе, очевидно, отбор по ссылке.
Управляемые блокировки (как в 99.9% типовых баз на текущий момент).

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

Нет, это делается для правильного получения остатков без учета текущего документа.
И вообще движения тут не при чём, т.к. у вас независимый регистр сведений. Блокировки управляемые, проблемы грязного чтения не будет, т.к. уровень изоляции не позволит этого.
47. dabu-dabu 361 25.09.25 14:48 Сейчас в теме
(46)
для правильного получения остатков без учета текущего документа

правильно, внутри одной транзакции записи с проведением

а независимый РС и набор записей РН уровнем изоляции не отличаются
27. dabu-dabu 361 16.09.25 10:39 Сейчас в теме
Видео как начать использовать фреймворк:
https://drive.google.com/file/d/1jSBWoWKNyvfkyOyrkyLsVDIH2HlHxt9O/view?usp=sharing

Планирую еще видео по краткому знакомству с основными функциями и возможностями
troy66; Rafaraf; +2 Ответить
38. Rafaraf 38 17.09.25 08:12 Сейчас в теме
(27) Можно ли выложить видео в vkVideo или Яндекс-диск ? по некоторым причинам доступ к гуглу запечатан. Спасибо!
39. dabu-dabu 361 17.09.25 09:40 Сейчас в теме
48. troy66 26.09.25 05:49 Сейчас в теме
Тема очень интересная и полезная. Буду рад увидеть продолжение ваших публикаций и надеюсь, что вы не отложите их надолго. Поделитесь, пожалуйста, какими будут ваши ближайшие шаги в данном направлении.
49. dabu-dabu 361 26.09.25 11:01 Сейчас в теме
(48) Спасибо за проявленный интерес.
Ближайшие планы:
1. постараюсь на следующей неделе подготовить несколько видео по знакомству с основными функциями
2. планирую протестировать и подготовить разные версии фреймворка для разных версий платформ
3. дополню описание API в коде фреймворка, там где сейчас оно отсутствует
4. сделаю отдельную публикацию где все выложу, в том числе последнюю версию фреймворка, здесь она достаточно старая, хоть и существенных изменений не было. По хорошему нужен git, но это не в ближайшее время.

Буду рад обратной связи по тому, чего не хватает, какие материалы или функции
50. gybson 28.09.25 08:24 Сейчас в теме
1. Транспорт можно/надо исключить из рассмотрения интеграции
2. В данном контексте HTTP это еще один способ передать текстовый файл.

80% работы это эксплуатация интеграции.
52. dabu-dabu 361 28.09.25 12:44 Сейчас в теме
(50) Транспорт это важный элемент, предоставляющий в частности возможности он-лайн обмена, а это крайне важная история во всей концепции системы. Реализация той-же бесшовной интеграции, да и вытягивающего принципа была-бы невозможна без возможности вызова синхронных запросов.
И "текстовый файл" здесь вообще не причем, данные можно было-бы передавать и в двоичном виде, что дало бы свои плюсы, но и свои минусы.

80% работы это эксплуатация интеграции.

А вот это очень важное замечание.
И по нашей многолетней практике использования данного фреймворка:
Мы тратим на поддержку всего менее 10 часов трудозатрат в месяц.
При этом интеграций у нас на поддержке, если считать по точка-точка - более 70. У 6 клиентов.
Есть еще интеграции, где мы внедряли, но не мы поддерживаем.
В интеграциях и типовые системы (Бухгалтерия, ЕРП, Документооборот, ЗУП) и самописные.

И это достигается использованием сильно иных принципов, относительно той-же КД.
А при использовании КД я с вашей оценкой согласен.
51. mike-d 28.09.25 11:18 Сейчас в теме
Автору (или авторам) большой респект за фреймворк!

Попробовал реализовать "вытягивающий принцип". Охрененно. В начале года делал задачу на OData, за пару дней переделал на этот фреймворк. Две функции: кт_Обмен.ПолучитьНастройкиИнтеграции и кт_ОбменСервер.ПолучитьДанныеИзВнешнейСистемыЗапросом заменили (и существенно упростили) весь обмен.

С нетерпением жду продолжения публикации. Пока начал пробовать "событийная интеграция". В связи с этим вопрос: можно ли в правилах описать (подозреваю, что можно) преобразование одного типа документа в другой. К примеру из РеализацияТоваровУслуг одной базы создавать ПоступлениеТоваров в другой? Этакий местный ЭДО внутри одного "холдинга"...
53. dabu-dabu 361 28.09.25 13:00 Сейчас в теме
(51) Спасибо на добром слове. Разрабатывает конечно команда, я прежде всего основной идеолог. Хотя скорее разрабатывали, последние года полтора развитие минимально, в отсутствии новых требований.

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

По вашему вопросу: я так понимаю, вы про он-лайн передачу изменений в данных.
В видео было описание передачи Справочник.ВидНоменклатуры - Справочник.ТипНоменклатуры, вот это оно. В правилах просто указываете имя в приемнике, будет как-то так:

Правила = кт_Обмен.СтруктураПравилВыгрузкиОбъекта("Документ.РеализацияТоваровУслуг", НастройкиИнтеграции);
Правила.ВидПолучателя = "ПоступлениеТоваров";

Посмотрите описание у функции кт_Обмен.СтруктураПравилВыгрузкиОбъекта
Для отправки сообщения требуется регистрация/авторизация