Рарус ошибка: поле объекта не обнаружено (свойства) |
Я |
22.12.09 — 15:37
Конф: рарус альфа
ошибка:
{ОбщийМодуль.дкДокументы(8782)}: Поле объекта не обнаружено (Свойства)
ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Свойства.Доступность=Истина;
куда рыть?
не проводит документ?
видел в архиве похожую тему но на неё так и не дали ответа.
1 — 22.12.09 — 15:40
а что говорит отладчик?
2 — 22.12.09 — 15:42
// установим доступность кнопок «Свойства», «Дерево документов» и «Картинки и файлы» на панели действий формы
ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Свойства.Доступность=Истина;
переносит вот на эту строчку
3 — 22.12.09 — 15:42
Функция дкФормаПослеЗаписи(ЭтаФорма) Экспорт
4 — 22.12.09 — 15:45
Посмотри возможно нет кнопки «Свойства» … или она както подругому стала называться
5 — 22.12.09 — 15:47
вопрос?
а где она должна быть?
если на форме то её там и действительно нет!
6 — 22.12.09 — 15:48
может просто:
ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Доступность=Истина;
???????
7 — 22.12.09 — 15:48
Оу…Альфа….с ее закрытыми глючными модулями….
8 — 22.12.09 — 15:48
Засунь в попытку исключение….
9 — 22.12.09 — 15:48
Вам виднее, я не видел конфигурацию. Проанализируейте работу документа, возможно кнопка создается программно.
10 — 22.12.09 — 15:50
(8) зачем городить непонятные попытки? Необходимо программно попытаться найти кнопку, и если кнопка найдена уже есть устанавливать доступноть.
11 — 22.12.09 — 15:50
Попытка
ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Свойства.Доступность=Истина;
Исключение
КонецПопытки;
ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.ДеревоДокумента.Доступность=Истина;
Попытка ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.КартинкиИФайлы.Доступность=Истина; Исключение КонецПопытки;
12 — 22.12.09 — 15:51
так?
13 — 22.12.09 — 15:52
а как её найти программно?
просто я в 1с 8 только не давно.
14 — 22.12.09 — 15:53
Если ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Найти(«Свойства») <> Неопределено Тогда
ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Свойства.Доступность = Истина
КонецЕсли
15 — 22.12.09 — 15:54
Ошибка при вычислении условия для точки останова в строке 8783: Ошибка в выражении: ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Свойства.Доступность=ложь;
16 — 22.12.09 — 15:56
сделал как вы написали: Если ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Найти(«Свойства») <> Неопределено Тогда
ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Свойства.Доступность = Истина
КонецЕсли
теперь {ОбщийМодуль.дкДокументы(8786)}: Поле объекта не обнаружено (ДеревоДокумента)
ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.ДеревоДокумента.Доступность=Истина;
17 — 22.12.09 — 15:58
ни чего удивительного, видимо как то криво обновили или нет настроек каких то.
1. поставьте проверку на все кнопки, при обращении к которым, вылетают ошибки.
2. уточните у поставщика, в чем может быть причина ошибок.
18 — 22.12.09 — 16:06
а может можно обойтись без этой процедуры?
или просто создать в форме кнопки «свойства» и «дерево дакумента»
???
19 — 22.12.09 — 16:08
может ли это как то повлиять на работоспособность системы?
кроме прав конечно.
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:
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();
Ответ 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, консольное приложение.
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, консольное приложение.
1С, включить точку останова по условию, по ошибке (отладка)
Включить точку останова по ошибке
- Зайти в конфигуратор;
- В верхнем меню открыть»Отладка» -> «Остановка по ошибке»;
- Отметить галочку «Останавливаться по ошибке» -> «Ок»;
- Запустить отладке «f5», программа будет останавливаться на строчке кода, где возникла ошибка;
Включить, точку останова по условию, пример
Допустим имеется документ с табличной частью, в табличной части присутствует колонка «Комментарий». Необходимо остановить программу при обходе табличной части, в момент когда «Комментарий» равен значению «Тест».
&НаКлиенте Процедура ОбойтиСтрокиТЧ(Команда) Для каждого Стр Из Объект.ТЧ Цикл Сообщить(Стр.Комментарий); // на этой строке ставим точку останова КонецЦикла; КонецПроцедуры
Листинг 1 — Программный код перебора строк табличной части
Порядок действий:
- Устанавливаем курсор на строку «Сообщить (Стр.Комментарий)», листинг 1;
- В конфигураторе, в верхнем меню выбираем «Отладка» -> «Точка останова с условием»;
- В условии прописываем Стр. Комментарий = «Тест»;
Обратите внимание, что для текстовых значений важен регистр.
- Запустить отладку (f5), в момент прохождения данного участка кода, если условие будет выполняться, исполнение программного кода остановится.
Связанные статьи
Отладчик
Отладчик является встроенным в конфигуратор инструментом. Он помогает отлаживать программные модули, создаваемые в процессе разработки прикладного решения. Отладчик позволяет отслеживать последовательность выполнения операторов встроенного языка и просматривать значения переменных.
Основные возможности отладки
- отладка приложений, исполняемых на удаленных компьютерах, доступных по протоколу TCP/IP или HTTP,
- отладка кода, исполняемого рабочим процессом кластера серверов 1С:Предприятия 8; при этом поддерживается сквозной стек вызовов для клиента и сервера, и сквозная пошаговая отладка клиента и сервера;
- отладка кода, исполняемого в таких видах соединений как внешнее соединение, фоновое задание и WS-соединение?
- отладка мобильных приложений.
Точки останова
Отладчик позволяет установить на конкретную строку модуля специальный маркер — точку останова, — при достижении которой исполнение программного модуля останавливается и управление передается отладчику. Точки останова могут быть безусловными или с условием. При достижении безусловной точки останова исполнение программного модуля останавливается в любом случае:
При достижении точки останова с условием, выполнение программного модуля останавливается только в том случае, если заданное условие истинно:
Отладчик поддерживает возможность отключения точек останова. При этом строка модуля остается отмечена маркером, однако на ход исполнения модуля он никакого влияния не оказывает:
При большом количестве точек останова удобно использовать отдельное окно для работы с точками останова, позволяющее просматривать и редактировать их в едином списке:
Пошаговое выполнение
После того, как при достижении точки останова управление прикладным решением передано отладчику, существует возможность дальнейшего исполнения модуля в нескольких режимах: пошаговое выполнения, исполнение вызова функции или процедуры, прерывание пошагового исполнения функции или процедуры, выполнения модуля до той строки, на которой стоит курсор или продолжение свободного выполнения модуля:
Просмотр выражений
Во время пошагового выполнения существует возможность просматривать значения переменных, содержащихся в модуле, и рассчитывать произвольные значения. Для этого используется специальное окно, отображающее результат расчета:
Для объектов встроенного языка значения их свойств представляются в виде древовидной структуры. Для значений, являющихся строками, массивами и коллекциями значений также возможен просмотр в отдельном окне:
Текущее значение переменной также можно просмотреть, подведя указатель мыши к этой переменной. Текущее значение будет показано в виде короткой подсказки рядом с переменной.
Табло и локальные переменные
Результаты вычислений, которые требуется просматривать на протяжении выполнения некоторой части модуля, можно вывести в отдельное окно — табло, — в котором есть возможность распределить все просматриваемые выражения по четырем страницам:
Для удобного просмотра и изменения локальных переменных, что представляется наиболее частой задачей, существует команда Локальные переменные. Она открывает табло, которое уже автоматически заполнено всеми локальными переменными.
Изменение значений переменных
Значения примитивных типов можно изменить прямо в ячейке Значение.
В этом окне полностью функционирует контекстная подсказка.
Стек вызовов
Отладчик позволяет использовать стек вызовов, который показывает последовательность вызовов процедур и функций, приведшую к строке модуля, которая отлаживается в данный момент:
Двойным щелчком мыши на имени процедуры в стеке вызова можно перейти в соответствующую строку процедуры.
Остановка по ошибке
В платформе предусмотрена возможность использовать режим Остановка по ошибке. В этом режиме отладка может быть остановлена либо при каждой возникающей ошибке, либо при ошибке, в тексте которой присутствует подстрока, указанная разработчиком. Подстроки интересующих ошибок указываются в настройках отладки.
Во время отладки при такой настройке отладка будет останавливаться только при возникновении ошибок, связанных с делением на ноль.