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

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

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

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

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

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

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

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

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментариев 6

  1. bob:

    Секреты Полишинеля… Обычно код хранится в системе контроля версий, а в ней есть история изменений.

    • ты не понял фишку. Обновят на новую версию, не заметят, что запрос поменялся — и код будет работать не ожидаемым образом. Подумай внимательно еще раз.

  2. naf2000:

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

    • Потому что конфа уже средне измененная.
      И все равно при обновлениях будут сравнивать код модулей.
      Ну и плюс с расширениями больше мороки, а бюджет ограничен.

  3. naf2000:

    Так и запишем. Очередной недофранч сломал конфигурацию чтобы подсадить клиента под себя. Я всё больше понимаю почему такие ненавидят расширения

    • Не могу тебе сказать. Конфигурацию «сломали» до меня. Я там делаю другие вещи, а именно оптимизацию скорости выгрузки на кассу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *