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

  •      › Продукты
         › Услуги
         › Партнеры
         › Прайс
         › Прайс (укр)
  • Материалы

  • Контакты

  • Форум



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





    Библиотека ToySQL — Продукты для оптимизации 1С

    ▪ Описание      ▪ Демо      ▪ Купить      ▪ Скачать      ▪ FAQ

    Библиотека ToySQL
    Версия: 2.2.12.17

    ToySQL — это библиотека, предназначенная для выполнения SQL запросов в системе 1С:Предприятие 7.7 SQL версии. SQL запросы делятся на два вида:

    • Метазапрос — это специальный SQL запрос, в котором используются названия объектов метаданных 1С и их атрибутов. Такой запрос невозможно напрямую адресовать серверу БД. Для того чтобы сервер мог выполнить запрос, предварительно необходимо его перевести на T-SQL. Что и делает ToySQL.
    • Обычный запрос — это запрос на "чистом" SQL, то есть запрос, в котором используются названия физических таблиц на сервере и их полей.

    Применение ToySQL в разработке обеспечивает следующие возможности:

    • Удобство — использование метазапросов удобно, так как не нужно запоминать идентификаторы таблиц и полей. Использование метазапросов удобно, так как сложные запросы (например, к регистрам) переводятся системой автоматически в обычный запрос или в набор запросов. Использование метазапросов удобно, так как после его выполнения вы имеете доступ не просто к кодам объектов, а к ним самим, то есть к агрегатным объектам.
    • Переносимость — метазапросы переносимы между различными конфигурациями, в то время как обычные запросы привязаны к определенной конфигурации.
    • Скорость — Выполнение SQL запроса (и метазапроса в том числе) на сервере, использование хранимых процедур и параметризованных запросов позволяет увеличить скорость выполнения запросов по сравнению с запросами 1С (составленных на языке запросов 1С) в десятки раз.
    • Надежность — ToySQL использует собственную систему обработки ошибок, которая не вызывает аварийное завершение системы. Эта возможность также используется для подключения 1С. Библиотека корректно работает при использовании отладичка 1С, то есть ее использование не приводит в этом случае к аварийному завершению 1С.
    • Контроль и расширенные возможности запросов — использование SQL запросов само по себе исключает ошибки связанные с неверной интерпретацией запроса, а также позволяет использовать их специфические возможности (например, оператор LIKE).
    • Использование в V7 возможностей V8 — метазпросы в ToySQL позволяют использовать SQL запросы при разработке в системе 1С аналогично тому как это сделано в новой версии 1С 8.0.
    • Использование собственного механизма блокировок — Начиная с версии 2.2.6.2 в библиотеке появилась возможность использования собственного механизма блокировок. Был создан специальный функционал, а главное описана методика реализации, которые в совокупности позволяют решить проблему параллельного проведения документов, а также 100% загрузки процессора в терминальном режиме. Если вы пользователь библиотеки, то методику реализации собственных блокировок вы можете прочитать в этой инструкции.

    Примеры метазапросов

    Запрос по регистру

    SELECT [Номенклатура],
    НачОстКол = [НачОст(Количество)],
    ПрихКол = [Приход(Количество)],
    РасхКол = [Расход(Количество)]
    FROM [(Регистр.ОстаткиТМЦ([@НачПериода()],[@КонПериода()])
    	FROM [Справочник.Номенклатура] СпрНом
    	WHERE [Номенклатура] = [@ВыбТовар] OR ([СпрНом.Ссылка]=[Номенклатура]
    	AND [СпрНом.МинОстаток]>0)
    	GROUP BY [Номенклатура]
    	HAVING [Приход(Количество)]>0
    	)] 

    Запрос к бухгалтерским итогам

    SELECT 
    [Итоги.Счет],
    [Итоги.Субконто[0]],
    НачОстКол = [НачОст(Итоги.Количество)],
    ПрихКол = [Приход(Итоги.Количество)],
    РасхКол = [Расход(Итоги.Количество)],
    КонОстКол = [КонОст(Итоги.Количество)]
    FROM [(БухИтоги([@'12.02.2002'],[@'12.05.2002'])
    WHERE [ВидСубконто[0]] = [@ВидыСубконто.Номенклатура]
    GROUP BY [Итоги.Счет],[Итоги.Субконто[0]])] Итоги
    

    Кассовая книга

    SELECT [Журн.Ссылка],[Журн.ДатаДок],[ДокПКО.Сумма],[ДокРКО.Сумма]
    FROM [Журнал] Журн
    	LEFT JOIN [Документ.ПКО] ДокПКО ON [Журн.Ссылка] = [ДокПКО.Ссылка]
    	LEFT JOIN [Документ.РКО] ДокРКО ON [Журн.Ссылка] = [ДокРКО.Ссылка]
    WHERE [Журн.ВидДокумента] IN ([Документ.ПКО.Вид],[Документ.РКО.Вид]) 
    AND [ДатаДок] > [@'01.01.2001'] 

    Параметризованный запрос

    SELECT [Шапка.Ссылка]
    FROM [Документ.Реализация] Шапка,[ТабличнаяЧасть.Реализация] Табл
    WHERE [Шапка.Ссылка] = [Табл.Ссылка] AND
    	([Контрагент] = ? OR [Номенклатура] = ?)

    Запрос по регистру с периодом движения

    SELECT [Рег.Номенклатура],[Рег.ПериодДвижения],
    [НачОст(Рег.Количество)],
    [Приход(Рег.Количество)],
    [КонОст(Рег.Количество)]
    FROM [(Регистр.ОстаткиТМЦ([@НачПериода()],[@КонПериода()],[@""Документ""])
    	GROUP BY [ПериодДвижения],[Номенклатура])] Рег

    Вызов хранимой процедуры

    {? = call select_by_sklad(@sklad  = [@спр.ТекущийЭлемент()] IS Справочник.Склады)}
    COLUMNS (Tovar IS Справочник.Номенклатура, TovCount IS Число)

     наверх