<?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='\
Занятно. но навскидку придумать действительно нужное применение я затруднился… хотя фотка смотрится здорово — можно экономить место при выводе изображений, которые не особо часто нужны.. например…
конкурс надо объявить на самое нужное использование данной фичи…
Как вариант, вывод подчиненных документов, хотя это тоже спорное применение.
(1) Зря ты так очень полезная фишка, жаль только нужно включать еще одну библиотеку в проект, а их там уже очень много (
Это… Вряд ли в ближайшее время мне лично пригодится, но за идею однозначно «плюсик» и респект 🙂
Да…Штука классная… Но как сказал vladnet очередная ВК… А их и так много… Хорошо бы это все АльФу в FormEx.
Но + однозначно
(1) А что? Идея конкурса на лучшее применение весьма привлекательная — не все ж публичная порка… И о красоте надо подумать.
а можно манипулировать таймаутом между позиционированием на объект и появлением тултипа?
можно ли выводить тултип принудительно? т.е. типа вывеститултип(ч,н)
Можно манипулировать таймаутом между позиционированием на объект и появлением тултипа.
МенеджерПодск.ПоказыватьЧерез=1000; // 1 сек
Можно ли выводить тултип принудительно.
Подсказка.Показать();
хм. чего-то не то с als-файлом
конфигуратор пугает разрушением
еще кое-чего не соображу.
http://img529.imageshack.us/img529/7658/gluguj0.jpg
в документе, у табличной части всплывает еще и обычная подсказка
как бы от нее избавиться?
хм. чего-то не то с als-файлом конфигуратор пугает разрушением
Виноват. Исправил. 1.1.2
в документе, у табличной части всплывает еще и обычная подсказка
Буду думать
Весч очень полезная… Да .. если бі в формекс встроить — ей вообще бы цены не было … но наже так — очень хорошая весчь получилась …
помню как до этого мучился через AutoItX3.Control … так теперь не поленился и все переписал под RToolTipsManager… намного убоднее и код выглядит красиво …
Автору : так что не слушай тех кто говорит «у меня типа уже много ДЛЛ-ек подключено .. бла-бла-бла»… у меня их тож не много кто оценит — подключит еще одну .. вобщем отдельный респект ! и «+» однозначно …
но вот хотелось бы еще одну фишечку … дабы была возможность работы ПриВыводеПодсказкиТаблицы из глобального модуля … т.к. формы диалога оч часто закрываются после вывода печатной формы …
И еще замечена одна особеность .. если делать ЗагрузитьВнешнююКомпоненту(«RToolTips.dll»); в ПриНачалеРаботыСистемы(), то при входе дает «Программа была завершена аварийно .. и т.д.» но не всегда ..
закономерность еще не выявил …
Но вообще за разработку 5 балов !
Подскажите, будет ли решена проблемка с загрузкой проца? На слабых компах грузит систему до 50% 🙁
Подскажите, будет ли решена проблемка с загрузкой проца?
Решена v.1.2.1 Прошу заинтересованных товарищей потестировать
но вот хотелось бы еще одну фишечку … дабы была возможность работы ПриВыводеПодсказкиТаблицы из глобального модуля
Есть такая фишечка. Используйте на здоровье.
Для этого лучше сделать одну глобальную переменную типа RToolTipsManager и привязывать таблицы к ней. В этом случае менеджер будет следить за таблицей независимо от наличие формы, из которой таблица сформирована. Процедура ПриВыводеПодсказкиТаблицы будет срабатывать только в глобальном модуле, если вы не будете привязывать менеждера к какой-либо форме.
АЛьФУ в Formex — АДНАЗНАЧНА! +1
перестала работать 🙁
у меня в табличной части документа и списке справочника 🙁
даже вот в примере в Таблице
С толкнулся с такой бедой:
Форма внешней обработки. 2 слоя. При выборе закладки нахожусь на втором слое. У меня здесь большая ТЧ. Лезут подсказки первого слоя. 🙁
Дайте тестовую обработку, в которой 100% проявляетс эта ошибка.
Mucmepukc
После чего перестала работать?
последняя версия.
http://infostart.ru/profile/4955/projects/1383/download.php?file=1964
если вернуть 1.1.2 то все опять ладом
в частности у меня вот тут например —
Вобщем ситуёвина такая:
Форма внешней обработки. 2 слоя. 2 закладки. На первом слое реквизиты, на втором — ТЧ.
Если в реквизите формы 1 слоя есть подсказка, то при переходе по закладке на второй слой подсказки строк ТЧ рушатся.
Если перейти на первый слой — появляются подсказки ТЧ второго слоя.
Беда. SOS!
Mucmepukc
Ты обновляешь только RToolTips.dll, или RVXPLib.dll тоже?
оба, даже с перерегистрацией RVXPLib.dll
Метод УстановитьФорму использован?
о. спасибо! теперь работает 😉
возникает тогда другой вопрос — раньше же без этого работала!
еще раз спасибо, мегаштука!
попробовал теперь RMsgWindow2
претензия такая: нужна жесткая фиксация размера окна (сейчас при добавлении новой строки размер увеличивается), и собственно — прокрутка в этом окне (сейчас окно растет, растет, растет, уползает за пределы экрана)
и, наверное, не помешала бы прозрачность
Sprite
v.1.2.2
— Исправлена ошибка появления подсказок у невидимых реквизитов
v.1.2.2
Не всё так гладко.
Результат тестирования: Исчезли ЛЮБЫЕ подсказки на реквизитах, визуально расположенных в одном и том же месте на разных слоях формы. 🙁 🙁
Очень жду изменений. 😉
Не понял в описании:
>ПолучитьТекстЯчейки(пИмя, пСтрока, пКолонка);
>Примечание:
>Позволяет получить текст только видимых в данный момент строк и в любых >колонках, в т.ч. невидимых в данных момент, определенных невидимыми в >конфигураторе.
Вопрос:
Могу ли делать так:
На форме обработки есть табличная часть «ТЧ». В модуле формы:
Процедура ПриОткрытии()
…………..
ТЧ.НоваяКолонка(«Подсказка»,,,,,);
ТЧ.ВидимостьКолонки(«Подсказка»,0,);
………….
КонецПроцедуры
Могу ли увидеть в качестве динамической подсказки — значение, присвоенное колонке «Подсказка» при наведении курсором на строку ТЧ ?
Пока у меня не получилось…
Было бы ОЧЕНЬ удобно!
Sprite
ПолучитьТекстЯчейки(пИмя, пСтрока, номер_колонки_с_подсказкой)
разве не так?
Sprite
а.. все, понял, о чем речь… действительно не получается у ТаблицыЗначений 🙁
просто сам делал у формы списка справочника, там с этим без проблем…
то: Mucmepukc
Надежда только на Роберта….!
Где-то надо откопать зарывшуюся собаку 🙂
Проблема — при закрытии 1С-ки она виснет с ошибкой. По ходу работы все отрабатывается нормально.
Подозреваю, что связано с большим количеством ВК — загружаю последовательно:
FormEx, Turbobl, 1spy, RToolTips.
Robert, в каком состоянии сейчас разработка? Работаете ли над ошибками?
В любом случае — удачи!
Сейчас разработка на паузе. Ошибки обязательно исправлю.
Что касается ПолучитьТекстЯчейки.
С таблицей значений это фича. Если в многострочных частях скрытая колонка как бы есть, то в таблице значений ее как бы и нет ;)) это особенность реализации 1С.
Рекомендую как-нибудь извратиться. Например:
— добавить просто видимую колонку с текстом подсказки
— добавить просто видимую колонку с текстом в две строки; первая пустая, затем разделитель, вторая с текстом подсказки; вроде, в колонке отображается строка только до разделителя; надо проверить
— добавить зафиксированную строку, что бы не маячила просто строка
Да. Вобщем-то так как я и думал…
Столбец мизерной ширины. Пробелы или СимволТабуляции, чтобы не маячил текст для пользователя. Потом СокрЛ(ТЧ.Подсказка).
Интереснее вставлять разделители. Тогда при обработке строки «ТЧ.Подсказка» появляется возможность динамическую подсказку разделить на несколько строк.
Спасибо, что хоть помогли определиться с ситуацией 😉
А как быть с слоями формы?
Результат тестирования: Исчезли ЛЮБЫЕ подсказки на реквизитах, визуально расположенных в одном и том же месте на разных слоях формы.
Попробовал СимволТабуляции. Видимо воспринимается как управляющий символ.
Отлично получилось просто : несколько пробелов + разделитель (у меня «;») + данные + разделитель + данные + разделитель и т.д.
Потом:
Функция ВозвратитьЭлемент(ТекСтр,Номер)
ВидОпер=ТекСтр;
Если Номер=1 Тогда
Для Н=1 По Номер Цикл
ТекН=Найти(ВидОпер,»;»);
ВидОпер=Лев(ВидОпер,СтрДлина(ВидОпер)-ТекН);
КонецЦикла;
ТекН=Найти(ВидОпер,»;»);
ВидОпер=Лев(ВидОпер,ТекН-1);
Иначе
Для Н=1 По Номер-1 Цикл
ТекН=Найти(ВидОпер,»;»);
ВидОпер=Прав(ВидОпер,СтрДлина(ВидОпер)-ТекН);
КонецЦикла;
ТекН=Найти(ВидОпер,»;»);
ВидОпер=Лев(ВидОпер,ТекН-1);
КонецЕсли;
Возврат ВидОпер;
КонецФункции
Процедура ПриВыводеПодсказки(пТекст, пИмяАтрибута, пХ, пУ, пСтрока, пКолонка)
………………….
лТекст12=СокрЛП(мМенеджерПодск.ПолучитьТекстЯчейки(«ТаблицаАнализа», пСтрока, 12));
…………………..
Период_Анализа=ВозвратитьЭлемент(лТекст12, 1);
Дата_Первой_Партии=ВозвратитьЭлемент(лТекст12, 2);
…………………..
Коэффициент_Ликвидности=ВозвратитьЭлемент(лТекст12, 14);
Коэффициент_Излишка_Товара=ВозвратитьЭлемент(лТекст12, 15);
……………………
// Теперь выводим подсказку
пТекст=Шаблон(«<body bgcolor=#99ccff> Артикул: [лТекст2]
// |Строка: [пСтрока] Колонка: [пКолонка]
|
Наименование: [лТекст3]
|<hr size=1>
| Период анализа: [Период_Анализа]
|
Дата первой партии: [Дата_Первой_Партии]
|
Дата конца продаж: [Дата_Конца_Продаж]
|
Продано количество: [Коэффициент_Излишка_Партий]
|»);
……………..
КонецПроцедуры
опять про RMsgWindow2
— не хватает кнопочки «закрыть» у окошка
— как-то странно работает Переместить(Лево,Верх) — Лево кажется не начало окошка, а его середина 😉
Решена проблема с появлением подсказок у невидимых реквизитов, на разных слоях и пр.
Смотрите v.1.2.3
Ещё раз спасибо! Проблема действительно решена. Проверено! Зачёт!
В чём может быть проблема?
Процедура ПриВыводеПодсказки(пТекст, пИмяАтрибута, пХ, пУ, пСтрока, пКолонка)
………………..
Если пИмяАтрибута=»фл_ABC» Тогда
Попытка
пТекст=Шаблон(«<body bgcolor=#9ccff gfc=white>
| Ранжирование асортимента по
|
доле в общей прибыли продаж.
|<hr size=1>
| А — товары, приносящие ВАЖНЫЙ результат
|
В — товары, приносящие СРЕДНИЙ результат
|
С — товары, приносящие СЛАБЫЙ результат
|»);
Исключение
КонецПопытки;
КонецЕсли;
……………
КонецПроцедуры
Sprite
А есть какая-то проблема?
Пробема. В таком виде, как привел ниже — подсказка не выводится. Если перед последней строчкой «|
[ДокПеремещениеСтарый.ДатаДок]</b> тогда всё ОК`.
Задолбался размышлять почему так. Причём похожие конструкции работают.
Ощущение такое, что строку с обычным текстом (а не вычисляемым значением) чем-то заканчивать надо. 🙁
Выслал в личку скриншот и обработку.
Спасибо за подсказку. Я этого не знал. Всё заработало.
Поясняю для всех. Мало ли кто-то еще попадет в ту же ситуацию.
Функция Шаблон работает таким образом, что когда в нее передаешь строку, не содержащую ни одной пары квадратных скобок, то она возвращает пустую строку.
Например:
Показать полностью
Причём важным оказывается лишь то, что шаблон должен заканчиваться
…. ] «);
т.е. не обязательно заканчивать каждую строку шаблона!
А без 1с++ эта компонента не работает?
Как я понял — без FormEx не работает. Правильно?
Работает и без 1С++ и без FormEx.
Просто метод УстановитьФорму необходимо вызывать после того, как форма создана. 1С++ и FormEx генерируют специальное событие после создания формы. Без них тоже самое можно сделать через обработку ожидания или как-то еще.
Что то никак не получается вывести подсказку с картинкой. Подскажите как правильно написать тэги?
А сетевые пути для картинок компонента не воспринимает?И еще — можно ли задавать ширину подсказки, чтобы переносились длинные строки автоматом?
К сожалению компонента действительно не понимает сетевых путей 🙁
ìÌåíåäæåðÏîäñê=ÑîçäàòüÎáúåêò(«RToolTipsManager»);
{Îáðàáîòêà.Èçäåëèÿ.Ôîðìà.Ìîäóëü(132)}: Íåóäà÷íàÿ ïîïûòêà ñîçäàíèÿ îáúåêòà (RToolTipsManager)
короче неудачная попытка создать файл!
Регил я файл! только толку то…
МОжет это из за windows vista????
=) я ж начинающий ! только пару месяцов как изучаю 1с.. вообщем допетрил… в глобалке надо подключать модуль! капец.. на курсах о таком вообще речь не шла.. ну вообщем еще 1 шаг к освоению я преодалел!
(58) ты б лучше с основ начинал. до этого потом дойдёшь, если надо будет.
(1) Конкурс еще продолжается? Вот вам применение:http://infostart.ru/projects/218/?p=4&clear_cache=Y#comm78
Робертус, ПЛЮСИЩЩЩЩЩЩЕ!!!
Пытаюсь загрузить через vkloader:
Загрузчик = СоздатьОбъект(«ЗагрузчикВК»);
Рез = Загрузчик.КодЗагрузки(«RVXPLib.dll»);
Если Рез.КодОшибки = 0 Тогда
Сообщить(Рез.Результат);
Иначе
Сообщить(«Ошибка » + Рез.КодОшибки + РазделительСтрок + Рез.Результат);
КонецЕсли;
Ругается:
Ошибка 5
Не удалось получить идентификатор ВК
@#$, а?
RMsgWindow2:
Первое:
МегаОкноСообщ.Парсер.УстановитьТекст(«Новый текст»);
МегаОкноСообщ.Парсер.Переформировать();
Текст, пардон, не обновляется, пока не переключиться на другое приложение и не вернуться назад.
Второе: мона как-то сразу задавать координаты, в которых его выводить, а то оно мерцает сначала в центре, а потом где мне надо?
Третье: как-то считывать и запоминать текущие координаты окна мона, чтобы пользователь при каждом программном открытии окна не поминал меня незлым тихим, перемещая его в свое любимое место?
Жаль с 8-кой не работает — ругается на отсутствие точки входа в процедуру GetToolTipCtrl 🙁 Очень полезный функционал был бы.
Если используется таблица совместно с формой (например: сверху форма, под ней таблица), то при закрытии формы 1С падает. Причем так, что процесс остается, но уже никогда никому не ответит.
Если выводить подсказку методом ПоказатьВТочке, то подсказка только на мгновение показывается в указаной точке, а потом сразу же перемещается к указателю мыши.
Свойство Прятать не работает (при установке в 0 подсказка исчезает при движении мыши).
Извиняюсь, неправильно пользовался.
(64) У меня работает и не падает. Значит что-то не так делаешь.
Использую вашу компоненту. Бывают глюки выводит одну и ту же подсказку. Что это может быть?
Еще бывает выбивает 1с-ку. Может это быть связано с тем, что висит справочник товаров, где работает пользователь + он набивает накладные, а для подбора используется та же форма справочника товаров?
Еще бывает выбивает 1с-ку. Может это быть связано с тем, что висит справочник товаров, где работает пользователь + он набивает накладные, а для подбора используется та же форма справочника товаров?(64) у меня тоже падало..
Вроде помогло обнуление переменной, где хранится экземпляр объекта «RToolTipsManager» перед закрытием формы (в событии «ПриЗакрытии»)
Здравствуйте!
Использую эту ВК. На все машинах нормально, кроме одной — 1с-ка упорно валится при попытке СоздатьОбъект(«RToolTipsManager»). RVXPLib.dll зарегистрированы, dep, uac, антивири — выключены. Windows 7 x32.
Пробовал даже на пустой базе создатьобъект (мало ли что-то мешает) — тоже не взлетает…
В чем может быть беда?
Сигнатура проблемы:
Имя события проблемы: BEX
Имя приложения: 1cv7s.exe
Версия приложения: 7.70.0.27
Отметка времени приложения: 4573fcd8
Имя модуля с ошибкой: StackHash_0a9e
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 00000000
Смещение исключения: 041b04e0
Код исключения: c0000005
Данные исключения: 00000008
Версия ОС: 6.1.7601.2.1.0.256.1
В общем в течение нескольких дней обката пришел к выводу, что ВК крайне не стабильна… вылетает периодически у всех пользователей в каком-то непредсказуемом порядке…
(70) с вылетом разобрался, отключил аппаратный DEP
(71) пока актуально… но если на это тоже влиял аппаратный DEP и стало работать лучше — отпишусь…
к сожалению как в (71) вылетало, так и продолжает:
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 1cv7s.exe
Версия приложения: 7.70.0.27
Отметка времени приложения: 4573fcd8
Имя модуля с ошибкой: RVXPLib.dll
Версия модуля с ошибкой: 1.2.3.0
Отметка времени модуля с ошибкой: 4776a34a
Код исключения: c0000005
Смещение исключения: 00014ca6
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
к (73) — причем ошибка дважды выводится (не всегда)
после еще определенного периода испытаний могу сказать, что все вылеты возникают при закрытии формы, к которой подключен rtooltips.. скорее всего это происходит при разрушении объекта…
Может кто знает как зарегистрировать RVXPLib.dll в Win 10
так как и в 7ке, от имени Администратора
(77)Спасибо разобрался
При открытии из конфигурации Test RToolTips.ert все работает.
Вставляю «кнопку» в справочник и вешаю на нее процедуру:
Процедура ПоКнопкеПоказать()
мПодск=СоздатьОбъект(«RToolTip»);
мПодск.ИмеетТень=1;
мПодск.ИмеетХвост=1;
мПодск.Окружность=3;
мПодск.Прозрачность=210;
мПодск.ВремяПоявления=1000;
мПодск.ВремяИсчезновения=1000;
мПодск.Парсер.УстановитьФайлРесурсов(КаталогПрограммы()+»1crcrus.dll»);
мПодск.Парсер.УстановитьТекст(«<body bgcolor=#99ccff gfc=white>Для загрузки картинок используется файл ресурсов 1crcrus.dll
|
Картинка загружена по идентификатору IDR_DEL_MARKED
<img res=’ico:IDR_DEL_MARKED’>
|
Картинка загружена по идентификатору 209
<img res=’ico:#209′>
|»);
мПодск.ПоказатьВТочке(100, 100);
КонецПроцедуры
Не чего не происходит. В чем может біть проблема?