Речь пойдет о небольшой оптимизации хранимых процедур 1с
с шаблоном _1sp_%_MAX%ID
Рассмотрим процедуру
Create procedure _1sp__1SJOURN_MaxID(@id CHAR(9) OUTPUT) AS
set nocount on select @id=MAX(IDDOC) from _1SJOURN(NOLOCK) if @id is null select @id=' '
В этой процедуре в таблице _1SJOURN находим максимальный IDDOC.
Если таблица пустая возвращаем строку из 9 пробелов.
Первый вариант оптимизации заключался в применении функции ISNULL
Create procedure _1sp__1SJOURN_MaxID(@id CHAR(9) OUTPUT) AS
set nocount on select @id=ISNULL(MAX(IDDOC), ' ') from _1SJOURN(NOLOCK)
Проанализировал код и понял (случайно додумался) что в базе всегда есть документы т.е
условие if @id is null select @id=' ' НИКОГДА не выполняется
и решил сделать так если в таблице есть строки то убираем if @id is null select @id=' '
Причем этот анализ делается не как сейчас всегда во время выполнения 1с программ а иногда из-вне xp
после смены конфигурации ( после восстановления стандартных xp )
Пишем процедуру которая смотрит все xp по шаблону _1sp_%_MAX%ID
и если в соответстующей талице есть строки то текст
if @id is null select @id=' '
заменяем на
--IF @ID IS NULL select @id=' '
т.е. наша процедура превращается в
Create procedure _1sp__1SJOURN_MaxID(@id CHAR(9) OUTPUT) AS
set nocount on select @id=MAX(IDDOC) from _1SJOURN(NOLOCK) --IF @ID IS NULL select @id=' '
В качестве упражнения Вы легко можете написать процедуру делающее обратное преобразование