Последний тюнинг известной обработки 1CQA (консоль прямых запросов 1С++) для 1С:Предприятие-77.

Публикация № 98982

Разработка - Инструментарий разработчика - Консоль запросов

97
Авторы исходной версии:  Дмитрий Ощепков (dmitro-75@mail.ru),
Ivan T Berezdetsky (berezdetsky@yahoo.com). В предлагаемой версии:
1) Добавлена возможность выбирать тип провайдера данных ODBC или OLEDB (только базы DBF);  
2) Добавлена возможность редактировать текст запроса в диалоге конструктора запросов, предоставляемого объектом "AddIn.qryConsole" ВК  qryConsole.dll (только базы SQL);
3) Расширен список типов объектов, которые могут принимать параметры запроса;
4)Добавлена возможность через параметры запроса укладывать списки ссылок объектов во временные таблицы (в том числе с иерархическим включением). Эти таблицы можно использовать  в тексте запроса по имени ‘#<ИмяПараметра>’;
5) Добавлена возможность открывать обработку в режиме подбора (или имитации подбора) из других форм для подбора произвольных выборок данных из базы;
6) Сделано множество других улучшений (интерфейсных и пр.);

 

Свет мой, SQL, скажи, да всю правду доложи!

Я ль в инете всех шустрее, всех прикольней и умнее?

Пушкин – АС!

 

Благодарности авторам:

Хочется сразу сказать огромное спасибо авторам обработки, создавших для администраторов и разработчиков такой прекрасный инструмент.

Отдельная признательность  Ivanu T Berezdetsky за реализацию поддержки выполнения пакетов запросов. До этого мне приходилось сначала выводить оттранслированный  текст запроса в окне сообщений, а затем выполнять его в QA на сервере.

Исходные версии обработки и много другого полезного можно найти на сайте: http://www.dev.citykirov.ru/.

Обсуждение обработки и разные ее модификации смотрите на форуме:  http://www.1cpp.ru/forum/YaBB.pl?num=1157967835.

 

Требования:

1) Обязательно - наличие предварительно загруженных (или лежащих в одном  каталоге с 1CQA) внешних компонент 1СPP.dll (www.1cpp.ru) и FormEx.dll (www.dorex.pro).

2) Желательно, чтобы в конфигурации был класс определенный пользователем "Общие.Форма.Привязка" (www.dev.citykirov.ru ,автор Дмитрий Ощепков).  Обсуждение класса на форуме 1СРР:  http://www.1cpp.ru/forum/YaBB.pl?num=1200464076. При отсутствии класса обработка работать будет, но без привязок элементов в форме.

3) Желательно (для возможности укладывать списки объектов во временные таблицы) иметь для редактирования списков обработку под именем ПодборUChoice (улучшенная обработка УОПО). Она может быть встроена или лежать в одном каталоге с 1CQA. Без этой обработки будут не доступны специальные типы параметров запроса, через которые создаются временные таблицы.

4) При большом желании (для редактирования запроса в диалоге конструктора) требуется наличие внешней компоненты qryConsole.dll(автор Ivan T Berezdetsky). Обработка при открытии пытается ее загрузить (так же как 1CPP). Если загрузить не удается, то соответствующие элементы управления в обработке становятся недоступными.

Установочный дистрибутив и обсуждение внешней компоненты  - на форуме: http://www.1cpp.ru/forum/YaBB.pl?num=1193394153.  Для работы ВК qryConsole.dll обязательна установка Office web components (OWC11). Иначе обработка будет вас малоприятно ругать при открытии (беда устраняется или установкой OWC11, или удалением/переименованием файла библиотеки – чтоб вообще не грузилась).

 

Описание файлов поставки:

1) Консоль1CQA.rar - обработка 1CQA под именем «Консоль1CQA» (иначе не встраивается);

2) FormEx1CPP.rar – библиотеки 1CPP.dll, FormEx.dll и класс "Общие.Форма.Привязка";

3) PlugIns.rarвспомогательные обработки ПодборUChoice и ИзменениеВремениДокумента. Последняя обработка используется в меню действий со значением в ячейке таблицы результатов запроса по двойному клику мыши (Рис.11) для изменения даты-времени документа.

4) Samples.rar  – разные примеры запросов, использованные в публикации.

5) Консоль1CQA_ALL.rar – полный набор файлов поставки (все 4 архива);

 

Описание установки:

1) Обеспечить загрузку 1CPP.dll и FormEx.dll (обязательно):

Библиотеки можно скачать с сайтов разработчиков или  взять  из каталога файла поставки \..\FormEx1CPP.rar\FormEx1CPP\DLL\:

Файл 1CPP2037.dll – библиотека 1CPP версии 2.0.3.7, рекомендуемый релиз с ядром FormEx. Для него загрузка FormEx.dll не требуется.

Файл 1CPP2507.dll – библиотека 1CPP версии 2.5.0.7, рекомендуемый релиз с раздельной загрузкой FormEx.

Файл 1CPP3220.dll – библиотека 1CPP версии 3.2.2.0  (последняя с сайта разработчиков)

Файл 1CPP32316.dll – библиотека 1CPP версии 3.2.2.8 (одна из последних тестовых версий с форума: http://www.1cpp.ru/forum/YaBB.pl?num=1288774760/all )  

Файл FormEx205101.dll – библиотека FormEx версии 2.0.5.101 (самая последняя).

При копировании файлов из имени следует убрать цифры версий.

 

Загружать библиотеки можно стандартным способом в процедуре ПриНачалеРаботыСистемы():

                ЗагрузитьВнешнююКомпоненту(КаталогПрограммы ()+"1CPP.dll");

                ЗагрузитьВнешнююКомпоненту(КаталогПрограммы ()+"FormEx.dll");

Если же 1QA будет использоваться как внешняя, то достаточно скопировать файлы dll в каталог обработки. Она сама их загрузит при открытии.

 

2) Подключить класс "Общие.Форма.Привязка" (желательно):

Можно из каталога файла поставки \..\FormEx1CPP.rar\FormEx1CPP\ в каталог базы скопировать файлы Defcls.prm  и  КОП_ОбщиеФормаПривязка.ert

А можно включить класс в конфигурацию.  Для этого туда нужно добавить из одноименных внешних файлов обработки Defcls  и  КОП_ОбщиеФормаПривязка.

ВНИМАНИЕ! Если у вас уже используются другие классы, то придется добавить описание класса в файл Defcls.prm  или обработку Defcls  из соответствующих файлов.

 

3) Вспомогательные обработки (желательно):

Скопировать из каталога файла поставки \..\PlugIns.rar\PlugIns\ в каталог обработки 1CQA или добавить в конфигурацию под теми же именами.

 

4) Конструктор запросов (при большом желании):

Установить внешнюю компоненту qryConsole.dll из скаченного дистрибутива (смотри выше). И обязательно установить Office web components (OWC11)!

 

Описание добавлений и улучшений в предлагаемой версии:

1)      Для баз DBF добавлена возможность выбирать интерфейс доступа к данным ODBC или OLEDB (Рис.2).  Для использования OLEDB требуется установить OLEDB vfpoledb provider v9. В базах DBF через ODBC, честно говоря, мне не удалось заставить работать прямые запросы. Через OLEDB вроде все работает.

Для баз SQL по ряду соображений я решил оставить доступ только через ODBC (Рис.1).

2)      Для баз SQL добавлена возможность редактировать текст запроса в диалоге конструктора запросов, поставляемого ВК qryConsole.dll (Рис.3 и Рис.4). Для баз DBF эта возможность, к сожалению, недоступна в текущей версии этой ВК.

3)      Расширен список типов, которые могут принимать параметры запроса (Рис.6). Добавлены следующие типы: Календари, ВидыРасчетов, Бухгалтерские счета, ПланыСчетов (системное перечисление), ВидыСубконто.

4)      Добавлены служебные типы параметры запроса СписокСсылок9, СписокСсылок13 и ИерархияСсылок9.  Значения этих параметров представляют списки объектов определенного типа  и используется для укладывания во временные таблицы ссылок на объекты (включая с иерархическим включением).  Временная таблица доступна в тексте запроса под именем '#'. Для редактирования списков объектов (Рис.7) используется обработка под именем ПодборUChoice (улучшенная обработка УОПО). При отсутствии обработки ПодборUChoice  в конфигурации или в каталоге 1CQA эти служебные типы параметров исключаются из меню выбора типов параметра запроса.

5)      Добавлена возможность открывать 1CQA в режиме подбора (имитации подбора) для возврата в другие формы произвольных выборок данных.

Имитация подбора используется в том случае, когда 1CQA  - внешняя обработка. Тогда функция ОткрытьПодбор(,,) становится бесполезна. Приходится просто открывать внешнюю обработку Консоль1CQA с передачей через параметр формы контекста той формы, которая вызывает подбор.

Имитация выбора в подборе осуществляется вызовом в контексте формы владельце процедуры ОбработкаПодбора(,,,) с помощью метода ВыполнитьПроцедуру(Контекст, ИмяПроцедуры, СписокАргументов) объекта «Сервис» ВК FormEx.dll.

6)      Другие улучшения (их множество, смотрите подробности в описании в самой обработке). Вот  некоторые из них:

  1. При клике по пустой таблице параметров запроса выводится диалог с информацией о работе с параметрами запроса (Рис.5);
  2. Выбор типа объекта производится в удобном красивом диалоге в виде дерева (Рис.6);
  3. При клике по таблице результатов запроса, если значение в ячейке ссылочного типа, выводится меню действий с объектом (Рис.11). Меню позволяет:

    открыть объект для просмотра-редактирования;

    открыть объект в списке (журнале);

    пометить его на удаление;

    снять пометку;

    удалить непосредственно;

    открыть объект для редактирования в обработке 'Редактор Реквизитов' (автор Цылёв Владислав vet7777@mail.ru);

  4. Для документов доступны дополнительные действия:

    провести;

    отменить проведение; 

    изменить дату-время (для этого действия требуется обработка ИзменениеВремениДокумента);

  5.  Кроме этого для документа можно вывести отчет о движениях или сформировать структуру подчинености. Соответствующие отчеты интегрированы в консоль (чтобы не зависеть от используемой конфигурации): 

Отчет о движениях - в полном вариате (по регистрам, проводкам, записям ЖР и истории реквизитов).

При формировании структуры подчиненности для выборки подчиненых документов используются прямые запросы к базе. 

7)      Различные варианты очистки запроса (Рис.8);

8)      Печать таблицы параметров запроса и таблицы его результатов (Рис.9).

9)      Выбор значения параметра 'Collate' / 'Collating' в строке соединения (только базы DBF) (Рис.13).  

10)    Добавлена обработка спец.комментариев в тексте запроса (для установки спец.опций выполнения запроса).
 поддерживается обработка следующих спец.комментариев:

'--!ExecuteTransaction' - выполнять все батчи запроса в единой транзакции (при ошибке хоть в одном батче транзакция откатывается);
'--!ExecuteRollback'        - выполнять все батчи в транзакции с ее откатом независимо от результата выполнения (для просмотра "результатов" запроса без фактического изменения данных);
подробности смотрите в макете "СпецКомметарииЗапроса" обработки (можно вывести в табличный документ, Рис.5 и Рис.9).

11)    Добавлен вывод описания обработки в табличный документ ( Рис.5 и Рис.9).

 

Применение:

Для баз SQL доступны особые режимы выполнения запроса (Рис.12): проверка синтаксиса и вывод плана выполнения запроса. План выполнения кроме таблицы результатов выводится еще в отдельном текстовом документе.

Для баз DBF использование ограничено в основном разделенным режимом. В монопольном режиме в базах DBF выполнять прямые запросы не удается без специальных ухищрений (подмены библиотеки DBEng32.dll в каталоге BIN) или использования особых провайдеров доступа к данным.

При попытке использования в монопольном режиме обработка пытается выполнить тестовый запрос: "select COUNT(*) from 1SUSERS". Если запрос выполняется без ошибок - никаких сообщений не выводится. Иначе (если тестовый запрос выдает ошибку) программа  выдает пользователю предупреждение об этом печальном факте, но работать в консоли не запрещает. Если после этого запрос вдруг выполнился без ошибок, обработка запоминает эту радость и больше не тревожит пользователя об этом ... до первой следующей ошибки запроса, в тексте которой есть строка "Cannot open file" Cool.

Основные направления для использования:

1)      Для разработчиков: проверка запросов, изучение вопроса о том где, как и какие данные хранятся в базе данных.

2)      Администрирование данных: исправление ошибок в ИБ в дополнение к процедуре тестирования-исправления. В больших рабочих базах тестирование-исправление выполнить нереально. У меня оно длилось, например, больше двух суток. Поэтому тестирование запускается на копии базы в пакетном режиме с записью лога. Затем по информации из лога в 1CQA запросом SELECT вытаскиваем некорректные записи из базы. После анализа этих записей принимается решение: 

  • исправляем запросом UPDATE ,
  • удаляем запросом DELETE,
  • помечаем на удаление, чтобы потом удалить с контролем ссылочной целостности (пометить можно тоже в 1CQA запросом  UPDATE).

3)      Реорганизация данных при обновлениях: установка новых реквизитов, ресурсов и измерений в таблицах объектов метаданных, например регистров.  В архиве Samples.rar  из файлов поставки в файле Sample_TransforRegister_SQL.qry находится пример реально использованного скрипта для довольно сложной установки новых измерений и реквизитов регистра. Фактически скрипт заменяет перепроведение по регистру (выборочно, без пересчета итогов).  Итоги также можно пересчитать прямыми запросами с помощью обработок (только базы SQL):

 ПересчетИтоговРегистров.ert или 1CУстановкаТА.ert.

 

Благодарности:

Кроме авторов обработки хотелось бы также поблагодарить всех разработчиков 1CPP и FormEx. Без  их самоотверженного труда 1С-ка была тормозна, скучна, безлика и беспросветна!

97

Скачать файлы

Наименование Файл Версия Размер
Консоль1CQA_ALL.rar
.rar 2,23Mb
17.12.11
325
.rar 2,23Mb 325 Скачать
Консоль1CQA.rar
.rar 49,29Kb
17.12.11
21
.rar 49,29Kb 21 Скачать
FormEx1CPP.rar
.rar 2,12Mb
11.12.11
19
.rar 2,12Mb 19 Скачать
PlugIns.rar
.rar 62,94Kb
26.11.11
16
.rar 62,94Kb 16 Скачать
Samples.rar
.rar 3,86Kb
20.11.11
18
.rar 3,86Kb 18 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
0. yuraos 955 20.11.11 03:16 Сейчас в теме
Авторы исходной версии: Дмитрий Ощепков (dmitro-75@mail.ru),
Ivan T Berezdetsky (berezdetsky@yahoo.com). В предлагаемой версии:
1) Добавлена возможность выбирать тип провайдера данных ODBC или OLEDB (только базы DBF);
2) Добавлена возможность редактировать текст запроса в диалоге конструктора запросов, предоставляемого объектом "AddIn.qryConsole" ВК qryConsole.dll (только базы SQL);
3) Расширен список типов объектов, которые могут принимать параметры запроса;
4)Добавлена возможность через параметры запроса укладывать списки ссылок объектов во временные таблицы (в том числе с иерархическим включением). Эти таблицы можно использовать в тексте запроса по имени ‘#<ИмяПараметра>’;
5) Добавлена возможность открывать обработку в режиме подбора (или имитации подбора) из других форм для подбора произвольных выборок данных из базы;
6) Сделано множество других улучшений (интерфейсных и пр.);


Перейти к публикации

1. yuraos 955 20.11.11 03:16 Сейчас в теме
О сколько нам консолей чудных готовит просвещенья дух... :D
2. yuraos 955 20.11.11 12:49 Сейчас в теме
... или счастья много не бывает! ;)))))
yuraos пишет:

О сколько нам консолей чудных готовит просвещенья дух...
3. yuraos 955 20.11.11 17:53 Сейчас в теме
Народ!!!
Если обработка скажет что-то странное насчет ваших прав - значит вы себя обидели! ;))))
Поскольку обработка не для шаловливых ручек,
при открытии там сразу написано:
ПравоЕсть=1;
ПравоЕсть=ПравоЕсть
*ПравоДоступа("УдалениеПомеченныхОбъектов")
*ПравоДоступа("ПоискСсылокНаОбъекты")
*ПравоДоступа("ИспользованиеЛюбыхВнешнихОтчетов")
*ПравоДоступа("ГрупповоеПроведениеДокументов")
*ПравоДоступа("УправлениеБухгалтерскимиИтогами")
*ПравоДоступа("УправлениеОперативнымиИтогами")
*ПравоДоступа("МонопольныйРежим")
*ПравоДоступа("СохранениеИВыгрузкаДанных")
*ПравоДоступа("АдминистративныеФункции"); // по совокупности крутых прав
Если (ПравоЕсть=0) Тогда
Предупреждение("Недостаточно круты права доступа !!!",60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
4. yuraos 955 20.11.11 17:55 Сейчас в теме
yuraos пишет:

Народ!!!
Если обработка скажет что-то странное насчет ваших прав - значит вы себя обидели! ;))))
Поскольку обработка не для шаловливых ручек,
при открытии там сразу написано:
ПравоЕсть=1;
ПравоЕсть=ПравоЕсть
*ПравоДоступа("УдалениеПомеченныхОбъектов")
*ПравоДоступа("ПоискСсылокНаОбъекты")
*ПравоДоступа("ИспользованиеЛюбыхВнешнихОтчетов")
*ПравоДоступа("ГрупповоеПроведениеДокументов")
*ПравоДоступа("УправлениеБухгалтерскимиИтогами")
*ПравоДоступа("УправлениеОперативнымиИтогами")
*ПравоДоступа("МонопольныйРежим")
*ПравоДоступа("СохранениеИВыгрузкаДанных")
*ПравоДоступа("АдминистративныеФункции"); // по совокупности крутых прав
Если (ПравоЕсть=0) Тогда
Предупреждение("Недостаточно круты права доступа !!!",60);
СтатусВозврата(0);
Возврат;
КонецЕсли;
Показать


вдруг какой продвинутый юзвер (знаю я таких) додумается написать:
truncate table _1sjourn
:)))))))
5. CaSH_2004 354 21.11.11 02:00 Сейчас в теме
Красиво расписано, я так больше на 8-ке, неужели крупные конторы на 7-ке не думают переходить на 8-ку? Все будете допиливать 7-ку?
6. yuraos 955 21.11.11 05:05 Сейчас в теме
Да думают, думают... и еще раз думают!
И чем крупней - тем дольше и трудней :)))))
7. dicwork 21.11.11 20:42 Сейчас в теме
(6) yuraos
Просто если много наработанного кода под "семерку", его трудно сразу вот так взять и перенести на "восьмерку". Поэтому и сидим на "семерке" и пилим ее дальше под себя.
8. yuraos 955 22.11.11 06:10 Сейчас в теме
dicwork пишет:
(6) yuraos
Просто если много наработанного кода под "семерку", его трудно сразу вот так взять и перенести на "восьмерку". Поэтому и сидим на "семерке" и пилим ее дальше под себя.

Етта точно!
Сидим на этом суку и пилим-пилим-пилим его .... ;))))))
Че дальше бывает по закону гравитации наверное все знают.
9. yuraos 955 22.11.11 21:26 Сейчас в теме
Доброго времени суток! Обновлены файлы поставки:
Консоль1CQA_ALL.rar
Консоль1CQA.rar
PlugIns.rar
Подправлен мелкий баг в консоли при "перезагрузке запроса" +
+ некритические изменения во вспомогательной обработке ИзменениеВремениДокумента.ert.
10. oav 24.11.11 07:36 Сейчас в теме
Очень хорошо ,что появилась возможность редактировать запрос.
11. Naked 24.11.11 11:46 Сейчас в теме
Кстати ИМХО на семерке как раз и остались большинство крупных организаций, и причина известна:
большая организация => очень большие запросы\хотелки узеров => очень очень много дописок, и перенос ни к чему если все работает на 7
12. Ёпрст 1036 24.11.11 13:07 Сейчас в теме
(0) А зачем древние версии ВК кидать в архив ?
14. yuraos 955 24.11.11 14:17 Сейчас в теме
(12) Ёпрст,
версии в архиве те,
которые на сайте 1cpp указаны как "рекомендованные стабильные релизы". :)))
15. yuraos 955 24.11.11 14:23 Сейчас в теме
yuraos пишет:
(12) Ёпрст,
версии в архиве те,
которые на сайте 1cpp указаны как "рекомендованные стабильные релизы". :)))


а что под версией 1cpp3220 или 1cpp3227
будет в dbf и в монопольном режиме работать
без подмены библиотеки DBEng32.dllв каталоге BIN???
17. Ёпрст 1036 24.11.11 15:22 Сейчас в теме
(15)Не будет. И можно работать либо на заплатке от hogik, либо на провайдере от ужаста, без изменения бэкенда
13. Ёпрст 1036 24.11.11 13:13 Сейчас в теме
+Для oledb строка подключения устаревшая + запросы в дбф базе сто лет в обед выполняются в монопольном режиме.
152. yuraos 955 11.12.13 14:04 Сейчас в теме
EXECSCRIPT(
"sel ect id as Ссылка from $Справочник.Номенклатура INTO TABLE #Номенклатура)"+
CHR(13)+
"select Таб.Ссылка as [Ссылка$Справочник.Номенклатура] fr om #Номенклатура as Таб")
159. sss999 38 12.12.13 12:19 Сейчас в теме
EXECSCRIPT(
"sel ect id as Ссылка from $Справочник.Номенклатура INTO TABLE #Номенклатура)"+
CHR(13)+
"select Таб.Ссылка as [Ссылка$Справочник.Номенклатура] fr om #Номенклатура as Таб")
не работает у меня говорит нет dbf номенклатура
177. yuraos 955 15.12.13 19:08 Сейчас в теме
пришлось сделать еще один вложенный подзапрос,
чтобы вычислить дату оплаты кредит-документа:

NVL($КДок1.ДатаОплаты,NVL($КДок2.ДатаОплаты,NVL($КДок3.ДатаОплаты,NVL($КДок4.ДатаОплаты,NVL($КДок5.ДатаОплаты,{d’0001-01-01’}))))) as ДатаОплаты

---
теперь как я понимаю твоя задача все это разломать,
а потом правильно собрать соединив CHR(13)
;)

во вложении - исходник запроса для консоли
Прикрепленные файлы:
!ВедомостьПокупателей.qry
178. sss999 38 15.12.13 21:14 Сейчас в теме
(177) блин я немножко другое спрашивал,вот циклы,и после них мой запрос перестает работать,через скрипт ,циклы должны быть рабочие выдернуты из другого отчета.щас проверю с твоим.
// Знак "'" не поддерживается, поэтому заменяем на скобки

Скобка="[";
номпозиции=Найти(ТекстЗапроса,"'");
Пока номпозиции<>0 Цикл
ТекстЗапроса=Лев(ТекстЗапроса,номпозиции-1)+Скобка+Сред(ТекстЗапроса,номпозиции+1);
Если Скобка="[" Тогда Скобка="]"
Иначе Скобка="["
КонецЕсли;
номпозиции=Найти(ТекстЗапроса,"'");
КонецЦикла;


// Знак """ не поддерживается, поэтому заменяем на скобки

Скобка="[";
номпозиции=Найти(ТекстЗапроса,"""");
Пока номпозиции<>0 Цикл
ТекстЗапроса=Лев(ТекстЗапроса,номпозиции-1)+Скобка+Сред(ТекстЗапроса,номпозиции+1);
Если Скобка="[" Тогда Скобка="]"
Иначе Скобка="["
КонецЕсли;
номпозиции=Найти(ТекстЗапроса,"""");
КонецЦикла;

//Разделитель строк не поддерживается поэтому убираем,

//строки больше 255 симолов не поддерживаются , поэтому удлиняем при помощи CHR(13)

ВрТекстЗапроса="";
Для Счетчик=1 По СтрКоличествоСтрок(ТекстЗапроса) Цикл
ТекСтрока=СтрПолучитьСтроку(ТекстЗапроса,Счетчик);
ТекСтрока=" "+СокрЛП(ТекСтрока)+" ";
Если Счетчик=1 Тогда
ВрТекстЗапроса=ВрТекстЗапроса+ТекСтрока;
Иначе
Если СокрЛП(ТекСтрока)<>"" Тогда
ПереносСтрокиФоксПро="'+"+CHR(13)+"'";
ВрТекстЗапроса=ВрТекстЗапроса+ПереносСтрокиФоксПро+ТекСтрока­;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ТекстЗапроса = ВрТекстЗапроса;
ВрТекстЗапроса = "";


номпозиции=Найти(ТекстЗапроса,"{d"); // {d [2006-01-01]}

Пока номпозиции<>0 Цикл
Начало=Лев(ТекстЗапроса,номпозиции-1);
ДатаПар=Сред(ТекстЗапроса,номпозиции+4,10);
Конец=Сред(ТекстЗапроса,номпозиции+16);

ТекстЗапроса=Начало+"{^ "+ДатаПар+"}"+Конец;
номпозиции=Найти(ТекстЗапроса,"{d");
КонецЦикла;



ТекстЗапроса = "EXECSCRIPT(' SEL ECT * fr om ("+текстзапроса+") as WW INTO table TempTmpTable1') ";
180. yuraos 955 16.12.13 09:03 Сейчас в теме
(178) sss999,
в принципе я так и понял,
что ты программно генеришь текст запроса с функцией EXECSCRIPT()
на основе исходного.

но с учетом замечания в (173) я подумал, что проблема связана
с непроверенным изменением запроса для учета дат оплат возвратов.
181. sss999 38 16.12.13 11:32 Сейчас в теме
182. sss999 38 16.12.13 13:01 Сейчас в теме
(180) что подскажешь есть идеи ? ))
183. yuraos 955 16.12.13 13:59 Сейчас в теме
(182) sss999,
мутная эта вся тема с функцией EXECSCRIPT()
...
то нельзя, это не поддерживается.
одно лишь преимущество -
- можно пакет команд выполнить за одно обращение к провайдеру данных.
но при этом текст запроса приходится нетривиально преобразовывать.
...
я бы попытался обойтись без нее
184. sss999 38 17.12.13 11:53 Сейчас в теме
(183) [Фирма_1c_type_Справочник_1c_dot_Фирмы] не знаешь как сделать что бы после обработки парсером псевдоним был не такой а просто "фирма" при этом что бы нормально отображался не как id?
187. yuraos 955 17.12.13 12:26 Сейчас в теме
(184) sss999,
если "чтобы отображалось по нормальному" - то никак

если не использовать 1с-ную типизацию в алиясе поля
вместо
СпрФир.ID as [Фирма$Справочник.Фирмы]
писать просто
СпрФир.ID as Фирма

то имя поля транслироваться будет "нормально",
но при выгрузке результата запроса в тз
будут отображаться сами id-ники, а не наименования
188. yuraos 955 17.12.13 12:36 Сейчас в теме
(187)
ну правда можно еще выводить вместо id-ника наименование
СпрФир.DESCR as Фирма.
но тогда не будет ссылки на элемент справочника.
189. sss999 38 17.12.13 13:11 Сейчас в теме
(188) NVL(КДок1.sp1175,NVL(КДок2.sp1230,NVL(КДок3.sp539,NVL(КДок4.sp854,NVL(КДок5.sp465,{^ 001-01-01’}) вот из за этой конструкции не отрабатывает скрипт,когда делаю одновложенное то работает.
190. sss999 38 17.12.13 13:11 Сейчас в теме
(188) как то можно заменить на другой код без вложенности?
191. yuraos 955 17.12.13 13:25 Сейчас в теме
(190) sss999,
это точно из-за вложенности, а не из-за длины строки???
можно переделать через ICASE - но будет длиннее.
192. yuraos 955 17.12.13 13:41 Сейчас в теме
(191)
вот так через ICASE:

ICASE(NOT ISNULL($КДок1.ДатаОплаты),$КДок1.ДатаОплаты,NOT ISNULL($КДок2.ДатаОплаты),$КДок2.ДатаОплаты,NOT ISNULL($КДок3.ДатаОплаты),$КДок3.ДатаОплаты,NOT ISNULL($КДок4.ДатаОплаты),$КДок4.ДатаОплаты,NOT ISNULL($КДок5.ДатаОплаты),$КДок5.ДатаОплаты,DATE(100,1,1)) as ДатаОплаты
193. yuraos 955 17.12.13 13:45 Сейчас в теме
(192)
к стати наверное литералы дат вроде
{d’1900-01-01’}
лучше заменять функцией
DATE(1900,1,1)
...
но правда год в этой функции должен быть >= 100.
194. sss999 38 17.12.13 14:23 Сейчас в теме
(193) {d’1900-01-01’} все заработало с изначальной ,здесь был косяк нужно было так {d’ 1900-01-01’}
196. yuraos 955 17.12.13 14:27 Сейчас в теме
(194) sss999,
SQL - АГБАР! ВО ИСТИНУ - АКБАР!!!
201. sss999 38 17.12.13 14:44 Сейчас в теме
(196) а не подскажешь что бы из таблицы прочитать не id что нужно сделать ставить снова [_$_]?
206. yuraos 955 17.12.13 17:05 Сейчас в теме
(201) sss999,
да, в самом последнем запросе (по вложенности или в пакете),
результат которого выгружается в ТЗ,
в алиясе полей агрегатных типов надо указывать 1с-ную
типизацию вроде as [Фирма$Справочник.Фирмы]
--
только имей ввиду,
если каким-то образом вытащишь id-ники из чужой базы
то результат типизации может быть непредсказуем и заведомо неправильным.
208. sss999 38 17.12.13 18:07 Сейчас в теме
209. yuraos 955 18.12.13 08:02 Сейчас в теме
(206)(208) sss999, точнее надо было бы сказать:
результат типизации может быть непредсказуем и скорее всего неправильным.

поясняю на примере:
Есть база АА и база ББ.
И там и там есть справочник Контрагенты.

Id-ники грубо говоря это числа
уникальные в пределах одной таблицы и
возрастающие в порядке ввода элементов.

Пусть в базе АА контрагентов добавляли в следующем порядке:
К1(1), К2(2) - в скобках условно значение Id

А в базе ББ пусть в начало вклинился контрагент К3:
К3(1), К1(2), К2(3)

И так что имеем при типизации данных выдернутых из базы ББ,
но типизируемых в базе АА:
Контрагент К3(1) соотнесется с контрагентом К1(1)
К1(2) - с К2(2)
а контрагент К2(3) - не соотнесется ни с чем (скорее всего результатом типизации будет битая ссылка)

Еще более криво получится при группировке объединенных данных по id-никам:
В описанной выше ситуации
данные контрагента К1(1) из базы АА сложатся с данными контрагента К3(1) из базы ББ
- это уже будет искажением числовых учетных данных
210. yuraos 955 18.12.13 08:08 Сейчас в теме
(209)
наименьшим злом в этой ситуации было бы
выбирать в конечной выборки для группировки
не id-ники а строковые представления.

для справочников - это наименования (ну может в редком случае код)

а для кредит-документов
....
опа - тут мы с тобой и попались
;)
211. sss999 38 18.12.13 08:43 Сейчас в теме
(210) отчет же есть и им пользуются и вроде как не жаловались,значит не совсем так иначе бы там все перемешивалось какая вероятность что как ты сказал idшники в двух базах будут совпадать у любого контрагента даже хоть он один всего в базах .значит базы наследники друг друга.мне вот непонятно ссылка в семерке это совокупность id и еще там чего то,а как вытащить ссылку что бы можно было и остальные поля вытаскивать из нее как в восьмерке,например descr я же не достану из id а только из самой таблицы справочника,получается ссылка это сама таблица?
213. yuraos 955 18.12.13 16:41 Сейчас в теме
(211) sss999,
1. Ну дай бог, если базы связаны УРБД и все справочники заполняются в центральной базе
и при переносе в перефирийных базах добавляются в том же порядке, что в центральной.
:)

2. не путай ссылку как "объект" или значение "агрегатного типа".
с идентификатором ссылки,
которую часто тоже по простому обзывают "ссылкой".

через объект через точку действительно вытаскиваются остальные атрибуты.
ну а в запросах все атрибуты приходится тянуть из полей соответствующих таблиц
явно или неявно (как в 8-ке при разименовывании поля Ссылка).
216. sss999 38 18.12.13 22:10 Сейчас в теме
(213) я имел ввиду как в восьмерке ссылка,как в семерке вытащить также поле ,что бы из него можно и другие поля вытаскивать и был как идентификатор
219. yuraos 955 19.12.13 19:27 Сейчас в теме
(216) sss999,
как я понял ты имел ввиду, что
в восьмерке можно писать запросы вроде этого:

ВЫБРАТЬ
РеализацияТоваровУслуг.Ссылка КАК Документ,
РеализацияТоваровУслуг.Контрагент,
РеализацияТоваровУслуг.Контрагент.Код,
РеализацияТоваровУслуг.Контрагент.Наименование,
РеализацияТоваровУслуг.Контрагент.ИНН,
РеализацияТоваровУслуг.Контрагент.КПП
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон
Показать


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

при этом на более низком уровне движок запроса выполняет запрос
несколько с другим текстом:

ВЫБРАТЬ
РеализацияТоваровУслуг.Ссылка КАК Документ,
РеализацияТоваровУслуг.Контрагент,
Контрагенты.Код КАК КонтрагентКод,
Контрагенты.Наименование КАК КонтрагентНаименование,
Контрагенты.ИНН КАК КонтрагентИНН,
Контрагенты.КПП КАК КонтрагентКПП
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
ПО РеализацияТоваровУслуг.Контрагент = Контрагенты.Ссылка
ГДЕ
РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон
Показать


то есть получение подчиненных полей неявно сводится к использованию
дополнительных левых соединений и подчиненные поля выбираются
из таблиц с правой стороны этих соединений.
220. yuraos 955 19.12.13 19:30 Сейчас в теме
(219)
Ну а то с чем ты связался - прямые запросы 1cpp в 1с-7.7
да еще в dbf-ной базе

ЭТО ЕСТЬ ТОТ САМЫЙ НАИНИЗКОУРОВНЕВЫЙ SQL-ЯЗЫК

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

так-что придется тебе привыкать писать запросы так,
как они примерно на самом деле делаются
:)
16. Ёпрст 1036 24.11.11 15:20 Сейчас в теме
>>>"рекомендованные стабильные релизы".

Этой "издёвке" года 4 уже.
И читай дальше, что пишут на сайте:

icpp/3.x (рекомендуется к использованию)

В начале 2008 года проект 1C++ портирован с MSVS 6.0 на MSVS 2005(2008) / Intel Compiler (IСL) / STLPort / Boost 1.35.0

Дальнейшее развитие идет под именем icpp (версии 3.x.x.x)
18. Ёпрст 1036 24.11.11 15:22 Сейчас в теме
+ А строка для оледб у тебя не верная (точнее, устаревшая)
19. 24.11.11 20:32 Сейчас в теме
Ёпрст пишет:

+ А строка для оледб у тебя не верная (точнее, устаревшая)


Млин, ЁПРСТ, ты чувак умный, авторитетный!
Не поделися с обчеством умом-размом?

Народ с открытым ртом смотрит на тебя... ;))))))))
20. oav 25.11.11 10:59 Сейчас в теме
Хорошая вещь. Главное удобная и простая и понятная.!!!
21. Ёпрст 1036 25.11.11 16:26 Сейчас в теме
22. yuraos 955 26.11.11 10:37 Сейчас в теме
Ёпрст пишет:

На, дарю


Преааааааааааааагромммммммное спасибо!
Если такие умные люди ничего не писали бы полезного на форумах.....
....они бы потеряли бы всякий смысл! ;)))))))))))))))))))))))))))))))))))))))))
23. yuraos 955 26.11.11 10:45 Сейчас в теме
Ёпрст пишет:

>>>"рекомендованные стабильные релизы".

Этой "издёвке" года 4 уже.
И читай дальше, что пишут на сайте:

icpp/3.x (рекомендуется к использованию)

В начале 2008 года проект 1C++ портирован с MSVS 6.0 на MSVS 2005(2008) / Intel Compiler (IСL) / STLPort / Boost 1.35.0

Дальнейшее развитие идет под именем icpp (версии 3.x.x.x)

----
Пардонс ... не думал что это "для лохов".
Учтемс что разработчики иногда шутятс :))))))))))))))))))
24. yuraos 955 26.11.11 18:31 Сейчас в теме
Всем доброе время суток!!!
Обновлены файлы поставки:
Консоль1CQA.rar, Консоль1CQA_ALL.rar, и PlugIns.rar .
-------------------------------------------------------------------------------------
1) Для устранения "навязчивого сервиса" добавлен флаг 'ДП' над кнопкой "Выполнить" (по умолчанию сброшен).
Если флаг установлен - выводится меню дополнительных действий.
Если не установлен - просто выполняется запрос.
2) Для баз DBF добалена возможность выбирать значение параметра 'Collate' / 'Collating'
через меню действий, выводимого по кнопке "Выполнить" (Скриншот 13).
4) В сервисной обработке ПодборUChoice.ert устранен мелкий баг.
5) По замечаниям господина ЁПРСТ в архив FormEx1CPP.rar
добавлены последние версии ВК 1cpp.dll.
-------------------------------------------------------------------------------------
Всем спасибо за внимание!
25. JohnyDeath 294 27.11.11 19:09 Сейчас в теме
Оригинально ты авторов отблагодарил - засветил их мыло для спам-ботов и прочей нечести!
27. CheBurator 3400 03.12.11 05:04 Сейчас в теме
елы-палы.. как-то у меня консоль запросов от Ivan T Berezdetsky весьма существенно отличается от сабжевой... а консоль - достаточно свежая, еще по моей проьбе Ivan T Berezdetsky вносил/попралвл допфункционал...
28. yuraos 955 04.12.11 00:38 Сейчас в теме
Всем доброго времени суток!
Обновлены файлы поставки Консоль1CQA_ALL.rar и Консоль1CQA.rar.

Отчеты "Движения документа" и "Структура подчиненности"
(используются при обработке выбора из меню действий с объектом в таблице результатов запроса)
интегрированы в консоль, чтобы не зависеть от используемой конфигурации.

Отчет о движениях - в полном вариате (по регистрам, проводкам, записям ЖР и истории реквизитов).

При формировании структуры подчиненности для выборки подчиненых документов используются прямые запросы к базе.

Также оптимизировано поведение консоли для баз DBF в монопольном режиме:
При открытии обработка в блоке попытка-исключение пытается выполнить тестовый запрос:
select count(*) from 1susers.
Если при выполнении запроса исключения не возникает -
- значит в монопольном режиме прямые запросы работают (пользователь подсуетился для этого).
И поэтому ему не надо выводить никаких сообщений "о невозможности выполнить запрос".
29. yuraos 955 04.12.11 13:10 Сейчас в теме
CheBurator пишет:

елы-палы.. как-то у меня консоль запросов от Ivan T Berezdetsky весьма существенно отличается от сабжевой... а консоль - достаточно свежая, еще по моей проьбе Ivan T Berezdetsky вносил/попралвл допфункционал...

Сначала мне по наследству досталась, повидимому, первоначальная версия
консольки от Дмитрия Ощепкова.
Я ее довольно сильно натюнил:
прикрутил режим подбора (нада было),
конструктор запросов (для развлекухи, но иногда полезен),
укладывание списков ссылок во впеменные таблицы (бывает полезно),
ну и всяких бантиков навязал интерфейсных (вроде выбора типа параметра в дереве).
При этом я старался сильно не "ломать" диалог и модуль.
Но недавно мне попалась вот эта версия консоли
http://www.1cpp.ru/forumfiles/Attachments/1CQA_001.zip
И мне сильно захотелось имитацию исполнения пакетного запроса
(эта фича меня щас здорово выручает, ломаю регистры перед обрезкой базы неподетски!).
Что бы объединить функционал двух версий обработок,
пришлось все довольно сильно все переделать (и диалоге, и в модуле).
Так что эта консоль довольно сильно отличается от исходных.
Но авторская информация в описании оставлена без изменений + добавлено от себя.
30. pupkinSana 78 06.12.11 12:00 Сейчас в теме
77 forever

Нах мне 8ка если все инструменты для работы есть в семерке?
77+ООП = не надо мучать попу 8кой
31. fishca 1156 06.12.11 12:05 Сейчас в теме
(30) если уж Орефков повернулся в сторону восьмерки, то все инструменты скоро будут и в восьмерке ;).
32. yuraos 955 06.12.11 17:59 Сейчас в теме
(31) fishca,
ты имеешь наверное ввиду этот проект
http://snegopat.ru/ ???
ну будем надеяться,
что только расширением возможностей конфигуратора дело не закончиться
:)))))))))))
Эх, как я буду в 8-ке без своих любимых индексированных таблиц !!!
34. fishca 1156 07.12.11 08:33 Сейчас в теме
(32) тебе стандартных средств работы с индексами в восьмерке не хватает?
ТаблицаЗначений (ValueTable)
Индекс (IndexOf)
Синтаксис:
Индекс(<Строка>)
Параметры:
<Строка> (обязательный)
Тип: СтрокаТаблицыЗначений. Строка таблицы значений, для которой нужно определить индекс.
Возвращаемое значение:
Тип: Число. Индекс указанной строки в коллекции. Если не найдено, то возвращается -1.
Описание:
Получает индекс строки в коллекции строк таблицы значений.
35. yuraos 955 07.12.11 19:39 Сейчас в теме
fishca пишет:

(32) тебе стандартных средств работы с индексами в восьмерке не хватает?
ТаблицаЗначений (ValueTable)
Индекс (IndexOf)
Синтаксис:
Индекс(<Строка>)
Параметры:
<Строка> (обязательный)
Тип: СтрокаТаблицыЗначений. Строка таблицы значений, для которой нужно определить индекс.
Возвращаемое значение:
Тип: Число. Индекс указанной строки в коллекции. Если не найдено, то возвращается -1.
Описание:
Получает индекс строки в коллекции строк таблицы значений.
Показать


fishca, ты наверное хотел не про эти индексы ;)))
а про вот эти (иначе - совсем не в тему попал):

1) ТаблицаЗначений (ValueTable)
Индексы (Indexes)
Использование:

Только чтение. 
Описание:

Тип: ИндексыКоллекции. 
Содержит коллекцию индексов таблицы значений.

2) ИндексыКоллекции (CollectionIndexes)
Добавить (Add)
Синтаксис:

Добавить(<Колонки>) 
Параметры:

<Колонки> (обязательный)

Тип: Строка. 
Строковое описание колонок индекса в виде: "Колонка1, Колонка2...". 
Возвращаемое значение:

Тип: ИндексКоллекции. 

Описание:

Добавляет индекс в список индексов коллекции.
Показать


и с 1cpp наверняка не работал...
... индексированная таблица там не просто таблица значений с индексами
для ускорения перебора строк, а нечто большее, вот почитай справку он-лайн:
http://www.1cpp.ru/docum/icpp/html/IndexedTable.html
33. yuraos 955 06.12.11 18:03 Сейчас в теме
yuraos пишет:

(31) fishca,
ты имеешь наверное ввиду этот проект
http://snegopat.ru/ ???
ну будем надеяться,
что только расширением возможностей конфигуратора дело не закончиться
:)))))))))))
Эх, как я буду в 8-ке без своих любимых индексированных таблиц !!!

Кстати всем рекомендую!
Вот здесь можно скачать бесплатную демо-версию:
Общедоступная демо-версия на базе релиза 1.1.1.2
36. EvgeniuXP 07.12.11 21:04 Сейчас в теме
Спасибо, что не забываете про 1С:Программистов 7.7, которые мучаются и деваться не куда, отличная консоль запросов! пользуюсь постоянно ей!
37. KrakoZyabl 77 08.12.11 13:30 Сейчас в теме
38. yuraos 955 08.12.11 18:09 Сейчас в теме
EvgeniuXP пишет:

Спасибо, что не забываете про 1С:Программистов 7.7, которые мучаются и деваться не куда, отличная консоль запросов! пользуюсь постоянно ей!


Да трудно про себя самого забыть!!!
;)))))))))))))
39. ander_ 10.12.11 11:38 Сейчас в теме
Спасибо! И старая консоль не раз выручала, а с этой гораздо удобней.
40. yuraos 955 11.12.11 23:17 Сейчас в теме
Всем доброе время суток!
Обновлены файлы поставки:
- Консоль1CQA_ALL.rar
- Консоль1CQA.rar
- FormEx1CPP.rar
Текущие изменения:
1) Добавлена обработка спец.комментариев в тексте запроса (для установки спец.опций выполнения запроса).
поддерживается обработка следующих спец.комментариев:
'--!ExecuteTransaction' выполнять в транзакции с фиксацией или откатом (в зависимости от ошибок);
'--!ExecuteRollback' выполнять в транзакции с последущим откатом
(для просмотра "результатов" запроса без изменения данных в базе);
подробности в макете "СпецКомметарииЗапроса" (можно вывести в табличный документ из диалога обработки).
2) Добавлен вывод в табличный документ описания обработки;
3) В меню действий с объектом по клику мышью добавлена
команда открытия объекта для редактирования в обработке
'Редактор Реквизитов' (автор Цылёв Владислав vet7777@mail.ru);
4) В файле FormEx1CPP.rar выложена подправленная версия класса "Общие.Форма.Привязка"
(устранена ошибка времени выполнения, проявляющаяся в терминале,
если установлен размер окна приложения в 'процентах от размера рабочего стола'
большое спасибо Pari за обсуждение проблемы);
41. Гость 13.12.11 16:44
42. yuraos 955 17.12.11 14:44 Сейчас в теме
Всем доброе время суток!
Обновлены файлы поставки:
- Консоль1CQA_ALL.rar
- Консоль1CQA.rar
Текущие изменения:
1) Исправлен баг: не выводилось описание обработки (из-за неправильного указания имени макета с описанием).
2) Исправлен баг: не формировалось дерево документов при обработке команды меню действий со значением в ячейке таблицы результатов запроса (из-за неправильного вызова процедуры рекурсивного вывода на печать подчиненных документов).
43. VIC_2010 23.12.11 15:08 Сейчас в теме
Большое спасибо! Именно с этой обработки начал применять 1С++...
44. yuraos 955 23.12.11 16:31 Сейчас в теме
(43) VIC_2010, пажалуста!
только посторожней с нею ...
... а то "хорошее" - это сильнодействующий наркотик.
К нему быстро привыкают!!!
;))))))))))))))))))))
45. Naked 28.12.11 08:07 Сейчас в теме
Довольно таки хорошая штука)))
народ, подскажите, может быть есть что либо в 7.7 для прямых запросов, похожее на 8шный конструктор запросов?
46. yuraos 955 28.12.11 08:41 Сейчас в теме
Naked пишет:

Довольно таки хорошая штука)))

народ, подскажите, может быть есть что либо в 7.7 для прямых запросов, похожее на 8шный конструктор запросов?

Есть штатный убогий инструмент, для таких же штатных убогих запросов.
;))))
Есть так же примочки для запросов 1c++:

Вот эта примочка для режима конфигуратора:
http://infostart.ru/public/14933/?PAGEN_1=1#comm527164

Примочка для режима 1с-преприятие описана в этой статье и использавана в использавана данной консоли.
ЗЫ:
правда примочки эти работают только для баз SQL
:((((((((((
47. mayer 11.01.12 18:02 Сейчас в теме
Очень удобная вещь! Благодарствую! :)
48. wunderland 199 04.02.12 18:52 Сейчас в теме
Подскажите, а обратиться в режиме прямого запроса к БухгалтерскимИтогам возможно?
Кажется, мне где-то попадался пример такого запроса, но через консоль не вижу как это сделать.
49. yuraos 955 05.02.12 09:15 Сейчас в теме
(48) wunderland, обратиться к бухитогам конечно можно ....
.... но запрос придется полностью писать самому,
используя таблицы:
1SACCS (счета)
1SBKTTLC (итоги синтетические)
1SBKTTL (итоги аналитические по субконто)
1SENTRY (бухг. проводки) в соединении с таблицей 1SJOURN

К сожалению разработчики 1с++, наверное,
не были сильно озадачены решением бухгалтерских задач и
не предусмотрели для бухитогов виртуальных таблиц.

Впрочем в dbf версии все имеющие виртульные таблицы не работают и
даже запрос к остаткам по регистру приходится писать руками.

Здесь кое-какая описаловка по структуре таблиц 1С:
http://www.script-coding.com/v77tables.html
http://oksla.narod.ru/1CTables.htm

Здесь кое-какие примеры по запросам к бухитогам:
http://www.1cpp.ru/forum/YaBB.pl?num=1151219880
http://www.1cpp.ru/forum/YaBB.pl?num=1211377364/15#15
Примеры чисто ознакомительные. Все нужно на самом деле анализировать и писать с нуля.

Во вложении - парсер файлов DD / DDS.
Наглядно показывает структуру всех таблиц базы, имена и типы полей.
Часто бывает полезен:
Я например ни за что бы не догодался, что остатки и обороты в таблицах
1SBKTTLC и 1SBKTTL (версия для dbf) хранятся в полях с типом char(15),
а в sql версии используется более "естественный" тип numeric(15.2)!

Успехов вам!!!
:)
Прикрепленные файлы:
VIEWDD.EXE.rar
50. yuraos 955 05.02.12 09:55 Сейчас в теме
(48) wunderland, к стати о птичках
:)
если вы работаете в базе dbf
вам также будет полезна справка по
Microsoft Visual FoxPro 9.0.
если в базе sql то справка в
SQL Server Books Online

В прямых запросах часто приходися использовать встроенные функции,
в частности функции пребразования типов.
58. BlueWind 15.11.13 17:09 Сейчас в теме
(48) wunderland,

Для запросов к бухитогам можно использовать класс ПрямойЗапрос, автор vandalsvq

Что он может:
- выполнение запроса на языке подобном 1Cv8
- выполнение запроса независимо от формата БД (DBF - 1sqlite, SQL - ODBCRecordset)
- наличие виртуальных таблиц, вроде Остатки, Обороты и ОстаткиОбороты по БухИтогам и Регистрам

Релиз:
http://www.1cpp.ru/forum/YaBB.pl?num=1273512019/1#1
Обсуждение:
http://www.1cpp.ru/forum/YaBB.pl?num=1285352210/0

Простой пример использования: Отображение остатков по товарам в форме списка справочника Номенклатура
//__________________________________________________________­____________
Процедура ОбновитьОстатки() //[+]sv 031112
//[!]sv 031112 Прямой запрос отрабатывает очень быстро, можно даже повесить динамическое обновление остатков на обработку ожидания

тзОстатки = СоздатьОбъект("ТаблицаЗначений");
флПрямойЗапрос = 1;
флПоказатьОстатки = 0;

т1 = _GetPerformanceCounter();
КонДата = КонецРассчитанногоПериодаБИ();
стрПредставлениеПериодаЗапроса = Строка(КонДата);

спСчетов = СоздатьОбъект("СписокЗначений");
спСчетов.ДобавитьЗначение(СчетПоКоду("214.1"));
спСчетов.ДобавитьЗначение(СчетПоКоду("214.2"));
спСчетов.ДобавитьЗначение(СчетПоКоду("214.3"));
стрСчета = СтрЗаменить(спСчетов.ВСтрокуСРазделителями(), """", "");
стрСчета = СтрЗаменить(стрСчета, ",", ", ");

мдв = СоздатьОбъект("MetaDataWork");
ЗапросСчет = "";
Для иС = 1 По спСчетов.РазмерСписка() Цикл
ЗапросСчет = ЗапросСчет + мдв.ЗначениеВСтрокуБД(спСчетов.ПолучитьЗначение(иС)) + ?(иС = спСчетов.РазмерСписка(),"","','");
КонецЦикла;
Состояние("Расчет итогов на "+стрПредставлениеПериодаЗапроса+" сч. "+стрСчета);

//Запрос
ПрямойЗапрос = СоздатьОбъект("ПрямойЗапрос");
//ПрямойЗапрос.РежимОтладки = 1;
ПрямойЗапрос.УстановитьТекстовыйПараметр("КонДата", КонДата);
ПрямойЗапрос.УстановитьТекстовыйПараметр("ЗапросСчет", ЗапросСчет);

ТекстЗапроса = "
|ВЫБРАТЬ
| Субконто1 КАК [Субконто $Субконто]
|, Субконто1_вид КАК Субконто_вид
|, СУММА(КоличествоОстаток) КАК [Количество $Число.15.3]
|ИЗ
| $БИОстатки.Основной(:КонДата~
| ,
| ,(Номенклатура)
| ,(Количество)
| ,(Счет В (:ЗапросСчет))
| ,
| ) КАК Би
|
|СГРУППИРОВАТЬ
| Субконто1, Субконто1_вид
|";

тзОстатки = ПрямойЗапрос.Выполнить("ТаблицаЗначений",ТекстЗапроса);
ПрямойЗапрос = "";
ВремяЗапроса = _GetPerformanceCounter()-т0;
Сообщить("Время запроса: "+ВремяЗапроса);

Если тзОстатки.КоличествоКолонок() <> 0 Тогда
флПоказатьОстатки = 1;
КонецЕсли;
КонецПроцедуры
//__________________________________________________________­____________
Функция Остаток() //[+]sv 031112
_Остаток = 0;

Если флПоказатьОстатки = 1 Тогда
нстр = 0;
Если тзОстатки.НайтиЗначение(ТекущийЭлемент(), нстр, "Субконто") = 1 Тогда
_Остаток = тзОстатки.ПолучитьЗначение(нстр, "Количество");
КонецЕсли;
КонецЕсли;

Возврат _Остаток;
КонецФункции
59. yuraos 955 15.11.13 18:43 Сейчас в теме
(58) BlueWind,
да я все время присматриваюсь к этому классу
...
все думаю заточить эту консоль под 1sqlite
и добавить подобие конструктора заготовок для запросов
но руки не доходят (поскольку я сейчас отошел от 1с-7.7)
---
но если руки дойдут - то заодно заточу ее и под этот класс.
;)
51. wunderland 199 06.02.12 00:27 Сейчас в теме
Спасибо, уважаемый за ответ, и за ссылки, и за парсер...
Ну нет, так нет - будем писать вручную.
Правда мне как-то привычнее в таком виде:

SELECT
СубконтоДт2 [ТМЦ $Справочник.ТМЦ]
, Сумма
, Количество
FROM $БИДвиженияССубконто.Основной(:НачДата,:КонДата~,,
(СчетДт = :СчетДт) and (СубконтоДт1 =:ВыбМестоХранения)) БИ

хотя привычнее, это громко сказано, я только осваиваю прямые запросы,
сам то я больше по 8-ке, а тут вот угараздило устроится на фирму где
на 7.7 еще все крутится и на переход незнаю когда решатся.
53. alon 171 16.02.12 10:24 Сейчас в теме
(51)Поддержу.
Очень не хватает возможности подключить класс-выполнитель аналогично qryConsole.
52. wunderland 199 06.02.12 13:59 Сейчас в теме
Отличная вещь - чем больше юзаю, тем больше нравится... Большое спасибо!!!
54. ппп986 11.07.12 20:14 Сейчас в теме
Я конечно извиняюсь, но почему мне эта обработка выдает вот это?

ODBCDatabase:Соединение() error:
State IM001, native 0, message [Microsoft][Диспетчер драйверов ODBC] Драйвер не поддерживает данной функции
57. yuraos 955 12.07.12 18:51 Сейчас в теме
(54) ппп986, через ODBC к базе DBF почему-то подконнектиться не получается в запросах 1с++ ;) .
приходиться работать ч/з OLEDB...
...и по-моему где-то в статье должно было быть написано по этому поводу, что
для использования в базах dbf требуется установка драйвера OLEDB vfpoledb provider v9
55. ппп986 11.07.12 22:08 Сейчас в теме
может что-то делаю не так :(
56. ппп986 11.07.12 22:31 Сейчас в теме
Может кто-нибудь даст
Microsoft OLE DB Provider for Visual FoxPro 9.0
60. sss999 38 21.11.13 13:52 Сейчас в теме
подскажите почему не работает кейс

select distinct
СпрКонтр.Descr as Контрагент,
СпрДог.Descr as Договор,
case when debkred=1 then Покуп.Sp2201 else 5 end as СуммаПрод ,
Sp2203 as СуммаСебест
from
ra2207 as покуп
LEFT JOIN SC92 as СпрДог
LEFT JOIN SC134 as СпрКонтр
ON СпрКонтр.sp125 = СпрДог.ID
ON Покуп.SP2195 = СпрДог.ID
61. yuraos 955 21.11.13 14:11 Сейчас в теме
(60)
доброго времени суток, sss999,
так попробуй
***
select distinct
СпрКонтр.Descr as Контрагент,
СпрДог.Descr as Договор,
case
when покуп.debkred=1 then Покуп.Sp2201
else 5
end as СуммаПрод ,
покуп.Sp2203 as СуммаСебест
from
ra2207 as покуп
LEFT JOIN SC92 as СпрДог
ON СпрКонтр.sp125 = СпрДог.ID
LEFT JOIN SC134 as СпрКонтр
ON Покуп.SP2195 = СпрДог.ID
***
1. пропущены псевдонимы таблиц в выделенных жырным местах
2. возможно провайдеру не понравились условия соединений все скопом в конце запроса
62. yuraos 955 21.11.13 14:13 Сейчас в теме
(61)
а почему запрос с внутренними именами таблиц ?
я когда работал с прямыми запросами под 7.7,
то уже вовсю пользовался макроименами метапарсера 1СPP.
63. yuraos 955 21.11.13 14:26 Сейчас в теме
(62)
сравни:
---
select distinct
СпрКонтр.Descr as Контрагент,
СпрДог.Descr as Договор,
case
when Покуп.debkred=1 then $Покуп.СуммаПрод
else 5
end as СуммаПрод,
$Покуп.СуммаСебест as СуммаСебест
from
$Регистр.Продажи as Покуп
LEFT JOIN $Справочник.Договора as СпрДог
ON $СпрКонтр.ОсновнойДоговор = СпрДог.ID
LEFT JOIN $Справочник.Контрагенты as СпрКонтр
ON $Покуп.Контрагент = СпрДог.ID
---
куда наглядней
64. sss999 38 21.11.13 14:31 Сейчас в теме
(63) потмоу что делается к расным файлам дбв которые просто лежат в базе и в метаданных их нет.Не работает даже когда просто пишу CASE WHEN 1=1 THEN 0 ELSE 5 END
65. yuraos 955 21.11.13 14:41 Сейчас в теме
(64) sss999,
что пишет, скриншот не выложишь???

ra2207 - регистр Продажи ?
Sp2201 - СуммаПродаж
Sp2203 - СуммаСебесттоимости - или как там эти ресурсы там называются (забыл уже) ??

дома проверю, вспомню 7.7 немного.
66. sss999 38 21.11.13 14:48 Сейчас в теме
пишет одно и тоже в принципе для любых ошибок Запрос >>> OLEDBCommand error:
FAILED! ICommandText::Execute(): Command contains unrecognized phrase/keyword.
68. yuraos 955 21.11.13 18:16 Сейчас в теме
(66) sss999, да...подзабыл я все эти дела с foxpro.
---
дело в том, что конструкция
case when ... then ... else ... end
это из t-sql, а в foxpro в запросах вместо неё
приходится использовать функцию iif(,,)
69. yuraos 955 21.11.13 18:19 Сейчас в теме
(68)
ниже указанный вариант у меня в консоли
выдал не "Command contains unrecognized phrase/keyword."
а более оптимистичное:
"File 'ra2207.dbf' does not exist."
***
select distinct
СпрКонтр.Descr as Контрагент,
СпрДог.Descr as Договор,
iif(покуп.debkred=1, Покуп.Sp2201, 5) as СуммаПрод,
покуп.Sp2203 as СуммаСебест
from
ra2207 as покуп
LEFT JOIN SC92 as СпрДог ON Покуп.SP2195 = СпрДог.ID
LEFT JOIN SC134 as СпрКонтр ON СпрКонтр.sp125 = СпрДог.ID
***
71. sss999 38 22.11.13 12:08 Сейчас в теме
(69) а не знаешь по какому полю в справочнике договоры найти владельца контрагента
73. yuraos 955 22.11.13 14:24 Сейчас в теме
(71)(72)
со всякими конструкциями специфичными для t-sql надо аккуратней
скорее всего под foxpro они работать не будут.

в частности хинты для указания режима блокировок типа (NOLOCK)
foxpro не поддерживаются.
72. sss999 38 22.11.13 14:17 Сейчас в теме
(69) с этим разобрался,parentext поле,теперь не работает конструкция with rollup ,хотя в "документации" я нашел что парень ее использовал ,я грешу на dll
Оставьте свое сообщение

См. также

Консоль прямых запросов для 1С++ (1С 7.7) + ToySQL 4

Инструменты и обработки Программист Внешняя обработка (ert,epf) v7.7 1cv7.md Windows Абонемент ($m) Консоль запросов

Консоль прямых запросов для 1С 7.7, под компоненту 1Сpp.dll. Особенности: 1. Печать результата запроса. 2. Сохранение результата в файл в виде внутреннего представления таблицы значений 3. Формирование запроса как для SQL, так и для DBF вариантов, с разными вариантами драйверов. 4. Сортировка по произвольной колонке результата таблицы Консоль подпилена для работы с ToySQL

1 стартмани

04.06.2015    9296    19    qeos    5       

Консоль запросов 12

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v7.7 1cv7.md Windows Абонемент ($m) Консоль запросов

Консоль запросов к базе SQL, не требующая внешних компонент

1 стартмани

29.04.2015    10390    33    Gvozdod    8       

Консоль прямых запросов для 1С++ (1С 7.7) 9

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v7.7 1cv7.md Windows Абонемент ($m) Консоль запросов

Консоль прямых запросов для 1С 7.7, под компоненту 1Сpp.dll. Особенности: 1. Печать результата запроса. 2. Сохранение результата в файл в виде внутреннего представления таблицы значений 3. Формирование запроса как для SQL, так и для DBF вариантов, с разными вариантами драйверов. 4. Сортировка по произвольной колонке результата таблицы

1 стартмани

25.04.2012    29517    168    Aristo_    9       

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

Инструменты и обработки Программист Внешняя обработка (ert,epf) v7.7 1cv7.md Россия Абонемент ($m) Консоль запросов

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

30 стартмани

09.11.2009    38675    1060    ture    33       

Консоль и расширения запросов 1С++ v2.04 91

Инструменты и обработки Программист Компонента, плагин (dll, vbs,..) v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Windows Абонемент ($m) Консоль запросов

Внешняя компонента. Возможности: - консоль и конструктор прямых запросов; - расширения запросов для создания локальных OLAP-кубов (TOTALS ... BY ...); - сводные и электронные таблицы, диаграммы (на базе Office Web Components); - etc.

06.02.2008    25484    1221    berezdetsky    52       

1C-QueryAnaliser V.1.71 (Анализатор Запросов: Запрос черный, запрос прямой, SQL, консоль, интерпретатор, отладчик, конструктор запросов, набор шаблонов) 120

Инструменты и обработки Программист Внешняя обработка (ert,epf) v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m) Консоль запросов

Обработка позволяет строить и исполнять запросы на языке 1С v.7.7, исполнять код на языке 1С без использования конфигуратора. Построитель запросов позволяет писать запросы без использования конфигуратора и обходиться без заучивания точных названий полей. Позволяет строить прямые SQL-запросы как напрямую, так и с помощью мнемонического языка YoSQL. Набор шаблонов позволяет осуществлять действия с данными с помощью языка 1С и MS SQL. Позволяет работать при размере экрана 800х600 точек. Не требует подключения внешних компонент.

1 стартмани

16.08.2006    17283    880    Sure    23