Skip to content

[FP] bsl-language-server:QueryToMissingMetadata #3639

@Pavlo1c

Description

@Pavlo1c

Диагностика

Image

Версия

1.16.1

Описание ложного срабатывания диагностики

Вот снова поймал про метаданные, которые есть, но говорит нету - то о чем я писал в ТГ.
Замечу что вторую процедуру я добавил только что, а первая уже с полгода работает и исходя из скрина сам регистр сведений есть, но она ругается, что я обращаюсь к не существующем метаданным, конструктор само собой тоже отлично открывается.

Пример кода

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

// Функция - Значение дополнительного реквизита(ов) контрагента
//
// Параметры:
//  Контрагент	 - СправочникСсылка.Контрагенты	 - Контрагент по которому ищем значение (обязательный)
//  ИмяРеквизита - Строка - Название реквизита, значение которого нужно получить
// 
// Возвращаемое значение:
//   - ЛюбаяСсылка, Булево, Строка, Дата, Число
//
Функция ЗначениеДополнительногоРеквизита(Контрагент, ИмяРеквизита) Экспорт
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	ВИ_ДополнительныеРеквизитыКлиентов.Значение КАК Значение
		|ИЗ
		|	РегистрСведений.ВИ_ДополнительныеРеквизитыКлиентов КАК ВИ_ДополнительныеРеквизитыКлиентов
		|ГДЕ
		|	ВИ_ДополнительныеРеквизитыКлиентов.Клиент = &Контрагент
		|	И ВИ_ДополнительныеРеквизитыКлиентов.ИмяРеквизита = &ИмяРеквизита";
	
	Запрос.УстановитьПараметр("Контрагент", Контрагент);
	Запрос.УстановитьПараметр("ИмяРеквизита", ИмяРеквизита);
	
	РезультатЗапроса = Запрос.Выполнить();
	Если РезультатЗапроса.Пустой() Тогда
		Возврат "";
	КонецЕсли;
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	ВыборкаДетальныеЗаписи.Следующий();
	
	Возврат ВыборкаДетальныеЗаписи.Значение;
КонецФункции

// Функция - Клиент по дополнительному реквизиту (обратный поиск функции ЗначениеДополнительногоРеквизита())
//
// Параметры:
//  ИмяРеквизита - Строка	 - Имя реквизита по которому ищем Клиента (обязательный)
//  Значение	 - ЛюбаяСсылка, Булево, Строка, Дата, Число	 - Значение для нахождения конкретного Клиента
// 
// Возвращаемое значение:
//   - СправочникСсылка.Контрагенты
//
Функция КлиентПоДополнительномуРеквизиту(ИмяРеквизита, Значение) Экспорт
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	ВИ_ДополнительныеРеквизитыКлиентов.Клиент КАК Клиент
		|ИЗ
		|	РегистрСведений.ВИ_ДополнительныеРеквизитыКлиентов КАК ВИ_ДополнительныеРеквизитыКлиентов
		|ГДЕ
		|	ВИ_ДополнительныеРеквизитыКлиентов.ИмяРеквизита = &ИмяРеквизита
		|	И ВИ_ДополнительныеРеквизитыКлиентов.Значение = &Значение";
	
	Запрос.УстановитьПараметр("ИмяРеквизита", ИмяРеквизита);
	Запрос.УстановитьПараметр("Значение", Значение);
	
	РезультатЗапроса = Запрос.Выполнить();
	Если РезультатЗапроса.Пустой() Тогда
		Возврат "";
	КонецЕсли;
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	ВыборкаДетальныеЗаписи.Следующий();
	
	Возврат ВыборкаДетальныеЗаписи.Значение;
КонецФункции

#КонецЕсли

Скриншоты

Прикреплен скришотом

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

И такое довольно часто всплывает, а понять почему не можем, чтобы объяснить рядовым разрабам.

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    type/FPFalse positive

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions