1С 8.3 Аналог функций &Вместо &ИзменениеИКонтроль
Данные > Примеры кода 1С > 1С 8.3 Расширения
Перейти в раздел примеры кода 1С 8.3:
Никаких конструкций #Вставить, #КонецВставить, #Удалить и #КонецУдалить, упомянутых на 1c.ru, разумеется, не существует. Вместо них платформа понимает: #Вставка, #КонецВставки, #Удаление и #КонецУдаления. Это настолько очевидно, что даже щепетильная 1С считает избыточным грузить посетителей своего сайта такими детальными подробностями. Если вы начнете использовать &ИзменениеИКонтроль, то придется вручную проверять возможность применения расширений. Командой "Проверка возможности применения" в конфигураторе. Без этого вы можете не узнать, что код оригинальной процедуры изменился (например, после обновления), и программа невозмутимо игнорирует непонятный теперь аналог в расширении, не отвлекая пользователей от работы занудными предупреждениями. Вы будете думать, что расширение работает, а оно молча передаст свои обязанности типовым процедурам и функциям. Авторство: infostart.ru/1c/articles/1454444/
В общем модуле можно определить функцию, выполняющуюся &НаСервере:
Функция СравнениеСВерсиейКонфигурации(МестоВызова, ВерсияМодуля, ВызыватьИсключение=Истина) Экспорт
ВерсияКонфигурации = Метаданные.Версия;
Если ВерсияМодуля <> ВерсияКонфигурации Тогда
Если ВызыватьИсключение Тогда
ВызватьИсключение "Версия конфигурации (" + ВерсияКонфигурации + ") отличается от версии модуля (" + ВерсияМодуля + ").
|" + МестоВызова;
КонецЕсли;
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
ВерсияКонфигурации = Метаданные.Версия;
Если ВерсияМодуля <> ВерсияКонфигурации Тогда
Если ВызыватьИсключение Тогда
ВызватьИсключение "Версия конфигурации (" + ВерсияКонфигурации + ") отличается от версии модуля (" + ВерсияМодуля + ").
|" + МестоВызова;
КонецЕсли;
Возврат Ложь;
КонецЕсли;
Возврат Истина;
КонецФункции
А в расширениях первой строчкой в заменяющих процедурах и функциях использовать конструкцию типа:
ОбщийМодульСПроверкой.СравнениеСВерсиейКонфигурации("Текст, помогающий найти проблему", "циферки.версии.с.точками");
Пример:
&Вместо(ЗаменяемаяПроцедура)
Процедура Расш_ЗаменяемаяПроцедура()
// Такие сигнализирующие ловушки можно расставить в критически важных местах расширения.
// И вписывать в них актуальный номер релиза вторым параметром каждый раз после обновления.
// Если где-то забыть это сделать, программа выдаст ошибку, когда попытается выполнить данные инструкции.
// Задав по-человечески МестоВызова, легко найдете проблемное место. Короче, после обновления игнорировать
// проверку замененных в расширении функций станет заметно труднее. В худшем случае о забытой процедуре вы узнаете от пользователя,
// но сразу! А это лучше, чем узнать об ошибке из отчетов за полугодие.
ОбщийМодульСПроверкой.СравнениеСВерсиейКонфигурации("Справоник.Номенклатура.МодульМенеджера.ЗаменяемаяПроцедура", "3.1.14.500");
Процедура Расш_ЗаменяемаяПроцедура()
// Такие сигнализирующие ловушки можно расставить в критически важных местах расширения.
// И вписывать в них актуальный номер релиза вторым параметром каждый раз после обновления.
// Если где-то забыть это сделать, программа выдаст ошибку, когда попытается выполнить данные инструкции.
// Задав по-человечески МестоВызова, легко найдете проблемное место. Короче, после обновления игнорировать
// проверку замененных в расширении функций станет заметно труднее. В худшем случае о забытой процедуре вы узнаете от пользователя,
// но сразу! А это лучше, чем узнать об ошибке из отчетов за полугодие.
ОбщийМодульСПроверкой.СравнениеСВерсиейКонфигурации("Справоник.Номенклатура.МодульМенеджера.ЗаменяемаяПроцедура", "3.1.14.500");
КонецПроцедуры
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник