При обновлении конфигурации «1С:Бухгалтерия предприятия 3.0» пользователи часто сталкиваются с предупреждением: «Код счета не уникален Хозрасчетный счет (68:13)» (или 68:17). Эта проблема блокирует завершение реорганизации данных и переход на новый релиз. Давайте подробно разберем, почему возникает эта ситуация и как ее правильно устранить, используя различные методы — от простых сервисных операций до программного вмешательства.
Прежде чем приступать к исправлению, проанализируем ситуацию. Ошибка уникальности кода счета в Плане счетов Хозрасчетный чаще всего связана с вводом новых предопределенных счетов разработчиками фирмы «1С». В последних релизах (3.0.167.36, 3.0.168 и выше) вводятся новые субсчета для учета налогов (например, на игорный бизнес или специфические региональные сборы).
Ситуация осложняется в двух случаях:
В версии платформы 8.3 механизм работы с предопределенными данными изменился. Теперь уникальность проверяется не только по коду, но и по внутреннему идентификатору. Рассмотрим последовательно способы решения этой задачи.
Как показывает практика, иногда проблема кроется в некорректном отображении данных конфигуратором. Попробуем выполнить стандартные регламентные операции:
chdbfl.exe (она находится в папке bin установленной платформы). Это поможет восстановить структуру таблиц и индексов, если в них возникли логические противоречия.Если после этих действий обновление все равно выдает ошибку, перейдем к более сложным методам.
Этот алгоритм позволяет избежать удаления данных и программного кода. Рассмотрим его по шагам:
68.13.9 или 68.13_.68.13.Хозрасчетный, укажем условие совпадения по коду (предварительно вернув старому счету код или ориентируясь на его содержание).Если счет помечен как предопределенный, но при этом является «лишним» или конфликтующим, мы можем программно изменить его статус. В платформе 8.3 это делается без снятия конфигурации с поддержки.
Рассмотрим пример кода, который позволяет очистить имя предопределенного элемента, делая его обычным элементом справочника. Для уточнения полей объекта можно предварительно выполнить просмотр реквизитов объекта метаданных. Это позволит нам в дальнейшем пометить его на удаление или изменить код:
// Определим ссылку на проблемный счет
СсылкаНаСчет = ПланыСчетов.Хозрасчетный.НайтиПоКоду("68.13");
Если Не СсылкаНаСчет.Пустая() Тогда
// Получаем объект для редактирования
СчетОбъект = СсылкаНаСчет.ПолучитьОбъект();
// Очищаем стандартный реквизит ИмяПредопределенногоЭлемента
// Это делает счет "обычным" в глазах системы
СчетОбъект.ИмяПредопределенногоЭлемента = "";
// Записываем изменения
Попытка
СчетОбъект.Записать();
Сообщить("Статус предопределенного элемента успешно снят.");
Исключение
Сообщить("Ошибка при записи: " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
После выполнения этого кода счет перестанет быть защищенным «замком» в режиме предприятия. Теперь мы можем:
Проанализируем наличие установленных расширений. Иногда разработчики расширений заимствуют План счетов и добавляют туда свои субсчета. Если в расширении зафиксирована структура счета, которая конфликтует с новым релизом основной конфигурации, возникнет ошибка уникальности кода.
Рекомендация: Перед запуском обновления временно отключите (снимите галочку «Активно») все расширения, которые могут влиять на План счетов. После успешного обновления и реорганизации данных расширения можно включить обратно, предварительно проверив их на совместимость с новым релизом.
Подведем итог. Ошибка «Код счета не уникален» — это не приговор базе данных, а следствие развития методологии учета в 1С. Для ее решения мы рекомендуем следующий порядок действий:
chdbfl.exe.Помните, что использование типовых механизмов (таких как «Поиск и замена значений») всегда предпочтительнее ручного удаления записей в таблицах, так как это гарантирует сохранение ссылочной целостности вашей бухгалтерии.