Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Программно найти справочник по дополнительным реквизитам и сведениям

Программно найти  справочник по  дополнительным реквизитам и сведениям
Я
   Qwerty18
 
14.04.20 - 00:22
Функция НайдемКонтрагента(КодКонтрагента)
            
    Запрос = Новый Запрос;
    Запрос.Текст =  "ВЫБРАТЬ
    
    |    КонтрагентыДополнительныеРеквизиты.Ссылка КАК Контрагент
    |ИЗ
    |    Справочник.Контрагенты.ДополнительныеРеквизиты КАК КонтрагентыДополнительныеРеквизиты
    |ГДЕ
    |    КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство
    |    И КонтрагентыДополнительныеРеквизиты.Ссылка = &Ссылка";

    Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("КодУт", Истина);
    Запрос.УстановитьПараметр("Ссылка",КодКонтрагента);

    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() цикл
        БКонтрагент = Результат.Контрагент;
    КонецЦикла;
     Сообщить(БКонтрагент;);
    Возврат БКонтрагент;
    
КонецФункции
   Qwerty18
 
1 - 14.04.20 - 00:23
Добрый день. Пытаюсь реализовать поиск в справочнике контрагенты по доп. реквизиту КодУт. Но возвращается пустое значение. Что неправильно ?
   Cthulhu
 
2 - 14.04.20 - 00:26
ПланВидовХарактеристик не находится по этому наименованию?
   аспид
 
3 - 14.04.20 - 00:34
>>   |    КонтрагентыДополнительныеРеквизиты.Свойство = &Свойство

Не задано свойство в параметрах запроса
   Builder
 
4 - 14.04.20 - 00:34
Бред какой то написан.
В запросе выбирается ссылка, которая передается как параметр в запрос.
Уберите условие на ссылку и поправьте
Запрос.УстановитьПараметр("Свойство",КодКонтрагента);
   RomanYS
 
5 - 14.04.20 - 00:37
(1) Неправильно делать условие на ссылку если ищешь по значению
   Qwerty18
 
6 - 14.04.20 - 12:24
Спасибо всем. Заработало вот так, кому нибудь пригодится.

&НаСервере
Функция НайдемКонтрагента(НаименованиеПоиска,КодКонтрагента)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| КонтрагентыДополнительныеРеквизиты.Ссылка КАК Контрагент
|ИЗ
| Справочник.Контрагенты.ДополнительныеРеквизиты КАК КонтрагентыДополнительныеРеквизиты
|ГДЕ
| КонтрагентыДополнительныеРеквизиты.Значение = &Значение
| И КонтрагентыДополнительныеРеквизиты.Свойство.Имя = &Имя";

Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("КодУТ", Истина);

Запрос.УстановитьПараметр("Имя", "КодУТ_7fa830250b37400a8c11df50f9bc7e62");// Это ИМЯ реквизита (не Наименование которое просто = КодУТ, а Имя "для разработчиков")

Запрос.УстановитьПараметр("Значение",КодКонтрагента);// Это значение Вашего реквизита

Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() цикл
ИскомыйКонтрагент = Результат.Контрагент;
КонецЦикла;
// Сообщить(ИскомыйКонтрагент);

Возврат ИскомыйКонтрагент;
   RomanYS
 
7 - 14.04.20 - 12:30
(6) С учетом возврата одного контрагента, я бы заменил "ВЫБРАТЬ РАЗЛИЧНЫЕ" на "ВЫБРАТЬ Первые 1". И добавил сортировку по приоритетам, если вдруг "код УТ" окажется неуникальным. Например, помеченные на удаление должны иметь меньший приоритет.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.