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

Получить банковский счет контрагента

Автор Yuri_T, 09 апр 2013, 13:44

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

Yuri_T

Всем доброго времени суток!!!
Версия 8.2.
Есть справочник Контрагенты и справочник "БанковскиеСчета"
У него есть реквизит "ОсновнойБанковскийСчет" - ссылка на справочник "БанковскиеСчета".
Еще в этом справочнике контрагентов есть форма "ФормаЭлемента".
У этой формы один из реквизитов называется "БанковскиеСчета" и тип у него  "СправочникСписок.БанковскиеСчета"
На форме расположена таблица, у которой свойство "Данные" имеет значение
"БанковскиеСчета"
В ней расположены все банковские счета данного контрагента.
Если в таблице заполнена одна строка,
то поле "ОсновнойБанковскийСчет" может быть пустым.
Как, не открывая формы, программно получить банковский счет контрагента, у которого не заполнено поле "ОсновнойБанковскийСчет"
(к базе подключаюсь извне)
Заранее всем спасибо!!!

С уважением, Юрий

Новенькая

Может как-то так:
ВЫБРАТЬ
   Контрагенты.Ссылка КАК Контрагент,
   МИНИМУМ(БанковскиеСчета.Ссылка) КАК Счет
ИЗ
   Справочник.Контрагенты КАК Контрагенты
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчета
      ПО Контрагенты.Ссылка = БанковскиеСчета.Владелец
ГДЕ
   Контрагенты.ОсновнойБанковскийСчет = &ПустойБС

СГРУППИРОВАТЬ ПО
   Контрагенты.Ссылка

функция МИНИМУМ(БанковскиеСчета.Ссылка) - берет первый счет, если счетов несколько в табличной части...Если вы уверены что у вас там всегда один счет, то можно просто:

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

Yuri_T

Большое спасибо за ответ, но в отладчике показывает
Контрагент и Счет - Ошибка чтения значения...

Besart


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Ссылка  Как Контрагент,
| Контрагенты.ОсновнойБанковскийСчет Как Счет
|ИЗ
| Справочник.Контрагенты КАК Контрагенты";

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

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Счет = Справочники.БанковскиеСчета.ПустаяСсылка()Тогда
     Сообщить(ВыборкаДетальныеЗаписи.Контрагент)

КонецЕсли; КонецЦикла;

КонецПроцедуры

делается ч\з внешнюю обарботку, выдает список контрагентов у к\х не задан основной банковский счет

Yuri_T

На самом деле, неважно, пустой ли основной банковский счет или нет. Эту информацию я привел лишь для того, чтобы показать, что пользователь не всегда обращает внимание на это свойство у контрагента - основной банковский счет. Если он один, то пользователь считает, что он по умолчанию "основной". И "добыть" его можно уже только через список банковских счетов. Поэтому мне нужно вытащить информацию из этой табличной части на форме у справочника контрагентов. Вот непонятно, где физически она хранится? В вышеприведенных примерах идет связь по полю ссылка-владелец:
Контрагенты.Ссылка = БанковскиеСчета.Владелец
Но как это соотносится с таблицей банковских счетов на форме контрагента?
"ОсновнойБанковскийСчет" - это реквизит самого справочника контрагентов
А "БанковскиеСчета" - это данные ->табличного элемента-> формы "ФормаЭлемента" справочника контрагентов
у которого тип значения ="СправочникСписок.БанковскиеСчета"

Besart

Цитата: Yuri_T от 09 апр 2013, 16:49Но как это соотносится с таблицей банковских счетов на форме контрагента?
через ссылку

Цитата: Yuri_T от 09 апр 2013, 16:49Вот непонятно, где физически она хранится
хранятся в соответствующих таблицах для данного объекта


Yuri_T

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

Besart

Цитата: Yuri_T от 09 апр 2013, 13:44У него есть реквизит "ОсновнойБанковскийСчет" - ссылка на справочник "БанковскиеСчета".
у вас же вроде реквизит называется ОсновнойБанковскийСчет, а почему в запросе тогда |БанковскиеСчета.Ссылка КАК Счет, вы запрос конструктором писали или руками

Добавлено: 09 апр 2013, 20:37


забыл добавить, в запросе нужно делать полное соединение, а не внутреннее

Yuri_T

Цитата: Besart от 09 апр 2013, 19:34
Цитата: Yuri_T от 09 апр 2013, 13:44У него есть реквизит "ОсновнойБанковскийСчет" - ссылка на справочник "БанковскиеСчета".
у вас же вроде реквизит называется ОсновнойБанковскийСчет, а почему в запросе тогда |БанковскиеСчета.Ссылка КАК Счет, вы запрос конструктором писали или руками

Добавлено: 09 апр 2013, 20:37


забыл добавить, в запросе нужно делать полное соединение, а не внутреннее


Я извиняюсь, просто я сам запутал, наверное этим реквизитом - не нужно было его сюда, вообще, привлекать. Вот перефразировал:


Есть справочник "Контрагенты" и справочник "БанковскиеСчета"
В этом справочнике контрагентов есть форма "ФормаЭлемента".
У этой формы один из реквизитов называется "БанковскиеСчета" и тип у него "СправочникСписок.БанковскиеСчета"
На форме расположена таблица, у которой свойство "Данные" имеет значение
"БанковскиеСчета"
В ней расположены все банковские счета данного контрагента.
Как программно получить банковские счета (любую запись) контрагента
(к базе подключаюсь извне).
В обычной реляционной базе все просто - есть таблица контрагент, есть таблица БанковскиеСчета. А есть таблица КонтрагентСчета, в которой есть два поля - СчетчикКонтрагент (ключ таблицы Контрагент) и СчетчикБанковскийСчет (счетчик таблицы БанковскиеСчета). К примеру, на созданной форме в любом клиентском приложении,  выбранного контрагента - таблица с его банковскими счетами имеет источник записи  простой запрос к этой таблице, в котором фильтруются записи: WHERE СчетчикКонтрагент=Заданный контрагент на форме. Здесь-то как? Ведь данные формы нигде не хранятся... К ней не обратишься так, как к справочнику или документу, если она не открыта? Или я ошибаюсь...

Besart

скрин формы и скрин где указан тип можете показать

Теги:

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

Рейтинг@Mail.ru

Поиск