Консоль запросов для 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, т.е. в поле строка(мах)

 

 

Наименование
полный архив
Бесплатно
Консоль
Бесплатно
Полный архив, но без справочной документации
Скачать

См. также

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

2. Ёпрст 09.11.2009 18:10
А где файло ?
+ 1 [ aleks_cons; ]
# Ответить
4. JohnyDeath 09.11.2009 21:10
(1) Ёпрст, ты не прав. Под ДБФ консоли еще не было (чистой).
Автор, тебе kiruha сделал пару замечаний. Планируется обновления по этому поводу?
Ответили: (8)
+ 1 [ ture; ]
# Ответить
28. Ёпрст 13.11.2009 12:12
(27) просто так, прямые запросы через фоксовый провайдер в базе дбф не работают вообще!!!!!!!!
Нужно либо патчить 1с вот этим:
http://infostart.ru/public/16268/
Либо использовать вот это:
http://infostart.ru/public/15977/
Ответили: (31)
+ 1 [ ture; ]
# Ответить
Помощник восстановления корректности взаиморасчетов с контрагентами для БП 2.0. «Помощник работает – Вы отдыхаете!»
Универсальный реестр документов с возможностью вывода данных из табличных частей
Программа учета - "Супермаркет"
Проверка данных
Учет штучных товаров, требующих уникального серийного номера
Настраиваемый управленческий баланс V3.14
Отчет-инструментарий “Сравнение, выравнивание контрагентов и взаиморасчетов в двух базах”.
Сравнение контрагентов и номенклатуры в продажах и заказах
Отчет-сверка “Сравнение документов и справочников в двух базах” V4.01
Конфигурация “Планирование очереди заданий” V2.01
Центр управления обмена данными между базами 1С
Выгрузка данных из Управления торговлей 10.3 в Бухгалтерию предприятия, ред. 3.0 (Версия 1.8.1)

Комментарии

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 в монопольном режиме.
# Ответить
30. anton.fly7 13.11.2009 12:14
(28,29) это сделано - пропатчен дбенджин
# Ответить
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 пока сыровата.
# Ответить
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл