Оптимизация конфигураций на платформе 1C SQL
На главную
Обратная связь
Карта сайта
Оптимизация конфигураций на платформе 1C SQL
ГлавнаяМатериалыFAQБиблиотека ToySQL
  • Деятельность

  • Материалы

  •      › Скачать
         › Статьи
         › FAQ
         › Новости
  • Контакты

  • Форум



  • e-mail:
    icq: 169296011
    © 2003-2010 Шемякин Павел





    Библиотека ToySQL

    Всего: 19    пред. 1 2 след.

  • Вылетает 1С в монопольном режиме при выборке данных
  • Требуется ли переделка кода в отчетах и модулях проведения при использовании ToySQL
  • Виснет 1С при загрузке библиотеки. На некоторых компьютерах библиотека не загружается
  • В модуле проведения не подставляется ТекущийДокумент()
  • Как получить остаток по регистру на документ
  • На одной машине ToySQL запускается на другой нет
  • Метод Выгрузить для параметризованного запроса отрабатывает только один раз
  • Ошибка 0x8007007e при регистрации loader.dll
  • Использование функций SQL и выражений в запросах
  • Как получить остаток по регистру на точку актуальности
  • Вылетает 1С в монопольном режиме при выборке данных
  • В монопольном режиме после выполнения запроса обязательно необходимо закрывать выборку методом Закрыть. Если во время выборки произошло исключение (ошибка и т.п.),то выборка остается открытой и когда 1С пытается выполнить свой запрос, то возникает ошибка. Рекомендую в монопольном режиме "проблемные" места заключать в конструкцию Попытка Исключение и при исключении закрывать выборку.

  • Требуется ли переделка кода в отчетах и модулях проведения при использовании ToySQL
  • Да. При использовании библиотеки необходимо переписывать расчет итогов в модулях, формирование запросов для получения отчетов. Также нужно менять код обработки результата запроса.


  • Виснет 1С при загрузке библиотеки. На некоторых компьютерах библиотека не загружается
  • Кроме проблем с необходимыми библиотеками, причиной (особенно в случае зависания 1С) могут быть старые драйвера клиентской части SQL Server (ODBC драйвера). Чтобы исключить эту возможную причину, скачайте с сайта Microsoft последний MDAC (Microsoft Data Access Components), в котором содержатся эти драйвера и установите его на тот компьютер, где библиотека не загружается.

    Причиной такого поведения библиотеки при загрузке может быть также использование вами в работе SQL Server Developer Edition. Уже в нескольких случаях я пытался установить ToySQL для работы в этой редакции, но либо новое соединение не создавалось, либо выполнение запроса тормозилось так, что казалось будто бы 1С зависла. Поэтому не рекомендую использовать в работе данную редакцию SQL Server. Хотя сам проверяю работу библиотеки именно на SQL Server Developer Edition.

    Проверить действительно ли проблема в драйверах (а точнее в SQL Server) вы можете загрузив 1С в монопольном режиме. При этом новое подключение не создается и работа производится ч/з соединение 1С.


  • В модуле проведения не подставляется ТекущийДокумент()
  • В модуле проведения желательно после каждого выполнения запроса вызывать метод Закрыть.


  • Как получить остаток по регистру на документ
  • Ну как. Как обычно... :) Вместо даты нужно просто подставить документ. При этом если перменная документа создана ч/з СоздатьОбъект, то лучше передавать Док.ТекущийДокумент(). Для вычисления остатка в модуле документа используйте следующую конструкцию:

    SELECT [Партия],
    Кол = [НачОст(Количество)],
    Сум = [НачОст(Сумма)]
    FROM [(Регистр.Остатки([@ТекущийДокумент()])
    FROM [ТабличнаяЧасть.Перемещение] ТЧ
    WHERE [Фирма] = [@Фирма] AND
    [Склад] = [@Откуда] AND
    [ТЧ.Ссылка] = [@ТекущийДокумент()] AND
    [Рег.Товар] = [ТЧ.Товар]
    GROUP BY [Партия])] Рег
    

    в этом запросе главное, что нужно использовать функцию НачОст и указывать нужно только первую дату (документ). Фильтрацию по товарам можете делать по своему (ч/з СЗ, временный объект) - я делаю так. Да и не забывайте выполнить метод Соединиться(0), чтобы работать в соединении 1С.


  • На одной машине ToySQL запускается на другой нет
  • Скорее всего не хватает какой-либо библиотеки необходимой для ToySQL. При этом в демо-версии вообще никаких сообщений не выдается, так как библиотека просто не может быть загружена. Обычно не хватает библиотеки msvcp60.dll. Какой библиотеки не хватает можно проверить с помощью программы из состава Visual Studio depends.exe ее можно найти в инете. Скопируйте библиотеки с той машины где библиотека работает на ту, где не работает.


  • Метод Выгрузить для параметризованного запроса отрабатывает только один раз
  • В методе Выгрузить есть параметр, который отвечает за закрытие выборки. По умолчанию он равен 1, то есть после выгрузки в ТЗ выборка закрывается. В случае с параметризованным запросом этот параметр должен равнятся 0, чтобы выборка не закрывалась. В конце ее надо будет закрыть методом Close (Закрыть).


  • Ошибка 0x8007007e при регистрации loader.dll
  • Невероятно, что у вас появилась такая ошибка! В loader используются сторонние библиотеки по минимуму. После того как была убрана зависимость от atl.dll такой ошибки быть не должно. Если все же такая ошибка появилась, найдите в инете программку depends.exe (она идет вместе с Visual Studio) и посмотрите все зависимости. Если какой-то длл-ки не хватает, там сразу это станет видно. Иногда бывает, что зависимость от какой-либо библиотеки непрямая — то есть простой поиск по файлу библиотеки строк .dll может не помочь. Можете почитать (если сохранится на тот момент когда вы читаете) это обсуждение.


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


  • Как получить остаток по регистру на точку актуальности
  • Для этого в качестве конечной даты используйте следующее выражение: КонМесяца(ПолучитьДатуТА()). В последних версиях библиотеки можно просто не указывать конечную дату и остаток будет считаться на точку актуальности.


     наверх