Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Запрос через язык 1С. Что неправильно делаю? / 8 сообщений из 8, страница 1 из 1
22.06.2010, 16:03
    #36700978
KononovAI
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос через язык 1С. Что неправильно делаю?
Добрый день.

Подскажите, пожалуйста, где ошибся...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Функция   ПолучитьБанковскийСчетКонтрагента (_Контрагент, _Счет) Экспорт
	Запрос = Новый Запрос();
	Запрос.Текст = "	
		|ВЫБРАТЬ
		|	Контрагенты.Ссылка,
		|	БанковскиеСчета.Ссылка КАК БанковскийСчет,
		|	Контрагенты.ОсновнойБанковскийСчет
		|ИЗ
		|	Справочник.БанковскиеСчета КАК БанковскиеСчета
		|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
		|		ПО БанковскиеСчета.Владелец = Контрагенты.Ссылка
		|ГДЕ
		|	Контрагенты.Ссылка = &Контрагент
		|	И БанковскиеСчета.НомерСчета = &НомерСчета
		|";
	Запрос.УстановитьПараметр("Контрагент", _Контрагент);
	Запрос.УстановитьПараметр("НомерСчета", _Счет);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Если      Выборка.Количество() =  0  Тогда
		Возврат Неопределено
	ИначеЕсли Выборка.Количество() =  1  Тогда
		Возврат Выборка.БанковскийСчет;
	Иначе
		Счет = Выборка.БанковскийСчет;
		Пока Выборка.Следующий() Цикл
			Если Выборка.БанковскийСчет = Выборка.ОсновнойБанковскийСчет Тогда 
				Счет = Выборка.БанковскийСчет;
			КонецЕсли;			
		КонецЦикла;			
		Возврат Счет;
	КонецЕсли;	
КонецФункции

В построителе запрос отрабатывается нормально. Через язык
Код: plaintext
Выборка = Запрос.Выполнить().Выбрать();
работать не хочет.


Вызываю так:

Код: plaintext
ПлательщикСчет = ПолучитьБанковскийСчетКонтрагента (Плательщик, _СчетПлательщика);

Плательщик - ссылка на контрагента
_СчетПлательщика - строка
...
Рейтинг: 0 / 0
22.06.2010, 16:32
    #36701088
Нет реги
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос через язык 1С. Что неправильно делаю?
Код: plaintext
1.
2.
3.
ИначеЕсли Выборка.Количество() =  1  Тогда
Выборка.Следующий();
Возврат Выборка. БанковскийСчет;
...
Рейтинг: 0 / 0
22.06.2010, 17:05
    #36701196
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос через язык 1С. Что неправильно делаю?
запрос можно упростить до:

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

УПОРЯДОЧИТЬ ПО
ВЫБОР
КОГДА БанковскиеСчета.Владелец.ОсновнойБанковскийСчет = БанковскиеСчета.Ссылка
ТОГДА 0
ИНАЧЕ 1
КОНЕЦ
...
Рейтинг: 0 / 0
22.06.2010, 17:21
    #36701244
tiniji
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос через язык 1С. Что неправильно делаю?
Безобразие какое то а не код...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
	Запрос = Новый Запрос;
	Запрос.Текст = "	
		|ВЫБРАТЬ
		|	БанковскиеСчета.Ссылка КАК БанковскийСчет,
		|	БанковскиеСчета.Владелец.ОсновнойБанковскийСчет КАК ОсновнойБанковскийСчет
		|ИЗ
		|	Справочник.БанковскиеСчета КАК БанковскиеСчета
		|ГДЕ
		|	БанковскиеСчета.Владелец = &Контрагент
		|	И БанковскиеСчета.НомерСчета = &НомерСчета
		|";
	Запрос.УстановитьПараметр("Контрагент", _Контрагент);
	Запрос.УстановитьПараметр("НомерСчета", _Счет);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Если  Выборка.Следующий() Тогда
		Счет = ?(Выборка.ОсновнойБанковскийСчет.Пустая(), Выборка.БанковскийСчет, Выборка.ОсновнойБанковскийСчет);
		Возврат Счет;
	КонецЕсли;

	Возврат Неопределено;
...
Рейтинг: 0 / 0
22.06.2010, 17:25
    #36701259
tiniji
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос через язык 1С. Что неправильно делаю?
Naf,

+ 1. Самый оптимизированный метод =)
...
Рейтинг: 0 / 0
23.06.2010, 10:24
    #36702411
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос через язык 1С. Что неправильно делаю?
Naf, А почему не

ТОГДА Истина
ИНАЧЕ Ложь
...
Рейтинг: 0 / 0
28.06.2010, 15:41
    #36711506
XenoX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос через язык 1С. Что неправильно делаю?
а можно ведь и еще проще....
Код: plaintext
1.
возврат справочники.банковскиеСчета.найтиПо......
...
Рейтинг: 0 / 0
28.06.2010, 17:16
    #36711766
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос через язык 1С. Что неправильно делаю?
XenoX,

не совсем
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Запрос через язык 1С. Что неправильно делаю? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]