[РЕШЕНО] Создать документ программно

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

[РЕШЕНО] Создать документ программно

Сообщение Yvgen » Вт дек 22, 2009 3:03 pm

Суть.
Есть обработка, которая имеет две таблицы.
Услуги и товары.
Необходимо после заполнения таблиц данными, создать два документа и провести их.
Т.е. в коде обработки описать проведение документов (двух), после нажатия одной кнопки.
Возможно ли это?
Это нужно для удобства.
Последний раз редактировалось Yvgen Пн фев 08, 2010 1:08 pm, всего редактировалось 1 раз.
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

Re: Создать документ программно

Сообщение anton » Ср дек 23, 2009 12:22 am

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

Re: Создать документ программно

Сообщение Yvgen » Чт дек 24, 2009 11:01 pm

anton писал(а):Возможно.

Есть в чье-то конфигурации такое реализовано?
Или образец кода??
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

Re: Создать документ программно

Сообщение anton » Пт дек 25, 2009 10:50 am

Yvgen писал(а):Есть в чье-то конфигурации такое реализовано?
Или образец кода??

1. Вынести процедуру проведения в глобальный модуль
2.
Код: Выделить всё
var doc = new Documnet("<Document>");
doc.SetValue("<Attr>", <val>);
....
doc.Update();
....
А теперь вызываем проведение, допустим
gmSignDoc(doc);

по-моему всё просто, пример можно глянуть в АНАPOS, там импорт приходной накладной.
anton
 
Сообщения: 137
Зарегистрирован: Сб фев 28, 2009 9:00 pm
Откуда: Иркутск

Re: Создать документ программно

Сообщение Yvgen » Пт дек 25, 2009 12:08 pm

Спасибо! Примерно так и представлял.
Эх...
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

Re: Создает, но не проводит (

Сообщение Yvgen » Пн фев 08, 2010 2:04 am

Код: Выделить всё
      Msg("Тестовое проведение документа");
      var dr = new Document("Расход");
      dr.New();
      SelectByCurrent(dr); // осуществляем привязку созданного нами документа 
     // dr.setSysValue("DocDate",eDate)
      dr.SetValue("СуммаВВИ",ConvertNumber2MoneyFormat("10"));
            dr.Update();
      dr.SignIn();

      Msg("----");
      Msg("Тест: "+dr.Conduct());

      Msg(dr.IsSignedIn());

Последний Msg (оболочка для sys.Message) - выводит false, документ в журнал добавляется (((
Т.е. все ок, но не проводит его.
Либо я где то пропустил что то... но что...?
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

Re: Создать документ программно

Сообщение Yvgen » Пн фев 08, 2010 12:12 pm

ANANAS.LOG:
Код: Выделить всё
2010-02-08 11:07:53 DEBUG Вызов устаревшего метода: aForm::show()
2010-02-08 11:07:59 DEBUG Вызван метод aCfg::find(const QString &name)
2010-02-08 11:07:59 DEBUG aCfg::find(const QString &name) выбор типа для 'Document'
2010-02-08 11:07:59 DEBUG aCfg::find(const QString &name) выход
2010-02-08 11:07:59 DEBUG aDatabase: Создание нового уникального номера 4665 для объекта типа 1435
2010-02-08 11:07:59 DEBUG aDataTable new record with id=4665 for meta object with id=1435
2010-02-08 11:07:59 DEBUG aDocument: Тип нового документа = 1435
2010-02-08 11:07:59 DEBUG aDatabase: Создание нового уникального номера 4666 для объекта типа 0
2010-02-08 11:07:59 INFO aDocJournal: Создан новый номер 4 для Расход
2010-02-08 11:07:59 INFO aDocJournal: Новый документ с идентификатором idd=4665
2010-02-08 11:07:59 DEBUG aDocument: Новый документ
2010-02-08 11:07:59 ERROR aDatabase: Получение типа объекта по его уникальному идентификатору id=0
2010-02-08 11:07:59 DEBUG aForm: Результат выполнения SelectByCurrent по идентификатору 0 равен 2
2010-02-08 11:07:59 DEBUG Вызов устаревшего метода  aDocument::IsConduct(...)
2010-02-08 11:07:59 DEBUG Вызов устаревшего метода  aDocument::IsConduct(...)
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm

Re: Создать документ программно

Сообщение Yvgen » Пн фев 08, 2010 1:07 pm

Решено.
Ошибочно был вызван метод:
Код: Выделить всё
    SelectByCurrent(dr);

В данном случае он не нужен.
Аватара пользователя
Yvgen
 
Сообщения: 78
Зарегистрирован: Сб сен 26, 2009 9:02 pm


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

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

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

cron