gifts2017

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

Опубликовал Андрей Акулов (DrAku1a) в раздел Программирование - Инструментарий

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


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

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

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

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

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

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

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

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

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

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

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

См. также

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

Комментарии

1. Sergey (Sergey K) 25.05.12 05:47
Сделать опционально:
1.на связях отображать поля по которым устанавливается связь,
2.в таблицах отображать псевдонимы полей, которые выбираются

Имхо: без этих данных вряд ли эта обработка хоть как-то поможет при отладке
2. anry mc (AnryMc) 25.05.12 07:31
Очень интересная идея. За идею "+"

Должно хорошо помогать при разборке с "чужими" запросами
3. Алексей 1 (AlX0id) 25.05.12 09:58
В общем-то, да. Смотреть - пока не смотрел, но по скринам уже понятно, что идея хорошая %)
4. Алекс Климанов (fuxic) 25.05.12 10:01
Визуализацию запросов видел, когда работал с виндевом. Там эти связи красиво бегали по трубочкам и видно было по чем связь. Надеюсь сама платформа дойдет до этих фишек. Плюс за реализацию
5. Сергей Старых (tormozit) 25.05.12 10:12
Тут http://devtool1c.ucoz.ru/load/grammatika_jazyka_zaprosov_1s_8_2_goldparser_1_32/1-1-0-4 можно скачать грамматику языка запросов. С ее помощью можно получить строгое синтаксическое дерево. Пример использования в самой подсистеме ИР (Инструменты разработчика) в консоли запросов - дерево запроса. Кстати его тоже можно использовать для анализа сложных запросов.
Прикрепленные файлы:
адуырщдв; kstukov; Flashill; yku; an_2; artbear; DrAku1a; Hany; +8 Ответить 5
6. Алексей 1 (AlX0id) 25.05.12 10:20
Из первых наблюдений - похоже, что не работает, если соединений таблиц более, чем одно.. Показывает только первое..
7. Hany (Hany) 25.05.12 10:38
(5) tormozit, Вы правы, ИР помогает в отладке "длинного" 100%, и никаких диаграмм не нужно, как мне кажется. Их огромная древовидная структура только почему-то еще больше пугает. Хотя может я настолько привыкла пользоваться деревом запросов из ИР, что считаю его панацеей:)
8. anry mc (AnryMc) 25.05.12 10:44
Наверно стоит выводить список объявленных параметров с группировкой по запросам (удобно, что бы чтонибудь не забыть установить)
9. Андрей Акулов (DrAku1a) 25.05.12 10:57
(1) Идея отличная, сделаю.

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

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

(8) Не совсем Вас понял, уточните что нужно?
10. Андрей Мухин (Muhin555) 25.05.12 11:20
(2) AnryMc, я уже опробовал пропарсить "чужой" пакет запросов из 29 запросов..... наглядность помогает разобраться.

Первая мысль, которая пришла в голову после того, как увидел разработку - прикрутить ее к обычной консоли запросов.... Вспомнился старый добрый MS Access с его визуальным отображением связей таблиц в базе.
Идея - Однозначный "плюс"!!!!
11. Zigfridish (Bassgood) 25.05.12 11:27
(0), Идея очень понравилась, если постепенно будет производится дальнейшая модернизация обработки (например по тем пожеланиям, которые были высказаны в (1)), то обязательно ее скачаю, а пока у меня не хватает баллов для этого =(
Честно говоря, пока сложно сказать насколько удобно будет пользоваться такой визуализацией для отладки громоздких запросов.
p.s. Публикацию естественно заплюсовал =)
12. Денис Кузнецов (kuza_87) 25.05.12 11:27
Кое в чем (не во всем конечно) но поможет разобраться. Автору спасибки!
13. anry mc (AnryMc) 25.05.12 11:38
(9) DrAku1a,

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

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

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

Возможно, дело в том, что два левых соединения идут с одной и той же таблицей.. Но опять же - пробовал сымитировать подобную ситуация на вашем запросе - ошибка не повторилась..
Прикрепленные файлы:
15. Алексей 1 (AlX0id) 25.05.12 11:44
(5) tormozit,
В ИР много здравых мыслей и красивых решений, но такое впечатление, что его создатели инопланетяне и общаются между собой только на своем языке, далеком от понимания простых людей.. Имхо, конечно же.
16. Сергей Старых (tormozit) 25.05.12 11:56
(15) Не могу сказать, что мне понятен смысл твоего сообщения. Возможно кто то из нас действительно инопланетянин. Попробуй попроще сформулировать мысль.
17. Максим (Maximus00) 25.05.12 12:23
18. al petrov (petrov_al) 25.05.12 12:56
(16) tormozit, встроенная конфигурация не есть хорошо, мало кто захочет в типовые конфигурации встраивать ИР...лучше выкладывай свои разработки поотдельности.
19. Сергей Старых (tormozit) 25.05.12 13:12
(18) Данная тема регулярно всплывает в обсуждениях подсистемы. Если почитать форум публикации здесь или на офсайте, то моя позиция станет понятна. В двух словах, поддерживать мобильные версии инструментов заметно затратнее, чем в виде подсистемы, к тому же они менее функциональны. Любой кто писал достаточно сложную систему поймет о чем я (чем больше "зоопарк", тем сложнее им управлять в виде отдельных "животных").
20. Андрей Акулов (DrAku1a) 25.05.12 13:48
(10) Если честно, я ее и создал чтобы потом встроить в консоль (только свою).
(13) Теперь понял. Пожелание принято.
(14) О.К. ваш запрос отлажу.
(16) ИМХО, имеется в виду сложный, перегруженный интерфейс. Но думаю, к этому можно привыкнуть...
И это... не мне тут, конечно, говорить о перегруженности - мои диаграммы не в каждый "монитор" влезут :-)
(18) Я находил на инфостарте отвязанную консоль запросов из ИР - она работает, даже дерево строит.
Из этой консоли я позаимствую "прикручивание" класса "Контекстная подсказка" - мне он очень нравится...
21. Роман Романов (romansun) 25.05.12 14:20
в опщем да, второе и дальше левое соединение к одному источнику не чухает... где-то в "ПолучитьИсточникиВыборки" недонаходит :)

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

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



резалт:

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

А связи между запросами показывают только левое соединение? Или полное и внутренне тоже?
24. Владимир Самойлов (samamoiloff) 25.05.12 15:20
Обработка из разряда "Если бы это не было придумано, это стоило бы придумать". В подтверждение - вал плюсов за день.
26. psih12 25.05.12 17:30
Однозначный плюс. Разработчики 1С, если Вы просматриваете форум, берите это на вооружение! Кстати, в блоки с названием таблиц(регистров) можно добавить реквизиты, которые выбираются в запросах
27. г. Казань Рустем Гумеров (Rustig) 25.05.12 18:21
Красивая разработка!
А вообще разработка навеяла на такие мысли...
А чем вызвано такое разнообразие сложноразработанных запросов в типовых конфигурациях?
Простотой разработки, легкостью восприятия и легкостью их изменений или мыслью, что запрос в цикле это большая ошибка 1С-ника?
У кого-нибудь есть пример из жизни (?) - так сказать технико-экономическое обоснование, что запрос в цикле экономически ну никак не выгоден, чем написать именно сложный запрос.
С детства нас учат, что запрос в цикле - это большая ошибка в жизни разработчика - которая замедляет производительность системы. А про то, что понять сложносочиненный запрос другого разработчика трудозатратно и стоит много денег клиенту, особенно если запрос надо периодически дорабатывать, расширять - никто не предупреждает :( ...
Найти бы золотую середину...
28. Олег Тымко (olegtymko) 25.05.12 18:47
думаю что интересная разработка, скачаю попробую что с ней получиться добиться) автору спасибо!)
29. Андрей М. (StepByStep) 25.05.12 19:01
Наглядность - ХОРОШО.
Не сработало с пакетом запросов - ПЛОХО.
Будем пробовать дальше.
30. Андрей М. (StepByStep) 25.05.12 19:02
САМА ИДЕЯ - ЗАМЕЧАТЕЛЬНО.
31. Андрей Акулов (DrAku1a) 26.05.12 04:36
(14),(21) понял природу недоработки - все проще, я не учел, что после ЛЕВОЕ СОЕДИНЕНИЕ <ИмяТаблицы> идет ПО <список связей>, а не сразу новое СОЕДИНЕНИЕ. Исправлю.
(22) Несколько текстов можно перечислить через ";" - получится пакет запросов. С пакетами обработка работает.
(23) Связи показывает разные (стрелка влево - левое соединение, стрелка вправо - правое соединение и т.д.)
(26) Ваше пожелание повторяет самый первый комментарий. Если собрать в эти блоки еще и поля - будет огроменная диаграмма... У меня сейчас первая мысль - как сделать ее компактнее...
(29) Пакет запросов - в студию... я проверял на пакетном запросе - должно все работать...
(27) Про 1С и их типовые конфигурации лучше всего сказал один мой товарищ "Чтобы сложить два числа они вызывают три функции из трех разных модулей..." - я не пойму, они таким образом делают запутываение кода для конкретного разработчика? В платформе 7.7 модулей было меньше - и код был проще для разбора... А тут зачастую отладчик только поможет понять хоть часть замысла того или иного рассчета.

Про сложный запрос и цикл запросов позвольте несогласиться.
Возьмем базу данных SQL, которая крутится на одном компьютере с сервером 1С, а клиентная часть установлена на каждом клиенте (т.е. удаленно, сообщаются по сети). При этом запрос делается из клиента. В такой ситуации лучше сделать один сложный запрос к серверу, чем 10 простых, т.к. мощный сервер быстро соберет по запрошенным данным ответ. Важную роль играет количество запросов (больше времени тратится на организацию соединения и согласование между клиентом и сервером).
Даже если клиент и сервер находятся на одной машине - ситуация кардинально не меняется (только уменьшится разница времени).
В файловой версии базы 10 простых запросов, обычно проходят гораздо быстрее одного сложного, т.к. тут нет сервера - и нет согласований.
32. Артур Аюханов (artbear) 26.05.12 10:29
Поставил плюс, но Дерево из ИР намного больше нравится.
По регистрации спец.ВК - на самом деле это не ВК, а com-объект, ИР его регистрирует полностью автоматически, не нужны даже права администратора, можно только для локального пользователя.
33. Сергей Старых (tormozit) 26.05.12 10:55
(32) К сожалению, ты ошибаешься. Библиотека классов GoldParser.Dll не позволяет регистрировать ее без прав администратора. Мой механизм автоматической регистрации библиотек работает не во всех случаях.
34. г. Казань Рустем Гумеров (Rustig) 26.05.12 18:50
(31) возможно ли предположить, что дальнейшее сопровождение сложных запросов обходится дороже, чем простых? Выгодно ли это клиенту?
Вообще-то я не утверждаю, а задаю вопросы. В таком случае со мной нельзя ни соглашаться, ни спорить.
И я призываю к диалогу всех, а не только автора. :)
От вас очень хочется увидеть сложный запрос - предмет диалога. :)
35. anry mc (AnryMc) 26.05.12 19:11
Как настоящий лентяй, хотел бы уводеть:
При вставке скопировенного текста запроса - автоматическое "убирание" "|", "''", ; и пр.
hulio; Den_D; +2 Ответить
36. Анатолий (Yasen) 27.05.12 12:52
(0) молодец, плюс
хотя (5) имхо удобнее гораздо
37. Владимир Самойлов (samamoiloff) 27.05.12 12:56
(34) Сам сложный запрос не несет в себе ни негатива, ни дополнительных затрат. Все это появляется, когда он выступает в качестве объекта для каких-либо процессов (доработки, понимания и т.п.). Сдается мне, что разработки уважаемого автора и TormozIt (а есть еще?) позволяет избавиться от части неудобств. Можно предположить, что визуальный конструктор запросов (ну сделайте кто-нибудь :-), более навороченный, чем у 1С (ну, предположим, драг-энд-дроп в сложную визуальную структуру, со встроенными методиками извращения, пардон, связывания данных, с подсказками при наведении курсора о параметрах виртуальных таблиц, с автоматическим выстраиванием структуры "от результата", и это я еще не начал мечтать...) может снять оставшуюся часть неудобств и даже позволит наслаждаться программисту полетом своей мысли.
38. Владимир Самойлов (samamoiloff) 27.05.12 13:11
А сегодня сложный запрос - враг. Он отнимает силы, заставляет нервничать и совершать ошибки, он смеется над нами! Не случайно эта публикация, еще раз обращаю ваше внимание, за пару дней скакнула на вершины рейтингов, и по плюсам, и по загрузкам, и по комментариям. (5) - идея супер, но я так и не подключил компоненту... (оправдываться не буду, так вышло).
39. Сергей Старых (tormozit) 27.05.12 13:20
(37) Конечно же меня, как автора единственной на текущий момент публичной грамматики языка запросов 1с, такая мысль посещала и не один раз. Сделать такой конструктор с помощью этой грамматики не очень сложно, но времени придется потратить много. Думаю не меньше 50 часов бы у меня ушло на воссоздание аналога платформенного конструктора и дальше уже пошли бы доп. фичи часов на 20. Одним словом дорогой конструктор получится.
40. anry mc (AnryMc) 27.05.12 13:45
(39) tormozit,
А хорошую разработку здесь можно и продать
41. Владимир Самойлов (samamoiloff) 27.05.12 14:34
(39)Снегопат, каюсь, не смотрел еще. Под него какой-нито плагин не планируется?
(40)Никто не знает (ну, кроме авторов, конечно)какой доход приносят разработки, какова прибыльность, какой спрос...
Здесь скорее всего нужен проект рекламного характера для продажи более объемных вещей. 70 часов * 500 рублей = 35000 рублей сумма приемлимая для раскрутки инфобизнеса.
(39)tormozit, готов рассмотреть Ваши предложения, осенью в планах делать запуски продаж.
42. Евгений Сосна (pumbaE) 28.05.12 11:04
(39) на управляемых формах в режиме тонкого клиента... мечта.
43. Сергей Лунев (luns) 28.05.12 16:00
идея хорошая, но по своему опыту скажу, что не нужная.
стандартного конструктора достаточно для понимания запроса любой сложности.
44. anry mc (AnryMc) 28.05.12 16:42
(43) luns,
Стандартный конструктор помогает, но не дает такой наглядности.
Особенно такая визуализация будет полезна для тех, кто еще не "постиг всех премудростей" стандартного конструктора. Согласитесь что многие вещи в документации описаны очень плохо и пока тебя "не ткнут носом" ты их не поймешь. (Например: всякие "галочки" без подсказки и название колонки не прочтешь, т.к. ширина не изменяется...)
45. Сергей Лунев (luns) 28.05.12 17:10
(44) возможно. но к сожалению не могу оценить наглядность.
для пробы хотел разобрать пару запросов:
отчет: ВаловаяПрибыль
отчет: АнализНачисленийРаботникамОрганизаций
ни там ни там не сработало.
46. Равиль Бикбаев (BRT) 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)}: Итератор для значения не определен
	Для каждого Источник Из Источники Цикл
47. Андрей М. (StepByStep) 28.05.12 17:23
(31) DrAku1a,

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

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

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

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
&Магазин,
ТаблицаЦен.Период КАК Период,
ТаблицаЦен.Регистратор КАК Регистратор,
ТаблицаЦен.Номенклатура КАК Номенклатура,
ТаблицаЦен.Характеристика КАК Характеристика,
ВЫБОР
КОГДА ЦеныНоменклатурыА.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
ИЛИ ЕСТЬ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
{ГДЕ
(ТоварыНаСкладахОстаткиИОбороты.Период <= &КонецПериода)}
48. anry mc (AnryMc) 28.05.12 20:08
(46) (47)
Может и мне запросик этак на строк 300 выложить, да $m заработать ;-)

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

См. прикрепленный для примера файл
Прикрепленные файлы:
ЗУП Порядок 100.txt
Vladal; DrAku1a; +2 Ответить 2
49. anry mc (AnryMc) 28.05.12 20:17
(45) luns,
Не знаю. Мой запрос 292 строки из (48) дал такую картинку:


Обработка - самой первой версии
50. Владимир Самойлов (samamoiloff) 28.05.12 20:26
(43)luns,
достаточно. Вот запросец: (http://samsamych.com/super-zapros-bp/)
Черточки справа - "пакетики" запросика:

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

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

Но вообще сочувствую...
52. anry mc (AnryMc) 28.05.12 21:06
Лично у меня, когда я "воюю" с запросами много времени и сил уходит на "скачки" между пакетами, что бы посмотреть (вспомнить) сто выбрали и как назвали в этом пакете, а затем по каким правилам отобрали и назвали в другом пакете.
В стандартном конструкторе мне это делать неудобно (лично мне, не знаю как Вам).
Вот и приходиться "елозить" по тексту запроса - "туда - сюда", а это могут быть сотни строк.

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

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


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

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


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

Нужны идеи относительно того, как расположить-оформить данные. Особенно это касается пожеланий (1), (9) и др.
54. Равиль Бикбаев (BRT) 29.05.12 08:27
(53) DrAku1a,
сорри, ошибся кнопками.
55. Андрей Акулов (DrAku1a) 29.05.12 08:41
(50) а можно здесь привести тот самый текст запроса, чтобы в моем отчете попробовать? :)
56. Иван (Sairys) 29.05.12 09:37
Ну конечно интересно, но когда работаешь с этим каждый день структура запроса понятна по коду. Но всё равно автору спасибо
57. Владимир Самойлов (samamoiloff) 29.05.12 09:59
58. nataon (nataon) 29.05.12 10:07
Автору спасибо, интересная идея
59. Андрей Акулов (DrAku1a) 29.05.12 10:21
(57) Попробовал... много букв... а диаграмма запроса оказалась простой...
60. Андрей М. (StepByStep) 29.05.12 12:21
Вот теперь вижу результат.
Поставил 100-ый плюс.
Вот еще бы под управляемый режим ....
61. Андрей М. (StepByStep) 29.05.12 12:32
1С-никам такое следовало бы взять на вооружение.
Ведь существует же в 1С-ке Карта маршрута бизнес-процесса!
hulio; Den_D; +2 Ответить
62. Юрий Зайцев (Yury1001) 29.05.12 13:57
Всё круто, запрос из 20 страниц был разобран как с добрым утром.

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

Прошу прощения что не по теме, достаточно срочно нужно решить вопрос со специалистом на поддержку.
Не расценивайте, пожалуйста, за рекламу.
Ищу только с нашего ресурса ;) и при помощи нашего ресурса.
подробности на:
Биржа труда на "Инфостарте"
64. vx_gas vx_gas (vx_gas) 30.05.12 05:10
красивая штучка получилась :)
65. Денис (Den_D) 30.05.12 10:30
супер, скачаю обязательно, но подожду пока немного отладится
эта головная боль с запросами у всех, в независимости от компетенции
67. Роман (AzzZ) 30.05.12 12:23
68. Андрей М. (StepByStep) 30.05.12 13:21
(52) AnryMc,
Хорошо сказано, именно так все в действительности и происходит.
И тут визуализация - неоспоримый ПЛЮС.
69. eigen20 30.05.12 14:12
Классная идея, автору респект!!! Молодец, протестирую отпишусь!
70. Андрей Мухин (Muhin555) 30.05.12 17:33
(10) Muhin555,
Прикрутил от "Консоли запросов" работу с файлами *.sel, на авторство не претендую, но думаю так удобнее смотреть структуру готовых запросов из консоли....
Прикрепленные файлы:
ПарсерТекстаЗапросов_Файлы.erf
71. Владимир Чаклин (vec435) 30.05.12 20:19
сам долго мучился ,особенно с пакетами. только разработал себе черновой вариант - а тут уже готовое решение.спасибо
72. Дмитрий Ярославцев (DimanYa) 31.05.12 06:39
Идея создания шикарная!!! Особенно подойдёт для ЗУПа где запросы сделаны так, что чёрт ногу сломит. Только есть один вопросик:
1) как отрабатываются ситуации, когда пишется в коде СТРЗаменить? Бывает поставят условия в коде и половина запроса изменилось.
73. Андрей Акулов (DrAku1a) 31.05.12 06:53
(72) Попробуйте... По-идее должно отработать нормально, т.к. при анализе текста запроса блок "+СтрЗаменить(...)+" будет воспринят как одно слово (как текст) и это не должно повлиять на результат.
74. Артур Пирожков (angler225) 31.05.12 16:49
(70) Muhin555, Неверный формат хранилища данных 'с:/ПарсерТекстаЗапросов_Файлы.erf'
75. Программулькин (Программулькин) 01.06.12 10:17
у этой публикации http://infostart.ru/public/95771/ ошибка

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

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

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

ОБЫЧНАЯ КОНСОЛЬ ОТРАБАТЫВАЕТ БЕЗ ОШИБОК
76. Igor2010 (IgorXml) 01.06.12 16:11
С последним своим отчетом на СКД почти месяц маялся. Сегодня гуляю в обед и привиделась мне такая схема. Думаю, если бы была у меня такая я бы давно всё сделал. Прикольно.
77. John Bolshakov (soulsteps) 02.06.12 23:55
Отличная обработка, действительно, облегчает понимание и разбор даже очень сложных запросов в разы! Большое спасибо!
78. Александр (alexsmir56) 04.06.12 16:03
спасибо. Идея классная. Помогает особенно когда начинаешь.
79. Александр Орефков (orefkov) 04.06.12 21:57
(73)
Под Снегопат портировать нет желания?
Чтобы и в Конфигураторе вертеть.
Vladal; DrAku1a; +2 Ответить 1
80. Андрей Акулов (DrAku1a) 05.06.12 03:12
(79) Идея отличная! Заодно, попробую себя в скриптописателях для снегопата, а то пока только его пользователь ;-)
81. Владислав Ентц (vladen) 05.06.12 12:57
Идея очень не плоха.

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

Результат прилагается:
Прикрепленные файлы:
85. andpyxa (andpyxa) 07.06.12 22:05
Попробовал позапускать - классный инструмент. Автору "+" и пожелания дальнейшего развития. Будет неплохо если выростет в коммерческий проект. Существенно экономит время при разборе запросов.
86. Андрей Акулов (DrAku1a) 08.06.12 10:16
(85) Этот проект останется бесплатным, в т.ч. и если напишу его как аддин для Снегопата. Но на основе этого проекта и дико раскритикованного "Выполнение и отладка запроса" планирую сделать мощный отладчик запросов (без каких. И вот это проект уже скорее всего будет платным.
Есть идея попробовать построить структуру с помощью графической схемы, наподобие проекта 1C Visio. Так можно расписать задействованные в запросе поля. Попробуем?..
87. Дмитрий Веселов (Veduin) 08.06.12 10:34
Скачал, Посмотрел Обработку!
Интересно анализирует введенный текст запроса.
Явно помогает для начинающих при анализе сложных составных запросов понимать структуру запросов,
Но вот так хотелось сразу еще и консоль запросов для выполнения и отладки этого запроса.
Но это видать из-за того что не до конца понимаю сложные и встроенные запросы...
СПАСИБО!
88. andpyxa (andpyxa) 08.06.12 11:50
Насчет визио идея хорошая, именно там рисую схемы, пока руками. Хотел сказать что как логическое продолжение разработки было бы очень полезно выполнять запрос и по частям, приходится иметь дело с запросами, которые работают, но не правильно, не так как нужно, приходится в консоли копировать и удалять лишнее, анализировать куски. Идея выполнения запроса по частям предложена 1С в консоли в виде кнопки(рис. ниже), но из-за того что она не подтягивает параметры из запроса в ней нет практического смысла. Думаю что видеть промежуточные этапы было бы очень полезно.
Прикрепленные файлы:
89. Андрей Акулов (DrAku1a) 08.06.12 12:45
(88) Именно этим я сейчас и занимаюсь. Надо бы консоль посмотреть - может чего полезного вытащу.
90. Александр Крынецкий (echo77) 08.06.12 16:49
Поля в связях не показывает - это очень грустно. Этого очень нехватает
91. nirbolz 08.06.12 21:55
Эта ваша разработка напомнила мне про уроки в институте про Майкрософт Акцес))
92. Андрей Акулов (DrAku1a) 09.06.12 02:14
(91) Сделаем со временем... Как вы себе это представляете визуально (как мне нарисовать поля связи)?
93. andpyxa (andpyxa) 09.06.12 02:42
С практической точки зрения связь может выглядеть как псевдоним поля и в скобке тип данных.
94. anry mc (AnryMc) 13.06.12 10:54
(0) Мелкие замечания:
1) В блоке запроса нижняя часть ("как") довольно часто попадаются длинныенаименования желательно сделать "перенос" а не "забой"
2) Отладка - Получить источник данных "съедается" первая буква запроса. Пример:
"// --- новый элемент --- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<­<<
// Псевдоним источника: ПоследниеДаты
// Тип соединения: ---
// Это вложенный запрос: Да
//
ЫБРАТЬ
" ---- Отсутствует "В" в "ВЫБРАТЬ"
95. Алексей Аборин (commo) 22.06.12 12:41
Поставил плюс, но Дерево из ИР намного больше нравится.
97. Владимир Чаклин (vec435) 20.07.12 14:05
добавь вызов из других обработок вроде внешниеобработки.создать(путь+"ПарсерТекстаЗапросов.erf").СформироватьСтруктуруЗапроса(ТекстЗапроса,ТабДок).
еще пожелание: добавить вывод структуры источников для временной таблицы
99. anry mc (AnryMc) 07.09.12 07:54
100. anry mc (AnryMc) 07.09.12 07:57
(98) tritonof,
Прикрепляйте текстовый файл, а то палец устает крутить колёсико мышки... ("-")
101. Андрей Акулов (DrAku1a) 07.09.12 08:56
(98) tritonof, как сказал (99) AnryMc
И что это было?
102. Альтаир (Altair777) 19.09.12 13:20
103. Igor2010 (IgorXml) 15.11.12 15:21
Взял на Вашем отчете посмотреть запрос для платформы 8.1 + для неизвестно кем и зачем замученной конфигурации + запрос со всеми извращениями. И удивительно, но структуру запроса получил! Отчет запускал из 8.2.
104. Андрей Акулов (DrAku1a) 15.11.12 15:53
(103) ну да... про это не говорилось. отчет не проверяет наличие источников запроса в конфигурацию, как и иные ошибки в тексте запроса. потому можно помещать в него любой, даже не работающий запрос.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа