Имя: Пароль:
1C
1С v8
Запрос, проблема с получением данных.
0 Menjoy
 
01.09.11
01:29
Здравствуйте, есть написанный кусок кода:

   Если ВК=Истина Тогда
       Запрос = "      
               |select
                 |    doc2.document_out_id doc_id,
               |    doc2.document_type_id doc_type
               |from document_out doc
                 |    join document_out doc2 on (doc2.document_out_id = doc.source_document_out_id)
               |    left join document_out_header doh on (doc.document_out_id = doh.document_out_id)
               |where (doc.document_type_id = 6) and (doh.date_create between '"+ДатаОт+"' and '"+ДатаДо+"');";
               
   КонецЕсли;
           
   Попытка
       ВозвратыКлиентов = Connection.Execute(Запрос);
   Исключение
       Сообщить(ОписаниеОшибки());
   КонецПопытки;
   
         
           
   Пока ВозвратыКлиентов.EOF()=0 Цикл      
       НоваяСтрока = ВКЛ.Добавить();
       НоваяСтрока.ДокИд = ВозвратыКлиентов.Fields("doc_id").Value;
       НоваяСтрока.ДокТип = ВозвратыКлиентов.Fields("doc_type").Value;
       ВозвратыКлиентов.MoveNext();    
   КонецЦикла;
   ВозвратыКлиентов.Close();


При отладке ввожу такие даты, чтобы запрос выдавал 11 записей, но в табличную часть ВКЛ почему-то попадает только 5 из них, в чем может быть проблема?

Спасибо.
1 Menjoy
 
01.09.11
01:31
В дополнение к (1)
Запрос проверял через IBEpert, выдает ровно 11 записей.
2 Wobland
 
01.09.11
06:29
пальцем в небо. а перед циклом не надо ВозвратыКлиентов.First()?
3 Menjoy
 
01.09.11
09:07
(2) сейчас попробую, но в модуле использую кучу подобных функций с выборкой таким образом (без first) и все считает правильно.
4 Menjoy
 
01.09.11
09:40
С 0 по 4 записи Выборка.EOF() = Ложь, поэтому запросто попадает в цикл Пока Выборка.EOF()=0 Цикл.
А вот с 5-ой записи она вдруг становится Истиной.

Кусок кода функции идентичен другим таким функциям (их около 10) они работают, а эта нет.
5 Wobland
 
01.09.11
09:41
а что за коннекшн? в ТЗ сможет выгрузить?
6 Ёпрст
 
01.09.11
09:47
(0) Дык с чего уверенность, что при inner join у тебя будет 11 записей ??????
7 Menjoy
 
01.09.11
10:09
(5)
   Connection = Новый COMОбъект("ADODB.Connection");
   Connection.Provider = "LCPI.IBProvider";
   Connection.ConnectionString = "driver={Firebird/Interbase(r) driver};server=\\localhost;data source="+ПутьБД+";user=SYSDBA; password=masterkey;auto_commit=true;";
   Попытка
       Connection.Open();
   Исключение
       Сообщить("Ошибка:"+ОписаниеОшибки());
   КонецПопытки;
   
   Попытка
       Команда = Новый COMОбъект("ADODB.Recordset");
       Команда.ActiveConnection    = Connection;
   Исключение Сообщить("Не установлен драйвер подключения или неверно указан пароль доступа!", СтатусСообщения.Информация);
   КонецПопытки

(6)
Проверял запрос через построитель запросов, выдает 11 записей.
8 Menjoy
 
01.09.11
10:39
Извиняюсь перед теми кто пытался помочь.
Устал и делал запрос из обработки к одной базе, а проверял на другой ...