<?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='\
Забыл написать. Отправка сообщения по Ctrl+Enter
(+) однозначно. Забрал смотреть. В работе очень часто приходится использовать локальные чаты (icq и skype обычно запрещены в больших компаниях по линии безопасности) типа NetWriter или похожих… Но всегда есть моменты, которые хочется поправить 🙂 А тут родная 1С — руки развяжет.
интересно, а что во втором файле Файл «1C8PKG» (.1c8pkg)?
Класс!
http://pixs.ru/showimage/Bezimeni1j_3974885_9295155.jpg
Делала нечто очень похожее. Как-нибудь тоже выложу во free.
(3) seermak
http://infostart.ru/public/194576/) . Автоматически установить подсистему. В частность надо открывать 1С (режим предприятия) УФ
Хороший вопрос ))
в статье в самом низу… «Архив содержит Инсталляционный пакет для Инсталлятора пакетов 1С 8.2. и выгрузка из БД….»
Это инсталляционный пакет для Инсталлятора паветов 1С 8.2 (
(4) LaNaite,
Спасибо.
Ваша ссылка не открывается (
(4) LaNaite,
о, открылась )
(7) еще бы группировать старые сообщения. По принципу facebook — типа «загрузка более ранних сообщений»))
(8) LaNaite,
ага, это в планах. Старые сообщения будут храниться локально у пользователя на компе (sqlite3)
Баян. Делали такое ещё на 8.0
(10) Yashazz,
никто не говорит что сам чат в 1С — что-то новое.
но попробуйте то-же самое реализовать на 8.2 УФ, особенно перехватите контрол+энтер и передайте текст в 1С. На обычных формах все просто. На УФ таких штатных возможностей нет.
И ссылочку плиз….
(11) Уже мучился. Правда, не для чата — мне для своей «Базы знаний» понадобилось, когда в УФ переводить стал. Авось к Новому Году допилю, выложу ))
(12) Yashazz,
качни — посмотри как сделано.. все вроде просто ))
(13) Давай так — если сам красиво не соображу, через месяц качну. Тоже, знаешь, сам хочу решить! )))
(14) Yashazz,
думаю, проблем для красивых решений на всех хватит, но, как знаешь
вообще, конечно, лучше чтоб еще какао-то решение было )
а можно выложить выгрузку базы без необходимости качать «инсталятор». Это скрытая реклама?
(16) Makushimo,
Исталлятор качать не обязательно.
Выгрузка и инсталляционный пакет находятся в одном архиве к статье.
Конечно можно посчитать что это скрытая реклама, но я предпочитаю создать инсталляционный пакет и выложить его, а не писать инструкции по установке подсистемы.
ХТМЛ-документ,конечно, дает возможности по отрисовке интерфейса, но ИМХО довольно тяжеловесен. Думается мне, что для работы с базой через инет я бы использовал ТаблицуФормы.
В любом случае очень приятная разработка.
(18) Lancelot-2M,
При этом потеряется возможность форматировать текст сообщения
Я понимаю. Точнее потеряется возможность форматировать отдельные фрагменты текста сообщения. Но производительность в браузере может оказаться критичнее.
(20) Lancelot-2M,
и все-таки я бы не стал делать такие выводы. Сам по себе объект создается 1 раз при открытии обработки. потом если собеседник активен и вы с ним общаетесь, то сообщения добавляются. Только если вы меняете собеседника переписка перечитывается
конечно, если использовать чат в том виде, в котором он представлен в публикации — будут тормоза.
Нужно отсекать старые сообщения, как сделано, к примеру, в скайпе (что и будет сделано)
Принимается на уровне красивой идеи.
Для реальной жизни подходит ИМХО слабо, по сравнению со stand-alone мессенджерами.
Например, пользователю нужно написать сообщение следующего вида:
«Дорогой админ, помоги скорее, у меня не запускается 1С-восьмерка».
Наши действия?
(22) sput74,
принимается на уровне красивого вопроса )
ответный вопрос: у пользователя не запускается компьютер или stand-alone мессенджер
пользователю нужно написать сообщение следующего вида:
«Дорогой админ, помоги скорее, у меня не запускается 1С-восьмерка».
Наши действия? )))
скорее всего он возьмет телефон и позвонит.
а мне вот неймется рискнуть внедрить, но у меня 40 юзеров через инет в пике активности почти одновременно пишут в 2 регистра… вот борюсь с соблазном)
(24) Lancelot-2M,
не забудь тогда написать регл. процедуру по удалению старых сообщений. или переноси их куда-нибудь.
Старые сообщения определяются по закладке. смотри запрос по получению сообщений
(25) я думаю модифицировать запрос на получение последних 5-10 сообщений, а не всех. и добавить возможность вывода указанного количества последних сообщений.
(26) Lancelot-2M,
как вариант. тогда настройку сделай по примеру периода проверки новых сообщений
И еще бы добавитьвозможность отображения статуса собеседника — онлайн он или нет.
(28) Lancelot-2M,
тогда придется добавлять еще 1 регистр… чего не охота делать.
я планирую сделать визуальное отображение прочитал собеседник сообщение или нет.
т.е. пока собеседник не прочитал твое сообщение, сообщение в чате у тебя будет, к примеру, сереньким. как только оно будет выведено в окно собеседника, стиль становится обычным (как сейчас)
(28) Lancelot-2M,
но статус, тоже желателен. согласен )
(23)
Не удержусь, задам еще «красивый вопрос», точнее дополнение.
Чат внутри 1С бесполезен, в случаях, когда
1. У пользователя не включается 1С
2. Пользователь вышел из 1С (по просьбе админа, как в примере)
3. Не все пользователи, которым нужен чат, работают с 1С (по лицензионным, техническим, организационным соображениям)
4. Пользователи работают более чем с одной базой 1С.
5. Пользователи работают удаленно, например на планшетах (разновидность п. 3)
6. У пользователя запущена громоздкая обработка чего-нибудь
7. У пользователя [ИЛИ|И] админа [занят|разрядился|сломался|неоплачен]телефон/охрип/глухонемой/сидит удаленно с ребенком/etc, в сочетании с пп 1,2,3,5,6
Добавлю для очистки совести:
-Все предусмотренное, напомню, мое личное ИМХО;
-Контр-аргументы сохранились с тех времен когда У МЕНЯ в организации стоял вопрос про вариант корпоративного чата
-Сказано только для организаций ПОХОЖИХ на мою — они есть, и поэтому в этой ветке такие аргументы уместны.
-Осознаю, что ЕСТЬ и другие организации — для них эта программа может подойти.
-Топикстартеру в любом случае респект и уважуха за энтузиазм и красиво сделанную работу.
(31) sput74,
я согласен со всеми аргументами, но.. это именно внутренний чат. т.е. только для внутреннего пользования..
данный функционал скорее всего будет добавлен.
лень читать все коменты, в толстом клиенте не пашет?
(33) Программулькин,
))). Я для толстого не проверял, но, теоретически, должно запахать, если режим соотвестсвующий поставить.
очень интересная задумка, будем тестировать)
(31) sput74,
А еще важнее: пользователю вообще по барабану 1С, он, к примеру, конструктор.
Имхейшее имхо: корпоративный чат надо строить по другому (UDP, IMAP и т.п.). А для полного счастья можно предусмотреть и отправку в 1С/ из 1С (как у нас и сделано ;))
P.S. По вышеприведенным соображениям и все «поздравлялки» 1С ущербны, ибо подразумевают наличие у пользователя 1С
P.P.S. А автор — всё равно молодец! 😉
(36) Abadonna,
Спасибо!
Отличная доработка, но для РИБ что можно подобное придумать? Не синхронизировать же каждую секунду.
(38) shira84,
Да, каждую секунду конечно не вариант синхронизировать. м/б как вариант сделать доп. обмен только сообщениями…
да, тут надо крепко думать, особенно в направлении стоит ли по рибу синхронизировать сообщения. Мне кажется, что сообщения должны приходить в месте с остальными данными.
(39)
Не очень оперативно получается, а как раз таки в таких базах не помешал бы чат, у нас это насущьная тема, куча удаленных розничных точек, постоянные изменения, акции… пользуемся майлом агентом. Вот сделал бы кто нить чат для 1с через чейнить сервер, тот че майл к примеру.
(40) shira84,
Веб сервисы можете поднять?
можно воспользоваться веб сервисами для отправки и получения сообщений.
как вариант прикрутить почту…
Да кстати это идея слышал про такие. Увы пока не пробовал.
(42) shira84,
На инфостарте есть статья по этому поводу (обмен ч/з веб сервисы, кажись). Только для этого придется поднимать веб сервер
(4) LaNaite, Привет. можно поковырять твой чат он поинтересней кажется чем этот))
Есть очень существенная проблема:
если сообщений между пользователями кот наплакал, то все просто идеально… А вот есть сообщений поднакопилось «поболе», то начинают возникать трудности с выводом на экран:
эксперименты показали, что
— переписка до 300 сообщений грузится вполне себе сносно;
— при загрузке переписки от 300 до 1000 сообщений загрузка «переваривается» так долго, что проще через скайп продублировать;
— при попытке загрузить от 1000 сообщений — сеанс «валится» без возможности восстановления…
Очевидно, что решением проблемы было бы загрузка сообщений порциями: скажем по 100 сообщений, а при прокрутке страницы вверх, происходила бы подгрузка сообщений скажем по 30 — 50 шт…
В этом случае цены бы не было работе, т.к. пока это единственное решение которое я видел, у которого при добавлении нового сообщения в конец таблицы, вся таблица сдвигается вверх (нижняя строка как бы выдавливает остальные строки выше), как в скайпе например. Из за этой особенности использование 1С-ных табличных полей неудобно, т.к. добавляемые программно строки (в случае когда строк в таблице уже на весь экран), попадают «ниже видимой части монитора», и для их просмотра необходима «ручная» прокрутка таблицы вниз…
Доброго времени суток. Спасибо за разработку, очень полезная штука. Могу ли я предложить Вам доработать сей чат по следующим пунктам.
1) Можно ли сделать общую комнату, где все собеседники могут общаться одновременно.
2) Сделать возможность Вставить в форме вопрос на голосование, с возможностью варинатов ответов, типа опроса. С перечнем, кто как проголосовал. и общий результат опроса.
Это можно применить при конференц-общении, если пользователи не могут собраться вместе на собрании, территориально далеко друг от друга, а нужно принять решение по какому-то важному вопросу. На мой взгляд очень полезное дополнение.
Как Вы думаете?
(45) Pawlick,
Согласен.
У меня есть версия, в которой есть, как в скайпе, вывод за неделю, месяц и т.п.
Я сейчас занят проектом магазина типа AppStore — Магазин решений «PrimaStore». Временный сайт проекта primastore.top-choice ру
Как только запущу проект — выложу туда обновленную версию чата.
(46) olegov,
Конечно, Вы можете дорабатывать чат для своих нужд.
(36) Abadonna, не подскажете как у вас сделано? корпоративный час да еще и с обменом с 1С
Выглядит, конечно же, красиво. Вот только с доработкой — полный затык получается. Точнее, доработать HTML морду не знаю как. Может чо подскажите? Пока хочу добавить три основные ф-ции:
1. Изначально не понравилось действие «Добавить контакт». Вывел в список всех пользователей системы. Теперь бы их хотелось сгруппировать по филиалам, но как организовать управление группами — это большой вопрос.
Типа группа «Филиал №1» и под ней список пользователей этого филиала. Нажал на группу — список развернулся. Нажал еще раз — свернулся.
Вариации темы группировок — управляющие кнопки управления списком пользователей типа «отобразить всех», «только on-line», «отобразить по переписке» (только тех, с кем был контакт), «очистить историю» и т.п.
2. Так же нужна ф-ция отправки сообщения нескольким выбранным пользователям (типа флажка напротив пользователя, что ли, но как его нарисовать в HTML и отловить событие пометки?).
3. Ну и отрисовка on-line пользователей цветом совсем не помешала бы.
Или может быть подскажете где нарыть доходчивый мануал по управлению HTML?
(50) kentavr27, проблему иерархического отображения пользователей решил с помощью запроса, который выдает нужную структуру в зависимости от выбора пользователя. Группы теперь разворачиваются/сворачиваются. Как изменить цвет текста/шрифт групп, элементов и он-лайн пользователей — тоже нашел.
Остался вопрос организации флагов в HTML форме.
Да и с редактированием макета (даже добавление простого текста) как-то не алё получается. Редакторы показывают одну картинку, а 1С рисует несколько по-другому…
(51) к сожалению сейчас не могу заняться этим вопросом. Вернусь к не?У после 12 января
подскажите на каких конфигурациях тестировали работу? на УТ11 взлетит?
(52) в общем получилось что-то типа этого:
Основное, чего бы хотелось — сделал.
С флагами напротив каждого пользователя пока не стал заморачиваться — тяжело для понимания, с учетом того, что дело с HTML, javascript и CSS имею первый раз в жизни.
Даже, с простыми, на первый взгляд, доработками, пришлось немного повозиться.
Да и с самым элементарным — разметкой морды формы, ну совсем не все хорошо.
Например, попытался взять радиокнопки в рамку (что бы визуально выделить группу переключателей и подписать сверху), но при этом созданная рамка (вместе с радиокнопками) переехала на следующую строку и больше никак не хотела возвращаться на строку с кнопками форматирования. Пришлось от рамки отказаться.
» для отправки сообщения…..» тоже выглядит почему-то коряво