При попытке сделать дополнительную обработку и добавить её в конфигруацию: "Бухгалтерия для украины, редакция 2.0", версия 2.0.11.1 или "Бухгалтерія для України, редакція 2.0", версія 2.0.11.1 - столкнулся с ошибками при добавлении в справочник дополнительных обработок в режиме 1С:Предприятие.
Вот так выглядит моя процедура регистрации:
Чтобы исправить пришлось снять конфигурацию с поддержки и в двух местах внести изменения. Не считаю этот путь правильным, но он рабочий, поэтому кому интересно какие конкретно изменения я внес - сообщите мне любым доступным способом свои контакты, вышлю эту информацию.
В результате сделал так:
1. В исправленной конфигурации загрузил обработку в справочник "Дополнительные отчеты и обработки".
2. Используя обработку ВыгрузкаЗагрузкаДанныхXML.epf выгрузил элемент справочника "Дополнительные отчеты и обработки" в файл.
3. Запустил рабочую базу с оригинальной конфигурацией поставщика в режиме толстый клинет (обычное приложение).
4. Используя обработку ВыгрузкаЗагрузкаДанныхXML.epf загрузил данные из файла, полученного на шаге 2. (ВНИМАНИЕ! В справочнике ИдентификаторыОбъектовМетаданных появился дубль. Моя обработка работает с документом СчетНаОплатуПокупателю. Система понимает с каким объектом метаданных работает дополнительная обработка через элемент справочника ИдентификаторыОбъектовМетаданных. Ссылка на этот справочник есть в элементе справочника "Дополнительные отчеты и обработки", который я переношу через файл, поэтому он также переносится, а в базе-приемнике уже есть такой элемент, поэтому получается дубль. ВНИМАНИЕ! Дубль создается не всегда, был случай, когда он не создался и шаг 5. не понадобился).
5. Используя доработанную обработку "Поиск и замена дублирующихся элементов", ищу дубли по объекту метаданных Справочник.ИдентификаторыОбъектовМетаданных. Будет найдено много дублей, но я ищу тот объект метаданных, к которому подключается моя дополнительная обработка. В моем случае это Документ.СчетНаОплатуПокупателю. Копирую наименование, заполняю отбор Наименование = [то что я скопировал], выполняю поиск дублей повторно. Получаю в таблице дублей только те метаданные, которые я точно знаю что задублировались в результате переноса данных через файл. В настройках обработки ставлю флажки "Выполнять в транзакции", "Отключать контроль записи".
(ВНИМАНИЕ! Внес изменение в эту обработку, при удалении после замены анализирую "Отключать контроль записи", если да, тогда перед удалением делаю Объект.ОбменДанными.Загрузка = Истина. Если этого не сделать то не получиться удалить задублированный элемент справочника, поскольку перед удалением выполняется проверка на то чтоб элемент был помечен на удаление, а прав помечать на удаление интерактивно нет). На закладке "Результаты поиска" нажимаю "Автоопределение правильных", затем "Автозамена", затем "Да". Готово.
Вот так выглядит моя процедура регистрации:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Функция СведенияОВнешнейОбработке() Экспорт | |
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1"); | |
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта(); | |
ПараметрыРегистрации.Версия = "1.2"; | |
ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплатуПокупателю"); | |
ПараметрыРегистрации.Наименование = "Формирование пакета документов"; | |
ПараметрыРегистрации.БезопасныйРежим = Ложь; | |
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); | |
НоваяКоманда.Представление = НСтр("ru = 'Создать пакет документов'"); | |
НоваяКоманда.Идентификатор = "СоздатьПакетДокументов"; | |
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода(); | |
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима("для проведения пакета документов нужнен привилегированный режим, который может работать только если ТЧ Разрешения.Количество() <> 0"); | |
ПараметрыРегистрации.Разрешения.Добавить(Разрешение); | |
Возврат ПараметрыРегистрации; | |
КонецФункции |
Чтобы исправить пришлось снять конфигурацию с поддержки и в двух местах внести изменения. Не считаю этот путь правильным, но он рабочий, поэтому кому интересно какие конкретно изменения я внес - сообщите мне любым доступным способом свои контакты, вышлю эту информацию.
В результате сделал так:
1. В исправленной конфигурации загрузил обработку в справочник "Дополнительные отчеты и обработки".
2. Используя обработку ВыгрузкаЗагрузкаДанныхXML.epf выгрузил элемент справочника "Дополнительные отчеты и обработки" в файл.
3. Запустил рабочую базу с оригинальной конфигурацией поставщика в режиме толстый клинет (обычное приложение).
4. Используя обработку ВыгрузкаЗагрузкаДанныхXML.epf загрузил данные из файла, полученного на шаге 2. (ВНИМАНИЕ! В справочнике ИдентификаторыОбъектовМетаданных появился дубль. Моя обработка работает с документом СчетНаОплатуПокупателю. Система понимает с каким объектом метаданных работает дополнительная обработка через элемент справочника ИдентификаторыОбъектовМетаданных. Ссылка на этот справочник есть в элементе справочника "Дополнительные отчеты и обработки", который я переношу через файл, поэтому он также переносится, а в базе-приемнике уже есть такой элемент, поэтому получается дубль. ВНИМАНИЕ! Дубль создается не всегда, был случай, когда он не создался и шаг 5. не понадобился).
5. Используя доработанную обработку "Поиск и замена дублирующихся элементов", ищу дубли по объекту метаданных Справочник.ИдентификаторыОбъектовМетаданных. Будет найдено много дублей, но я ищу тот объект метаданных, к которому подключается моя дополнительная обработка. В моем случае это Документ.СчетНаОплатуПокупателю. Копирую наименование, заполняю отбор Наименование = [то что я скопировал], выполняю поиск дублей повторно. Получаю в таблице дублей только те метаданные, которые я точно знаю что задублировались в результате переноса данных через файл. В настройках обработки ставлю флажки "Выполнять в транзакции", "Отключать контроль записи".
(ВНИМАНИЕ! Внес изменение в эту обработку, при удалении после замены анализирую "Отключать контроль записи", если да, тогда перед удалением делаю Объект.ОбменДанными.Загрузка = Истина. Если этого не сделать то не получиться удалить задублированный элемент справочника, поскольку перед удалением выполняется проверка на то чтоб элемент был помечен на удаление, а прав помечать на удаление интерактивно нет). На закладке "Результаты поиска" нажимаю "Автоопределение правильных", затем "Автозамена", затем "Да". Готово.
Комментариев нет:
Отправить комментарий