В заботе о тех, кто придет после нас

Как-то я менял код типовой конфигурации и вносил изменения в текст запроса. Просто заменял один участок кода запроса на другой.

Но призадумался — а что, если в будущем 1С изменит код запроса и замена не найдет этот участок. Тогда запрос останется не обработанным, программа это пропустит и пользователи не узнают, что 1С не работает должным образом.

Поэтому я написал специальную функцию, которая выдает ошибку, если заменяемый участок не найден:

Процедура ЗаменитьТекстЗапроса(ТекстЗапроса, Искать, Заменить, ИмяМодуля) Экспорт
    Если
Найти(ТекстЗапроса, Искать) = 0 Тогда
        ВызватьИсключение
«Не найден текст для замены: «»» + Искать + «»» в тексте запроса в модуле: » ИмяМодуля + Символы.ПС + «Конфигурация изменилась. Требуются доработки»;
    КонецЕсли;
   
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, Искать, Заменить);
КонецПроцедуры

И замена теперь выглядит вот так:

ИскМаркер = «ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки»;
оса_ПравилаРасчетаЦенСервер.ЗаменитьТекстЗапроса(
Запрос.Текст,
ИскМаркер,
«ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаВыгрузки КАК ТаблицаВыгрузки
|    ПО
|        КодыТоваровПодключаемогоОборудованияOffline.Номенклатура = ТаблицаВыгрузки.Номенклатура
|        И КодыТоваровПодключаемогоОборудованияOffline.Характеристика = ТаблицаВыгрузки.Характеристика
+ ИскМаркер,
«ПодключаемоеОборудованиеOfflineВызовСервера»);

Вот теперь я спокоен за будущее этой доработки!