1c-edt-issues icon indicating copy to clipboard operation
1c-edt-issues copied to clipboard

Контент-ассист не видит повторно используемый тип в цепочке обращений к полям объекта

Open RedMammoth opened this issue 2 years ago • 0 comments

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

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

Как воспроизвести

модуль 1:

// @strict-types

#Область ПрограммныйИнтерфейс

// Сообщение.
// 
// Параметры:
//  ЦитируемоеСообщение - см. тСообщение
//  Чат - см. тЧат
// 
// Возвращаемое значение:
//  Структура - сообщение:
// * ЦитируемоеСообщение - см. тСообщение
// * Чат - см. тЧат
Функция тСообщение(ЦитируемоеСообщение = Неопределено, Чат = Неопределено) Экспорт
	сообщение = Новый Структура;
	сообщение.Вставить("ЦитируемоеСообщение", ЦитируемоеСообщение);
	сообщение.Вставить("Чат", Чат);
	Возврат сообщение;
КонецФункции

// Чат.
// 
// Параметры:
//  ЗакрепленноеСообщение - см. тСообщение
//  Пользователь - см. Пользователь
// 
// Возвращаемое значение:
//  Структура - чат:
// * ЗакрепленноеСообщение - см. тСообщение
// * Автор - см. Пользователь
Функция тЧат(ЗакрепленноеСообщение = Неопределено, Пользователь = Неопределено) Экспорт
	чат = Новый Структура;
	чат.Вставить("ЗакрепленноеСообщение", ЗакрепленноеСообщение);
	чат.Вставить("Автор", Пользователь);
	Возврат чат;
КонецФункции

// Пользователь.
// 
// Параметры:
//  Имя - Строка - Имя
//  Аватар - см. Аватар
// 
// Возвращаемое значение:
//  Структура - Пользователь:
// * Имя - Строка -
// * Аватар - См. Аватар
Функция Пользователь(Имя = Неопределено, Аватар = Неопределено) Экспорт
	пользователь = Новый Структура;
	пользователь.Вставить("Имя", Имя);
	пользователь.Вставить("Аватар", Аватар)
	Возврат пользователь;
КонецФункции


// Аватар.
// 
// Возвращаемое значение:
//  Структура - Аватар:
// * Размер - Число -
Функция Аватар() Экспорт
	аватар = Новый Структура;
	аватар.Вставить("Размер", 0);
	Возврат аватар;
КонецФункции

#КонецОбласти

модуль 2:

// @strict-types

#Область ПрограммныйИнтерфейс

Процедура Тест() Экспорт
	сообщение = ОбщийМодуль1.тСообщение();
	пЧисло = 0;
	пЧисло = сообщение.Чат.Автор.Аватар.Размер;
	цитата1 = сообщение.Чат.ЗакрепленноеСообщение.ЦитируемоеСообщение;
	цитата2 = сообщение.ЦитируемоеСообщение.ЦитируемоеСообщение;
	чат2 = сообщение.Чат.ЗакрепленноеСообщение.Чат;
КонецПроцедуры

#КонецОбласти

В модуле 2 видно, что пЧисло рассчитывается и контент ассист работает на всей цепочке вызовов (в этой цепочке вызываемые поля имеют разные типы) А вот цитата1, цитата2, чат2 уже не могут быть вычислены ("сообщение", "ЗакрепленноеСообщение" и "ЦитируемоеСообщение" имеют один тип)

Скриншоты

image

Ожидаемое поведение

Контент-ассист подсказывает "пользовательские" типы, ранее использованные в текущей цепочке вызовов

Лог рабочей области

  • в журнале ошибок при вводе или вызове контент ассиста нет.

Версия 1С:EDT

2022.1

Операционная система

Windows, Linux

Установленные плагины

1C:Code style V8, 1C:SSL-support, 1C:Language Tool

Дополнительная информация

На метаданных такой проблемы нет. На прочих типах, кроме структуры, не смотрел

RedMammoth avatar Aug 01 '22 21:08 RedMammoth