Как очистить адресный классификатор в 1С:Бухгалтерия 3.0 и решить проблему «Недостаточно места» при обновлении?

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

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

Выясним истинную причину этой проблемы. Чаще всего виновником оказывается сильно разросшийся адресный классификатор (ранее — ФИАС, теперь — ГАР). В этой статье мы подробно рассмотрим, почему адресные сведения переполняют базу данных, как правильно и безопасно очистить неиспользуемые регионы и какие современные альтернативные методы помогут навсегда забыть об этой проблеме.

Рассмотрим ситуацию по шагам и проанализируем механизмы работы платформы «1С:Предприятие» с адресными данными.

Почему разрастается база данных и возникает ошибка нехватки места?

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

  1. Ограничение размера таблиц файловой СУБД (до 4 Гб). Файловая база данных 1С физически состоит из одного файла 1Cv8.1CD, внутри которого находятся таблицы. Максимальный объем любой внутренней таблицы (включая её индексы) ограничен 4 Гигабайтами. При переходе ФНС РФ на новый формат адресов ГАР (Государственный адресный реестр) объем данных вырос в разы по сравнению со старым ФИАС, так как теперь учитывается не только административное, но и муниципальное деление. Загрузка даже 3–4 крупных регионов (например, Москвы, Московской области и Санкт-Петербурга) может мгновенно раздуть таблицы адресных сведений до критического предела. При реструктуризации базы во время очередного обновления лимит в 4 Гб превышается, и система выдает ошибку нехватки места.
  2. Ограничение адресного пространства 32-разрядного процесса. Если обновление выполняется под 32-битным клиентом (или Конфигуратором) «1С:Предприятие», операционная система выделяет под этот процесс не более 2 Гб оперативной памяти. Современные ресурсоемкие конфигурации вроде «Бухгалтерия предприятия 3.0» в процессе реструктуризации тяжелых регистров адресов просто расходуют весь лимит ОЗУ, что приводит к падению программы.

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

Опасность ручного удаления данных из регистров адресов

Иногда ИТ-специалисты пытаются решить проблему радикально — находят через Конфигуратор регистр сведений АдресныеОбъекты и вручную удаляют записи по коду субъекта РФ. Разберем, почему так делать категорически нельзя:

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


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	АдресныеОбъекты.КодСубъектаРФ КАК Регион,
    |	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ АдресныеОбъекты.Ссылка) КАК КоличествоОбъектов
    |ИЗ
    |	РегистрСведений.АдресныеОбъекты КАК АдресныеОбъекты
    |СГРУППИРОВАТЬ ПО
    |	АдресныеОбъекты.КодСубъектаРФ";
РезультатЗапроса = Запрос.Выполнить();

Теперь рассмотрим правильные, штатные и безопасные методы решения этой проблемы.

Способ 1. Штатная очистка неиспользуемых регионов и сжатие базы

Если в базу уже загружены тяжелые адресные сведения, которые вам больше не требуются для работы (например, вы ведете деятельность только по одному или двум регионам), выполним корректную процедуру очистки классификатора.

Шаг 1. Запуск штатной очистки в пользовательском интерфейсе

  1. Запустите программу «1С:Бухгалтерия 8» в режиме «Предприятие» под пользователем с правами Администратора.
  2. Перейдите в раздел меню Администрирование, далее выберите пункт Интернет-поддержка и сервисы.
  3. Раскройте подраздел Классификаторы и курсы валют.
  4. Найдите и откройте гиперссылку Очистка адресных сведений.
  5. В открывшемся окне мастера очистки отметьте флагами те регионы Российской Федерации, по которым вы не ведете деятельность и адреса которых вам не нужны.
  6. Нажмите кнопку Очистить. Программа в фоновом режиме корректно и взаимосвязанно удалит записи по выбранным регионам из всех зависимых таблиц и регистров сведений, сохранив целостность базы данных.

Шаг 2. Физическое уменьшение размера базы данных (сжатие)

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

  1. Завершите работу всех пользователей в информационной базе.
  2. Запустите базу данных в режиме Конфигуратора.
  3. В главном меню перейдите в раздел Администрирование -> Тестирование и исправление...
  4. В списке проверок установите флаг только напротив одного пункта: Сжатие таблиц информационной базы.
  5. Нажмите кнопку Выполнить и дождитесь окончания процесса.

После завершения сжатия вы увидите, что размер файла 1Cv8.1CD существенно уменьшился (в некоторых случаях экономия составляет от 1 до 5 Гигабайт), и последующие обновления конфигурации будут проходить без ошибок.

Способ 2. Полный переход на работу с веб-сервисом (без загрузки классификатора)

Самый прогрессивный и эффективный способ раз и навсегда решить проблему разрастания базы из-за адресов — полностью отказаться от локального хранения адресного классификатора ГАР/ФИАС.

В современных релизах «1С:Бухгалтерии 3.0» реализована возможность работы с адресами в режиме онлайн через веб-сервис фирмы 1С. При этом адреса подбираются, проверяются и автоматически подставляются прямо «из облака» в режиме реального времени. Локальные таблицы в вашей базе данных остаются пустыми, что экономит дисковое пространство и системные ресурсы.

Для настройки работы в режиме онлайн выполним следующие действия:

  1. Убедитесь, что компьютер, на котором запущена 1С, имеет стабильное подключение к сети Интернет.
  2. Перейдите в раздел Администрирование -> Интернет-поддержка и сервисы.
  3. В самом верхнем блоке Настройки работы с порталом подключите вашу учетную запись Портала 1С:ИТС (введите логин и пароль). Подключение к интернет-поддержке доступно пользователям с действующим договором ИТС.
  4. Ниже в разделе Классификаторы и курсы валют найдите переключатель использования адресного классификатора и переведите его в положение Использовать веб-сервис 1С для ввода и проверки адресов (или снимите флаг локальной загрузки в зависимости от версии интерфейса).

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

Способ 3. Использование 64-разрядного клиента для обновления базы

Если вам по каким-то причинам жизненно важно хранить весь адресный классификатор локально в базе данных, но при обновлении программа все равно «падает» с ошибками памяти, воспользуемся обходом ограничений разрядности.

Установите и используйте для проведения обновлений 64-разрядную версию платформы «1С:Предприятие». В отличие от стандартного 32-битного клиента, 64-битный процесс Конфигуратора может адресовать практически неограниченный объем оперативной памяти вашего компьютера. Это позволит успешно завершить даже самые тяжелые процедуры реструктуризации таблиц ГАР/ФИАС без аварийного завершения работы программы.

Мы подробно разобрали причины переполнения базы данных адресными сведениями и изучили три надежных метода решения проблемы. Рекомендуем использовать сочетание Способа 1 и Способа 2 для обеспечения максимальной производительности и легкости вашей информационной базы «1С:Бухгалтерия».

← На главную