![]() |
![]() |
![]() |
|
КД 2.0 - ошибка компиляции или вычисления выражения | ☑ | ||
---|---|---|---|---|
0
Господин ПЖ
29.10.07
✎
13:59
|
Есть скрипт в ПКО "РасходыБудущихПериодов", событие ПослеЗагрузки:
ИмяСчетаБУ = "СчетБУ"; ИмяСубкБУ = "СубконтоБУ"; ИмяСчетаНУ = "СчетНУ"; ИмяСубкНУ = "СубконтоНУ"; Корреспонденция = Объект; мСведенияОСчетах = Новый Соответствие; СведенияОСчете = ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция[ИмяСчетаБУ]); Для СчетчикСубконто = 1 По 3 Цикл Для СчетчикСчета = 1 по СведенияОСчете.КоличествоСубконто Цикл Если (Корреспонденция[ИмяСубкБУ+СчетчикСубконто] = СведенияОСчете["ТипСубконто"+СчетчикСчета].ПривестиЗначение(Корреспонденция[ИмяСубкБУ+СчетчикСубконто])) и (СчетчикСчета <> СчетчикСубконто) Тогда Субконто = Корреспонденция[ИмяСубкБУ+СчетчикСчета]; Корреспонденция[ИмяСубкБУ+СчетчикСчета] = Корреспонденция[ИмяСубкБУ+СчетчикСубконто]; Корреспонденция[ИмяСубкБУ+СчетчикСубконто] = Субконто; КонецЕсли; КонецЦикла; КонецЦикла; Для СчетчикСубконто = 1 По 3 Цикл Если СведенияОСчете.КоличествоСубконто >= СчетчикСубконто Тогда Корреспонденция[ИмяСубкБУ+СчетчикСубконто] = СведенияОСчете["ТипСубконто"+СчетчикСубконто].ПривестиЗначение(Корреспонденция[ИмяСубкБУ+СчетчикСубконто]); Иначе Корреспонденция[ИмяСубкБУ+СчетчикСубконто] = Неопределено; КонецЕсли; КонецЦикла; Корреспонденция[ИмяСчетаНУ] = ПреобразоватьСчетаБУвСчетНУ(Новый Структура("СчетБУ", Корреспонденция[ИмяСчетаБУ])); Корреспонденция[ИмяСубкНУ+1] = Корреспонденция[ИмяСубкБУ+1]; Корреспонденция[ИмяСубкНУ+2] = Корреспонденция[ИмяСубкБУ+2]; Корреспонденция[ИмяСубкНУ+3] = Корреспонденция[ИмяСубкБУ+3]; СведенияОСчете = ПолучитьСведенияОСчете(мСведенияОСчетах, Корреспонденция[ИмяСчетаНУ]); Для СчетчикСубконто = 1 По 3 Цикл Для СчетчикСчета = 1 по СведенияОСчете.КоличествоСубконто Цикл Если (Корреспонденция[ИмяСубкНУ+СчетчикСубконто] = СведенияОСчете["ТипСубконто"+СчетчикСчета].ПривестиЗначение(Корреспонденция[ИмяСубкНУ+СчетчикСубконто])) и (СчетчикСчета <> СчетчикСубконто) Тогда Субконто = Корреспонденция[ИмяСубкНУ+СчетчикСчета]; Корреспонденция[ИмяСубкНУ+СчетчикСчета] = Корреспонденция[ИмяСубкНУ+СчетчикСубконто]; Корреспонденция[ИмяСубкНУ+СчетчикСубконто] = Субконто; КонецЕсли; КонецЦикла; КонецЦикла; Для СчетчикСубконто = 1 По 3 Цикл Если СведенияОСчете.КоличествоСубконто >= СчетчикСубконто Тогда Корреспонденция[ИмяСубкНУ+СчетчикСубконто] = СведенияОСчете["ТипСубконто"+СчетчикСубконто].ПривестиЗначение(Корреспонденция[ИмяСубкНУ+СчетчикСубконто]); Иначе Корреспонденция[ИмяСубкНУ+СчетчикСубконто] = Неопределено; КонецЕсли; КонецЦикла; Добавляю в него выгрузку групп, т.к. раньше её не было. Пишу "вокруг" скрипта условие: Если НЕ Объект.ЭтоГруппа Тогда ..... КонецЕсли; При загрузке - при попытке выполнения ПослеЗагрузки - валится с ошибкой "Ошибка компиляции при вычислении выражения или выполнении фрагмента кода". Если перенести код во внеш. обработку - в отладчике код выполняется без ошибок. В чем тут дело интересно? |
|||
1
Господин ПЖ
29.10.07
✎
15:35
|
up
|
|||
2
GenV
29.10.07
✎
15:59
|
(0) Может какая нибудь функция переопределена в обработке загрузки/выгрузки и количество параметров отличается. Комментариев нет?
|
|||
3
Господин ПЖ
29.10.07
✎
16:07
|
(2) Нету ничего такого. Коментариев нет. Без условия то работает (если выгрузку групп отключить). А с группами нет :((((((((
|
|||
4
Господин ПЖ
29.10.07
✎
16:10
|
(+3) Я уже весь мозг сломал - что не так.
|
|||
5
GenV
29.10.07
✎
16:21
|
(4) Добавить функцию не в модуль внешней обработки, а в конец модуля обработки обмена (или в модуль её формы), и проверь на синтаксис (только параметры нужно указать как в справке к обработчику).
Я обычно через свою обработку генерирую тексты обработчиков вставляю в модуль доп. формы и проверяю - сразу видно строку с ошибкой. |
|||
6
Поручик
29.10.07
✎
16:23
|
Вот только сегодня такую же ошибку получил. Но у меня она была связана с использованием Возврат; в событии ПередВыгрузкой.
Попробуй включить режим отладки и такой код Если НЕ Объект.ЭтоГруппа Тогда ..... Иначе Отказ = Истина; КонецЕсли; хз, может поможет. |
|||
7
Господин ПЖ
29.10.07
✎
16:31
|
(5) Нормально всё с синтаксисом.
|
|||
8
Господин ПЖ
29.10.07
✎
16:32
|
(6) Это другое.
|
|||
9
GenV
29.10.07
✎
16:42
|
(7) Ну, тогда, если не было других изменений у меня единственный вариант - проверять Объект (можно например в попытку засунуть с выводом сообщения) перед получением ЭтоГруппа.
|
|||
10
GenV
29.10.07
✎
16:43
|
9+ или добавить текст обработчика в виде функции в модуль, а в Выполнить передовать вызов этой функции из модуля, тогда можно использовать точку "останавливать при ошибке".
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |