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


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

 

 

23 Comments

  1. Ёпрст

    А где файло ?

    Reply
  2. JohnyDeath

    (1) Ёпрст, ты не прав. Под ДБФ консоли еще не было (чистой).

    Автор, тебе kiruha сделал пару замечаний. Планируется обновления по этому поводу?

    Reply
  3. Свой

    оФорма = СоздатьОбъект(«Форма»);

    {D:1CV771СV7_ОБРАБОТКИОБРАБОТКИ ОБЩПРЯМЗАПРОСЫDBFКОНСОЛЬДБФ1.ERT(1241)}: Неудачная попытка создания объекта (Форма)

    MetaDataWork=СоздатьОбъект(«MetaDataWork»);

    {D:1CV771СV7_ОБРАБОТКИОБРАБОТКИ ОБЩПРЯМЗАПРОСЫDBFКОНСОЛЬДБФ1.ERT(322)}: Неудачная попытка создания объекта (MetaDataWork)

    Reply
  4. Noy

    Красавчик!!!!

    Reply
  5. CheBurator

    ООО! автору респект!!! огромный!!!! ооо! может быть я наконец-то насчну втыкать не по деццки!!!

    Reply
  6. leov-001

    Интересное название документа

    Документ.ЧрезвычайнаяСитуация

    Reply
  7. Filipp_inf

    Почему-то при запуске появляется сообщение:

    Сервис.ИспользоватьПланРаскраски(1);

    {КОНСОЛЬ.ERT(2564)}: Поле агрегатного объекта не обнаружено (ИспользоватьПланРаскраски)

    Reply
  8. Sure

    А можно и без 1С++ обходиться — только штатными средствами 1С 7.7

    http://infostart.ru/public/14301/

    Там и консоль запросов 1С 7.7, и консоль запросов SQL, и консоль запросов SQL в именах 1С 7.7 :-). И консоль кода… В общем — всё, что с 2004-го мне удалось собрать и дописать по этому поводу.

    Reply
  9. anton.fly7

    как обратиться к дате документа?

    когда мастер открываю — там нет такого поля 🙁

    надо сделать выборку документов в интервале

    получился такой запрос:

    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

    Reply
  10. anton.fly7

    (23) а как там надо? 🙂

    Reply
  11. anton.fly7

    в функции ПрочитаемТаблицу() пришлось запопытчить… вылетала ошибка там иногда

    Функция ПрочитаемТаблицу(стрТаблица,тзПоля,стрПсевдоним,стрТипВид=»»)

    //состав полей заранее определить трудно, поэтому прочитаем его

    oledb=Connect();

    //Command

    oleCommand=oledb.СоздатьКоманду();

    strSQL=»Select * from «+стрТаблица+» where 1=2″;

    тзОтвет=СоздатьОбъект(«ТаблицаЗначений»);

    Попытка //я добавил тут

    oleCommand.ВыполнитьИнструкцию(strSQL, тзОтвет, 1);

    Исключение

    Сообщить(strSQL);

    Возврат «»;

    КонецПопытки;

    Reply
  12. anton.fly7

    (26) я в базе один монопольно сижу — никто проводить не может

    про журнал — да. на мисте подсказывают

    Reply
  13. Nadejda

    Сервис=СоздатьОбъект(«Сервис»);

    {C:DOCUMENTS AND SETTINGSНАДЯРАБОЧИЙ СТОЛКОНСОЛЬКОНСОЛЬ.ERT(3424)}: Неудачная попытка создания объекта (Сервис) 😮

    Reply
  14. dimm73

    не находит параметры запроса

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

    Код
    
    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

    Reply
  15. dimm73

    ступил забыл : поставить

    Reply
  16. steban

    При разрешении экрана 800 строк кнопок внизу не видно.

    хочу, чтобы работал драг’н’дроп между таблицами и перенос строк по двойному клику или нажатию Enter.

    Reply
  17. steban

    (45)Я думаю, ты все-таки хочешь чтобы твоя разработка пользовалась популярностью. Если так, то выдача таких советов — неверная тактика.

    Открой для себя возможности привязки элементов управления в 7.7.

    Общие.Форма.Привязка, Сплиттеры

    Reply
  18. mojed

    оФорма=СоздатьОбъект(«Форма»);

    {E:МАТРИЦАКОНСОЛЬЗАПРОСОВ77КОНСОЛЬ.ERT(6945)}: Неудачная попытка создания объекта (Форма)

    Reply
  19. yuraos

    Спасибо! Респект автору! Добротная разработка!

    9 объектов «ТабличноеПоле» и 11 объектов «Таблица+Дерево» !!

    к последним у меня особая слабость!!!

    ……

    вот только при открытии вываливает :

    MetaDataWork<<?>>.УстановитьТекстовыйПараметр(стрИмяПараметра, знЗначение);

    {C:!DVLP-77КОНСОЛЬSQL.ERT(1556)}: Переменная не определена (MetaDataWork)

    😉 обработка КонсольSQL.ert из полного архива.

    неплохо бы выкашивать в публичных версиях все ссылки на переменные и функции глобального модуля

    ……

    PS:

    Насчет этой библиотечки 1sci.dll она не от тех же разработчиков, что

    OpenConf_Light_PackConfigSciColorer.dll

    OpenConf_Light_PackConfigSciLexer.dll ???

    Для включения раскраски достаточно просто ее загрузить или нужны еще какие-то действия?



    И как она ведет себя на терминальных серверах?

    А то если что — мой сисадмин

    принесет меня в жертву КТУЛХУ во имя информационной безопасности компании! 😉

    Reply
  20. aleksey.kubovtsov

    спасибо..)

    Reply
  21. dour-dead

    круто) правда уже наверно не совсем актуально…

    Reply
  22. PiccaHut001

    (55) dour-dead, очень, очень актуально, 7.7 надёжная рабочая лощадка, 8 пока сыровата.

    Reply
  23. shmellevich

    А что изменилось 31.05.15 ????

    И за что такая стоимость????

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *