Перейти к содержимому


Назначение get_control()


Сообщений в теме: 5

#1 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 22 Октябрь 2012 - 14:39

Для чего необходима функция get_control(). Какие возможные аргументы она может принимать?

#2 Гость_Roman_*

  • Гости

Отправлено 23 Октябрь 2012 - 07:42

Эта функция необходима для генерации динамических полей. Например, в позициях счёта можно выбрать товар из прайса (поле связи), либо же ввести вручную (текстовое поле). Для такого поля должна стоять галочка "отображать HTML и убраны права на редактирование и запись. Также в таблице должны находится целевые права (в примере - поле связи с прайс-листом и текстовое поле ввода).
Аргументы get_control($field, $line, $value)
$field - массив с информацией о поле. Фактически выборка из таблицы fields (SELECT * FROM `".FIELDS_TABLE."` WHERE `id`=555);
$line - соответственно массив данных строки;
$value - необязательный аргумент, значение по умолчанию.

#3 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 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['Описание'] = '';
}

Прикрепленные изображения

  • Прикрепленное изображение: prixod.jpg
  • Прикрепленное изображение: nokenklatura.jpg


#4 Гость_Roman_*

  • Гости

Отправлено 23 Октябрь 2012 - 13:49

Во второй части кода, отвечающей за ручной ввод, у Вас поле "Описание" обнуляется, соответсвенно при обновлении страницы в поле с наименованием будет пустое значение. В случае ввода с номенклатуры, т.е. из поля связи, вроде всё корректно и проблем быть не должно. Если же всё-таки и в этом случае поле обнуляется, проверьте имена полей в $line, а также идёт ли запись в целевое поле через phpmyadmin, или выставив права на просмотр записи, просмотрите целевое поле.

#5 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 23 Октябрь 2012 - 14:02

Проверю. Отпишусь. А почему же в демонстрационной базе поле описание не обнуляется?

#6 Гость_Roman_*

  • Гости

Отправлено 23 Октябрь 2012 - 14:25

Там эта строчка закомментирована. Тем более обнуляется она при условии что стоит типе "прайс-лист", соответственно обнуление поля с номенклатурой происходит при типе "Ввод". В Вашем же случае обнуление "Описания" происходит при соответсвующем выборе, насколько я понял.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных