Интеграция 1С с внешними источниками данных: безопасные групповые корректировки данных MS SQL с историей изменений и мгновенным откатом
| Заказчик | Крупный производственный холдинг с филиалами по всей стране — от Мурманска до Амурска |
|---|---|
| Задача | Автоматизировать безопасную групповую корректировку данных сотрудников в базе 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),
поэтому вы можете оставить заявку,
и мы расскажем чуть больше
Услуги
Внедрение и переходы
Внедряем конфигурации, исправляем ошибки, настраиваем обмены с внешними системами
Доработка 1С
Автоматизируем рабочие процессы под требования бизнеса
Усиление команды 1С
Подключаем специалистов 1С на нужное количество часов. Вы управляете ими, как своими сотрудниками
Обслуживание 1С
Для стабильной работы информационной системы предприятия
Сопровождение 1С:ИТС
Комплексная поддержка пользователей программ "1С:Предприятие"
Разработка 1С
Сопровождение 1С
Битрикс разработчики