Пример разработки инструмента загрузки данных SAP в 1С

14.09.22

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Это описание конкретного примера программной реализации инструмента интеграции программ SAP и 1С, когда учет ведется в обеих программах. В нашем случае данные из SAP загружаются и интерпретируются в объекты данных 1С.

В то время как компания SAP заявила об уходе с российского рынка, наша компания, назло немцам, решила внедрить программный продукт SAP HR, модуль, отвечающий за кадровый учет и расчет зарплаты. До этого кадровый учет велся в 1С: ЗУП 3.0. Данные из ЗУП с помощью типового механизма синхронизации попадали в 1С:Бухгалтерия 3.0 ПРОФ, которой и после перехода на SAP требуются сведения о начислениях по зарплате. Надо заметить, что внедрением и переводом кадрового учета из 1С в SAP занималась отдельная организация-разработчик. Сопровождение всего SAPа также осталось на ней, нам достался лишь весьма ограниченный доступ. Проблему загрузки в 1С зарплаты сотрудников, рассчитанной в SAP, предстояло решить самостоятельно. В нашем распоряжении со стороны SAP оказался только текстовый файл выгрузок с начислениями и удержаниями, и ещё IDOC.

Текстовый файл начислений представляет из себя простой csv. В файле есть заголовок с перечислением названий полей и далее строки данных. В каждой строке коды различных объектов из базы SAP и сумма начисления или удержания, перечисленные через точку с запятой.

 

 

IDOC – промежуточная база-концентратор, содержащая ограниченную выборку из SAP по самым ключевым данным: по сотрудникам и их документам, подразделениям, банковским счетам сотрудников и другой справочной информации. Но там и близко нет ничего о начислениях или удержаниях.

Задача - сделать так, чтобы из всего этого в 1С:Бухгалтерия формировались привычные и понятные для бухгалтера документы: «Отражение зарплаты в бухучете» и «Резерв отпусков».

Часть данных, конечно, поддавалась «прямому сопоставлению». То есть когда определенному коду SAP соответствует конкретный элемент конкретного справочника в 1С. Но часть данных представляла из себя клубок проблем. И самым проблемным из всех оказался «Способ учета зарплаты», который в «1С: Бухгалтерия» и задает проводки по счетам учета. Первая сложность в том, что SAP делает из начислений мешанину. Например, есть начисление X, есть начисление Y. А есть ещё начисление Z, которое является суммой начислений X и Y. И все три начисления отдельными строками присутствуют в файле выгрузки SAP. На настоящий момент у нас в программе насчитывается порядка трехсот видов начислений и удержаний, которые встречаются в файле SAP. А вот какие из них должны попадать в документы отражения зарплаты, принимает решение бухгалтер. В каком-то случае ему надо, чтобы попали начисления X и Y с разными способами учета зарплаты. В каком-то случае надо, чтобы в документ попало именно аккумулирующие начисление, а составляющие его начисления просто отбросились. Причем бухгалтер в какой-то момент может передумать. А ещё почти каждый месяц появляются новые виды начислений. А некоторые из уже имеющихся видов могут изменить свою интерпретацию в документе: например, был один счет, стал другой.

Вторая сложность интерпретации кодов SAP из строки выгрузки в том, что разное сочетание кодов по-разному задает значения показателей начислений в документе отражения зарплаты. И здесь могут быть самые разные вариации: один код SAP может указывать одновременно на несколько показателей в документе «Отражение зарплаты»; или сочетания кодов разных полей могут задавать один и тот же показатель в документе. И это всё тоже может быть не навсегда. Разбираться в программном коде с интерпретацией каждого конкретного вида начисления в данном случае бесполезно, их слишком много, и они слишком изменчивы.

Мне приходилось встречать интеграционные решения между 1С и другими системами, правда задачи интеграции не были такой сложности. И во всех организация, так называемого, маппинга всегда сводились к созданию «свалки» тематических справочников и регистров. В коде, как-правило, при обращении к этим объектам творится «каша»: данные просто теряют свою ссылочную природу 1С и представляют собой таблицы, связанные кодами. Стремление архитектурно упорядочить некий хаос на входе можно понять, и, наверняка, есть задачи, для которых это оправданно. Но та выгрузка начислений из SAP, которую нам предстояло обработать, где конечный результат интерпретации по сути не ясен, требовала других подходов. К тому же нужен был инструмент доступный пользователю, во всех смыслах этого слова: от интерфейса до понимания того, что происходит.

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

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

 

 

Как видно из структуры данных плана, никаких конкретных значений, типа «Вид операции» или «Подразделение», все реквизиты и значения таблиц задаются или выбираются в режиме приложения. Создавая элементы плана видов характеристик, пользователь указывает программе как ей обработать встретившееся значение. За то какое поле из файла будет интерпретировать тот или иной элемент плана вида характеристик отвечает реквизит «ПредопределенноеСопоставление». В него записывается название поля. Хотя есть элементы, у которых данный реквизит остается пустым. Это в тех случаях, когда пользователь выбирает поиск интерпретации по значениям нескольких полей файла выгрузки SAP. В порядке применения элементов плана видов характеристик нет иерархии как таковой. Для интерпретации значения какого-либо поля будут применены все элементы настроек, которые имеются для данного поля. Но технологически в первую очередь отрабатывают настройки с заполненным реквизитом «ПредопределенноеСопоставление», то есть те, которые интерпретируют конкретное значение конкретного поля. А во вторую очередь отрабатывают настройки интерпретации набора полей.

Реквизит «Дополнительное», установленный в «Истина», позволяет «выключить» элемент плана из процедуры интерпретации.  Два реквизита «СоздаватьЭлементыСправочника» (на форме «Создавать элементы справочника при их отсутствии») и «ОшибкаПриПустомЗначении» (на форме «Если соответствие не найдено - считать ошибкой загрузки данных») работают, когда для значения поля файла выгрузки SAP программе не удалось подобрать ни одного значения в базе 1С. Реквизит «СоздаватьЭлементыСправочника» становится доступен на форме только когда тип значения выбран «справочник». Это видно на скрине с настройкой справочника «Физические лица». Если в данном реквизите установлена галочка, то программа создаст новый элемент в заданном справочнике. Порядок создания и заполнения элемента описан в коде программы для каждого конкретного справочника отдельно.

В элементе настройки реализованы 4 вида интерпретации. Выбранный вид интерпретации заносится в реквизит «ВидСопоставления»:

  • Прямая интерпретация. Возможно только для простых типов, таких как «число» или «строка». Значения переводятся непосредственно в значения 1С;

 

 

  • Интерпретация по значению какого-либо реквизита справочника, если в качестве результирующего типа значения выбран справочник. Реквизит выбирается в «Поле поиска»;

 

 

  • Интерпретация по таблице сопоставлений (таблица СопоставлениеДанных). В этой таблице значениям конкретного поля файла загрузки проставлены соответствующие значения из базы 1С. Это могут быть ссылки, значения перечислений, строки или числа.

 

 

В таблице сопоставления есть галочка «Технологическое», которой можно пометить те значения полей в файле выгрузки, которые должны быть отброшены при формировании зарплатных документов. Это к решению задачи про начисления «X + Y = Z», где бухгалтер решает какая часть равенства должна отразиться в бухгалтерском балансе. Очевидно, что «Значения SAP» здесь не могут повторяться, иначе результирующих значений будет много. Если такая ситуация неопределенности результата случается, результирующее значение остается пустым и в регистре обработанных данных ставится отметка об ошибке интерпретации. 

  • Интерпретация по таблице сопоставлений набору из нескольких полей (таблица «СопоставлениеПоНабору»). В наборе может быть произвольное количество произвольных полей. Пользователь сам выбирает, какие поля файла загрузки попадут в набор. А после и задает значения полей, которым будет соответствовать то или иное значение в базе 1С.

 

 

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

Среди полей файла выгрузки SAP есть поля, значения которых существенны для заполнения документов зарплаты, такие как «Подразделение» или «Вид начисления». А есть и те, которыми можно пренебречь. Например, «Подраздел персонала». Для первой группы полей, в случае ошибок интерпретации, попадание строки начисления в документ отражения зарплаты должно быть запрещено, так как начисление некорректно отразиться в проводке. А для второй группы - ошибки не играют большой роли. По логике программы строка начисления, в которой хотя бы для одного значения поля проставлена ошибка интерпретации, не может попасть в документ отражения зарплаты. Для того чтобы начисления с ошибками в интерпретации незначащих полей всё же попадали в зарплатные документы, существует галочка «ОшибкаПриПустомЗначении». При снятой галке, даже если для загружаемого значения не нашлось ни одного соответствующего значения в базе 1С, пустой результат не будет считаться ошибкой.

По мере интерпретации загружаемых значений заполняется регистр обработанных данных. Это регистр сведений следующего вида:

 

 

Как видно из его структуры, содержимое регистра ненамного более упорядочено, чем данные в файле на загрузку. Только ко всему добавились результаты интерпретации. Но на самом деле – это и есть то, к чему следует стремиться. Данные имеют конкретный адрес («НомерСтрокиВФайле» и «ИмяФайлаЗагрузки»), и теперь они типизированы (измерение «ПолеИзФайла» хранит значение элемента плана видов характеристик). В добавок есть готовое значение, которое можно заносить в документы 1С. И это на самом деле достаточная степень упорядочивания. Данные, хранимые в таком виде, легко собираются запросами, как угодно. И дальше их нетрудно распределить по табличным частям зарплатных документов. Кроме этого, например, у нас сейчас в коде описаны три варианта формирования документов. Точнее три варианта заполнения документов.  Есть вариант загрузки по сотрудникам, когда в документ не попадают начисления для которых в базе 1С не было найдено физическое лицо. При этом все начисления в документах персонифицируются, то есть заносятся на конкретного сотрудника. Есть вариант формирования, при котором ошибки в подборе физических лиц не учитываются, начисления аккумулируются на подразделениях и заносятся в документы без заполнения графы «Сотрудник». Вариантов может быть масса. Разделение процесса интерпретации и формирования документов дало множество плюсов. Даже если требуется кардинально сменить интерпретацию каких-либо данных файла SAP, то просто создаются или меняются настройки – элементы плана видов характеристик, и, если требуется, дописывается новый вариант формирования документов.

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

Как было сказано выше, тот же план видов характеристик, который интерпретирует данные файла SAP о зарплате сотрудников, работает и для интерпретации данных IDOC. База IDOC используется для обогащения справочников 1С. Из неё грузятся сведения о физических лицах, подразделениях, банковских счетах и о многом другом. И здесь план видов характеристик помогает сопоставлять, например, документы физических лиц. Так как в IDOC от документов есть только коды. Настройка интерпретации сопоставляет каждому этому коду определенный тип документа, который в «1С:Бухгалтерия» задается перечислением. В некоторых случаях настройка интерпретации через план видов характеристик используются лишь для того, чтобы определить, какой реквизит справочника содержит код SAP. Обращение к реквизиту объекта вроде бы легко прописать в тексте программы, ведь их названия почти никогда не меняются. Но, если использовать настройку, то уже не приходится менять программный код, когда добавляется новый справочник для сопоставления, или удаляется какой-то старый. Причем с этой задачей может справиться сам пользователь.

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

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

См. также

SALE! 20%

Перенос данных 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 22338 руб.

12.06.2017    141508    798    297    

419

SALE! 10%

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

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

35000 31500 руб.

15.12.2021    24012    169    51    

127

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    51239    228    69    

185

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

28500 руб.

15.11.2022    20677    21    49    

38

SALE! 10%

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

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    36584    94    66    

89

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    56207    59    105    

61

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    171171    303    257    

378

SALE! 15%

Перенос данных 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 13005 руб.

18.02.2016    186873    589    509    

526
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. so-quest 140 20.09.22 07:34 Сейчас в теме
Имхо, конечно, но проще было текст в хмл преобразовать и дальше использовать КД2 или КД3
2. Manoshkin 357 19.10.22 08:55 Сейчас в теме
3. Manoshkin 357 19.10.22 09:01 Сейчас в теме
"У плана есть типовой реквизит «Тип значения», который и задает тип искомого значения 1С." Я бы ещё дописал, что "и позволяет приводить значения к этому типу штатными функциями".
Оставьте свое сообщение