Почему после загрузки конфигурации из файла в пустую базу появляются данные и как это исправить

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

Нередко разработчики и администраторы 1С сталкиваются с парадоксальной ситуацией: создается абсолютно пустая информационная база, через конфигуратор выполняется команда Загрузить конфигурацию из файла (файл с расширением .cf), после чего база запускается в пользовательском режиме. Ожидается увидеть чистую базу для последующего переноса данных, однако в интерфейсе внезапно обнаруживаются реальные документы (например, поступления товаров) и элементы справочников (номенклатура, контрагенты).

Поскольку сам по себе файл конфигурации .cf содержит исключительно структуру метаданных, формы, макеты и программный код, но не содержит пользовательских данных таблиц, такое поведение вызывает закономерное недоумение. Разберем по шагам, почему это происходит, как обнаружить источник заполнения и какими способами предотвратить появление нежелательных данных.

Выясняем причину: механизмы платформы и типовых конфигураций

Проанализируем возможные варианты, из-за которых таблицы новой базы могут наполниться информацией сразу после старта:

  1. Фоновые и регламентные задания обмена. Это наиболее частая причина. Если в конфигурации у объекта РегламентноеЗадание свойства Предопределенное и Использование установлены в значение Истина, платформа предпринимает попытку его выполнения сразу при старте. Если в модуле задания прописаны жестко заданные пути к сетевым папкам, FTP-серверам, базам-источникам через COM или веб-сервисы, задание незамедлительно связывается с внешней системой и загружает оттуда документы и справочники.
  2. Особенности выполнения регламентных заданий в файловом режиме. Начиная с версии платформы 8.3.3, в файловых базах фоновые задания по умолчанию исполняются прямо в первом запущенном клиентском сеансе пользователя. Никаких дополнительных окон или отдельных служебных сеансов не требуется, поэтому загрузка данных стартует в фоновом потоке в первые же секунды работы пользователя.
  3. Особенности работы в клиент-серверном варианте. На сервере 1С:Предприятия менеджер кластера запускает запланированные регламентные задания сразу после создания базы, даже до того, как администратор или пользователь выполнит первый интерактивный вход в систему.
  4. Механизмы начального заполнения БСП. В типовых конфигурациях (например, 1С:Управление торговлей 11, ERP, КА) при первом запуске отрабатывают процедуры начального заполнения. Однако они создают лишь системные служебные настройки, предопределенные профили групп доступа или базовые классификаторы, но никогда не создают рабочие товарные документы с датами и номерами.

Диагностика: как найти виновника появления записей

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

  1. Анализ журнала регистрации. Перейдем в раздел Функции для технического специалиста (или Все функции) и откроем Журнал регистрации. Отфильтруем события по успешному добавлению данных (транзакции со статусом Зафиксирована) для появившихся документов. В колонках журнала мы увидим, каким именно пользователем или системным процессом созданы записи. Если там фигурирует служебный сеанс или фоновое задание — смотрим наименование регламентного задания.
  2. Отладка и стек вызовов. В конфигураторе откроем модуль объекта создаваемого документа (например, Документ.ПоступлениеТоваровУслуг) и установим точку останова в событии ПередЗаписью или ПриЗаписи. При повторном запуске обмена платформа прервет выполнение кода, и через панель Стек вызовов мы сможем точно проследить цепочку процедур, инициировавших создание объекта.

Способ 1. Блокировка регламентных заданий в клиент-серверном режиме

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

  1. Откроем утилиту Консоль администрирования серверов 1С:Предприятия.
  2. Найдем созданную информационную базу в списке кластера и откроем ее свойства.
  3. Установим флаг Блокировка регламентных заданий включена.
  4. При автоматическом создании базы через скрипты администрирования или строку соединения можно сразу передать параметр SchJobDn=Y.

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

Способ 2. Запрет регламентных заданий в файловом режиме

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

  1. В окне запуска списка баз 1С выделим нужную информационную базу и нажмем кнопку Изменить.
  2. Перейдем на страницу настройки параметров запуска.
  3. В поле Дополнительные параметры запуска укажем специальный ключ:

/AllowExecuteScheduledJobs -off

Данный параметр полностью запрещает исполнение регламентных и фоновых заданий в клиентском сеансе. Когда база будет полностью настроена и наполнена корректными данными, данный параметр можно убрать или заменить на /AllowExecuteScheduledJobs -on.

Способ 3. Предотвращение проблемы на уровне разработки

Проанализируем правила разработки, которые помогут избежать самопроизвольного обмена данными:

  1. Не использовать флаг «Предопределенное» для заданий интеграции. В конфигураторе для объектов метаданных типа РегламентноеЗадание, отвечающих за загрузку данных из внешних баз, каталогов или веб-сервисов, свойства Предопределенное и Использование должны быть сброшены (значение Ложь). Включение задания должно осуществляться пользователем или администратором в пользовательском интерфейсе после заполнения всех настроек подключения.
  2. Использование механизмов БСП для защиты от внешних ресурсов. В библиотеке стандартных подсистем предусмотрена подсистема защиты от несанкционированной синхронизации в базах-копиях. При изменении уникального идентификатора информационной базы подсистема автоматически блокирует отправку и получение данных по всем внешним каналам связи до явного подтверждения администратора.
  3. Отказ от жестко зашитых путей. Адреса каталогов обмена, логины, пароли и строки подключения никогда не должны прописываться непосредственно в программном коде. Их следует хранить в реквизитах констант или регистров сведений, чтобы при развертывании чистого файла конфигурации значения оставались пустыми.

Важно: если регламентное задание уже успело загрузить данные, простая повторная загрузка файла .cf не удалит появившиеся записи, так как она меняет лишь структуру конфигурации. В таком случае быстрее всего полностью удалить таблицы информационной базы (или пересоздать пустую базу в кластере / файловом каталоге), заблокировать запуск регламентных заданий указанными выше методами и только после этого повторить загрузку конфигурации.

← На главную