Визуальная структура запроса

27.12.12

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

Анализирует текст запроса и строит визуальную структуру источников данных (наподобие дерева).
Пригодится при разборе громоздких составных запросов, таких как в типовых конфигурациях 1С.


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

Наименование Файл Версия Размер
ПарсерТекстаЗапросов.erf
.erf 36,54Kb
1016
.erf 36,54Kb 1016 Скачать
ПарсерТекстаЗапросов81.epf
.epf 35,04Kb
38
.epf 35,04Kb 38 Скачать
Альтернативная форма (все в одной странице)
.erf 37,14Kb
186
.erf 37,14Kb 186 Скачать

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

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

Пригодится при анализе сложных составных запросов, например в типовых конфигурациях от 1С.

В будущем, объединю ее со своей обработкой "Выполнение и отладка запроса"...

В модуле несколько полезных функций для анализа текста запроса "ЭтоПакетЗапросов", "ЭтоОбъединенныйЗапрос" и т.п.

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

26.12.2012 - Добавлена версия для платформы 8.1 (по просьбе pvlunegov, комментарий 112). 

26.05.2012 - Исправлена ошибка "В реальном запросе видит только одно соединение", указанная в комментариях 14, 21 и 31.

29.05.2012 - Исправлены ошибки разбора запросов, указанные в сообщениях 46 и 47. Добавлено: показывает объединения для вложенных запросов.

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    121540    670    389    

709

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 15300 руб.

06.10.2023    7247    21    6    

38

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 8000 руб.

10.11.2023    3488    11    1    

33

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2520 руб.

14.01.2013    177712    1073    0    

848

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99329    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18093    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28078    3    10    

14

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23589    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Sergey K 65 25.05.12 05:47 Сейчас в теме
Сделать опционально:
1.на связях отображать поля по которым устанавливается связь,
2.в таблицах отображать псевдонимы полей, которые выбираются

Имхо: без этих данных вряд ли эта обработка хоть как-то поможет при отладке
9. DrAku1a 1679 25.05.12 10:57 Сейчас в теме
(1) Идея отличная, сделаю.

(5) Действительно, в ИР более подробный парсинг, но для этого используктся ВК, требующая регистрации, я же сделал все это средствами только языка 1С...
Но идея ИР как организовать дерево мне нравится. Возможно, сделаю нечто подобное.

(6) AlX0id, попробовал, показывает все связи. Если можно, текст запроса - в студию, или притестите следующий:
Выбрать * из А как А 
правое соединение 
(выбрать * из В1 как В1 
	полное соединение В2 как В2
	полное соединение В3 как В3
	полное соединение В4 как В4)
как В
левое соединение
(выбрать * из Б1 как Б1
	внутреннее соединение Б2 как Б2)
как Б 
Показать

(8) Не совсем Вас понял, уточните что нужно?
13. AnryMc 849 25.05.12 11:38 Сейчас в теме
(9)

Запрос.УстановитьПараметр("ИМЯ", <Значение>)

В запросе &ИМЯ

В пакетном запросе - какие параметры объявляются в каком пакете. Например гденибудь справа - информативно
14. AlX0id 25.05.12 11:38 Сейчас в теме
(9)
ваш запрос отображается нормально, мой кусок (точнее, тоировский %)) - нет:
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ТаблицаДокумента.ОбъектРемонта,
	ТаблицаДокумента.Показатель,
	ТаблицаДокумента.ПлановыйГрафикРаботы,
	ТаблицаДокумента.ДатаРаботыС,
	ТаблицаДокумента.ДатаРаботыПо,
	ВЫБОР
		КОГДА ПараметрыНаработкиОР.Показатель ЕСТЬ NULL 
			ТОГДА ПараметрыНаработкиГрупп.ПлановаяНаработка
		ИНАЧЕ ПараметрыНаработкиОР.ПлановаяНаработка
	КОНЕЦ КАК ПлановаяНаработка,
	ВЫБОР
		КОГДА ПараметрыНаработкиОР.Показатель ЕСТЬ NULL 
			ТОГДА ПараметрыНаработкиГрупп.КоэффициентИспользованияОборудования
		ИНАЧЕ ПараметрыНаработкиОР.КоэффициентИспользованияОборудования
	КОНЕЦ КАК КоэффициентИспользованияОборудования,
	ВЫБОР
		КОГДА ПараметрыНаработкиОР.Показатель ЕСТЬ NULL 
			ТОГДА ПараметрыНаработкиГрупп.ПериодПлановойНаработки
		ИНАЧЕ ПараметрыНаработкиОР.ПериодПлановойНаработки
	КОНЕЦ КАК ПериодПлановойНаработки
ПОМЕСТИТЬ ТаблицаПлановойНаработки
ИЗ
	ТаблицаДокумента КАК ТаблицаДокумента
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.торо_ПараметрыНаработкиОбъектовРемонта КАК ПараметрыНаработкиОР
		ПО ТаблицаДокумента.ОбъектРемонта = ПараметрыНаработкиОР.ОбъектРемонта
			И ТаблицаДокумента.Показатель = ПараметрыНаработкиОР.Показатель
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.торо_ПараметрыНаработкиОбъектовРемонта КАК ПараметрыНаработкиГрупп
		ПО ТаблицаДокумента.РемонтнаяГруппа = ПараметрыНаработкиГрупп.ОбъектРемонта
			И ТаблицаДокумента.Показатель = ПараметрыНаработкиГрупп.Показатель
ГДЕ
	(НЕ ВЫБОР
				КОГДА ПараметрыНаработкиОР.Показатель ЕСТЬ NULL 
					ТОГДА ПараметрыНаработкиГрупп.ПлановаяНаработка
				ИНАЧЕ ПараметрыНаработкиОР.ПлановаяНаработка
			КОНЕЦ ЕСТЬ NULL )
Показать

Возможно, дело в том, что два левых соединения идут с одной и той же таблицей.. Но опять же - пробовал сымитировать подобную ситуация на вашем запросе - ошибка не повторилась..
Прикрепленные файлы:
31. DrAku1a 1679 26.05.12 04:36 Сейчас в теме
(14),(21) понял природу недоработки - все проще, я не учел, что после ЛЕВОЕ СОЕДИНЕНИЕ <ИмяТаблицы> идет ПО <список связей>, а не сразу новое СОЕДИНЕНИЕ. Исправлю.
(22) Несколько текстов можно перечислить через ";" - получится пакет запросов. С пакетами обработка работает.
(23) Связи показывает разные (стрелка влево - левое соединение, стрелка вправо - правое соединение и т.д.)
(26) Ваше пожелание повторяет самый первый комментарий. Если собрать в эти блоки еще и поля - будет огроменная диаграмма... У меня сейчас первая мысль - как сделать ее компактнее...
(29) Пакет запросов - в студию... я проверял на пакетном запросе - должно все работать...
(27) Про 1С и их типовые конфигурации лучше всего сказал один мой товарищ "Чтобы сложить два числа они вызывают три функции из трех разных модулей..." - я не пойму, они таким образом делают запутываение кода для конкретного разработчика? В платформе 7.7 модулей было меньше - и код был проще для разбора... А тут зачастую отладчик только поможет понять хоть часть замысла того или иного рассчета.

Про сложный запрос и цикл запросов позвольте несогласиться.
Возьмем базу данных SQL, которая крутится на одном компьютере с сервером 1С, а клиентная часть установлена на каждом клиенте (т.е. удаленно, сообщаются по сети). При этом запрос делается из клиента. В такой ситуации лучше сделать один сложный запрос к серверу, чем 10 простых, т.к. мощный сервер быстро соберет по запрошенным данным ответ. Важную роль играет количество запросов (больше времени тратится на организацию соединения и согласование между клиентом и сервером).
Даже если клиент и сервер находятся на одной машине - ситуация кардинально не меняется (только уменьшится разница времени).
В файловой версии базы 10 простых запросов, обычно проходят гораздо быстрее одного сложного, т.к. тут нет сервера - и нет согласований.
34. RustIG 1351 26.05.12 18:50 Сейчас в теме
(31) возможно ли предположить, что дальнейшее сопровождение сложных запросов обходится дороже, чем простых? Выгодно ли это клиенту?
Вообще-то я не утверждаю, а задаю вопросы. В таком случае со мной нельзя ни соглашаться, ни спорить.
И я призываю к диалогу всех, а не только автора. :)
От вас очень хочется увидеть сложный запрос - предмет диалога. :)
37. samamoiloff 861 27.05.12 12:56 Сейчас в теме
(34) Сам сложный запрос не несет в себе ни негатива, ни дополнительных затрат. Все это появляется, когда он выступает в качестве объекта для каких-либо процессов (доработки, понимания и т.п.). Сдается мне, что разработки уважаемого автора и TormozIt (а есть еще?) позволяет избавиться от части неудобств. Можно предположить, что визуальный конструктор запросов (ну сделайте кто-нибудь :-), более навороченный, чем у 1С (ну, предположим, драг-энд-дроп в сложную визуальную структуру, со встроенными методиками извращения, пардон, связывания данных, с подсказками при наведении курсора о параметрах виртуальных таблиц, с автоматическим выстраиванием структуры "от результата", и это я еще не начал мечтать...) может снять оставшуюся часть неудобств и даже позволит наслаждаться программисту полетом своей мысли.
39. tormozit 7136 27.05.12 13:20 Сейчас в теме
(37) Конечно же меня, как автора единственной на текущий момент публичной грамматики языка запросов 1с, такая мысль посещала и не один раз. Сделать такой конструктор с помощью этой грамматики не очень сложно, но времени придется потратить много. Думаю не меньше 50 часов бы у меня ушло на воссоздание аналога платформенного конструктора и дальше уже пошли бы доп. фичи часов на 20. Одним словом дорогой конструктор получится.
40. AnryMc 849 27.05.12 13:45 Сейчас в теме
(39) tormozit,
А хорошую разработку здесь можно и продать
41. samamoiloff 861 27.05.12 14:34 Сейчас в теме
(39)Снегопат, каюсь, не смотрел еще. Под него какой-нито плагин не планируется?
(40)Никто не знает (ну, кроме авторов, конечно)какой доход приносят разработки, какова прибыльность, какой спрос...
Здесь скорее всего нужен проект рекламного характера для продажи более объемных вещей. 70 часов * 500 рублей = 35000 рублей сумма приемлимая для раскрутки инфобизнеса.
(39)tormozit, готов рассмотреть Ваши предложения, осенью в планах делать запуски продаж.
42. pumbaE 28.05.12 11:04 Сейчас в теме
(39) на управляемых формах в режиме тонкого клиента... мечта.
140. tormozit 7136 12.08.20 00:57 Сейчас в теме
(39) В итоге на свой конструктор запросов я потратил не менее 300ч.
133. DrAku1a 1679 01.07.13 12:23 Сейчас в теме
(37),(125),(127),(130),(129) Набросал идею такого конструктора - чтобы не забыть на будущее:
Визуальный конструктор запросов (идея)

Полагаю, самое сложное в реализации - полноценный парсер (вот эта вещь мне ну очень нужна). Ну и еще надо подумать над интерфейсом...
135. v.l. 434 01.07.13 13:36 Сейчас в теме
(133) я вот тоже прикинул - создать панель инструментов с блоками и связями, как, например, в схеме бизнес-процессов, и при связях просить пользователя задать условия связей вручную или парсить метаданные и предлагать по типам.
Хотя связи через точку, может, глубиной одного уровня тоже можно включить.
Потом выдать заготовку, скелет запроса, который скормить Конструктору и настроить в нём тонко.
Но это так, идея.
47. StepByStep 3667 28.05.12 17:23 Сейчас в теме
(31)

Не очень хорошо привозить такой запрос здесь, но все же:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
ЦеновыеГруппы.ЦеноваяГруппа КАК ЦеноваяГруппа,
ЦеновыеГруппы.ВидЦен КАК ВидЦен,
ЦеновыеГруппы.Ссылка КАК ПравилоЦенообразования
ПОМЕСТИТЬ ЦеновыеГруппыПравила
ИЗ
Справочник.ПравилаЦенообразования.ЦеновыеГруппы КАК ЦеновыеГруппы
ГДЕ
ЦеновыеГруппы.Ссылка = &ПравилоЦенообразования

ИНДЕКСИРОВАТЬ ПО
ВидЦен,
ЦеноваяГруппа
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВидЦеныПравила.ВидЦен КАК ВидЦен,
ВидЦеныПравила.Ссылка КАК ПравилоЦенообразования
ПОМЕСТИТЬ ВидЦеныПравила
ИЗ
Справочник.ПравилаЦенообразования КАК ВидЦеныПравила
ГДЕ
ВидЦеныПравила.Ссылка = &ПравилоЦенообразования
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
&Магазин,
ТаблицаЦен.Период КАК Период,
ТаблицаЦен.Регистратор КАК Регистратор,
ТаблицаЦен.Номенклатура КАК Номенклатура,
ТаблицаЦен.Характеристика КАК Характеристика,
ВЫБОР
КОГДА ЦеныНоменклатурыА.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ИЛИ ЕСТЬNULL(ЦеныНоменклатурыА.Упаковка.Коэффициент, 0) = 0
ТОГДА ЦеныНоменклатурыА.Цена
ИНАЧЕ ЦеныНоменклатурыА.Цена / ЦеныНоменклатурыА.Упаковка.Коэффициент
КОНЕЦ КАК Цена,
ВЫБОР
КОГДА ЦеныНоменклатурыБ.Цена ЕСТЬ NULL
ТОГДА 0
КОГДА ЦеныНоменклатурыБ.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ИЛИ ЕСТЬNULL(ЦеныНоменклатурыБ.Упаковка.Коэффициент, 0) = 0
ТОГДА ЦеныНоменклатурыБ.Цена
ИНАЧЕ ЦеныНоменклатурыБ.Цена / ЦеныНоменклатурыБ.Упаковка.Коэффициент
КОНЕЦ КАК СтараяЦена,
ВЫБОР
КОГДА ЦеныНоменклатурыА.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ИЛИ ЕСТЬNULL(ЦеныНоменклатурыА.Упаковка.Коэффициент, 0) = 0
ТОГДА ЦеныНоменклатурыА.Цена
ИНАЧЕ ЦеныНоменклатурыА.Цена / ЦеныНоменклатурыА.Упаковка.Коэффициент
КОНЕЦ - ВЫБОР
КОГДА ЦеныНоменклатурыБ.Цена ЕСТЬ NULL
ТОГДА 0
КОГДА ЦеныНоменклатурыБ.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ИЛИ ЕСТЬNULL(ЦеныНоменклатурыБ.Упаковка.Коэффициент, 0) = 0
ТОГДА ЦеныНоменклатурыБ.Цена
ИНАЧЕ ЦеныНоменклатурыБ.Цена / ЦеныНоменклатурыБ.Упаковка.Коэффициент
КОНЕЦ КАК Дельта
ПОМЕСТИТЬ ИзмененияЦен
ИЗ
(ВЫБРАТЬ
МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период,
МАКСИМУМ(ЦеныДоИзменения.Период) КАК ДатаПрошлогоИзменения,
ЦеныНоменклатуры.Регистратор КАК Регистратор,
ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
ЦеныНоменклатуры.Характеристика КАК Характеристика
ИЗ
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныДоИзменения
ПО ЦеныНоменклатуры.Период > ЦеныДоИзменения.Период
И ЦеныНоменклатуры.Номенклатура = ЦеныДоИзменения.Номенклатура
И ЦеныНоменклатуры.Характеристика = ЦеныДоИзменения.Характеристика
И ЦеныНоменклатуры.ВидЦены = ЦеныДоИзменения.ВидЦены
ГДЕ
НЕ &ИспользоватьПрименениеЦен
{ГДЕ
(ЦеныНоменклатуры.Период <= &КонецПериода)}

СГРУППИРОВАТЬ ПО
ЦеныНоменклатуры.Регистратор,
ЦеныНоменклатуры.ВидЦены,
ЦеныНоменклатуры.Номенклатура,
ЦеныНоменклатуры.Характеристика) КАК ТаблицаЦен
ЛЕВОЕ СОЕДИНЕНИЕ ВидЦеныПравила КАК ВидЦеныПравила
ПО (ВидЦеныПравила.ВидЦен = ТаблицаЦен.ВидЦены)
ЛЕВОЕ СОЕДИНЕНИЕ ЦеновыеГруппыПравила КАК ЦеновыеГруппыПравила
ПО (ЦеновыеГруппыПравила.ВидЦен = ТаблицаЦен.ВидЦены)
И ТаблицаЦен.Номенклатура.ЦеноваяГруппа = ЦеновыеГруппыПравила.ЦеноваяГруппа
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатурыА
ПО ТаблицаЦен.Период = ЦеныНоменклатурыА.Период
И ТаблицаЦен.Номенклатура = ЦеныНоменклатурыА.Номенклатура
И ТаблицаЦен.Характеристика = ЦеныНоменклатурыА.Характеристика
И ТаблицаЦен.ВидЦены = ЦеныНоменклатурыА.ВидЦены
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатурыБ
ПО ТаблицаЦен.ДатаПрошлогоИзменения = ЦеныНоменклатурыБ.Период
И ТаблицаЦен.Номенклатура = ЦеныНоменклатурыБ.Номенклатура
И ТаблицаЦен.Характеристика = ЦеныНоменклатурыБ.Характеристика
И ТаблицаЦен.ВидЦены = ЦеныНоменклатурыБ.ВидЦены
ГДЕ
НЕ ВЫБОР
КОГДА ЦеновыеГруппыПравила.ВидЦен ЕСТЬ НЕ NULL
И ЦеновыеГруппыПравила.ВидЦен <> ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка)
ТОГДА ЦеновыеГруппыПравила.ВидЦен
КОГДА (ЦеновыеГруппыПравила.ВидЦен ЕСТЬ NULL
ИЛИ ЦеновыеГруппыПравила.ВидЦен = ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка))
И (ВидЦеныПравила.ВидЦен ЕСТЬ НЕ NULL
И ВидЦеныПравила.ВидЦен <> ЗНАЧЕНИЕ(Справочник.ВидыЦен.ПустаяСсылка))
ТОГДА ВидЦеныПравила.ВидЦен
ИНАЧЕ NULL
КОНЕЦ ЕСТЬ NULL

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ТаблицаЦен1.ОбъектЦенообразования,
ТаблицаЦен1.Период,
ТаблицаЦен1.Регистратор,
ТаблицаЦен1.Номенклатура,
ТаблицаЦен1.Характеристика,
ВЫБОР
КОГДА ЦеныНоменклатурыА.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ИЛИ ЕСТЬNULL(ЦеныНоменклатурыА.Упаковка.Коэффициент, 0) = 0
ТОГДА ЦеныНоменклатурыА.Цена
ИНАЧЕ ЦеныНоменклатурыА.Цена / ЦеныНоменклатурыА.Упаковка.Коэффициент
КОНЕЦ,
ВЫБОР
КОГДА ЦеныНоменклатурыБ.Цена ЕСТЬ NULL
ТОГДА 0
КОГДА ЦеныНоменклатурыБ.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ИЛИ ЕСТЬNULL(ЦеныНоменклатурыБ.Упаковка.Коэффициент, 0) = 0
ТОГДА ЦеныНоменклатурыБ.Цена
ИНАЧЕ ЦеныНоменклатурыБ.Цена / ЦеныНоменклатурыБ.Упаковка.Коэффициент
КОНЕЦ,
ВЫБОР
КОГДА ЦеныНоменклатурыА.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ИЛИ ЕСТЬNULL(ЦеныНоменклатурыА.Упаковка.Коэффициент, 0) = 0
ТОГДА ЦеныНоменклатурыА.Цена
ИНАЧЕ ЦеныНоменклатурыА.Цена / ЦеныНоменклатурыА.Упаковка.Коэффициент
КОНЕЦ - ВЫБОР
КОГДА ЦеныНоменклатурыБ.Цена ЕСТЬ NULL
ТОГДА 0
КОГДА ЦеныНоменклатурыБ.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ИЛИ ЕСТЬNULL(ЦеныНоменклатурыБ.Упаковка.Коэффициент, 0) = 0
ТОГДА ЦеныНоменклатурыБ.Цена
ИНАЧЕ ЦеныНоменклатурыБ.Цена / ЦеныНоменклатурыБ.Упаковка.Коэффициент
КОНЕЦ
ИЗ
(ВЫБРАТЬ
ДействующиеЦены.ОбъектЦенообразования КАК ОбъектЦенообразования,
ДействующиеЦены.Номенклатура КАК Номенклатура,
ДействующиеЦены.Характеристика КАК Характеристика,
МАКСИМУМ(ДействующиеЦены.Период) КАК Период,
МАКСИМУМ(ДействующиеСтарыеЦены.Период) КАК ДатаПрошлогоИзменения,
ДействующиеЦены.Регистратор КАК Регистратор
ИЗ
РегистрСведений.ДействующиеЦеныНоменклатуры КАК ДействующиеЦены
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДействующиеЦеныНоменклатуры КАК ДействующиеСтарыеЦены
ПО ДействующиеЦены.Номенклатура = ДействующиеСтарыеЦены.Номенклатура
И ДействующиеЦены.Характеристика = ДействующиеСтарыеЦены.Характеристика
И ДействующиеЦены.Период > ДействующиеСтарыеЦены.Период
И (ДействующиеСтарыеЦены.ОбъектЦенообразования = &Магазин)
ГДЕ
ДействующиеЦены.ОбъектЦенообразования = &Магазин
И &ИспользоватьПрименениеЦен

СГРУППИРОВАТЬ ПО
ДействующиеЦены.Регистратор,
ДействующиеЦены.ОбъектЦенообразования,
ДействующиеЦены.Номенклатура,
ДействующиеЦены.Характеристика) КАК ТаблицаЦен1
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДействующиеЦеныНоменклатуры КАК ЦеныНоменклатурыА
ПО ТаблицаЦен1.Период = ЦеныНоменклатурыА.Период
И ТаблицаЦен1.Номенклатура = ЦеныНоменклатурыА.Номенклатура
И ТаблицаЦен1.Характеристика = ЦеныНоменклатурыА.Характеристика
И ТаблицаЦен1.ОбъектЦенообразования = ЦеныНоменклатурыА.ОбъектЦенообразования
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДействующиеЦеныНоменклатуры КАК ЦеныНоменклатурыБ
ПО ТаблицаЦен1.ДатаПрошлогоИзменения = ЦеныНоменклатурыБ.Период
И ТаблицаЦен1.Номенклатура = ЦеныНоменклатурыБ.Номенклатура
И ТаблицаЦен1.Характеристика = ЦеныНоменклатурыБ.Характеристика
И ТаблицаЦен1.ОбъектЦенообразования = ЦеныНоменклатурыБ.ОбъектЦенообразования
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ТоварыНаСкладах.ПериодСекунда КАК Период,
ТоварыНаСкладах.Регистратор КАК Регистратор,
ТоварыНаСкладах.Номенклатура КАК Номенклатура,
ТоварыНаСкладах.Характеристика КАК Характеристика,
ТоварыНаСкладах.Склад КАК Склад,
ТоварыНаСкладах.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
ТоварыНаСкладах.КоличествоПриход КАК КоличествоПриход,
ТоварыНаСкладах.КоличествоРасход КАК КоличествоРасход,
ТоварыНаСкладах.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
ПОМЕСТИТЬ ОстаткиИОбороты
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , Авто, , Склад.Магазин = &Магазин {(Номенклатура).* КАК Номенклатура, (Характеристика).* КАК Характеристика, (Склад).* КАК Склад}) КАК ТоварыНаСкладах
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения КАК ПериодСекунда,
НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, МИНУТА) КАК ПериодМинута,
НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, ЧАС) КАК ПериодЧас,
НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, ДЕНЬ) КАК ПериодДень,
НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, НЕДЕЛЯ) КАК ПериодНеделя,
НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, МЕСЯЦ) КАК ПериодМесяц,
НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, КВАРТАЛ) КАК ПериодКвартал,
НАЧАЛОПЕРИОДА(ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодДвижения, ГОД) КАК ПериодГод,
ТаблицаТоварыНаСкладахМаксимальныйПериод.Регистратор КАК Регистратор,
ТаблицаТоварыНаСкладахМаксимальныйПериод.Склад КАК Склад,
ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура КАК Номенклатура,
ТаблицаТоварыНаСкладахМаксимальныйПериод.Характеристика КАК Характеристика,
ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоНачальныйОстаток, 0) КАК КоличествоНачальныйОстаток,
ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоПриход, 0) КАК КоличествоПриход,
ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоРасход, 0) КАК КоличествоРасход,
ЕСТЬNULL(ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоКонечныйОстаток, 0) КАК КоличествоКонечныйОстаток,
ЕСТЬNULL(ЦеныНоменклатуры.Цена * ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоНачальныйОстаток, 0) КАК СуммаНачальныйОстаток,
ЕСТЬNULL(ЦеныНоменклатуры.Цена * ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоПриход, 0) КАК СуммаПриход,
ЕСТЬNULL(ЦеныНоменклатуры.Цена * ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоРасход, 0) КАК СуммаРасход,
ЕСТЬNULL(ЦеныНоменклатуры.Цена * ТаблицаТоварыНаСкладахМаксимальныйПериод.КоличествоКонечныйОстаток, 0) КАК СуммаКонечныйОстаток
ИЗ
(ВЫБРАТЬ
ТоварыНаСкладах.Период КАК ПериодДвижения,
ТоварыНаСкладах.Регистратор КАК Регистратор,
ТоварыНаСкладах.Номенклатура КАК Номенклатура,
ТоварыНаСкладах.Характеристика КАК Характеристика,
ТоварыНаСкладах.Склад КАК Склад,
ТоварыНаСкладах.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
ТоварыНаСкладах.КоличествоПриход КАК КоличествоПриход,
ТоварыНаСкладах.КоличествоРасход КАК КоличествоРасход,
ТоварыНаСкладах.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
МАКСИМУМ(ЦеныНоменклатуры.Период) КАК ПериодМаксимум
ИЗ
ОстаткиИОбороты КАК ТоварыНаСкладах
ЛЕВОЕ СОЕДИНЕНИЕ ИзмененияЦен КАК ЦеныНоменклатуры
ПО ТоварыНаСкладах.Номенклатура = ЦеныНоменклатуры.Номенклатура
И ТоварыНаСкладах.Характеристика = ЦеныНоменклатуры.Характеристика
И ТоварыНаСкладах.Период >= ЦеныНоменклатуры.Период
И ТоварыНаСкладах.Склад.Магазин = ЦеныНоменклатуры.Магазин
{ГДЕ
ТоварыНаСкладах.Номенклатура.* КАК Номенклатура,
ТоварыНаСкладах.Характеристика.* КАК Характеристика}

СГРУППИРОВАТЬ ПО
ТоварыНаСкладах.Период,
ТоварыНаСкладах.Регистратор,
ТоварыНаСкладах.Номенклатура,
ТоварыНаСкладах.Характеристика,
ТоварыНаСкладах.Склад,
ТоварыНаСкладах.КоличествоНачальныйОстаток,
ТоварыНаСкладах.КоличествоПриход,
ТоварыНаСкладах.КоличествоРасход,
ТоварыНаСкладах.КоличествоКонечныйОстаток) КАК ТаблицаТоварыНаСкладахМаксимальныйПериод
ЛЕВОЕ СОЕДИНЕНИЕ ИзмененияЦен КАК ЦеныНоменклатуры
ПО (ЦеныНоменклатуры.Номенклатура = ТаблицаТоварыНаСкладахМаксимальныйПериод.Номенклатура)
И ТаблицаТоварыНаСкладахМаксимальныйПериод.Характеристика = ЦеныНоменклатуры.Характеристика
И (ЦеныНоменклатуры.Характеристика = ТаблицаТоварыНаСкладахМаксимальныйПериод.Характеристика)
И (ЦеныНоменклатуры.Период = ТаблицаТоварыНаСкладахМаксимальныйПериод.ПериодМаксимум)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
БлижайшиеОстаткиПоНоменклатуре.Период,
НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, МИНУТА),
НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, ЧАС),
НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, ДЕНЬ),
НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, НЕДЕЛЯ),
НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, МЕСЯЦ),
НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, КВАРТАЛ),
НАЧАЛОПЕРИОДА(БлижайшиеОстаткиПоНоменклатуре.Период, ГОД),
БлижайшиеОстаткиПоНоменклатуре.Регистратор,
БлижайшиеОстаткиПоНоменклатуре.Склад,
БлижайшиеОстаткиПоНоменклатуре.Номенклатура,
БлижайшиеОстаткиПоНоменклатуре.Характеристика,
ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0),
0,
0,
ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0),
ЕСТЬNULL(БлижайшиеОстаткиПоНоменклатуре.СтараяЦена * ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0),
ВЫБОР
КОГДА БлижайшиеОстаткиПоНоменклатуре.Дельта > 0
ТОГДА ЕСТЬNULL(БлижайшиеОстаткиПоНоменклатуре.Дельта * ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0)
ИНАЧЕ 0
КОНЕЦ,
ВЫБОР
КОГДА БлижайшиеОстаткиПоНоменклатуре.Дельта < 0
ТОГДА ЕСТЬNULL(-БлижайшиеОстаткиПоНоменклатуре.Дельта * ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0)
ИНАЧЕ 0
КОНЕЦ,
ЕСТЬNULL(БлижайшиеОстаткиПоНоменклатуре.Цена * ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0)
ИЗ
(ВЫБРАТЬ
ИзмененияЦен.Период КАК Период,
ИзмененияЦен.Регистратор КАК Регистратор,
ИзмененияЦен.Дельта КАК Дельта,
ИзмененияЦен.Цена КАК Цена,
ИзмененияЦен.СтараяЦена КАК СтараяЦена,
ИзмененияЦен.Номенклатура КАК Номенклатура,
ИзмененияЦен.Характеристика КАК Характеристика,
ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
МАКСИМУМ(ТоварыНаСкладахОстаткиИОбороты.Период) КАК ПериодМаксимум
ИЗ
ИзмененияЦен КАК ИзмененияЦен
ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
ПО ИзмененияЦен.Период >= ТоварыНаСкладахОстаткиИОбороты.Период
И ИзмененияЦен.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
И ИзмененияЦен.Характеристика = ТоварыНаСкладахОстаткиИОбороты.Характеристика
И ИзмененияЦен.Магазин = ТоварыНаСкладахОстаткиИОбороты.Склад.Магазин
{ГДЕ
ИзмененияЦен.Номенклатура.* КАК Номенклатура,
ИзмененияЦен.Характеристика.* КАК Характеристика}

СГРУППИРОВАТЬ ПО
ИзмененияЦен.Период,
ИзмененияЦен.Регистратор,
ИзмененияЦен.Дельта,
ИзмененияЦен.Цена,
ИзмененияЦен.СтараяЦена,
ИзмененияЦен.Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.Склад,
ИзмененияЦен.Характеристика) КАК БлижайшиеОстаткиПоНоменклатуре
ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
ПО БлижайшиеОстаткиПоНоменклатуре.ПериодМаксимум = ТоварыНаСкладахОстаткиИОбороты.Период
И БлижайшиеОстаткиПоНоменклатуре.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
И БлижайшиеОстаткиПоНоменклатуре.Склад = ТоварыНаСкладахОстаткиИОбороты.Склад
И БлижайшиеОстаткиПоНоменклатуре.Характеристика = ТоварыНаСкладахОстаткиИОбороты.Характеристика
ГДЕ
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток <> 0
{ГДЕ
(ТоварыНаСкладахОстаткиИОбороты.Период <= &КонецПериода)}
2. AnryMc 849 25.05.12 07:31 Сейчас в теме
Очень интересная идея. За идею "+"

Должно хорошо помогать при разборке с "чужими" запросами
10. Muhin555 24 25.05.12 11:20 Сейчас в теме
(2) AnryMc, я уже опробовал пропарсить "чужой" пакет запросов из 29 запросов..... наглядность помогает разобраться.

Первая мысль, которая пришла в голову после того, как увидел разработку - прикрутить ее к обычной консоли запросов.... Вспомнился старый добрый MS Access с его визуальным отображением связей таблиц в базе.
Идея - Однозначный "плюс"!!!!
20. DrAku1a 1679 25.05.12 13:48 Сейчас в теме
(10) Если честно, я ее и создал чтобы потом встроить в консоль (только свою).
(13) Теперь понял. Пожелание принято.
(14) О.К. ваш запрос отлажу.
(16) ИМХО, имеется в виду сложный, перегруженный интерфейс. Но думаю, к этому можно привыкнуть...
И это... не мне тут, конечно, говорить о перегруженности - мои диаграммы не в каждый "монитор" влезут :-)
(18) Я находил на инфостарте отвязанную консоль запросов из ИР - она работает, даже дерево строит.
Из этой консоли я позаимствую "прикручивание" класса "Контекстная подсказка" - мне он очень нравится...
70. Muhin555 24 30.05.12 17:33 Сейчас в теме
(10) Muhin555,
Прикрутил от "Консоли запросов" работу с файлами *.sel, на авторство не претендую, но думаю так удобнее смотреть структуру готовых запросов из консоли....
Прикрепленные файлы:
ПарсерТекстаЗапросов_Файлы.erf
74. angler225 125 31.05.12 16:49 Сейчас в теме
(70) Muhin555, Неверный формат хранилища данных 'с:/ПарсерТекстаЗапросов_Файлы.erf'
3. AlX0id 25.05.12 09:58 Сейчас в теме
В общем-то, да. Смотреть - пока не смотрел, но по скринам уже понятно, что идея хорошая %)
4. fuxic 297 25.05.12 10:01 Сейчас в теме
Визуализацию запросов видел, когда работал с виндевом. Там эти связи красиво бегали по трубочкам и видно было по чем связь. Надеюсь сама платформа дойдет до этих фишек. Плюс за реализацию
5. tormozit 7136 25.05.12 10:12 Сейчас в теме
Тут http://devtool1c.ucoz.ru/load/grammatika_jazyka_zaprosov_1s_8_2_goldparser_1_32/1-1-0-4 можно скачать грамматику языка запросов. С ее помощью можно получить строгое синтаксическое дерево. Пример использования в самой подсистеме ИР (Инструменты разработчика) в консоли запросов - дерево запроса. Кстати его тоже можно использовать для анализа сложных запросов.
Прикрепленные файлы:
Student1C; адуырщдв; kstukov; Flashill; yku; an_2; artbear; DrAku1a; Hany; +9 Ответить
7. Hany 25.05.12 10:38 Сейчас в теме
(5) tormozit, Вы правы, ИР помогает в отладке "длинного" 100%, и никаких диаграмм не нужно, как мне кажется. Их огромная древовидная структура только почему-то еще больше пугает. Хотя может я настолько привыкла пользоваться деревом запросов из ИР, что считаю его панацеей:)
15. AlX0id 25.05.12 11:44 Сейчас в теме
(5) tormozit,
В ИР много здравых мыслей и красивых решений, но такое впечатление, что его создатели инопланетяне и общаются между собой только на своем языке, далеком от понимания простых людей.. Имхо, конечно же.
16. tormozit 7136 25.05.12 11:56 Сейчас в теме
(15) Не могу сказать, что мне понятен смысл твоего сообщения. Возможно кто то из нас действительно инопланетянин. Попробуй попроще сформулировать мысль.
charushkin; +1 Ответить
18. petrov_al 10 25.05.12 12:56 Сейчас в теме
(16) tormozit, встроенная конфигурация не есть хорошо, мало кто захочет в типовые конфигурации встраивать ИР...лучше выкладывай свои разработки поотдельности.
19. tormozit 7136 25.05.12 13:12 Сейчас в теме
(18) Данная тема регулярно всплывает в обсуждениях подсистемы. Если почитать форум публикации здесь или на офсайте, то моя позиция станет понятна. В двух словах, поддерживать мобильные версии инструментов заметно затратнее, чем в виде подсистемы, к тому же они менее функциональны. Любой кто писал достаточно сложную систему поймет о чем я (чем больше "зоопарк", тем сложнее им управлять в виде отдельных "животных").
38. samamoiloff 861 27.05.12 13:11 Сейчас в теме
А сегодня сложный запрос - враг. Он отнимает силы, заставляет нервничать и совершать ошибки, он смеется над нами! Не случайно эта публикация, еще раз обращаю ваше внимание, за пару дней скакнула на вершины рейтингов, и по плюсам, и по загрузкам, и по комментариям. (5) - идея супер, но я так и не подключил компоненту... (оправдываться не буду, так вышло).
6. AlX0id 25.05.12 10:20 Сейчас в теме
Из первых наблюдений - похоже, что не работает, если соединений таблиц более, чем одно.. Показывает только первое..
8. AnryMc 849 25.05.12 10:44 Сейчас в теме
Наверно стоит выводить список объявленных параметров с группировкой по запросам (удобно, что бы чтонибудь не забыть установить)
11. Bassgood 1425 25.05.12 11:27 Сейчас в теме
(0), Идея очень понравилась, если постепенно будет производится дальнейшая модернизация обработки (например по тем пожеланиям, которые были высказаны в (1)), то обязательно ее скачаю, а пока у меня не хватает баллов для этого =(
Честно говоря, пока сложно сказать насколько удобно будет пользоваться такой визуализацией для отладки громоздких запросов.
p.s. Публикацию естественно заплюсовал =)
12. kuza_87 28 25.05.12 11:27 Сейчас в теме
Кое в чем (не во всем конечно) но поможет разобраться. Автору спасибки!
75. Программулькин 301 01.06.12 10:17 Сейчас в теме
у этой публикации http://infostart.ru/public/95771/ ошибка

Ошибка при выполнении запроса:

{Форма.ФормаОтчета.Форма(12)}: Поле объекта не обнаружено (ТипЗначения)
/************************************************************************************************************
ВЫБРАТЬ
ОсновныеНачисленияРаботниковОрганизаций.Сотрудник,
ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета,
ОсновныеНачисленияРаботниковОрганизаций.Результат
ИЗ
РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
ГДЕ
ОсновныеНачисленияРаботниковОрганизаций.Сотрудник В
(ВЫБРАТЬ
РаботникиОрганизацийСрезПоследних.Сотрудник КАК Сотрудник
ИЗ
РегистрСведений.РаботникиОрганизаций.СрезПоследних(&КонДата, ) КАК РаботникиОрганизацийСрезПоследних
ГДЕ
РаботникиОрганизацийСрезПоследних.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение))
/************************************************************************************************************
Параметр:
Имя Тип Значение

КонДата Дата 31.05.2012 0:00:00
/*************************************************************************************************************

ОБЫЧНАЯ КОНСОЛЬ ОТРАБАТЫВАЕТ БЕЗ ОШИБОК
17. Maximus00 16 25.05.12 12:23 Сейчас в теме
круть! побёг пробовать
25. пользователь 25.05.12 15:26
Сообщение было скрыто модератором.
...
21. romansun 193 25.05.12 14:20 Сейчас в теме
в опщем да, второе и дальше левое соединение к одному источнику не чухает... где-то в "ПолучитьИсточникиВыборки" недонаходит :)

пример запроса:

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



резалт:

РегистрНакопленияЗаказыПокупателей       ДокументЗаказПокупателя
как                                           <== как
РегистрНакопления                          ЗаказПокупателя
22. romansun 193 25.05.12 14:24 Сейчас в теме
а в качестве пожеланий добавлю возможность работать с несколькими текстами запросов
23. DitriX 2091 25.05.12 14:48 Сейчас в теме
Ну и наверно не хватает полей которые вытягиваются (я думаю только измерений хватит) и отборов, что бы было видно, какой отбор у каждого запроса :)

А связи между запросами показывают только левое соединение? Или полное и внутренне тоже?
24. samamoiloff 861 25.05.12 15:20 Сейчас в теме
Обработка из разряда "Если бы это не было придумано, это стоило бы придумать". В подтверждение - вал плюсов за день.
26. psih12 132 25.05.12 17:30 Сейчас в теме
Однозначный плюс. Разработчики 1С, если Вы просматриваете форум, берите это на вооружение! Кстати, в блоки с названием таблиц(регистров) можно добавить реквизиты, которые выбираются в запросах
27. RustIG 1351 25.05.12 18:21 Сейчас в теме
Красивая разработка!
А вообще разработка навеяла на такие мысли...
А чем вызвано такое разнообразие сложноразработанных запросов в типовых конфигурациях?
Простотой разработки, легкостью восприятия и легкостью их изменений или мыслью, что запрос в цикле это большая ошибка 1С-ника?
У кого-нибудь есть пример из жизни (?) - так сказать технико-экономическое обоснование, что запрос в цикле экономически ну никак не выгоден, чем написать именно сложный запрос.
С детства нас учат, что запрос в цикле - это большая ошибка в жизни разработчика - которая замедляет производительность системы. А про то, что понять сложносочиненный запрос другого разработчика трудозатратно и стоит много денег клиенту, особенно если запрос надо периодически дорабатывать, расширять - никто не предупреждает :( ...
Найти бы золотую середину...
112. pvlunegov 157 27.12.12 07:23 Сейчас в теме
(27) Rustig,
Почему за запрос в цикле выгоняют с экзамена 1с?
Все просто.
Представьте себе компьютер соединенный по локальной сети с SQL-сервером.
при запуске запроса происходит обращение на SQL-сервер.
Обращение, пересылка текста запроса (условно можно так назвать) по локальной сети - все это занимает МНОГО времени
по сравнению с выполнением запроса на сервере SQL. если к тому же есть проблемы в локальной сети (потеря пакетов, медленная связь), то пересылка запроса занимает секунды!!! Это очень много!
А теперь проанализируем, что будет, если запрос в цикле заменить сложным запросом, который выполняется без цикла...
В случае сложного запроса - текст запсроса 1 раз посылается на сервер, 1 раз выполняется и 1 раз посылается результат. Даже если есть проблемы в локальной сети - они мало влияют на общее время выполнения запроса (и получение результата).
Если же выполнять запрос в цикле, то он МНОГО раз (сколько циклов) посылается на сервер. И МНОГО раз проблемы локальной сети влияют на общее время выполнения запросов в цикле.
В итоге, там где слабая сеть, запрос в цикле выполняется за МИНУТЫ, а сложный запрос - за СЕКУНДЫ
114. DrAku1a 1679 27.12.12 07:56 Сейчас в теме
(112) Да даже в идеально настроенной сети или на одной машине - тратится время на согласование клиента и сервера, на передачу данных. И это незначительное время - в цикле становится весьма весомым. А оптимальный пакетный и сложный запрос современный SQL-сервер выполнит быстро.
(113) Сейчас нет 8.1 под рукой, завтра выложу.
с наступающим!
116. RustIG 1351 27.12.12 11:53 Сейчас в теме
(112) друзья, спасибо что подробно пишите - другим наука. а я это знал....
я писал в другом контексте, который вы не увидели, есть много нюансов в работе - это и человеческий фактор, а не только машинный (о котором вы пишите про ограничения локальной сети и тд). Человеческий фактор породил исследования в таких областях как юзабилити, появилось понимание необходимости создавать дружественный интерфейс, есть соционика, которая целенаправленно изучает тот механизм, с помощью которого человек воспринимает и оценивает поступающую к нему информацию. В общем, когда приходишь к пользователем и спрашиваешь почему они работают именно так, а не так как закладывалось, понимаешь что человеческий фактор и/или новые требования к системе существуют. далее, если кратко, человеческий фактор существует также и у разработчика (внедренца). Он заключается в том, что написать обработку данных "на один раз" оказывается более быстрее и эффективнее, если не заморачиваться на внутренние соединения таблиц. Именно "заморачиваться" - потому что это более сложная задача. Если сравнивать с чем-то из жизни, то зачастую мы не обращаем внимание на беспорядок в своих вещах дома, на рабочем столе и т.д. - зато жизнь идет, работа движется, и не важно, что иногда мы тратим СЕКУНДЫ для поиска ключей или других предметов быта. Ну в общем, всему свое время и место.
117. DrAku1a 1679 27.12.12 13:50 Сейчас в теме
(116) Прав в одном: когда пишешь для себя и на один раз - все средства хороши... А так: если спец пару лет плотно работает с запросами, то даже такого рода задачу ему будет проще решить сложным составным запросом - по привычке.
Да, большие и сложные запросы сложнее отлаживать, но и тут есть масса инструментов в помощь...
121. Lukich66 82 04.01.13 12:43 Сейчас в теме
(117) добрый день, с н.г. К сожалению не смог пройти "интеллектуальный тест" при скачивании 27/12/2012- результат= файла нет, 1 "мань"-черт с ней. Предлагает почему-то 2 строчки типа "ХаХаХ" "ФфФфФ"- я их тупо ввожу и получаю фиг.вам
122. DrAku1a 1679 04.01.13 13:28 Сейчас в теме
(121) Странно... Возможно браузер глючит... В списке скачавших Вы есть. Давайте почту.
Кстати, у меня капчу не просит вообще...
123. Lukich66 82 04.01.13 15:17 Сейчас в теме
(122) Спасибо,сам удивляюсь.
28. olegtymko 889 25.05.12 18:47 Сейчас в теме
думаю что интересная разработка, скачаю попробую что с ней получиться добиться) автору спасибо!)
29. StepByStep 3667 25.05.12 19:01 Сейчас в теме
Наглядность - ХОРОШО.
Не сработало с пакетом запросов - ПЛОХО.
Будем пробовать дальше.
30. StepByStep 3667 25.05.12 19:02 Сейчас в теме
САМА ИДЕЯ - ЗАМЕЧАТЕЛЬНО.
32. artbear 1448 26.05.12 10:29 Сейчас в теме
Поставил плюс, но Дерево из ИР намного больше нравится.
По регистрации спец.ВК - на самом деле это не ВК, а com-объект, ИР его регистрирует полностью автоматически, не нужны даже права администратора, можно только для локального пользователя.
33. tormozit 7136 26.05.12 10:55 Сейчас в теме
(32) К сожалению, ты ошибаешься. Библиотека классов GoldParser.Dll не позволяет регистрировать ее без прав администратора. Мой механизм автоматической регистрации библиотек работает не во всех случаях.
35. AnryMc 849 26.05.12 19:11 Сейчас в теме
Как настоящий лентяй, хотел бы уводеть:
При вставке скопировенного текста запроса - автоматическое "убирание" "|", "''", ; и пр.
charushkin; Den_D; +2 Ответить
36. Yasen 490 27.05.12 12:52 Сейчас в теме
(0) молодец, плюс
хотя (5) имхо удобнее гораздо
43. luns 28.05.12 16:00 Сейчас в теме
идея хорошая, но по своему опыту скажу, что не нужная.
стандартного конструктора достаточно для понимания запроса любой сложности.
44. AnryMc 849 28.05.12 16:42 Сейчас в теме
(43) luns,
Стандартный конструктор помогает, но не дает такой наглядности.
Особенно такая визуализация будет полезна для тех, кто еще не "постиг всех премудростей" стандартного конструктора. Согласитесь что многие вещи в документации описаны очень плохо и пока тебя "не ткнут носом" ты их не поймешь. (Например: всякие "галочки" без подсказки и название колонки не прочтешь, т.к. ширина не изменяется...)
45. luns 28.05.12 17:10 Сейчас в теме
(44) возможно. но к сожалению не могу оценить наглядность.
для пробы хотел разобрать пару запросов:
отчет: ВаловаяПрибыль
отчет: АнализНачисленийРаботникамОрганизаций
ни там ни там не сработало.
49. AnryMc 849 28.05.12 20:17 Сейчас в теме
(45) luns,
Не знаю. Мой запрос 292 строки из (48) дал такую картинку:


Обработка - самой первой версии
53. DrAku1a 1679 29.05.12 07:29 Сейчас в теме
(49),(45) Отчет дорабатывается по мере поступления Ваших комментариев (с указанием некорректно обрабатываемых запросов), в частности
26.05.2012 - Исправлена ошибка "В реальном запросе видит только одно соединение", указанная в комментариях 14, 21 и 31.


(48)Согласен.

Господа! Давайте запросы прикреплять в текстовых файлах...


(46) Причина ошибки установлена: объединение запросов "ВЫБРАТЬ" в условиях некорректно обрабатываются. Уже исправлено. Появится при следующем обновлении.
(47) Причина ошибки установлена: некорректная обработка {}. Уже исправлено. Появится при следующем обновлении.
Обнаружил недоработку: не показывает объединенные вложенные запросы (вообще не показывает). Исправляю.

Нужны идеи относительно того, как расположить-оформить данные. Особенно это касается пожеланий (1), (9) и др.
54. BRT 37 29.05.12 08:27 Сейчас в теме
(53)
сорри, ошибся кнопками.
50. samamoiloff 861 28.05.12 20:26 Сейчас в теме
(43)luns,
достаточно. Вот запросец: (http://samsamych.com/super-zapros-bp/)
Черточки справа - "пакетики" запросика:

Ну, я разобрался. Но можно было быстрее разобраться. Дело не в том, достаточно или нет. Есть вещи, которые помогают. Бывает такое. Нет?

Возможно и зарплаты кому-то достаточно определенного уровня, но я бы не стал ему об этом говорить :-)
51. AnryMc 849 28.05.12 20:46 Сейчас в теме
(50) samamoiloff,
А сколько там было пакетов? Больше 255? Это я так - поржать!
На "взгляд" видно более 30 ярлычков (закладок справа) но может 1С не может их делать меньше и полоса прокрутки не предусмотрена...

Но вообще сочувствую...
55. DrAku1a 1679 29.05.12 08:41 Сейчас в теме
(50) а можно здесь привести тот самый текст запроса, чтобы в моем отчете попробовать? :)
57. samamoiloff 861 29.05.12 09:59 Сейчас в теме
59. DrAku1a 1679 29.05.12 10:21 Сейчас в теме
(57) Попробовал... много букв... а диаграмма запроса оказалась простой...
46. BRT 37 28.05.12 17:16 Сейчас в теме
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	МАКСИМУМ(СписаниеОСОС.НомерСтроки) КАК НомерСтроки,
	СписаниеОСОС.ОсновноеСредство КАК ОсновноеСредство
ПОМЕСТИТЬ СписокОС
ИЗ
	Документ.СписаниеОС.ОС КАК СписаниеОСОС
ГДЕ
	СписаниеОСОС.Ссылка = &Ссылка
	И СписаниеОСОС.ОсновноеСредство В(&СписокОС)

СГРУППИРОВАТЬ ПО
	СписаниеОСОС.ОсновноеСредство

ИНДЕКСИРОВАТЬ ПО
	ОсновноеСредство
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних.ОсновноеСредство КАК ОсновноеСредство,
	СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних.СчетУчета КАК СчетУчета,
	СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних.СчетНачисленияАмортизации КАК СчетНачисленияАмортизации
ПОМЕСТИТЬ СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних
ИЗ
	РегистрСведений.СчетаБухгалтерскогоУчетаОС.СрезПоследних(&ДатаДокумента, Организация = &Организация) КАК СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ СписокОС КАК СписокОС
		ПО (СписокОС.ОсновноеСредство = СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних.ОсновноеСредство)

ИНДЕКСИРОВАТЬ ПО
	ОсновноеСредство
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	СтоимостьОС.Субконто1 КАК ОсновноеСредство,
	СтоимостьОС.Счет КАК Счет,
	СтоимостьОС.СуммаОстатокДт КАК СуммаОстатокДт,
	СтоимостьОС.СуммаНУОстатокДт КАК СуммаНУОстатокДт,
	СтоимостьОС.СуммаПРОстатокДт КАК СуммаПРОстатокДт,
	СтоимостьОС.СуммаВРОстатокДт КАК СуммаВРОстатокДт,
	СтоимостьОС.СуммаОстатокКт КАК СуммаОстатокКт,
	СтоимостьОС.СуммаНУОстатокКт КАК СуммаНУОстатокКт,
	СтоимостьОС.СуммаПРОстатокКт КАК СуммаПРОстатокКт,
	СтоимостьОС.СуммаВРОстатокКт КАК СуммаВРОстатокКт
ПОМЕСТИТЬ СтоимостьОС
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Остатки(
			&ДатаДокумента,
			Счет В
				(ВЫБРАТЬ РАЗЛИЧНЫЕ
					СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних.СчетУчета
				ИЗ
					СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних
			
				ОБЪЕДИНИТЬ
			
				ВЫБРАТЬ РАЗЛИЧНЫЕ
					СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних.СчетНачисленияАмортизации
				ИЗ
					СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних),
			ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.ОсновныеСредства),
			Организация = &Организация) КАК СтоимостьОС
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ СписокОС КАК СписокОС
		ПО (СписокОС.ОсновноеСредство = СтоимостьОС.Субконто1)

ИНДЕКСИРОВАТЬ ПО
	ОсновноеСредство
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	СписокОС.НомерСтроки,
	СписокОС.ОсновноеСредство,
	МестонахождениеОСБухгалтерскийУчетСрезПоследних.Местонахождение КАК ПодразделениеОрганизации,
	ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ПорядокПогашенияСтоимости КАК ПорядокПогашенияСтоимостиБУ,
	ПервоначальныеСведенияОСНалоговыйУчетСрезПоследних.ПорядокВключенияСтоимостиВСоставРасходов КАК ПорядокВключенияСтоимостиВСоставРасходовНУ,
	СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних.СчетУчета КАК СчетУчета,
	СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних.СчетНачисленияАмортизации КАК СчетНачисленияАмортизации,
	ЕСТЬNULL(СтоимостьОС.СуммаОстатокДт, 0) КАК СтоимостьОС,
	ЕСТЬNULL(СтоимостьОС.СуммаНУОстатокДт, 0) КАК СтоимостьОСНУ,
	ЕСТЬNULL(СтоимостьОС.СуммаПРОстатокДт, 0) КАК СтоимостьОСПР,
	ЕСТЬNULL(СтоимостьОС.СуммаВРОстатокДт, 0) КАК СтоимостьОСВР,
	ЕСТЬNULL(АмортизацияОС.СуммаОстатокКт, 0) КАК АмортизацияОС,
	ЕСТЬNULL(АмортизацияОС.СуммаНУОстатокКт, 0) КАК АмортизацияОСНУ,
	ЕСТЬNULL(АмортизацияОС.СуммаПРОстатокКт, 0) КАК АмортизацияОСПР,
	ЕСТЬNULL(АмортизацияОС.СуммаВРОстатокКт, 0) КАК АмортизацияОСВР,
	ЕСТЬNULL(АмортизацияОС.СуммаОстатокДт, 0) КАК ИзносОС,
	ВЫБОР
		КОГДА ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство ЕСТЬ NULL 
			ТОГДА ЛОЖЬ
		ИНАЧЕ ИСТИНА
	КОНЕЦ КАК ОтражалосьВБухгалтерскомУчете,
	ВЫБОР
		КОГДА ПервоначальныеСведенияОСНалоговыйУчетСрезПоследних.ОсновноеСредство ЕСТЬ NULL 
			ТОГДА ЛОЖЬ
		ИНАЧЕ ИСТИНА
	КОНЕЦ КАК ОтражалосьВНалоговомУчете,
	ВЫБОР
		КОГДА ОС_СнятыеСУчета.ОсновноеСредство ЕСТЬ NULL 
			ТОГДА ЛОЖЬ
		ИНАЧЕ ИСТИНА
	КОНЕЦ КАК СнятоСУчета
ИЗ
	СписокОС КАК СписокОС
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(
				&ДатаДокумента,
				Организация = &Организация
					И ОсновноеСредство В
						(ВЫБРАТЬ
							СписокОС.ОсновноеСредство
						ИЗ
							СписокОС)) КАК ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних
		ПО СписокОС.ОсновноеСредство = ПервоначальныеСведенияОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПервоначальныеСведенияОСНалоговыйУчет.СрезПоследних(
				&ДатаДокумента,
				Организация = &Организация
					И ОсновноеСредство В
						(ВЫБРАТЬ
							СписокОС.ОсновноеСредство
						ИЗ
							СписокОС)) КАК ПервоначальныеСведенияОСНалоговыйУчетСрезПоследних
		ПО СписокОС.ОсновноеСредство = ПервоначальныеСведенияОСНалоговыйУчетСрезПоследних.ОсновноеСредство
		ЛЕВОЕ СОЕДИНЕНИЕ СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних КАК СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних
		ПО СписокОС.ОсновноеСредство = СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних.ОсновноеСредство
		ЛЕВОЕ СОЕДИНЕНИЕ СтоимостьОС КАК СтоимостьОС
		ПО (СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних.ОсновноеСредство = СтоимостьОС.ОсновноеСредство)
			И (СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних.СчетУчета = СтоимостьОС.Счет)
		ЛЕВОЕ СОЕДИНЕНИЕ СтоимостьОС КАК АмортизацияОС
		ПО (СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних.ОсновноеСредство = АмортизацияОС.ОсновноеСредство)
			И (СчетаБухгалтерскогоУчетаОсновныхСредствСрезПоследних.СчетНачисленияАмортизации = АмортизацияОС.Счет)
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестонахождениеОСБухгалтерскийУчет.СрезПоследних(
				&ДатаДокумента,
				Организация = &Организация
					И ОсновноеСредство В
						(ВЫБРАТЬ
							СписокОС.ОсновноеСредство
						ИЗ
							СписокОС)) КАК МестонахождениеОСБухгалтерскийУчетСрезПоследних
		ПО СписокОС.ОсновноеСредство = МестонахождениеОСБухгалтерскийУчетСрезПоследних.ОсновноеСредство
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
			СостоянияОСОрганизацииСрезПоследних.ОсновноеСредство КАК ОсновноеСредство
		ИЗ
			РегистрСведений.СостоянияОСОрганизаций КАК СостоянияОСОрганизацииСрезПоследних
		ГДЕ
			СостоянияОСОрганизацииСрезПоследних.ДатаСостояния < &ДатаДокумента
			И СостоянияОСОрганизацииСрезПоследних.Организация = &Организация
			И СостоянияОСОрганизацииСрезПоследних.ОсновноеСредство В
					(ВЫБРАТЬ
						СписокОС.ОсновноеСредство
					ИЗ
						СписокОС)
			И СостоянияОСОрганизацииСрезПоследних.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОС.СнятоСУчета)
		
		ДЛЯ ИЗМЕНЕНИЯ
			РегистрСведений.СостоянияОСОрганизаций) КАК ОС_СнятыеСУчета
		ПО СписокОС.ОсновноеСредство = ОС_СнятыеСУчета.ОсновноеСредство
Показать


ошибка с использованием МенеджерВременныхТаблиц
Ожидается "КАК"  (Символ 2 193)
{Форма.ПарсерТекстаЗапросов.Форма(601)}: Итератор для значения не определен
	Для каждого Источник Из Источники Цикл
48. AnryMc 849 28.05.12 20:08 Сейчас в теме
(46) (47)
Может и мне запросик этак на строк 300 выложить, да $m заработать ;-)

Запрос, сохраненный в текстовый файл и "прикрепленный" к сообщению (см. внизу ввода новых сообщений) скачают и посмотрят те, кто захочет, и тема комментариев останется читабельной.

См. прикрепленный для примера файл
Прикрепленные файлы:
ЗУП Порядок 100.txt
v.l.; DrAku1a; +2 Ответить
52. AnryMc 849 28.05.12 21:06 Сейчас в теме
Лично у меня, когда я "воюю" с запросами много времени и сил уходит на "скачки" между пакетами, что бы посмотреть (вспомнить) сто выбрали и как назвали в этом пакете, а затем по каким правилам отобрали и назвали в другом пакете.
В стандартном конструкторе мне это делать неудобно (лично мне, не знаю как Вам).
Вот и приходиться "елозить" по тексту запроса - "туда - сюда", а это могут быть сотни строк.

Что порадовало в данном решении - так это "обратная связь" когда "счёлкнул" по квадратику, а в тексте получил спозиционированное выделение. Правда пока работает "кривовато" но я думаю, автор доделает.

Мне лично помогло сегодня.
StepByStep; +1 Ответить
68. StepByStep 3667 30.05.12 13:21 Сейчас в теме
(52) AnryMc,
Хорошо сказано, именно так все в действительности и происходит.
И тут визуализация - неоспоримый ПЛЮС.
56. Sairys 29.05.12 09:37 Сейчас в теме
Ну конечно интересно, но когда работаешь с этим каждый день структура запроса понятна по коду. Но всё равно автору спасибо
58. nataon 29.05.12 10:07 Сейчас в теме
Автору спасибо, интересная идея
60. StepByStep 3667 29.05.12 12:21 Сейчас в теме
Вот теперь вижу результат.
Поставил 100-ый плюс.
Вот еще бы под управляемый режим ....
61. StepByStep 3667 29.05.12 12:32 Сейчас в теме
1С-никам такое следовало бы взять на вооружение.
Ведь существует же в 1С-ке Карта маршрута бизнес-процесса!
charushkin; Den_D; +2 Ответить
62. Yury1001 1470 29.05.12 13:57 Сейчас в теме
Всё круто, запрос из 20 страниц был разобран как с добрым утром.

вспотел листать структуру
63. Sintson 411 29.05.12 20:47 Сейчас в теме
Автору огромное спасибо, идея и реализация отличная, возьму на вооружение!

Прошу прощения что не по теме, достаточно срочно нужно решить вопрос со специалистом на поддержку.
Не расценивайте, пожалуйста, за рекламу.
Ищу только с нашего ресурса ;) и при помощи нашего ресурса.
подробности на:
Биржа труда на "Инфостарте"
64. vx_gas 26 30.05.12 05:10 Сейчас в теме
красивая штучка получилась :)
65. Den_D 54 30.05.12 10:30 Сейчас в теме
супер, скачаю обязательно, но подожду пока немного отладится
эта головная боль с запросами у всех, в независимости от компетенции
66. пользователь 30.05.12 11:16
Сообщение было скрыто модератором.
...
67. AzzZ 30.05.12 12:23 Сейчас в теме
69. eigen20 30.05.12 14:12 Сейчас в теме
Классная идея, автору респект!!! Молодец, протестирую отпишусь!
71. vec435 15 30.05.12 20:19 Сейчас в теме
сам долго мучился ,особенно с пакетами. только разработал себе черновой вариант - а тут уже готовое решение.спасибо
72. DimanYa 31.05.12 06:39 Сейчас в теме
Идея создания шикарная!!! Особенно подойдёт для ЗУПа где запросы сделаны так, что чёрт ногу сломит. Только есть один вопросик:
1) как отрабатываются ситуации, когда пишется в коде СТРЗаменить? Бывает поставят условия в коде и половина запроса изменилось.
73. DrAku1a 1679 31.05.12 06:53 Сейчас в теме
(72) Попробуйте... По-идее должно отработать нормально, т.к. при анализе текста запроса блок "+СтрЗаменить(...)+" будет воспринят как одно слово (как текст) и это не должно повлиять на результат.
79. orefkov 1152 04.06.12 21:57 Сейчас в теме
(73)
Под Снегопат портировать нет желания?
Чтобы и в Конфигураторе вертеть.
v.l.; DrAku1a; +2 Ответить
80. DrAku1a 1679 05.06.12 03:12 Сейчас в теме
(79) Идея отличная! Заодно, попробую себя в скриптописателях для снегопата, а то пока только его пользователь ;-)
76. IgorXml 724 01.06.12 16:11 Сейчас в теме
С последним своим отчетом на СКД почти месяц маялся. Сегодня гуляю в обед и привиделась мне такая схема. Думаю, если бы была у меня такая я бы давно всё сделал. Прикольно.
77. soulsteps 73 02.06.12 23:55 Сейчас в теме
Отличная обработка, действительно, облегчает понимание и разбор даже очень сложных запросов в разы! Большое спасибо!
78. alexsmir56 68 04.06.12 16:03 Сейчас в теме
спасибо. Идея классная. Помогает особенно когда начинаешь.
81. vladen 83 05.06.12 12:57 Сейчас в теме
Идея очень не плоха.

Жаль что не анализирует запрос в англ. варианте.
83. DrAku1a 1679 05.06.12 14:23 Сейчас в теме
(81) Вроде должна анализировать. Если нет - приведите текст запроса - отлажу...
82. пользователь 05.06.12 13:14
Сообщение было скрыто модератором.
...
84. DrAku1a 1679 06.06.12 07:55 Сейчас в теме
Сегодня попробовал вот такой запрос (он вполне успешно выполняется, но в нем НЕТ источников):
ВЫБРАТЬ Источник.Поле1 ПОМЕСТИТЬ вт ИЗ (ВЫБРАТЬ 1 КАК Поле1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2) КАК Источник

Результат прилагается:
Прикрепленные файлы:
85. andpyxa 07.06.12 22:05 Сейчас в теме
Попробовал позапускать - классный инструмент. Автору "+" и пожелания дальнейшего развития. Будет неплохо если выростет в коммерческий проект. Существенно экономит время при разборе запросов.
86. DrAku1a 1679 08.06.12 10:16 Сейчас в теме
(85) Этот проект останется бесплатным, в т.ч. и если напишу его как аддин для Снегопата. Но на основе этого проекта и дико раскритикованного "Выполнение и отладка запроса" планирую сделать мощный отладчик запросов (без каких. И вот это проект уже скорее всего будет платным.
Есть идея попробовать построить структуру с помощью графической схемы, наподобие проекта 1C Visio. Так можно расписать задействованные в запросе поля. Попробуем?..
87. Veduin 08.06.12 10:34 Сейчас в теме
Скачал, Посмотрел Обработку!
Интересно анализирует введенный текст запроса.
Явно помогает для начинающих при анализе сложных составных запросов понимать структуру запросов,
Но вот так хотелось сразу еще и консоль запросов для выполнения и отладки этого запроса.
Но это видать из-за того что не до конца понимаю сложные и встроенные запросы...
СПАСИБО!
88. andpyxa 08.06.12 11:50 Сейчас в теме
Насчет визио идея хорошая, именно там рисую схемы, пока руками. Хотел сказать что как логическое продолжение разработки было бы очень полезно выполнять запрос и по частям, приходится иметь дело с запросами, которые работают, но не правильно, не так как нужно, приходится в консоли копировать и удалять лишнее, анализировать куски. Идея выполнения запроса по частям предложена 1С в консоли в виде кнопки(рис. ниже), но из-за того что она не подтягивает параметры из запроса в ней нет практического смысла. Думаю что видеть промежуточные этапы было бы очень полезно.
Прикрепленные файлы:
89. DrAku1a 1679 08.06.12 12:45 Сейчас в теме
(88) Именно этим я сейчас и занимаюсь. Надо бы консоль посмотреть - может чего полезного вытащу.
Оставьте свое сообщение