расширение: ошибка блокировки объекта
1С Предприятие 8.3.15.1656
режим совместимости 8.3.14
Работаю с расширением конфигурации.
Режим отладки включен.
Никак не могу понять что происходит. Вдруг внезапно выпадает ошибка:
При выполнении операции над расширение "Учет посетителей" возникла ошибка:
Не удалось заблокировать запись. Ну и так далее - полный текст на скрине.
Конфигуратор закрыт.
Пытаюсь выполнить обновление идентификаторов объектом метаданных либо обновление конфигурации (через ключ запуска) - такая же обшибка, обновление конфигурации зависает и НЕ выполняется.
Никак не могу отловить закономерность. Расширение то работает, то ругается такой ошибкой.
Помогает только полное удаление расширения со всеми данными.
режим совместимости 8.3.14
Работаю с расширением конфигурации.
Режим отладки включен.
Никак не могу понять что происходит. Вдруг внезапно выпадает ошибка:
При выполнении операции над расширение "Учет посетителей" возникла ошибка:
Не удалось заблокировать запись. Ну и так далее - полный текст на скрине.
Конфигуратор закрыт.
Пытаюсь выполнить обновление идентификаторов объектом метаданных либо обновление конфигурации (через ключ запуска) - такая же обшибка, обновление конфигурации зависает и НЕ выполняется.
Никак не могу отловить закономерность. Расширение то работает, то ругается такой ошибкой.
Помогает только полное удаление расширения со всеми данными.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
Проблему удалось обойти, но не совсем понятно на сколько это корректно.
В общем делюсь что удалось нарыть. В текущей версии конфы используется какой-то устаревший метод обновления ИД объектов МД при котором все расширения сначала удаляются (с предварительным сохранением их данных), а затем восстанавливаются из хранилища.
На сколько я понял, это какая-то особенность совместимости 8.3.6 потому что в релизе КА2.0 с совместимостью 8.3.14 ничего такого нет в аналогичной процедуре модуля менеджера справочника ИД объектом МД.
В общем я просто отключил вызов исключения в случае невозможностиудаления расширения и после этого включил расширение, успешно обновил справочник ИД объектов МД и отчет открылся.
т.е. просто отключил команду вызывающую исключение
В общем делюсь что удалось нарыть. В текущей версии конфы используется какой-то устаревший метод обновления ИД объектов МД при котором все расширения сначала удаляются (с предварительным сохранением их данных), а затем восстанавливаются из хранилища.
На сколько я понял, это какая-то особенность совместимости 8.3.6 потому что в релизе КА2.0 с совместимостью 8.3.14 ничего такого нет в аналогичной процедуре модуля менеджера справочника ИД объектом МД.
В общем я просто отключил вызов исключения в случае невозможностиудаления расширения и после этого включил расширение, успешно обновил справочник ИД объектов МД и отчет открылся.
Функция УдаленныеРасширения(КоличествоУстановленных = 0)
УдаленныеРасширения = Новый Структура;
ВсеРасширения = РасширенияКонфигурации.Получить();
Расширения = Новый Массив;
ДанныеРасширений = Новый Массив;
Индекс = ВсеРасширения.Количество()-1;
НачатьТранзакцию();
Попытка
Пока Индекс >= КоличествоУстановленных Цикл
Расширение = ВсеРасширения[Индекс];
Расширения.Вставить(0, Расширение);
ДанныеРасширений.Вставить(0, Расширение.ПолучитьДанные());
Попытка
Расширение.Удалить();
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='При выполнении операции над расширением ""%1"" возникла ошибка:
|%2
|
|Убедитесь, что все расширения закрыты в конфигураторе.'
|;uk='При виконанні операції над розширенням ""%1"" помилка:
|%2
|
|Переконайтеся, що всі розширення закриті в конфігураторі.'"),
Расширение.Имя,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
//ВызватьИсключение ТекстОшибки;
КонецПопытки;
Индекс = Индекс - 1;
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Возврат Новый Структура("Расширения, ДанныеРасширений", Расширения, ДанныеРасширений);
КонецФункции
Показатьт.е. просто отключил команду вызывающую исключение
Остальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Исключение происходит в этой функции.
Типовая конфигурация зачем-то пытается удалить расширения. Приблизительно догадываюсь что это как-то связано с обновлением справочника "Идентификаторы объектов МД", но не понимаю логики.
Типовая конфигурация зачем-то пытается удалить расширения. Приблизительно догадываюсь что это как-то связано с обновлением справочника "Идентификаторы объектов МД", но не понимаю логики.
// Для функции СвойстваРасширений.
Функция УдаленныеРасширения(КоличествоУстановленных = 0)
УдаленныеРасширения = Новый Структура;
ВсеРасширения = РасширенияКонфигурации.Получить();
Расширения = Новый Массив;
ДанныеРасширений = Новый Массив;
Индекс = ВсеРасширения.Количество()-1;
НачатьТранзакцию();
Попытка
Пока Индекс >= КоличествоУстановленных Цикл
Расширение = ВсеРасширения[Индекс];
Расширения.Вставить(0, Расширение);
ДанныеРасширений.Вставить(0, Расширение.ПолучитьДанные());
Попытка
Расширение.Удалить();
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='При выполнении операции над расширением ""%1"" возникла ошибка:
|%2
|
|Убедитесь, что все расширения закрыты в конфигураторе.'
|;uk='При виконанні операції над розширенням ""%1"" помилка:
|%2
|
|Переконайтеся, що всі розширення закриті в конфігураторі.'"),
Расширение.Имя,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
ВызватьИсключение ТекстОшибки;
КонецПопытки;
Индекс = Индекс - 1;
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Возврат Новый Структура("Расширения, ДанныеРасширений", Расширения, ДанныеРасширений);
КонецФункции
Показать
Если открыт конфигуратор, но ВСЕ расширения закрыты, то запуск 1С в режиме отладки позволяет загрузиться. Все объекты расширения открываются нормально, а при попытке открыть отчёт выдает туже ошибку. Причем даже при попытке открыть внешний отчет тоже ошибка.
Я подозреваю что при открытии отчётов происходит попытка обновить элементы справочника идентификаторы объектов расшерений (и/или метаданных) и уже это действие вызывает ошибку.
PS. Ошибка возникает при открытии ЛЮБОГО внешнего отчета. а так же при открытии меню "Отчеты" любого раздела (Казначенийство, Продажи и т.п.).
Т.е. таки точно проблема в том, что не может отработать обновление идентификаторов объектом МД.
Я подозреваю что при открытии отчётов происходит попытка обновить элементы справочника идентификаторы объектов расшерений (и/или метаданных) и уже это действие вызывает ошибку.
PS. Ошибка возникает при открытии ЛЮБОГО внешнего отчета. а так же при открытии меню "Отчеты" любого раздела (Казначенийство, Продажи и т.п.).
Т.е. таки точно проблема в том, что не может отработать обновление идентификаторов объектом МД.
Проблему удалось обойти, но не совсем понятно на сколько это корректно.
В общем делюсь что удалось нарыть. В текущей версии конфы используется какой-то устаревший метод обновления ИД объектов МД при котором все расширения сначала удаляются (с предварительным сохранением их данных), а затем восстанавливаются из хранилища.
На сколько я понял, это какая-то особенность совместимости 8.3.6 потому что в релизе КА2.0 с совместимостью 8.3.14 ничего такого нет в аналогичной процедуре модуля менеджера справочника ИД объектом МД.
В общем я просто отключил вызов исключения в случае невозможностиудаления расширения и после этого включил расширение, успешно обновил справочник ИД объектов МД и отчет открылся.
т.е. просто отключил команду вызывающую исключение
В общем делюсь что удалось нарыть. В текущей версии конфы используется какой-то устаревший метод обновления ИД объектов МД при котором все расширения сначала удаляются (с предварительным сохранением их данных), а затем восстанавливаются из хранилища.
На сколько я понял, это какая-то особенность совместимости 8.3.6 потому что в релизе КА2.0 с совместимостью 8.3.14 ничего такого нет в аналогичной процедуре модуля менеджера справочника ИД объектом МД.
В общем я просто отключил вызов исключения в случае невозможностиудаления расширения и после этого включил расширение, успешно обновил справочник ИД объектов МД и отчет открылся.
Функция УдаленныеРасширения(КоличествоУстановленных = 0)
УдаленныеРасширения = Новый Структура;
ВсеРасширения = РасширенияКонфигурации.Получить();
Расширения = Новый Массив;
ДанныеРасширений = Новый Массив;
Индекс = ВсеРасширения.Количество()-1;
НачатьТранзакцию();
Попытка
Пока Индекс >= КоличествоУстановленных Цикл
Расширение = ВсеРасширения[Индекс];
Расширения.Вставить(0, Расширение);
ДанныеРасширений.Вставить(0, Расширение.ПолучитьДанные());
Попытка
Расширение.Удалить();
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='При выполнении операции над расширением ""%1"" возникла ошибка:
|%2
|
|Убедитесь, что все расширения закрыты в конфигураторе.'
|;uk='При виконанні операції над розширенням ""%1"" помилка:
|%2
|
|Переконайтеся, що всі розширення закриті в конфігураторі.'"),
Расширение.Имя,
КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
//ВызватьИсключение ТекстОшибки;
КонецПопытки;
Индекс = Индекс - 1;
КонецЦикла;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Возврат Новый Структура("Расширения, ДанныеРасширений", Расширения, ДанныеРасширений);
КонецФункции
Показатьт.е. просто отключил команду вызывающую исключение
(13) в конечном итоге осталось невыясненным почему расширение не удалялось программно, но разработчики типовой конфигурации не правы в том, что вводят пользователя в заблуждение тем, что допускают что расширение может не удаляться только из-за того, что оно занято конфигуратором. Написали бы просто - не удаляется расширение, возможная причина конфигуратор.
Опять у меня проблема с этой частью. Сейчас с " Расширение.Удалить();" когда пытался сделать "/С ЗапуститьОбновлениеИнформационнойБазы". Для файловой все работает, для SQL - эта строка просто не выполняется и все валится. В целом проблема решилась пришлось использовать: Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(Истина, ЛОЖЬ,"Полный"); плюс еще кучу мест пришлось поменять.
Очень много времени уходит на игрульки такого плана.
Очень надеюсь, что разработчики BAS КУП все же обновят этот модуль да и версию режима совместимости поставят "не использовать" или "8.3.18", "8.3.20". В текущей версии имеем какой-то замкнутый круг - можем использовать кучу всяких классных фишек расширений - уже практически все метаданные имеют представление в расширениях и с другой стороны чтобы их использовать - надо поднять версию конфигурации. А как ее поднять если из-за этого валятся ошибки? А уже и не сильно уверен в правильности их использования. Вот с BAS КУП (и др. наверно) более высокого режима совместимости я бы 100% рекомендовал клиентам. А сейчас - хз
Очень много времени уходит на игрульки такого плана.
Очень надеюсь, что разработчики BAS КУП все же обновят этот модуль да и версию режима совместимости поставят "не использовать" или "8.3.18", "8.3.20". В текущей версии имеем какой-то замкнутый круг - можем использовать кучу всяких классных фишек расширений - уже практически все метаданные имеют представление в расширениях и с другой стороны чтобы их использовать - надо поднять версию конфигурации. А как ее поднять если из-за этого валятся ошибки? А уже и не сильно уверен в правильности их использования. Вот с BAS КУП (и др. наверно) более высокого режима совместимости я бы 100% рекомендовал клиентам. А сейчас - хз
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)