А как обойти в запросе реквизит который отсутвует в данной конфигурации

1. 77Viktor77 8 06.09.21 17:55 Сейчас в теме
Есть промежуточная конфигурация в запросе в есть обращение к реквизиту, который отсутствует в конфигурации, к которому запрос обращается. Подскажите, пожалуйста можно ли в запросе обойти этот реквизит. Если бы это была Табличная част можно было через Есть NULL а как сделать с реквизитом?

// ВТНоменклатураСХарактеристиками.Владелец.ИспользоватьСерийныеНомера - отсуствующий реквизит
// ВТНоменклатураСХарактеристиками.Владелец.УдалитьИспользоватьСерийныеНомера - Это присуствует!!!
Как сделать что бы оба присутствовали. Простую замену можно, но хочется сделать универсально. Спасибо!

СоединениеСТаблицейУпаковокТекст = " ПО (ВЫБОР
		|				КОГДА ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок =     ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры)
		|						ИЛИ ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ПустаяСсылка)
		|					ТОГДА ВЫБОР
		|							КОГДА ВТНоменклатураСХарактеристиками.Владелец.ИспользоватьСерийныеНомера
		|								ТОГДА ЛОЖЬ
		|							ИНАЧЕ ВТНоменклатураСХарактеристиками.Владелец = ВТУпаковкиНоменклатуры.Владелец
		|						КОНЕЦ
		|				ИНАЧЕ ВЫБОР
		|						КОГДА ВТНоменклатураСХарактеристиками.Владелец.ИспользоватьСерийныеНомера
		|							ТОГДА ЛОЖЬ
		|						ИНАЧЕ ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ВТУпаковкиНоменклатуры.Владелец
		|					КОНЕЦ
		|			КОНЕЦ
		|ИЛИ (ВТНоменклатураСХарактеристиками.Владелец = ВТУпаковкиНоменклатуры.Владелец
		|			И ВТНоменклатураСХарактеристиками.Владелец.ЕдиницаИзмерения = ВТУпаковкиНоменклатуры.Ссылка)
		|)";
Показать
Найденные решения
9. 77Viktor77 8 07.09.21 16:16 Сейчас в теме
(8)Ясно спасибо и вот что получилось!

Если глМетаданные.Справочники.Номенклатура.Реквизиты.Найти("УдалитьИспользоватьСерийныеНомера") <> Неопределено Тогда
			СоединениеСТаблицейУпаковокТекст = " ПО (ВЫБОР
			|				КОГДА ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры)
			|						ИЛИ ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ПустаяСсылка)
			|				ТОГДА ВЫБОР
			|						КОГДА ВТНоменклатураСХарактеристиками.Владелец.УдалитьИспользоватьСерийныеНомера
			|						ТОГДА ЛОЖЬ
			|						КОНЕЦ
			|				КОНЕЦ
			|ИЛИ (ВТНоменклатураСХарактеристиками.Владелец = ВТУпаковкиНоменклатуры.Владелец
			|			И ВТНоменклатураСХарактеристиками.Владелец.ЕдиницаИзмерения = ВТУпаковкиНоменклатуры.Ссылка)
			|)";
		Иначе 	СоединениеСТаблицейУпаковокТекст = " ПО (ВЫБОР
			|				КОГДА ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры)
			|						ИЛИ ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ПустаяСсылка)
			|					ТОГДА ВЫБОР
			|							КОГДА ВТНоменклатураСХарактеристиками.Владелец.ИспользоватьСерийныеНомера
			|								ТОГДА ЛОЖЬ
			|							ИНАЧЕ ВТНоменклатураСХарактеристиками.Владелец = ВТУпаковкиНоменклатуры.Владелец
			|						КОНЕЦ
			|				ИНАЧЕ ВЫБОР
			|						КОГДА ВТНоменклатураСХарактеристиками.Владелец.ИспользоватьСерийныеНомера
			|							ТОГДА ЛОЖЬ
			|						ИНАЧЕ ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ВТУпаковкиНоменклатуры.Владелец
			|					КОНЕЦ
			|			КОНЕЦ
			|ИЛИ (ВТНоменклатураСХарактеристиками.Владелец = ВТУпаковкиНоменклатуры.Владелец
			|			И ВТНоменклатураСХарактеристиками.Владелец.ЕдиницаИзмерения = ВТУпаковкиНоменклатуры.Ссылка)
			|)";
		КонецЕсли;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Xershi 1505 06.09.21 19:28 Сейчас в теме
(1) это не универсально а кастомизация под конфу/релиз.
Я делал как в (2).
При написании запроса вы должны знать метаданные, поэтому узнав это кодом построили запрос заменой или програмно.
2. coollerinc 192 06.09.21 18:04 Сейчас в теме
Универсально нужно собирать текст запроса по метаданным
4. d.batovskiy 07.09.21 09:47 Сейчас в теме
(2)Согласен, нужно собирать текст запроса по метаданным
5. 77Viktor77 8 07.09.21 12:42 Сейчас в теме
(2)Не знаю как правильно, но вот думаю может так будет. Что скажете?
Если  (Найти(глНазваниеКонфигурации, "управлениеторговлейдлябеларуси") > 0 и глВерсияКонфигурации >=3000000)Тогда 
				СоединениеСТаблицейУпаковокТекст = " ПО (ВЫБОР
		|				КОГДА ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры)
		|						ИЛИ ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ПустаяСсылка)
		|				ТОГДА ВЫБОР
		|						КОГДА ВТНоменклатураСХарактеристиками.Владелец.УдалитьИспользоватьСерийныеНомера
		|						ТОГДА ЛОЖЬ
		|						КОНЕЦ
		|				КОНЕЦ
		|ИЛИ (ВТНоменклатураСХарактеристиками.Владелец = ВТУпаковкиНоменклатуры.Владелец
		|			И ВТНоменклатураСХарактеристиками.Владелец.ЕдиницаИзмерения = ВТУпаковкиНоменклатуры.Ссылка)
		|)";
		Иначе СоединениеСТаблицейУпаковокТекст = " ПО (ВЫБОР
		|				КОГДА ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры)
		|						ИЛИ ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ПустаяСсылка)
		|					ТОГДА ВЫБОР
		|							КОГДА ВТНоменклатураСХарактеристиками.Владелец.ИспользоватьСерийныеНомера
		|								ТОГДА ЛОЖЬ
		|							ИНАЧЕ ВТНоменклатураСХарактеристиками.Владелец = ВТУпаковкиНоменклатуры.Владелец
		|						КОНЕЦ
		|				ИНАЧЕ ВЫБОР
		|						КОГДА ВТНоменклатураСХарактеристиками.Владелец.ИспользоватьСерийныеНомера
		|							ТОГДА ЛОЖЬ
		|						ИНАЧЕ ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ВТУпаковкиНоменклатуры.Владелец
		|					КОНЕЦ
		|			КОНЕЦ
		|ИЛИ (ВТНоменклатураСХарактеристиками.Владелец = ВТУпаковкиНоменклатуры.Владелец
		|			И ВТНоменклатураСХарактеристиками.Владелец.ЕдиницаИзмерения = ВТУпаковкиНоменклатуры.Ссылка)
		|)";
Показать
6. coollerinc 192 07.09.21 15:20 Сейчас в теме
(5) Да можно и так для начала, если вы только учитесь.

Но я бы попробовал вместо этого:

Если (Найти(глНазваниеКонфигурации, "управлениеторговлейдлябеларуси") > 0 и глВерсияКонфигурации >=3000000)Тогда

Вот примерно так:

Если Метаданные.Справочники.Номенклатура.Реквизиты.Найти("УдалитьИспользоватьСерийныеНомера") <> Неопределено Тогда
77Viktor77; +1 Ответить
7. 77Viktor77 8 07.09.21 16:05 Сейчас в теме
(6)
Если Метаданные.Справочники.Номенклатура.Реквизиты.Найти("УдалитьИспользоватьСерийныеНомера") <> Неопределено Тогда


Да спасибо так и сделал все работает, но в чем преимущество???
8. coollerinc 192 07.09.21 16:12 Сейчас в теме
(7) Разницы почти нет, просто мой пример будет работать на всех конфигурациях, независимо от названия.
77Viktor77; +1 Ответить
9. 77Viktor77 8 07.09.21 16:16 Сейчас в теме
(8)Ясно спасибо и вот что получилось!

Если глМетаданные.Справочники.Номенклатура.Реквизиты.Найти("УдалитьИспользоватьСерийныеНомера") <> Неопределено Тогда
			СоединениеСТаблицейУпаковокТекст = " ПО (ВЫБОР
			|				КОГДА ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры)
			|						ИЛИ ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ПустаяСсылка)
			|				ТОГДА ВЫБОР
			|						КОГДА ВТНоменклатураСХарактеристиками.Владелец.УдалитьИспользоватьСерийныеНомера
			|						ТОГДА ЛОЖЬ
			|						КОНЕЦ
			|				КОНЕЦ
			|ИЛИ (ВТНоменклатураСХарактеристиками.Владелец = ВТУпаковкиНоменклатуры.Владелец
			|			И ВТНоменклатураСХарактеристиками.Владелец.ЕдиницаИзмерения = ВТУпаковкиНоменклатуры.Ссылка)
			|)";
		Иначе 	СоединениеСТаблицейУпаковокТекст = " ПО (ВЫБОР
			|				КОГДА ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ИндивидуальныйДляНоменклатуры)
			|						ИЛИ ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ЗНАЧЕНИЕ(Справочник.НаборыУпаковок.ПустаяСсылка)
			|					ТОГДА ВЫБОР
			|							КОГДА ВТНоменклатураСХарактеристиками.Владелец.ИспользоватьСерийныеНомера
			|								ТОГДА ЛОЖЬ
			|							ИНАЧЕ ВТНоменклатураСХарактеристиками.Владелец = ВТУпаковкиНоменклатуры.Владелец
			|						КОНЕЦ
			|				ИНАЧЕ ВЫБОР
			|						КОГДА ВТНоменклатураСХарактеристиками.Владелец.ИспользоватьСерийныеНомера
			|							ТОГДА ЛОЖЬ
			|						ИНАЧЕ ВТНоменклатураСХарактеристиками.Владелец.НаборУпаковок = ВТУпаковкиНоменклатуры.Владелец
			|					КОНЕЦ
			|			КОНЕЦ
			|ИЛИ (ВТНоменклатураСХарактеристиками.Владелец = ВТУпаковкиНоменклатуры.Владелец
			|			И ВТНоменклатураСХарактеристиками.Владелец.ЕдиницаИзмерения = ВТУпаковкиНоменклатуры.Ссылка)
			|)";
		КонецЕсли;
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот