Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Консоль запросов для 1Сv77 dbf (число прочтений - 6226 )
Тюрин Евгений Александрович
YaBB Newbies
*
Отсутствует



Сообщений: 3
Местоположение: Москва
Зарегистрирован: 07. Ноября 2009
Пол: Мужской
Консоль запросов для 1Сv77 dbf
07. Ноября 2009 :: 07:24
Печать  
Работает через открытый драйвер FoxPro версии 9. Также используется 1С++(куда без нее?) и FormEx (для формочек).

Разработку основывал на функциях консоли для 1С версии 8 (подражал), т.к. являюсь сторонником 8 версии, а в жизни столкнулся с необходимостью развивать и поддерживать 7 версию (учетная программа в магазинах "Связной"). В основе заложена работа с оперативным учетом, поэтому как поведет себя в бухгалтерии или зарплате представления не имею (расчет в 7 версии не знаю и знать не желаю - это принцип!).

Обработка позволяет:

- вынимать реквизиты справочников (ключевое поле id),

- присоединять к ним владельца (ключевое поле parenttext),

- вынимать реквизиты шапки документов и некоторые общие реквизиты (ключевое поле iddoc),

- вынимать реквизиты табличной части  (ключевое поле iddoc),

- присоединять журнал документов с датой, номером, общими реквизитами и пр. (ключевое поле iddoc),

- вынимать движения и итоги по регистрам,

- соединять реквизиты объектов (поля SP*) с соответствующими справочниками или документами (поля id или iddoc), также можно цеплять по реквизитам других объектов (поля SP*). Следит за типами данных (строка, число, дата), т.к. неявная конвертация данных Вам не придет на помощь!

- накладывать условия  на отобранные поля, группировать и суммировать (по группировкам),

- позволяет присоединять периодические реквизиты справочников (соединение с таблицей, где они хранятся), однако выбран один из многих возможных подходов. Не забывайте про оптимизацию запросов, если они не обеспечивают нужную скорость выполнения,

- использовать запросы с параметрами (:Справочник, :Перечисление, :ДатаНач~~, :Позиция~). Параметры автоматически обнаруживаются  на закладке "Параметры" (кнопка там есть, а потом их нужно заполнить).

- использовать автоматическое распознание полей (конструкция as [Банк $Справочник.Банк] или as [Cпр $Справочник]),

- и прочее. (вложенные подзапросы и SQL согласно документации FoxPro 9, Update и Insert обновляют индексы)

Порядок использования:



Самостоятельно загрузите 1С++ и установите драйвер.

FormEx подгружается самостоятельно.



Открываем, давим кнопку "Мастер", "извращамся" (переход между слоями в мастер нижними кнопками), давим ОК на последнем слое, видим запрос, нажимаем "Выполнить", валятся ошибки, вспоминаем о параметрах и заполняем их на закладке параметры, снова давим "Выполнить", либо на закладке результат есть вывод запроса (а на закладке описание - типы полей) либо ошибка допущенная при "извращениях" (можно вернуться в мастер или править ее в тексте, в последнем случае в мастере  наших поправок не окажется). Ошибки вызванные работой мастера (т.е. мои я фиксю, как нахожу).





Проблемы:

- не ясно поведение при эксклюзивно/монопольно  занятой таблице,

- нет возможности "засунуть" готовый запрос в мастер,

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

- какие-то закладки непонятные "справочники" и "документы"

- параметр с пустой датой

см. полный архив http://infostart.ru/public/60427/
« Последняя редакция: 13. Апреля 2010 :: 07:04 - Тюрин Евгений Александрович »  

_______.ert ( 286 KB | Загрузки )
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Консоль запросов для 1Сv77 dbf
Ответ #1 - 08. Ноября 2009 :: 02:47
Печать  
Класс !
Надеюсь будет развиваться  Улыбка

Небольшие замечания мастера

SELECT
     Рег_РезервыТоваров . $Регистр.РезервыТоваров.Товар as [Товар $Справочник.Номенклатура],
FROM
     $Регистр.РезервыТоваров as Рег_РезервыТоваров

Хотелось бы

SELECT
     $Рег_РезервыТоваров .Товар as [Товар $Справочник.Номенклатура],
FROM
     $Регистр.РезервыТоваров as Рег_РезервыТоваров

По мелочи пожелания
1.В условиях отсутствует BETWEEN - применяется очень часто на практике
2.Праметр типа дата чтобы работал надо добавлять ~~ в конце
3. Каr делать подзапросы ?
4. Очистка не очищает условия, группировки ...
5. По справочнику
- выбираю несколько полей, в результат попадает только одно ,
- в сортировках недоступны поля кроме группировочного,
- при выборе поля реквизита - правильно присоединяется таблица, но вместо
LEFT OUTER JOIN
нужно
LEFT JOIN
- Отсутствуют периодические и неограниченной длины реквизиты
6. В мастере в закладке метаданных отсутствуют таблицы "Прочее" , например 1SCRDOC
которая используется очень часто
7. Соединение по реквизиту типа "документ неопределенного вида" - надо добавлять Right
Пример
     |      LEFT JOIN
     |     1sjourn as Журнал ON Журнал.IDDoc = right($РегРезервы.ПоДок,9)
8. Не удалось присоединить Журнал к шапке документа по документу основанию  -
вместо соединения добавилось только " )"

Пока на этом остановился

« Последняя редакция: 08. Ноября 2009 :: 03:52 - kiruha »  
Наверх
 
IP записан
 
Тюрин Евгений Александрович
YaBB Newbies
*
Отсутствует



Сообщений: 3
Местоположение: Москва
Зарегистрирован: 07. Ноября 2009
Пол: Мужской
Re: Консоль запросов для 1Сv77 dbf
Ответ #2 - 14. Ноября 2009 :: 09:44
Печать  
>Небольшие замечания мастера
Переделал, так получается короче.

>1.В условиях отсутствует BETWEEN - применяется очень часто на практике
Добавил.
>3. Каr делать подзапросы ?
Изменил версию совместимости драйвера, теперь работают подзапросы, которые допустимы в FoxPro9.
>4. Очистка не очищает условия, группировки ...
Улучшил взаимодействие между связанными таблицами. Теперь удаление таблицы или поля влечет удаление ссылок на них.
>- Отсутствуют периодические реквизиты
Присоединил.
>6. В мастере в закладке метаданных отсутствуют таблицы "Прочее" , например 1SCRDOC
которая используется очень часто

"Прочие" таблички подхватил.
>8. Не удалось присоединить Журнал к шапке документа по документу основанию  -
вместо соединения добавилось только " )"

Исправил ошибку.

+ Первые шаги на встречу SQlite
« Последняя редакция: 25. Ноября 2009 :: 14:25 - Тюрин Евгений Александрович »  
Наверх
 
IP записан
 
Злоп
Senior Member
****
Отсутствует


Ябба!

Сообщений: 317
Местоположение: г.Москва
Зарегистрирован: 14. Августа 2006
Пол: Мужской
Re: Консоль запросов для 1Сv77 dbf
Ответ #3 - 30. Ноября 2009 :: 21:04
Печать  
Поддержим автора!!!!
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать