партнер компании 1с-битрикс
сайт фрилансера Сергея Эстрина
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Простой адаптивный форум - модуль для битрикс
Это форум по решению для битрикс «Модуль Свойства-таблицы».
Страницы: 1
Ответить
RSS
Фильтр по дате, выбор храненией свойств, api функции: дозаписать новые значение , обновить, удалитить строку
 
1. Я так понимаю что лучше Значения свойств хранить в отдельной таблице , потому что если у каждого элемента будет таблица а в ней более10000 строк то общая таблица b_iblock_element_property вырастет в разы , так как каждая строка в b_iblock_element_property это есть строка в таблице(свойство) привязонного к элементу. Или это не принципиально?

2. Где можно посмотреть api функции: дозаписать новые значение , обновить, удалитить строку

3.Будут поля у таблиц: Дата, Урок (Н-Р: 10.01.12 Математика; 12.01.12 Русский язык; 20.01.12 Математика; 5.06.10 Физ-ра)
Сотвественно таблица привязана к элементу. Нужен фильтр вывести все элементы у которых дата за 30 дней. сегодня 5.01.12.
Возможно ли это сделать?

4.Есть такой компонент grain:table.edit - редактирвание таблицы, как я могу сохранить отредактируемые данные? где кнопка сохранить?
 
В догонку еще можно ли фильтровать по столбцу по диапозану например в таблице есть столбец Количество и нужно вывести элементы где количество в диапазоне от 1 до 30 ?
 
Цитата
1. Я так понимаю что лучше Значения свойств хранить в отдельной таблице , потому что если у каждого элемента будет таблица а в ней более10000 строк то общая таблица b_iblock_element_property вырастет в разы , так как каждая строка в b_iblock_element_property это есть строка в таблице(свойство) привязонного к элементу. Или это не принципиально?
здесь все точно так же как и с обычными свойствами, т.е. вырастет одинаково примерно, будут ли у вас свойства-таблицы или обычные множественные свойства.

Цитата
2. Где можно посмотреть api функции: дозаписать новые значение , обновить, удалитить строку
Что касается добавления/обновления, этот вопрос обсуждался здесь http://g-rain-design.ru/forum/forum7/topic19/. Удаление - также в соответствии с правилами для стандартных множественных свойств.

Цитата
3.Будут поля у таблиц: Дата, Урок (Н-Р: 10.01.12 Математика; 12.01.12 Русский язык; 20.01.12 Математика; 5.06.10 Физ-ра)
Сотвественно таблица привязана к элементу. Нужен фильтр вывести все элементы у которых дата за 30 дней. сегодня 5.01.12.
Возможно ли это сделать?
вы можете только использовать "LOGIC" => "OR" и 30 вариантов для каждого дня месяца. Тип "Дата" идет обычным строковым значением, и вся строка таблицы сериализуется при сохранении, поэтому использовать условия типа больше/меньше не получиться для отдельных ячеек.

Цитата
4.Есть такой компонент grain:table.edit - редактирвание таблицы, как я могу сохранить отредактируемые данные? где кнопка сохранить?
Есть такой компонент grain:table.edit - редактирвание таблицы, как я могу сохранить отредактируемые данные? где кнопка сохранить?

Цитата
В догонку еще можно ли фильтровать по столбцу по диапозану например в таблице есть столбец Количество и нужно вывести элементы где количество в диапазоне от 1 до 30 ?
Только так же как и в случае с датой - использовать 30 вариантов и "LOGIC" => "OR".
 
Насчет фильтраци и даты, В колонки даты будет 12.01.2014 12:52 Нужно фильтровать только по 12.01.2014 как написать фильтрацию, а то что тоне получается(
 
Цитата
Гость пишет:
Насчет фильтраци и даты, В колонки даты будет 12.01.2014 12:52Нужно фильтровать только по 12.01.2014 как написать фильтрацию, а то что тоне получается(
Гость, попробуйте поставить знак процента после значения в параметре функции GPropertyTable::GetColumnFilter:

Код

if (CModule::IncludeModule("iblock") && CModule::IncludeModule("grain.tables")) {


   
$rsElements CIBlockElement::GetList(
      Array(
"SORT"=>"ASC","NAME"=>"ASC"),
      Array(
         
"IBLOCK_ID"=>3,
         
"ACTIVE"=>"Y",
         
"PROPERTY_worktime" => GPropertyTable::GetColumnFilter("12.01.2014"."%","Пн-Пт")
      ),
      
false,
      
false,
      Array(
"ID","NAME")
   );

   while(
$arElement=$rsElements->GetNext()) {
      echo 
"<pre>"print_r($arElement); echo "</pre>";
   }

}
 
Здравствуйте, как отфильтровать по дате, мне нужно получить все элементы за сутки? Если в БД лежит дата со временем, например "20.04.2015 23:02:00". Если в фильтре указывать так "20.04.2015" то он не найдет т.к. ищет точную строку.
Код

"PROPERTY_DEALS"=> GPropertyTable::GetColumnFilter2("DATE" $date),

 
Александр, здравствуйте!

Цитата
Александр написал:
Если в БД лежит дата со временем, например "20.04.2015 23:02:00". Если в фильтре указывать так "20.04.2015" то он не найдет т.к. ищет точную строку.

См. пример 2 в описании функции GPropertyTable::GetColumnFilter. Используйте третий параметр, в котором необходимо указать идентификаторы всех столбцов по порядку.

Код

"PROPERTY_DEALS" => GPropertyTable::GetColumnFilter("DATE","20.04.2015%",Array("DATE","OTHER_COL")),

 
Спасибо, заработало!
 
Возможно ли осуществить сортировку >= =< для поля даты?
 
Цитата
Алексей написал:
Возможно ли осуществить сортировку >= =< для поля даты?
Алексей, если речь действительно про сортировку, а не фильтрацию, то дата хранится в среди прочих полей в сериализованной виде в базе, поэтому теоретически можно, НО только если:
  1. Вы поставите дату первым столбцом (и пересохраните все добавленные элементы, т.к. порядок столбцов в сериализованном массиве в базе не поменяется только от того, что вы поменяете сортировку столбцов в настройках свойства)
  2. Сделаете каким-то образом формат даты YYYY--MM--DD (если не менять формат даты для всей административной части, то это можно сделать в шаблоне grain:table.edit, который можно скопировать, исправить и указать его шаблон в настройках свойства)
Если же вы имеете в виду фильтрацию (или какую-то сложную сортировку), то второй вариант - это копировать ваше поле с датой в отдельное свойство типа Дата/Время по событиям OnBeforeIBlockElementAdd, OnBeforeIBlockElementUpdate (либо OnAfterIBlockElementAdd, OnAfterIBlockElementUpdate). Данное свойство будет предназначено только для фильтрации/сортировки и его можно будет исключить из формы при помощи снтия галочки в настройках свойства "Показывать на странице редактирования элемента". Зато можно будет использовать все преимущества фильтрации по дате и сохранить удобство интерфейса.
Страницы: 1
Ответить
Читают тему (гостей: 1)
Форма ответов
Текст сообщения*
Загрузить файл или картинкуПеретащить с помощью Drag'n'drop
Перетащите файлы
Ничего не найдено
Загрузить картинки
Отправить Отменить
 
Главная   ·   Модули для 1С-Битрикс   ·   Типовые услуги   ·   Форум   ·   Блог   ·   Контакты
Рейтинг@Mail.ru