Обновление конфигураций на БСП, у которых в расширениях есть собственные объекты с данными

12.02.18

База данных - Обновление 1С

Показан способ обновления конфигураций, основанных на БСП, в тех случаях, когда в расширениях имеются собственные объекты данных (Справочники, Документы, Регистры сведений, Планы обмена).

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Обновление конфигураций на БСП, у которых в расширениях есть собственные объекты с данными:
.cfe 7,95Kb
101
101 Скачать (1 SM) Купить за 1 850 руб.

Как все хорошо начиналось

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

Беда пришла откуда не ждали

При обновлении вдруг выползло страшное окошко, которое ничего хорошего не обещало:

Первая мысль - "WTF?", ведь до этого расширение работало и ни на что не жаловалось.

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

За чашечкой кофе приходит третья мысль - хочешь записи в справочниках? Будут тебе записи в справочниках! Быстренько пишу обработку, которая эти записи туда вносит (ну не то чтобы быстренько... пришлось поковырять исходники), запускаю... И ничего! И не просто ничего, а ничего с приколом - мои с любовью внесенные записи оказались помечены на удаление. "WTF?" снова подумал я и сел курить исходники более вдумчиво.

Ларчик открывался достаточно просто

В модуле менеджера справочника ИдентификаторыОбъектовМетаданных есть функция СвойстваКоллекцийОбъектовМетаданных, а в ней вот такие строки:

    // Роли
	Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить();
	Строка.Идентификатор   = Новый УникальныйИдентификатор("115c4f55-9c20-4e86-a6d0-d0167ec053a1");
	Строка.Имя             = "Роли";
	Строка.Синоним         = НСтр("ru = 'Роли'");
	Строка.ИмяВЕдЧисле     = "Роль";
	Строка.СинонимВЕдЧисле = НСтр("ru = 'Роль'");
	Строка.БезДанных       = Истина;
	Строка.БезКлючаОбъектаМетаданных = Истина;
	Строка.ОбъектыРасширений = Истина;
	
	// ПланыОбмена
	Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить();
	Строка.Идентификатор   = Новый УникальныйИдентификатор("269651e0-4b06-4f9d-aaab-a8d2b6bc6077");
	Строка.Имя             = "ПланыОбмена";
	Строка.Синоним         = НСтр("ru = 'Планы обмена'");
	Строка.ИмяВЕдЧисле     = "ПланОбмена";
	Строка.СинонимВЕдЧисле = НСтр("ru = 'План обмена'");
	
	// Справочники
	Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить();
	Строка.Идентификатор   = Новый УникальныйИдентификатор("ede89702-30f5-4a2a-8e81-c3a823b7e161");
	Строка.Имя             = "Справочники";
	Строка.Синоним         = НСтр("ru = 'Справочники'");
	Строка.ИмяВЕдЧисле     = "Справочник";
	Строка.СинонимВЕдЧисле = НСтр("ru = 'Справочник'");
Что наводит на мысль - БСП писалась во времена, когда добавлять свои объекты в расширение было нельзя, и она тупо не в курсе что такое бывает в природе. За это "знание" реквизит Строка.ОбъектыРасширений. Окей, давайте ей объясним! 
    // Справочники
	Строка = СвойстваКоллекцийОбъектовМетаданных.Добавить();
	Строка.Идентификатор   = Новый УникальныйИдентификатор("ede89702-30f5-4a2a-8e81-c3a823b7e161");
	Строка.Имя             = "Справочники";
	Строка.Синоним         = НСтр("ru = 'Справочники'");
	Строка.ИмяВЕдЧисле     = "Справочник";
	Строка.СинонимВЕдЧисле = НСтр("ru = 'Справочник'");
	Строка.ОбъектыРасширений = Истина;

Запускаем, ждем, ошибка пропала, записи в нужных справочниках создались. Почти чудо. Почему почти? Потому что через некоторое время в ходе обновления мы получим вторую ошибку:

Вот тут есть два пути:

  1. Добавить наши объекты в нужные обработчики. Это конечно самый правильный путь, но это снятие с поддержки. А именно снятия с поддержки мы и хотим избежать используя расширения.
  2. Заставить систему игнорировать наши объекты, для этого в модуле ИнтеграцияСТехнологиейСервиса есть процедура ПриОпределенииИсключенийНеразделенныхДанных

Вот теперь красота и умиротворение.

В присоединенном файле находится расширение, оно полностью повторяет то что написано в статье. Просто добавьте его в свою конфигурацию перед обновлением.

Надеюсь мой опыт кому-то пригодится и поможет сэкономить несколько часов жизни. Обсуждения и конструктивная критика приветствуются.

См. также

Работа с интерфейсом Обновление 1С Программист Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Бесплатно (free)

После обновления УНФ до 3.0.10.178 у ряда клиентов исчезла часть функционала: отчёт "Движение товаров", кнопка "Глаз" в Расходной накладной, часть документов складских перемещений. Для решения проблемы надо установить константы, чьё название подпадает под шаблон "Использовать подсистему NNN (Константы)" и соответствует "пропавшему" функционалу по смыслу.

16.01.2025    442    dime2    0    

3

Обновление 1С Программист Платформа 1С v8.3 1С:Управление торговлей 10 Россия Бухгалтерский учет Налоговый учет Управленческий учет ИП, ПБОЮЛ, КФХ НДС УСН Абонемент ($m)

Обновление, доработка для 1С: Управление торговлей 10.3 (УТ 10.3) организаций на упрощенной системе с 2025 года для использования ставок НДС 5 и 7 % в документах и печатных формах документов. Начиная с релиза 10.3.40.

4 стартмани

10.01.2025    1874    41    zhuravlev_as    37    

6

Обновление 1С Программист Платформа 1С v8.3 Бесплатно (free)

В статье рассматривается использование WinMerge для сравнения, объединения и обновления конфигураций 1С. Отдельно рассматривается методика трехстороннего сравнения при обновлении конфигурации

21.10.2024    3346    mixaeel    18    

17

Обновление 1С Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Те кто объединял конфигурации находящиеся на поддержке, обновлял подсистемы БСП прекрасно помнят упражнение «10000 тысяч кликов мышкой» или, непонятное словесное заклинание, после которого конфигурация снимается с поддержки целиком.

1 стартмани

26.09.2024    671    7    milkers    2    

7

Обновление 1С Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 Россия Бесплатно (free)

Вышел новый релиз для УТ11 5.19.63. На копии базы было выполнено обновление и вылезли проблемы с номенклатурой, подлежащей маркировке. В публикации описаны проблемы, обнаруженные в копии базы конкретной организации.

24.09.2024    1298    gull22    2    

9

Обновление 1С Программист Платформа 1С v8.3 Бесплатно (free)

Как исправить медленное сравнение конфигурации с файлом cf, сохраненным из хранилища.

17.09.2024    4698    vatkir    15    

10
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kwazi 667 12.02.18 22:26 Сейчас в теме
какой режим совместимости у конфигурации?
2. t.v.s. 113 12.02.18 22:28 Сейчас в теме
(1)
"Не использовать", если у вас платформа 8.3.11;
"8.3.11", если у вас платформа 8.3.12
3. mitia.mackarevich 91 13.02.18 13:51 Сейчас в теме
Смотрите на версию БСП, раньше такая же проблема с ролями была. Прежде чем что то добавить в типовой на базе БСП, имеет смысл посмотреть какие типы объектов расширения она поддерживает (сама БСП). Для этого есть справочник "Идентификаторы объектов расширения" . Раньше такая проблема была с ролями, в 2.4 проблему решили. Поэтому эта проблема не новость
4. t.v.s. 113 13.02.18 13:58 Сейчас в теме
(3) Вы правы, что нужно смотреть какие возможности поддерживает БСП. Моя статья о том, что делать, когда "нельзя, но очень хочется"
5. Dmitriy_Kolesnikov 13.02.18 19:58 Сейчас в теме
Интересно, а в ИТС вы об этом писали? Разработчики в курсе?
6. t.v.s. 113 13.02.18 20:03 Сейчас в теме
(5)Я полагаю, что разработчики в курсе и с новых версиях БСП это будет исправлено
user676977_slkruto; +1 Ответить
7. user676977_slkruto 13.03.18 15:47 Сейчас в теме
Виктор, спасибо! Тоже столкнулся с такой ошибкой при обновлении. С этим расширением все прошло отлично!
8. zender911 15.03.18 17:41 Сейчас в теме
Заставить систему игнорировать наши объекты, для этого в модуле ИнтеграцияСТехнологиейСервиса есть процедура ПриОпределенииИсключенийНеразделенныхДанных

Так, а что конкретно прописали, можно поподробнее ?
9. t.v.s. 113 16.03.18 07:00 Сейчас в теме
(8)
&После("ПриОпределенииИсключенийНеразделенныхДанных")
Процедура Фикс_ПриОпределенииИсключенийНеразделенныхДанных(Исключения)
	
	//Раскомментировать Возврат, если используется разделение
	//Возврат;
	
	Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
		//Справочники
		Для Каждого ОбъектМетаданных Из Метаданные.Справочники Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Исключения.Добавить(ОбъектМетаданных);					
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		//Регистры сведений
		Для Каждого ОбъектМетаданных Из Метаданные.РегистрыСведений Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Исключения.Добавить(ОбъектМетаданных);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		//Документы
		Для Каждого ОбъектМетаданных Из Метаданные.Документы Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Исключения.Добавить(ОбъектМетаданных);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		//Планы обмена
		Для Каждого ОбъектМетаданных Из Метаданные.ПланыОбмена Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Исключения.Добавить(ОбъектМетаданных);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;

КонецПроцедуры
Показать
svilsa; newborn; msergeev79; +3 Ответить
10. zender911 18.03.18 15:37 Сейчас в теме
Огромное спасибо, все получилось. Только один вопрос, ну это понятно, что не к вам, а к разработчикам. Получается все равно нужно править конфигурацию, а вроде как, этого мы хотели избежать с помощью расширений, ну может исправят в будущем...
11. t.v.s. 113 18.03.18 19:08 Сейчас в теме
(10) Ну теоретически можно и не править, расширением оно тоже работает.
Другое дело, что если вы хотите использовать новые возможности, то нужно режим совместимости у конфигурации менять. Но это меняет только корень, да и в последующем новые релизы будут штатно поддерживать 8.3.11
12. hanio 58 07.06.18 09:29 Сейчас в теме
Дорогой ты просто чудо сделал понимаешь? я думал все кранты моему расширению придется подождать обновления БСП в конфигурации ЗУП 3.1, потом накатить обновления и уже потом цеплять расширение. Но с твоим расширением все идентификаторы появились даже на моей версии БВСП 2.4.2.124. ТАК ДЕРЖАТЬ!!!
Новиков; +1 Ответить
13. hanio 58 07.06.18 10:07 Сейчас в теме
Виктор вы не забудете что там еще перечисления и прочее будет появляться я уже перешел на платформу 8.3.121440 из-за перечислений так что думаю надо свое расширение вам своевременно обновлять.
14. t.v.s. 113 07.06.18 15:01 Сейчас в теме
В ближайшем будущем проверю как дела с перечислениями, если что доделаю расширение. Мы на 8.3.12 перешли совсем недавно, месяца три назад
15. dinn 08.06.18 11:04 Сейчас в теме
Спасибо! Реально с расширениями пока как на минном поле, вроде с поддержки не снимаешь и должно быть меньше времени уходить, но функционал расширения всеравно приходится проверять и адаптировать под обновления конфигурации.
16. Brawler 458 09.06.18 12:19 Сейчас в теме
Я до такого сам дошел, однако не все проблемы это дело решает.

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

В БСП 3.Х ряд проблем 1С уже порешала давно, однако в типовых пока этой БСП не видел.
17. t.v.s. 113 09.06.18 13:10 Сейчас в теме
(16)
В БСП 3.Х ряд проблем 1С уже порешала давно, однако в типовых пока этой БСП не видел.

Есть стойкое ощущение, что мы БСП 3 еще не скоро увидим в типовых

Тогда приходится лезть и ломать эту проверку все так же редактируя типовыую.

Либо опять же перекрывать проверку в расширении.
18. Brawler 458 09.06.18 13:49 Сейчас в теме
(17) пытался, но видимо в ряде ситуаций перекрываемый код не хочет перекрываться при запуске системы, возможно это багофичи такие в платформе
25. SagittariusA 28.06.18 10:09 Сейчас в теме
(17)
Есть стойкое ощущение, что мы БСП 3 еще не скоро увидим в типовых

Поддерживаю )))

(17)
Либо опять же перекрывать проверку в расширении.

Верно, у меня получилось
19. Brawler 458 14.06.18 19:26 Сейчас в теме
Придумали как обходить ошибки связанные со сменой режима совместимости с 8.3.10 на 8.3.12?
Например, если к примеру в ERP под юзером с правами маркетолога и манагера по продажам попытаться открыть справочник номенклатуры то ловится ошибка


{ОбщийМодуль.ПодборТоваровСервер.Модуль(2872)}: Поле объекта не обнаружено (ВидыНоменклатурыСоздать)
Форма.Элементы.ВидыНоменклатурыСоздать.Видимость = Ложь;


Я воспринимаю это как ошибку платформы, так как что-то не нашел в описании к платформе 8.3.12 такого нового поведения.

Суть того что происходит: В форме списка номенклатуры есть панель справа в которой можно осуществлять навигацию по иерархии папок или видов номенклатуры. В навигации по видам номенклатуры используется динамический список по справочнику ВидыНоменклатуры. В этом списке есть контекстное меню с добавленными разработчиками конфигурации вручную командами типа Создать, СоздатьГруппу... Команды самые стандартные, платформенные. В коде же разработчики конфы проверяют есть ли у юзера права на редактирование справочника ВидыНоменклатуры и если их нет, то программно прячут пункты контекстного меню. Но вот на 8.3.12 по видимому платформа стала сама прятать эти пункты меню со стандартными командами, если у юзера нет прав. В итоге имеем массу ошибок. Было дело думаю давай заглушек расширением наставлю, а оно то в одном месте, то в другом глюк, и сразу бросил это дело, так как так можно всю конфу заплатками облепить.
20. t.v.s. 113 14.06.18 19:47 Сейчас в теме
(19) Мы для себя решили не бороться с такими глюками, а просто подождать пока конфа "дорастет" до нужной версии платформы. В критичных местах нивелируем кодом типа.
&НаСервере
Процедура ПриСозданииНаСервереПеред(Отказ, СтандартнаяОбработка)
	
	// Добавление этих элементов необходимо для того, чтобы при выполнении штатного кода модуля "ПодборТоваровСервер"
	// не вываливалось с ошибкой об их отсутствии (функция "УстановитьСтраницуВариантаНавигации()" (2865))
	// при попытке открыть подбор номенклатуры под пользователем, у которого нет прав на изменение видов номенклатуры.
	Если Элементы.Найти("ВидыНоменклатурыСоздать") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("ВидыНоменклатурыСоздать", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("ВидыНоменклатурыСоздатьГруппу") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("ВидыНоменклатурыСоздатьГруппу", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("ВидыНоменклатурыИзменить") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("ВидыНоменклатурыИзменить", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("ВидыНоменклатурыСкопировать") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("ВидыНоменклатурыСкопировать", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("ВидыНоменклатурыУстановитьПометкуУдаления") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("ВидыНоменклатурыУстановитьПометкуУдаления", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("СоздатьВидНоменклатуры") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("СоздатьВидНоменклатуры", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("СоздатьГруппуВидовНоменклатуры") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("СоздатьГруппуВидовНоменклатуры", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("СоздатьГруппуНоменклатуры") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("СоздатьГруппуНоменклатуры", Тип("КнопкаФормы"));
	КонецЕсли;
	
	Если Элементы.Найти("ИерархияНоменклатурыКонтекстноеМенюСоздатьГруппу") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("ИерархияНоменклатурыКонтекстноеМенюСоздатьГруппу", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("ИерархияНоменклатурыКонтекстноеМенюИзменить") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("ИерархияНоменклатурыКонтекстноеМенюИзменить", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("ИерархияНоменклатурыКонтекстноеМенюСкопировать") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("ИерархияНоменклатурыКонтекстноеМенюСкопировать", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("ИерархияНоменклатурыКонтекстноеМенюУстановитьПометкуУдалени­я") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("ИерархияНоменклатурыКонтекстноеМенюУстановитьПометкуУдалени­я", Тип("КнопкаФормы"));
	КонецЕсли;
	
	Если Элементы.Найти("СписокСтандартныйПоискНоменклатураСоздать") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("СписокСтандартныйПоискНоменклатураСоздать", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("СписокСтандартныйПоискНоменклатураСкопировать") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("СписокСтандартныйПоискНоменклатураСкопировать", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("СписокСтандартныйПоискНоменклатураУстановитьПометкуУдаления­") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("СписокСтандартныйПоискНоменклатураУстановитьПометкуУдаления­", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("СписокРасширенныйПоискНоменклатураСоздать") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("СписокРасширенныйПоискНоменклатураСоздать", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("СписокРасширенныйПоискНоменклатураСкопировать") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("СписокРасширенныйПоискНоменклатураСкопировать", Тип("КнопкаФормы"));
	КонецЕсли;
	Если Элементы.Найти("СписокРасширенныйПоискНоменклатураУстановитьПометкуУдаления­") = Неопределено Тогда
		НовЭлемент = ЭтаФорма.Элементы.Добавить("СписокРасширенныйПоискНоменклатураУстановитьПометкуУдаления­", Тип("КнопкаФормы"));
	КонецЕсли;
	
КонецПроцедуры
Показать

Костыль конечно, но городить что-то более основательное нет желания, потом все равно исправят
21. Brawler 458 14.06.18 20:46 Сейчас в теме
(20) ну да, временный компромисс
22. t.v.s. 113 14.06.18 20:52 Сейчас в теме
(21) А чтобы не городить такое в куче мест, можно перехватить процедуру ПриСозданииНаСервере из переопределяемого общего модуля. По крайней мере в УТ, КА и ERP 95% форм в него заходят. Весь код в одном месте будет и удалить потом легко
Grigoripal; +1 Ответить
23. Brawler 458 14.06.18 21:11 Сейчас в теме
(22) Идея понятна.
Если не секрет, какой объем затычек таким образом сделан?
В 1С не писали по этой фиче?
Может это реально косяк такой.
Хотя с другой стороны судя по тому количеству кода, что они пишут сейчас в типовой сами, наверное это их забадало и решили платформу научить делать скрытие кнопок самостоятельно.
24. SagittariusA 28.06.18 10:01 Сейчас в теме
Спасибо Вам! Помогло данное решение.
26. Help Center 28.06.18 10:23 Сейчас в теме
27. wing 28 04.07.18 19:29 Сейчас в теме
А что делать, если все выше написанное не помогает? При обновлении все равно выдается сообщение об ошибке...
1С жалуется на справочник и регистр сведений.

В расширении перекрыт метод &После("ПриОпределенииИсключенийНеразделенныхДанных") модуля ИнтеграцияСТехнологиейСервиса, в менеджере справочника ИдентификаторыОбъектовМетаданных перекрыт &Вместо("СвойстваКоллекцийОбъектовМетаданных").
Чего ей ещё не хватает?
28. t.v.s. 113 04.07.18 21:06 Сейчас в теме
(27) Какая у вас версия платформы и режим совместимости? И скриншот ошибки было бы неплохо
29. wing 28 05.07.18 05:14 Сейчас в теме
(28) Да ошибка та же, что у вас в заголовке темы, только имена объектов другие: справочник и регистр сведений.
Платформа 8.3.11.3034, режим совместимости: не использовать. Конфигурация УП. Модифицированная псевдофранчами (судя по ужастному коду). Пытался обновить до версии 2.4.2.144. Но первый запуск после обновления вызывает "рекурсию": упомянутая выше ошибка с возможностью лишь выйти, перезапустить, или открыть обработку, т.е. обновление не завершается.
30. t.v.s. 113 05.07.18 06:34 Сейчас в теме
(29) А расширение вообще применилось? Снимите у него безопасный режим и защиту от опасных действий
31. wing 28 05.07.18 07:13 Сейчас в теме
(30) Спасибо большое. Поиграть с галками расширения не догадался. Самим расширением то пользуемся уже давно, т.е. оно не могло не примениться. Если б оно было новое, то проще было бы отключить, но данные терять не хочется...
32. wing 28 05.07.18 07:23 Сейчас в теме
Вопрос не совсем по статье, но тоже в тему расширений, вдруг уже были мысли: Как будет правильно настроить обновление данных при изменении версии расширения? Какие модули и функции стоит перекрыть, и как проверить сам факт изменения версии, чтобы вызвать нужные обработчики?

Ситуация на данный момент самая стандартная: производится перенос изменений из основной базы в расширение. Это должно вызвать и перенос данных в объекты расширения. Для каждого этапа ваять отдельную обработку переноса несколько нелогично. Корректнее было бы использовать типовой механизм обновления, но с опорой уже на версию расширения, а не подсистемы.
33. t.v.s. 113 05.07.18 07:28 Сейчас в теме
(32) Таким вопросом не задавался, но думаю стоит посмотреть как это сделано в БСП и перекрыть нужные методы
34. wing 28 06.07.18 09:50 Сейчас в теме
(33) Этот вопрос решил. там всего 2 модуля надо перекрыть и один добавить. Довольно просто.

Но при переносе объектов из конфы в расширение обнаружена серьезная проблема: Есть справочник, в котором есть только Наименование и еще один реквизит - строка без ограничений. Этот справочник невозможно открыть в 1С, - выдается ошибка "Отсутствует отображение для типа '<некий_guid>'". У справочника нет ни одной формы. Не понимаю, чего ему от меня надо...?
Еще хуже обстоит дело с регистром сведений, - выдается ошибка "Отсутствует отображение для типа '<некий_guid>'" и далее две кнопки: Закрыть или Перезапустить. Но у РС я догадываюсь о возможной причине: в одном из измерений используется перечисление, а перечисления в расширения добавлены только в 12 релизе. Будем думать, что это глюк именно 11 релиза...
Но почему простейший справочник нельзя создать в расширении? - это непонятно...
Да. Пробовал менять вид расширения, - не помогает (предположил, что новые объекты будут работать только в режиме "Дополнение").
35. Cyberhawk 135 31.01.19 09:12 Сейчас в теме
Думаю, нужно добавить в статью текст ошибки в виде текста, чтобы вероятность ее нахождения другими по тексту ошибки стала ненулевой
36. uvl 06.02.19 12:23 Сейчас в теме
Я так понимаю, что в УТ 11.1.10 еще не было модуля ИнтеграцияСТехнологиейСервиса есть процедура ПриОпределенииИсключенийНеразделенныхДанных. ? Как быть в этом случае?
37. uvl 06.02.19 12:28 Сейчас в теме
(36)
ПриОпределенииИсключенийНеразделенныхДанных
точно не было, проверил. Есть мысли что за модуль ему предшествовал?
38. uvl 06.02.19 13:37 Сейчас в теме
39. t.v.s. 113 06.02.19 13:39 Сейчас в теме
(37) Попробуйте тогда просто не делать то что с ним связано
40. uvl 06.02.19 14:44 Сейчас в теме
У меня вот какая история, расширения имеют элементы
Документ.bk1_ПримененныеСкидки, РегистрСведений.bk1_ПримененныеСкидки в виде объектов, которые созданы только в расширении. И в этом случае я не могу их например включить в состав ОбластьДанныхОсновныеДанные, так как элементы не видны для конфигурации.:

{ОбщийМодуль.РаботаВМоделиСервиса.Модуль(4014)}: Обнаружены ошибки в структуре метаданных конфигурации:

1. Все объекты метаданных, не входящие в состав разделителей БСП (
ОбластьДанныхОсновныеДанные,
ОбластьДанныхВспомогательныеДанные),

должны быть включены в состав подписок на события
(
КонтрольНеразделенныхНаборовЗаписейПриЗаписи,
КонтрольНеразделенныхНаборовЗаписейПриЗаписиТехнологияСервис­а,
КонтрольНеразделенныхОбъектовПриЗаписи,
КонтрольНеразделенныхОбъектовПриЗаписиТехнологияСервиса,
КонтрольНеразделенныхОбъектовПриЗаписиЭД),

контролирующих
невозможность записи неразделенных данных в разделенных сеансах.
Следующие объекты метаданных не удовлетворяют этому критерию: Документ.bk1_ПримененныеСкидки, РегистрСведений.bk1_ПримененныеСкидки.
ВызватьИсключение РезультирующееИсключение;
41. t.v.s. 113 06.02.19 14:50 Сейчас в теме
(40)Включите в конфигураторе останов по ошибке, возмодно процедура называется по-другому
42. hair 29 06.07.21 16:47 Сейчас в теме
МОжете прокомментировать вот такое сообщение после применения расширения?

1С:Предприятие 8.3 (8.3.18.1208)
Бухгалтерия ПРОФ 3.0.94

Ошибки при выполнении функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных.

Для объекта метаданных "РегистрНакопления.УПЖКХ_ВзаиморасчетыСДолжниками"
не существует идентификатор в регистре сведений "Идентификаторы объектов версий расширений".

Для объекта метаданных "РегистрНакопления.рсд_ОплатыПоИскам"
не существует идентификатор в регистре сведений "Идентификаторы объектов версий расширений".

Для разработчика: возможно требуется обновить вспомогательные данные,
которые влияют на работу программы. Для выполнения обновления можно:
- воспользоваться внешней обработкой
"Инструменты разработчика: Обновление вспомогательных данных",
- либо запустить программу с параметром командной строки 1С:Предприятия 8
"/С ЗапуститьОбновлениеИнформационнойБазы",
- либо увеличить номер версии конфигурации, чтобы при очередном запуске
выполнились процедуры обновления данных информационной базы.
{ОбщаяФорма.ПраваДоступаУпрощенно.Форма(852)}: ГруппаДоступаОбъект.Записать();
{ОбщаяФорма.ПраваДоступаУпрощенно.Форма(458)}: ЗаписатьИзмененияНаСервере(Отказ);
{ОбщаяФорма.ПраваДоступаУпрощенно.Форма(437)}: ЗаписатьИзмененияЗавершение(Null, ОбработкаПродолжения);
{ОбщаяФорма.ПраваДоступаУпрощенно.Форма(327)}: ЗаписатьИзменения();

по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
Ошибки при выполнении функции ОбщегоНазначения.ИдентификаторыОбъектовМетаданных.

Для объекта метаданных "РегистрНакопления.УПЖКХ_ВзаиморасчетыСДолжниками"
не существует идентификатор в регистре сведений "Идентификаторы объектов версий расширений".

Для объекта метаданных "РегистрНакопления.рсд_ОплатыПоИскам"
не существует идентификатор в регистре сведений "Идентификаторы объектов версий расширений".

Для разработчика: возможно требуется обновить вспомогательные данные,
которые влияют на работу программы. Для выполнения обновления можно:
- воспользоваться внешней обработкой
"Инструменты разработчика: Обновление вспомогательных данных",
- либо запустить программу с параметром командной строки 1С:Предприятия 8
"/С ЗапуститьОбновлениеИнформационнойБазы",
- либо увеличить номер версии конфигурации, чтобы при очередном запуске
выполнились процедуры обновления данных информационной базы.
{Справочник.ИдентификаторыОбъектовМетаданных.МодульМенеджера(2946)}: ВызватьИсключение ЗаголовокОшибки + Разделитель + ТекстВсехОшибок;
{Справочник.ИдентификаторыОбъектовМетаданных.МодульМенеджера(2719)}: Идентификаторы = ИдентификаторыОбъектовМетаданныхБезПопыткиПовтора(
{Справочник.ИдентификаторыОбъектовМетаданных.МодульМенеджера(647)}: Идентификаторы = ИдентификаторыОбъектовМетаданныхСПопыткойПовтора(ПолныеИменаБезКэша,
{ОбщийМодуль.ОбщегоНазначения.Модуль(3686)}: Возврат Справочники.ИдентификаторыОбъектовМетаданных.ИдентификаторыОбъектовМетаданных(
{РегистрСведений.ПраваРолей.МодульМенеджера(399)}: ИдентификаторыОбъектов = ОбщегоНазначения.ИдентификаторыОбъектовМетаданных(ПолныеИменаОбъектовМетаданных);
{ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(4619)}: Запрос = РегистрыСведений.ПраваРолей.ЗапросИзменений(Истина);
{ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(4579)}: ОбновитьТаблицыГруппДоступаДляПодключенныхРасширений(ПраваРолейРасширений);
{РегистрСведений.ТаблицыГруппДоступа.МодульМенеджера(262)}: Запрос.УстановитьПараметр("ПраваРолейРасширений", УправлениеДоступомСлужебный.ПраваРолейРасширений());
{Справочник.ГруппыДоступа.МодульОбъекта(152)}: РегистрыСведений.ТаблицыГруппДоступа.ОбновитьДанныеРегистра(Ссылка);
{ОбщаяФорма.ПраваДоступаУпрощенно.Форма(852)}: ГруппаДоступаОбъект.Записать();
43. t.v.s. 113 09.07.21 15:22 Сейчас в теме
(42)Статья и расширение писались более трех лет назад, тогда еще нельзя было иметь в расширении свои регистры накопления. Включите для регистров накопления флаг как описано в статье
44. newborn 12.09.21 11:08 Сейчас в теме
Читаю этот пост, а в голове назойливо звучат слова старой песни "Почему ты мне не встретилась...". )))))
Твою ж мать! Почему я не увидел этот пост в прошлый четверг ?! )))))))
Я три дня воюю с этой проблемой!
Спасибо, добрый человек, за науку...
45. t.v.s. 113 13.09.21 11:19 Сейчас в теме
(44) Только обратите внимание, что сейчас в расширении можно иметь гораздо больше собственных объектов, чем описано в статье, поэтому по аналогии добавляйте нужные объекты
46. newborn 13.09.21 11:58 Сейчас в теме
(45) В том-то и проблема! У меня сейчас такой косяк: БСП 2017 года или даже ранее, а релиз платформы 2020 года. То есть добавлять в расширение я могу очень много, а вот использовать добавленное - с трудом )))
В БСП даже нет многого из того, что описано в статье. То есть я понял в чём проблема, мне эта статья подсказала, где собственно собака-то порылась. Но сама эта статья не даёт готового рецепта исправления. Буду сидеть, фтыкать. ))))
47. newborn 30.09.21 18:10 Сейчас в теме
(45) У меня возникла ещё такая ошибка, как на картинке.
Решилась проблема вот таким кодом в процедуре
Процедура ПриЗаполненииТиповОбщихДанныхНеТребующихСопоставлениеСсылокП­риЗагрузке(Типы) Экспорт
из общего модуля
ВыгрузкаЗагрузкаДанныхПереопределяемый:
Процедура ПриЗаполненииТиповОбщихДанныхНеТребующихСопоставлениеСсылокПриЗагрузке(Типы) Экспорт
	
	Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
		//Справочники
		Для Каждого ОбъектМетаданных Из Метаданные.Справочники Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Типы.Добавить(ОбъектМетаданных);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		//Регистры сведений
		Для Каждого ОбъектМетаданных Из Метаданные.РегистрыСведений Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Типы.Добавить(ОбъектМетаданных);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		//Документы
		Для Каждого ОбъектМетаданных Из Метаданные.Документы Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Типы.Добавить(ОбъектМетаданных);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
КонецПроцедуры
Показать

Но, я так понимаю, в этом случае, если у меня будет настроен обмен в распределённых базах, то справочники, документы и записи регистра из расширения в выгрузку не попадут или попадут как битые ссылки. Просто я не предполагаю, что у меня расширения и РИБ будут работать на одной базе. Тем не менее, я просто выкинул справочники, документы и регистры из проверок как потенциально-выгружаемые в РИБ
Прикрепленные файлы:
Оставьте свое сообщение