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

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

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

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


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

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

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

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

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

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

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

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

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

309

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

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

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

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

Имхо: без этих данных вряд ли эта обработка хоть как-то поможет при отладке
9. DrAku1a 1300 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 720 25.05.12 11:38 Сейчас в теме
(9)

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

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

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

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

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

Полагаю, самое сложное в реализации - полноценный парсер (вот эта вещь мне ну очень нужна). Ну и еще надо подумать над интерфейсом...
135. v.l. 01.07.13 13:36 Сейчас в теме
(133) я вот тоже прикинул - создать панель инструментов с блоками и связями, как, например, в схеме бизнес-процессов, и при связях просить пользователя задать условия связей вручную или парсить метаданные и предлагать по типам.
Хотя связи через точку, может, глубиной одного уровня тоже можно включить.
Потом выдать заготовку, скелет запроса, который скормить Конструктору и настроить в нём тонко.
Но это так, идея.
47. StepByStep 3257 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 720 25.05.12 07:31 Сейчас в теме
Очень интересная идея. За идею "+"

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

Первая мысль, которая пришла в голову после того, как увидел разработку - прикрутить ее к обычной консоли запросов.... Вспомнился старый добрый MS Access с его визуальным отображением связей таблиц в базе.
Идея - Однозначный "плюс"!!!!
20. DrAku1a 1300 25.05.12 13:48 Сейчас в теме
(10) Если честно, я ее и создал чтобы потом встроить в консоль (только свою).
(13) Теперь понял. Пожелание принято.
(14) О.К. ваш запрос отлажу.
(16) ИМХО, имеется в виду сложный, перегруженный интерфейс. Но думаю, к этому можно привыкнуть...
И это... не мне тут, конечно, говорить о перегруженности - мои диаграммы не в каждый "монитор" влезут :-)
(18) Я находил на инфостарте отвязанную консоль запросов из ИР - она работает, даже дерево строит.
Из этой консоли я позаимствую "прикручивание" класса "Контекстная подсказка" - мне он очень нравится...
70. Muhin555 14 30.05.12 17:33 Сейчас в теме
(10) Muhin555,
Прикрутил от "Консоли запросов" работу с файлами *.sel, на авторство не претендую, но думаю так удобнее смотреть структуру готовых запросов из консоли....
Прикрепленные файлы:
ПарсерТекстаЗапросов_Файлы.erf
74. angler225 99 31.05.12 16:49 Сейчас в теме
(70) Muhin555, Неверный формат хранилища данных 'с:/ПарсерТекстаЗапросов_Файлы.erf'
3. AlX0id 25.05.12 09:58 Сейчас в теме
В общем-то, да. Смотреть - пока не смотрел, но по скринам уже понятно, что идея хорошая %)
4. fuxic 292 25.05.12 10:01 Сейчас в теме
Визуализацию запросов видел, когда работал с виндевом. Там эти связи красиво бегали по трубочкам и видно было по чем связь. Надеюсь сама платформа дойдет до этих фишек. Плюс за реализацию
5. tormozit 5592 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 Ответить
7. Hany 25.05.12 10:38 Сейчас в теме
(5) tormozit, Вы правы, ИР помогает в отладке "длинного" 100%, и никаких диаграмм не нужно, как мне кажется. Их огромная древовидная структура только почему-то еще больше пугает. Хотя может я настолько привыкла пользоваться деревом запросов из ИР, что считаю его панацеей:)
15. AlX0id 25.05.12 11:44 Сейчас в теме
(5) tormozit,
В ИР много здравых мыслей и красивых решений, но такое впечатление, что его создатели инопланетяне и общаются между собой только на своем языке, далеком от понимания простых людей.. Имхо, конечно же.
16. tormozit 5592 25.05.12 11:56 Сейчас в теме
(15) Не могу сказать, что мне понятен смысл твоего сообщения. Возможно кто то из нас действительно инопланетянин. Попробуй попроще сформулировать мысль.
18. petrov_al 10 25.05.12 12:56 Сейчас в теме
(16) tormozit, встроенная конфигурация не есть хорошо, мало кто захочет в типовые конфигурации встраивать ИР...лучше выкладывай свои разработки поотдельности.
19. tormozit 5592 25.05.12 13:12 Сейчас в теме
(18) Данная тема регулярно всплывает в обсуждениях подсистемы. Если почитать форум публикации здесь или на офсайте, то моя позиция станет понятна. В двух словах, поддерживать мобильные версии инструментов заметно затратнее, чем в виде подсистемы, к тому же они менее функциональны. Любой кто писал достаточно сложную систему поймет о чем я (чем больше "зоопарк", тем сложнее им управлять в виде отдельных "животных").
38. samamoiloff 858 27.05.12 13:11 Сейчас в теме
А сегодня сложный запрос - враг. Он отнимает силы, заставляет нервничать и совершать ошибки, он смеется над нами! Не случайно эта публикация, еще раз обращаю ваше внимание, за пару дней скакнула на вершины рейтингов, и по плюсам, и по загрузкам, и по комментариям. (5) - идея супер, но я так и не подключил компоненту... (оправдываться не буду, так вышло).
6. AlX0id 25.05.12 10:20 Сейчас в теме
Из первых наблюдений - похоже, что не работает, если соединений таблиц более, чем одно.. Показывает только первое..
8. AnryMc 720 25.05.12 10:44 Сейчас в теме
Наверно стоит выводить список объявленных параметров с группировкой по запросам (удобно, что бы чтонибудь не забыть установить)
11. Bassgood 25.05.12 11:27 Сейчас в теме
(0), Идея очень понравилась, если постепенно будет производится дальнейшая модернизация обработки (например по тем пожеланиям, которые были высказаны в (1)), то обязательно ее скачаю, а пока у меня не хватает баллов для этого =(
Честно говоря, пока сложно сказать насколько удобно будет пользоваться такой визуализацией для отладки громоздких запросов.
p.s. Публикацию естественно заплюсовал =)
12. kuza_87 25 25.05.12 11:27 Сейчас в теме
Кое в чем (не во всем конечно) но поможет разобраться. Автору спасибки!
75. Программулькин 286 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 Сейчас в теме
21. romansun 189 25.05.12 14:20 Сейчас в теме
в опщем да, второе и дальше левое соединение к одному источнику не чухает... где-то в "ПолучитьИсточникиВыборки" недонаходит :)

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

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



резалт:

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

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


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


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

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


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

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

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

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

Но вообще сочувствую...
55. DrAku1a 1300 29.05.12 08:41 Сейчас в теме
(50) а можно здесь привести тот самый текст запроса, чтобы в моем отчете попробовать? :)
57. samamoiloff 858 29.05.12 09:59 Сейчас в теме
59. DrAku1a 1300 29.05.12 10:21 Сейчас в теме
(57) Попробовал... много букв... а диаграмма запроса оказалась простой...
46. BRT 33 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 720 28.05.12 20:08 Сейчас в теме
(46) (47)
Может и мне запросик этак на строк 300 выложить, да $m заработать ;-)

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

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

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

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

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

Прошу прощения что не по теме, достаточно срочно нужно решить вопрос со специалистом на поддержку.
Не расценивайте, пожалуйста, за рекламу.
Ищу только с нашего ресурса ;) и при помощи нашего ресурса.
подробности на:
Биржа труда на "Инфостарте"
64. vx_gas 19 30.05.12 05:10 Сейчас в теме
красивая штучка получилась :)
65. Den_D 51 30.05.12 10:30 Сейчас в теме
супер, скачаю обязательно, но подожду пока немного отладится
эта головная боль с запросами у всех, в независимости от компетенции
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 1300 31.05.12 06:53 Сейчас в теме
(72) Попробуйте... По-идее должно отработать нормально, т.к. при анализе текста запроса блок "+СтрЗаменить(...)+" будет воспринят как одно слово (как текст) и это не должно повлиять на результат.
79. orefkov 1974 04.06.12 21:57 Сейчас в теме
(73)
Под Снегопат портировать нет желания?
Чтобы и в Конфигураторе вертеть.
v.l.; DrAku1a; +2 Ответить
80. DrAku1a 1300 05.06.12 03:12 Сейчас в теме
(79) Идея отличная! Заодно, попробую себя в скриптописателях для снегопата, а то пока только его пользователь ;-)
76. IgorXml 01.06.12 16:11 Сейчас в теме
С последним своим отчетом на СКД почти месяц маялся. Сегодня гуляю в обед и привиделась мне такая схема. Думаю, если бы была у меня такая я бы давно всё сделал. Прикольно.
77. soulsteps 73 02.06.12 23:55 Сейчас в теме
Отличная обработка, действительно, облегчает понимание и разбор даже очень сложных запросов в разы! Большое спасибо!
78. alexsmir56 68 04.06.12 16:03 Сейчас в теме
спасибо. Идея классная. Помогает особенно когда начинаешь.
81. vladen 81 05.06.12 12:57 Сейчас в теме
Идея очень не плоха.

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

Результат прилагается:
Прикрепленные файлы:
85. andpyxa 07.06.12 22:05 Сейчас в теме
Попробовал позапускать - классный инструмент. Автору "+" и пожелания дальнейшего развития. Будет неплохо если выростет в коммерческий проект. Существенно экономит время при разборе запросов.
86. DrAku1a 1300 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 1300 08.06.12 12:45 Сейчас в теме
(88) Именно этим я сейчас и занимаюсь. Надо бы консоль посмотреть - может чего полезного вытащу.
90. echo77 1093 08.06.12 16:49 Сейчас в теме
Поля в связях не показывает - это очень грустно. Этого очень нехватает
91. nirbolz 30 08.06.12 21:55 Сейчас в теме
Эта ваша разработка напомнила мне про уроки в институте про Майкрософт Акцес))
92. DrAku1a 1300 09.06.12 02:14 Сейчас в теме
(91) Сделаем со временем... Как вы себе это представляете визуально (как мне нарисовать поля связи)?
93. andpyxa 09.06.12 02:42 Сейчас в теме
С практической точки зрения связь может выглядеть как псевдоним поля и в скобке тип данных.
Оставьте свое сообщение

См. также

Вам нравятся запросы в 1С? 13

Инструменты и обработки Программист Конфигурация (md, cf) v8 v8::Запросы 1cv8.cf Абонемент ($m) Практика программирования Разработка

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    8974    1    m-rv    73       

Модель объекта 6

Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) Инструментарий разработчика

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    2421    1    vadim1980    0       

Безопасная работа с транзакциями во встроенном языке 183

Статья Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Разработка

Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку "В данной транзакции уже происходили ошибки". Учимся защищаться от них.

1 стартмани

25.03.2019    13188    7    tormozit    35       

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 509

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных WEB Универсальные функции Инструментарий разработчика Универсальные обработки

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

1 стартмани

31.01.2019    24902    242    bonv    102       

Редактор объектов информационной базы 8.3 35

Инструменты и обработки Программист Пользователь Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Windows Абонемент ($m) Инструментарий разработчика Универсальные обработки

Универсальная внешняя обработка (СДРОбъектУпр) для редактирования реквизитов и табличных частей объектов информационной базы, редактирование движений документов. Доступ ко всем реквизитам объектов, есть возможность выгрузки и загрузки данных (объекты и движения документов) через XML. Платформа 8.3, управляемые формы. Версия 1.1.0.31 от 02.10.2019

2 стартмани

23.01.2019    8453    126    ROL32    21       

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь полноценный оффлайн (обновление от 15.08.19)! 168

Инструменты и обработки Программист Архив с данными v8 v8::Mobile БУ УУ Android Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Абонемент ($m) Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Мобильная разработка

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    19637    207    informa1555    167       

Навигатор по конфигурации базы 1С 8.3 100

Инструменты и обработки Программист Пользователь Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Windows Абонемент ($m) Инструментарий разработчика Универсальные обработки

Универсальная внешняя обработка (СДРНавигаторУпр) для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Небольшой набор сервисных функций для повседневной работы. Для программистов и пользователей. Платформа 8.3, управляемые формы. Версия 1.1.0.43 от 01.10.2019

3 стартмани

28.10.2018    14605    176    ROL32    43       

Работа с публикациями "Инфостарт" 13

Инструменты и обработки Программист Архив с данными v8 УУ Абонемент ($m) Практика программирования О сообществе WEB

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    8125    10    RocKeR_13    12       

Управляемая консоль запросов, отчетов 3.7.3 (расширение, внешняя обработка) 356

Инструменты и обработки Программист Архив с данными v8 v8::УФ v8::Запросы v8::СКД 1cv8.cf Абонемент ($m) Консоль запросов

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц, Выполнение в фоне (с возможностью отмены), Сравнение результатов, текстов, Разбор структуры запроса в виде дерева, Анализ плана запроса, Групповая обработка

1 стартмани

14.08.2018    48621    1080    Evg-Lylyk    409       

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции 62

Инструменты и обработки Программист Бизнес-аналитик Приложение (apk) v8 Windows Абонемент ($m) Инструментарий разработчика Практика программирования

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    14653    23    informa1555    26       

Работа с данными выбора 38

Инструменты и обработки Программист Архив с данными v8 Россия Абонемент ($m) Практика программирования Работа с интерфейсом

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

1 стартмани

17.07.2018    19597    13    kalyaka    15       

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") 105

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::Запросы 1cv8.cf Абонемент ($m) Практика программирования

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    18926    86    m-rv    57       

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному 236

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования БСП (Библиотека стандартных подсистем)

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

1 стартмани

10.05.2018    26078    24    dsdred    34       

Как выполнить отчет на СКД через COM и получить данные отчета? 85

Статья Программист Архив с данными v8 УПП1 Россия Windows Абонемент ($m) Практика программирования

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

2 стартмани

08.05.2018    17149    10    wowik    3       

Работа со схемой запроса 170

Статья Программист Конфигурация (md, cf) v8 v8::Запросы Абонемент ($m) Инструментарий разработчика Практика программирования

Стандартом взаимодействия с реляционной базой данных стал язык SQL. Приемником SQL в 1С является язык запросов. Язык запросов, также как и SQL, является структурированным. Составляющие структуры запроса отвечают на разные вопросы о том, какие данные требуется получить и какие манипуляции с множествами данных необходимо произвести при получении. В простых случаях текст запроса можно написать вручную, однако в сложных случаях, а также при программном формировании, - лучше воспользоваться объектной моделью запроса и использовать объект "Схема запроса". В статье дается описание объектной модели и особенностей работы с ней, а также приводится решение, упрощающее взаимодействие с объектом "Схема запроса".

1 стартмани

24.04.2018    27080    71    kalyaka    34       

Регистры правил [Расширение] 13

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8 v8::Права УТ11 Абонемент ($m) Инструментарий разработчика Информационная безопасность

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    10085    27    33lab    0       

Заполняем по шаблону (по умолчанию) 68

Инструменты и обработки Программист Архив с данными v8 v8::УФ 1cv8.cf Абонемент ($m) Практика программирования

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

1 стартмани

08.02.2018    17364    20    mvxyz    17       

Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов 122

Статья Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования

Если вам интересно проверить контрагенте в ФНС, вам поможет данная публикация. Весь алгоритм работы строится на основе данных, полученных с сервиса http://npchk.nalog.ru совершенно бесплатно.

1 стартмани

01.02.2018    24231    61    rpgshnik    46       

Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула 8

Отчеты и формы Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Печатные формы документов Практика программирования Универсальные функции

Расширяем функционал вывода нижнего / верхнего колонтитула. Стандартно 1С имеет достаточно ограничений по выводу и наполнению колонтитулов содержимым, взять хотя бы такие, как вывод только текста и отсутствие ограничения на номер конечной страницы. А при разработке кода сталкиваешься с тем, что свой блок с нижним колонтитулом нужно прижимать к низу страницы. Казалось бы быстро решаемый вопрос, но и в нем есть нюансы. Сейчас я расскажу о том, как решалась эта задача. UPD 15.02.2018. Добавлен вывод верхнего колонтитула; Вывод колонтитулов на первой и последней странице управляется параметрами; Научился считать страницы: Добавлено заполнение переменных аналогичных стандартным из колонтитулов; Задаются форматы даты и времени. Ограничения прежние: 1. Повторно сформировать табличный документ после смены параметров страницы интерактивно.; 2. Передавать данные для более плотной печати как можно более мелко нарезанными кусками.

1 стартмани

29.12.2017    21339    21    agent00mouse    0       

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП 26

Инструменты и обработки Программист Расширение (cfe) v8 БП3.0 Абонемент ($m) Практика программирования Универсальные печатные формы

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    17777    52    kwazi    6       

Программное формирование форматированной строки в стиле html+inline CSS 52

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом Инструментарий разработчика

Если вам приходилось работать с форматированными строками программно, то вы знаете, какая это боль. Данное решение облегчает программное формирование таких строк.

1 стартмани

18.11.2017    19172    24    bonv    5       

Расширения конфигураций 1С: учимся перехватывать методы 110

Инструменты и обработки Программист Расширение (cfe) v8 v8::УФ 1cv8.cf Абонемент ($m) Практика программирования

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

1 стартмани

30.05.2017    81633    14    signum2009    45       

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов 175

Статья Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad)

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

26.05.2017    38284    166    DarkAn    86       

Набор подсистем "Умные таблицы" 63

Инструменты и обработки Системный администратор Программист Архив с данными v8 Беларусь Россия Казахстан Абонемент ($m) Инструментарий разработчика

Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз, хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB) и выполнение произвольного кода после изменений ссылочного объекта вне транзакции изменения.

1 стартмани

22.05.2017    22726    99    Silenser    33       

Простой способ индексирования интервалов 181

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) Практика программирования

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

1 стартмани

28.09.2016    31566    39    ildarovich    22       

Конструктор-тестер http запросов в 1С 215

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) WEB Инструментарий разработчика

Данная обработка позволяет в несколько кликов конструировать http запросы на языке 1С и просматривать результаты их выполнения.

3 стартмани

19.08.2016    33627    299    hlopik    16       

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут 61

Инструменты и обработки Системный администратор Программист Компонента, плагин (dll, vbs,..) v8 Windows Абонемент ($m) Практика программирования

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    38014    35    Demanoidos    60       

Hello world на metadata.js 249

Статья Программист Архив с данными v8 1cv8.cf Абонемент ($m) Инструментарий разработчика WEB Мобильная разработка

Про браузерные offline-first приложения можно написать миллионы слов. Сэкономлю своё и ваше время и перейду сразу к делу. В статье не будет рекламы и агитации за новые технологии, не будет критики традиционных или попсовых решений. Рассмотрим по шагам разработку простейшей программы на metadata.js. Постараюсь сделать акцент не на том «как это сделано», а «почему сделано именно так»

1 стартмани

11.08.2016    47448    115    unpete    205       

Подсистема обмена данными с порталом ИМНС по электронным счетам-фактурам (автоматический обмен) 7

Инструменты и обработки Системный администратор Программист Бухгалтер Конфигурация (md, cf) v8 1cv8.cf Беларусь БУ НДС Абонемент ($m) Инструментарий разработчика Внешние источники данных WEB

Подсистема включает документы и обработки для автоматического обмена данными с порталом ИМНС через web-сервис. Присутствует возможность заполнения данными типовых операций за период, учёта входящих документов, учёта произвольных исходящих документов. Приложены обработки для запуска задания планировщика на автоматический обмен данными.

1 стартмани

28.07.2016    25665    28    c1nil    4       

Навигатор по структуре и данным баз 1С 8 28

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика

Просмотр структуры и данных ИБ 1С 8.2, 8.3. Состав, типы объектов, табличных частей, движений. Размер, структура хранения объекта. Для администраторов и разработчиков. Версия 1 - на обычных формах, версия 2 - на управляемых.

1 стартмани

11.07.2016    22779    130    o.nikolaev    17       

Хранение файлов в томах на диске (для УПП 1.3) 76

Инструменты и обработки Программист Архив с данными v8 УПП1 Windows Абонемент ($m) Практика программирования

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    43397    4    wowik    27       

Остатки на каждый день в запросе 33

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf УУ Windows Учет ТМЦ Абонемент ($m) Практика программирования

Запрос формирует остатки товаров на каждый день в пределах выбранного периода.

1 стартмани

26.04.2016    33818    19    arakelyan    16       

Консоль запросов "Запросник" для управляемых форм с подсветкой синтаксиса 35

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

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

1 стартмани

19.04.2016    30772    263    1С_Мастер    42       

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии 149

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Практика программирования

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    59921    132    igo1    49       

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом 28

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Практика программирования

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

1 стартмани

03.03.2016    11905    1    Alexander.Shvets    5       

Простые радости жизни программиста 1С: выбор типа значения 51

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом

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

1 стартмани

17.02.2016    38477    45    yuraos    17       

Яндекс.Деньги "Благотворительность" 17

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика Практика программирования

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

1 стартмани

16.02.2016    17005    9    Tatitutu    5       

Мастер рассылки e-mail 2.2 для управляемых форм 9

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ ERP2 БП3.0 УТ11 Абонемент ($m) Практика программирования Email

Для пользователей: переделанный из старый разработки под 8.2 с использованием библиотеки Мастер рассылки e-mail 2.2 (ERP, УТ, БП) (Только управляемые формы), который теперь может запускаться под любой версией платформы с разрешенными или запрещенными модальными/синхронными вызовами в конфигурации. Также удобный выбор e-mail и их владельцев с помощью отбора динамического списка по любым критериям и галочки исключения.

1 стартмани

29.12.2015    30333    20    milkers    4       

Нечеткий поиск одним запросом 37

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования

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

1 стартмани

28.12.2015    18989    57    vasvl123    9       

Передача больших пакетов через веб-сервисы 137

Инструменты и обработки Системный администратор Программист Конфигурация (md, cf) v8 Абонемент ($m) Практика программирования Администрирование данных 1С Внешние источники данных

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

1 стартмани

06.12.2015    40665    44    YPermitin    19       

Интерфейс сопоставления объектов для обмена (для типового регистра СоответствиеОбъектовДляОбмена) 22

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 КА1 БП2.0 ЗУП2.5 УТ10 УПП1 Windows Абонемент ($m) Инструментарий разработчика Универсальные обработки Перенос данных из 1C8 в 1C8

Вы внедряете обмен данными между двумя типовыми или основанными на типовых БД и вам необходим инструмент, чтобы сопоставить между собой справочники этих конфигураций? Вы хотите навести порядок в обмене данными, потому что вам надоело вылавливать дублирующиеся объекты? Вам очень хочется перепоручить сопоставление объектов обменивающихся баз пользователям, но нет подходящего и понятного пользователям интерфейса? Тогда вам нужна именно эта обработка!

4 стартмани

11.11.2015    29374    221    catsam    8       

Exec - Выполнение кода, консоль запросов и не только! 70

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

Незаменимый инструмент администратора БД и программиста: Выполняйте произвольный код из режима 1С Предприятие; сохраняйте/загружайте часто используемые скрипты; выполняйте запросы с замером производительности запроса в целом и каждой из временных таблиц в частности, а также с просмотром содержимого временных таблиц; произвольным образом изменяйте любые объекты БД, редактируя даже не вынесенные на формы реквизиты и записывая изменения в режиме "ОбменДанными.Загрузка = Истина"; легко узнавайте ИД объектов БД; выполняйте прямые запросы к SQL с замером производительности и не только!

5 стартмани

10.11.2015    35663    173    catsam    11       

Быстрое определение интервалов в запросе 177

Инструменты и обработки Программист Внешний отчет (ert,erf) v8 Абонемент ($m) Практика программирования

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    41659    32    ildarovich    41       

Полезные приемы при работе с Excel из 1С (Версия 3.1) 486

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Разработка внешних компонент Загрузка и выгрузка в Excel

Программисту 1С часто приходится работать с таблицами Excel из 1С. Я постарался собрать небольшой FAQ и набор функций для работы с файлами Excel. Надеюсь, кому-то будет полезна данная статья.

1 стартмани

22.09.2015    133787    444    Zerocl    60       

Code First и Linq to EF на примере 1С версии 7.7 и 8.3 часть I 10

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Windows Абонемент ($m) Практика программирования

Данный проект является чисто исследовательским примером использования Code First и Linq to EF на примере 1С версии 7.7. Так как сам я программист 1С, то мне всегда было интересно, как можно перенести модель объектов 1С на компилируемые языки, и использовать мощь Linq to EF. С появлением Code First давно хотел прикрутить, но все как-то руки не доходили, и вот, наконец ..

1 стартмани

28.08.2015    17876    4    Serginio    2       

Работа с push сервисами только средствами 1С 8.2 24

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 Windows Абонемент ($m) Сервисные утилиты Инструментарий разработчика Универсальные обработки

Обработка для настройки, тестирования и использования с предустановками для 3-х сервисов. Текст модуля для внедрения в конфигурацию или другие обработки. Уведомления на телефон, компьютер, браузер.

1 стартмани

18.08.2015    23615    45    anig99    1       

[Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении 58

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8 1cv8.cf Россия БУ Windows Учет ТМЦ Абонемент ($m) Инструментарий разработчика Универсальные функции

Расширение позволяет без изменений конфигурации проверять остатки по регистру бухгалтерии при проведении каждого документа и запрещает проведение при появлении отрицательных остатков после проведения.

1 стартмани

17.08.2015    38174    167    ekaruk    31       

Универсальная учетная система с конструктором документов и справочников в режиме 1С: Предприятие 95

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf УУ Windows Абонемент ($m) Инструментарий разработчика Практика программирования

Заголовок статьи звучит фантастично, но это не шутка. Занимаясь внедрениями, я часто сталкивался с ситуацией, когда надо было к типовой конфе приделать простенький модуль учета чего-нибудь, не специфичного для самой конфы. Например в УТ учет материалов в эксплуатации. Модуль обычно состоял из пары справочников (2-3), 3-х документов и регистра или пары регистров. Однажды подобные пристройки понадобились одновременно на 3 проектах. Скучно делать одинаковую работу, и я подумал, а что, если сделать универсальный инструмент, в котором пользователь сам сможет нарисовать себе справочники, реквизиты к ним, документы и движения. Т.е. конструктор полноценных документов в пользовательском режиме. Это оказалось не так сложно - все дело в подходящей архитектуре данных.

1 стартмани

29.07.2015    25979    141    informa1555    39       

Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7 4

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

Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны "плоские данные". Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.

1 стартмани

25.06.2015    21006    4    Serginio    1       

Конвертация данных. Найдется все! И еще немного... 26

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 КД Абонемент ($m) Поиск данных Инструментарий разработчика

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

2 стартмани

25.06.2015    22829    40    tomvlad    7