Интеграция 1С и шишки, которые я набил

25.09.24

Интеграция - Перенос данных 1C

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

Содержание

  1. Ключевые правила работы
  2. Кейс «Анализ объема»
  3. Кейс «Есть контакт!»  
  4. Кейс «Не то, чем кажется»
  5. Кейс «Мистика»
  6. Выводы

 

Я Виктор, программист 1С. Свой путь в программировании начал в 1989 году. Сначала это был Pascal, и я участвовал в разработке программы по расчету заработной платы. В 2000 году «подсел» на 1С и уже больше 20 лет работаю в этой сфере.

 

Ключевые правила работы

Одна из часто встречающихся задач при работе с конфигурациями 1С – это разработка механизмов обмена с другими базами данных или приложениями. Способов выполнения этих задач существует огромное количество, и выбор конкретного зависит от того, с какой именно системой будет осуществляться обмен, с какой периодичностью и какой объем информации нужно отправлять (получать).

Участвуя в разработке таких механизмов, я вынес для себя несколько важных вещей:

  1. Обязательно производить тщательный анализ получаемых, отправляемых данных. Нужно точно определить минимально необходимый набор данных для обмена. Это позволяет сократить количество ресурсов: объем памяти, сетевой трафик и т.п. В то же время нельзя упускать абсолютно необходимые данные. Важно проверять возможность некорректной интерпретации данных, участвующих в обмене. Если этого не сделать, то при получении (обработке в контрагенте обмена) могут возникать, например, дубли объектов либо изначально разные объекты будут интерпретироваться как один и тот же объект и соответственно перезаписываться.
  2. Важен, а иногда просто необходим, контакт с коллегами, обслуживающими контрагента (систему) обмена и людьми, обеспечивающими работу «железа» (сеть, сервера и т.п.).
  3. Велика роль консультанта, который должен владеть навыками работы как в нашей БД, так и в системе-контрагенте. Если консультант хорошо знаком с обеими системами, это поможет избежать возможных ошибок при разработке обмена, так как практически всегда есть некие нюансы в работе систем и есть вещи, которые на самом деле являются не тем, чем кажутся на первый взгляд.

 

Кейс «Анализ объема»

Речь пойдет о разработке обмена между двумя базами 1С при помощи HTTP-сервиса.

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

Казалось бы, объем данных небольшой: на входе массив строк, каждая из которых длиной 9 символов, а на выходе та же строка + дата и число. Сервис был реализован и успешно протестирован в базах разработки, и все отлично работало, но…

Когда сервис был внедрен в базу разработки, то начались проблемы. Оказалось, кто количество договоров, по которым происходит обмен, исчисляется десятками тысяч. А кроме того, параллельно с этим обменом работает еще множество других. В результате контактов с людьми, ответственными за «железо», удалось определить оптимальный объем, который можно отправлять в одном пакете. Сервис был переделан и обмен был разбит на несколько потоков. Таким образом проблема была решена.

 

Кейс «Есть контакт!»  

Необходимо было получить данные из сторонней БД (не 1С). Задача заключалась в том, чтобы запрашивать через web-сервис некоторую таблицу по определенным условиям. Было реализовано получение данных по API, но выяснилось, что при этом сервис не поддерживает отбор, а возвращает только всю таблицу.

Соответственно, скорость работы была очень низкой. На получение всех данных уходило 90% времени, еще около 5% на отбор нужных строк и только 5% приходилось на обработку полученных данных.

После общения с разработчиками сторонней системы нам с архитектором удалось убедить их в небольшой доработке сервиса. В результате время, затраченное на получение данных, уменьшилось примерно с 12 минут до 3-5 секунд и функционал стал работать без «тормозов».

 

Кейс «Не то, чем кажется»

В этом кейсе нужно было реализовать обмен с помощью обработки «Универсальный обмен данными в формате XML» с несколькими идентичными конфигурациями. Состав объектов: подразделения, сотрудники, кадровая история (только состояние сотрудника и где работает). Причем по сотрудникам нужны были только ФИО и табельный номер.

Правила обмена я написал в КД 2, протестировал на одной из баз и отдал на проверку консультанту.

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

Выяснилось, что базы изначально были созданы копированием, и часть ссылок в них совпадают (подразделения). Хотя это были разные организации (филиалы), чтобы не плодить записи в справочнике подразделений, некоторые были просто изменены (переименованы). Соответственно, при последовательной загрузке из разных баз данные перезаписывались, так как был реализован самый правильный и надежный поиск объекта – по GUID’ам. Пришлось менять правила поиска. После чего проблема с подразделениями решилась и правила были отданы заказчику.

На этом эпопея с обменом не закончилась. После проверки заказчиком выяснилось, что несмотря на то, что филиалы находятся в разных городах, периодически происходят переводы сотрудников и необходимо, чтобы в базе-получателе не возникал «дубль» сотрудника и сохранялась вся его история переводов. Два элемента из разных баз с разными GUID'ами и кодами (табельными номерами) должны были интерпретироваться как один.

Поиск по наименованию (ФИО) тоже не подходил, так как тогда возникала проблема при смене фамилии. Другие поля, по которым можно было бы производить поиск (ИНН, СНИЛС), не могли участвовать в обмене, потому что содержат персональные данные. Пришлось вместе с консультантами искать косвенные данные (не из справочника сотрудников), которые бы помогли однозначно идентифицировать сотрудника и не относились к персональным. В результате решили использовать регистр, в котором хранится история смены ФИО.

 

Кейс «Мистика»

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

Все было проверено на базах разработки и мной, и консультантом. Все работает, но…

Когда функционал был передан в рабочую базу, начались непонятные проблемы. ПФ то формировались, то нет,причем по непонятным причинам. При массовом их создании/передаче они не всегда формировались в базе-источнике. Но если по тем же данным (у того же объекта, в том же периоде) формировать их индивидуально, то все отрабатывало отлично. Весь код был проверен десятки раз, причем не только мной, но и архитектором – нет ошибок в реализации. Просил проверить его и других разработчиков – тот же результат. Все должно работать, но не работает. Проверялось и создание ПФ и отправка – проблему так и не смогли найти. К сожалению, потом меня перевели на другой проект у этого же заказчика, и я не знаю, чем закончилась история…

 

Выводы

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

Главные выводы, которые я сделал, выполняя задачи по интеграции:

— анализ, анализ и еще раз анализ

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

Всем хороших, интересных задач и дружелюбных коллег!

См. также

SALE! 10%

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

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

55778 50200 руб.

04.08.2015    166775    334    278    

375

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.236.x) и БП 3.0 (3.0.164.x). Правила подходят для версии ПРОФ и КОРП.

35000 31500 руб.

15.12.2021    24192    171    51    

130

SALE! 15%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 руб.

12.06.2017    141848    799    297    

420

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.19.x).

35000 31500 руб.

23.07.2020    51570    228    70    

187

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    72212    182    150    

124

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171312    302    257    

378

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

55778 50200 руб.

29.10.2018    56303    59    105    

61

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Платформа 1C v8.2 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

15300 руб.

18.02.2016    187032    590    509    

527
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mszsuz 336 25.09.24 20:13 Сейчас в теме
В "Ключевые правила работы" не хватает пункта про использование логов. Вы не станете хорошим разработчиком до тех пор, пока ваши интеграционные решения не будут вести логи своей работы.
AlexeyChernyev; PROSTO-1C; +2 Ответить
2. titanium2008 46 25.09.24 22:00 Сейчас в теме
Интеграция строится на трех китах: отказоустойчивость, гарантированная доставка и производительность.
nightowl5; AlexeyChernyev; PROSTO-1C; maksa2005; +4 Ответить
3. пользователь 26.09.24 10:01
Посты, которых мы заслужили... Делать интеграцию и на этапе прода понять, что ключевые справочники не сопоставлены - уровень среднестатистического бухгалтера, а не разработчика.
bulpi; AlexeyChernyev; GenAcid; qwinter; +4 1 Ответить
4. &rew 52 26.09.24 10:48 Сейчас в теме
"К сожалению, потом меня перевели на другой проект у этого же заказчика, и я не знаю, чем закончилась история…" Читается как "мне стало/было неинтересно..." У того же заказчика и не было интереса спросить, чёйто? А вообще такое бывает нередко. Даже при массовой отправке на печать на сетевой принтер (в моем случае из УПП) не все доки выходили на печать.
Не коррелирует с "— анализ, анализ и еще раз анализ".

"Соответственно, при последовательной загрузке из разных баз данные перезаписывались, так как был реализован самый правильный и надежный поиск объекта – по GUID’ам."

Как по GUID’ам перенести из БП 3 в УТ 11 контрагента? В ут - две "сущности в виде гномика". Контрагент и Партнер.
Опять же "После загрузки из нескольких баз часть подразделений «терялась» это как раз следствие самого правильного поиска объекта.

С ФИО - вообще "порожняк". Иванов Иван Иванович. Как его однозначно идентифицировать с помощью регистра смены ФИО?

"В этом кейсе нужно было реализовать обмен с помощью обработки «Универсальный обмен данными в формате XML» с несколькими идентичными конфигурациями." Честное слово - надеюсь это не вашего архитектора идея была.

Конечно, не зная всей диспозиции по приведенным примерам, судить объективно невозможно, но все таки как элемент рефлексии перед сном типа "надо было в тот раз так ответить..." мой коммент вполне пойдет.
Прикрепленные файлы:
7. Brawler 458 27.09.24 14:16 Сейчас в теме
(4)
Как по GUID’ам перенести из БП 3 в УТ 11 контрагента?

Легко))
Создаются два элемента и каждому один и тот же GUID задается)))
Хуже другое. В УТ11 больше справочников договоров, вот там веселье, да и в ERP.
5. Somebody1 69 27.09.24 08:58 Сейчас в теме
Краткое содержание статьи: на тестовом контуре всё работает, а на продуктовом начинаются проблемы.
d4rkmesa; +1 Ответить
6. alexey_kurdyukov 165 27.09.24 14:14 Сейчас в теме
Прямо-таки чемоданная фабрика какая-то!
Оставьте свое сообщение