В заботе о тех, кто придет после нас
Как-то я менял код типовой конфигурации и вносил изменения в текст запроса. Просто заменял один участок кода запроса на другой.
Но призадумался — а что, если в будущем 1С изменит код запроса и замена не найдет этот участок. Тогда запрос останется не обработанным, программа это пропустит и пользователи не узнают, что 1С не работает должным образом.
Поэтому я написал специальную функцию, которая выдает ошибку, если заменяемый участок не найден:
Процедура ЗаменитьТекстЗапроса(ТекстЗапроса, Искать, Заменить, ИмяМодуля) Экспорт
Если Найти(ТекстЗапроса, Искать) = 0 Тогда
ВызватьИсключение «Не найден текст для замены: «»» + Искать + «»» в тексте запроса в модуле: » + ИмяМодуля + Символы.ПС + «Конфигурация изменилась. Требуются доработки»;
КонецЕсли;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, Искать, Заменить);
КонецПроцедуры
И замена теперь выглядит вот так:
ИскМаркер = «ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки»;
оса_ПравилаРасчетаЦенСервер.ЗаменитьТекстЗапроса(
Запрос.Текст,
ИскМаркер,
«ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаВыгрузки КАК ТаблицаВыгрузки
| ПО
| КодыТоваровПодключаемогоОборудованияOffline.Номенклатура = ТаблицаВыгрузки.Номенклатура
| И КодыТоваровПодключаемогоОборудованияOffline.Характеристика = ТаблицаВыгрузки.Характеристика
|» + ИскМаркер,
«ПодключаемоеОборудованиеOfflineВызовСервера»);
Вот теперь я спокоен за будущее этой доработки!
