Получение данных из журнала документов

Начинаете изучать Ананас? Задавайте вопросы здесь. С чего начать? Где найти? Как сделать? А можно...?

Получение данных из журнала документов

Сообщение EvilGremlin » Ср дек 08, 2010 3:33 pm

нужно заполнить таблицу в форме (новый документ) по таблице из журнала документов
в absretail подсмотрел как делается, набросал код:
Код: Выделить всё
    function fillTable(tname)
    {
        var doc = new Document("Отчёт о проделанной работе"); //имя документа-источника в метаданных
        var osnov = Value("Основание");  //поле в текущей экранной форме
        doc.SetFilter("Основание", osnov);
        sys.Message(1,osnov); //проверочка для дебага
        if(doc.First())
        { do
                {      // что-то-там        }
        while(doc.Next());
        }
        else {sys.Message(1,"err doc");}  //тоже проверочка
        doc.ClearFilter();
    }

в ананасе выкидывает:
Код: Выделить всё
    (13:09:42) 1
    (13:09:42) err doc

то есть переменная "osnov" в порядке, но "if(doc.First())" почему-то не срабатывает, хотя в журнале документов основание записано. "Основание" - это текстовое представление входного документа (номер).
ЧЯДНТ?
ananas 0.9.5 qt3 отсюда: http://ananas.su/forum/viewtopic.php?f=9&t=17&start=10#p676
Последний раз редактировалось EvilGremlin Чт дек 09, 2010 3:39 pm, всего редактировалось 2 раз(а).
EvilGremlin
 
Сообщения: 20
Зарегистрирован: Пт ноя 19, 2010 4:07 pm

Re: Получение данных из журнала документов

Сообщение anton » Ср дек 08, 2010 7:58 pm

Вам нужен не номер документа, а его ID
anton
 
Сообщения: 137
Зарегистрирован: Сб фев 28, 2009 9:00 pm
Откуда: Иркутск

Re: Получение данных из журнала документов

Сообщение EvilGremlin » Ср дек 08, 2010 8:30 pm

нет, мне нужно отобрать документы в журнале по значению определённого поля, я не представляю, при чём тут ID... он скорее будет результатом отбора.

вот вывод в консоль:

Код: Выделить всё
eg@EVILGREMLIN ~ $ ananas
extensions:
Service
DateService
Calc
Meta
SQL
Text
XXXX
QSqlRecord::position: unable to find field uf0
QSqlRecord::field: index out of range: -1
QSqlRecord::position: unable to find field uf0
QSqlRecord::field: index out of range: -1
EvilGremlin
 
Сообщения: 20
Зарегистрирован: Пт ноя 19, 2010 4:07 pm

Re: Получение данных из журнала документов

Сообщение anton » Сб дек 11, 2010 1:02 pm

Ну, если вам лучше известно, зачем спрашиваете??
anton
 
Сообщения: 137
Зарегистрирован: Сб фев 28, 2009 9:00 pm
Откуда: Иркутск

Re: Получение данных из журнала документов

Сообщение EvilGremlin » Сб дек 11, 2010 5:12 pm

Спрашиваю потому, что не могу понять, почему "First" ничего не возвращает. если убрать фильтр - результат тот же. Выглядит так, как будто журнал пустой или его вообще нет. Однако если поменять ("Отчёт о проделанной работе") на что-нибудь другое, ананас вылетает. Видимо, журнал доков всё-таки подключается, но дальше дело не идёт...
EvilGremlin
 
Сообщения: 20
Зарегистрирован: Пт ноя 19, 2010 4:07 pm

Re: Получение данных из журнала документов

Сообщение anton » Вс дек 12, 2010 10:08 pm

Нет вызова одного из select
anton
 
Сообщения: 137
Зарегистрирован: Сб фев 28, 2009 9:00 pm
Откуда: Иркутск

0

Сообщение EvilGremlin » Пн дек 13, 2010 1:57 am

Гм... то есть фильтр не выбирает документ, и надо ещё слелать пустой Select по дате, чтобы получить все отфильтрованые доки?
EvilGremlin
 
Сообщения: 20
Зарегистрирован: Пт ноя 19, 2010 4:07 pm

Re: 0

Сообщение anton » Пн дек 13, 2010 6:32 pm

SetFilter устанавливает значение фильтра, а select выполняет запрос. Что значит пустой, не понял.
anton
 
Сообщения: 137
Зарегистрирован: Сб фев 28, 2009 9:00 pm
Откуда: Иркутск

Re: Получение данных из журнала документов

Сообщение EvilGremlin » Пн дек 13, 2010 10:58 pm

aDocument::Select( QDateTime from,QDateTime to)
Выбирает из системного журнала документы, значение поля "дата" которых лежит в указанном диапазоне. Если объект настроен на конкретный тип документа из бизнес схемы, выбираются только документы этого типа, в противном случае - все документы журнала, соответствующие условию.

Аргументы:
from - начальная дата диапазона, если дата isNull, первая дата журнала,
to - конечная дата диапазона, если isNull - до наиболее позднего документа.

Пустой - то есть без аргументов.
Поставил doc.Select() перед фильтром - данные начал получать, только как-то хаотично и из нескольких доков сразу, хотя и по-разному, в зависимости от значения фильтра. Фильтр не то работает, не то нет. Ни в одной БС я его использования не нашёл, так что реальных примеров использования нет.

По идее Select() и не нужен, если верить этому:.
Устанавливает фильтр на доступные документы.

Доступными становятся только документы, удовлетворяющие условию. Например, для получения всех накладных с номером 0003 нужно сделать примерно следующее:

Код: Выделить всё
aDocument * doc = new aDocument("Накладная", db);
        doc->SetFilter("Номер","0003");
        doc->First();
        do{
                //какие-то действия
           }while(doc->Next());
        delete doc;

Тут или я дурак, или лыжи таки не едут...
EvilGremlin
 
Сообщения: 20
Зарегистрирован: Пт ноя 19, 2010 4:07 pm

Re: Получение данных из журнала документов

Сообщение anton » Ср дек 15, 2010 9:38 pm

Если хочешь, скинь свою бс - посмотрю.
anton
 
Сообщения: 137
Зарегистрирован: Сб фев 28, 2009 9:00 pm
Откуда: Иркутск

След.

Вернуться в Вопросы новичков

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron