Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 10:23

Как выбрать элементы справочника по нескольким владельцам?

Автор victoriums, 18 фев 2012, 20:15

0 Пользователей и 1 гость просматривают эту тему.

victoriums

Например в конфигурации Бух предприятия есть справочник Банковские счета который имеет 2 вида владельца Организацию и Контрагента, как программно выбрать счета, к примеру по Организации1 и по Контрагенту1


Dethmontt

БанковскийСчет = Организация1.ОсновнойБанковскийСчет;
или
БанковскийСчет = Контрагент1.ОсновнойБанковскийСчет;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

victoriums

Это не то, мне нужно получить не основной счет этих владельцев, а выбрать все их счета, вот в таком варианте

      ВыбСчет = Справочники.БанковскиеСчета.Выбрать(, Клиент.Ссылка);
      Пока ВыбСчет.Следующий() Цикл
         Счет = ВыбСчет.ПолучитьОбъект();
...
      КонецЦикла;

Здесь владелец = Клиент.Ссылка, а нужно еще и Организация.Ссылка, как сразу выбрать по двум владельцам (без использование запросов)? В доках ни чего не нашол. может как то отбором можно?

victoriums

Я так понял, что владелец элемента справочника банковские счета может быть только один, но быть двух видов организацией ИЛИ контрагентом

victoriums

В справке сказано что в методах справочниках подобных Выбрать(, Владелец), параметр владелец может быть ссылкой тока одного владельца, а все остальное запросами как в 77. Всем спасибо за молчаливое согласие:))

AntonB

Цитата: victoriums от 19 фев 2012, 05:29
Я так понял, что владелец элемента справочника банковские счета может быть только один, но быть двух видов организацией ИЛИ контрагентом
Все правильно поняли. Владелец всегда один.
А конкретно для банковских счетов второй владелец одновременно и по смыслу не требуется.
Просто у каждого контрагента есть свои счета и у каждой организации свои счета,
а хранятся они все в одном справочнике.

Вот для договоров есть соблазн сделать 2 владельца :) .
Там договор должен привязываться к паре организация-контрагент сразу.
Но владельцем можно поставить только одного - поэтому владельцем сделали контрагента.
А когда нужно выбрать договора между организацией и контрагентом - приходится использовать запрос.
Даже если здесь сделать владельца двух видов - это все равно не позволит сразу отобрать договора между нужными организацией и контрагентом.
Предлагаю полный ИТ сервис небольшой организации в Москве (приходящий сисадмин+1С7.7,1С8.x)

cska-fanat-kz

Чем быстрее отойдете от объектной модели выборки данных (Выбрать(...)) - тем лучше для вас.
Выборка данных по сложным условиям (например такое как у вас ;) ) - делается исключительно запросом.
Например таким

ВЫБРАТЬ
   БанковскиеСчета.Ссылка,
   БанковскиеСчета.Владелец
ИЗ
   Справочник.БанковскиеСчета КАК БанковскиеСчета
ГДЕ
   БанковскиеСчета.Владелец = &Организация

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   БанковскиеСчета.Ссылка,
   БанковскиеСчета.Владелец
ИЗ
   Справочник.БанковскиеСчета КАК БанковскиеСчета
ГДЕ
   БанковскиеСчета.Владелец = &Контрагент
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Klyacksa

Запросом, конечно, лучше. Но если уж принципиально нужно без запроса, тогда что мешает сделать выборку два раза? три? десять?))
     МассивВладельцев=Новый Массив;
     МассивВладельцев.Добавить(Клиент);
     МассивВладельцев.Добавить(Организация);
     // можно еще хоть 10 вариантов владельцев добавить

     Для каждого Владелец из МассивВладельцев цикл
          ВыбСчет = Справочники.БанковскиеСчета.Выбрать(, Владелец);
          Пока ВыбСчет.Следующий() Цикл
               Счет = ВыбСчет.ПолучитьОбъект();
               ...
          КонецЦикла;
      КонецЦикла;


Хотя, я, конечно, за запрос... И запрос здесь действительно примитивный нужен, и отработает быстрее, и выборку только один раз сделает, и обрабатывать потом можно весь перечень целиком.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Klyacksa

2cska-fanat-kz
а я бы писала запрос так:
ВЫБРАТЬ
   БанковскиеСчета.Ссылка,
   БанковскиеСчета.Владелец
ИЗ
   Справочник.БанковскиеСчета КАК БанковскиеСчета
ГДЕ
   БанковскиеСчета.Владелец = &Организация
   ИЛИ БанковскиеСчета.Владелец = &Контрагент


;)
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск