Вход | Регистрация

Форумы на Кубань.Ру


1С:Предприятие ::

Метки:

Как прымями запросами получить объекты 1С? (+)

Ø
Я
   Haspor
22.11.04 - 16:03
собственно у меня в баже клиента 22000 наименований товаров.
Я реализовал механизм поиска товаров, но он написан на языке запросов 1С.
А можно ли получать объекты 1С (т.е конкретный элемент справочника иил документа) используя прямые SQL запросы?
Объясните плиз каким механизмом надо пользоваться? Бесплатный ли он?
Спасибо
 
 
   fez
1 - 22.11.04 - 16:04
   Haspor
3 - 22.11.04 - 16:05
2(all)
Сорри за ошибки, пишу быстро на ноутбуке сидя на совещании )))
   Haspor
4 - 22.11.04 - 16:10
2(all)
Сорри за ошибки, пишу быстро на ноутбуке сидя на совещании )))
   Баклажан
5 - 22.11.04 - 16:19
Получить объект имея его ИД http://www.sinor.ru/~my1c/knowhow/get_id.html
   Туxлый
6 - 22.11.04 - 16:24
http://www.perlscript.ru/v77_16.shtml<br>ЗЫ Перлскрипт, с тебя пузырь Ж)))
   Haspor
7 - 22.11.04 - 16:27
А кто нить уже с прямыми запросами работает? А киньте примерчик?
 
З.Ы очень интересная ветка получится :0)
   Туxлый
8 - 22.11.04 - 16:34
(7) Здравствуй ж..а Новый гот.
   Phoenix
9 - 22.11.04 - 16:35
//_____________________________________________________________________________
//// Поиск контрагентов по условию вхождения в "Наименование", "ПолнНаименование", "ИНН"
// передаваемого как параметр значения, так же передается поле, в котором следует осуществлять поиск,// и таблица значений, в которую следует вернуть результат
//// Результат поиска - возвращается ТаблицаЗначений, с установленным типом колонки,
// в данном случае: "Справочник.Контрагенты"
//// Для перехода к найденному элементу справочника, в форме списка,
// следует использовать:  АктивизироватьОбъект(ТаблицаЗначенийРезультата.Элемент);
////_____________________________________________________________________________
Перем конект_l;
Перем Конт;
Перем ПолеПоиска;
Перем ЗначениеПоиска;
Перем ВернутьТЗ;//_____________________________________________________________________________
Функция глПрямойЗапрос(Текст,Колонки="") экспорт
     Состояние("Выполнение запроса");
     ТЗ = СоздатьОбъект("ТаблицаЗначений");
     Состояние("Выполнение запроса");
     конект_l.Открыть(конект_l.МД.ОбрМетаСКЛ(Текст));
     ошибка = конект_l.ПолучитьОписаниеОшибки();
     Если СокрЛП(ошибка) <> "" тогда
          Сообщить(ошибка);
          Возврат 0;
     КонецЕсли;
     Если Колонки <> "" Тогда
          конект_l.УстТипыКолонок1С(Колонки);
     КонецЕсли;
     конект_l.ПолучитьРезультатыВ_ТЗ(ТЗ,1);
     конект_l.Закрыть();
     Состояние("Выполнение запроса завершено");
     Если ТЗ.КоличествоСтрок()=0 Тогда
          Возврат 0;
     КонецЕсли;
     Возврат ТЗ;
КонецФункции//*******************************************
Процедура Сформировать()
     Текст = "
          |Select
          |     ID as Элемент
          |From
          |     $Справочник.Контрагенты as spr (NOLOCK)";
          Текст = Текст + РазделительСтрок;
          Если ПолеПоиска = "Наименование" Тогда
               Текст = Текст + "where descr like '%" + СокрЛП(ЗначениеПоиска) + "%' ";
          ИначеЕсли ПолеПоиска = "Полное наименование" Тогда
               Текст = Текст + "where $spr.ПолнНаименование like '%" + СокрЛП(ЗначениеПоиска) + "%' ";
          ИначеЕсли ПолеПоиска = "ИНН" Тогда
               Текст = Текст + "where $spr.ИНН like '%" + СокрЛП(ЗначениеПоиска) + "%' ";
          КонецЕсли;
     //пТЗ = СоздатьОбъект("ТаблицаЗначений");
     ВернутьТЗ.Загрузить(глПрямойЗапрос(Текст,"Справочник.Контрагенты"));
КонецПроцедуры//_____________________________________________________________________________
Процедура ПриОткрытии()//предопределенная
     
     Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
          Конт               = Форма.Параметр.ПолучитьЗначение(1);
          ПолеПоиска          = Форма.Параметр.ПолучитьЗначение(2);
          ЗначениеПоиска     = Форма.Параметр.ПолучитьЗначение(3);
          ВернутьТЗ          = Форма.Параметр.ПолучитьЗначение(4);
     Иначе
          Сообщить("нет параметра");
     КонецЕсли;
     
     ВернутьТЗ.УдалитьСтроки();
     
     Попытка
          конект_l = СоздатьОбъект("ODBCRecordSet");
     Исключение
          Если ЗагрузитьВнешнююКомпоненту("1cpp.dll")=0 тогда
               Предупреждение ("Компонента 1с++ не найдена");
               СтатусВозврата(0);
               Возврат;
          КонецЕсли;
          конект_l = СоздатьОбъект("ODBCRecordSet");
     КонецПопытки;
     м = СоздатьОбъект("MetaInfoClasses");
     Если м.ЭтоSQL_Версия()=0 тогда
          СтрокаПодключения = "DRIVER=Microsoft Visual FoxPro Driver;Deleted=Yes;Null=Yes;Collate=RUSSIAN;Exclusive=No;SourceType=DBF;SourceDB="""+КаталогИБ()+"""";
          Одбс = СоздатьОбъект("ODBCDatabase");
          Одбс.Соединение(СтрокаПодключения);
          конект_l.УстБД(Одбс);
     КонецЕсли;
     Сформировать();
     СтатусВозврата(0);
     Возврат;
КонецПроцедуры//ПриОткрытии
   Antonio
10 - 22.11.04 - 16:42
очень интересная ветка
 
 



Список тем форума

Форум Территория 1С

Рекламное место пустует  
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит Тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует