Имя: Пароль:
1C
1С v8
В помощь таким же чайникам как я: Delphi и запрос в 1С
,
0 igel1969
 
29.08.12
14:55
Итак, друзья, вчера вы мне помогли составить запрос в 1С. Точнее рассказали о существовании запросов в 1С, а уж в написании их я поднаторел не меньше вашего.
Когда составляешь запрос в Delphi любыми компонентами (ADO или BDE), то после выполнения запроса указатель сразу встает на первую запись результирующего набора, если он не пустой, конечно. По логике вещей я даже не задумался, что где-то может быть иначе. Убил сегодня полдня, перелопатил кучу документации и статей, написал сам себе несколько разных вариантов примеров, пока до меня не дошло, что в 1С после выполнения запроса указатель повисает где-то в пустоте и для того, чтобы получить первую запись из результирующего набора, надо просто сделать один шаг: Результат.Следующий.
Хоть бы где, хоть бы в одном форуме или статье было об этом сказано!!!!!
1 vladon
 
29.08.12
14:56
надо читать доки )
2 Анатоль
 
29.08.12
15:02
(0) смотри примеры разработки так будет проще узнать неописанное
3 Рэйв
 
29.08.12
15:04
(0)Интересно что ты собирался с ним делать без контрукций типа
Пока Выборка.Следующий() Цикл
?

Даже если результат выгрузить в тз ее все равно надо обходить через
Для каждого... Из ... Цикл
4 igel1969
 
29.08.12
15:05
(2) да нет в примерах такого, чтобы нужна была только первая запись выборки. везде после запроса идет перебор всех выбранных записей. а мне нужна лишь первая запись. я делал выборку и сразу пытался присвоить и получал ошибку. и пока я не написал себе пример тоже с перебором и он заработал, только тут до меня и дошло то, что описал в топике.
5 igel1969
 
29.08.12
15:05
(3) мне нужна была лишь верхняя запись из выборки (она же и единственная, так запрос построен)
6 salvator
 
29.08.12
15:06
(5) А выгрузить в ТЗ и получить значение по индексу?
7 Бледно Золотистый
 
29.08.12
15:07
(0) А в дельфях такое не использовал?
ADOQuery.First;
ADOQuery.Next;
8 igel1969
 
29.08.12
15:07
так что я сделал Результат := Запрос.Выполнить().Выбрать();
а уж потом пришлось один раз сделать: Результат.Следующий.
и только тогда можно брать значения
9 Рэйв
 
29.08.12
15:07
(5)
//---
Первая=Запрос.Выполнить().Выгрузить()[0];

Но это если точно одна строка есть
10 igel1969
 
29.08.12
15:08
(7) в дельфях такое используется, только когда хочешь попасть на первую или следующую запись. но по умолчанию, после выполнения запроса ты сразу оказываешься на первой записи, нет необходимости делать First
12 igel1969
 
29.08.12
15:09
(9) спасибо, буду знать еще и этот вариант
13 Ненавижу 1С
 
гуру
29.08.12
15:09
в делфи это два метода EOF и Next, в 1С один - Следующий()
14 igel1969
 
29.08.12
15:09
(11) чтобы следующий новичок также полдня как я мучался?
15 Рэйв
 
29.08.12
15:10
(14)Это святая обязанность новичков:-)
16 0Mint
 
29.08.12
15:12
(0) СП:Запрос.Выполнить надо было смотреть.
Закон Брукера: Даже маленькая практика стоит большой теории.