Wiki source code of Синхронизация 1C с UNA HR
Last modified by Mihail Opinca on 2026/02/02 17:12
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | ^^[[Вернуться назад: Для администраторов, внедренцев, разработчиков>>Una4_Admins||rel="__blank" title="Для администраторов, внедренцев, разработчиков"]]^^ | ||
| 2 | |||
| 3 | {{box}} | ||
| 4 | ==**Синхронизация 1C с UNA HR**== | ||
| 5 | {{/box}} | ||
| 6 | |||
| 7 | |||
| 8 | == Модуль управления персональными данными в подразделениях == | ||
| 9 | |||
| 10 | Модуль управления персоналом | ||
| 11 | |||
| 12 | Модуль управления персональными данными в подразделениях является важным компонентом системы. Модуль позволяет собирать полные и актуальные данные о персонале. Управление персоналом включает в себя как сбор регистрируемых данных, так и автоматическое управление конкретными потоками: | ||
| 13 | |||
| 14 | * Набор персонала на уровне подразделения | ||
| 15 | * Перевод персонала | ||
| 16 | * Записи в реестре персонала | ||
| 17 | |||
| 18 | Способ, которым персонал, нанятый в подразделении, в конечном итоге попадает в базу данных на уровне подразделения – UNA.md – обеспечивается хорошо отлаженным механизмом синхронизации. | ||
| 19 | |||
| 20 | Механизм синхронизации — это самая базовая процедура переноса данных из системы учета в автоматизированную систему учета UNA.md, например, из 1C в UNA.md. | ||
| 21 | |||
| 22 | В автоматизированной системе учета UNA.md реализованы два метода синхронизации данных из модуля HR, а именно: | ||
| 23 | |||
| 24 | 1. **Файловый метод** — необходимая информация загружается из системы учета в один или несколько XML-файлов. С помощью утилиты, разработанной командой Unisim-Soft, данные извлекаются из XML-файла или файлов. После обработки данных создаются таблицы миграции и формируются необходимые скрипты для корректного заполнения информации в модуле «Управление персоналом». Весь этот процесс выполняется в 2 клика. | ||
| 25 | |||
| 26 | 2. **Метод драйвера ODBC** — в системе учета создается автоматизированная процедура, которая «передаёт» данные в базу данных Oracle, откуда UNA.md получает их для заполнения документов и номенклатуры, необходимых для модуля «Управление персоналом». | ||
| 27 | |||
| 28 | Долгожданные пользователями UNA.md механизмы синхронизации были успешно внедрены в нескольких подразделениях, где сотрудникам приходилось вести учет в двух системах. Из системы с меньшим потенциалом для регистрации и ведения учета был применен механизм синхронизации данных между 1C и Oracle, откуда UNA.md переняла данные, разместив все необходимое в документах для модуля управления персоналом. | ||
| 29 | |||
| 30 | |||
| 31 | == 1C – Механизм синхронизации Oracle == | ||
| 32 | |||
| 33 | (% class="xwiki-table" style="border: none;" %) | ||
| 34 | ((( | ||
| 35 | |= [[image:FILE1.png||width="100%", height="auto"]] |= Файловый метод | ||
| 36 | |= [[image:FILE2.png||width="100%", height="auto"]] |= 1. Запуск обработки в 1C: загрузка объектов в формате XML | ||
| 37 | ))) | ||
| 38 | (% class="xwiki-table" style="border: none;" %) | ||
| 39 | ((( | ||
| 40 | |= [[image:FILE3.png||width="100%", height="auto"]] |= 2. Запуск приложения, созданного Unisim-Soft | ||
| 41 | |= [[image:FILE4.png||width="100%", height="auto"]] |= 3. Подключение к базе данных Oracle | ||
| 42 | ))) | ||
| 43 | (% class="xwiki-table" style="border: none;" %) | ||
| 44 | ((( | ||
| 45 | |= [[image:FILE5.png||width="100%", height="auto"]] |= 3. Подключение к базе данных Oracle. Создание необходимых таблиц | ||
| 46 | |= [[image:FILE6.png||width="100%", height="auto"]] |= 4. Передача данных в таблицы | ||
| 47 | |= [[image:FILE7.png||width="100%", height="auto"]] |= 5. Создание документов и номенклатур в UNA | ||
| 48 | ))) | ||
| 49 | |||
| 50 | == Механизм синхронизации 1C – Oracle: Метод через драйвер ODBC == | ||
| 51 | |||
| 52 | 1. Установка драйвера ODBC для Oracle | ||
| 53 | |||
| 54 | Перед началом установки драйвера ODBC для Oracle необходимо проверить наличие в системе драйвера Microsoft — MSDAORA или другого драйвера Oracle — OraOLEDB. | ||
| 55 | |||
| 56 | Для этого создадим текстовый файл, в котором изменим расширение с .txt на .udl. При открытии файла появится следующее изображение: | ||
| 57 | |||
| 58 | [[image:FILE8.png||width="600px", height="300px"]] | ||
| 59 | |||
| 60 | Перейдём на вкладку «Поставщик данных», где находится весь список драйверов в системе. | ||
| 61 | |||
| 62 | Примечание: Если необходимый драйвер Microsoft — MSDAORA или Oracle — OraOLEDB отсутствует, то установим его. | ||
| 63 | |||
| 64 | Чтобы не ошибиться с подключением, можно воспроизвести его, используя файл .udl. На вкладке «Поставщик данных» выберем необходимый поставщик, перейдём на вкладку «Подключение», заполним необходимые поля в соответствии с назначением. | ||
| 65 | |||
| 66 | [[image:FILE9.png||width="400px", height="600px"]] | ||
| 67 | |||
| 68 | Мы нажимаем кнопку «Проверить соединение». Если соединение установлено успешно, то открываем файл .udl с помощью блокнота. Файл должен содержать следующий текст: | ||
| 69 | |||
| 70 | Provider=MSDAORA.1;Password=uppr;User ID=uppr;Data Source=clouddev;Persist Security Info=True | ||
| 71 | |||
| 72 | 2. Создание процедуры в рамках обработки 1C | ||
| 73 | |||
| 74 | [[image:FILE10.png||width="400px", height="600px"]] | ||
| 75 | |||
| 76 | [[image:FILE11.png||width="400px", height="600px"]] | ||
| 77 | |||
| 78 | [[image:FILE12.png||width="800px", height="600px"]] | ||
| 79 | |||
| 80 | [[image:FILE13.png||width="800px", height="600px"]] | ||
| 81 | |||
| 82 | [[image:FILE14.png||width="800px", height="600px"]] | ||
| 83 | |||
| 84 | В конфигураторе 1C мы создаем обработку предназначен для загрузки данных из 1C в Oracle. | ||
| 85 | |||
| 86 | В процедуре "Выполнить" мы пишем строку и функцию для подключения к провайдеру: | ||
| 87 | |||
| 88 | {{code}} | ||
| 89 | стрПодключения="Provider=MSDAORA.1;Пароль=uppr;Идентификатор пользователя=uppr;Источник данных=clouddev;Постоянная информация о безопасности=True"; | ||
| 90 | ADODBConnect = Новый COMОбъект("ADODB.Connection"); | ||
| 91 | ADODBConnect.Open(стрПодключения); | ||
| 92 | ADODBConnect.Закрыть(); | ||
| 93 | {{/code}} | ||
| 94 | |||
| 95 | Создайте запрос, необходимый для синхронизации. Ниже приведен пример синхронизации номенклатуры. | ||
| 96 | |||
| 97 | {{code}} | ||
| 98 | ЗапросВ = Новый Запрос; | ||
| 99 | ЗапросВ.Текст = "ВЫБРАТЬ | ||
| 100 | | Номенклатура.Код как Код , | ||
| 101 | | Номенклатура.ВидНоменклатура КАК Артикул, | ||
| 102 | | Номенклатура.Наименование как Наименование | ||
| 103 | |ИЗ | ||
| 104 | | Справочник.Номенклатура КАК Номенклатура | ||
| 105 | |ГДЕ | ||
| 106 | | Номенклатура.ПометкаУдаления = ЛОЖЬ | ||
| 107 | | И Номенклатура. ЭтоГруппа = ЛОЖЬ | ||
| 108 | | И Номенклатура.Наименование ПОДОБНО ""Nillkin Frosted OnePlus Case%"""; | ||
| 109 | Результат = ЗапросВ.Выпонний(); | ||
| 110 | ОбходОбъектов = result.Выбрать(); | ||
| 111 | {{/code}} | ||
| 112 | |||
| 113 | Мы создаем цикл для результата запроса. | ||
| 114 | |||
| 115 | {{code}} | ||
| 116 | Пока ОбходОбъектов.Следующий() Цикл | ||
| 117 | КонецЦикла; | ||
| 118 | {{/code}} | ||
| 119 | |||
| 120 | Указываем необходимые переменные, в которых будут храниться данные запроса. | ||
| 121 | |||
| 122 | {{code}} | ||
| 123 | NGROUP_TV6 = ОбходОбъектов.Наименование; | ||
| 124 | COD_ARTIC = ОбходОбъектов.Артикул; | ||
| 125 | EDIN_IZMER = ОбходОбъектов.Код; | ||
| 126 | {{/code}} | ||
| 127 | |||
| 128 | И наконец код, который будет передавать данные через драйвер ODBC в таблицу синхронизации данных между 1С и Oracle. | ||
| 129 | |||
| 130 | {{code}} | ||
| 131 | ADODBConnect.Execute("Insert into STORAGE_TOVAR(NOMENKLATURA_CODE,ARTIKUL,NOMENKLATURA_NAME) values ????("+EDIN_IZMER+" ,"+COD_ARTIC+" ,"+NGROUP_TV6+")"); | ||
| 132 | |||
| 133 | {{/code}} | ||
| 134 | |||
| 135 | 3. Подключение к базе данных Oracle | ||
| 136 | |||
| 137 | 4. Создание таблиц для синхронизации в Oracle | ||
| 138 | |||
| 139 | Для того чтобы данные из 1C успешно передавались в Oracle, будут созданы таблицы для миграции. Таблицы должны содержать поля с типами данных, предназначенными для данных из 1C. Пример: | ||
| 140 | |||
| 141 | {{code}} | ||
| 142 | CREATE TABLE A1C_SYNCRONIZODBC | ||
| 143 | ( | ||
| 144 | NRDOC NUMBER, | ||
| 145 | NRDOC1 NUMBER, | ||
| 146 | PROVIDEN VARCHAR2(25 BYTE), | ||
| 147 | NUMBER_DOC VARCHAR2(25 BYTE), | ||
| 148 | DATA1C VARCHAR2(50 BYTE), | ||
| 149 | NUMBER_NACLAID VARCHAR2(50 BYTE), | ||
| 150 | NUMBER_SCHEDULE VARCHAR2(25 BYTE), | ||
| 151 | SCLAD VARCHAR2(200 BYTE), | ||
| 152 | CONTRACT_NUMBER VARCHAR2(25 BYTE), | ||
| 153 | CONTAGENT VARCHAR2(250 BYTE), | ||
| 154 | COMMODITY_CODE VARCHAR2(25 BYTE), | ||
| 155 | STRIHCOD_TOV VARCHAR2(50 BYTE), | ||
| 156 | GOODS VARCHAR2(250 BYTE), | ||
| 157 | KOL_VO NUMBER(15,4), | ||
| 158 | TENA NUMBER(15,4), | ||
| 159 | SUM NUMBER(15,4), | ||
| 160 | SUMA_DOCUM NUMBER(15,4), | ||
| 161 | KOLVO_ZAKAZ NUMBER(15,4), | ||
| 162 | SERIA VARCHAR2(25 BYTE), | ||
| 163 | STATUS VARCHAR2(100 BYTE), | ||
| 164 | PROVEDEN VARCHAR2(25 BYTE), | ||
| 165 | CTNUM7 NUMBER | ||
| 166 | ) | ||
| 167 | {{/code}} | ||
| 168 | |||
| 169 | 5. Создание документов, номенклатур. Проверка документов в UNA.md | ||
| 170 | |||
| 171 | Будут созданы процедуры и скрипты, которые будут включены в задание. Задание предназначено для автоматического извлечения данных из 1C в UNA. | ||
| 172 | |||
| 173 | [[image:FILE15.png||width="800px", height="auto"]] | ||
| 174 | |||
| 175 | [[image:FILE16.png||width="800px", height="auto"]] | ||
| 176 | |||
| 177 | --- | ||
| 178 | |||
| 179 | Этот механизм синхронизации исключает необходимость двойного ввода данных и обеспечивает согласованность информации между файлами 1C и UNA.md. Файловый метод проще и чаще используется, а метод ODBC рекомендуется для полной автоматизации и непрерывной интеграции. |