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