#1
Отправлено 11 Январь 2020 - 11:09
#2
Отправлено 15 Январь 2020 - 17:12
#3
Отправлено 09 Февраль 2020 - 10:51
И второй вопрос –
Всё это надо вот для чего – внешнее приложение изменяет напрямую данные в DB, КБ естественно ничего про это не знает, но при изменении данных необходимо запускать обработки внутри КБ. Можете подсказать какое-то решение для этого?
#4
Отправлено 11 Февраль 2020 - 08:46
https://info.crm-master.info
#5
Отправлено 11 Февраль 2020 - 12:46
#6
Отправлено 14 Февраль 2020 - 00:30
Создаете вычисление на изменение поля "Название".
if ($line['Название'] != $event['changed']['478']['old']) echo "Название было изменено"; // 478 - это номер поля "Название"
Сообщение отредактировал Tony999: 14 Февраль 2020 - 07:41
https://info.crm-master.info
#7
Отправлено 14 Февраль 2020 - 10:21
#8
Отправлено 15 Февраль 2020 - 11:23
Ваше внешнее приложение меняет в DB поле "Название", при этом еще поле "Флаг" ставит в 1.
Крон каждую минуту проверяет таблицу, если поле "Флаг" = 1, то делает соотв. обработку этой конкретной записи, затем сбрасывает поле "Флаг" в ноль.
Вот и все. Система готова к новому поиску изменений в поле "Название".
https://info.crm-master.info
#9
Отправлено 15 Февраль 2020 - 22:05
На каждое изменяемое поле дополнительное для флага обновления.
Не знаю предыдущего значения, это критично для отслеживания статусов задач.
Применяю эвристику для обновления зависимых полей, все на уровне вероятностей.
Криво это все, но адекватного решения пока не вижу.
#10
Отправлено 09 Апрель 2020 - 16:20
Использование подобных конструкций чему-то противоречит? Вы не предлагаете подобного решения, а это как раз то что нужно, о чем собственно сабж и был.
$task = 'updater'; $params = ['table_id' => 221, 'calc_id' => 3670, 'filter_id' => '0']; new ClientBase\calculate\Calculate($task, $params);
#11
Отправлено 21 Май 2020 - 15:44
Anton1 (09 Апрель 2020 - 16:20) писал:
Использование подобных конструкций чему-то противоречит? Вы не предлагаете подобного решения, а это как раз то что нужно, о чем собственно сабж и был.
$task = 'updater'; $params = ['table_id' => 221, 'calc_id' => 3670, 'filter_id' => '0']; new ClientBase\calculate\Calculate($task, $params);
Это не совсем подходит, т.к. это одноразовый запуск. В последних ревизиях непосредственно в сами вычисления была добавлена настройка в виде события "по расписанию", которая как раз позволяет запускать нужное вам вычисление в кроне автоматически. Т.е. при выборе данного события автоматом создается служебное задание крон.
#12
Отправлено 22 Май 2020 - 07:08
Событие "по расписанию" да, появилось, но фильтр слабоват.
И фильтры в вычислении работают очень медленно. Например у меня табличка с 40к строк. Если сделать в ней фильтр, в который попадает, ну пусть десяток строк, то содержимое выводится мгновенно, но если я делаю вычисление с такими же условиями, то обработка идет в 3 захода по 30 секунд, а на больших таблицах приходится ждать очень долго. Если в таблице 10к строк, то обрабатывается в один проход. Что-то с алгоритмами у вас не оптимизировано.
Количество пользователей, читающих эту тему: 4
0 пользователей, 4 гостей, 0 анонимных