После обновления конфигурации запускаются обработчики обновления. И в обработчике обновления регистра сведений “РасчетНалогаНаИмущество” есть запрос содержащий следующее:

|// Дата сведений - первый ненулевой месяц.
|ВЫБОР
|  КОГДА втРасчетПоСреднегодовой.ДатаСведений = ДАТАВРЕМЯ(1, 1, 1)
|	ТОГДА ВЫБОР
|   КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0101 <> 0
|	 ТОГДА втРасчетПоСреднегодовой.ГодРасчета
|	 ИНАЧЕ ВЫБОР
|    КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0102 <> 0
|	  ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 1)
|	  ИНАЧЕ ВЫБОР
|     КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0103 <> 0
|	   ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 2)
|	   ИНАЧЕ ВЫБОР
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0104 <> 0
|	    ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 3)
|	    ИНАЧЕ ВЫБОР
|       КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0105 <> 0
|	      ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 4)
|	      ИНАЧЕ ВЫБОР
|        КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0106 <> 0
|	      ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 5)
|	      ИНАЧЕ ВЫБОР
|         КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0107 <> 0
|	       ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 6)
|	       ИНАЧЕ ВЫБОР
|          КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0108 <> 0
|	        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 7)
|	        ИНАЧЕ ВЫБОР
|           КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0109 <> 0
|	         ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 8)
|	         ИНАЧЕ ВЫБОР
|            КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0110 <> 0
|	          ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 9)
|	          ИНАЧЕ ВЫБОР
|             КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0111 <> 0
|	          ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 10)
|	          ИНАЧЕ ВЫБОР
|              КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0112 <> 0
|	           ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 11)
|	           ИНАЧЕ ВЫБОР
|               КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа3112 <> 0
|	           ТОГДА КОНЕЦПЕРИОДА(втРасчетПоСреднегодовой.ГодРасчета, ГОД)
|               КОНЕЦ
|              КОНЕЦ
|             КОНЕЦ
|            КОНЕЦ
|           КОНЕЦ
|          КОНЕЦ
|         КОНЕЦ
|        КОНЕЦ
|       КОНЕЦ
|      КОНЕЦ
|     КОНЕЦ
|    КОНЕЦ
|   КОНЕЦ
|   ИНАЧЕ втРасчетПоСреднегодовой.ДатаСведений
|КОНЕЦ КАК ДатаСведений,

Это бред, обработчик валится с ошибкой:

Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Выражения Case могут быть вложенными только до уровня 10.

MS SQL такие конструкции не поддерживает в режиме распараллеливания работы по нескольким ядрам.

Следующая установка не помогла справится с ошибкой на боевом сервере:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'max degree of parallelism', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO

Почему сделали вложенные условия??? Уровень разработчиков в самой 1с уже дошел до такого дна, что они не знают, что можно просто писать:

ВЫБОР КОГДА Условие ТОГДА х
КОГДА Условие ТОГДА х
КОГДА Условие ТОГДА х
ИНАЧЕ х
КОНЕЦ

Следовательно меняем запрос на такой:

|// Дата сведений - первый ненулевой месяц.
|ВЫБОР
|  КОГДА втРасчетПоСреднегодовой.ДатаСведений = ДАТАВРЕМЯ(1, 1, 1)
|    ТОГДА ВЫБОР
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0101 <> 0
|        ТОГДА втРасчетПоСреднегодовой.ГодРасчета
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0102 <> 0
|        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 1)
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0103 <> 0
|        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 2)
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0104 <> 0
|        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 3)
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0105 <> 0
|        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 4)
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0106 <> 0
|        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 5)
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0107 <> 0
|        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 6)
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0108 <> 0
|        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 7)
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0109 <> 0
|        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 8)
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0110 <> 0
|        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 9)
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0111 <> 0
|        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 10)
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа0112 <> 0
|        ТОГДА ДОБАВИТЬКДАТЕ(втРасчетПоСреднегодовой.ГодРасчета, МЕСЯЦ, 11)
|      КОГДА втРасчетПоСреднегодовой.ОстаточнаяСтоимостьНа3112 <> 0
|        ТОГДА КОНЕЦПЕРИОДА(втРасчетПоСреднегодовой.ГодРасчета, ГОД)
|      КОНЕЦ
|  ИНАЧЕ втРасчетПоСреднегодовой.ДатаСведений
|  КОНЕЦ КАК ДатаСведений,

Если раньше ошибки выявлялись в процессе эксплуатации ПО, то сейчас уже даже обновится нормально нельзя.

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

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