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

12.02.18

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

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

Скачать файлы

Наименование Файл Версия Размер
Обновление конфигураций на БСП, у которых в расширениях есть собственные объекты с данными:
.cfe 7,95Kb
96
.cfe 7,95Kb 96 Скачать

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

Платформа версии 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, ЗУП 2.5, БУХ 2.0: НДС, ЕФС-1, Расчет страховых взносов, Мобилизация, Статистика, Электронные трудовые книжки, 2-НДФЛ, Регламентированная отчетность, Кадровый учет, Прослеживаемость импортных товаров

Зарплата Регламентированный учет и отчетность Кадровый учет Обновление 1С Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Зарплата и Управление Персоналом 2.5 Бухгалтерский учет Налоговый учет Управленческий учет Акцизы ЕНВД ЕСН Земельный налог ИП, ПБОЮЛ, КФХ Налог на имущество Налог на прибыль НДС НДФЛ ФОМС, ЕФС Транспортный налог УСН ПСН (патентная система налогообложения) Платные (руб)

Обновления для конфигураций: КА 1.1; ЗУП 2.5; БУХ 2.0; КА 1.1 Комплексная автоматизация торговли алкогольной продукцией; КА 1.1 Комплексный учет сельскохозяйственного предприятия

19900 руб.

01.04.2020    140622    678    352    

232

Автоматическое подтверждение легальности обновления базы или как обновить 100 типовых баз 1С за 5 часов

DevOps и автоматизация разработки Обновление 1С Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Расширение для конфигураций 1С для автоматического подтверждения легальности обновления и выполнения обработчиков обновления при пакетном автоматическом обновлении большого числа баз 1С. А также сам модуль обработки по автоматическому обновлению баз.

2 стартмани

08.05.2019    24214    54    VPanin56    26    

26

Ссылочная константа содержит недопустимый ссылочный номер таблицы

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

На связи Сергей Скирдин, технический директор ИТ-интегратора «Белый код». Сегодня расскажу, как решить одну из проблем, с которой можно столкнуться при обновлении конфигурации 1С.

19.03.2024    840    sergey.skirdin    3    

13

Скрипт для обновления базы с расширением из хранилища

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

Небольшая оптимизация рабочего времени через скрипт обновления базы 1С с расширением из хранилища конфигураций.

22.01.2024    1117    ke.92@mail.ru    2    

24

Многопоточное обновление 1С: Управление холдингом

Обновление 1С 8.3.14 1С:Управление холдингом Абонемент ($m)

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

1 стартмани

10.01.2024    3180    saver77    18    

24

Не обновляется типовая конфигурация 1С через конфигуратор

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

Столкнулся с проблемой. Нужно было поднять до текущего релиза Розницу 2.3. Обновлял по старинке, через конфигуратор (база клиент-серверная). Указывал логин и пароль, ждал скачивания обновления и обновлял. Но после накатывания 5 релизов следующий устанавливаться не хотел, а точнее конфигуратор гордо говорил, что обновлений больше нет. Решение нашел здесь на форуме и хочу зафиксировать. Чтобы самому не забыть и передать опыт начинающим.

29.11.2023    1353    shestopalovpro    4    

7

Принудительный запуск дополнительных процедур обработки данных после обновления

Обновление 1С Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Ручной запуск процедур обработки обработчиков после обновлений. Может быть полезно стажерам, консультантам, разработчикам, администраторам, всем, кто обновляет информационные базы.

1 стартмани

20.11.2023    603    6    IvanTerentev    0    

2
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kwazi 615 12.02.18 22:26 Сейчас в теме
какой режим совместимости у конфигурации?
2. t.v.s. 111 12.02.18 22:28 Сейчас в теме
(1)
"Не использовать", если у вас платформа 8.3.11;
"8.3.11", если у вас платформа 8.3.12
3. mitia.mackarevich 72 13.02.18 13:51 Сейчас в теме
Смотрите на версию БСП, раньше такая же проблема с ролями была. Прежде чем что то добавить в типовой на базе БСП, имеет смысл посмотреть какие типы объектов расширения она поддерживает (сама БСП). Для этого есть справочник "Идентификаторы объектов расширения" . Раньше такая проблема была с ролями, в 2.4 проблему решили. Поэтому эта проблема не новость
4. t.v.s. 111 13.02.18 13:58 Сейчас в теме
(3) Вы правы, что нужно смотреть какие возможности поддерживает БСП. Моя статья о том, что делать, когда "нельзя, но очень хочется"
5. Dmitriy_Kolesnikov 13.02.18 19:58 Сейчас в теме
Интересно, а в ИТС вы об этом писали? Разработчики в курсе?
6. t.v.s. 111 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. 111 16.03.18 07:00 Сейчас в теме
(8)
&После("ПриОпределенииИсключенийНеразделенныхДанных")
Процедура Фикс_ПриОпределенииИсключенийНеразделенныхДанных(Исключения)
	
	//Раскомментировать Возврат, если используется разделение
	//Возврат;
	
	Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
		//Справочники
		Для Каждого ОбъектМетаданных Из Метаданные.Справочники Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Исключения.Добавить(ОбъектМетаданных);					
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		//Регистры сведений
		Для Каждого ОбъектМетаданных Из Метаданные.РегистрыСведений Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Исключения.Добавить(ОбъектМетаданных);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		//Документы
		Для Каждого ОбъектМетаданных Из Метаданные.Документы Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Исключения.Добавить(ОбъектМетаданных);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		//Планы обмена
		Для Каждого ОбъектМетаданных Из Метаданные.ПланыОбмена Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Исключения.Добавить(ОбъектМетаданных);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;

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

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

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

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

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

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

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

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

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


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


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

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

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

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

Ситуация на данный момент самая стандартная: производится перенос изменений из основной базы в расширение. Это должно вызвать и перенос данных в объекты расширения. Для каждого этапа ваять отдельную обработку переноса несколько нелогично. Корректнее было бы использовать типовой механизм обновления, но с опорой уже на версию расширения, а не подсистемы.
33. t.v.s. 111 05.07.18 07:28 Сейчас в теме
(32) Таким вопросом не задавался, но думаю стоит посмотреть как это сделано в БСП и перекрыть нужные методы
34. wing 27 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. 111 06.02.19 13:39 Сейчас в теме
(37) Попробуйте тогда просто не делать то что с ним связано
40. uvl 06.02.19 14:44 Сейчас в теме
У меня вот какая история, расширения имеют элементы
Документ.bk1_ПримененныеСкидки, РегистрСведений.bk1_ПримененныеСкидки в виде объектов, которые созданы только в расширении. И в этом случае я не могу их например включить в состав ОбластьДанныхОсновныеДанные, так как элементы не видны для конфигурации.:

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

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

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

контролирующих
невозможность записи неразделенных данных в разделенных сеансах.
Следующие объекты метаданных не удовлетворяют этому критерию: Документ.bk1_ПримененныеСкидки, РегистрСведений.bk1_ПримененныеСкидки.
ВызватьИсключение РезультирующееИсключение;
41. t.v.s. 111 06.02.19 14:50 Сейчас в теме
(40)Включите в конфигураторе останов по ошибке, возмодно процедура называется по-другому
42. hair 28 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. 111 09.07.21 15:22 Сейчас в теме
(42)Статья и расширение писались более трех лет назад, тогда еще нельзя было иметь в расширении свои регистры накопления. Включите для регистров накопления флаг как описано в статье
44. newborn 12.09.21 11:08 Сейчас в теме
Читаю этот пост, а в голове назойливо звучат слова старой песни "Почему ты мне не встретилась...". )))))
Твою ж мать! Почему я не увидел этот пост в прошлый четверг ?! )))))))
Я три дня воюю с этой проблемой!
Спасибо, добрый человек, за науку...
45. t.v.s. 111 13.09.21 11:19 Сейчас в теме
(44) Только обратите внимание, что сейчас в расширении можно иметь гораздо больше собственных объектов, чем описано в статье, поэтому по аналогии добавляйте нужные объекты
46. newborn 13.09.21 11:58 Сейчас в теме
(45) В том-то и проблема! У меня сейчас такой косяк: БСП 2017 года или даже ранее, а релиз платформы 2020 года. То есть добавлять в расширение я могу очень много, а вот использовать добавленное - с трудом )))
В БСП даже нет многого из того, что описано в статье. То есть я понял в чём проблема, мне эта статья подсказала, где собственно собака-то порылась. Но сама эта статья не даёт готового рецепта исправления. Буду сидеть, фтыкать. ))))
47. newborn 30.09.21 18:10 Сейчас в теме
(45) У меня возникла ещё такая ошибка, как на картинке.
Решилась проблема вот таким кодом в процедуре
Процедура ПриЗаполненииТиповОбщихДанныхНеТребующихСопоставлениеСсылокП­риЗагрузке(Типы) Экспорт
из общего модуля
ВыгрузкаЗагрузкаДанныхПереопределяемый:
Процедура ПриЗаполненииТиповОбщихДанныхНеТребующихСопоставлениеСсылокПриЗагрузке(Типы) Экспорт
	
	Если Метаданные.ЕстьИзмененияРасширениямиКонфигурации() Тогда
		//Справочники
		Для Каждого ОбъектМетаданных Из Метаданные.Справочники Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Типы.Добавить(ОбъектМетаданных);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		//Регистры сведений
		Для Каждого ОбъектМетаданных Из Метаданные.РегистрыСведений Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Типы.Добавить(ОбъектМетаданных);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
		//Документы
		Для Каждого ОбъектМетаданных Из Метаданные.Документы Цикл
			Расш = ОбъектМетаданных.РасширениеКонфигурации();
			Если Расш <> Неопределено Тогда
				Если ОбъектМетаданных.ПринадлежностьОбъекта = Метаданные.СвойстваОбъектов.ПринадлежностьОбъекта.Собственный Тогда
					Типы.Добавить(ОбъектМетаданных);
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
КонецПроцедуры
Показать

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