Как исправить ошибку «Невозможно изменить код счета» при обновлении 1С 7.7 УСН и переносе в 1С 8.3?

Программист 1С v7.7 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При подготовке информационной базы 1С:Упрощенная система налогообложения 7.7 (ред. 1.3) к переносу в 1С:Бухгалтерию предприятия 8.3 нередко требуется обновить исходную конфигурацию до более свежего релиза. Однако в процессе реструктуризации базы в Конфигураторе может возникнуть блокирующая ошибка вида: «Невозможно изменить код счета 69.41 на 69.31 т.к. счет с таким кодом существует». Выясним причину такого поведения платформы 1С 7.7 и подробно разберем способы решения данной проблемы.

Почему возникает ошибка реструктуризации плана счетов

Проанализируем внутреннее устройство платформы 1С:Предприятие 7.7. В отличие от пользовательского восприятия, где счета различаются по их текстовым номерам, платформа сопоставляет предопределенные счета метаданных по их внутренним идентификаторам (внутренним ID).

Если в рабочей базе конфигурация когда-либо дорабатывалась нетиповым образом, в ней создавались новые счета или некорректно выполнялось объединение с другими конфигурациями, соответствие кодов и внутренних ID нарушается. В обновляемой конфигурации счет с конкретным внутренним ID имеет код 69.41, а в файле поставки обновления (файле .md) этот же внутренний идентификатор принадлежит счету 69.31. Во время реорганизации платформа пытается переименовать счет, но обнаруживает, что код 69.31 уже занят другим счетом. Поскольку уникальность кодов счетов проверяется строго на каждом шаге транзакции, процесс обновления аварийно прерывается.

Также важно обратить внимание на попытки использовать внешнюю обработку Conv42.ert. Данная обработка поставлялась разработчиками исключительно для типовой конфигурации «1С:Бухгалтерский учет» (ОСНО редакции 4.5). В плане счетов конфигурации ОСНО действительно присутствует группа с кодом 69.3 («Обязательное медицинское страхование»). Однако в конфигурации «УСН ред. 1.3» план счетов построен иначе: счета 69.3 там просто нет (используются сразу субсчета 69.11, 69.21, 69.31, 69.41). Именно поэтому программный вызов метода СчетПоКоду("69.3") не находит объект и возвращает пустое значение:


ТаблицаСчетов.НоваяСтрока();
// В конфигурации УСН 7.7 счета "69.3" не существует, поэтому метод возвращает пустое значение
ТаблицаСчетов.СчетИсточник = СчетПоКоду("69.3");

Таким образом, автоматическая конвертация счетов с помощью Conv42.ert в конфигурации УСН неприменима. Перейдем к проверенным практическим способам обхода ошибки.

Способ 1. Временное переименование конфликтующего счета

Рассмотрим самый надежный способ преодоления коллизии уникальности кодов в Конфигураторе. Разберем порядок действий по шагам:

  1. Создаем резервную копию базы данных. Обязательно выгружаем данные через меню Администрирование -> Выгрузить данные или копируем весь каталог информационной базы.
  2. Открываем план счетов в Конфигураторе. В окне «Структура метаданных» разворачиваем ветку Планы счетов -> Основной -> Счета.
  3. Находим конфликтующий счет. Находим счет 69.31, на существование которого жалуется конфигуратор, и временно меняем его код на любой незанятый (например, 69.91 или 69.31.0).
  4. Сохраняем метаданные. Нажимаем кнопку «Сохранить» (значок дискеты) и подтверждаем реструктуризацию данных. На этом этапе ошибки не будет, так как код 69.31 освободился.
  5. Выполняем обновление конфигурации. Запускаем стандартную процедуру объединения конфигураций (Конфигурация -> Объединить конфигурации) с файлом типового релиза. Теперь счет из обновления успешно займет освободившийся код 69.31.
  6. Корректируем данные. После обновления открываем режим «1С:Предприятие» и проверяем остатки по счетам 69.31 и 69.91. При необходимости переносим обороты и сальдо с временного счета типовой ручной операцией, после чего временный счет можно удалить.

Способ 2. Обновление конфигурации без плана счетов

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

  1. В Конфигураторе выбираем пункт меню Конфигурация -> Объединить конфигурации.
  2. Выбираем файл конфигурации нового релиза (1cv7.md).
  3. В открывшемся дереве сравнения объектов полностью снимаем флажок с ветки «Планы счетов».
  4. Оставляем отмеченными константы, справочники, документы, журналы и отчеты.
  5. Выполняем объединение и сохраняем изменения.

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

Способ 3. Перенос данных в 1С 8.3 напрямую без обновления 7.7

Проанализируем саму задачу переноса данных. Правила конвертации данных (XML), используемые для миграции из 7.7 в «1С:Бухгалтерию 8.3», не завязаны на внутренние идентификаторы метаданных. Они считывают информацию по строковым именам реквизитов и кодам счетов.

Если в релизе 229 нет критических ошибок заполнения документов, обновлять базу до релизов 246 или 266 вовсе не обязательно. Выгрузку можно произвести напрямую из базы 229:

  1. Открываем актуальную базу «1С:Бухгалтерия предприятия 8.3».
  2. Переходим в раздел Главное -> Загрузка из 1С:Предприятия 7.7.
  3. Сохраняем внешнюю обработку выгрузки (USN_ACC8.ert) и актуальный файл правил (USN_ACC8.xml) на диск.
  4. Запускаем базу 1С 7.7 в режиме «1С:Предприятие» и через меню Файл -> Открыть запускаем сохраненную обработку.
  5. Указываем сохраненный файл правил и выгружаем данные в файл обмена XML.
  6. Загружаем полученный файл в 1С 8.3.

Если на стороне 1С 8.3 сальдо страховых взносов распределится с расхождениями из-за различий в субсчетах 69 счета, корректировку значительно быстрее выполнить непосредственно в документах «Ввод начальных остатков» в новой базе 8.3.

← На главную