Как исправить ошибку «Не определен счет в соответствии счетов» в 1С

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

При работе с регламентированной отчетностью в различных конфигурациях 1С (будь то старая «Бухгалтерия предприятия 1.6» или современные «ERP 2.4» и «Комплексная автоматизация») пользователи и разработчики часто сталкиваются с ошибкой «Не определен счет [КодСчета] в соответствии счетов». Эта проблема блокирует возможность автоматического заполнения отчета и, как правило, связана с тем, что программный алгоритм не может сопоставить конкретный счет из плана счетов с внутренними правилами сбора данных для строк баланса или других форм.

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

Причины возникновения ошибки в старых конфигурациях (БП 1.6 и 2.0)

В конфигурациях на обычных формах, таких как БП 1.6, при попытке использовать формы отчетности, заимствованные из более новых редакций (например, перенесенные из БП 2.0), возникает конфликт архитектуры. Проанализируем ситуацию: в БП 2.0 используется специальный объект Соответствие (карта), который хранит связи между кодами строк и объектами плана счетов. В БП 1.6 этот механизм реализован иначе или отсутствует в нужном отчету виде.

Чаще всего ошибка проявляется в функции Счет(КодСчета), когда программа пытается обратиться к переменной мСчет. Разберем типичный фрагмент кода, вызывающий сбой:


Функция Счет(КодСчета)
    НайденныйСчет = мСчет[КодСчета];
    Если НайденныйСчет = Неопределено Тогда
        Предупреждение("Ошибка. Не определен счет " + КодСчета + " в соответствии счетов");
    КонецЕсли;
    Возврат НайденныйСчет;
КонецФункции

Если в таблице мСчет отсутствует ключ "70" (или любой другой), функция возвращает Неопределено, что в дальнейшем приводит к ошибке «Значение не является значением объектного типа (ВидыСубконто)» при попытке обратиться к аналитике счета.

Решение проблемы в БП 1.6 программным путем

Рассмотрим два способа исправления кода в конфигураторе для старых систем:

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

    СчетРасчетовСПерсоналом = Счет("70");

    И заменим ее на прямое обращение:
    
    СчетРасчетовСПерсоналом = ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда;
    
    Это позволит «обойти» проверку в функции соответствия, и отчет откроется.
  2. Корректная инициализация соответствия. Чтобы кнопка «Заполнить» работала корректно для всех счетов, необходимо найти процедуру ЗаполнитьСоответствиеСчетов(СоответствиеСчетов) в форме отчета. Проанализируем её структуру и добавим недостающие счета вручную:
    
    Процедура ЗаполнитьСоответствиеСчетов(СоответствиеСчетов)
        // Существующий код...
        СоответствиеСчетов.Вставить("70", ПланыСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда);
        СоответствиеСчетов.Вставить("68.01", ПланыСчетов.Хозрасчетный.НДФЛ);
        // Для счетов, которых нет в вашей конфигурации, можно вставить пустую ссылку
        // СоответствиеСчетов.Вставить("НесуществующийСчет", ПланыСчетов.Хозрасчетный.ПустаяСсылка());
    КонецПроцедуры
    
    Важно убедиться, что все используемые в отчете счета (особенно субсчета 68 и 69) корректно прописаны в этой процедуре.

Ошибка в современных конфигурациях (ERP 2.x, КА 2.x)

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

Рассмотрим, как это работает: программа обращается к общему модулю ЗаполнениеБухгалтерскойОтчетностиИтоги. В нем реализована функция, которая по строковому коду возвращает ссылку на счет. Если код счета (например, "68.52") не найден в ветках Если ... ИначеЕсли, срабатывает исключение Иначе, выдающее пользователю сообщение об ошибке.

Как решить проблему в ERP и Комплексной автоматизации

Посмотрим на доступные варианты решения для актуальных конфигураций:

  1. Обновление конфигурации. Это самый правильный и рекомендуемый метод. Фирма «1С» оперативно выпускает исправления (патчи) или новые релизы, где обновлены модули заполнения отчетности. Если вы столкнулись с ошибкой на счетах типа 68.52 или 68.90 (ЕНП), скорее всего, в актуальном релизе (например, 2.4.3.167 и выше) эта проблема уже устранена.
  2. Использование расширений. Если обновление всей базы в данный момент невозможно, проанализируем возможность создания расширения. Мы можем перехватить функцию в модуле ЗаполнениеБухгалтерскойОтчетностиПереопределяемый и добавить туда логику обработки «проблемного» счета.
    
    &После("ЗаполнитьСоответствиеСчетов")
    Процедура Расш_ЗаполнитьСоответствиеСчетов(СоответствиеСчетов)
        Если СоответствиеСчетов.Получить("68.52") = Неопределено Тогда
            СоответствиеСчетов.Вставить("68.52", ПланыСчетов.Хозрасчетный.НалогНаПрибыльПриИсполненииОбязанностейНалоговогоАгента);
        КонецЕсли;
    КонецПроцедуры
    
    Это позволит не снимать конфигурацию с поддержки и сохранить возможность автоматического заполнения отчетов.

Дополнительные рекомендации по диагностике

Выясним, какие еще факторы могут влиять на появление данной ошибки:

Анализ Субконто: Обратите внимание на сообщение №4 из обсуждения. Часто ошибка возникает из-за того, что состав ВидыСубконто на счете в вашей базе отличается от того, который ожидает отчет. Например, на 70 счете в версии 2.0 субконто называется РаботникиОрганизаций, а в модифицированной 1.6 оно может называться иначе или отсутствовать. Проверьте План счетов и убедитесь, что аналитика соответствует требованиям алгоритма заполнения.

Кэш и настройки: Иногда программа пытается заполнить отчет, используя старые сохраненные настройки. Попробуйте создать совершенно новый экземпляр регламентированного отчета, не копируя старый, и нажмите кнопку «Заполнить».

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

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

← На главную