|
В помощь таким же чайникам как я: 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) СП:Запрос.Выполнить надо было смотреть.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |