TurboBL




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

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

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

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

76 Comments

  1. mdzen

    Покрутил . Вещь!!! Особенно при работе с ТЗ и групповым контекстом разница во времени весьма ощутимая, после загрузки ВК это раз в 5-10 быстрее.

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

    Получается весьма прикольно.

    У вас сказано, что «Функционал компоненты включен в состав 1С++», тогда вопрос:

    Где ее включить в 1С++?

    Reply ↓
  2. mdzen

    Вроде нашел. По всей видимости следующий код включает ускоритель в 1С++:

    Попытка
    СоздатьОбъект(«УскорительГК»);
    Загружена=1;
    Исключение
    Загружена=0;
    КонецПопытки;
    
    Reply ↓
  3. orefkov

    В 1С++ этот функционал по умолчанию включен, те достаточно сделать

    ЗагрузитьВнешнююКомпоненту(«1cpp.dll»)

    Но пока в 1С++ более старая версия, в которой несовсем правильно работают таблицы

    при вызове методов модуля через контекст, и нет автоускорения контекстов внешних отчетов.

    Reply ↓
  4. orefkov

    Да, не стоит думать, что 1С будет после этой ВК «летать».

    Все-таки основное время в 1С тратится на доступ к базе данных, хотя в-среднем выигрыш по скорости будет, в районе 10-15 процентов.

    Reply ↓
  5. CheBurator

    да, все хорошо… но прямо как в анекдоте (вот еще вчера с глюком формекса в составе 1с++ встретился)

    — Скажите, это правда что вы виграли в спортлото «Волгу»?

    — Правда, но не «Волгу», а 1000 руб, и не в Спортлото, а в преферанс, и не выиграл, а проиграл…

    😉

    Reply ↓
  6. antonrost

    Валится 1С при «Запрос.Выполнить(…)»

    :(((((((

    Reply ↓
  7. orefkov

    Исправлено

    Reply ↓
  8. antonrost

    Вот это оперативность !!!!

    :)))

    +10, однозначно. С нетерпением ждем новых свершений.

    Reply ↓
  9. orefkov

    Оказывается, когда делаешь Запрос.Выполнить, 1С генерит исполняемые модули, видимо для вычисления внешних функций.

    Но чем-то эти модули отличаются, тк при вызове одного из их методов, 1С падает.

    Reply ↓
  10. корум

    +1.

    осталось телепат скрестить с 1с++, и научить её ускорять ДБФ.

    И получится НЕЧТО!

    Reply ↓
  11. JohnyDeath

    корум, а чем тебя скрипты Intellisense не устраиваютт?

    Reply ↓
  12. Saguna

    Валится при попытке выполнения кода управления таблицей в режиме ввода,

    например:

    Таблица.Область(, 1,, ФиксКол).ШиринаСтолбца(15);

    Reply ↓
  13. orefkov

    Проверю

    Reply ↓
  14. корум

    (JohnyDeath) Всё нравится. Но… 5-6 ДЛЛ хуже, чем 1. Забыть не получится ;о)

    Reply ↓
  15. O-Planet

    Ты, конечно, монстЁр, но кое в чем не прав.

    > Некомпетентность: GetNMethods можно вынести из цикла

    Уверен на 90%, что это НЕ функция, как таковая, а on-line определение, типа:

    class BBB

    { void *ptr;

    …

    public:

    int GetNMethods(int i) { return ptr+i; }

    }

    Поэтому, выносить его нет смысла.

    > Лень: не зря же FindMethod виртуальная, почему же она

    не переопределена ни в одном из наследуемых классов для более

    оптимального поиска?

    Это не лень, а осмотрительность. Функции позднего связывания, конечно, могут серьюзно украсить алгоритм и придать ему супер крутизну, но только не скорость выполнения! Это чуть ли не самый ресурсоемкий и медленный механизм. В предложенном тобой случае 1С работала бы медленнее раза в полтора.

    Reply ↓
  16. O-Planet

    В смысле

    int *GetNMethods(int i) { return ptr+i; }

    конечно, а ПТР не void* а int*

    Reply ↓
  17. orefkov

    (O-Planet) — типа наезд ради наезда?

    > Уверен на 90%, что это НЕ функция, как таковая, а on-line определение, типа:

    > class BBB

    > { void *ptr;

    > …

    > public:

    > int GetNMethods(int i) { return ptr+i; }

    > }

    > Поэтому, выносить его нет смысла

    Ты хоть 1CHeaders смотрел когданить, в 1С++ например?

    GetNMethods имеет такое объявление

    virtual int GetNMethods();

    А виртуальные функции не инлайнятся.

    > Это не лень, а осмотрительность.

    > Функции позднего связывания, конечно, могут серьюзно украсить алгоритм

    > и придать ему супер крутизну, но только не скорость выполнения!

    > Это чуть ли не самый ресурсоемкий и медленный механизм.

    > В предложенном тобой случае 1С работала бы медленнее раза в полтора.

    Странно, я как раз это реализовал (переопределение FindMethod в конечных классах)

    и заработало быстрее

    Reply ↓
  18. orefkov

    (Saguna)

    У меня не валится. Кинь мне пример таблицы, на которой у тебя падает

    Reply ↓
  19. to O-Planet

    >> Некомпетентность: GetNMethods можно вынести из цикла

    >Уверен на 90%, что это НЕ функция, как таковая, а on-line определение, типа:

    …

    >Поэтому, выносить его нет смысла.

    Не on-line, а очевидно inline? Не могет: она виртуальная. Интереснее другое: почему ее компилятор за цикл не вынес?

    >> Лень: не зря же FindMethod виртуальная, почему же она не переопределена ни в одном из наследуемых классов для более

    >>оптимального поиска?

    >Это не лень, а осмотрительность. Функции позднего связывания, конечно, могут серьюзно украсить алгоритм и придать ему супер крутизну, но только не скорость выполнения!

    Если так рассуждать, то тогда опять же, какого х. делать ф-цию виртуальной, если все равно не переопределять. Ведь вызов виртуала хоть на чуть-чуть, но медленнее вызова невиртуала.

    Reply ↓
  20. orefkov

    Компилятор не может делать предположений о том, что GetNMethods каждый раз возвращает одно и то же значений, тк не видит ее реализации.

    Reply ↓
  21. orefkov

    Глюк с таблицей (Saguna) исправлен.

    Номер версии менять не стал.

    Кто уже скачивал 1.1.0.4 — скачайте еще раз пжста.

    Reply ↓
  22. JohnyDeath

    (корум) >(JohnyDeath) Всё нравится. Но… 5-6 ДЛЛ хуже, чем 1. Забыть не получится ;о

    Дык ни одной длл-кой больше не станет! Это скрипты для телепата! Подробнее можешь почитеть здесь: http://www.script-coding.info/Intellisense.html

    Reply ↓
  23. корум

    (JohnyDeath) и таки ви мне будете говорить за интеллисенса?

    Ну не надо, стоит уже год.

    Телепат (+опенконф, естессно) подкупает своей открытостью, 1с++ — всеобъемлемостью. По крайней мере, пока. 1с++ = 1с++ плюс turbobl плюс FormEx плюс ещё что-то.

    Reply ↓
  24. А есть ли возможность выложить дебаг версию DLL?

    Просто где-то она работает (Сервер 2003), а где-то (локальная машина) не работает.

    При запуске 1С, она пишет внизу «Выполнение обработки» и через 2-3 сек. закрывается.

    Потом приходится заходить монопольно чтобы восстановить индексы и картина повторяется.

    Может быть не срабатывает хук на CBLContext::FindMethod, но это визуально же не определишь, а копаться с отладчиком не очень хочется, но видимо прийдется…

    Reply ↓
  25. orefkov

    Используются ли еще какиенить ВК?

    Не лежит ли где-нить на локальной машине старая версия TurboBL?

    Reply ↓
  26. В самое программе никакие сторонние ВК не используются.

    Для конфигурирования подключен ОпенКонф + Телепат + Intellisense.

    Сейчас проверил, на сервере просто стоит Опенконф+Телепат.

    Удалил Intellisense на локальной машине — то же самое.

    Локальные машина: Win2k3 RUS на AMD Athlon 3000+ и Win2k3 RUS на Intel Prescott 3.0Ghz с вкл. HT, на обеих вылетает.

    Проверил, если на Win2k3 RUS на AMD Athlon 3000+ включаю 1С в список исключаемых из DEP, то работает.

    На Win2k3 RUS на Intel Prescott 3.0Ghz с вкл. HT — не помогло…

    P.S. Локально TurboBL нигде не лежит (установлена первый раз, копированием в каталог базы).

    Reply ↓
  27. Это мой пост внизу 🙂

    Reply ↓
  28. Вроде как разобрались, это с машинкой что-то…

    Вообщем если у кого-то 1С будет закрываться при запуске, меняйте настройки DEP.

    Reply ↓
  29. orefkov

    (InSTaNT)

    Примерно понял в чем дело, завтра вышлю тебе для проверки исправленую версию

    Reply ↓
  30. orefkov

    InSTaNT

    Кинь мне свое мыло еще раз

    Reply ↓
  31. orefkov

    Ошибки исправлены.

    Версия 1.1.0.5

    — Компонента доработана для работы на многопроцессорных системах и процессорах с HT.

    — Компонента доработана для работы со включенным DEP.

    — Оптимизировано обращение к полям ТаблицыЗначений.

    Reply ↓
  32. JohnyDeath

    Александр, твоя оперативность поражает!

    А в 1с++ эти изменения будут внесены?

    Reply ↓
  33. orefkov

    Да. Сейчас как раз ведется тестирование.

    Reply ↓
  34. artbear

    Новая версия ТурбоБЛ включена в 1С++. Брать как обычно, в ночной сборке, начиная с сегодняшнего числа.

    Reply ↓
  35. Jkey

    Александр, Есть проблема, пользовал версию 1.1.0.2.

    Модули справочников, доков, модулей проведения доков

    использовал из текстовых файлов

    например

    #ЗагрузитьИзФайла ReferenceНомеклатураФС.txt //модуль формыСписка Номенклатуры

    в процессе работы 1С в режиме Предприятия правлю текстовые файлы модулей, изменения отражаются сразу.

    Заменил на 1.1.0.5 изменения текстовых файлов модулей не отражаются, пока не закрою 1С и снова не запущу.

    Откатил обратно на версию 1.1.0.2

    все заработало

    Просьба проверить.

    Reply ↓
  36. orefkov

    (JKey)

    Проблема исправлена. Качать 1.1.0.6

    В 1С++ исправления внесены.

    Reply ↓
  37. Jkey

    Спасибо Александр. Работает.

    Reply ↓
  38. maximum

    последняя версия Ошибка: форма открывается, но 1с-ина матерится

    Конт.Проверка();

    {Обработка.Тест.Форма.Модуль(129)}: Поле агрегатного объекта не обнаружено (Проверка)

    Reply ↓
  39. orefkov

    Нажми кнопочку «Загрузить TurboBL», закрой форму и попробуй снова

    Reply ↓
  40. orefkov

    Ктонить может подтвердить баг?

    У меня работает.

    Reply ↓
  41. maximum

    «Нажми кнопочку «Загрузить TurboBL», закрой форму и попробуй снова»

    так и делаю

    Reply ↓
  42. imsoftware

    Компонента просто замечательная! Все работает без ошибок с весьма ощутимым приростом в скорости. Тесторовалось на конфигурации по переносусинхронизации ИБ. Автору плюсик к рейтингу.

    Reply ↓
  43. Александр, а можно в нее добавить еще один небольшой сервис?

    На машинах win XP или 2K не работает поиск по букве в выпадающем списке значений, а это очень не удобно! (пример: открываем Анализ субконто, вид субконто 1 и пытаемся набрать …контрагенты а в 98 работает),

    P.S. нечто похожее видел в FormEX , однако 100% работоспособности не добился

    Reply ↓
  44. Бракозябра

    +1

    В чистой конфигурации в ГМ пишу три строчки

    Процедура ПриНачалеРаботыСистемы()

    ЗагрузитьВнешнююКомпоненту(«TurboBL.dll»);

    КонецПроцедуры // ПриНачалеРаботыСистемы()

    Сохраняю. Запускаю1С и … 1С падает.
    <

    Reply ↓
  45. orefkov

    В чистой конфигурации напиши три строчки:

    Код
    Процедура ПриНачалеРаботыСистемы()
        СоздатьОбъект("Справочник");
    КонецПроцедуры // ПриНачалеРаботыСистемы()
    

    Показать полностью

    Сообщи результаты

    Reply ↓
  46. Бракозябра

    Спасибо за науку.

    Reply ↓
  47. support

    а как быть с контекстом документа:

    Код
    Док= СоздатьОбъект("Документ.ПродажаЧерезФирму");
    Док.ВыбратьДокументы(НачДата,КонДата);
    Пока Док.ПолучитьДокумент()=1 Цикл
       ОткрытьФорму(Док.ТекущийДокумент(),КонтДок);
       КонтДок.ЗаполнитьПоДокументамЗаДень();
       КонтДок.Записать();
    .....
    

    Показать полностью

    выдает:

    КонтДок.Записать();

    {C:DORZHDB77DB_SOUZПЕРЕЗАПОЛНИТЬОБЩИЕНАКЛАДНЫЕ.ERT(18)}: Данная команда не может выполняться в формуле элемента диалога!

    можно как-нибудь сохранить документ?

    Reply ↓
  48. MAXXL

    Присоединяюсь к последнему вопросу — как записать и провести документ? Также не удалось поработать таким образом с уже существующим в базе документом (через ОткрытьФорму). Может не так что-то делал?

    Reply ↓
  49. orefkov

    Вообще-то сейчас проверил, точно такое-же поведение 1С и без загрузки ТурбоБЛ.

    То есть что загрузил ТурбоБЛ, что не загрузил, выдается такая ошибка.

    Может что не так делал?

    Reply ↓
  50. antonrost

    Я создал в модуле процедуру:

    Процедура _Записать()

    ПриЗаписи();

    Если СтатусВозврата() = 1 Тогда

    Записать();

    КонецЕсли;

    КонецПроцедуры();

    ———

    и вызываю Конт._Записать()

    Reply ↓
  51. MAXXL

    Так смысл то в том чтобы исходный код не переписывать. У меня обработка внешняя, запустилась , сделала все нужное, закрылась. Автор, где автор? Скажи что-нибудь по этому поводу!

    Reply ↓
  52. orefkov

    Еще раз повторю — таково ШТАТНОЕ поведение 1С.

    Вы хотите, чтобы я это исправил?

    Reply ↓
  53. MAXXL

    Ну если это можно исправить при помощи Вашей компоненты (не трогая саму 1С), то я думаю многим это придется по душе 🙂 А так , даже по текущим возможностям очень ускоряется исполнение всяких доп. обработок по внешнему заполнению документов

    Reply ↓
  54. последняя версия Ошибка: форма открывается, но 1с-ина матерится

    Конт.Проверка();

    {Обработка.Тест.Форма.Модуль(129)}: Поле агрегатного объекта не обнаружено (Проверка)

    Reply ↓
  55. rudra

    Действительно: Ввиду дорабатываемости компоненты было бы прямо здорово предусмотеть возможность выгрузки компоненты. Не знаю только возможно ли это?

    Автору респект.

    Maniac

    30.08.2006 А вообще было бы круто (можно даже сказать верх совершенства) если бы компонента имела режим включения выключения (в реальном времени) на закладке свойств 1С++ (Меню сервис — Параметры). Там кстати такие кнопки уже есть под некоторые свойства FormEx. Я думаю и для ТурбоБЛ такое будет реально.

    Очень уж хочется иметь возможность «быстро» сравнивать быстродействие в рабочем режиме на очень больших объемах баз данных.

    Reply ↓
  56. rudra

    oyua — положи TurboBL.dll в PF1cv77Bin

    иль забыл?

    Reply ↓
  57. Извините. Вы правы, забыл.

    Положил, все заработало.

    Ускорение действительно наблюдается и обращение к процедурам

    во внешних отчетах проходит.

    Отлично!

    Спасибо за труд и щедрую душу.

    Reply ↓
  58. можно как либо загрузить TurboBL без регистрации в реестре, например с помощью vkloader,

    Reply ↓
  59. orefkov

    Читаем историю версий:

    Версия 1.1.0.3

    — Изменен способ загрузки ВК, что уменьшило ее размер и позволило ей загружаться всегда.

    Это и означает, что TurboBL не нуждается в регистрации в реестре для своей загрузки.

    Reply ↓
  60. artbear

    >> Желательно, чтобы компонента имела режим включения выключения

    Данная фича реализована в 1С++ 2.5

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

    Но можно выключить ТурбоБЛ, перезапустить 1С, выполнить код без ТурбоБЛ, включить ТурбоБЛ, выполнить код с ТурбоБЛ и сравнить результаты 🙂

    Reply ↓
  61. avega

    проблема совмесной работы ТурбоБЛ и ФормЭкс. При загрузке ТурбоБЛ перестала работать обработка событий нажатия клавиш {Процедура ПриНажатииКнопкиКлавиатуры(КодКлавиши, Alt,Shift,Ctrl,ФСО)} т.е. она просто не реагирует на нажатие описанных кнопок в частности на нажатие «Insert» и «Delete»

    Reply ↓
  62. Pa3yM

    Большое спасибо! Компонента работает. Замерял время формирования прайс листа в Excel. С включенной компонентой формируется на 30% быстрее.

    Reply ↓
  63. waol

    супер — с модулем формы теперь стало заметно удобнее.

    если распечатывать пакетом документы таким образом — то на экране будут мелькать их открываемые формы. можно этого как нибудь избежать ?

    Reply ↓
  64. NFF

    Всё хорошо, но совместное использование TurboBL.dll с TurboMD.dll, перестает использоваться функционал последней

    Reply ↓
  65. artbear

    (66) У тебя старый ТурбоМД 🙁

    Ищи новый TurboMd.dll версия 1.0.0.1 размер 20480б

    ЗЫ не удивляйся номеру версии, это действительно новая версия, просто автор по неизвестной причине поставил такой номер.

    Reply ↓
  66. kivduts

    как узнать активна компонента или нет

    Reply ↓
  67. shiuck

    Ребята помогите у меня закрывается Предриятие , не загружается turbobl.dll

    Reply ↓
  68. sergebozz

    Без справочников вылетает 🙂

    Reply ↓
  69. JohnyDeath

    (70) Ставь последнюю 1с++ http://www.1cpp.ru/images/3/32/Icpp-latest.rar , в состав которой входит и TurboBL. Там эта проблема решена, + ускорено создание встроенных объектов 1C и 1С++.

    А что это у тебя за конфа такая без справочников?

    Reply ↓
  70. DarkAn

    >Хорошо бы поддержку Win7 😳

    Сори, все корректно работает :), Надо модуль загрузки библиотеки скорректировать, а то не грузит по умолчанию

    Reply ↓
  71. byos

    Такая проблема нигде не нашел похожей ошибки — при загрузке 1c пишет: ошибка загруки turbobl, самое интересное что версия 1.1.0.2 работает нормально, а 5 и 6 вылетает с ошибкой, внешние компоненты загружаю через hook_1c

    Reply ↓
  72. pisarevEV

    добрый день! с успехом использую ваш библиотеку, на разных базах

    всегда получал увеличение скорости построения отчетов в 2-3 раза

    однако сегодня не удача:

    77 торговля (почти обычная), крутиться на 2008-м сервере, поставил

    ВК, выигрыш по скорости 2-4%, т.е. почти нулевой… с чем это может быть

    связано?

    Reply ↓
  73. levoven

    добрый день! с успехом использую ваш библиотеку, скорость значительно возросла

    Reply ↓
  74. TrinitronOTV

    вот случайно наткнулся, по описанию заинтересовало, скачаю и попробую, спасибо автору за данный труд

    Reply ↓
  75. Agema

    Спасибо! ускорение ощутимое! есть базы с тысячами сотров (1С7 ЗиК). Как раз для них.

    Есть еще методы ускорения, именно для 1с7ЗиК ?

    Конечно нашел и http://infostart.ru/public/18924/, очень полезная статья.

    Reply ↓
  76. yuyu1

    Прекрасная библиотека! Спасибо!

    А если в процедуре Печать() есть вібор нескольких форм печати, можно как-то сделать, чтобы печаталась одна из них сразу, без выбора в каждом документе?

    Reply ↓

Leave a Comment

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