gifts2017

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

Опубликовал Женька Ture (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 292,50Kb 485 Скачать
полный архив
.rar 20,10Mb
31.05.15
519
.rar 20,10Mb 519 Скачать
Полный архив, но без справочной документации
.rar 4,43Mb
31.05.15
52
.rar 4,43Mb 52 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

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

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

http://infostart.ru/public/14933/
2. Епрст (Ёпрст) 09.11.09 18:10
4. Евгений Мартыненков (JohnyDeath) 09.11.09 21:10
(1) Ёпрст, ты не прав. Под ДБФ консоли еще не было (чистой).
Автор, тебе kiruha сделал пару замечаний. Планируется обновления по этому поводу?
5. Андрей (Свой) 10.11.09 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.09 01:21
7. Сергей (Che) Коцюра (CheBurator) 10.11.09 01:53
ООО! автору респект!!! огромный!!!! ооо! может быть я наконец-то насчну втыкать не по деццки!!!
8. Епрст (Ёпрст) 10.11.09 08:30
(4) Но топикстартер то один хрен не прав - под клюшки всё было..
даже 1CQA самых первых версий..
9. Епрст (Ёпрст) 10.11.09 08:33
стрИмя=тзПараметры.ПолучитьЗначение(тзПараметры.ТекущаяСтрока(),"Имя");
{КОНСОЛЬ.ERT(427)}: Номер за пределами значения!
10. Епрст (Ёпрст) 10.11.09 08:37
oleCommand.ВыполнитьИнструкцию(strSQL, тзОтвет, 1);
{КОНСОЛЬ.ERT(505)}: FAILED! ICommandText::Execute(): File 'dh6261.dbf' does not exist.

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

Документ.ЧрезвычайнаяСитуация
14. Филипп (Филипп) 10.11.09 14:35
Почему-то при запуске появляется сообщение:
Сервис.ИспользоватьПланРаскраски(1);
{КОНСОЛЬ.ERT(2564)}: Поле агрегатного объекта не обнаружено (ИспользоватьПланРаскраски)
17. Александр Фокин (Sure) 12.11.09 00:45
А можно и без 1С++ обходиться - только штатными средствами 1С 7.7
http://infostart.ru/public/14301/
Там и консоль запросов 1С 7.7, и консоль запросов SQL, и консоль запросов SQL в именах 1С 7.7 :-). И консоль кода... В общем - всё, что с 2004-го мне удалось собрать и дописать по этому поводу.
RodinMax; Зеленоград; +2 Ответить 1
22. Антон (anton.fly7) 13.11.09 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
23. Епрст (Ёпрст) 13.11.09 11:16
(22) вот селект по справочнику там вообще никоим боком не уперся..
24. Антон (anton.fly7) 13.11.09 11:18
в функции ПрочитаемТаблицу() пришлось запопытчить... вылетала ошибка там иногда

Функция ПрочитаемТаблицу(стрТаблица,тзПоля,стрПсевдоним,стрТипВид="")
//состав полей заранее определить трудно, поэтому прочитаем его
oledb=Connect();
//Command
oleCommand=oledb.СоздатьКоманду();
strSQL="Select * from "+стрТаблица+" where 1=2";
тзОтвет=СоздатьОбъект("ТаблицаЗначений");
Попытка //я добавил тут
oleCommand.ВыполнитьИнструкцию(strSQL, тзОтвет, 1);
Исключение
Сообщить(strSQL);
Возврат "";
КонецПопытки;
25. Антон (anton.fly7) 13.11.09 11:18
27. Антон (anton.fly7) 13.11.09 11:34
(26) я в базе один монопольно сижу - никто проводить не может
про журнал - да. на мисте подсказывают
28. Епрст (Ёпрст) 13.11.09 12:12
(27) просто так, прямые запросы через фоксовый провайдер в базе дбф не работают вообще!!!!!!!!
Нужно либо патчить 1с вот этим:
http://infostart.ru/public/16268/
Либо использовать вот это:
http://infostart.ru/public/15977/
29. Епрст (Ёпрст) 13.11.09 12:13
+28 в монопольном режиме.
35. Nadejda (Nadejda) 24.11.09 06:49
Сервис=СоздатьОбъект("Сервис");
{C:\DOCUMENTS AND SETTINGS\НАДЯ\РАБОЧИЙ СТОЛ\КОНСОЛЬ\КОНСОЛЬ.ERT(3424)}: Неудачная попытка создания объекта (Сервис) :o
39. Дмитрий (dimm73) 07.12.09 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
40. Дмитрий (dimm73) 07.12.09 13:47
ступил забыл : поставить
44. steban (steban) 25.12.09 17:35
При разрешении экрана 800 строк кнопок внизу не видно.
хочу, чтобы работал драг'н'дроп между таблицами и перенос строк по двойному клику или нажатию Enter.
46. steban (steban) 28.12.09 14:28
(45)Я думаю, ты все-таки хочешь чтобы твоя разработка пользовалась популярностью. Если так, то выдача таких советов - неверная тактика.

Открой для себя возможности привязки элементов управления в 7.7.
Общие.Форма.Привязка, Сплиттеры
50. Епрст (Ёпрст) 12.03.10 17:11
Один хрен, все запросы полученные конструкторами в дбф нужно обрабатывтать напильниками, чтоб запрос в индекс попадал..
(это ежели фокс использовать).
51. vadim petroff (mojed) 22.07.10 13:59
оФорма=СоздатьОбъект("Форма");
{E:\МАТРИЦА\КОНСОЛЬЗАПРОСОВ77\КОНСОЛЬ.ERT(6945)}: Неудачная попытка создания объекта (Форма)
53. Юрий Осипов (yuraos) 11.11.11 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.12 14:34
55. {ÐƦǑƝȊ} mx (dour-dead) 21.12.12 15:05
круто) правда уже наверно не совсем актуально...
56. John Smith (PiccaHut001) 30.04.13 16:19
(55) dour-dead, очень, очень актуально, 7.7 надёжная рабочая лощадка, 8 пока сыровата.
Зеленоград; +1 Ответить
57. Петр Вел (shmellevich) 30.06.15 10:03
А что изменилось 31.05.15 ????
И за что такая стоимость????
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа