<?php // Полная загрузка сервисных книжек, создан 2025-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='\
>Нужно ли данное исправление для 8.0 SQL (клиент-сервер)?
>>Нет, там эта проблема не существует.
Это можно понимать что проблема для SQL вообще не существует? Или для 7.7 плуг все-таки нужен?
Поскольку использую еще для ДБФ — плюс однозначно.
(VasilyKushnir) Для 7.7 эта проблема существует и в SQL-ной версии тоже.
Спасибо. А то я удивился — пока только 5 юзеров перевел на скуль, а они орут, что все-равно транзакции. Пока буду разбиратся с оптимизацией блокировок на скуле, поставлю и там плагин.
(romix) Если добавишь все свои наработки по 1С
Переплюнешь всех по рейтингу 😉 и Че и O-Planet
Большое тебе спасибо за твои длл-ки и прочие приблуды для 1С!
Добавь себе сайт 😉 пускай нубы знают, да + будут лишние
(4) Это точно! Я под любой разработкой Ромикса готов поставить плюсик не глядя. Сколько хороших идей от него почерпнул… Одним словом — добротно сработано.
(4) Не надо путать нас в одну кучу — Ромикс — разработчик, а я — девелопер (если упрощенно — Ромикс делает кирпичи, а я из них пытаюсь стенку сложить 😉
Чебурашка! Что не спишь? Замышляешь что-то наверняка… 🙂
Поправил для 8.1 — теперь должно работать на более новых релизах (раньше не работало).
Также убрал внешние компоненты (плагином к программным файлам по-моему лучше), чтобы не создавать разных вариантов и лишних вопросов.
Дописал описание по поводу сигнальных файлов, и в каких случаях чего нужно ставить.
Очень помогло. Ромикс супер.
Вот видишь конкуренты уже боятся!
Если подумать ну рейтинг … кому он нужен … хотя как портфолио сойдет 😉
А сайт x-romix.narod.ru в профиль добавь, пускай народ знает.
И все-таки оставь для 77 версию с длл-кой
У нас например запрещено патчить длл-ки, а для запуска плагина требуется патчинг …
Хотя можно воспользоваться vkloader.dll, но лично у меня все версии глючили …
Поспешил длл-ка на месте … если ее грузить по старому проблем не будет ведь?
Мне сообщают, что на релизе 8.1.9.54 теперь все работает.
(Mihenius) Внешнюю компоненту оставить? Да она меня что-то не воодушевляет…
Я вот сейчас что подумал. Если проблема только в патчинге, то я могу замутить загрузчик в виде внешней компоненты. А она уже подгрузит те же самые плагины.
втыкнул загрузку ВК при старте системы — все равно блокировки изредка наблюдаются…
(16) А куда же они денуться, если нагрузка большая? Но возникать будут гораздо реже. Пользуюсь разработкой romix уже года полтора на dbf в терминале, не представляю, как мы обходились без нее раньше 🙂
Кстати, у меня вариант с внешней компонентой сильно глючил на 2003 винде, так что всем советую вариант плагина.
(15) Это было бы ИМХО то, что нужно. Патчить не всегда есть гуд, а тут хоть не так явно, не каждый разберется.
экспериментировали на ДБФ, все сделали по инструкции, но «ошибка транзакции…» продолжает появляться чередуясь с сообщением «ожидание блокировки»…
может подскажете — что сделали не так? 🙁
(20) Читать описание обработки до просветления.
Если не получается читать, пригласите чтеца он вам прочитает вслух.
Хорошая штука, спасает. Вот только с 25 релизом 7-ки и SQL 2005 сеанс 1С-а падал непредсказуемо в момент ожидания блокировки. С 27 пока работает нормально.
Неудобство с окошком о паузе, оно активизуруется при ожидании и переключает из других приложений обратно, а сообщение в трее, в случае использования опубликованного приложения Citrix’a, правильно не отображается. Хорошо, что можно отключить, и то, и другое.
в ini файле нет параметра «Зацикливание=1», а если я его ставлю — вылетает ошибка «Неизвестный параметр ini-файла»:(
Нужен ли патч для 8.0 SQL?
Нет, там эта проблема не существует.
ДА вот какраз и существует проблема у меня есть под 8 ку SQL такая же штука .
Кстати, как работает с Kernel33.dll отhttp://infostart.ru/projects/811/ ? Глючит?
В Kernel37.dll заложен аналогичный функционал, но вроде там работает по другому …
Может в вашей компоненте заложить снятие ограничения в 1ГБ для ДБФ баз?
Да блин ну что за вы люди не помочь не фига:(
проблема существует 🙁
ну вот сматрите
1С:Предприятие 8.0 (8.0.18.2)
Конфа и как видишь релиз Семейство «АСТОР: Ваш магазин 6.0» (6.0.15.8)
сама база гдет 7 гигов лог транзакции около 40 ка. Гигов сервак оптерон 2 процессорный 4 гига озу пользователеи одновременно работающих и проводящих наклдые всякие 16 РОБОТОВ . Загрузка проца 100 % а оперативы жарет 4,75 . Работа всех идет в терминальном режиме. Хотел твою разработку применить в этом во всеи и помогло бы конкретно!!!!Но б..ин муха она тока на фаиловом работает а на SQL нет памагииитя плз
(26) Учим русский язык + вам никто и ничего не должен
Попробуйте связаться с автором по мылу или через личку
Хотя, мне кажется, вам лучше обратиться к разработчику вашей конфигурации.
Вы лог транзакции не чистите специально?
(25) (Mihenius)
http://infostart.ru/projects/811/ ? Глючит?
>> Кстати, как работает с Kernel33.dll от
Да. Поэтому и появился Kernel37. Но алгоритм у romix лучше.
>> Может в вашей компоненте заложить снятие ограничения в 1ГБ для ДБФ баз?
Данный алгоритм должен включатся до открытия файлов DBF. А алгоритм разработки может включаться и позже. Проще в разработке romix учесть при перехвате еще и имя Kernel33.
(28) ?) Или может вы доработаете свой Kernel37?
Выложите отдельной обработкой …
(29) (Mihenius)
Мало вероятно. Других дел очень много…
На Винде 2003 сервер возникла такая же проблема как у Vesna (коммент №20), база ДБФ 7.7, проц разгрузился, но иногда после сообщения в трее «Ожидание блокировки» вылетает сообщение об ошибке транзакции и 1С закрывается. Очень обижаются пользователи когда это происходит при вводе 120 строки документа, который, понятное дело не сохраняется=). Что может быть не правильно, устанавливал обработку строго в соответствии с описанием.
Уточнение: ошибка происходит только если изменяется элемент справочника Товаров (ТМЦ), при нажатии Ок.
Не могу пропатчить bkend.dll Пишет: не могу открыть файл
Добрый день! Подскажите, пожалуйста, а для 27 релиза как поступать — или там уже проблема не актуальна? спасибо
Проблема в 7.70.027 вполне актуальна.
Самое интересное, что когда-то была другая компонента (того же автора?), «vk_sleep_1C». Грузилась она другим способом :
Если ( ЗагрузитьВнешнююКомпоненту(«vk_sleep_1C.dll») = 1 ) Тогда
vk_sleep=СоздатьОбъект(«Addin.vk_sleep_1C»);
vk_sleep.УстановитьПаузуПриБлокировке(1024, «7.7»);
vk_sleep.ПоказыватьВсплывающиеПодсказки=0; //если=1, то показывает balloon tooltips в трее при блокировке.
КонецЕсли;
То есть не патчили DLLки 1С на диске, а ремонтировали проблему как-то иначе. (Кажется читал, что тоже патчили, но уже в памяти.)
Сейчас ссылок на неё в сети почти нет (где скачать — вообще не нашел). Хотя данный вариант мне, от чего-то, более приятен, пусть уж на диске эти правообладательские ДЛЛ останутся нетронутыми, а в памяти — не проверят 🙂
Вполне исправно пашет… Вроде 🙂
Автор, чем vk_sleep_1C.dll плоха?
Добрый день.
А не повлияет ли снятие блокировок на неверные расчеты?
(учет по среднему)
скажем
(1) бухгалтер вводит документ поступление МПЗ
(2) начинает делать какой либо документ по списанию этого МПЗ
(2) закончил ввод и начинает проводить
на половине пути проведения документа вторым бухом, запускает проведение первый бух
т.е. возможна ситуация
(2) получаю остатки по МестамХранения
(1) изменяет регистр Партии и МХ
(2) получает остатки по Партиям
(2) средняя цена изменилась в сторону увеличения
в случае с блокировкой транзакций, остатки и средние суммы посчитаются верно,
а если блокировки отключены? может такое произойти и на сколько вероятно?
Молодец.
Список исправленных ошибок в 8.1.14.69
10025077 Ввод данных в поля ввода
Проблема:
При вводе данных в поле ввода наблюдается 100% загрузка процессора компьютера.
Дата публикации: 2009-06-10
Установка прошла быстро.
Пока наблюдаю за сервером, если и происходит 100% загрузка процессора, то на секунду-две. Работать стало веселее 🙂
Спасибо автору!
Ошибка открытия файла! 1с 77 платформа 27,WinServer 2003 x64…
romix,плагин для 27-й платформы не работает?
Я исправил проблему для 8.1 — не запускались файлы командой наподобие
ЗапуститьПриложение(«D:Temp811.xls»);
Действительно (36) , найти не реально что бы просто скачать. По пути начитался на форумах и т.д. что люди пользуют её. Т.е. работает. Автор не ответил на Ваш пост — не понятно почему.
На сайте автора хранится куча старых его разработок, и их развитие.(Что в принципе верно, видно ход мысли, да и вообще..)
Но на эту vk_sleep_1C.dll никаких намёков.
(43) А это что? —http://x-romix.narod.ru/vk_TerminalSleep.rar (это по поводу невозможности найти vk_sleep_1C.dll. Там даже с исходниками).
(45) (NagNag)
«Компоненту пришлось отключить!»©
И помогло? 😉
«Я это связываю с не корректной отменой транзакции.»(с)
Компонента от Романа (romix) не имеет отношение к отмене транзакции.
Вы смогли устранить проблему «CodeBase Error #: -310» ?
Если не устранить эту проблему, то ошибки могут быть любые…
Помогло! Прежде чем отключить компоненту полечил базу! Ошибка повторилась в первый же день!
Опять полечил и компоненту больше не включал! Такой ошибки больше не повторялось!
CodeBase Error #: -310 была ошибка была в другой базе, в бухгалтерии 7.7, там пришлось обрезать базу, так как Dbf — файл превышал 2 ГБ.
(47)
Эту компоненту использует очень много пользователей.
Вы первый, у кого из-за неё возникли проблемы.
Сообщите, пожалуйста, в этой теме, если обнаружатся другие причины сбоев (ошибок)…
Обязательно сообщу! Мне очень жаль что пришлось отключить компоненту! Это скорее всего ошибка самой 1С, возможно из-за того что некоторые пользователи прерывают ожидание захвата транзакции аварийным завершением работы 1С.
я не понял,извините,а что в обработку проведения нужно vksleep вставлять для проверкии сигнального файла?И зачем тогда сигнальный файл нужен,роботы это кто пользователи?А что после блокировки нельзя было sleep поставить,я не догоняю?
Поставили 2008 сервер + секретный релизhttp://infostart.ru/public/82018/
Все запустилось и счастье где-то близко, но вернулись к проблеме «Ожидания блокировки»
Т.к. и «секретный релиз» и VK_TerminalSleep используют одну и ту же BkEnd, то либо вылетаем «Не верная версия ODBC», либо блокировки 🙁
Есть у кого-нибудь сборка из этих двух BkEnd в одной? или еще варианты?
Не дождавшись ответа, наваяли вот это 🙂
http://infostart.ru/public/83504/
А вот как это использовать в 1с предприятии 8.2?
приведенный вариант в 8.2 не работает !
Пожелание: Тумба-Тумба-Тумба-Румба <tttr@mail.ru> из текстового файла… Плз…
АдресПолучателя = СтрЗаменить(АдресПолучателя,»<«,»»);
АдресПолучателя = СтрЗаменить(АдресПолучателя,»>»,»»);
АдресПолучателя = СтрЗаменить(АдресПолучателя,»(«,»»);
АдресПолучателя = СтрЗаменить(АдресПолучателя,»)»,»»);
Пока Найти(АдресПолучателя, » «) Цикл //Цикла
ПустаяМиска = Найти(АдресПолучателя, » «);
ПозГавГавки = Найти(АдресПолучателя,»@»);
Гафф = ПустаяМиска — ПозГавГавки;
АдресПолучателя = Сред (АдресПолучателя, ?(Гафф>0,1,ПустаяМиска + 1),?(Гафф<0,СтрДлина(АдресПолучателя),ПустаяМиска — 1));
КонецЦикла;
для работы в 8.2 пришлось исправить:
Если НЕ Письмо.ОбратныйАдрес.Количество() Тогда
ОбратныйАдрес = Письмо.ОбратныйАдрес.Добавить();
Попытка
ЗаполнитьЗначенияСвойств(ОбратныйАдрес,Письмо.Отправитель);
Исключение
КонецПопытки;
Если ОбратныйАдрес.Кодировка = «» Тогда
ОбратныйАдрес.Кодировка = «KOI8-R»;
КонецЕсли;
КонецЕсли;
перед
Почта=Новый ИнтернетПочта;
Почта.Подключиться(ИПП);
Почта.Послать(Письмо);
…
а для 8.2 автор не доработает?
Для 7.7 очень помогло, спасибо автору.
Спасибо, помогло
На 2003 помогло, а на win2008 не заработало
У нас на предприятии этот вариант не заработал, т.к. библиотеки, что автор патчит, уже «исправлены». Скачал на сайте автора по ссылкеhttp://x-romix.narod.ru/vk_hook1C.rar . Функционал тот же, плюс то, что ничего патчить не надо (проблема решена путем подмены процедуры библиотеки ole32.dll). Пробовал для Windows 7… выдавала ошибки при загрузке…пришлось немного поковырять исходники. На тестовой базе все работает отлично. Завтра поставлю на рабочую… если что не так, буду жаловаться ))). Плюсую.
при включении попапов через некоторое время вешается сервер от распухания сислога.. но возможно косяк с самим вин2003срв
Помогло
ОТЛИЧНАЯ РАЗРАБОТКА! Рекомендую всем!
Проц разгружает, НО периодически 1с вылетает с ошибкой: Таблица 1sdnlock Ошибка при обращении к данными при транзакции, выполняемой другим пользователем. 🙁
Клиент-серверная прекрасно работает на SQL2003, а вот на SQL2008R2 — ругается ужеи пирпопытке подключения к базе. Можно ли как-то подправить?
Большое спасибо автору! Жить с компонентой стало гораздо проще!!!
Вешь! Работает!
Будем пробывать :). Спасибо автору
C 1cc++ нормально совместно работает? Конкретнее с версией 2.0.3.7.
Терминал 2003 DBF версия, релиз 027
Ответ Альберту (в личку к сожалению не постится):
Там может быть уже это реализовано ЕМНИП, посмотрите в документацию, вроде бы Hogik встраивал то что нужно в свою DLL.
А проверить можно попыткой параллельного проведения двух доков в пустой базе, если в модуле проведения одного из них вставить Предупреждение для остановки транзакции, и следом начать проводить другой док той же базы из соседнего окна 1С. В непатченной 1С загрузка процессора возрастает до 100%, а в патченной остается близкой к нулю.
Обязательно попробую. Спасибо автору.
Когда-то давно разграничивал приоритетом, в 100% перестал уходить, где-то в архивах должна быть + пользовательский интерфейс
Привет. Платформа 7.70.027, ТиС 9.2. После подключения dll начинает тормозить подбор номенклатуры, долго обрабатывается процедура глПолучитьОстаткиНоменклатуры, получение сводных остатков по регистру.
У меня одного работает отлично. Если под одним пользователем искусственно повесить при проведении, то под вторым тоже подбор работает нормально. Начинает тормозить при 30 пользователях, на поиск уходит 2-10 секунд вместо <1 секунды.
Тестировал утром, посмотрел нагрузку на процессор, на память, жесткий диск, везде всё нормально, но при этом подбор тормозит. Может есть идеи?
Возникла проблема при использовании исправленной компоненты для клиент-серверной (SQL) версии 1С 7.7 (папка plugin_sql_77). В файле odbc33.ini выключил параметр Ignore_Error_HYT00=0 чтобы не игнорировалась ошибку «HYT00 — Таймаут истек» и выводилось сообщение на экран. Сообщение необходимо для того если пользователь не хочет ждать блокировки, он отменяет транзакцию и продолжает работу в 1С. Но образовалась из-за этого другая проблема: пользователь нажимает ОК проводит документ и отходит от компьютера не дожидаясь результатов проведения, в это время на экране сообщении о транзакциях и предложение продолжить ждать или отменить проведение, и пока не закрыть окно «HYT00 — Таймаут истек» транзакция активна и другие ждут. Может кто подскажет как избавиться от этой проблемы?
(74) kompbuh, AutoIt
(75) ЪЪЪ, можно подробнее
Доброго времени суток всем.
Скачал данный дистрибутив. Установил на своем компе: скопировал файлы odbc33.dll,odbc33.ini в папку 1cv77. Запустил patch_bkend.exe.
из папки plugin_sql_77.
При запуске 1С выдается «ошибка инициализации ODBC».
Используется 25 релиз 1С 77. win 7-64 на компе. SQL сервер 2008.
короче не работает 🙁 …. куда копать?
Добрый день!
Скажите, а для 27-го релиза 1с 77 подойдет данный плагин? Указана совместимость с 25-м релизом.
А гибкие блокировки от софтпоинт с этим совместимы или это про тоже?