Наши коллеги часто сталкиваются с загадочной ошибкой "Тип не определен" при попытке пересчитать итоги в конфигурациях 1С:Предприятия. Эта проблема может проявляться как с конкретным идентификатором объекта (GUID), так и без него, но всегда указывает на некую внутреннюю некорректность или конфликт. Особенно часто эта ошибка начала проявляться на новых версиях платформы 1С:Предприятие 8.3, таких как 8.3.21 и 8.3.22. Давайте разберем эту ситуацию подробнее и выясним, какие шаги мы можем предпринять для ее разрешения.
Мы видим, что сообщения об ошибке "В процессе пересчета итогов произошла ошибка: Тип не определен 'GUID'" чаще всего поступают от пользователей, работающих на относительно новых версиях платформы 1С:Предприятие, таких как 8.3.21.1302, 8.3.21.1622 и 8.3.22. При этом на более ранних версиях, например, 8.3.19, та же операция пересчета итогов может проходить без проблем. Это является сильным индикатором того, что мы имеем дело с особенностью или даже ошибкой самой платформы, которая по-новому обрабатывает данные или метаданные при параллельном пересчете итогов.
Ошибка "Тип не определен" по своей сути означает, что платформа пытается работать с объектом, типом данных или метаданными, о которых она не имеет достаточной информации, или же ссылка на такой объект некорректна. Появление GUID в сообщении об ошибке ('3937114e-c06a-47c2-85e6-ed96c6a4d446' или '495cedf2-d157-4680-b84d-c3e3a86d66ed') указывает на то, что это может быть идентификатор некоего объекта метаданных, который либо поврежден, либо некорректно обрабатывается новой версией платформы в специфических условиях пересчета итогов. С начала платформы 8.3.22.1704, даже такая конструкция, как Тип(""), которая ранее могла возвращать пустое значение типа, теперь может вызывать ошибку. Это подтверждает изменения в логике работы с типами данных в новых версиях платформы.
Одним из наиболее эффективных временных решений, которое помогло нашим коллегам справиться с этой проблемой, является изменение параметра "количество заданий при пересчете итогов". По умолчанию, платформа 1С может использовать несколько параллельных потоков для ускорения пересчета итогов, что в некоторых случаях, особенно на новых платформах с потенциальными внутренними багами, может приводить к конфликтам доступа к данным или метаданным, вызывая ошибку "Тип не определен".
Для начала запустим 1С:Предприятие в режиме "Конфигуратор". Убедимся, что у нас есть достаточные права для изменения настроек базы данных.
В главном меню конфигуратора выберите пункт "Администрирование". Затем в выпадающем меню найдите и выберите опцию "Параметры информационной базы". Перед нами откроется диалоговое окно с различными параметрами, влияющими на работу базы.
В открывшемся окне "Параметры информационной базы" внимательно изучим представленные настройки. Нам необходимо найти параметр, который называется "Количество заданий при пересчете итогов". Как правило, по умолчанию здесь установлено значение 4 или даже более, что указывает на попытку параллельного выполнения операции. Наша задача – установить для этого параметра значение 1.
Установка значения 1 означает, что пересчет итогов будет выполняться в однопоточном режиме, то есть последовательно, задание за заданием. Это значительно снижает вероятность возникновения конфликтов, которые могли бы привести к ошибке "Тип не определен", особенно если проблема связана с синхронизацией доступа к метаданным или данным в многопоточной среде. Хотя это может немного увеличить время выполнения операции (поскольку операции не распараллеливаются), стабильность и успешность пересчета итогов значительно возрастут, что подтверждается опытом других пользователей.
После изменения параметра на "1" обязательно нажмите "ОК" для сохранения внесенных настроек. Затем попробуйте повторно выполнить пересчет итогов через тестирование и исправление данных. Обратите внимание, что успешное выполнение этой операции часто требует повторного запуска платформы.
По опыту наших коллег, этот простой шаг оказался критически важным для обхода проблемы на платформах 8.3.21 и 8.3.22. Помните, что это временное решение, и в будущих обновлениях платформы 1С эта ошибка, вероятно, будет исправлена. Однако на текущий момент оно позволяет успешно завершить операцию и восстановить корректность итогов.
Прежде чем прибегать к специфическим решениям или окончательно убеждаться, что проблема в платформе, всегда следует начинать со стандартных процедур диагностики и исправления базы данных. Хотя в данном случае они могут не решить проблему полностью, они необходимы для исключения других возможных причин, таких как повреждение данных или структуры базы.
Мы запускаем стандартную процедуру "Тестирование и исправление информационной базы", доступную в режиме "Конфигуратор". Это мощный инструмент для диагностики и устранения целого ряда проблем. Обратите внимание на необходимость установки следующих параметров для всесторонней проверки:
Даже если эти шаги не устранят ошибку "Тип не определен" напрямую, они помогут убедиться, что проблема не связана с более общими повреждениями базы данных, такими как "битые" ссылки или некорректная структура таблиц, которые могли бы быть причиной косвенно.
chkdbfl.exe (для файловых баз):
Если вы работаете с файловой базой данных (формат .dt, представляющий собой файл 1Cv8.1CD), настоятельно рекомендуется выполнить проверку с помощью специализированной утилиты chkdbfl.exe. Эта утилита предназначена для низкоуровневой проверки и исправления физических повреждений файла базы данных, которые не всегда могут быть обнаружены стандартным "Тестированием и исправлением".
chkdbfl.exe. Он обычно расположен в каталоге установки платформы 1С:Предприятие (например, в папке C:\Program Files\1cv8\8.3.21.1622\bin).1Cv8.1CD) и запустите проверку. Убедитесь, что выбрана опция "Исправлять обнаруженные ошибки".Эта процедура может занять длительное время в зависимости от размера базы данных и мощности вашего компьютера. По завершении утилита предоставит отчет о найденных и исправленных ошибках.
Как мы уже выяснили, проблема может быть связана с конкретной версией платформы. Если есть возможность, попробуйте установить более раннюю стабильную версию платформы (например, 8.3.19, если проблема возникла на 8.3.21 или 8.3.22) и выполнить пересчет итогов на ней. Для этого вам потребуется установить соответствующую версию платформы параллельно с текущей и запустить базу с ее использованием.
Это поможет изолировать проблему и подтвердить, что она действительно связана с версией платформы, а не с данными или конфигурацией. Если на старой платформе пересчет проходит успешно, это однозначно указывает на баг в новой версии платформы, и следует дождаться ее обновления или использовать обходной путь с количеством заданий.
Если ни одно из вышеперечисленных решений не помогает, и ошибка "Тип не определен" продолжает проявляться, это может указывать на более глубокое повреждение метаданных или внутренних структур базы данных. В таких случаях мы рассмотрим более радикальные методы, которые требуют повышенной осторожности.
Иногда проблемы могут быть связаны не с самой базой, а с поврежденным кэшем платформы на стороне клиента. Платформа 1С кэширует различные данные, включая метаданные, для ускорения работы. Если кэш поврежден, это может привести к некорректному поведению. Мы можем попробовать очистить его:
%APPDATA%\1C\1CE\ и %LOCALAPPDATA%\1C\1CE\.После удаления кэша попробуйте запустить базу снова и выполнить пересчет итогов.
Этот метод часто помогает при логических повреждениях базы, которые могут быть глубоко интегрированы в структуру данных. Мы выполним полную выгрузку данных в файл и затем загрузим их в совершенно новую, "чистую" информационную базу.
.dt. Убедитесь, что операция завершилась без ошибок..dt файл.Это может помочь "оздоровить" базу, так как при выгрузке и последующей загрузке данных происходит их полное переписывание, и многие внутренние ошибки, несоответствия или "мусорные" записи могут быть устранены. Также это часто исправляет проблемы с индексами и структурой таблиц.
Config (только для опытных администраторов и в крайних случаях):
Если проблема действительно связана с глубоким повреждением метаданных (например, в самой таблице Config или ConfigSave в серверной базе), то в редких случаях можно прибегнуть к прямому манипулированию базой данных через SQL Management Studio (для серверных баз) или через специализированные утилиты для файловых баз. Это очень рискованный метод, который может привести к полной неработоспособности базы, если выполнен некорректно. Он требует глубокого понимания структуры базы 1С и SQL. Например, можно попробовать скопировать таблицу Config из рабочей копии базы, где ошибка не проявляется, в проблемную.
Мы настоятельно не рекомендуем выполнять эти действия без полного понимания рисков и предварительной консультации со специалистами 1С, имеющими опыт в низкоуровневой работе с базами данных 1С. Всегда делайте полные резервные копии перед такими операциями! Любое некорректное изменение может сделать базу полностью непригодной для использования.
Пересчет итогов регистров в 1С:Предприятии — это не просто разовая операция для исправления ошибок, но и важная часть поддержания здоровья и производительности информационной базы. Итоги представляют собой агрегированные данные (остатки и обороты), которые хранятся в отдельных таблицах для ускорения формирования отчетов, таких как оборотно-сальдовые ведомости, ведомости по товарам, взаиморасчетам и т.д.
Со временем, при интенсивной работе с базой, в таблицах итогов могут накапливаться "мусорные" записи, записи с нулевыми значениями или возникать расхождения между данными в движениях и данными в таблицах итогов. Это может замедлять работу системы и приводить к некорректным данным в отчетах. Регулярный пересчет итогов помогает:
Мы рекомендуем включать пересчет итогов в регулярный план обслуживания информационной базы, особенно после крупных обновлений конфигурации или платформы, внеплановых выключений сервера, при обнаружении расхождений в отчетах или при общем снижении производительности базы. Это поможет поддерживать вашу информационную систему в оптимальном рабочем состоянии.