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