Что бы проверить изменилось ли поле документа в БП, который запускается при изменении используйте конструкцию Условие, тип условия PHP, туда вставьте код, приведённый ниже, где PROPERTY_STATUS код вашего поля
Однако если у вас есть доступ к консоли сервера, то есть прекрасная утилита mysqlcheck, которая всё сделает без всяких костылей, вот пример выполнение команды:
Артемий Резников написал: 2. Предложение добавить после выполнения оптимизации последней таблицы такой кодКодCOption::SetOptionInt("main", "LAST_DB_OPTIMIZATION_TIME", $OPT_ID);$OPT_ID - время начала оптимизации последней из таблиц.
Если вы хотите что бы оптимизация проходила регулярно сама, то замените код:
Andrey Kovalsky написал: BitrixVM 7.3.3Теперь пункт про php 5.6 неочевидно спрятали. Сначала выбираем 1. Manage hosts in the pool - 8. Upgrade php and mysql versions - 1. Rollback php to 7.0 version. Ждем пока откатится. Потом уже появится про php 5.6: 1. Manage hosts in the pool - 8. Upgrade php and mysql versions - 1. Rollback php to 5.6 version
Данный агент переберёт все таблицы и оптимизирует их, так как агенты будут на кроне время выполнения функции не будет помехой, там это ограничение снимается.
Вот используйте эту функцию, вставьте её в init.php:
Код
function cron_TableOptimizator($TABLE_NAME = false, $OPT_ID = false){
global $DB;
$arLocale = array(
'note' => 'Сообщение',
'status' => 'Статус операции'
);
if(!$OPT_ID&&!$TABLE_NAME){
$arTable = $DB->Query("SEL ECT table_name FR OM information_schema.tables WHERE table_schema = DATABASE() ORDER BY table_name ASC LIMIT 1")->Fetch();
$TABLE_NAME = $arTable['table_name'];
$OPT_ID = time();
}
else
$arTable = $DB->Query("SEL ECT table_name FR OM information_schema.tables WHERE table_schema = DATABASE() AND table_name = '$TABLE_NAME'")->Fetch();
$arLogP = array("SEVERITY" => "SECURITY","AUDIT_TYPE_ID" => "TABLE_OPTIMIZATOR","MODULE_ID" => "main","ITEM_ID" => $TABLE_NAME,);
if($arTable)
{
CEventLog::Add($arLogP+array("DESCRIPTION" => "Начало оптимизации таблицы",));
$rsResult = $DB->Query("optimize table `$TABLE_NAME`");
while($arRow = $rsResult->Fetch()){
CEventLog::Add($arLogP+array("DESCRIPTION" => $arLocale[$arRow['Msg_type']] . ': ' .$arRow['Msg_text'],));
}
$sQuery = "SELECT table_name, table_comment FR OM information_schema.tables
WHERE table_schema = DATABASE() AND table_name > '$TABLE_NAME'
ORDER BY table_name ASC
LIMIT 1";
$arTable = $DB->Query($sQuery)->Fetch();
$NEXT_TABLE_NAME = $arTable?$arTable['table_name']:false;
$DB->Query("ALT ER TABLE `$TABLE_NAME` COMMENT = '$OPT_ID'");
}else{
$sQuery = "SELECT table_name, table_comment FR OM information_schema.tables
WH ERE table_schema = DATABASE() AND table_comment <> '$OPT_ID'
ORDER BY table_name ASC
LIM IT 1";
$arTable = $DB->Query($sQuery)->Fetch();
$NEXT_TABLE_NAME = $arTable?$arTable['table_name']:false;
CEventLog::Add($arLogP+array("DESCRIPTION" => "Ошибка оптимизации, таблица не найдена переход к следующей таблице: $NEXT_TABLE_NAME",));
}
if(!$NEXT_TABLE_NAME)
return false;
return "cron_TableOptimizator('$NEXT_TABLE_NAME', $OPT_ID);";
}
После переведите все агенты на cron и создайте агента с функцией "cron_TableOptimizator();" если не дружите с ними, выполните этот скрипт в командной строке PHP:
Далее ждите, если у вас много больших таблиц, процесс будет долгим, отслеживать вы его можете по журналу событий в админке, с фильтром по событию "TABLE_OPTIMIZATOR":
В поле Объект - имя таблицы, в описании подробности действия.
GKTadmin написал: Либо создайте новую группу прав.. и разрешите просмотр всех задач... как у админа...
Если бы всё так было бы просто Модуль задач проверяет права админа конкретно функцией $USER->isAdmin() или по наличию пользователя в группе "Администраторы" с ID = 1
Артем Хлебус написал: Делал, не помогает. В выборе оно все-равно есть, хотя при сохранении и ругается, но это не то. Зачем в выборе появляется лишнее поле?
Можно конечно заморочиться и сделать свой тип пользовательского поля, но я предложу более простое решение.
В шаблон компонента, после формы, вставьте следующий код, заменив {ИМЯПОЛЯ} на имя поля в котором требуется убрать пустое значение.
Код
<sc ript>
var select = document.getElementsByName('{ИМЯПОЛЯ}');
select[0].remove(0);
</sc ript>
Александр Кочетков написал: Юрий, а почему Вы не попробуете? В этой теме я рассчитывал обратить внимание разработчика коммерческого продукта на то, что в этом самом продукте есть ошибки уже на этапе установки. Несомненно, если бы это был опенсорс, можно было бы порассуждать о том, как обойти досадную проблему. А так я пока вижу, что за 200тыр., доблестный 1с продаёт подводную лодку и без напильника и даже инструкции, где пилить.
Во-первых, я вам не хамил, а попытался помочь. Во-вторых, вы в праве выбирать продукт который вы покупаете, никто не обязывает пользоваться Битриксом. А если всё же вы решили им пользоваться, то нужно следовать рекомендациям разработчика по установке и настройке ПО.
Добрый день. По идее директория хранения всех загруженным файлов /upload/ Проверьте этот параметр главного модуля: "Папка по умолчанию для загрузки файлов"
Артем Хлебус написал: Так и не удалось разобраться. Пофиксил bizproc.wizards.task (удалось заставить работать без sessid) и только потом понял, что ссылку на задание дать не получится, т.к. сперва улетает почтовое сообщение и только потом генерится задание, поэтому ссылку если и давать то только на общий список того или иного БП. Спасибо.
Можно ли в 1С-Битрикс Корпоративний портал(коробочная версия) выгружать задачи(подзадачи) в ексель вместе с коментариями?, Можно ли в 1С-Битрикс Корпоративний портал(коробочная версия) выгружать задачи(подзадачи) в ексель вместе с коментариями?
Попробуйте в bizproc.task поискать, но скорее всего нужно будет пройтись по нескольким компонентам bizproc. А в чём необходимость убрать сессию, если не секрет?