Перейти к содержимому


Экспорт представления по крону

экспорт представление крон

Сообщений в теме: 6

#1 anton

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений

Отправлено 12 Февраль 2012 - 23:32

Задача - организовать ежедневную выгрузку представления(сводится из нескольких таблиц) в файл(csv - подойдёт), для последующего использования за пределами КБ.
В документации нашёл только http://clientbase.ru...dmin_16/export/ и там описано как организовать выгрузку из одной таблицы.
Сделал по аналогии:
export_data('Документы', '<Имя представления>', '/home/<путь к установке КБ>/export/offers.csv');
Однако это не дало ожидаемого результата. Вероятно для представлений нужно делать как-то иначе. Как?

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 13 Февраль 2012 - 09:27

Функция export_data работает исключительно с таблицами, разумеется представление сэкспортировать вы ей не сможете, т.к. программа не в состоянии определить какие именно данные брать из него. Единственный вариант здесь - самостоятельно сохранять данные представления в какую-либо из таблиц и затем экспортировать данные из нее. Разумеется при этом и код представления должен также автоматически выполняться через крон перед вызовом функции export_data. По сути это уже будет просто набор команд по формированию данных в некую таблицу и затем выполняющих их экспорт, само представление здесь уже не нужно.

#3 anton

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений

Отправлено 13 Февраль 2012 - 10:56

Каким образом это будет правильно сделать? Можно ли использовать данные из шага подготовки данных этого представления, чтобы не плодить одну и ту же выборку, которая ещё и меняется время от времени?
Можно/нужно использовать какие-то методы для занесения данных в таблицу или нужно заполнять её выполняя каждый раз INSERT запрос?

Если это есть в документации - направьте где, потому что я не смог найти.

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 13 Февраль 2012 - 11:06

1. Создаете таблицу средствами самой программы, через Настройки.
2. Создаете фильтр по умолчанию, в данном случае - пустой фильтр "Все записи", это необходимо для команды export_data.
3. Пишете ваш код, который можно скопировать из выбранного представления, единственно что данные после выборки необходимо будет записывать в созданную таблицу, а не выводить на экран, как это происходит в случае представления.
4. Для записи можно использовать стандартный INSERT, а можно использовать и нашу функцию insert_query. Описание здесь: http://clientbase.ru...?showtopic=3221

#5 anton

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений

Отправлено 21 Февраль 2012 - 23:13

Сделал отдельную таблицу, данные туда успешно вносятся.
Настроил экспорт:

export_data(
    '<имя таблицы>', 
    '<имя фильтра на этой таблице>', 
    '<путь к файлу>'
);


Т.е., в целом, всё просто. Но в логах крон-задач такое:
[color=#000000]2012-02-21 23:57:01 - OneTime - Task terminated[/color]
[color=#000000]<br />[/color]
[color=#000000]<b>Fatal error</b>: Call to undefined function insert_log() in <b>/home/da-crm/data/www/crm.discountaround.ru/include/functions_cron.php</b> on line <b>2162</b><br />[/color]

и в результирующем файле две строки - строка заголовка(с именами полей) и первая строка из таблицы.

КБ: Версия: 1.9.5 Ревизия:

3429 от 2012-02-09



#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Февраль 2012 - 11:56

Обновите ревизию до последней.

#7 anton

    Участник

  • Пользователи
  • PipPip
  • 11 сообщений

Отправлено 24 Февраль 2012 - 19:08

Просмотр сообщенияРазработчик (22 Февраль 2012 - 11:56) писал:

Обновите ревизию до последней.
Помогло. Теперь работает, спс.





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных