Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   7.7 Прямые запросы в dbf базе (http://forums.kuban.ru/f1040/7_7_pryamye_zaprosy_v_dbf_baze-2604208.html)

kupreeff 14.05.2012 18:43

7.7 Прямые запросы в dbf базе
 
Ребята, подскажите, сломал мозг. Вот ниже текст запроса. Что дописать, чтобы в выборку попадали только проведенные документы? Спасибо!

kupreeff 14.05.2012 18:43

п_Запрос="
|SELECT ALL
|$ДокШапка_Реализация.Контрагент as [Контрагент $Справочник.Контрагенты],
|$ДокШапка_Реализация.Договор as [Договор $Справочник.Договоры],
|Журнал_iddoc_ДокШапка_Реализация.date as [date $Дата],
|ДокШапка_Реализация.iddoc as [Object $Документ.Реализация],
|$ДокШапка_Реализация.Сумма as [ИтогПоСумма $Число]
|FROM
| $Документ.Реализация as ДокШапка_Реализация
| LEFT OUTER JOIN 1SJOURN as Журнал_iddoc_ДокШапка_Реализация on(ДокШапка_Реализация.iddoc = Журнал_iddoc_ДокШапка_Реализация.iddoc)

|WHERE
| Журнал_iddoc_ДокШапка_Реализация.date<:ВыбДата~~
|GROUP BY
| $ДокШапка_Реализация.Контрагент,
| $ДокШапка_Реализация.Договор,
| Журнал_iddoc_ДокШапка_Реализация.date,
| ДокШапка_Реализация.iddoc,
|$ДокШапка_Реализация.Сумма
|ORDER BY
| $ДокШапка_Реализация.Контрагент ASC,
| $ДокШапка_Реализация.Договор ASC,
| Журнал_iddoc_ДокШапка_Реализация.date DESC";

kupreeff 14.05.2012 18:46

что-то подсказывает, что после SELECT вместо ALL что-то другое нужно написать, но с другой стороны что-то подсказывает, что в секции WHERE какое-то условие должно быть, связанное с полем closed. Вообщем не пойму...

Billi 14.05.2012 19:09

1-kupreeff >мда...
[url]http://www.1cpp.ru/forumfiles/Attachments/mod_002.zip[/url]
Качай и кури, для начала :)

kupreeff 14.05.2012 19:33

(3) Спасибо, отличная ссылка, а то что текст такой, так это я консолью с инфостарта пользовался :)

kupreeff 14.05.2012 22:32

можно еще вопрос, как заставить 1С работать с прямыми запросами под семерошной виндой? у меня строка подключения сейчас "DRIVER=Microsoft Visual FoxPro Driver;Deleted=Yes;Null=Yes;Collate=RUSSIAN;BackgroundFetch=Yes;Exclusive=No;SourceType=DBF;SourceDB=" + ПутьКБазе

kupreeff 14.05.2012 22:35

под xp работает, по 7 как я понял драйвер, который я установил не работает. винда 64х.

kupreeff 15.05.2012 08:44

+(6) и как бы это дело также на 2008 серваке запустить?

USSR 15.05.2012 16:57

все отлично работает и под WIN 2008 SERVER. А для отбора проведенности есть специальный флаг, имеющий разное значение в зависимости от состава компонент. Кури )

kupreeff 15.05.2012 17:40

(8) да уже от курева плохо стало, но под "семеркой" что-то не выходит не чего. Драйвер ставлю, но при добавлении источника данных в списке возможных для выбора вижу только SQL Server. Но когда скачивал драйвер в списке поддерживаемых ОС я "семерку" не видел, стало быть драйвер не подходит. Так вот и вопрос: где взять такой, чтобы подходил?

USSR 16.05.2012 00:16

не пойму я, что у тебя не выходит. ставь драйвер VFPOLEDB и все. Для документов оперучета JR.Closed=1,
для бух по моему Jr.Closed = 5. Jr - это 1sjourn. Не надо никакие источники добавлять
Пользователи по локалке работают или в терминале?

kupreeff 16.05.2012 15:36

для VFPOLEDD строка подключения такая ж, как в (5)? пользователи будут с этим работать по hlg? на сервере w2008 пока 32 битная.

andertaletz 03.09.2012 10:35

Господа!Подскажите плз! Установил VFPOLEDB, 1cpp версии 3.2.2.0
Вот такая конструкция база =СоздатьОбъект("OLEDBData");Выдатет - неудачная попытка создания объекта (OLEDBData)

Где копать?

enddo 05.09.2012 13:48

ОлеДБ = СоздатьОбъект("OLEDBData");
Соединение = "Provider=VFPOLEDB.1; Set Deleted =Yes; data Source=" + КаталогИБ() + "; Mode=ReadWrite;Extended Properties=""; User ID=""; Password=""; Mask Password=False; Collating Sequence=MACHINESN=""";
ОлеДБ.Соединение(Соединение);

ОлеДБКоманда = ОлеДБ.СоздатьКоманду();

ТекстЗапроса = "
|SELECT '(BRUSH_S[16776960])' as FormEx_ПланРаскраски
|, 1 as Пометка
|, Спр.Code as Код
|, Спр.Descr as Наим
|, IIF(ISNULL(Спр.Code), 'V', '') as Новый
|, IIF(Спр.Descr <> СпрБух.Descr, 'V', '') as Изменен
|, '' as Перенесен
|, СпрБух.Code as КодБух
|, СпрБух.Descr as НаимБух
|, IIF(СпрБух.IsFolder = 1, 'V', '') as Группа
|, СпрБух1.Code as Код1Бух
|, СпрБух1.Descr as Наим1Бух
|, СпрБух2.Code as Код2Бух
|, СпрБух2.Descr as Наим2Бух
|, СпрБух3.Code as Код3Бух
|, СпрБух3.Descr as Наим3Бух
|, Спр1.Code as Код1
|FROM БазаБух.@Справочник.Контрагенты as СпрБух
|LEFT JOIN БазаБух.@Справочник.Контрагенты as СпрБух1 ON СпрБух1.Id = СпрБух.ParentId
|LEFT JOIN БазаБух.@Справочник.Контрагенты as СпрБух2 ON СпрБух2.Id = СпрБух1.ParentId
|LEFT JOIN БазаБух.@Справочник.Контрагенты as СпрБух3 ON СпрБух3.Id = СпрБух2.ParentId
|LEFT JOIN $Справочник.Поставщики as Спр ON Спр.Code = СпрБух.Code
|LEFT JOIN $Справочник.Поставщики as Спр1 ON Спр1.Id = Спр.ParentId
|";

глПарсерВторойБазы(ТекстЗапроса, "БазаБух", ПутьКБазеБух);

ТЗ = ОлеДБКоманда.ВыполнитьИнструкцию(ТекстЗапроса);

База бух и парсер - не нужно, это просто запрос к двум базам в примере

enddo 05.09.2012 13:53

[url]http://www.microsoft.com/en-us/download/details.aspx?id=14839[/url]

andertaletz 06.09.2012 08:00

Было ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"1cpp.dll"). Убрал КаталогИБ() и все заработало

Sadovnikov 06.09.2012 08:05

15-andertaletz > Правило хорошего тона, сильно сокращающее поиск проблем: если функция возвращает признак успешности ее работы, то этот признак надо ОБЯЗАТЕЛЬНО проверять...

andertaletz 06.09.2012 08:08

Имею Вопрос по Запросу
ТекстЗапроса = "
|SELECT DISTINCT
| РегПродажа.period as Дата
|FROM
| _RG2351,_RG2228 РегПродажа
|WHERE (РегПродажа.period<=:КонДата)
|AND (РегПродажа.period>=:НачДата)
|";
RS.УстановитьТекстовыйПараметр("КонДата" ,КонДата);
RS.УстановитьТекстовыйПараметр("НачДата" ,НачДата);
ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);
Возвращает ошибку:
ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);
{D:\БАЗЫ1С\КОПИЯ NEW SVERTKA\EXTFORMS\ПРОВЕРКА.ERT(61)**: State 22018, native 301, message [Microsoft][ODBC Visual FoxPro Driver]Operator/operand type mismatch.
КонДата Тип Дата
period Тип D
Что с чем несовпадает?

andertaletz 06.09.2012 08:11

16-Sadovnikov >Благодарю. Учту в своей деятельности.

andertaletz 06.09.2012 12:03

Вместо
|WHERE (РегПродажа.period<=:КонДата)
|AND (РегПродажа.period>=:НачДата)
Поставил
|WHERE РегПродажа.period BETWEEN :КонДата~~ AND :НачДата~~


Текущее время: 16:25. Часовой пояс GMT +3.