Интеграция 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С
Оцениваем и выполняем задачи с техзаданием или без него