Имя: Пароль:
1C
 
Как отлаживать современные типовые на управляемых формах.
,
0 YaFedor
 
30.01.25
08:57
При выполнении обновления ошибка:

Ошибка при установке значения атрибута контекста (ТипЗначения)
{ОбщийМодуль.ОбновлениеСПредыдущейРедакции.Модуль(1042)}:ОбъектПВХ.ТипЗначения = Новый ОписаниеТипов(МассивТипов);
{ОбщийМодуль.ОбновлениеСПредыдущейРедакции.Модуль(214)}:ПереносДопСвойствПриОбновленииС20();
{(1)}:ОбновлениеСПредыдущейРедакции.ПереносКИиДопСвойствПриОбновленииС20()
{ОбщийМодуль.ОбщегоНазначения.Модуль(6007)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(9763)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(Обработчик.Процедура, ПараметрыОбработчика);
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(1551)}:ВыполнитьОбработчикОбновления(Обработчик, ПараметрыОбработчика, ДополнительныеПараметры);
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(2808)}:ИтерацияОбновления.ВыполненныеОбработчики = ВыполнитьИтерациюОбновления(ИтерацияОбновления, Параметры); // @skip-check query-in-loop - выполнение монопольных и оперативных обработчиков.
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(111)}:ВыполнитьДействияПриОбновленииИнформационнойБазы(ПараметрыОбновления, ДополнительныеПараметры);
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(3187)}:Результат = ВыполнитьОбновлениеИнформационнойБазы(ПараметрыОбновления);
{(1)}:ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОбновлениеИнформационнойБазыВФоне(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(6007)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1831)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1792)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры, ПараметрыВыполнения);

[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Тип не является подмножеством типа значений плана видов характеристик
[ОшибкаИспользованияВстроенногоЯзыка]

Вопрос: где же именно ошибка, в какой строке?

Я предположил, что здесь: {ОбщийМодуль.ОбновлениеСПредыдущейРедакции.Модуль(1042)}:ОбъектПВХ.ТипЗначения = Новый ОписаниеТипов(МассивТипов);

Поставил точку останова - не останавливается, ошибка появляется.
1 arsik
 
гуру
30.01.25
08:59
Отладка криво настроена.
Попробуй войти в 1С с ключем
/C РежимОтладки
2 Smit1C
 
30.01.25
09:11
Подключиться к фоновым заданиям и галку поставить Остановка на ошибках
3 DrZombi
 
гуру
30.01.25
09:33
(0) Запустить отладку, на сервере 1С :)
4 ptiz
 
30.01.25
09:45
(0) База нетиповая (доработанная)? Кто-то ковырял планы видов характеристик?
5 YaFedor
 
30.01.25
09:53
Да, база была доработанная - привожу к типовой.
Расширением отключил обработку доп. свойств, пока идет дальше.

Если что, это тестовая база.

Но все равно остается непонимание текста ошибки. вот помню раньше, в обычных формах в ошибке была одна конкретная строка модуля, где эта ошибка возникает, а тут ...
6 PLUT
 
30.01.25
10:13
(5) которая из букв непонятная?

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

а чтобы точки останова работали в пофигураторе - нужно (1) и (3)и галочки в настройках автоподключения Отладки - клеентские и внешние вызовы + фоновые задания

а уж если совсем неясно-непонятно чё происходит - можно замер производительности включить и выключить... там очень много букв будет, но станет яснее и понятнее - какие процедуры/функции пофигурации вызывались...
7 d4rkmesa
 
30.01.25
10:13
(5) Там куча фоновых заданий, можно поставить точку останова и подцепиться к ним. Правда, иногда это отвратительно работает.
Еще можно сделать копию с обновляемой базой и сделать простую обработку с вызовом ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОтложенноеОбновлениеСейчас()
НЯП, так как раз все начнет медленно, но верно обновляться в один поток без фоновых заданий и можно будет поставить точку останова без геморроя. Правда, ждать придется дольше обычного.
8 ptiz
 
30.01.25
10:15
(5) Что непонятного в строке?
{ОбщийМодуль.ОбщегоНазначения.Модуль(6007)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";

Команда Выполнить(...) выполняет код.

Состав ПВХ надо привести в соответствие с типовым.
9 arsik
 
гуру
30.01.25
11:33
(1)+
Всегда так делаю.
/C РежимОтладки

Это запускает все фоновые в "не фоновом" режиме и они становятся доступны для отладки без подключения к фоновым заданиям.
Фоновых заданий может генерироваться уйма и отладка в них очень кривовасто работает если идти по шагам.
10 DrZombi
 
гуру
30.01.25
11:06
(5) привыкните :)
11 DrZombi
 
гуру
30.01.25
11:08
(8) Странно... в строке 6007, как раз ошибок нет :)

А вот ошибка в 1042. А дальше надо разматывать в отладчике, причину такой ошибки :)

{ОбщийМодуль.ОбновлениеСПредыдущейРедакции.Модуль(1042)}:ОбъектПВХ.ТипЗначения = Новый ОписаниеТипов(МассивТипов);
12 Gucci76
 
30.01.25
11:51
(9) А что означает "/С"  ???
Я без него запускаю.
Правда при таком запуске в ЗУП бывают проблемы когда хочешь посмотреть средний в отпуске.
13 Fedor-1971
 
30.01.25
12:06
(12) вот это поле и передаётся в /C
по факту, строка запуска может выглядеть примерно так:
"C:\Program Files\1cv8\common\1cestart.exe" /C РежимОтладки
14 Gucci76
 
30.01.25
12:11
Это для ярлыка запуска (или дополнительные парам запуска)?
Типа ключ?
Из конфигуратора это не требуется? Работает ведь.
15 Гипервизор
 
30.01.25
12:11
(12) Это в командной строке.
16 PLUT
 
30.01.25
12:13
(14) в окне запуска 1С в свойствах ИБ это доп.параметр

если один доп.параметр, то в это поле можно просто написать без /С

РежимОтладки
17 Lite777888
 
naïve
30.01.25
15:09
(0) {ОбщийМодуль.ОбновлениеСПредыдущейРедакции.Модуль(1042)}:ОбъектПВХ.ТипЗначения = Новый ОписаниеТипов(МассивТипов); Отладка , галка фоновые задания ,+ точка останова
18 craxx
 
30.01.25
16:27
(0) тебе же там русским языком написано, что тип в массиве типов не является типом, который в характеристике ПВХ. Галочка в ПВХ на этом типе не стоит.
19 Garykom
 
гуру
30.01.25
19:48
(17) имхо я бы заменил кусок кода
ОбъектПВХ.ТипЗначения = Новый ОписаниеТипов(МассивТипов);

расширением на
МассивТиповНакопительный = Новый Массив;
Для Каждого ТекТип Из МассивТипов Цикл
  МассивТиповНакопительный.Добавить(ТекТип);
  Попытка
    ОбъектПВХ.ТипЗначения = Новый ОписаниеТипов(МассивТиповНакопительный);
  Исключение
    Сообщить("Ошибка с типом: "+ТекТип);
  КонецПопытки;
КонецЦикла;
20 Garykom
 
гуру
30.01.25
19:45
(19)+ вместо Сообщить можно сделать запись в ЖР
21 Сергиус
 
31.01.25
00:27
(0)Ошибка в самой верхней строке, дальше просто стек вызовов процедур перед этим. Если отладка не подключается в серверном или клиентском режиме, проверьте чтобы стояла галочка на автоматическое подключение фоновых заданий в настройках отладчика.
22 X Leshiy
 
31.01.25
00:43
(20) О да, сам использую этот лайфхак во всякой херне, которую хрен отладкой поймаешь)
23 bolder
 
31.01.25
09:39
(22) Это вообще единственный способ вытащить что-либо из фонового задания. Сообщать-то там некому.
24 arsik
 
гуру
31.01.25
08:18
(23) А вот и нет.
ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(КлючЗадания);
МассивСообщений = ФоновоеЗадание.ПолучитьСообщенияПользователю();
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.