SciColorer — расширенный текстовый редактор для конфигуратора 1С




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

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

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

<?php // Полная загрузка сервисных книжек, создан 2024-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='\

84 Comments

  1. maljaev

    Отличная штука. Давно пользуюсь.

    Reply
  2. inse0f

    я так полагаю это только для 7ки?

    Reply
  3. vip

    (2) Правильно полагаешь.

    Reply
  4. inse0f

    очень жаль( для 8ки очень не хватает хорошего парсера кода

    Reply
  5. tomvlad

    Супер

    Reply
  6. RomDron

    Класс!! Столько лет работал с OpenConf, а про него не слышал!! Жаль уже на 8 перешел, но вдруг пригодиться!

    Reply
  7. f13

    Давно пользуюсь OpenConf и в частности OpenConf Light Pack (http://infostart.ru/projects/1688/). Спасибо!

    Reply
  8. thedoklan

    отлично, для 7 самый кайф. Спасибо

    Reply
  9. vip

    (6) Возвращайся.

    А то регулярно возникают презрительные разговоры о «костылях» к 7.7.

    8.х в костылях нуждается еще больше.

    Reply
  10. Polukuzov

    Отлично сам давно пользуюсь OpenConf. Очень не хватает всех этих наработок в 8.1. В многом это и сдерживает активный переход на 8 версию так как все равно придется.

    Reply
  11. DimaP

    Семерка жива!!!

    Reply
  12. vip

    Странная вещь — выложен отличный инструмент, рядом с которым восьмерочная IDE и рядом не стояла, а в комментах тишина.

    Перенумераторы вызывают гораздо больше эмоций.

    Ощущение, что большинству кодить приходится редко, в основном обновлять типовые.

    Откуда такое равнодушие к кардинально улучшеному основному инструменту разработки?

    Reply
  13. Душелов

    Я сразу говорил — за перенумераторами будущее!

    Reply
  14. Душелов

    И внешними печатными формами счетов на оплату и торг-12 🙂

    Reply
  15. vip

    (13)(14) Прав, как всегда ;))

    Reply
  16. coder1cv8

    (12) Это же для семерки! Неактуально уже! )))

    А если серьезно, то основная аудитория этого сайта, отнюдь не суровые гуру, знающие цену разработки того или иного серьезного инструмента, а люди лишь косвенно связанные с 1С или начинающие 1С-ники, у которых больше интереса вызывает какая-нибудь «яркая» поделка… ) К тому же, если выложена хорошая разработка, то что тут скажешь, кроме «Отлично!». Зато в ветках с откровенным г… от комментаторов не протолкнуться, да посмотрите хотя бы ветки «гения»! )

    Reply
  17. Ish_2

    (16) Зря Вы так о «гении». Морщась , нужно видеть его важную роль на сайте.

    Reply
  18. CheBurator

    (12) вещь отличная! сам юзаю! кодить намного приятнее, особено в связке с телепатом… правда есть несколько «огрехов» у телепата, но это наверное надо в скриптах подправить немного…

    Reply
  19. vip

    (18) Наверняка :))

    Не забывай только поглядывать за обновлениями — продукт становится все лучше.

    Reply
  20. Diess

    Спасибо, очень удобная и полезная приблуда

    Reply
  21. molot

    Качать не стал, но автору + однозначно!

    Reply
  22. IsiKosta

    СПАСИБО ОГРОМНОЕ, АВТОР !!!

    Reply
  23. antz

    О, свежий колорер! Не представляю уже себе работу без Опенконфа и всех этих штуковин. Автору мегареспект!

    Reply
  24. GrayT

    Не перехожу на восьмерку — там нет функционала опенконфа и СциКолорера 😉

    Reply
  25. orloff

    Блин, а у меня чето установить не получается. Скачал Опен конф, скопировал все в BINConfig, зарегил библиотеки, открываю конфигуратор и ниче не поменялось. Подскажите плиз че не правильно делаю

    Reply
  26. Джиневра

    Здооорово..

    Сначала брать не хотела (мол — да на что мне подсветка скобочек, что я — считать не умею?). Но увидев свернутые тексты процедуры и функций поняла: неее, надо брать 🙂 Собственно, имхо, это единственное, чем восьмерка выгодно отличается от семерки (отличается — в плане текстового редактора, естессно).

    Спасибо!

    Reply
  27. artbear

    (25) >>Скопировал все в БинКонфиг

    Этого недостаточно, ты наверняка не подменил файл Бинконфиг.длл, как написано в инструкции.

    Reply
  28. Filipp_inf

    Замечательный Инструмент!

    А можно еще попросить добавить «свернуть/развернуть» не только при помощи мышки, но и «горячими» клавишами? Ну очень надоело хвататься за «мышь», когда работаешь на клавиатуре.

    Большое спасибо. И ГЛАВНОЕ — что БЕСПЛАТНО. А то смотрю кризис начал сказываться, все больше обработок выкладывают не за интерес, а за деньги, как на рынке.

    Reply
  29. metaeditor

    >А можно еще попросить добавить «свернуть/развернуть» не только при помощи мышки, но и «горячими» клавишами?

    это делается средствами опенконфа, см. скрипт из комплекта.

    меню OpenConf-макросы-клавиатура — новый — SciColorer — <любой нужный макрос>

    Reply
  30. vip

    (28) Стрелки вправо-влево, когда курсор на первой позиции заголовка блока.

    Reply
  31. antz

    Развернуть можно, встав в начале строки с объявлением процедуры (Процедура ТакаяТо()) и нажав стрелку вправо. Аналогично можно свернуть, нажав стрелку влево.

    Reply
  32. antz

    а, всмысле «свернуть всё»…

    Reply
  33. metaeditor

    >Стрелки вправо-влево

    а, ну да, так тоже можно)

    Reply
  34. Filipp_inf

    >меню OpenConf-макросы-клавиатура — новый — SciColorer — <любой нужный макрос>

    И какой макрос отвечает за «свернуть всё»… ?

    Reply
  35. metaeditor

    ExpandAll() ‘Развернуть всё

    CollapseAll() ‘Свернуть всё

    открой SciColorer.vbs в блокноте, там всё прокомментировано

    Reply
  36. Lars Ulrich

    супер!

    Reply
  37. ev-kov

    Присоединяюсь к похвалам, очень нужная вещь для семерки, давно ею прользуюсь.

    Reply
  38. gorenski

    Плюсую

    Reply
  39. nicxxx

    кажется, баг: в версии 1.0.0.9 не сворачиваются блоки комментариев

    Reply
  40. metaeditor

    >не сворачиваются блоки комментариев

    настройки — галка «не сворачивать комментарии внутри процедур»… оно?

    Reply
  41. o.nikolaev

    А как тут поставить сразу 10 плюсов? Это супер штука!

    Reply
  42. alyuev

    (41) Согласен на все 100%!

    Reply
  43. Shaman100M

    Плюсик.

    Что очень не понравилось:

    неконтролируемое блуждание курсора при переходе на след. строку;

    при удалении фрагмента и переходе вниз курсор меняет позицию, предшествующую концу фрагмента удаления;

    не передвинуть курсор вправо (иногда пользуюсь, чтобы не срабатывал шаблон), — только пробелом.

    А так, удобная штука, но не для «поточного» написания кода, — напару с телепатом заставляют моск думать, нажимать клаву или нет, чаще смотреть на экран, многоцветие отвлекает, хотя подсветка реквизитов диалога — оч. здорово.

    Вот мое мнение, отличное от общепринятого, но есть такое. Хорошо настроенные шаблоны по производительности написания кода могут поспорить с телепатом. А подсказки, всплывающие окна, подстановка объектов метаданных — это для творчества. 😉

    Reply
  44. maljaev

    (43) Лично у меня за счет одних только телепата+интеллисенса производительность написания кода выросла раза в 4, и у супруги тоже. Колоред конечно не столь критически нужная вещь, но тоже на несколько процентов повышает производительность труда.

    Может конечно все дело в быстродействии мозга, но у меня мозг при кодинге работает уже на инстинктивном уровне, т.е. максимально быстро.

    Не нужно путать шаблоны и телепат — это разные вещи. Шаблоны создаются раз и на все случаи жизни, а телепат и интеллисенс динамически отслеживают твой код, подстраиваясь под ситуацию. Именно это позволяет мне создавать переменные типа «ТЗ_РаспределениеОборотныхСредств», не затрачивая кучу времени на повторный набор идентификатора или копипаст, а ограничиваясь считанными нажатиями. В результате прозрачность и понятность кода на высоком уровне даже без комментариев, а скорость даже выше если бы я обозвал переменную «ТзРОС».

    Так что все ИМХО. Жизнь без телепата, интеллисенса и колореда я уже не представляю. Хотя, если брать оплату почасово, то конечно же я в убытке — делаю работу намного быстрее. 🙂

    Reply
  45. maljaev

    (41) Зарегистрируйся 10 раз. Шутка.

    Reply
  46. metaeditor

    >Что очень не понравилось:

    >неконтролируемое блуждание курсора при переходе на след. строку,

    >не передвинуть курсор вправо, …

    это всё «особенности» компоненты на основе которой сделан редактор,

    постепенно к ним привыкаешь

    >не для «поточного» написания кода, — напару с телепатом заставляют моск >думать, нажимать клаву или нет, чаще смотреть на экран, многоцветие >отвлекает, хотя подсветка реквизитов диалога — оч. здорово

    незнаю, у меня наоборот, пока я програмирую с опенконфом, моск отдыхает 🙂

    наверное, опять-же нужно просто привыкнуть

    Reply
  47. BabaJaga

    БОМБА !!!!! СПАСИБА !!!

    Reply
  48. cleaner_it

    Огромное человеческое спасибо! Одна из самых ценных разработок:) Практически наравне с 1C++ и OpenConf!

    Reply
  49. bainov

    Отличная штука! Жаль что раньше на нее не наткнулся 🙁

    Теперь то все больше в 8-ке приходится сидеть…

    Reply
  50. Yuri_Dnp

    Спасибо!

    Наткнулся на небольшую фичу:

    Если перед блоком стоит комментарий, например:

    //——

    Процедура ПриОткрытии()

    то при комментировании блока (Шифт+Клик) происходит объединение блока с комментарием, а при последующем раскомментировании (Контрол+Шифт+Клик) раскомментируются и комментарии в том числе, что приведет минимум к ситаксической ошибке, а может и к появлению лишнего кода 🙂

    Reply
  51. metaeditor

    Контрол+Шифт+Клик убирает комментарий со всего _блока_ а не с процедуры или «Если, …»

    Шифт+Клик комментирует процедуру и вместе с первой строкой она превращаются в многострочный комментарий который тоже сворачивается, т.е всё вместе теперь является блоком.

    Так что всё верно )

    Reply
  52. Yuri_Dnp

    (51)

    Я и не говорил, что это ошибка 🙂

    Reply
  53. maikl007@mail.ru

    Респект и уважуха +, ещ бы предопределенные процедуры подсвечивал 🙂

    Reply
  54. neuromancer_aza

    Одним словом — Оргазмирую… 😉

    Reply
  55. ВосточныйПарень

    Поставил последнюю версию, но есть проблема. При вводе процедуры, функции или метода объекта слишком быстро скрывается всплывающая подсказка. Очень плохо. Как это победить?

    Reply
  56. metaeditor

    читаем ридми файл в дистрибутиве.

    нужно поставить вот это:

    http://www.1cpp.ru/forumfiles/Attachments/telepatt.rar

    Reply
  57. nextua

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

    Reply
  58. MaxS

    (12) Инструмент конечно же для 7-ки хороший, но в 8-ке почти всё решается запросами, 7-ка тут в целом проигрывает.

    Про прямые запросы в 7-ке я в курсе. Но это уже другая тема…

    Reply
  59. Близнец

    Спасибо. OpenConf’ом давно пользуюсь, а с этим еще удобней стало.

    Наткнулся на такое поведение: если поставить курсор на слово с которого начинается или заканчивается блок, то эти слова отображаются «кракозябрами», например «Процедура», «КонецПроцедуры», «Если», «Тогда», «ИначеЕсли».

    Вот скриншоты:

    Reply
  60. vip

    (58) Кгрхм…

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

    Reply
  61. Altair777

    Спасибо автору за эту разработку. Пользуюсь ей давно, очень удобно.

    Но плюсик только сейчас поставил. Сорри.

    Reply
  62. gena_danil

    Великолепно! Жаль, что узнал об этом инструменте только сегодня.

    Спасибо автору.

    Reply
  63. adva

    Спасибо, Тоже жалею, что не сразу узнал о такой вещи

    Reply
  64. Fisco

    >Спасибо, очень удобная и полезная приблуда.

    Однозначно +!

    Reply
  65. metaeditor

    ОБНОВЛЕНИЕ:

    — в настройки шрифтов добавлено поле для выбора набора символов (кодировки)

    — исправлено положение подсказок телепата в соответствии с масштабом редактора

    — добавлена возможность отображения непечатных символов (галка в настройках и новая команда в скрипте)

    — исправлено отображение курсора в режиме перезаписи текста (OVR)

    — добавлен новый стиль подсветки «Фон заголовков методов» для возможности установки фона строки с названием процедуры

    — если в начале блока комментария первым символом стоит «», то при открытии модуля такой блок не будет свёрнут

    — добавлена поддержка подсветки доп. ключевых слов также и в строковых константах. (только слова из списка №4)

    — «разукрашен» диалог списка закладок, цветовых/модифицированных блоков

    — добавлена функция отображения результатов поиска текста в текущем модуле. окошко появляется автоматически при вызове

    команды поиска текста или же только по нажатию соответствующей кнопки на панели инструментов плагина.

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

    Reply
  66. CheBurator

    Где на 1Cpp на форуме колорера- ссылка на скачивание актуального релиза? в каком посте?

    Reply
  67. CheBurator

    (67) ветку-то я знаю, но все равно спсб. натолкнуло посмотреть на «ветку-начало»… туплю-с…

    Reply
  68. anton-1981@yandex.ru

    Respect 🙂

    Reply
  69. KrakoZyabl

    Великая вещь !!! Спасибо огромное!!! 🙂 😉 ❗ ❗ ❗ И где я раньше был только ???..))

    Reply
  70. ITAlex

    Очень удобно! Производительность и качество растет!!! //кроме шуток!

    ну вот и как теперь на 8-ку переходить 😥

    Reply
  71. Поручик

    (71) Да легко. Те, кто бросил это грязное дело, ещё не пожалели.

    Reply
  72. andrey_k65

    Спасибо! просто супер!

    Reply
  73. igorb

    +1 однозначно 🙂 очченя удобно!!!

    Reply
  74. o.nikolaev

    Одна из самых крутых штук для 7.7. Без нее на 7.7 писать вообще невозможно.

    Reply
  75. Rustig

    Для семерочников вещь отличная — автору спасибо!

    Я вот мало на семерках программирую, но довольно редко надо изучить их код, что-то дописать, тогда я весь код модуля 7.7 копирую и редактирую в модулях конфигуратора 8.1. Так я использую функционал 8.1. Кроме свертывания-развертывания и быстрого перемещения использую в том числе «интеллисенс» (то есть «контрол + пробел»).

    Всем успехов! 🙂

    Reply
  76. Rego1337h

    Во-первых, большое спасибо автору! Массу времени и нервов сэкономил с помощью данного инструмента.

    А во-вторых — хочу спросить, появится ли это чудо для 8.2?

    Без функции выделения одинаковых слов, там просто невозможно работать. 😉

    Reply
  77. cleaner_it

    Отличная вещь:) С каждой версией все лучше и лучше:)

    Reply
  78. nixstill

    Спасибо, автору почтение! С ней на 7.7 писать очень удобно. Периодически работаю с семерками.

    Reply
  79. orefkov

    (77)

    Запоздалый ответ, но вот начало появляться: http://snegopat.ru/forum/viewtopic.php?f=1&t=61

    Reply
  80. nll.jojo

    отлично, юзаю давно

    Reply
  81. DimaP

    (80) снегопат платный, а SciColorerV8 пока глючный

    но для 7.7 вообще вещь офигенная!!!

    Reply
  82. tanekQ

    Класс, просто класс! и чего я раньше этим не пользовалась!?

    Reply
  83. MadDAD

    А исходники не планируете обнародовать?

    Reply

Leave a Comment

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