В процессе работы с конфигурацией 1С:Бухгалтерия 7.7 (особенно после обновления на релиз 584) пользователи часто сталкиваются с ошибкой «Поле агрегатного объекта не обнаружено (Курс)». Эта проблема возникает при запуске процедуры формирования книги покупок. Давайте разберем, почему это происходит и как устранить данную неполадку, не нарушив при этом целостность данных вашего налогового учета.
Ошибка указывает на то, что программа пытается обратиться к реквизиту Курс у объекта, который, по логике конфигурации, должен иметь этот реквизит, но по факту его не содержит. В коде документа Формирование книги покупок разработчики добавили считывание данных из связанного документа (поле Приход):
ТабОтчета.Договор = ДокАвто.Приход.Договор;
ТабОтчета.Курс = ДокАвто.Приход.Курс;
ТабОтчета.КодВидаОперации = ДокАвто.Приход.КодВидаОперации;
Ошибка возникает, когда в поле Приход документа Запись книги покупок попадает документ другого вида (например, Авансовый отчет), у которого конструктивно отсутствует реквизит Курс. Программа «спотыкается» при попытке прочитать несуществующее поле.
Чтобы понять, какой именно документ вызывает сбой, воспользуемся оператором Попытка...Исключение. Это позволит нам не прерывать работу программы, а вывести информативное сообщение об ошибке.
Вставьте следующий блок кода в модуль документа Формирование книги покупок:
Попытка
ТабОтчета.Курс = ДокАвто.Приход.Курс;
Исключение
Сообщить("Проблема возникла в документе: " + ДокАвто);
Сообщить("Описание ошибки: " + ОписаниеОшибки());
Сообщить("Тип документа в поле Приход: " + ТипЗначенияСтр(ДокАвто.Приход));
КонецПопытки;
После запуска обработки программа выведет имя документа и строку, на которой произошел сбой. Чаще всего выясняется, что в Приход записан документ, который по методологии учета НДС не должен там находиться.
Существует два подхода к решению данной задачи: правильный (методологический) и технический (временный «обходной» путь).
Книга покупок в 1С предназначена исключительно для регистрации Счетов-фактур полученных. Если в вашей базе в качестве приходного документа выбран Авансовый отчет или иной документ, это свидетельствует об ошибке ввода данных бухгалтером. Проверьте цепочку документов:
Счет-фактура полученный.Запись книги покупок.Счет-фактура полученный.Исправление данных в документах позволит избежать модификации кода конфигурации, что критически важно для последующих обновлений программы.
Если методологическое исправление невозможно или требует слишком много времени, можно временно «заглушить» ошибку, чтобы дать бухгалтерии возможность сформировать отчет. Однако помните: это не исправляет ошибку в учете, а лишь маскирует её.
Вы можете обернуть вызов в конструкцию Попытка и присвоить стандартное значение (например, 1), если реквизит не найден:
Попытка
ТабОтчета.Курс = ДокАвто.Приход.Курс;
Исключение
ТабОтчета.Курс = 1; // Установка значения по умолчанию для обхода ошибки
КонецПопытки;
Важное предостережение: использование значения по умолчанию (1) может привести к неверному расчету налоговой базы по валютным операциям. Если в вашей организации ведется валютный учет, такой «обход» категорически не рекомендуется, так как это приведет к искажению данных в налоговой отчетности.
Рассмотренная ошибка в большинстве случаев является следствием «замусоривания» базы данных или неверной схемы ввода первичных документов. Мы настоятельно рекомендуем проверить справочники и документы, на которые ссылается Запись книги покупок. Программные правки должны быть лишь временной мерой, а основной упор следует сделать на обучение персонала правильному отражению хоз. операций в системе.