Ошибка "Запись не верна! Набор записей, принадлежащий менеджеру, должен содержать ровно 1 запись" в Альфа-Авто 5 и методы ее устранения
Сегодня посреди рабочего дня база отказалась впускать пользователей. При попытке запуска вываливалась ошибка «Запись не верна! Набор записей, принадлежащий менеджеру, должен содержать ровно 1 запись». При этом активные сеансы работали без проблем. Саму ошибку можно было увидеть не всегда, чаще всего она пряталась за баннером с машинками.
- Описание
- Подробнее
Описание
База крутится на PostgreSQL. Платформа 8.3.10.2561
Первым делом, когда пользователи закончили работу, я сделала бэкапы. Потом запустила ТИИ, которое ошибок не обнаружило. Результата не было. Не помогла также и выгрузка-загрузка в файловый вариант базы, и проверка файлового варианта средствами chdbf. Отладчиком нашла место, где 1с вываливается. Этим местом оказалась обработка "Избранное" . Закомментировала проблемное место и о чудо, база запустилась. Пошла смотреть внутрь регистра, а там творился полный хаос. Много-много одинаковых записей в регистре, где все записи должны быть уникальными. Ручками удалила их. После убрала комменты с проблемного места в модуле, попробовала запустить и все заработало.
Вот то место, где 1С вываливалась. Модуль объекта обработки "Избранное"
// Инициализация избранного (получение данных из регистра сведений "КартинкиИФайлы")
Процедура ИнициализироватьИзбранное() Экспорт
РегКартинкиИФайлы = РегистрыСведений.КартинкиИФайлы.СоздатьМенеджерЗаписи();
РегКартинкиИФайлы.Объект = ПараметрыСеанса.Пользователь;
РегКартинкиИФайлы.Идентификатор = ИдентификаторИзбранное;
РегКартинкиИФайлы.Прочитать();
ДеревоИзбранного = РегКартинкиИФайлы.Данные.Получить(); // проблема была вот тут
Если ТипЗнч(ДеревоИзбранного) <> Тип("ДеревоЗначений") Тогда
ДеревоИзбранного = Новый ДеревоЗначений;
КонецЕсли;
Если ДеревоИзбранного.Колонки.Количество()=0 Тогда
ДеревоИзбранного.Колонки.Добавить("Представление");
ДеревоИзбранного.Колонки.Добавить("ТипОбъекта");
ДеревоИзбранного.Колонки.Добавить("ОткрытьПриЗапуске");
ДеревоИзбранного.Колонки.Добавить("ВидОбъекта");
ДеревоИзбранного.Колонки.Добавить("ЭкземплярОбъекта");
ДеревоИзбранного.Колонки.Добавить("ФормаОбъекта");
КонецЕсли;
Если ДеревоИзбранного.Строки.Количество()=0 Тогда
НовыйЭлемент=ДеревоИзбранного.Строки.Добавить();
НовыйЭлемент.Представление="Избранное";
НовыйЭлемент.ТипОбъекта="Избранное";
КонецЕсли;
КонецПроцедуры
Надеюсь, что мой горький опыт кому-то поможет.
И вопрос к знатокам: какова может быть причина такой хвори? Именно с данной базой ни каких работ на момент появления ошибки я не производила, но приблизительно в это время пыталась развернуть в копию бэкап этой базы средствами postgreSQL, однако, сделать этого не получилось. Могло ли это стать причиной глюка? Ниже кусок лога в тот момент, когда все произошло
