|
Программно найти справочник по дополнительным реквизитам и сведениям
| ☑ |
0
Qwerty18
14.04.20
✎
00:22
|
Функция НайдемКонтрагента(КодКонтрагента)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| КонтрагентыДополнительныеРеквизиты.Ссылка КАК Контрагент
|ИЗ
| Справочник.Контрагенты.ДополнительныеРеквизиты КАК КонтрагентыДополнительныеРеквизиты
|ГДЕ
| КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство
| И КонтрагентыДополнительныеРеквизиты.Ссылка = &Ссылка";
Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("КодУт", Истина);
Запрос.УстановитьПараметр("Ссылка",КодКонтрагента);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() цикл
БКонтрагент = Результат.Контрагент;
КонецЦикла;
Сообщить(БКонтрагент;);
Возврат БКонтрагент;
КонецФункции
|
|
1
Qwerty18
14.04.20
✎
00:23
|
Добрый день. Пытаюсь реализовать поиск в справочнике контрагенты по доп. реквизиту КодУт. Но возвращается пустое значение. Что неправильно ?
|
|
2
Cthulhu
14.04.20
✎
00:26
|
ПланВидовХарактеристик не находится по этому наименованию?
|
|
3
аспид
14.04.20
✎
00:34
|
>> | КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство
Не задано свойство в параметрах запроса
|
|
4
Builder
14.04.20
✎
00:34
|
Бред какой то написан.
В запросе выбирается ссылка, которая передается как параметр в запрос.
Уберите условие на ссылку и поправьте
Запрос.УстановитьПараметр("Свойство",КодКонтрагента);
|
|
5
RomanYS
14.04.20
✎
00:37
|
(1) Неправильно делать условие на ссылку если ищешь по значению
|
|
6
Qwerty18
14.04.20
✎
12:24
|
Спасибо всем. Заработало вот так, кому нибудь пригодится.
&НаСервере
Функция НайдемКонтрагента(НаименованиеПоиска,КодКонтрагента)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| КонтрагентыДополнительныеРеквизиты.Ссылка КАК Контрагент
|ИЗ
| Справочник.Контрагенты.ДополнительныеРеквизиты КАК КонтрагентыДополнительныеРеквизиты
|ГДЕ
| КонтрагентыДополнительныеРеквизиты.Значение = &Значение
| И КонтрагентыДополнительныеРеквизиты.Свойство.Имя = &Имя";
Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("КодУТ", Истина);
Запрос.УстановитьПараметр("Имя", "КодУТ_7fa830250b37400a8c11df50f9bc7e62"); // Это ИМЯ реквизита (не Наименование которое просто = КодУТ, а Имя "для разработчиков")
Запрос.УстановитьПараметр("Значение",КодКонтрагента); // Это значение Вашего реквизита
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() цикл
ИскомыйКонтрагент = Результат.Контрагент;
КонецЦикла;
// Сообщить(ИскомыйКонтрагент);
Возврат ИскомыйКонтрагент;
|
|
7
RomanYS
14.04.20
✎
12:30
|
(6) С учетом возврата одного контрагента, я бы заменил "ВЫБРАТЬ РАЗЛИЧНЫЕ" на "ВЫБРАТЬ Первые 1". И добавил сортировку по приоритетам, если вдруг "код УТ" окажется неуникальным. Например, помеченные на удаление должны иметь меньший приоритет.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший