Интеграция 1С с внешними источниками данных: безопасные групповые корректировки данных MS SQL с историей изменений и мгновенным откатом

Всем компаниям Самописная 1C:ERP 1С:ЗУП 1С:ДО 1С:УНФ
Заказчик Крупный производственный холдинг с филиалами по всей стране — от Мурманска до Амурска
Задача Автоматизировать безопасную групповую корректировку данных сотрудников в базе MS SQL через документы 1С с использованием внешних источников данных
Результат Массовые изменения выполняются через документы 1С: с проверкой перед записью, полной историей правок и мгновенным откатом

Ситуация

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

Заказчик использует систему контроля и управления доступом: сотрудники проходят в столовые через турникеты по пропускам.

Работой турникетов управляет отдельная система со своей базой данных на MS SQL. В ней фиксируются все события: кто прошел, когда именно и какое питание получил.

Эта база не связана с 1С напрямую, но данные из нее используются для формирования отчетности. В 1С на их основе строится отчет по питанию сотрудников: можно увидеть посещаемость по людям, подразделениям и проектам.

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

Раньше такие изменения вносились напрямую во внешнюю базу MS SQL через обработку в 1С. Специалист вручную находил нужные записи и редактировал их по одной.

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

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

Задача

Заказчик обратился в implecs, чтобы сделать групповые корректировки данных во внешней базе MS SQL управляемыми и безопасными.

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


Решение

Холдинг использует несколько систем 1С: ERP, ЗУП, Документооборот, УНФ. Для выполнения задачи мы работали в отдельной самописной конфигурации, связанной с системой контроля и управления доступом. База MS SQL была подключена к ней как внешний источник данных — 1С могла читать и записывать данные напрямую. 

Для чтения и записи использовалась простая обработка, у которой было три недостатка:

— в один момент времени она могла работать только с одной записью и не умела делать групповую запись данных;

— после ее закрытия было невозможно откатить изменения;

— при записи данных отсутствовал контроль ошибок.

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

Реализовали безопасную корректировку данных через документы 1С

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

Чтобы перевести уже существующие записи на новый механизм, разработали документ «Ввод остатков». Он использует внешние источники данных, считывает текущие записи из MS SQL и перезаписывает их заново — уже с привязкой к регистратору. 

Поле RecorderID в MS SQL соответствует полю «Регистратор» во внешних источниках данных. Это позволяет идентифицировать документ, которым была внесена текущая запись.

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

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

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

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

Проведенные документы фиксируются в журнале и связываются с базой MS SQL через внешние источники данных. Благодаря этому пользователи видят, кто, когда и что изменил. Например: «15 января Иванов перевел 47 человек из „Обслуживание“ в „Монтаж“». Если позже обнаружилась ошибка — отменяем проведение документа, и все записи возвращаются в прежнее состояние автоматически.

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

Упростили работу с подключениями к MS SQL

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

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

Улучшили отчет по питанию сотрудников

Отчет доработали под работу с внешней базой MS SQL. Добавили отбор по турникетам и упростили анализ данных в разрезе сотрудников, подразделений и проектов.

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

Непредвиденные трудности

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

Также усложняли ситуацию параметры подключения к MS SQL: в разных базах они отличались и были прописаны прямо в коде. Совместно с системным администратором заказчика несколько раз дорабатывали тестовую среду и проверяли разные сценарии — это и привело к решению вынести настройки в общие параметры системы.

Результат

Решение внедрено во всех филиалах холдинга — от Мурманска до Амурска. Данные о посещении столовых централизованно собираются и анализируются в единых отчетах.

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

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

В результате:

Длительность: интеграция 1С с внешними источниками данных и доработка отчета заняли 4 дня.

Команда. Со стороны implecs задачу выполнил разработчик 1С. Со стороны заказчика принимали участие 2 специалиста: консультант 1С и системный администратор.


Многие проекты
под соглашением о неразглашении (NDA),
поэтому вы можете оставить заявку,
и мы расскажем чуть больше

Услуги

2015
Год основания компании
150+
Специалистов в штате
650+
Клиентов, которым мы помогли
950+
Реализованных проектов

Нам доверяют

Все клиенты
Все клиенты
Нужна помощь, но не знаете, с чего начать?

Напиште нам - мы поможем. Выслушаем Ваши задачи для бизнеса и подберём вариант развития

Лидия Алимова
Руководитель отдела продаж implecs
Иконка стрелки вверх