Для чего необходима функция get_control(). Какие возможные аргументы она может принимать?
Назначение get_control()
Автор wondertalik, 22 окт. 2012 14:39
Сообщений в теме: 5
#1
Отправлено 22 Октябрь 2012 - 14:39
#2 Гость_Roman_*
Отправлено 23 Октябрь 2012 - 07:42
Эта функция необходима для генерации динамических полей. Например, в позициях счёта можно выбрать товар из прайса (поле связи), либо же ввести вручную (текстовое поле). Для такого поля должна стоять галочка "отображать HTML и убраны права на редактирование и запись. Также в таблице должны находится целевые права (в примере - поле связи с прайс-листом и текстовое поле ввода).
Аргументы get_control($field, $line, $value)
$field - массив с информацией о поле. Фактически выборка из таблицы fields (SELECT * FROM `".FIELDS_TABLE."` WHERE `id`=555);
$line - соответственно массив данных строки;
$value - необязательный аргумент, значение по умолчанию.
Аргументы get_control($field, $line, $value)
$field - массив с информацией о поле. Фактически выборка из таблицы fields (SELECT * FROM `".FIELDS_TABLE."` WHERE `id`=555);
$line - соответственно массив данных строки;
$value - необязательный аргумент, значение по умолчанию.
#3
Отправлено 23 Октябрь 2012 - 13:29
Roman (23 Октябрь 2012 - 07:42) писал:
Для такого поля должна стоять галочка "отображать HTML и убраны права на редактирование и запись.
Есть три таблицы - Акты прихода, подчиненная Позиции прихода и из справочников Номенклатура. Акты прихода связаны с Позицией прихода по полю "номер акта прихода". Позиции прихода с Номенклатурой по полю "позиция номенклатуры". Права на таблицы в прикрепленном файле. Записи в позиции прихода добавляются. Однако, если обновить таблицу поле наименование становится пустым.
Вычисление только одно, взятое из демонстр. базы (вычисляется при условии сохр в таблицу, изм. поля тип, отображения наименования).
if($line['Тип'] == "Номенклатура") {
$sqlQuery = "SELECT * FROM
`".FIELDS_TABLE."` WHERE `id`='107'"; $result = sql_query($sqlQuery) or
user_error(mysql_error()."
<br>
".$sqlQuery."
<br>
", E_USER_ERROR); $row = mysql_fetch_assoc($result);
$line['Наименование'] = get_control($row, $line, $line['Позиция номенклатуры']['Наименование']);
} else { $sqlQuery = "SELECT * FROM
`".FIELDS_TABLE."` WHERE `id`='108'"; $result = sql_query($sqlQuery) or
user_error(mysql_error()."
<br>
".$sqlQuery."
<br>
", E_USER_ERROR); $row = mysql_fetch_assoc($result);
$line['Наименование'] = get_control($row, $line, $line['Описание']);
$line['Описание'] = '';
}
#4 Гость_Roman_*
Отправлено 23 Октябрь 2012 - 13:49
Во второй части кода, отвечающей за ручной ввод, у Вас поле "Описание" обнуляется, соответсвенно при обновлении страницы в поле с наименованием будет пустое значение. В случае ввода с номенклатуры, т.е. из поля связи, вроде всё корректно и проблем быть не должно. Если же всё-таки и в этом случае поле обнуляется, проверьте имена полей в $line, а также идёт ли запись в целевое поле через phpmyadmin, или выставив права на просмотр записи, просмотрите целевое поле.
#5
Отправлено 23 Октябрь 2012 - 14:02
Проверю. Отпишусь. А почему же в демонстрационной базе поле описание не обнуляется?
#6 Гость_Roman_*
Отправлено 23 Октябрь 2012 - 14:25
Там эта строчка закомментирована. Тем более обнуляется она при условии что стоит типе "прайс-лист", соответственно обнуление поля с номенклатурой происходит при типе "Ввод". В Вашем же случае обнуление "Описания" происходит при соответсвующем выборе, насколько я понял.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных













