Консоль запросов для 1С 7.7 DBF

Опубликовал ture в раздел Программирование - Инструментарий

Для 1С8 консоль есть, а для 1С 7.7 нет - не порядок!

Работает через открытый драйвер 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 обновляют индексы,VFPODBC)
  • редактировать некоторые реквизиты справочников и документов

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

 

Самостоятельно установите драйвера FoxPro9, VFPODBC и расширение OpenConf (идут в архиве) .

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

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

1sci.dll подгружается самостоятельно (для раскраски текста запроса).

 

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

 

 

Проблемы:

  • не ясно поведение при эксклюзивно/монопольно  занятой таблице,
  • нет возможности "засунуть" готовый запрос в мастер,
  • притормаживает при первом (с момента запуска обработки) входе в мастер,
  • серьезные проблемы с copy-past в тексте запроса (чуть ли не судебные ;-)
  • если среди полей есть реквизит строка(мах), то драйвер вишет и читает в последующие поля как Excel, т.е. в поле строка(мах)

 

 

Файлы

Наименование Файл Дата Размер Кол. Скачив.
Консоль
.ert 292,50Kb
31.05.15
485
.ert 31.05.15 292,50Kb 485 Скачать
полный архив
.rar 20,10Mb
31.05.15
518
.rar 31.05.15 20,10Mb 518 Скачать
Полный архив, но без справочной документации
.rar 4,43Mb
31.05.15
52
.rar 31.05.15 4,43Mb 52 Скачать

См. также

Лучшие комментарии

17. Sure 12.11.2009 00:45
А можно и без 1С++ обходиться - только штатными средствами 1С 7.7
http://infostart.ru/public/14301/
Там и консоль запросов 1С 7.7, и консоль запросов SQL, и консоль запросов SQL в именах 1С 7.7 :-). И консоль кода... В общем - всё, что с 2004-го мне удалось собрать и дописать по этому поводу.
Ответили: (18)
# Ответить
2. Ёпрст 09.11.2009 18:10
А где файло ?
+ 1 [ aleks_cons; ]
# Ответить
4. JohnyDeath 09.11.2009 21:10
(1) Ёпрст, ты не прав. Под ДБФ консоли еще не было (чистой).
Автор, тебе kiruha сделал пару замечаний. Планируется обновления по этому поводу?
Ответили: (8)
+ 1 [ ture; ]
# Ответить

Комментарии

1. Ёпрст 09.11.2009 18:09
Ээх.. дя клюшек давно всё есть.. и консоль и конструктор:

http://infostart.ru/public/15517/

http://infostart.ru/public/14933/
Ответили: (19) (14) (4)
− 1 [ ture; ]
# Ответить
2. Ёпрст 09.11.2009 18:10
А где файло ?
+ 1 [ aleks_cons; ]
# Ответить
4. JohnyDeath 09.11.2009 21:10
(1) Ёпрст, ты не прав. Под ДБФ консоли еще не было (чистой).
Автор, тебе kiruha сделал пару замечаний. Планируется обновления по этому поводу?
Ответили: (8)
+ 1 [ ture; ]
# Ответить
5. Свой (файл скачал) 10.11.2009 01:20
оФорма = СоздатьОбъект("Форма");
{D:\1CV77\1СV7_ОБРАБОТКИ\ОБРАБОТКИ ОБЩ\ПРЯМЗАПРОСЫDBF\КОНСОЛЬДБФ1.ERT(1241)}: Неудачная попытка создания объекта (Форма)
MetaDataWork=СоздатьОбъект("MetaDataWork");
{D:\1CV77\1СV7_ОБРАБОТКИ\ОБРАБОТКИ ОБЩ\ПРЯМЗАПРОСЫDBF\КОНСОЛЬДБФ1.ERT(322)}: Неудачная попытка создания объекта (MetaDataWork)
# Ответить
6. Noy 10.11.2009 01:21
Красавчик!!!!
# Ответить
7. CheBurator (файл скачал) 10.11.2009 01:53
ООО! автору респект!!! огромный!!!! ооо! может быть я наконец-то насчну втыкать не по деццки!!!
# Ответить
8. Ёпрст 10.11.2009 08:30
(4) Но топикстартер то один хрен не прав - под клюшки всё было..
даже 1CQA самых первых версий..
# Ответить
9. Ёпрст 10.11.2009 08:33
стрИмя=тзПараметры.ПолучитьЗначение(тзПараметры.ТекущаяСтрока(),"Имя");
{КОНСОЛЬ.ERT(427)}: Номер за пределами значения!
# Ответить
10. Ёпрст 10.11.2009 08:37
oleCommand.ВыполнитьИнструкцию(strSQL, тзОтвет, 1);
{КОНСОЛЬ.ERT(505)}: FAILED! ICommandText::Execute(): File 'dh6261.dbf' does not exist.

Ну и постоянные ошибки..
Такой картинки как в (0) не получается...
По кнопке "мЕстер" ...
+неплохо бы все контролы "привязать" на форме..
# Ответить
11. Ёпрст 10.11.2009 09:05
Нашел ошибку... Если Операция - не ищет соответственно Документ.Операция
# Ответить
12. leov-001 (файл скачал) 10.11.2009 09:10
Интересное название документа

Документ.ЧрезвычайнаяСитуация
# Ответить
14. Филипп (файл скачал) 10.11.2009 14:35
Почему-то при запуске появляется сообщение:
Сервис.ИспользоватьПланРаскраски(1);
{КОНСОЛЬ.ERT(2564)}: Поле агрегатного объекта не обнаружено (ИспользоватьПланРаскраски)
Ответили: (15)
# Ответить
17. Sure 12.11.2009 00:45
А можно и без 1С++ обходиться - только штатными средствами 1С 7.7
http://infostart.ru/public/14301/
Там и консоль запросов 1С 7.7, и консоль запросов SQL, и консоль запросов SQL в именах 1С 7.7 :-). И консоль кода... В общем - всё, что с 2004-го мне удалось собрать и дописать по этому поводу.
Ответили: (18)
# Ответить
22. anton.fly7 13.11.2009 11:14
как обратиться к дате документа?
когда мастер открываю - там нет такого поля :(
надо сделать выборку документов в интервале
получился такой запрос:

SELECT
$ДокШапка_ФранчРеализация.Контрагент as [Контрагент $Справочник.Контрагенты],
ДокШапка_ФранчРеализация.iddoc as [Object $Документ.ФранчРеализация],
SUM($ДокСтроки_ФранчРеализация.Сумма) as SUM_ДокСтроки_ФранчРеализация_Сумма
FROM
$Справочник.Контрагенты as Спр_Контрагенты
LEFT OUTER JOIN $Документ.ФранчРеализация as ДокШапка_ФранчРеализация on(Спр_Контрагенты.id=$ДокШапка_ФранчРеализация.Контрагент)
LEFT OUTER JOIN $ДокументСтроки.ФранчРеализация as ДокСтроки_ФранчРеализация on(ДокШапка_ФранчРеализация.iddoc = ДокСтроки_ФранчРеализация.iddoc)

GROUP BY
$ДокШапка_ФранчРеализация.Контрагент,
ДокШапка_ФранчРеализация.iddoc
Ответили: (26) (23)
# Ответить
23. Ёпрст 13.11.2009 11:16
(22) вот селект по справочнику там вообще никоим боком не уперся..
Ответили: (25)
# Ответить
24. anton.fly7 13.11.2009 11:18
в функции ПрочитаемТаблицу() пришлось запопытчить... вылетала ошибка там иногда

Функция ПрочитаемТаблицу(стрТаблица,тзПоля,стрПсевдоним,стрТипВид="")
//состав полей заранее определить трудно, поэтому прочитаем его
oledb=Connect();
//Command
oleCommand=oledb.СоздатьКоманду();
strSQL="Select * from "+стрТаблица+" where 1=2";
тзОтвет=СоздатьОбъект("ТаблицаЗначений");
Попытка //я добавил тут
oleCommand.ВыполнитьИнструкцию(strSQL, тзОтвет, 1);
Исключение
Сообщить(strSQL);
Возврат "";
КонецПопытки;
Ответили: (26)
# Ответить
25. anton.fly7 13.11.2009 11:18
(23) а как там надо? :)
# Ответить
27. anton.fly7 13.11.2009 11:34
(26) я в базе один монопольно сижу - никто проводить не может
про журнал - да. на мисте подсказывают
Ответили: (28)
# Ответить
28. Ёпрст 13.11.2009 12:12
(27) просто так, прямые запросы через фоксовый провайдер в базе дбф не работают вообще!!!!!!!!
Нужно либо патчить 1с вот этим:
http://infostart.ru/public/16268/
Либо использовать вот это:
http://infostart.ru/public/15977/
Ответили: (31)
+ 1 [ ture; ]
# Ответить
29. Ёпрст 13.11.2009 12:13
+28 в монопольном режиме.
# Ответить
35. Nadejda (файл скачал) 24.11.2009 06:49
Сервис=СоздатьОбъект("Сервис");
{C:\DOCUMENTS AND SETTINGS\НАДЯ\РАБОЧИЙ СТОЛ\КОНСОЛЬ\КОНСОЛЬ.ERT(3424)}: Неудачная попытка создания объекта (Сервис) :o
Ответили: (36)
# Ответить
39. dimm73 (файл скачал) 07.12.2009 13:39
не находит параметры запроса

создал в мастере запрос
Код

SELECT ALL 
   Рег_ПартииНаличие.номенклатура as [Номенклатура],
   SUM(Рег_ПартииНаличие.количество) as SUM_Рег_ПартииНаличие_Количество,
   SUM(Рег_ПартииНаличие.суммаруб) as SUM_Рег_ПартииНаличие_СуммаРуб,
   SUM(Рег_ПартииНаличие.продстоимость) as SUM_Рег_ПартииНаличие_ПродСтоимость
FROM
   Регистр_ПартииНаличие as Рег_ПартииНаличие
   LEFT OUTER JOIN Journal as Журнал on(Рег_ПартииНаличие.iddoc=(Журнал.iddocdef+Журнал.iddoc))

WHERE
   Журнал.date>=Дата1
   AND Журнал.date<=Дата2
   AND Рег_ПартииНаличие.кодоперации=РозницаПродажа
GROUP BY
   Рег_ПартииНаличие.номенклатура
ORDER BY
   Рег_ПартииНаличие.номенклатура ASC
Показать полностью


перехожу в закладку "Параметры", жму определить параметры из текста - ничего не происходит

Запрос под dbf sqlite
Ответили: (41)
# Ответить
40. dimm73 (файл скачал) 07.12.2009 13:47
ступил забыл : поставить
# Ответить
44. steban (файл скачал) 25.12.2009 17:35
При разрешении экрана 800 строк кнопок внизу не видно.
хочу, чтобы работал драг'н'дроп между таблицами и перенос строк по двойному клику или нажатию Enter.
Ответили: (45)
# Ответить
46. steban (файл скачал) 28.12.2009 14:28
(45)Я думаю, ты все-таки хочешь чтобы твоя разработка пользовалась популярностью. Если так, то выдача таких советов - неверная тактика.

Открой для себя возможности привязки элементов управления в 7.7.
Общие.Форма.Привязка, Сплиттеры
# Ответить
50. Ёпрст 12.03.2010 17:11
Один хрен, все запросы полученные конструкторами в дбф нужно обрабатывтать напильниками, чтоб запрос в индекс попадал..
(это ежели фокс использовать).
# Ответить
51. mojed (файл скачал) 22.07.2010 13:59
оФорма=СоздатьОбъект("Форма");
{E:\МАТРИЦА\КОНСОЛЬЗАПРОСОВ77\КОНСОЛЬ.ERT(6945)}: Неудачная попытка создания объекта (Форма)
# Ответить
53. yuraos 11.11.2011 08:57
Спасибо! Респект автору! Добротная разработка!
9 объектов "ТабличноеПоле" и 11 объектов "Таблица+Дерево" !!
к последним у меня особая слабость!!!
......
вот только при открытии вываливает :
MetaDataWork<<?>>.УстановитьТекстовыйПараметр(стрИмяПараметра, знЗначение);
{C:\!DVLP-77\КОНСОЛЬSQL.ERT(1556)}: Переменная не определена (MetaDataWork)
;) обработка КонсольSQL.ert из полного архива.
неплохо бы выкашивать в публичных версиях все ссылки на переменные и функции глобального модуля
......
PS:
Насчет этой библиотечки 1sci.dll она не от тех же разработчиков, что
OpenConf_Light_Pack\Config\SciColorer.dll
OpenConf_Light_Pack\Config\SciLexer.dll ???
Для включения раскраски достаточно просто ее загрузить или нужны еще какие-то действия?
---
И как она ведет себя на терминальных серверах?
А то если что - мой сисадмин
принесет меня в жертву КТУЛХУ во имя информационной безопасности компании! ;)
# Ответить
54. aleksey.kubovtsov 04.06.2012 14:34
спасибо..)
# Ответить
55. dour-dead 21.12.2012 15:05
круто) правда уже наверно не совсем актуально...
Ответили: (56)
# Ответить
56. PiccaHut001 30.04.2013 16:19
(55) dour-dead, очень, очень актуально, 7.7 надёжная рабочая лощадка, 8 пока сыровата.
# Ответить
57. shmellevich 30.06.2015 10:03
А что изменилось 31.05.15 ????
И за что такая стоимость????
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл