Обновление справочника Идентификаторы объектов метаданных не монопольно



Обновить справочник Идентификаторы объектов метаданных не монопольно.
Свершилось, теперь не нужно выгонять всех пользователей, чтобы добавить свою новую обработку или роль или еще что в волшебные идентификаторы.

Каждый программист в процессе своей работы встречает такую ошибку.

Почитали, запустили 1С с ключом "/С ЗапуститьОбновлениеИнформационнойБазы". Запустили, началась глобальный процесс, который завершился с ругательством о работающих пользователях. Не беда, подумали Вы, сделаю ночью. Новички решают вопрос еще проще, счас выгоню всех пользователей, обновляю, вуаля, можно работать.

Раз, второй. Обновили, на завтра снова та же проблема, уже м другим отчетом, ролью или еще чем.

Решаем попробоавать второй путь, поискав обработку Инструменты разработчика обновление вспомогательных данных. Но оказывается и она работает лишь в монопольном режиме.

Неужели нужно выгонять всех пользователей каждый раз?

Выяснилось, что необязательно, поэтому представляю на ваш суд свою новую обработку, не требующую монопольного доступа.

Код собственно обработки не сложный, но непосредственно в исполняемом коде заблокирована установка монопольного режима, единственная проблема, так или иначе на время работы обработки, а если только обновлять данные, то все происходит в момент, будет заблокирована работа пользователей ненадолго и никого выгонять не надо.

Единственное неудобство в том, что с обновлением версии БСП вероятно придется обновлять и саму обработку.

Часть кода обработки:

&НаСервере
Процедура ДаНаСервере()
ОбновитьДанныеСправочника(Объект.ЕстьИзменения, Объект.ЕстьУдаленные, Объект.ТолькоПроверка);
КонецПроцедуры

&НаКлиенте
Процедура Да(Команда)
ДаНаСервере();
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Обновление выполнено!";
Сообщение.Сообщить();
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Объект.ЕстьИзменения = Истина;
Объект.ЕстьУдаленные = Ложь;
Объект.ТолькоПроверка = Ложь;
Объект.ВерсияБСПОбработки = "2.3.5.29";
Попытка
Объект.ВерсияБСПСистемы = СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
Исключение
Отказ = Истина;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Данная обработка не может быть исполнена на вашей системе. Не инсталлирована БСП!";
Сообщение.Сообщить();
КонецПопытки;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если СокрЛП(Объект.ВерсияБСПОбработки) <>  СокрЛП(Объект.ВерсияБСПСистемы) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не совпадает версия БСП вашей системы и версия БСП, под которую написана обработка!
|Версия БСП вашей системы: "+Объект.ВерсияБСПСистемы+"
|Версия БСП, под которую написана обработка: "+Объект.ВерсияБСПОбработки+"
|Возможна некорректная работа! Советуем скачать новую обработку под Вашу версию БСП.";
Сообщение.Сообщить();
Предупреждение("Обратите внимание на различие версий БСП вашей системы и версии БСП, под которую написана обработка!");
КонецЕсли;
КонецПроцедуры

Похожие разработки: 

//infostart.ru/public/379481

//infostart.ru/public/559513

6 Comments

  1. корум

    (0) Это тупо с диска ИТС что ли?

    Лайк.

    А всё же, по каким соображениям 1с эти действия заставляет выполнять в монопольном режиме?

    Reply
  2. mitia.mackarevich

    (1)Пользователи могут же отчетами пользоваться, вариант через ключ в новых БСП передается, роли назначаются в профиле.

    вот собственно одна из причин

    Reply
  3. Светлый ум

    Видимо уже не очень актуальная обработка БП 3.0.58.20 ругается так:

    1) Версия БСП вашей системы: 2.4.4.130

    Версия БСП, под которую написана обработка: 2.3.5.29

    2) {Справочник.ИдентификаторыОбъектовМетаданных.МодульМенеджера(1644)}: Ошибка при вызове метода контекста (Записать)

    ТаблицаОбъект.Записать();

    по причине:

    Не удалось записать «Константы (Идентификатор объекта метаданных)»!

    Reply
  4. anreko
    Reply
  5. orilien

    На версии БСП 2.3.3 пишет выполнено, но элементы справочника метаданные не добавляются.

    Reply
  6. anreko

    Используется стандартный код из БСП 2.3.3. Если выполнено, значит все процедуры отработаны без ошибок. Можно проанализировать журнал регистрации, сделать обновление информационной базы с ключом в монопольном режиме.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *