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

15.07.22

Разработка - Инструментарий разработчика

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Консоль запроса
.ert 227,00Kb
56
56
10 SM
Скачать Купить за 4 550 руб.

Введение

Данная обработка (далее консоль) позволяет выполнять прямы запросы в среде 1С:Предприятие версии 7.7

Для удоства написания запроса в консоль встроен метапарсер, позволяющий вместо системных имен 1С (вроде SC792 и тому подобных) использовать более понятные (Справочник.Товары и т.п.). Также консоль понимает русскоязычное написание основных служебных слов языка Transact-SQL (SELECT=ВЫБРАТЬ, FROM=ИЗ и т.п.), что позволяет писать запрос на русском языке.

Для работы консоли не нужны абсолютно никакие внешние компоненты (никаких 1C++, FormEx и т.п.). Единственые необходимые условия:

  1. База данных должна быть на сервере SQL
  2. Необходимо один раз запустить 1С:Предприятие от имени администратора (локального или доменного)
  3. Заходить в базу необходимо не в монопольном режиме

Описание

Для написания запроса необходимо не только уметь писать SQL-запросы (https://msdn.microsoft.com/ru-ru/library/bb510741.aspx), но и знать структуру хранения данных в базах данных 1С версии 7.7  (http://www.script-coding.com/v77tables.html)

Ключевые слова

Язык запросов, используемый в консоли, аналогичен языку Transact-SQL. Основные слова имеют  русскоязычные аналоги:

ВЫБРАТЬ = SELECT
ИЗ = FROM
ГДЕ = WHERE
СГРУППИРОВАТЬ ПО = GROUP BY
УПОРЯДОЧИТЬ ПО = ORDER BY
КАК = AS
ПЕРВЫЕ = TOP
[ВНУТРЕННЕЕ] СОЕДИНЕНИЕ = [INNER] JOIN
ЛЕВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ = LEFT [OUTER] JOIN
ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ = RIGHT [OUTER] JOIN
ПОЛНОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ = FULL [OUTER] JOIN
ПЕРЕКРЕСТНОЕ СОЕДИНЕНИЕ = CROSS JOIN
ОБЪЕДИНИТЬ [ВСЕ] = UNION ALL
ВЫБОР = CASE
КОГДА = WHEN
ТОГДА = THEN
ИНАЧЕ = ELSE
КОНЕЦ = END
И = AND
ИЛИ = OR
НЕ = NOT
МИНИМУМ = MIN
МАКСИМУМ = MAX
СУММА = SUM
КОЛИЧЕСТВО = COUNT
СРЕДНЕЕ = AVG
ЕСТЬ NULL = IS NULL
ЕСТЬNULL = ISNULL
ПОДОБНО = LIKE
ВРЕГ = UPPER
НРЕГ = LOWER
СРЕД = SUBSTRING
ВЫРАЗИТЬ = CAST
ЦЕЛОЕ = INT
РЕАЛЬНОЕ = REAL
ДАТА = DATE
ДАТАВРЕМЯ = DATETIME

Имена таблиц и полей

Для удобства имена таблиц и полей могут быть заменены именами среды 1С. Символ $ вначале выражения запроса означает, что выражение необходимо преобразовать в написание SQL. 

$Журнал - таблица _1SJOURN
$Журнал.Ссылка - ID документа (IDDOC)
$Журнал.Вид - вид документа (IDDOCDEF), значения:
 - $ВидДокумента.<ИмяДокумента> - вид документа
$Журнал.ДатаВремя - позиция документа (DATE_TIME_IDDOC) в виде <Дата><Время><Ссылка> (пример '20150105A54AG0 2AKT'):
- Дата в формате ГГГГММДД
- Время количество секунд от начала дня * 10000, в 36-ричном формате (A54AG0 = 613260000; 61326 сек = 17:02:06)
- Ссылка документа (IDDOC)
$Журнал.Компоненты - набор компонент, по которым могут делаться движения(проводки). может состоять из нескольких(+) движений:
 - $ПроведенОперУчет
 - $ПроведенРасчет
 - $ПроведенБухУчет
 - $ПроведенПериодическиеРеквизиты
 - $ПроведенОперация
 - $ПроведенДокументОперация
$Журнал.НомерДок - Номер документа (DOCNO)
$Журнал.Проведен - набор компонент, по которым сделаны движения(проводки). значения аналогичны $Журнал.Компоненты
$Журнал.Помечен - пометка удаления документа (ISMARK), значения:
 - $Помечен
 - $НеПомечен
$Журнал.<ИмяОбщегоРеквизита> - Общий реквизит SPxxxx

$Константы - таблица константы (_1SCONST)
$Константы.Ссылка - ID константы. значения:
 - $ВидКонстанты.<ИмяКонстанты> - имя константы
$Константы.Значение - значение константы (VALUE)

$Периодические - таблица периодичесих реквизитов/констант (_1SCONST)
$Периодические.ОбъектСсылка - Ссылка на объект (OBJID). в случае периодической константы равен ' 0'
$Периодические.Ссылка - ID периодической константы или реквизита справочника. значения:
 - $ВидКонстанты.<ИмяКонстанты> - имя константы
 - $РеквизитСправочника.<ИмяСправочника>.<ИмяРеквизита>
$Периодические.Дата - дата значения (DATE);
$Периодические.Значение - значение периодической константы или реквизита справочника (VALUE)
$Периодические.ДокументСсылка - ссылка на документ, установивший периодическое значение (DOCID)
$Периодические.Время - количество секунд от начала дня * 10000, время установки значения (TIME)
$Периодические.НомерСтроки - номер строки документа, к которой привязано значение (LINENO_)

$Справочник.<ИмяСправочника> - таблица справочника SCxxxx
$Справочник.<ИмяСправочника>.<ИмяРеквизита> - реквизит справочника SPxxxx
$Справочник.<ИмяСправочника>.Ссылка - ID справочника
$Справочник.<ИмяСправочника>.Ссылка13 - ID справочника с указанием вида объекта. используется в реквизитах "справочник неопределенного вида"
$Справочник.<ИмяСправочника>.Код - код справочника
$Справочник.<ИмяСправочника>.Наименование - наименование справочника
$Справочник.<ИмяСправочника>.Родитель - ID родителя справочника (PARENTID)
$Справочник.<ИмяСправочника>.ЭтоПапка - признак группы справочника (ISFOLDER), значения:
 - $ЭтоПапка
 - $ЭтоЭлемент
$Справочник.<ИмяСправочника>.Помечен - пометка удаления справочника (ISMARK), значения:
 - $Помечен
 - $НеПомечен

$РегистрДвижения.<ИмяРегистра> - таблица движений регистра RAxxxx
$РегистрДвижения.<ИмяРегистра>.<ИмяРеквизита> - измерение, ресурс или реквизит регистра SPxxxx
$РегистрДвижения.<ИмяРегистра>.Ссылка - ID документа, сделавшего движение (IDDOC)
$РегистрДвижения.<ИмяРегистра>.Вид - вид документа, сделавшего движение (IDDOCDEF), значения:
 - $ВидДокумента.<ИмяДокумента> - вид документа
$РегистрДвижения.<ИмяРегистра>.ДатаВремя - позиция документа (DATE_TIME_IDDOC) в виде <Дата><Время><Ссылка> (пример '20150105A54AG0 2AKT'):
- Дата в формате ГГГГММДД
- Время количество секунд от начала дня * 10000, в 36-ричном формате (A54AG0 = 613260000; 61326 сек = 17:02:06)
- Ссылка документа (IDDOC)
$РегистрДвижения.<ИмяРегистра>.НомерСтроки - номер строки документа, к которой привязано движение (LINENO_)
$РегистрДвижения.<ИмяРегистра>.ПриходРасход - признак прихода или расхода движения (DEBKRED), значения:
 - $Приход
 - $Расход
$РегистрДвижения.<ИмяРегистра>.НомерДвижения - порядковый номер движения (ACTNO)

$РегистрИтоги.<ИмяРегистра> - таблица итогов регистра RGxxxx
$РегистрИтоги.<ИмяРегистра>.Период - период итогов регистра (PERIOD). Итоги хранятся на конец периода или на ТА.
Таким образом, итоги на начала апреля 2015 хранятся на дату 01.03.2015
$РегистрИтоги.<ИмяРегистра>.<ИмяРеквизита> - измерение, ресурс или реквизит регистра SPxxxx

$Документ.<ИмяДокумента> - таблица шапки документа DHxxxx
$Документ.<ИмяДокумента>.Ссылка - ID документа (IDDOC)
$Документ.<ИмяДокумента>.Ссылка13 - ID документа с указанием вида объекта. используется в реквизитах "документ неопределенного вида"
$Документ.<ИмяДокумента>.<ИмяРеквизита> - реквизит(общий реквизит) шапки документа DHxxxx
$ТабличнаяЧасть.<ИмяДокумента> - таблица табличной части документа DTxxxx
$ТабличнаяЧасть.<ИмяДокумента>.Ссылка - ID документа (IDDOC)
$ТабличнаяЧасть.<ИмяДокумента>.НомерСтроки - номер строки документа (LINENO_)
$ТабличнаяЧасть.<ИмяДокумента>.<ИмяРеквизита> - реквизит табличной части документа DTxxxx

$ЖурналРасчетов.<ИмяСправочника> - таблица журнала расчетов CJxxxx
$ЖурналРасчетов.<ИмяСправочника>.<ИмяРеквизита> - реквизит журнала расчетов SPxxxx

$Перечисление.<ИмяПеречисления>.<ЗначениеПеречисления> - значение перечисления

Пример запроса консоли:

ВЫБРАТЬ
    $Товары.Код КодТовара
    ,$Товары.Наименование НаименованиеТовара
ИЗ
    $Справочник.Товары Товары
ГДЕ
    НЕ $Товары.Помечен = $Помечен
УПОРЯДОЧИТЬ ПО
    НаименованиеТовара

преобразуется в SQL-запрос:

SELECT
    Товары.CODE КодТовара
    ,Товары.DESCR НаименованиеТовара
FROM
    BASE1C.dbo.SC2943 Товары
WHERE
    NOT Товары.ISMARK = 1
ORDER BY
    НаименованиеТовара

Заключение

Данная консоль поможет не только быстро получить необходимую информацию из базы данных 1С версии 7.7, но и систематизировать выгрузку данных, используя необходимые процедуры и функции из данной консоли.

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

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

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

Спасибо Александру Маляеву
e-mail: maljaev@mail.ru
ICQ: 275009000

Спасибо авторам сайта http://www.script-coding.com/

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

См. также

Инструментарий разработчика Системный администратор Программист Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.

1 стартмани

23.04.2014    167461    1874    Alexoniq    1596    

498

Инструментарий разработчика Программист Платформа 1С v7.7 Платформа 1С v8.3 Россия Абонемент ($m)

Согласитесь, что окно стандартное сообщений в 1С иногда приносит больше неудобств, чем пользы. И тем более разные "Предупредить"... Что с этим окном только не делают! Его отцепают от формы, делают маленьким, умудряются спрятать за границы экрана. А потом звонят программистам с претензией, что документ почему-то не проводится, отя ничего и не пишет. У вас такого не было? А вот у нас было и не раз )))

1 стартмани

04.09.2013    33197    61    O-Planet    78    

49

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.

1 стартмани

13.08.2013    21475    Reptile    5    

35

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Встала недавно задача для одной организации, которая все еще на 1С 7.7 немного автоматизировать работу отдела продаж. А именно уйти от ручного заполнения договоров, сделанных юристами в MS Word. Договора от разных фирм и разного назначения отличались. Переводить их в таблицы 1С очень не хотелось и нашел способ прямо в файлах Word сделать небольшие дополнения, чтобы можно было печатать, используя именно эти заготовки юристов.

1 стартмани

14.07.2013    27447    56    adamx    11    

14

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Давным давно, когда я еще плотно писал на 7.7 работа с формами была мучительной и неудобной. Приходилось каждый элемент выкладывать, выравнивать на форме ручками, прописывать код в модуле. Иногда при разработке очередной формы приходила в голову мысль: "а где-то я уже похожее делал..." и начинался мучительный поиск подходящего кода в своих запасах........

1 стартмани

21.02.2013    18200    36    MarSeN    14    

16

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Анализируем различные данные в 1С, используя OLAP-технологии со всеми прелестями. Т.е. наглядное отображение данных, быстрые расчеты, горизонтальные и вертикальные группировки любой вложенности, удобная фильтрация, Drag'n'Drop и ещё много приятных вещей от MS. Обработка на входе принимает практически любую таблицу значений (ТЗ в которой колонкам указаны типы значений, строка, число и т.п.), на выходе имеем на форме 1С сводную таблицу и график по этой ТЗ, с которой работаем, как и в Excel со сводной таблицей и диаграммой. Взял за основу разработку «OLAP Анализ счёта» ( http://infostart.ru/public/14964/ ) от JohnyDeath и переделал под любую ТЗ. Опционально используется «Прогресс бар для 1С 77» (http://infostart.ru/public/14061/ ) от Gmix.

1 стартмани

21.12.2012    36218    51    venger    7    

23

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Весь код на 1С 7.7, собранный для повторного использования за 8 лет работы.

10 стартмани

25.11.2012    35283    248    adhocprog    51    

70
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Franco 82 30.04.15 12:09 Сейчас в теме
+, однозначно. Такую бы для 8.3
2. Gvozdod 105 30.04.15 13:05 Сейчас в теме
(1) Franco, чтобы из 8.3 подключаться к 7.7? Есть такие планы
3. 1cmod 07.05.15 11:57 Сейчас в теме
(0) Типа запрос по АДО идёт? Провайдер, какой должен быть ?
+ типизации естественно нет, на выходе с запроса, так ?

4. Gvozdod 105 08.05.15 06:25 Сейчас в теме
(3) да, "ADODB.Connection". Провайдер sqloledb. Типизацию можно сделать, просто ваял для выгрузки в другую базу и для загрузки, подключаясь из другой базы. А там типизация - только лишние тормоза.

Но, фича нужная, да. Добавлю в ближайшее время
5. 1cmod 08.05.15 08:56 Сейчас в теме
Имена табличек - парсинг DDS?
7. Gvozdod 105 12.05.15 08:31 Сейчас в теме
(5) нет. В DDS недостаточно информации для разбора метаданных.
(6) $ВидСправочника есть, используется для реквизитов типа справочник неопределенного вида. Добавлю в описание позже.
С неопределенными ещё не делал
6. 1cmod 08.05.15 08:58 Сейчас в теме
Ну и не вижу, есть ли $ВидСправочника и Как работаешь с значениями неопределенного Типа.
Оставьте свое сообщение