Ошибка при вычислении условия для точки останова в строке

Рарус ошибка: поле объекта не обнаружено (свойства)

Я
   tarakan

22.12.09 — 15:37

Конф: рарус альфа

ошибка:

{ОбщийМодуль.дкДокументы(8782)}: Поле объекта не обнаружено (Свойства)

   ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Свойства.Доступность=Истина;

куда рыть?

не проводит документ?

видел в архиве похожую тему но на неё так и не дали ответа.

   AndOne

1 — 22.12.09 — 15:40

а что говорит отладчик?

   tarakan

2 — 22.12.09 — 15:42

// установим доступность кнопок «Свойства», «Дерево документов» и «Картинки и файлы» на панели действий формы

   ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Свойства.Доступность=Истина;

переносит вот на эту строчку

   tarakan

3 — 22.12.09 — 15:42

Функция дкФормаПослеЗаписи(ЭтаФорма) Экспорт

   AndOne

4 — 22.12.09 — 15:45

Посмотри возможно нет кнопки «Свойства» … или она както подругому стала называться

   tarakan

5 — 22.12.09 — 15:47

вопрос?

а где она должна быть?

если на форме то её там и действительно нет!

   tarakan

6 — 22.12.09 — 15:48

может просто:

ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Доступность=Истина;

???????

   Demasiado

7 — 22.12.09 — 15:48

Оу…Альфа….с ее закрытыми глючными модулями….

   Demasiado

8 — 22.12.09 — 15:48

Засунь в попытку исключение….

   AndOne

9 — 22.12.09 — 15:48

Вам виднее, я не видел конфигурацию. Проанализируейте работу документа, возможно кнопка создается программно.

   AndOne

10 — 22.12.09 — 15:50

(8) зачем городить непонятные попытки? Необходимо программно попытаться найти кнопку, и если кнопка найдена уже есть устанавливать доступноть.

   tarakan

11 — 22.12.09 — 15:50

Попытка

   ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Свойства.Доступность=Истина;

   Исключение

   КонецПопытки;

   ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.ДеревоДокумента.Доступность=Истина;

   Попытка ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.КартинкиИФайлы.Доступность=Истина; Исключение КонецПопытки;

   tarakan

12 — 22.12.09 — 15:51

так?

   tarakan

13 — 22.12.09 — 15:52

а как её найти программно?

просто я в 1с 8 только не давно.

   AndOne

14 — 22.12.09 — 15:53

Если ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Найти(«Свойства») <> Неопределено Тогда

ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Свойства.Доступность = Истина

КонецЕсли

   tarakan

15 — 22.12.09 — 15:54

Ошибка при вычислении условия для точки останова в строке 8783: Ошибка в выражении: ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Свойства.Доступность=ложь;

   tarakan

16 — 22.12.09 — 15:56

сделал как вы написали: Если ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Найти(«Свойства») <> Неопределено Тогда

ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Свойства.Доступность = Истина

КонецЕсли

теперь {ОбщийМодуль.дкДокументы(8786)}: Поле объекта не обнаружено (ДеревоДокумента)

   ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.ДеревоДокумента.Доступность=Истина;

   AndOne

17 — 22.12.09 — 15:58

ни чего удивительного, видимо как то криво обновили или нет настроек каких то.

1. поставьте проверку на все кнопки, при обращении к которым, вылетают ошибки.

2. уточните у поставщика, в чем может быть причина ошибок.

   tarakan

18 — 22.12.09 — 16:06

а может можно обойтись без этой процедуры?

или просто создать в форме кнопки «свойства» и «дерево дакумента»

???

   tarakan

19 — 22.12.09 — 16:08

может ли это как то повлиять на работоспособность системы?

кроме прав конечно.

   hhhh

20 — 22.12.09 — 16:15

(19) ну кнопки будут недоступны. Тебе остается уговорить пользователей, чтобы они не пользовались этими кнопками, а просчитывали документ на калькуляторе.

  

AndOne

21 — 22.12.09 — 16:22

(19) уточните у поставщика, в чем может быть причина ошибок. Скорее всего причина проблемы станет понятна, что позволит адекватно отреагировать.

Related questions:

  • Unable to debug managed code using visual studio 2013 («Cannot evaluate expression» error — am using debug build) (Note that VS 2012 works)
  • VS2013 Debugger + Entity Framework: «runtime has refused to evaluate the expression», crashes

I am facing a problem with conditional breakpoints in Visual Studio 2013 Professional. The breakpoint condition is referring to a local variable (tagString), which is declared and initialized in the line of code immediately preceding the breakpoint. Upon encountering the breakpoint, the debugger claims that…

The condition for a breakpoint failed to execute. The condition was tagString.Contains("…"). The error returned was ‘tagString is not declared. It may be inaccessible due to its protection level.’

This error message does not appear to make any sense, because the variable is declared and accessible:

Screenshot demonstrating the issue

I am running a Debug build of this code. Why does the debugger claim that the local variable is not defined, and how can I resolve this issue?


P.S.: I’ve just realised that the conditional breakpoint not working is only a small part of a larger problem: The debugger also cannot Watch that variable, nor will it be displayed in the Locals window.

P.P.S: I’ve tried the recommendations given in Rick Strahl’s blog post, «Visual Studio 2013 ‘Could not evaluate Expression’ Debugger Abnormality», to no avail.

Это функция:

public void Init(System.Type Type) {
    this.Type = Type;
    BuildFieldAttributes();
    BuildDataColumns(FieldAttributes);
}

Я установил точку останова в первой строке (this.Type = Type), и я хочу сломать, когда Type.FullName == "Malt.Organisation", чтобы я ввел как условие.

Однако при ударе строки отображается следующая ошибка:

Условие для точки останова не удалось выполнить. Условием было ‘Type.FullName == «Malt.Organisation» ‘. Ошибка была возвращена ‘Проверка состояния объекта в debuggee типа System.Type в этом контексте не поддерживается. ‘

Что (очевидная) вещь я делаю неправильно?

PS. Обходным путем является добавление этого кода:

if (Type.FullName == "Malt.Organisation") System.Diagnostics.Debugger.Break();

4b9b3361

Ответ 1

В моем случае я использовал Visual Studio 2013, NUnit 2.6.4 и прикреплял отладчик к сеансу unit test, и я получал подобное сообщение:

Условие для точки останова не удалось выполнить. Условие было «type.Name.Contains(» FooBar «)». Обнаружена ошибка: «Проверка состояния объекта в debuggee типа System.Type не поддерживается в этом контексте». Нажмите «ОК», чтобы остановиться на этой точке останова.

Это было вызвано отсутствующей функцией нового механизма отладки, который Microsoft представила, по-видимому. Следуя инструкциям этот msdn blogpost У меня все получилось. Инструкции сводятся к следующему:

  • В меню « Сервис» откройте « Параметры»
  • С левой стороны выберите « Отладка«, « Общие»
  • Прокрутите весь путь вниз, чтобы проверить « Использовать режим совместимой совместимости»

Это должно перейти к устаревшему движку отладки, который в моем случае допускал выражения в Type в условиях точки останова. Обратите внимание, что вам необходимо перезапустить приложение или сеанс отладки, очевидно.

Отказ от ответственности: я понятия не имею, какие другие эффекты проверяли этот вариант. Лично я отключил его, когда закончил задачу, требующую его…

Ответ 2

Вы говорите, что Type.FullName == "Malt.Organisation" заставляет его сломаться, попробовали ли вы this.Type.FullName == "Malt.Organisation"?

Другая возможность, считает ли отладчик, что вы пытаетесь вызвать статический метод, имея переменную с именем Type, например, ее имя класса? Переименовывает ли переменная Type в другое исправление?

Ответ 3

Я столкнулся с этим, но при тестировании IsInterface в веб-приложении. Вместо того, чтобы добавлять дополнительные функции в отладчик, я просто обманывал.

bool blnIsInterface = tType.IsInterface;

//Insert breakpoint here...
if(blnIsInterface)
{
    ...
}

Итак, в вашем случае вы можете сделать что-то вроде

public void Init(System.Type Type) {
    bool blnBreak = Type.FullName == "Malt.Organisation";
    //insert breakpoint of blnBreak == true
    this.Type = Type;
    BuildFieldAttributes();
    BuildDataColumns(FieldAttributes);
}

Это немного громоздко, но, по крайней мере, вам не придется беспокоиться о производительности и разрешать отладку собственного кода, похоже, не является вариантом в веб-приложениях.

Ответ 4

Я не уверен в том, что решение «Использовать управляемый режим совместимости» описано здесь — мне не помогло, но в моем случае Project > Properties > Debug > Enable Native code debugging — не нужно отмечать.

Почему — нет подсказки в настоящее время.

Использовал .net 4.5, vs2015, консольное приложение.

Skip to content

1С, включить точку останова по условию, по ошибке (отладка)

Включить точку останова по условию / ошибке

Включить точку останова по ошибке

  • Зайти в конфигуратор;
  • В верхнем меню открыть»Отладка» -> «Остановка по ошибке»;

Ответ 1

В моем случае я использовал Visual Studio 2013, NUnit 2.6.4 и прикреплял отладчик к сеансу unit test, и я получал подобное сообщение:

Условие для точки останова не удалось выполнить. Условие было «type.Name.Contains(» FooBar «)». Обнаружена ошибка: «Проверка состояния объекта в debuggee типа System.Type не поддерживается в этом контексте». Нажмите «ОК», чтобы остановиться на этой точке останова.

Это было вызвано отсутствующей функцией нового механизма отладки, который Microsoft представила, по-видимому. Следуя инструкциям этот msdn blogpost У меня все получилось. Инструкции сводятся к следующему:

  • В меню « Сервис» откройте « Параметры»
  • С левой стороны выберите « Отладка«, « Общие»
  • Прокрутите весь путь вниз, чтобы проверить « Использовать режим совместимой совместимости»

Это должно перейти к устаревшему движку отладки, который в моем случае допускал выражения в Type в условиях точки останова. Обратите внимание, что вам необходимо перезапустить приложение или сеанс отладки, очевидно.

Отказ от ответственности: я понятия не имею, какие другие эффекты проверяли этот вариант. Лично я отключил его, когда закончил задачу, требующую его…

Ответ 2

Вы говорите, что Type.FullName == "Malt.Organisation" заставляет его сломаться, попробовали ли вы this.Type.FullName == "Malt.Organisation"?

Другая возможность, считает ли отладчик, что вы пытаетесь вызвать статический метод, имея переменную с именем Type, например, ее имя класса? Переименовывает ли переменная Type в другое исправление?

Ответ 3

Я столкнулся с этим, но при тестировании IsInterface в веб-приложении. Вместо того, чтобы добавлять дополнительные функции в отладчик, я просто обманывал.

bool blnIsInterface = tType.IsInterface;

//Insert breakpoint here...
if(blnIsInterface)
{
    ...
}

Итак, в вашем случае вы можете сделать что-то вроде

public void Init(System.Type Type) {
    bool blnBreak = Type.FullName == "Malt.Organisation";
    //insert breakpoint of blnBreak == true
    this.Type = Type;
    BuildFieldAttributes();
    BuildDataColumns(FieldAttributes);
}

Это немного громоздко, но, по крайней мере, вам не придется беспокоиться о производительности и разрешать отладку собственного кода, похоже, не является вариантом в веб-приложениях.

Ответ 4

Я не уверен в том, что решение «Использовать управляемый режим совместимости» описано здесь — мне не помогло, но в моем случае Project > Properties > Debug > Enable Native code debugging — не нужно отмечать.

Почему — нет подсказки в настоящее время.

Использовал .net 4.5, vs2015, консольное приложение.

Skip to content

1С, включить точку останова по условию, по ошибке (отладка)

Включить точку останова по условию / ошибке

Включить точку останова по ошибке

  • Зайти в конфигуратор;
  • В верхнем меню открыть»Отладка» -> «Остановка по ошибке»;

  • Отметить галочку «Останавливаться по ошибке» -> «Ок»;

  • Запустить отладке «f5», программа будет останавливаться на строчке кода, где возникла ошибка;

Включить, точку останова по условию, пример

Допустим имеется документ с табличной частью, в табличной части присутствует колонка «Комментарий». Необходимо остановить программу при обходе табличной части, в момент когда «Комментарий» равен значению «Тест».

&НаКлиенте
Процедура ОбойтиСтрокиТЧ(Команда)
	Для каждого Стр Из Объект.ТЧ Цикл
		Сообщить(Стр.Комментарий); // на этой строке ставим точку останова
	КонецЦикла; 
КонецПроцедуры

Листинг 1 — Программный код перебора строк табличной части

Порядок действий:

  • Устанавливаем курсор на строку «Сообщить (Стр.Комментарий)», листинг 1;
  • В конфигураторе, в верхнем меню выбираем «Отладка» -> «Точка останова с условием»;

  • В условии прописываем Стр. Комментарий = «Тест»;

Обратите внимание, что для текстовых значений важен регистр.

  • Запустить отладку (f5), в момент прохождения данного участка кода, если условие будет выполняться, исполнение программного кода остановится.

Связанные статьи

Отладчик

Отладчик является встроенным в конфигуратор инструментом. Он помогает отлаживать программные модули, создаваемые в процессе разработки прикладного решения. Отладчик позволяет отслеживать последовательность выполнения операторов встроенного языка и просматривать значения переменных.

Основные возможности отладки

  • отладка приложений, исполняемых на удаленных компьютерах, доступных по протоколу TCP/IP или HTTP, 
  • отладка кода, исполняемого рабочим процессом кластера серверов 1С:Предприятия 8; при этом поддерживается сквозной стек вызовов для клиента и сервера, и сквозная пошаговая отладка клиента и сервера;
  • отладка кода, исполняемого в таких видах соединений как внешнее соединение, фоновое задание и WS-соединение?
  • отладка мобильных приложений.

Точки останова

Отладчик позволяет установить на конкретную строку модуля специальный маркер — точку останова, — при достижении которой исполнение программного модуля останавливается и управление передается отладчику. Точки останова могут быть безусловными или с условием. При достижении безусловной точки останова исполнение программного модуля останавливается в любом случае:


Отладчик

При достижении точки останова с условием, выполнение программного модуля останавливается только в том случае, если заданное условие истинно:


Отладчик

Отладчик поддерживает возможность отключения точек останова. При этом строка модуля остается отмечена маркером, однако на ход исполнения модуля он никакого влияния не оказывает:


Отладчик

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


Отладчик

Пошаговое выполнение

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


Отладчик

Просмотр выражений

Во время пошагового выполнения существует возможность просматривать значения переменных, содержащихся в модуле, и рассчитывать произвольные значения. Для этого используется специальное окно, отображающее результат расчета:


Отладчик

Для объектов встроенного языка значения их свойств представляются в виде древовидной структуры. Для значений, являющихся строками, массивами и коллекциями значений также возможен просмотр в отдельном окне:


Отладчик

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

Табло и локальные переменные

Результаты вычислений, которые требуется просматривать на протяжении выполнения некоторой части модуля, можно вывести в отдельное окно — табло, — в котором есть возможность распределить все просматриваемые выражения по четырем страницам:


Отладчик

Для удобного просмотра и изменения локальных переменных, что представляется наиболее частой задачей, существует команда Локальные переменные. Она открывает табло, которое уже автоматически заполнено всеми локальными переменными.

Изменение значений переменных

Значения примитивных типов можно изменить прямо в ячейке Значение.


Отладчик

В этом окне полностью функционирует контекстная подсказка.


Отладчик

Стек вызовов

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


Отладчик

Двойным щелчком мыши на имени процедуры в стеке вызова можно перейти в соответствующую строку процедуры.

Остановка по ошибке

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


Отладчик

Во время отладки при такой настройке отладка будет останавливаться только при возникновении ошибок, связанных с делением на ноль.

Понравилась статья? Поделить с друзьями:
  • Ошибка при выполнении фонового задания длительныеоперации выполнитьсконтекстомклиента
  • Ошибка при вычислении 7 букв
  • Ошибка при выполнении файловой операции формат файла не поддерживается
  • Ошибка при выставлении предмета на продажу стим
  • Ошибка при выполнении файловой операции устройство не готово