Анонимизация базы 1С, в том числе регистров сведений (паспортные данные, телефоны, ИНН)

09.10.26

Администрирование - Информационная безопасность

Внешняя обработка проходит по всем объектам метаданных, показывает (выборочно визуализирует) примеры данных, которые стоит спрятать, даёт отметить нужные объекты галочками и обезличить их - все разом или по одному (следуя очередности). В сжатый отчёт попадает и ссылочная целостность, потому что битые ссылки - частый побочный эффект «анонимизации удалением». Проверено на БП 3.0 (в связке с БИТ.ФИНАНС-сильно доработанная с кастомными регистрами и документами), УТ 11 и ЗУП; в коде нет ни одного имени конкретной конфигурации.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Анонимизация базы 1С, в том числе регистров сведений (паспортные данные, телефоны, ИНН)
.epf 18,76Kb
3 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

1. Задача

Передаём копию рабочей базы наружу: разработчикам на доработку, подрядчикам на интеграцию, вендору на воспроизведение проблемы. Требование простое: в базе не должно остаться упоминаний реальных контрагентов, сотрудников, их ФИО, телефонов, адресов и прочих персональных данных. Но база при этом нужна «живая» - чтобы отчёты, обмены и интеграции действительно проверялись, а не падали на пустых справочниках.

 

2. Почему «удалить всё лишнее» - плохая идея

Разберём реальный случай. В базе, которую готовили к передаче, анонимизацию сделали так: у справочников подменили Наименование на «тип + код» (Организация 00-000023 59a29a4a, Физ.лицо 00-00-0224), а часть документов просто удалили. Внешне - красота. Что показала проверка:

  • 4 188 значений с живым текстом более чем в двухстах полях. Перс.данные остались в отдельных реквизитах: Справочник.КонтактныеЛица.Фамилия/Имя/Отчество (5 049 записей) - при том что Наименование там честно заменено на <FIO_n>, Должность. Названия организаций уцелели в Организации.НаименованиеСокращенное, поставщики - в Номенклатура.Комментарий, фамилии - в именах присоединённых файлов и в комментариях регистров согласования.
  • 5 378 присоединённых файлов (сканы, договоры, счета, ведомости) — их содержимое не обезличивалось вообще. Самый вероятный канал утечки.
  • ≈4,39 млн битых ссылок. Удаление документов не почистило регистры: РегистрСведений.бит_ДополнительныеАналитики.Объект - 1 429 624 битых из 2 536 023 записей, РегистрСведений.бит_УстановленныеВизы.Объект - 444 590 из 615 620, РегистрСведений.ДанныеПервичныхДокументов.Документ - 191 670.

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

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

 

3. Как искать «живые» данные

Схема обезличивания почти всегда оставляет узнаваемый след: в подменённом значении есть код или хеш-суффикс. Значит «живым» можно считать значение, в котором нет ни одной цифры и нет пары угловых скобок (второе - для плейсхолдеров вида Иванов Андрей Анатольевич).

Главное — делать это на стороне СУБД, а не выгружать таблицы в код:

Выражение = "ВЫРАЗИТЬ(Т." + ИмяПоля + " КАК СТРОКА(255))";
Условие = "(" + Выражение + " <> """" И НЕ " + Выражение + " ПОДОБНО ""%<%>%""";
Если НЕ ЗаменятьЦифровые Тогда
	Условие = Условие + " И НЕ " + Выражение + " ПОДОБНО ""%[0-9]%""";
КонецЕсли;

Количество кандидатов по объекту собирается одним запросом: колонка на каждое строковое поле, всё через 

СУММА(ВЫБОР КОГДА <условие> ТОГДА 1 ИНАЧЕ 0 КОНЕЦ)
ЧастиЗапроса.Добавить("ЕСТЬNULL(СУММА(ВЫБОР КОГДА " + УсловиеКандидата(ИмяПоля, ЗаменятьЦифровые)
	+ " ТОГДА 1 ИНАЧЕ 0 КОНЕЦ), 0) КАК П" + Строка(ЧастиЗапроса.Количество()));

На базу из ~1 400 объектов метаданных анализ укладывается в пару минут, при этом показываются не только счётчики, но и примеры значений - чтобы решение «прятать или нет» принимал человек, а не эвристика.

 

4. Универсальность: только метаданные, ни одного имени конфигурации

Обработка не знает, где она запущена. Список коллекций задаётся данными, а не кодом:

Описания.Добавить(Новый Структура("Коллекция,Вид,Регистр,Обезличивается", "Справочники", "Справочник", Ложь, Истина));
Описания.Добавить(Новый Структура("Коллекция,Вид,Регистр,Обезличивается", "РегистрыСведений", "РегистрСведений", Истина, Истина));
// ... Документы, РегистрыНакопления, РегистрыБухгалтерии, ПланыВидовХарактеристик

Для Каждого Описание Из ОписанияКоллекций() Цикл
	Для Каждого МД Из Метаданные[Описание.Коллекция] Цикл

Дальше всё тоже динамически: имя таблицы - Вид + "." + МД.Имя, менеджер - Справочники[Имя] или РегистрыСведений[Имя], объект - Ссылка.ПолучитьОбъект(), поля - обход метаданных (Реквизит.Тип.СодержитТип(Тип("Строка"))), плюс стандартное Наименование, измерения и ресурсы регистров, табличные части. Именно поэтому обработка завелась без правок в БП, УТ 11, ЗУП и в конфигурации с БИТ.ФИНАНС (сильно доработанная и сильно старая).

 

5. Что и чем заменяется

Поле Чем заменяется
Наименование «синоним объекта метаданных + код элемента»: Контрагенты 000123. Если кода у объекта нет - <Контрагенты_1>
Фамилия, Имя, Отчество, ФИО <ФИО_N>
Телефон <ТЕЛ_N>
Почта, Email, АдресЭП, Логин, Пароль <ПОЧТА_N>
Адрес, Улица, Город, Квартира, Индекс, Регион, НаселенныйПункт, Район <АДРЕС_N>
Паспорт, СНИЛС, Документ, Удостоверение <ДОК_N>
Комментарий, Описание, Содержание, Назначение, Примечание <КОММ_N>
остальные строковые реквизиты <ТЕКСТ_N>

 

Категория выбирается по имени поля, поэтому таблица расширяется без правки логики. Внутри одного объекта одинаковые исходные значения получают одинаковый токен (ведётся соответствие «исходное → токен»): различимость данных сохраняется, а прочитать их уже нельзя. Ссылочные, числовые и датовые реквизиты не трогаются.

Отдельная галочка «Заменять также числовые» расширяет правило на значения с цифрами — ИНН, КПП, телефоны, коды. Предопределённые элементы по умолчанию пропускаются, чтобы не ломать код, ищущий их по имени.

 

6. Отчёт: сжатый, а не миллион строк

Отчёт устроен так, чтобы его можно было прочитать глазами:

  1. шапка: конфигурация, дата, пользователь, режим (запись включена или это только отчёт), опции;
  2. итоги: сколько объектов проанализировано, сколько записей просмотрено, сколько значений-кандидатов и сколько заменено, сколько битых ссылок;
  3. до 60 строк по объектам с находками: объект, записей, кандидатов, заменено, битых ссылок и пример значения (либо состояние, если объектов больше);
  4. топ-10 объектов по битым ссылкам с расшифровкой, что это ломает;
  5. памятка про присоединённые файлы.

Полный список объектов с любыми числами — в таблице на форме, где по каждому объекту есть галочка «обезличивать» и кнопки «Отметить всё», «Обезличить выбранные (все разом)», «Обезличить следующую» (поочерёдный режим — удобно, когда нужно контролировать результат после каждого объекта).

 

7. Битые ссылки

Считаются тем же проходом по метаданным: на каждый реквизит-ссылку - LEFT JOIN и агрегат по NULL:

Выражение = "ВЫРАЗИТЬ(Т." + Реквизит.Имя + " КАК " + ПолноеИмя + ")";
Соединения = Соединения + " ЛЕВОЕ СОЕДИНЕНИЕ " + ПолноеИмя + " КАК С" + Строка(КоличествоСоединений)
	+ " ПО " + Выражение + " = С" + Строка(КоличествоСоединений) + ".Ссылка";
Поля = Поля + "ЕСТЬNULL(СУММА(ВЫБОР КОГДА " + Выражение + " <> ЗНАЧЕНИЕ(" + ПолноеИмя + ".ПустаяСсылка)"
	+ " И С" + Строка(КоличествоСоединений) + ".Ссылка ЕСТЬ NULL ТОГДА 1 ИНАЧЕ 0 КОНЕЦ), 0) КАК Б" + ...

 

8. Порядок работы

  1. Сделать копию базы и работать только с ней.
  2. Открыть обработку и нажать «Анализ базы» (режим «Только отчёт (без записи)» включён по умолчанию - база не меняется).
  3. Посмотреть таблицу: где есть находки, какие именно примеры. Отметить галками то, что нужно спрятать.
  4. Прогнать в режиме «только отчёт» и сверить числа с ожиданием.
  5. Снять галку «Только отчёт» и выполнить обезличивание - все разом или поочерёдно.
  6. Кнопкой «Битые ссылки» (или галкой «проверять при анализе») получить картину по ссылочной целостности и включить её в отчёт для заказчика.
  7. Отдельно решить судьбу присоединённых файлов и журнала регистрации, затем прогнать «Тестирование и исправление» и повторить анализ: кандидатов быть не должно.

 

9. Ограничения, о которых честнее сказать сразу

  • Присоединённые файлы не обезличиваются. Справочники *ПрисоединенныеФайлы и тома хранения содержат бинарное содержимое; обработка их не трогает, это отдельная задача (удалить тома или заменить файлы синтетическими).
  • Регистры накопления и бухгалтерии - только анализ. Их перезапись может испортить учёт, поэтому в колонке «Что делает» для них так и написано.
  • Регистры сведений обезличиваются через наборы записей с отбором по измерениям (плюс период и регистратор, если они есть) - по одной записи за раз, на больших регистрах это медленно, есть «Ограничение записей».
  • Журнал регистрации хранит имена пользователей и компьютеров отдельно, обработка к нему не относится.
  • Отчёт сохраняется на сервере. Файловые операции в тонком клиенте недоступны, поэтому диалог выбора пути только выбирает путь, а пишет файл сервер: в клиент-серверной базе путь указывается с точки зрения сервера.
  • Битые ссылки показаны только для информации что с ними делать думать отдельно.

 

11. Проверено на

БП 3.0, БИТ.ФИНАНС, УТ 11, ЗУП - открывается и работает без изменений в коде; на базе с 11 925 контрагентами, 2 460 физлицами и 5 049 контактными лицами анализ проходит за пару минут.

 

 

Пример анонимизации в УТ11 регистр документы и справочник Физические лица:

 

 

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

Если кто-то будет пользоваться и обнаружит ошибки, то дайте знать, постараюсь оперативно исправить.

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 11, релизы 11.5.27.81
  • Зарплата и управление персоналом, редакция 3.1, релизы 3.1.38.92
  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.206.19

Вступайте в нашу телеграмм-группу Инфостарт

внешняя обработка

См. также

Информационная безопасность Чистка данных Системный администратор Разработчик Руководитель проекта 1С 8.3 1С:Бухгалтерия 3.0 Платные (руб)

Обезличивает копию рабочей базы 1С перед передачей наружу и возвращает настоящие данные обратно, когда база вернулась. Это обратимая псевдонимизация: соответствия «исходное - псевдоним» пишутся в отдельный зашифрованный датасет, который остаётся у владельца. Работает на любой конфигурации - обходит метаданные и находит персональные данные сам, без списка реквизитов под конкретную базу. Суммы, количества, даты и номера документов не трогает никогда, оборотно-сальдовая до и после совпадает до копейки. Проверено на трёх конфигурациях: 106 031 объект, 215 642 замены, ноль ошибок, возврат 100 процентов.

42700 руб.

18.08.2026    1480    3    0    

3

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    4157    12    0    

25

Информационная безопасность Нейросети Разработчик 1С 8.3 Бесплатно (free)

Скрипт, который написал Claude Code и каждый час запускал планировщик, ночью пометил на удаление тысячи документов перемещений в продуктивной базе 1С на 5 ТБ. Остатки уехали на миллиардные суммы, база стояла до обеда, около 500 заказов с маркетплейсов и сайта ушли в отмены. Как это произошло, где была ошибка в определении дублей и что я сделал, чтобы это не повторилось: агентам только чтение, алерты в Telegram на массовую запись, ревизия планировщиков.

06.10.2026    6156    nedomolkov.ivan    161    

48

Информационная безопасность Поиск данных ServiceDesk, HelpDesk Журналы и реестры данных 1С 8.3 Россия Бухгалтерский учет Бюджетный учет Налоговый учет Управленческий учет Платные (руб)

Полный контроль над изменениями в 1С без нагрузки на вашу базу. Мгновенный доступ к истории изменений, удобное сравнение и откат данных в один клик. Простой отчет с визуальным отображением изменений Откат на любую версию объекта в два клика История изменения данных хранится во внешней базе

180000 руб.

05.09.2025    5930    2    1    

4

Информационная безопасность Пароли 1С:Предприятие 8 Бесплатно (free)

Все еще храните пароли в базе? Тогда мы идем к вам! Безопасное и надежное хранение секретов. JWT авторизация. Удобный интерфейс. Демо конфигурация. Бесплатно.

30.05.2024    17579    kamisov    20    

66

Информационная безопасность Разработчик 1С:Предприятие 8 Бесплатно (free)

Рассмотрим в статье более подробную и последовательную настройку аутентификации в 1С с использованием распространенной технологии JWT, которая пришла в программу в платформе версии 8.3.21.1302.

27.02.2024    27223    AlexeyPROSTO_1C    10    

46

Информационная безопасность Разработчик 1С:Предприятие 8 Абонемент ($m)

Интеграционные решения стали неотъемлемой частью нашей жизни. Правилом хорошего тона в современных приложениях является не давать интегратору доступ к чувствительным данным. Device flow позволяет аутентифицировать пользователя, не показывая приложению чувствительные данные (например: логин и пароль)
Рассмотрим Device flow аутентификацию, в приложении, на примере OpenID провайдера Yandex.

1 стартмани

27.10.2023    6367    platonov.e    1    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gucci76 382 15.10.26 13:04 Сейчас в теме
Типовую обработку в ЗУП можно найти через "все функции" (скрытие конфиденциальной информации)
Только надо галочкой самому ставить, что надо скрыть. И вместо Иван Иван Иванович будет "слепой" УИН, который сложно анализировать.
Я попытался ее развить - сделать указание галочек автоматичским. И вместо УИН произвольные ФИО.
Для моих нужд хватает.
Присоединенные файлы можно выгрузить в тома.
Для отправки сообщения требуется регистрация/авторизация