Введение в прямые запросы к базе 1с7.7.

Архитектура платформы 1с7.7 может быть файл- и клиент-серверная. В первом случае 1с хранит свои данные в таблицах формата dbf, во втором 1с используется как надстройка к Microsoft SQL Server (2000 — 2008). У каждой архитектуры свои особенности работы, но я сейчас не об этом. Затронул эту тему я лишь потому, что в зависимости от архитектуры существуют особенности использования прямых обращений к таблицам базы данных.

В клиент-серверном варианте для получения данных используется ODBC драйвер. В файл-серверном можно воспользоваться драйвером VisualFoxpro или использовать SQLite. 

Так как я, в основном, работал с первым вариантом, то примеры буду приводить исходя из своих знаний и своего опыта. Если же Вам потребуется реализовать для файл-серверной архитектуры, пишите — вместе будем разбираться или задавайте вопрос на форуме 1cpp.ru. Там точно помогут.

Итак, стартуем!

1) Для клиент-серверной архитектуры.

— Подключаем при начале работы системы компаненту 1cpp.dll:

Процедура ПриНачалеРаботыСистемы() 
...
Если ЗагрузитьВнешнююКомпоненту("1cpp.dll") = 0 Тогда
     Сообщить("Неудачная попытка загрузки 1c++.dll");
КонецЕсли;
...
КонецПроцедуры;

— Там, где нужно получить данные: 

рс = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "Select Ном.id [Номенклатура $Справочник.Номенклатура]
|From $Справочник.Номенклатура As Ном"; тз = рс.ВыполнитьИнструкцию(ТекстЗапроса); тз.ВыбратьСтроку();

Получаем выборку из справочника «Номенклатура».   Коротко о том, что я написал:   Синтаксис языка запросов соответствует синтаксису TSQL. Помимо этого объект ODBCRecordset использует парсер (директива [] и $).   В запрос можно передвавать параметры. Делается это так:

рс = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса = "Select Ном.id [Номенклатура $Справочник.Номенклатура]
|From $Справочник.Номенклатура As Ном
|Where Ном.descr = :Наименование";
рс.УстПараметр("Наименование","Товар1");
тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
тз.ВыбратьСтроку();