|
Не срабатывает встроенна функция "Выполнить" | ☑ | ||
---|---|---|---|---|
0
Night_Wolf
09.09.11
✎
12:32
|
Есть код:
ДБФ = Новый XBase; ТЗ = Новый ТаблицаЗначений; Попытка ДБФ.ОткрытьФайл(СтрокаТЧ.Путь); Исключение Сообщить("Не удалось открыть файл: "+СтрокаТЧ.Путь); Продолжить; КонецПопытки; // создадим таблицу значений, для чтения в неё строк файла. ТЗ.Колонки.Добавить("ИД_Потр"); ТЗ.Колонки.Добавить("Имя_Потр"); ТЗ.Колонки.Добавить("Удален"); ДБФ.Первая(); Пока НЕ ДБФ.ВКонце() Цикл СтрокаТЗ = ТЗ.Добавить(); СтрокаТЗ.ИД_Потр = ДБФ.idpotr; СтрокаТЗ.Имя_Потр = ДБФ.namepotr; СтрокаТЗ.Удален = ДБФ.udalen; ДБФ.Следующая(); КонецЦикла; // Обработка таблицы ОбщееКоличество = ТЗ.Количество(); к = 1; Для каждого СтрокаТЗ из ТЗ Цикл ОбработкаПрерыванияПользователя(); Состояние("Обработка потребителей. Выполнено: "+Строка(Окр(к/ОбщееКоличество*100))+"%"); ЭлементСправочникаСсылка = Справочники.Контрагенты.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаТЗ.ИД_Потр)); ЭлементСправочникаОбъект = ЭлементСправочникаСсылка.ПолучитьОбъект(); Если ЭлементСправочникаОбъект = Неопределено Тогда ЭлементСправочникаОбъект = Справочники.Контрагенты.СоздатьЭлемент(); ЭлементСправочникаОбъект.УстановитьСсылкуНового(ЭлементСправочникаСсылка); КонецЕсли; ЭлементСправочникаОбъект.Наименование = СтрокаТЗ.Имя_Потр; ЭлементСправочникаОбъект.ПометкаУдаления = СтрокаТЗ.Удален; ЭлементСправочникаОбъект.Записать(); к = к + 1; КонецЦикла; Сообщить("Файл """+СтрокаТЧ.Путь+""" успешно загружен!"); Он прекрасно отлажен и работает. Я никак не могу понять, почему когда яя подаю его в качестве строки в функцию выполнить, пишет "Ошибка компиляции при вычислении выражения или выполнении фрагмента кода". Подскажите пожалуйста. |
|||
1
Fragster
гуру
09.09.11
✎
12:33
|
с кавычками накосячил
|
|||
2
GenV
09.09.11
✎
12:35
|
(0) Через ИнформацияОбОшибке() можно узнать на какой строке ошибка ...
|
|||
3
Night_Wolf
09.09.11
✎
12:35
|
С какими кавычками? Код копирую в процедуру обработки вместо Выполнить(ТекстПроцедуры); - работает прекрасно.
|
|||
4
Живой Ископаемый
09.09.11
✎
12:35
|
то есть на самом деле срабатывает, и даже сообщает об ошибке...
|
|||
5
Night_Wolf
09.09.11
✎
12:37
|
(4) Ну как срабатывает - переходит в исключение.
(2) ИнформацияОбОшибке() - пустая совсем. |
|||
6
azernot
09.09.11
✎
12:37
|
Выполнить(СтрЗаменить(ТекстПроцедуры,"""","""""");
|
|||
7
GenV
09.09.11
✎
12:38
|
(5) Сначала присвой переменной. Затем переменную смотри в отладчике )
|
|||
8
Night_Wolf
09.09.11
✎
12:42
|
(6) - Не совсем понятно для чего это.
(7) - Спасибо, сейчас попробую. |
|||
9
Night_Wolf
09.09.11
✎
12:46
|
(7) - спасибо за подсказку. Я нашел ошибку. "Оператор Продолжить можт быть использован только внутри цикла". Но тогда возникает ещё одна интересная ситуация - я бегу по табличной части и выполняю построчно процедуры, написанные в строках таб. части. То есть получается что функция "Выполнить" не видит цикла по строкам ТЧ? Я хочу, чтобы если процедура не отработала, то переходила к следующей строке.
|
|||
10
Живой Ископаемый
09.09.11
✎
12:47
|
то есть наврал нам что код прекрасно отлажен и работает... понятно
|
|||
11
Живой Ископаемый
09.09.11
✎
12:47
|
2(9) используй "Возврат;"
|
|||
12
GenV
09.09.11
✎
12:48
|
(9) Код в Выполнить должен быть самодостаточный. Или выноси код с Продолжить или делай через флаг и Если Тогда
|
|||
13
Night_Wolf
09.09.11
✎
12:58
|
(10) - не наврал. Если вставить его вместо "Выполнить", то он работает. Просто я не знал, что он должен быть "самодостаточный". Теперь знаю. Спасибо всем!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |