- Форум CRM программы Клиентская база
- → Публикации OlegSmirnov
Публикации OlegSmirnov
36 публикаций создано OlegSmirnov (учитываются публикации только с 06-Май 23)
#22441 Добавление записи через вычисление
Отправлено от OlegSmirnov в 11 Март 2014 - 19:44 in Как это сделать
Нужно сделать так, чтобы в зависимости от значения одного из полей в таблице, для каждой конкретной строки становились обязательными для заполнения разные колонки. Вот пример - допустим, есть три поля:
F1 - поле типа "список", может принимать значение 2 или 3.
F2 - поле типа "связь", оно отображается и становится обязательно для заполнения только если в поле F1 выбрано значение 2.
F3 - поле типа "связь", оно отображается и становится обязательно для заполнения только если в поле F1 выбрано значение 3.
Т.е. если пользователь в списке F1 выбирает значение 2 - то он должен заполнить поле F2, а поле F3 - не отображается в форме. Если выбирает значение 3 - то, соответственно, должен заполнить поле F3, а поле F2 - не отображается.
Я написал JavaScript, который в зависимости от значения F1 показывает/скрывает поля F2 и F3 при изменении значения поля F1, а также при загрузке страницы с формой для добавления/редактирования записи. Но вот как быть с обязательностью заполнения того или иного поля - никак не соображу... Основная проблема в том, что это поля типа "связь". Т.е. не достаточно просто на том же JS проверить, что в поле что-то есть и соответствует определённому формату, а нужно убедиться, что в связанной таблице есть такое значение. При этом и просто поставить галочку в настройках таблицы, что поле является обязательным - тоже нельзя, поскольку эта галочка применяется для всех записей в таблице. А мне нужно, чтобы для каждой строки в таблице обязательными для заполнения могли быть разные поля в зависимости от значения одного из полей той же строки. Предусмотрена ли такая возможность в программе?
Можно ли это сделать с помощью вычислений? Могу ли я в вычислении на сохранение данных отклонить запись данных из формы в таблицу и сформировать текст сообщения причины отказа? Не нашёл такой информации в описании вычислений...
#22484 Добавление записи через вычисление
Отправлено от OlegSmirnov в 13 Март 2014 - 17:58 in Как это сделать
return array('accept' => false, 'message' => 'Не верно заполнено поле XXX');
#22483 Добавление записи через вычисление
Отправлено от OlegSmirnov в 13 Март 2014 - 17:51 in Как это сделать
благодарю за ответ. Не обратил внимание на наличие скрытого поля с id связанной записи.
#23040 как можно ограничить текстовое поле определенным кол-вом символов?
Отправлено от OlegSmirnov в 15 Апрель 2014 - 08:48 in Как это сделать
andibrag (11 Октябрь 2011 - 11:47) писал:
/Ваша_файл_стилей.css" type="text/css"><script type="text/javascript" src="/cb_modules/addscr.js"></script><link rel="stylesheet
Проект находится на xxxxx.clientbase.ru - на сколько я понимаю, прямого доступа на редактирование файлов у меня там нет, чтобы можно было что-то вписать в какой-то файл.
#23044 как можно ограничить текстовое поле определенным кол-вом символов?
Отправлено от OlegSmirnov в 15 Апрель 2014 - 10:15 in Как это сделать
#22529 Вывод полей из других таблиц
Отправлено от OlegSmirnov в 17 Март 2014 - 16:40 in Как это сделать
Есть 4 таблицы с их полями:
Проекты:
- поле название (текст)
Услуги:
- поле проект (связь с проекты.название),
- поле название (текст),
- поле стоимость (число)
Позиции:
- поле сделка (связь с сделки.идентификация),
- поле проект (связь с проекты.название, невидимое при редактировании, заполняется вычислением - определяет проект по услуге),
- поле услуга (связь с услуги.название)
- поле стоимость (число, поле заполняется вычислением, значение берётся из соответствующей услуги)
Сделки:
- поле идентификация (текст)
- поле проекты (текст)
- поле услуги (текст)
- поле сумма (число)
И есть вычисление в таблице позиции, которое при изменении таблицы позиции (добавление, удаление, восстановление, редактирование записей):
1) получает все позиции, которые относятся к той же сделке, что и текущая позиция
2) перебирая полученные позиции, составляет список названий проектов (просто текст через запятую), к которым относятся эти позиции. Вообще, сперва набирает массив id проектов (из поля-связи проект), потом по этим id уже получает названия
3) аналогично, перебирая полученные позиции - составляет список названий услуг.
4) перебирая полученные позиции подсчитывает общую сумму
5) вносит список названий проектов, список названий услуг и общую сумму в соответствующую строку таблицы сделки.
И это работает. Но если, например, в таблице проекты изменить название - то в таблице сделки в списке проектов оно не изменится. Можно написать свои вычисления на таблицу проекты и на таблицу услуги, которые будут делать тоже самое, что вычисление на таблице позиции. Просто я подумал, что может можно при изменении названия проекта - определить список позиций, которые относятся к данному проекту и далее для этих позиций (можно предварительно отсеять позиции с одинаковыми сделками) - запустить то вычисление из таблицы позиции, которое уже готово, а не создавать ещё его клоны.
#22527 Вывод полей из других таблиц
Отправлено от OlegSmirnov в 17 Март 2014 - 16:11 in Как это сделать
#22530 Вывод полей из других таблиц
Отправлено от OlegSmirnov в 17 Март 2014 - 16:50 in Как это сделать
#22524 Вывод полей из других таблиц
Отправлено от OlegSmirnov в 17 Март 2014 - 15:08 in Как это сделать
Скажите, а можно ли как-то из кода одного вычисления принудительно запустить работу нужного вычисления из определённой таблицы? Как будто произошло событие в той, другой таблице?
Просто есть несколько таблиц с определёнными связями, и в одной из таблиц - довольно длинное вычисление, которое генерирует строки текста, основываясь на данных из этих таблиц. Потом эти строки вставляются ещё в другую таблицу. Вычисление срабатывает при добавлении, изменении, удалении или восстановлении записи в своей таблице. Однако если была отредактирована запись в одной из связанных таблиц и было изменено определённое поле - то нужно, чтобы то вычисление сработало по новой и сгенерировало новые строки с учётом изменений в связанной таблице. Сперва начал копировать код вычисления ещё в несколько таблиц, корректируя немного под них, а сейчас подумал - может можно не копировать его, а как-то "дёргать" из других вычислений, передавая $ID той строки, над которой нужно, чтобы оно отработало?
#22516 Вывод полей из других таблиц
Отправлено от OlegSmirnov в 17 Март 2014 - 13:17 in Как это сделать
Есть такой код в вычислении:
$dealId = (int) $line['Сделка']['ID']; $res = data_select(271, "`f3701` = ", $dealId, " AND `status` = ", 0);По идее он должен бы выбрать только активные записи (AND `status` = 0), однако в выборку почему-то попадают все строки.
И ещё - есть возможность повесить вычисление на удаление строки, но не вижу возможности как-то обрабатывать восстановление записи из удалённых обратно в активные.
#22511 Вывод полей из других таблиц
Отправлено от OlegSmirnov в 17 Март 2014 - 12:14 in Как это сделать
Но если потом отредактируют таблицу-источник и телефон там поменяется? Получается, это вычисление нужно привязывать к отображению поля и при каждом просмотре таблицы будет заново отрабатывать UPDATE-запрос?
#22520 Вывод полей из других таблиц
Отправлено от OlegSmirnov в 17 Март 2014 - 14:31 in Как это сделать
Остаётся второй вопрос. Если записи восстанавливаются из удалённых обратно в активные - как можно обработать это событие?
#22508 Вывод полей из других таблиц
Отправлено от OlegSmirnov в 17 Март 2014 - 11:59 in Как это сделать
#22752 Доп. действие во всплывающем окне
Отправлено от OlegSmirnov в 31 Март 2014 - 08:36 in Как это сделать
CbCoder (27 Март 2014 - 08:32) писал:
#22757 Доп. действие во всплывающем окне
Отправлено от OlegSmirnov в 31 Март 2014 - 10:29 in Как это сделать
if(isset($_POST['mytext'])) { echo htmlspecialchars($_POST['mytext']); } echo ' <form name="testform" method="post"> Текст: <input type="text" name="mytext" value="" /> <input type="submit" value="Отправить" /> </form>';Но когда я над таблицей выбираю это доп.действие - уходит на сервер запрос и просто перезагружается текущая таблица, никакая форма не отображается. Как мне нужно написать вычисление, или что я ещё пропустил?
#22687 Доп. действие во всплывающем окне
Отправлено от OlegSmirnov в 26 Март 2014 - 18:25 in Как это сделать
Цитата
#22654 Доп. действие во всплывающем окне
Отправлено от OlegSmirnov в 26 Март 2014 - 03:46 in Как это сделать
Интересует вопрос, как можно в режиме таблицы выбрать несколько строк, после чего при нажатии на кнопку - откроется некая форма, а далее выполнятся некие вычисления для этих выбранных строк с учётом данных из заполненной формы? Я так понял, что это можно сделать с помощью доп. действия, выполняющегося во всплывающем окне. Вот в документации написано:
Цитата
"Принять" (код которой мы опишем ниже) во всех строках выделенные галочками
поле "Принято" менялось свое значение на "Да", а в поле "Дата выполнения"
проставлялись текущие дата и время. Также в поле "Оценка" должно подставляться
значение из всплывающего окна.
В этом случае "Тип доп. действия" ставим "Во всплывающем окне" и пишем следующий код:
Однако, когда я ставлю "во всплывающем окне" - кнопки над таблицей для этого действия нету и применить его для всех строк, выделенных галочками не получается.
#22657 Доп. действие во всплывающем окне
Отправлено от OlegSmirnov в 26 Март 2014 - 10:52 in Как это сделать
CbCoder (26 Март 2014 - 08:39) писал:
#23275 Собственные функции на php
Отправлено от OlegSmirnov в 28 Апрель 2014 - 16:55 in Как это сделать
В файле functions_custom.php допустил синтаксическую ошибку по невнимательности, поспешил и точку с запятой поставил где не надо. Теперь на любой странице вижу только сообщение
Цитата
#23277 Собственные функции на php
Отправлено от OlegSmirnov в 28 Апрель 2014 - 17:05 in Как это сделать
#23280 Собственные функции на php
Отправлено от OlegSmirnov в 28 Апрель 2014 - 23:19 in Как это сделать
#23278 Собственные функции на php
Отправлено от OlegSmirnov в 28 Апрель 2014 - 17:18 in Как это сделать
#22533 срабатывание вычисления после UPDATE
Отправлено от OlegSmirnov в 17 Март 2014 - 23:44 in Как это сделать
Получилась вот такая функция:
function run_update_event($table_id, $line_id, $field_id, $new_data) { $table = get_table($table_id); $table_fields = get_table_fields($table); $event = array( 'type' => 'update_query', 'table_id' => $table_id, 'line_id' => $line_id, 'changed' => array( $field_id => array( 'field_id' => $field_id, 'int_name' => 'f' . $field_id, 'old' => '', 'new' => $new_data ) ) ); $sqlQuery = "SELECT * FROM `" . DATA_TABLE . $table_id . "` WHERE `id` = {$line_id}"; $res = sql_query($sqlQuery); if($res and mysql_num_rows($res)) { $line = mysql_fetch_array($res); popup_event($table, $line, $event); } }
Аргументы функции:
$table_id - это числовой id таблицы, с которой связано вычисление, которое нужно запустить. Это число можно узнать, например, открыв в браузере эту таблицу и посмотрев в строку адреса текущей страницы.
$line_id - это id той строки в таблице, для которой нужно запустить вычисление. Т.е. как будто строка с этим id была отредактирована.
$field_id - это числовой id столбца, для которого нужно запустить вычисление. Т.е. как будто поле с этим id (в строке $line_id таблицы $table_id) было отредактировано. Это id можно узнать, открыв в браузере нужную таблицу и щёлкнув на сортировку таблицы по интересуещему нас полю, после чего этот id также буден виден в адресной строке браузера (это значение переменной sort_by). Здесь нужно указать id того поля, к изменению которого привязан запуск вычисления.
$new_data - это новые данные, которые записаны в поле после его редактирования. Поскольку эта функция может быть полезна скорее в ситуации, когда данные в поле реально не менялись, но нужно запустить вычисление, как будто они поменялись - то в качестве $new_data я указываю текущее значение поля.
Вот подумал, что кому-то ещё может когда-нибудь пригодится такая функция и решил опубликовать свой вариант.
#22531 срабатывание вычисления после UPDATE
Отправлено от OlegSmirnov в 17 Март 2014 - 17:11 in Как это сделать
#22617 Атоматическое заполнение полей
Отправлено от OlegSmirnov в 22 Март 2014 - 07:56 in Как это сделать
- Форум CRM программы Клиентская база
- → Публикации OlegSmirnov