if (isset($_REQUEST['jober'])) { $line['Телефон']=$_REQUEST['jober']; //Тест на случай не вставки данных $line['Выполнил']=$_REQUEST['jober']; echo "<script>"; echo "window.opener.location.reload(1);"; // Перезагружаем родительское окно echo "window.close()"; // Закрываем текущее echo "</script>"; } //Выбираем всех сотрудников $sqlQuery = "SELECT * FROM ".DATA_TABLE."4";// $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR); echo "<form method='get'>"; echo "Выполнил:"; echo "n<input type='hidden' name='id' value='$button_id'>"; // Передаем значение кнопки echo "<input type='hidden' name='line_id' value=$ID>"; // Значение строки echo "<SELECT name='jober'>"; while ($row = mysql_fetch_array($result)) echo "<OPTION VALUE='".$row['f26']."'>".$row['f26']."</OPTION>"; echo "</SELECT>"; echo "<input type='submit' value='Выполнить'>"; echo "</form>";
Добавление записи через вычисление
#21
Отправлено 24 Август 2012 - 13:53
#22
Отправлено 25 Август 2012 - 13:23
#23
Отправлено 28 Август 2012 - 08:44
#24
Отправлено 28 Август 2012 - 11:30
#25
Отправлено 29 Август 2012 - 13:55
Сообщение отредактировал Aleksey: 29 Август 2012 - 13:56
#26
Отправлено 24 Сентябрь 2012 - 02:39
Приведите, пожалуйста, пример функции update_query с выбором массива (стороки).
Если есть функция delete_query, тоже прошу пример с выбором массива (стороки).
#27 Гость_Roman_*
Отправлено 24 Сентябрь 2012 - 09:08
$updated['Компания'] = "Восток"; $updated['Дата'] = date("Y-m-d H:i:s"); // Обновит поля "Компания" и "Дата" в таблице "Контрагенты" для строки с id=8. update_query($updated, "Контрагенты", "`id`=8");
// Удаление строки из таблицы "Контрагенты" с id=8 delete_query("Контрагенты", "`id`=8");
Массив во втором случае не используется.
#28
Отправлено 26 Сентябрь 2012 - 13:19
Т.е. значение не выбирается из списка связи, а присваивается при вычислении и поле связывается с соответствующей записью из таблицы связи.
Применять буду при создании/редактировании записи в другой таблицы (insert_query и select_ query).
Пробовал различные варианты, результата нет.
Какое должно быть вычисление?
1. Вариант - Если я знаю выбираемое значение.
2. Вариант - Если я знаю значение ID соответствующей записи (ну, или значение другова поля).
#29
Отправлено 26 Сентябрь 2012 - 14:37
2. Заноситься должен id связанной записи, т.к. в БД хранятся именно они.
#30
Отправлено 03 Октябрь 2012 - 22:11
Задача - необходимо сделать журнал отгрузок. (чтобы отображался под карточкой клиента так же как таблица "работа с клиентом" в базовой конфигурации).
Журнал заполняется автоматически при выполнении допдействия "отгрузили партию" в таблице "Заказы" (связь с таблицей "Контрагенты" по полю "название").
Метод решения который использовался:
1. Создал таблицу "Журнал отгрузок" с необходимым набором полей - связь с таблицей "контрагенты" по полю "Рабочее название", с таблицей "Заказы" по полю "Название".
2. Добавил допдействие в таблицу "Заказы" со следующим кодом:
$line['Отгружено'] = $line['Отгружено'] + $line['Отгружать по']; $line['История отгрузок'] = "\n" . date ("Y-m-d H:i:s") . " Отправлено " . $line['Отгружать по'] . " тонн " . "\n" . $line['История отгрузок']; $data['Компания'] = $ID; $data['Дата отгрузки'] = date ("Y-m-d H:i:s"); $data['Тип товара'] = $line['Товар']; $data['Водитель'] = $line['Водитель']; $data['Объем'] = $line['Отгружать по']; insert_query($data,"Журнал отгрузок");
Где начало кода - это заполнение лога отгрузок (конкретно под этот заказ и в поле в таблице "Заказы"), а вторая часть посвящена заполнению глобального журнала отгрузок клиента (по разным заказам).
Что для чего делал - связь с таблицей заказы делал чтобы заполнялось поле "Компания" при выполнение допдействия. Связь с таблицей "контрагенты" по полю "рабочее название" делал для того чтобы в карточке клиента снизу таблицу "журнал отгрузок" было видно. Однако поле "рабочее название" я заполнить не могу (вернее не знаю как), соответственно таблица отображается но в ней пусто (т.к. там фильтр по полю "рабочее название" автоматом стоит). В саму таблицу все добавляется. Как убрать/редактировать фильтр в этом отображении я не нашел..
Подскажите пожалуйста как задачу эту решить.
Может можно все проще сделать, без нескольких полей связи.
#31
Отправлено 07 Октябрь 2012 - 02:55
Хочу использовать insert_query, update_query и delete_query,
1. т.к.
- автоматически заполняются служебные поля и значения по умолчанию,
- автоматом запускаются и имеющиеся вычисления в таблице (при изменении полей)
- и функция insert_query возвращает id добавленной записи, который можно записать в переменную и затем использовать в последующей обработке.
2. Но мне необходимо работать с внутренними именами полей типа "f235" и внутренними именами таблиц типа 89, т.к. заносится они будут через переменные (при разных условиях, разные таблицы и разные поля).
Пример:
$fld_1_id = "`f".$line['Поле']['ID Поля1']."`"; В связанной таблице уже есть id полей таблиц в виде 221
$fld_2_id = "`f".$line['Поле']['ID Поля2']."`";
$fld_3_id = "`f".$line['Поле']['ID Поля3']."`";
$tbl_id = $line['Поле']['ID Таблицы'];
Далее необходимо вставит запись
в таблицу с id равным $tbl_id где id поля равное:
$fld_1_id присвоит ТЕКСТ (переменную типа текс)
$fld_2_id присвоит 123 (переменную типа число)
$fld_3_id присвоит 01.01.2012 (переменную типа дату)
при вставки необходимо, чтобы выполнялись условия п.1. (автоматическое заполнение системных и по умолчанию полей, возврат id новой записи, НО ГЛАВНОЕ запуск вычислений)
Можно ли это сделать через insert_query? И как?
Если нет, то как при использовании data_insert (которая удовлетворяет п.2) выполнить условия п.1 (ГЛАВНОЕ запуск вычислений)?
Или как ещё выполнить условия п.1 и п.2 ?
Если можно, то ответ прошу с примером.
Заранее БЛАГОДАРЮ за ответ.
P.S. Внешние имена таблиц и полей не могу использовать, т.к. для удобства работы пользователей в КБ, имена таблиц и полей могут меняться в процессе использования КБ, а поля в разных таблицах называются по-разному (хотя суть одна дебет-кредит, но называются: приход-расход, выполнение-оплата, доход-затраты и т.д. и т.п., ). Т.е. одна запись в таблице журнал-проводок создает записи-аналоги в разных таблицах аналитического учета (в зависимости от того какие счета бух учёта участвуют в проводке).
А проводки (записи в журнале-проводок) создаются при формировании документов, но тут нормально работает _query в описанном уже варианте использования.
Сообщение отредактировал Дмитрий ЕСП: 07 Октябрь 2012 - 23:25
#32
Отправлено 08 Октябрь 2012 - 09:14
data_insert, в отличие от insert_query - всего лишь обертка стандартного insert-запроса, поэтому ничего кроме собственно выполнения запроса, он не делает. Его главное преимущество - быстрота выполнения.
#33
Отправлено 08 Октябрь 2012 - 10:00
Цитата
#35
Отправлено 08 Октябрь 2012 - 10:27
$fld_1_id = "`f".$line['Поле']['ID Поля1']."`"; В связанной таблице уже есть id полей таблиц в виде 221
$fld_2_id = "`f".$line['Поле']['ID Поля2']."`";
$fld_3_id = "`f".$line['Поле']['ID Поля3']."`";
$tbl_id = $line['Поле']['ID Таблицы'];
$data[$fld_1_id] = "Петр";
$data[$fld_2_id] = "Иванов";
$data[$fld_3_id] = "Васильевич";
insert_query($data,$tbl_id);
Как правильно?
Т.е. мне в массиве надо прописать не внешние имена поле, а внутренние имена полей (указав их чрез переменные). А в функции прописать не внешнее имя таблицы, а внутреннее (указав через переменную).
Спасибо.
Сообщение отредактировал Дмитрий ЕСП: 08 Октябрь 2012 - 11:04
#36
Отправлено 08 Октябрь 2012 - 11:12
$fld_1_id = $line['Поле']['ID Поля1']; $fld_2_id = $line['Поле']['ID Поля2']; $fld_3_id = $line['Поле']['ID Поля3']; $tbl_id = $line['Поле']['ID Таблицы']; $result = sql_select(FIELDS_TABLE, "`id`=",$fld_1_id); $row = mysql_fetch_assoc($result); $fld_1_name = $row['name_field']; $result = sql_select(FIELDS_TABLE, "`id`=",$fld_2_id); $row = mysql_fetch_assoc($result); $fld_2_name = $row['name_field']; $result = sql_select(FIELDS_TABLE, "`id`=",$fld_2_id); $row = mysql_fetch_assoc($result); $fld_2_name = $row['name_field']; $result = sql_select(TABLES_TABLE, "`id`=",$tbl_id); $row = mysql_fetch_assoc($result); $tbl_name = $row['name_table']; $data[$fld_1_name] = "Петр"; $data[$fld_2_name] = "Иванов"; $data[$fld_2_name] = "Васильевич"; insert_query($data, $tbl_name);
#37
Отправлено 08 Октябрь 2012 - 11:46
Вы правы, никто не мешает. Вот только знание предмета пока весьма ограничено. Хотя для этой модели знания уже были мною получены на форуме, но в этом случае навыка не хватило, чтобы ими распорядиться.
Хорошо, что программисты КБ есть!
Спасибо Вам от накапливающего знания и развивающего навыки.
Сообщение отредактировал Дмитрий ЕСП: 08 Октябрь 2012 - 11:49
#38
Отправлено 08 Октябрь 2012 - 21:19
Если что-то не так, то скажите пожалуйста.
#39
Отправлено 09 Октябрь 2012 - 09:18
zizitopa (08 Октябрь 2012 - 21:19) писал:
По вопросу. Проблема в том, что непонятно как заполнить поле связи с Контрагентом в таблице "Журнал отгрузок" из таблицы Заказы? Назовите поле связи с контрагентом и там и там (в Заказах и в Журнале), я вам напишу код с комментарием.
Еще вот этот момент меня смутил:
$data['Компания'] = $ID;"Компания" - это поле связи? тогда с чем? Судя по заполнению из ID - это связь с Заказом, но тогда странное имя у поля - "Компания", тогда как логичнее назвать его "Заказ". Если же это связь с контрагентом - то оно неверно заполняется.
#40
Отправлено 09 Октябрь 2012 - 14:18
CbCoder (09 Октябрь 2012 - 09:18) писал:
По вопросу. Проблема в том, что непонятно как заполнить поле связи с Контрагентом в таблице "Журнал отгрузок" из таблицы Заказы? Назовите поле связи с контрагентом и там и там (в Заказах и в Журнале), я вам напишу код с комментарием.
Еще вот этот момент меня смутил:
$data['Компания'] = $ID;"Компания" - это поле связи? тогда с чем? Судя по заполнению из ID - это связь с Заказом, но тогда странное имя у поля - "Компания", тогда как логичнее назвать его "Заказ". Если же это связь с контрагентом - то оно неверно заполняется.
Компания - это поле связи между таблицами "Журнал отгрузок" и заказы. Делалось так исходя из того что по каждой компании может быть несколько заказов по различным типам товаров.
В таблице заказы есть поле "Заказчик" (именно с этим полем связано поле "Компания" о котором речь шла чуть выше) оно является полем связи с таблицей "Контрагенты" (привязано к полю "название").
Тот код, который я набрал, корректно заполняет таблицу "Журнал отгрузок", проблема в том что при таком заполнении этот журнал не отображается под карточкой компании (как, например, отображаются таблицы "работа с клиентами" и "сотрудники" в базовой версии клиентской базы).
Вычисление забито в допдействие к таблице "Заказы". При нажатии кнопки "произведена отгрузка партии" в журнал отгрузок должна по этой компании внестись запись по какому заказу сколько и чего отгрузили (это чтобы было понятно для чего делаем). Заказов на одну компанию может быть несколько.
p.s. дальше свои рассуждения, не факт что полезные.
Я так понимаю проблема в том что поле связи "Компания" связывает таблицы "Журнал отгрузок" и "Заказы". Если все оставить так как написано, то эта таблица будет отображаться при просмотре записи в таблице "Заказы".
Добавлял я новое поле связи (пытался решить кустарно) - добавил поле связи "Рабочее название" в таблицу Журнал отгрузок (связывает с таблицей контрагенты). После этого таблица стала отображаться при просмотре карточки компании в таблице Контрагенты, но там не отображаются элементы таблицы (пустая), т.к. стоит фильтрация поле "Рабочее название" = название компании которую просматриваем, а заполнить поле "Рабочее название" я не знаю как (оно должно совпадать с полем "Компания")
Решиться должно либо если заполнить поле "Рабочее название", либо если отредактировать фильтрацию при отображении таблицы (фильтрацию перевести на поле связи "Компания"). вот. Спасибо за помощь.
Количество пользователей, читающих эту тему: 21
0 пользователей, 21 гостей, 0 анонимных