Изменение режима компактности форм ТАКСИ




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2018-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

42 Comments

  1. wtlz

    ЗАЧЕТ! Может разработчики и сами в настройки добавят?

    Reply
  2. Yashazz

    Ёлы-палы, вот смотрю и офигеваю, сколько изврата приходится преодолевать нам, разработчикам, из-за того, что вместо нормальной адекватной идеологии обычного интерфейса 1С изобрела и агрессивно пропихивает этот «управляемый» маразм… И всё равно ведь придут к тому же, ибо оно людям было удобно и привычно.

    Reply
  3. ivanov660

    Жду, когда 1С наконец перейдет на chromium.

    Reply
  4. TrinitronOTV

    (3) ivanov660, и что это нам даст?

    Reply
  5. makas

    Это полезная обработка +

    Reply
  6. BigB

    Как сделать, чтобы изменения интерфейса вступали сразу, а не после перезапуска конфигурации?

    Reply
  7. gorevg

    Что-то не заметил изменений. Тестировал на Бухгалтерия предприятия, редакция 3.0 (3.0.33.19), платформа 1С:Предприятие 8.3 (8.3.4.482)

    Reply
  8. IamAlexy

    (7) gorevg,

    А для кого написано «начиная с релиза 3.0.34»?

    В 33тьем 1С во все формы вкорячило принудительно режим компактности «Обычный» что по сути отключает возможность использования этой настройки… вот «обычный» и все.. никаких вариантов.

    По этому и написано черным по белому — начиная с релиза 34го… где 1С свою оплошность исправила.

    Reply
  9. ediks

    Скорее всего, начиная с 34 релиза в свойствах конфигурации был изменен режим совместимости интерфейса с «Версия 8.2» на «Такси. Разрешить Версия 8.2». Поэтому у формы появилось свойство «Вариант масштаба». Ну и возможность изменять масштаб, за что автору, заметившему эту фичу, благодарность.

    Reply
  10. Max.Potapov

    Очень надеюсь, что возможность переключение режимов сделают прямо в клиенте.

    Reply
  11. IamAlexy

    (9) такси с 33тьего же вообще появилось.

    просто в 33тьем релизе у всех форм стоял режим компактности «Обычный» — просто руками выставили. не «Авто» а именно «Обычный». По этому обработка на 33тьем не работает.

    В 34ом этот косяк исправили и у всех форм стоит «Авто». Соответсвенно теперь можно обработкой задавать режим компактности сразу для всей базы.

    Reply
  12. ediks

    (11) Да, Вы правы. Сейчас развернул 33 релиз — там в формах установлено значение «Обычный».

    Ну, и если кому-то интересно, то в «Заметках из Зазеркалья» это описано подробно.

    Reply
  13. wolfsoft

    (2) Неистово плюсуюсь, редкие отморозки. Думал, хоть в «такси» сделают нормальное юзабилити. Попробовал интерфейс — хрен вам, как говорится. Мне просто интересно, где они таких дебилов набирают, которые всё это конструируют? Почему раньше можно было открыть несколько закладок и по одному щелчку между ними переключаться, а теперь нужно трахаться с этой «историей»? Господи, да пошли ты им уже людей с мозгами.

    Reply
  14. wolfsoft

    +(13) И да, ну нахрена ж они убрали из быстрого доступа кнопку копирования в подменю?? Раньше один клик мыши, теперь опять трахайся с подменю. И это у них называется охрененное юзабилити. Нуралиев, купи им книжек умных что ли, может они не в курсе, что та

    Reply
  15. Akuji

    Написалиб хоть чем отличаются режимы, и на картинках выделили

    Reply
  16. ediks

    (15) Посмотрите по ссылке, которую я указывал в (12). Там все подробно разрисовано.

    Reply
  17. Puk2

    (13) wolfsoft, а если просто расположить панель открытых в нужное вам место? Меню «Вид — Настройка панелей…»

    Reply
  18. KonstB

    (13) wolfsoft, в «ТАКСИ» это можно настроить… Настроив под себя — поработав так, очень быстро привыкаешь и начинает нравиться

    в (17) скрин как

    Reply
  19. BigB

    Я ещё раз повторю вопрос (а то он походу затерялся):

    Как сделать, чтобы изменения интерфейса вступали сразу, а не после перезапуска конфигурации?

    Reply
  20. Zhilyakovdr

    Пересадил всех бухгалтеров на интерфейс такси 2 месяца назад, сначала плевались, а теперь даже нравиться стало….. Так что не так уж он и плох)))))

    Reply
  21. IamAlexy

    у меня в общем то тоже работают, обратно УФ не хотят.

    Такси им нравится — каждый себе сам менюхи раскидал и сидят работают..

    единственный минус — нельзя два отчета рядом открыть тчобы сравнить…

    Reply
  22. rayastar

    Огромное спасибо

    Reply
  23. Ёпрст

    (21) и выход какой ? Открывают две 1с-ины рядом для этого?

    Reply
  24. Diversus

    (23) Только это и остается. Неудобно, а с другой стороны куда деваться.

    Reply
  25. makas

    Полезная обработка +

    Возможно, что это ускорит мой переход с БП 2.0 на БП 3.0

    Reply
  26. qwed557

    на мой взгляд такси работает быстрее обычного интерфейса на УФ, все настраивается под себя, в общем ко всему привыкнуть можно. Где то то ли на баше, то ли еще где на просторах инета писали про Office, но к 1с это тоже можно отнести: при появлении нового интерфейса, пользователи не высказывают своего восхищения от удобства пользования, а просто говорят «херня, привыкнем» .

    Reply
  27. AlX0id

    (23) Ёпрст,

    Сохранить каждый в файл и нажать «Файл/Сравнить файлы». Что за атавизм вообще — глазами сравнивать?

    Reply
  28. kit

    Однозначно, полезная вещь. Спасибо автору.

    Reply
  29. hotey

    (28) AlX0id, а если разные отчеты, просто ряд цифр сравнить надо?

    Reply
  30. AlX0id

    (30) hotey,

    Тогда практически все равно, как они будут размещены по сути — рядом или в отдельных вкладках.

    Да, этот случай не удобен в Такси, но он достаточно редок.

    Если нужно сравнивать постоянно какие-то контрольные показатели — лучше уж написать отчет, сводящий их в одну форму.

    Reply
  31. Diversus

    (0) Есть просьба.

    У некоторых пользователей не хватает прав при запуске обработки.

    Прошу при изменении режима компактности добавить в начале и конце изменения компактности:

    УстановитьПривелигированныйРежим(Истина);
    …
    УстановитьПривелигированныйРежим(Ложь);

    Дабы избежать проблем с правами.

    По идее, должно помочь «бесправным».

    Reply
  32. the1

    На ЗиКБУ 3.0 тоже работает!

    Reply
  33. wolverine87

    Обработка несомненно может пригодится.

    Автору спасибо.)

    Reply
  34. Ted1982

    Идея очень хорошая. Немного доработал, чтобы можно было менять любому пользователю на выбор, т.е. администратор решает кому что и удалённо это делает (заодно и решилась проблема с отсутствием прав у некоторых пользователей)

    Reply
  35. uri1978

    Спасибо.

    Как-то можно программно установить для отдельного окна режим масштабирования? Разработчики платформы не удосужились по-человечески добавить свойство формы.

    Reply
  36. solbol

    Есть бесплатные такие обработки, например: http://olegon.ru/showthread.php?t=17403

    Reply
  37. gull22

    Нужная вещь для работы. Плюс

    Reply
  38. chmv

    большой ПЛЮС

    Reply
  39. amistad

    Добрый день! Кто подскажет не понял как включить обработку, релиз 3.0.39.60 ? Подключил интерфейс остался в режиме обычном.

    Reply
  40. Wladymyr

    Спасибо автору за обработку, очень помогла.

    Reply
  41. JesteR

    Спасибо. Но все же допилил для себя, сделал чтобы можно было выбрать пользователя. Т.к. обычно меня не себе, а юзерам, а у них обычно нет права открытия внеш.обработок 🙂

    Reply
  42. kiruha

    В Управлении холдингом не взлетело , но смысл понятен из обработки.

    Небольшая доработка УстановкаПараметровИнтерфейса() — и все ОК

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *