партнер компании 1с-битрикс
сайт фрилансера Сергея Эстрина
Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Простой адаптивный форум - модуль для битрикс
Страницы: 1
Ответить
RSS
grain:table.view Обновление идентификатора колонки таблицы, Сам обновляется идентификатор колонки таблицы.
 
При изменении таблицы - свойства grain:table сам обновляется идентификатор колнки таблицы.
Например. Создаем свойство-таблицу со столбцами description и value:

description: Описание
value: Значение

В следующий раз при входе в редактор - самопросизвольно меняются идентификаторы столбцов на:
descriptionuvak
valuemitc

Еще раз зайдем - еще раз поменяются. Как это исправить?
 
  • Добавлена автоматическая генерация дополнительных символов в идентификаторах столбцов, если они имеют значение VALUE или DESCRIPTION, для предотвращения ошибок сохранения - я так понимаю, это вот об этом речь.
 


как это убрать?
 
Гость, убрать никак.

А можно нескромный вопрос :) - зачем это убирать?

Это связано с тем, что если значение является массивом, и есть ключ VALUE в этом массиве, то битрикс возьмет значение при сохранении из ключа VALUE, а не сам массив. Поэтому вы получите только ошибку, если такой ключ будет существовать. Поэтому я и сделал добавление символов в конец идентификатора, если он VALUE или DESCRIPTION (для DESCRIPTION скорее просто на всякий случай, чем есть в этом реальная необходимость, т.к. в нем может передаваться описание к значению).
 
Тут все просто, жил сайт - база на 4 000 позиций элементов и их доп характеристик. В один прекрасный день (сегодня) надо было добавить еще одно значение в поле выбора. При этом (года назад где-то) запустили сайт и поля обозвали не иначе как - description и value. И все отображалось и работало пока я не залез добавить еще одно значение. Value и Description обновились. В результате стало невозможно отредактировать старые записи.
В результате я Ваш код несколько модифицировал. И теперь все ок. Я отдаю себе отчет в том, что это UID своего рода. Где я это исправил - Вы и сами знаете. сюда не выложу, без разрешения - не волнуйтесь.
 
Гость, да я не волнуюсь, выкладываю где править, если кому-то еще это понадобится :)

Правки в строке 169 файла /bitrix/modules/grain.tables/include.php:
Код
if(in_array(strtoupper(trim($v["NAME"])),Array("VALUE","DESCRIPTION"))) 
   $v["NAME"] .= RandString(4,"abcdefghijklnmopqrstuvwxyz"); 
нужно заменить на
Код
if(in_array(trim($v["NAME"]),Array("VALUE","DESCRIPTION"))) 
   $v["NAME"] .= RandString(4,"abcdefghijklnmopqrstuvwxyz");  
т.е. убрать strtoupper.

Я просто думал что так вообще у вас ничего работать не будет, и долго не мог понять как вообще у вас это работало, но потом сообразил: у вас идентификатор в нижнем регистре - value, а проблема только если ввести идентификатор в верхнем регистре - VALUE. А я сгоряча запретил и value и VALUE :)
Страницы: 1
Ответить
Читают тему (гостей: 1)
Форма ответов
Текст сообщения*
Ничего не найдено
Загрузить картинки
Отправить Отменить
 
Главная   ·   Модули для 1С-Битрикс   ·   Типовые услуги   ·   Форум   ·   Блог   ·   Контакты
Рейтинг@Mail.ru