14 сент. 2018 г.

Дополнительная обработка в безопасном режиме

При попытке сделать дополнительную обработку и добавить её в конфигруацию: "Бухгалтерия для украины, редакция 2.0", версия 2.0.11.1 или "Бухгалтерія для України, редакція 2.0", версія 2.0.11.1 - столкнулся с ошибками при добавлении в справочник дополнительных обработок в режиме 1С:Предприятие.

Вот так выглядит моя процедура регистрации:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
ПараметрыРегистрации.Версия = "1.2";
ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплатуПокупателю");
ПараметрыРегистрации.Наименование = "Формирование пакета документов";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Создать пакет документов'");
НоваяКоманда.Идентификатор = "СоздатьПакетДокументов";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима("для проведения пакета документов нужнен привилегированный режим, который может работать только если ТЧ Разрешения.Количество() <> 0");
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
Возврат ПараметрыРегистрации;
КонецФункции

Чтобы исправить пришлось снять конфигурацию с поддержки и в двух местах внести изменения. Не считаю этот путь правильным, но он рабочий, поэтому кому интересно какие конкретно изменения я внес - сообщите мне любым доступным способом свои контакты, вышлю эту информацию.

В результате сделал так:
1. В исправленной конфигурации загрузил обработку в справочник "Дополнительные отчеты и обработки".
2. Используя обработку ВыгрузкаЗагрузкаДанныхXML.epf выгрузил элемент справочника "Дополнительные отчеты и обработки" в файл.
3. Запустил рабочую базу с оригинальной конфигурацией поставщика в режиме толстый клинет (обычное приложение).
4. Используя обработку ВыгрузкаЗагрузкаДанныхXML.epf загрузил данные из файла, полученного на шаге 2. (ВНИМАНИЕ! В справочнике ИдентификаторыОбъектовМетаданных появился дубль. Моя обработка работает с документом СчетНаОплатуПокупателю. Система понимает с каким объектом метаданных работает дополнительная обработка через элемент справочника ИдентификаторыОбъектовМетаданных. Ссылка на этот справочник есть в элементе справочника "Дополнительные отчеты и обработки", который я переношу через файл, поэтому он также переносится, а в базе-приемнике уже есть такой элемент, поэтому получается дубль. ВНИМАНИЕ! Дубль создается не всегда, был случай, когда он не создался и шаг 5. не понадобился).
5. Используя доработанную обработку "Поиск и замена дублирующихся элементов", ищу дубли по объекту метаданных Справочник.ИдентификаторыОбъектовМетаданных. Будет найдено много дублей, но я ищу тот объект метаданных, к которому подключается моя дополнительная обработка. В моем случае это Документ.СчетНаОплатуПокупателю. Копирую наименование, заполняю отбор Наименование = [то что я скопировал], выполняю поиск дублей повторно. Получаю в таблице дублей только те метаданные, которые я точно знаю что задублировались в результате переноса данных через файл. В настройках обработки ставлю флажки "Выполнять в транзакции", "Отключать контроль записи".
(ВНИМАНИЕ! Внес изменение  в эту обработку, при удалении после замены анализирую "Отключать контроль записи", если да, тогда перед удалением делаю Объект.ОбменДанными.Загрузка = Истина. Если этого не сделать то не получиться удалить задублированный элемент справочника, поскольку перед удалением выполняется проверка на то чтоб элемент был помечен на удаление, а прав помечать на удаление интерактивно нет). На закладке "Результаты поиска" нажимаю "Автоопределение правильных", затем "Автозамена", затем "Да". Готово.




Комментариев нет:

Отправить комментарий