Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Добавление данных из объекта в форму "Заказ в 1 клик"

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 4
Просмотров: 4012
Последний ответ 11 Ноября 2014, 11:14:45
от Axiomateria
!!!Тема будет зарыта смотрите оригинал!!!Разработка новых типов данных

Автор ariusgroupРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 2408
Последний ответ 29 Сентября 2012, 00:55:07
от admin
Ссылка на дерево - вывод данных из другого объекта каталога в виде превью

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 16
Просмотров: 11318
Последний ответ 07 Июля 2013, 15:14:17
от Axiomateria
Вывод данных страниц разного типа данны в порядке создания

Автор SumrakrndРаздел Шаблоны XSLT

Ответов: 5
Просмотров: 2094
Последний ответ 09 Декабря 2016, 12:55:59
от Sumrakrnd
Рекурсивное удаление поля в типе данных объект каталога

Автор goodprofyРаздел Custom макросы

Ответов: 3
Просмотров: 2995
Последний ответ 12 Марта 2014, 17:14:59
от goodprofy

0 Пользователей и 1 Гость просматривают эту тему.

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Импорт данных по cron. xmlImporter
« : 24 Января 2013, 13:51:09 »
Здравствуйте.

Сделал кастомный макрос import_do, вызываемый в админке при использование модуля "обмен данными", при нажатие кнопки "выполнить импорт". Кастомность - не использование кукизов для хранения перемещений по xml документы при импорте.

Кастом макрос запускается по крону.

Захожу руками на cron.php - всё выполняется без проблем, работает корректно.
Запускается по крону - создаваемые объекты получаются без заполненных полей (name, title, 1с специфические и т.п.)... Названия объектов = ид из импорта, page @Id.
<page id="{@Идентификатор}" parentId="{$catalog-id}" type-id="root-catalog-category-type">

Тут же удаляю объекты, запускаю через адресную строку - всё корректно добавляется.

Никто не сталкивался с чем-нибудь подобным ?

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Импорт данных по cron. xmlImporter
« Ответ #1 : 25 Января 2013, 15:18:43 »
нет, но как вариант, добавил в код import_do механизм сохранения в файл промежуточных результатов импорта. На предмет выяснения, в какой момент он теряет эти данные: не подхватывает из файла источника, при обработке или при создании\изменении объектов в системе.

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:Импорт данных по cron. xmlImporter
« Ответ #2 : 11 Марта 2013, 12:04:42 »
Я просто в ступоре... Локализовал место, где теряются данные - это umiTemplaterXSLT::parse
Закомментил всё, что без чего может работать, оставил минимум кодэ

public function parse($variables, $content = null) {
if (is_null($this->domXSL)) {
$this->domXSL = $this->prepareXSL($this->templatesSource);
}
$domXML = ($this->domXML instanceof DOMDocument) ? $this->domXML : $this->prepareXML($variables);
$xslt = new xsltProcessor;
$xslt->registerPHPFunctions();
$er = errorsXsltListen();
$xslt->importStyleSheet($this->domXSL);
$res =  $xslt->transformToXML($domXML);
var_dump($res);
errorsXsltCheck($er);
exit;
return $res;
}

Вывожу под админом - всё норм
Цитировать
commerceML2 Объекты каталога Разделы каталога 0 1 Разделы каталога 0 0 Объекты каталога Тест Тест Тест commerceML2
Вывожу под гостем - тут косяк
Цитировать
commerceML2 Объекты каталога Разделы каталога NaN NaN Разделы каталога NaN NaN Объекты каталога commerceML2

Найти закономерность и связь с админом/не админом не могу, ведь не umi забабахали xsltProcessor.
Все остальные данные 1в1 под гостем и под админом ($this->domXSL, стили и т.п.)....
Уже не знаю куда смотреть... Разве что сделать пользователя для крона и дать ему админа..


*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Импорт данных по cron. xmlImporter
« Ответ #3 : 11 Марта 2013, 14:50:12 »
возможно они теряются вот тут...

$this->prepareXSL

или тут
$this->prepareXML

Особенно последний меня заинтересовал. Он ведь работает через стандартный api... сразу появилось желание посмотреть права на страницы которые обрабатываются cron'ом, нет ли у них каких своих прав или посмотреть на права гостя, есть ли у него права на использования функций импорта? особенно ту, что была добавлена как кастомная....

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:Импорт данных по cron. xmlImporter
« Ответ #4 : 11 Марта 2013, 16:21:22 »
Кастомная функция вызывает вот этот системный метод. Права естественно даны

Я после каждого шага выводил промежуточные результаты и сравнивал. Открывал просто два браузера рядом и выводил один и тот же код - всё было одинаково.

Я ещё раз проверю эти функци...

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:Импорт данных по cron. xmlImporter
« Ответ #5 : 13 Марта 2013, 15:08:01 »
Проблему решил, окончательно сформировать суть возникновения не готов, но если бы я это сам не видел, то не поверил бы.
Я пошёл в сильный блудняк с umiTemplaterXSLT, Templater и т.п...
В моём xsl файле импорта вызывались кастомные методы. Вот для них не срабатывали permisions и доступ не открывался. А там у меня все поля, которые я заполнял, получались через вызов этих кастомных методов (просто 1с 7.7 весьма туго работает с выгрузками и поэтому я много передавал в название товара, а потом парсил со своей стороны).
Я в один из таких методов вставил var_dump(111); exit; и выполнил кастом, запускающий импорт... И не увидел var_dump... Обратился через адресную строку к методу с var_dump и увидел 111, как и должно быть... Пара минут на эксперименты с тем, какие классы могут выполняться, какие нет... В итоге мои макросы оказались внутри класса system.
Будет время - разбирусь с причинами...

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Импорт данных по cron. xmlImporter
« Ответ #6 : 15 Марта 2013, 07:42:13 »
а где лежали изначально ваши кастомы, когда они не срабатывали?

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:Импорт данных по cron. xmlImporter
« Ответ #7 : 17 Марта 2013, 19:02:09 »
Кастомы были внутри custom модуля emarket. Права были прописаны. Я вызывал мой чудо-метод с импортом - var_dump не срабатывал. Вызывал напрямую метод, который должен отдать var_dump - и он отдавал.


*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Импорт данных по cron. xmlImporter
« Ответ #8 : 18 Марта 2013, 01:38:45 »
лечить зубы по фотографии становиться сложно, так что, без возможности взглянуть в живую не вижу смысла искать причину  ;)

P.S. В итоге все заработало?

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:Импорт данных по cron. xmlImporter
« Ответ #9 : 18 Марта 2013, 13:56:53 »
Да, решил ещё 13 марта.