<?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='\
Слушай Ёпрста! (с) Че :)))
Судя по описанию — круть!
(2) Пока не всё реализовано, что хотелось бы…
🙁
Зачет стопудово! (даже не знаю как наехать 😉
И всё тки весело с ним работать 🙂
Держи плюса
прекольно!
(4) А я знаю. Скачать не могу.Скачивается PhP.Опять ЧингисХан влез. Поэтому минус на словах(-)
Короче — звезда в шоке
(7) Все нормально скачивается
Интересная вещь! однозначно +
Поправлена выгрузка текста привязки…
да, платформа 7.7 живет своей жизнью! 😉
Плюсану.
(12) Родители её уже давно бросили, спасибо, что появились люди, которые её усыновили, отмыли, причесали и поставили на ноги 😉
Обработка работает только под локальным админом, в домене п.6 ничего не делает. До конца не протестил. Ждем окончания проекта. В общем понравилось: + авансом.
(14) если все вк загружены — то работает нормально..и в домене.
Полезная штука. Когда есть простая возможность сделать экслюзивный вариант
документа для каждого юзера — они просто млеют. В моем варианте еще
настраивались видимость/доступность элементов диалога и значения по умолчанию.
(16) Ээ…. а можно поглядеть то, на ваш вариант?
+17 видимость/доступность атрибутов, равно как и индивидуальная форма для каждого юзверя — не проблема… Главное только — доделать выгрузку самой формы в файлик..остальное мелочи.
(18) Для хранения настроек я использовал справочники 1С. Поэтому чтобы все
работало надо делать демо-версию конфы.
+
!для дела пойдет!
Чет немогу запустить, ругается перед Сервис.ПерехватКлавиатуры(1), Поле агрегатного объекта на обнаружено.
(21) ВК все установлены, как п.3 написано ?
однозначно +, облегчает работу, в тоже время красиво и удобно
ПРи попытке подключения пишет собственно это
ПерехватчикСобытийГМ = СоздатьОбъект(«ПерехватчикГМ»);
{C:РЕДАКТОР.ERT(217)}: Неудачная попытка создания объекта (ПерехватчикГМ)
(24) Значит не выполнил один из пунктов из описания..
ВК подключены ? …
На закладке 1с++ классы видны ?
все 3 ВК добавил при загрузке, уточни пожалуста что за закладка. Наверно ты имееш в виду в конфигураторе, так там в окне конфигурации на закладке 1c++ кроме фанктеста больше ничего нет
(26) Нет. В режиме предприятия — Сервис-Параметры-Настройки 1с++ там смотри имена зарегестрированных классов.. Есть среди них указанный ПерехватчикГМ ?
ЗЫ:Если установлен плагин Visual 1C++ для опенконфа, то можешь посмотреть в самом пофигураторе.. на закладке 1с++
http://www.script-coding.info/Visual1cpp.html
+27 а всё… увидел, что вижуал стоит у тебя..
🙂
Ну если окромя фанктекста ничего нет.. чего ж ты хочешь тогда ?
defcls.prm положи в каталог ИБ (или исправь свой, чтоб пути к моим классам были верные)… затем в пофиг
Всё бальшое спасибо заработал прописал в рпм все плагины в Базе
А у меня чего-то тоже п.6 не срабатывает (классы вроде подключены и перехватчик ГМ тоже вроде значится). Может чего где-то накосячли — я в 1С++ новичок.
(30) Формекс и 1cpp каких версий загружены ?
См. на вкладке о программе.
+31 Можешь еще вот что сделать :
В ПриНачалеРаботыСистемы прописать это:
Настройки=СоздатьОбъект(«УправлениеНастройками»);
Настройки.Сбросить(«Проверка типов»);
Настройки.Сбросить(«Отладка»);
Настройк
(31) Формекс 2.0.5.93, 1cpp 2.5.0.7.
(32) прописал.
Все равно эффекта нету :((
Может быть нужно еще какие-то классы или ВК подключать?
(33) Нет. нужно всего лишь взять 1сpp 3.0.1.23
http://www.1cpp.ru/images/3/32/Icpp-latest.rar
+34 Не помню ужо, но вроде как в 2* небыло вообще перехватчика..
:(( с 1срр 3* я лопухнулся. Честно заменил dll. Теперь в запущенной 1С честно светится 3.0.1.23. Но на комбинацию клавиш КНТРЛ+Ф12 не реагирует. Может еще что-то, а может я что-то не так сделал.
Плагин sciLexer 1.74 в конфигураторе видится.
Кстати, а какой-нибудь визуальный эффект от операторов ЗагрузитьВнешнююКомпоненту(«1sci.dll»);
должен быть?
(36) да… Даже на скрине видно …
На вкладке «О программе» какие ВК светятся ? Каких версий ?
Еще какие-нить классы грузишь?
И это, когда пункт 5. из описания делаешь, не ругается ?
Случаем нет нигде явного отключения перехвата клавиатуры через Сервис.ПерехватКлавиатуры(0) ?
О-оо ё, прошу простить великодушно — про пункт 5 я то и забыл. Теперь все почестному выполнил все 6 пунктеров и зарядился положительными эмоциями :))
Но вот установка привязок не заработала. Выдает ошибку: sci=гФорма.СоздатьЭлементУправления(«Scintilla»,»МодульФормы»);
{D:РОМАН_ТБАЗЫ_1С7_7ТОРГОВЛЯРЕДАКТОР.ERT(909)}: Недопустимое имя класса: ‘Scintilla’.
(40) Значит не загружена ВК «1sci.dll»;
+41 + SciLexer.dll должна быть там, как написано в описании…
(41) твоя правда. Усе заработало. Однозначно +. Все так и напоминает о 8-ке …
А скажи пож. в режиме 1С, я увидел, что текст модуля парсится как в конфигураторе (колорером), а вот телепатических вещей кажись нету (ту же процедуру «ПриОткрытии» искать нужно будет рученьками?
(43) да..
ЗЫ: я забросил этот проект.. ибо пока нет решения выгрузить форму из предприятия в текстовый файл..
А так, была идея создать редактор по типу интелигента, только изменения сразу видеть через турбомд.
(44) А в чем загвозд (я правда с турбоМД не работал еще, но походу и до него доберемся — с 8-ки пересесть на 7-ку — ну очень скучно будет, а тут нарыл 1С++ и началось … копание)?
(45) нет решения выгрузки открытой формы из предприятия в текстовый файл.
+46 и Альф и на Орефков обещались поглядеть и.. как-то не срослось.. нет времени.
(46&47) Понятно. Будем изучать ТурбоМД и скриптики по чуть-чуть, а там посмотрим.
Доргой автор!
Мне с большим трудом удалось всё заставить работать — допёр по косвенным замечаниям в этих постах, что нужна TurboBL, чего ,вроде, не было написано в инструкции. Присобачи — всё заработало. Мне открылся новый мир. Спасибо!
(49) отдельно ставить turbobl.dll не нужно, она сто лет в обед интегрирована в саму 1срр.dll
+50 Просто, для правильной работы класса «Перехватчик» нужно включить TurboBL в настройках при старте системы и всё.
Вобщем, колдун из меня плоховатый, но сработало — и то слава Богу. А Вам — БЛАГОДАРНОСТЬ за Вашу работу. Владимир.
А у меня все заработало сразу.
НО
Выбираю Меню файл — Редактор — Жму Подключить
Но открываю форму на ней всего один реквизит ФИО.
Жму CTRL + F12. Появляються новое меню
Редактирую привязки:
По горизонтали : Растягивать
По вертикали : Вниз (хотя нужно вверх, но там такого пункта нет — только при сложной привязке, ну да ладно пусть будет вниз)
Полученный код вставляю в нужные места модуля.
Открываю форму и что. Реквизит просто исчез. Судя по отладчику ему присвоены координаты далеко влево за пределы формы (например ширина формы 800 а в УстановитьАтрибут(Лево = 1480,и т.д.,,,)) я так понимаю что реквизит просто уехал далеко влево.
(53) С текстом привязки — там ошибка…есть..просто никто не писал — я и не выкладывал исправленный вариант.
+54 Хотя нет.. посмотрел — всё должно работать…
Полный Код привязки можешь привести?
//====================================================
//Этот текст следует поместить в модуль формы….
//©Ёпрст
//====================================================
Перем гРФорма;
Процедура ПриИзмененииРазмераОкна(ТипСобытия,Ширина,Высота)
гРФорма.ПриИзмененииРазмераОкна(ТипСобытия,Ширина,Высота);
КонецПроцедуры
Процедура ПриОткрытии()
гРФорма=СоздатьОбъект(«Общие.Форма.Привязка»);
гРФорма.УстановитьФорму(Форма);
гРФорма.Привязка(«ФИО»,»T»,»Форма»,»W»,»Форма»);
КонецПроцедуры
В свойствах формы птица изменять размер снята
Все компоненты загружены в глМодуле-ПриНачалеРаботы
Попытка
ЗагрузитьВнешнююКомпоненту(«1CPP.dll»);
Исключение
Сообщить(«Ошибка при загрузке ВК 1CPP.dll»);
КонецПопытки;
Попытка
ЗагрузитьВнешнююКомпоненту(«FormEx.dll»);
Сервис = СоздатьОбъект(«Сервис»);
ФормаРасш = СоздатьОбъект(«РасширениеФормы»);
Исключение
Сообщить(«Ошибка при загрузке ВК FormEx.dll»);
КонецПопытки;
Попытка
ЗагрузитьВнешнююКомпоненту(«SpreadSheet.dll»);
Исключение
Сообщить(«Ошибка при загрузке ВК SpreadSheet.dll»);
КонецПопытки;
Попытка
ЗагрузитьВнешнююКомпоненту(«1sci.dll»);
Исключение
Сообщить(«Ошибка при загрузке ВК 1sci.dll»);
КонецПопытки;
(56) Вот это еще вставь в модуль отчета:
Процедура ПослеОткрытия()
гРФорма.ПослеОткрытия();
КонецПроцедуры // ПослеОткрытия
Пардон.
Я еще в модуле класса Привязка в процедуре ПривязкаАтрибута
в конце текста модуля перед КонецПроцедуры вставил Флаг=0;
Теперь часть реквизитов растягиваеться но за пределы формы часть исчезла.
Если ни чего не менять то привязки не срабатывают.
Смотрел в отладчик
Проц класса ПриИзмененииРазмераОкна
Перем Лево, Верх, Ширина, Высота;
// СЮДА ПЕРЕДАЕТЬСЯ -1
Если Флаг=-1 Тогда
ШиринаПривязки=РасширениеФормы.Ширина;
ВысотаПривязки=РасширениеФормы.Высота;
Флаг=1;
Возврат; //ЗДЕСТЬ ЗАКАНЧИВАЕТЬСЯ ВЫПОЛНЕНИЕ МОДУЛЯ
КонецЕсли; // И НИЧЕГО НЕ ПРОИСХОДИТ
Если Флаг<>0 Тогда
Возврат;
КонецЕсли;
(58)
http://webfile.ru/4052296
Лови сам класс и пример использования..
По рекомендации Ёпрст вставил в модуль формы с привязками вот это
Процедура ПослеОткрытия()
гРФорма.ПослеОткрытия();
КонецПроцедуры // ПослеОткрытия
и все заработало
😀
+59 Ты (57) сделал еще ?..
ЗЫ: а в классе не реализована правильная сортировка привязок.. если привязки связаны между собой, т.е один атрибут зависит от другово…
в (59) наглядный пример работы.
ЗЫЫ: можешь
Еще один пардон
Горизонтальная привязка работает правильно а вот вертикальная нет
Настроена сложная привязка
Вертикальная: Форма.КВерхнейГранице.
Делаю форму максимизированно и реквизит опускается на середину формы по вертикали.
По горизонтали все ОК.
(62) Замени «T» на «H» — будет растягиваться..
🙂
А вообще — нажми в классе на описание — там есть полное описание, что означает T,W,H,L, LW,TH,BR…
Вылечил только когда переделал привязку
Делал простую привязку и для реквизита вертикальную привязку делал не назначено, а горизонтальную оставил растягивать. Этот реквизит был первым сверху. Сейчас попробую настроить второй — тот что по ниже.
(64) посмотри лучше пример(59) — там всё наглядно, кто за кем и когда едет…
Аналогичным образом сделал и для нижнего реквизита — все ОК.
Короче говоря все работает если:
Переменную модуля гФорма, которую делает конструктор, переделать на гРФорма
и в модуль добавить
Процедура ПослеОткрытия()
гРФорма.ПослеОткрытия();
КонецПроцедуры // ПослеОткрытия
или если процедура ПослеОткрытия() уже определена (как у меня)
то в тело процедуры, в любое место (например, в начало) добавить
гРФорма.ПослеОткрытия();
НУЖНО ОТМЕТИТЬ:
В процедуре ПриОткрытии перечисляються реквизиты для которых настраиваються привязки (НАПРИМЕР)
гРФорма.Привязка(«тПоиск»,»T»,»Форма»,»»,»»);
гРФорма.Привязка(«картПолеПоиска»,»T»,»Форма»,»»,»»);
гРФорма.Привязка(«тПоиск1″,»T»,»Форма»,»»,»»);
гРФорма.Привязка(«ПолеПоиска»,»T»,»Форма»,»»,»»);
у меня эти реквизиты лежат на картинке картПолеПоиска
в таких случаях важен порядок вызова привязок что бы все реквизиты были видны на картинке и не прятались за ней.
ВСЕ.
очень интересно
описание многообещающее
Где можно скачать класс Общие.Форма.Привязка? В (59) Ёпрст ссылка не рабочая.
Извините, вижу-вижу вторую ссылку на Общие.Форма.Привязка.rar