Основное назначение данной консоли:
1. визуальная отладка запросов;
2. замена обработки УниверсальныйПодборИОбработкаОбъектов.
1. Визуальная отладка запросов
При разработке запроса немаловажно, особенно при освоении языка запросов,
видеть результат запроса. А именно — важно видеть результат действия различных
видов соединений, условий соединений, результат действия и взаимодействия
подзапросов, скорость выполнения запроса (в файловой базе и в серверной,
с пустым кэшем и с кэшированными данными) и проч.
Эта важность усиливается при создании «многоэтажных» и многоуровневых
запросов (с глубиной вложенности подзапросов большей или равной 3)!
Данная консоль поможет в решении таких задач.
Для этого необходимо только разбить запрос на подзапросы, создать пакет
(фактически пакетный запрос), произвести отладку запроса (для получения
приемлемых результата и времени выполнения) и собрать итоговый запрос.
2. Замена обработки УниверсальныйПодборИОбработкаОбъектов.
На мой (сугубо субъективный) взгляд, обработка
УниверсальныйПодборИОбработкаОбъектов хотя и называется универсальной,
таковой универсальностью обладает не в полной мере.
Поясню:
1. можно произвести обработку только документов или справочников или
бизнес-процессов (причем именно ИЛИ);
2. выбор необходимых объектов производится только по значению
реквизитов этих объектов по условию И; т.е. отобрать объекты по
более сложным условиям (хотя бы по условию ИЛИ) можно только
программно, что достаточно сильно увеличивает время обработки
выбранных объектов;
3. при программном определении различных дополнительных значений
приходится пользоваться не всегда надежными методами,
такими как НайтиПоНомеру() или НайтиПоКоду();
4. при обработке каждого объекта выборки производится получение
объекта (методом ПолучитьОбъект()). Получение объекта производится
даже в том случае, когда обработка объекта не требуется!
А это в значительной степени увеличивает время обработки объектов.
Данная разработка позволяет обойти все указанные (и многие другие) недостатки:
для отбора объектов можно использовать самый универсальный инструмент — запрос!
Поясню:
1. с помощью запроса можно получить весьма неординарную выборку из
объектов различного типа;
2. выбор объектов можно производить по условиям различной степени
сложности; но даже если условия отбора объектов не могут быть
описаны на языке запросов — есть возможность вывести необходимые
реквизиты в результат запроса и обработать выборку программно!
Время обработки выборки без вызова метода ПолучитьОбъект() будет
зависеть только от оптимальности алгоритма программной обработки;
3. различные дополнительные значения можно определить как параметры
пакета или элемента и использовать их без вызова таких методов,
как НайтиПоНомеру() или НайтиПоКоду();
4. получение объекта обработки производится (явно) только при
необходимости, что сокращает время обработки объектов.
Помимо названных преимуществ, консоль кода обладает многими другими
возможностями, о которых можно узнать, изучив описание обработки и
предлагаемые примеры.
Уточнение: примеры не полные и показывают только часть возможностей консоли.
По мере готовности примеров они будут выложены для всеобщего скачивания.
Класс. Еще года два назад хотел сделать чтоб отдельно для каждого вложенного запроса время выполнения вычислялось ну и горячие точки выделялись. Вообщем спасибо интересный проект.
А для 8.2 не будете делать аналог? 🙂
Обработка обновлена — был найден небольшой баг при отказе от выбора файла для импорта.
(2)
Собственно сконвертить обработку под 8.2. труда не составит.
Планирую это сделать через недельки три-четыре.
А то если до того момента еще баги найдутся, то надо будет постоянно выкладывать две версии… Тут и ошибиться недолго 😉
Рекомендую функции ЗначениеНеЗаполнено() присвоить какой-нибудь префикс. Сейчас открыл в одной не совсем типовой конфе, естественно вылезла ошибка.
(4) 😮
Можете переслать текст ошибки?
Дело в том, что обработка разрабатывалась в совсем нетиповой конфигурации…
И проблем не было…
У меня в этой конфе ЗначениеНеЗаполнено() находится в глобальном общем модуле. А ошибка известно какая, такая функция уже определена.
(5)
ЗЫ. Поправьте офографию
Глаза режет
(4, 7)
Текст подправлен. Очепятки бывают иногда… 😉 Я и сам их не люблю…
Обработчик переименован. Было ЗначениеНеЗаполнено() стало ЭтоЗначениеНеЗаполнено(). 🙂
Обработка заменена.
(3) Баги нашлись ;-).
Суть в следующем: надо было учесть тот момент, что в конфе может быть функция «ЗначениеНеЗаполнено», потому наверное не стоит ее использовать, а заменить на «НЕ ЗначениеЗаполнено» так будет более корректно и не будет конфликтов.
а вообще «+»
(9)
А вообще согласен, какой великий смысл плодить сущности?
(10)
Не во всякой конфигурации обработчик с таким функционалом назван именно так.
У нас на работе — это обЗначениеНеЗаполнено().
И, к тому же, чтобы обеспечить полную универсальность (и независимость от конфигураций) в обработке требуется наличие всех самописных обработчиков.
(11) ЗначениеЗаполнено — это метод платформы. Поэтому дополнительных функций обЗначениеНеЗаполнено,ЭтоЗначениеНеЗаполнено не требуется.
(12)
Обертка для ЗначениеЗаполнено создана на случай использования на сервере — там при передаче в ЗначениеЗаполнено мутабельных значений происходит завал.
(0) Автор меня опередил 😀 давно хотел выложить свою обработку, но теперь уже не буду 🙁
Автору «+» за хорошую реализацию!
(3) сконвертировать конечно тоже можно, но я имел ввиду переработку под управляемые формы. 🙂 просто очень мало админ. Обработок с формами под 8.2
(15) Переработку не планирую, т.к., честно говоря, еще не разбирался с управляемыми формами и работаю в 8.2 под толстым клиентом.
(0)
Найдены еще пара багов.
Слегка изменен расчет времени выполнения запросов.
Обработка обновлена.
держи и мой «+»
8 версию только начинаю изучать, плюсанул за доступность для «ВСЕХ».
Далее попробую разобрать и понять принцып написания ее.
(14) выкладывай не может же быть что там все также. Может что есть интересного
(19) Хорошо, там чуть-чуть по другому, но загружу после выходных. Надо некоторые вещи отшлифовать в ней 😀
(16) Жаль. Если будет время — может я займусь. Дело полезное.
За труд +
Спасибо за то что развиваете проект
Санче так держать!
Хм. По-моему, проще было бы слегка доработать напильником ту же «подбор и обработку», чем такое городить…
(25) Не уверен.
Времени на разбор и доделку «подбора и обработки» ушло бы столько же, сколько на разработку своего. (Ну не люблю я разбирать код 1С-овцев!..)
А последующее развитие и сопровождение мне, как автору, — несравненно проще.
Встречный вопрос. ❓
А как Вы думаете, что бы получилось после «доработки напильником» «подбора и обработки»?
Лично я думаю — что то же самое! 😀
(26) Я особо и не разбирал, снёс 2-3 процедуры и свои сделал. Но вот чтоб с нуля — да, хотелось, но у меня столько времени нету, увы.
Как всегда, вопрос цели и средств, короче. 🙂
Обновлена обработка:
— исправлены некоторые баги;
— добавлена возможность запускать отдельный элемент по Ctrl+F7 (не снимая крыжики с остальных);
— добавлен функционал работы с отбором (а’ля универсальный подбор и обработка…).
Обработка в очередной раз обновлена:
— исправлены логические неточности;
— добавлен анализ текста запроса для определения имени временной таблицы: ранее требовалось, чтобы имя временной таблицы совпадало с именем элемента пакета. Теперь такое НЕ требуется!
А можно выложить инструкцию по использованию этой обработки.
А то я с такими вещами встречаюсь в первые, к своему стыду!
+ за труд…
на первый взгляд — солидно, мне нравится подход!
Обработка обновлена.
Нововведения:
— слегка изменился интерфейс;
— теперь обработка имеет (пока) небольшой набор параметров;
— доступно создание списка ассоциированных с конкретной базой файлов;
— ведется список последних использованных файлов;
— реализован механизм разбиения пакетного запроса на элементы пакета;
— реализована возможность выполнения отбора или запроса или обработки какого-либо конкретного элемента.
(31) Я бы с великим удовольствием это сделал бы…
Только не написал пока я эту инструкцию…
(Из-за чего сам и страдаю на работе — приходится часто консультировать соратников… 😀 )
сделал бы кто обзор консолей что ли.. а тоих уже где-то с десяток.. не меньше… что использовать неофиту…?
Спасибо за консольку , удобно и простенько. Ждёмс развития событий
Удобно, но по функционалу особых преимуществ перед другими консолями не заметил.
(36) Когда я писал эту консоль, я не старался превзойти какие-то другие консоли по функциональности.
Я писал эту консоль для решения своих задач:
— изучение способов работы с новыми для меня объектами 1С
— создание альтернативы мелким служебным обработкам
— консолидация этих обработок в одном хранилище
— повторное использование этих мелких обработок без лихорадочного поиска обработок на диске
— визуальная отладка запросов
— визуальная оптимизация запросов и кода
И то, что в итоге получилось — выложил для всеобщего использования.
Позже консоль пригодилась так же для создания учебных запросов для демонстрации различных способов соединений таблиц (потребовалось для начинающих программистов, принятых к нам на работу).
На текущий момент ведется работа по устранению ошибок.
В планах (к сожалению, далеких):
— создание тех. описания
— переработка обработки для обеспечения возможности легкого встраивания в произвольную конфигурацию с целью обеспечения выполнения консоли в разных режимах (на сервере, при внешнем соединении)
— добавление функционала по работе с общими обработчиками групп пакетов.
при открытии выдал следующую ошибку
{ВнешняяОбработка.КонсольКода1С(26)}: Ошибка при вызове конструктора (COMОбъект): Недопустимая строка с указанием класса
ЯваСкрипт = Новый COMОбъект(«MSScriptControl.ScriptControl»);
(38) sashs1980, установите данный компонент, нет у вас его=)
(39) Спасибо. Где его можно взять?
(40) sashs1980,
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=1949
1. гугл/яндекс про имени класса как бы помогает обычно.
2. на сайте мелкомягких
много раз выручала, хорошая и удобная консолька.
хорошую реализацию!
Замечательная альтернатива универсальным обработкам для платформы 8.2. Даже без перезагрузки конфигурация можно отработать кусок когда. Спасибо будем качать.
Огромное спасибо! Инструментарий очень понравился.
(37) спасибо большое. Очень нужный инструмент.
Вполне всё стало приемлимо!
Плюс. Спасибо. Можно отработать кусок когда.
под 1С 8.2 не работает что-ли? запустил, куча ошибок при работе вываливается, дальше не стал разбираться, времени нет
спасибо большое
Спасибо, нужная вещь!
(50) pvlunegov, под 8.2 работает. В толстом клиенте. (Сам эксплуатирую консоль в 8.2)
Обработка разрабатывалась в совсем нетиповой конфигурации.
Потому одной их возможных причин ошибок может быть следующая: в Вашей конфигурации в общих модулях есть экспортные обработчики, имена которых совпадают с именами обработчиков в консоли.
Еще одной причиной может быть следующая: обработка при каждом открытии проверяет наличие XML-файла настроек «КонсольКода1С.xml». И при отсутствии этого файла создает его рядом с обработкой и заполняет настройками по умолчанию. Однако файлы данных тоже имеют формат XML. И это может ввести в заблуждение. И тогда при случайной попытке открыть файл настроек как файл данных возникнет некоторое количество ошибок.
Еще одна возможная причина — здешняя обработка написана под 8.1. И при открытии ее под 8.2 без предварительной конвертации тоже возникает ошибка. (Данный вариант привел как чисто теоретический.)
Может быть есть еще какие-то причины, но я их пока не вижу.
(50) pvlunegov,
И здесь у тебя куча ошибок…
Добрый день, скажу что работа была проделана большая, за это плюс автору. Но для меня это «мусор» так как предпочитаю писать код в конфигураторе и непонимаю стремление других разработчиков переносить функционал конфигуратора в пользовательский режим. Видимо у автора куча свободного времени что бы заниматься подобной ерундой.
(56) tormozit, вы мне уже давали понять, что меня не любите.
Зачем вы делаете свои необоснованные нападки прилюдно?
Если что-то не нравится,напишите мне сообщение.
Чем обусловлен ваш комментарий?
Я за свои слова отвечаю, а вы похоже нет.
Свой комментарий вы не обосновали, значит это просто тявканье маленькой жучки из-за угла, которая выражает так свою ненависть, потому что укусить боится.
По поводу кучи ошибок. Они БЫЛИ. Если вам нужно подтверждение, я могу выслать скрины экрана. Запускал в различных базах. Базы нетиповые. Какие они не могу сказать из-за службы безопасности.
Хочу сказать следующее: главное требование к любой консоли — ЗАПУСК В ЛЮБОЙ КОНФИГУРАЦИИ. Это требование не выполняется. Значит нужно вашу обработку ДОРАБАТЫВАТЬ.
(58) Дело не в любви, а в попытке понять смысл твоих постов в стиле «куча ошибок». Это не конструктивная критика. Обычно пользователи пытаются помочь устранить проблему, а сочинение в стиле «плохая погода тут у вас» на много абзацев мало кому поможет.
(58) pvlunegov, скрины в студию!
После таких заявлений Ваш отказ от предоставления скринов будет равносилен отказу от дуэли! (Уверен, что Вы понимаете всю ответственость и все последствия отказа от дуэли. :))
Тем более мне, как автору консоли, крайне интересно увидеть ошибки, которые возникают при старте консоли.
И, кроме того, прошу выложить скрины публично.
Поддерживаю п.60
(50) pvlunegov, еще один вариант возможной ошибки: он описан в посте (38).
Решение ошибки — пост (41).
Но не всегда это решение прокатывает — например, на 64-хразрядной Windows: библиотеки msscript.ocx 64-битной нету (по крайней мере — у меня такая информация).
В данном случае рекомендуется использовать .NET или PShell.
Но пока — это не реализовано.
(62) Бесполезно. Человек видимо слишком занят. В моем случае было также.
(63) tormozit
Подождем.
Как говорил Пятачок — «До пятницы я совершенно свободен!» 🙂
Запустил обработку в УПП 1.3.24.2 (8.2.14.540).
Слева в дереве удалось создать Новую группу, Новый Пакет, Новый элемент,
но почему-то вкладки Отбор, Запрос, Параметры элемента, Кэш значений справа недоступны.
Текст запроса ввести не получается в результате.
Что-то не так делаю?
Глуповато выгляжу после такого количества восторженных отзывов (см.выше), но…
Да, совсем забыл:
При создании группы выдается сообщение об ошибке:
{Форма.Форма.Форма(2452)}: Поле объекта не обнаружено (ДатаМодификации)
СтрокаСвойства.Значение = ТекущаяСтрока[СтрокаПеречня];
Новая группа все-таки создается, после закрытия окна ошибки.
Эта ошибка — только при первом создании группы (первом после запуска обработки).
При последующих созданиях групп — не проявляется.
(55)
она вообще не откроется в новой версии. И никаких ошибок вы не увидете )
Так где инструкция?
Описание какое-никакое есть, а вот инструкция по возможностям — нет.
Пока кроме как «это учебный материал» плюсов не нашел.
(65)(66) kapustinag, обнобновил обработку:
1. исправил найденный Вами баг,
2. исправил баги в форме импорта.
Теперь о доступности закладок Отбор, Запрос, etc.
Доступность закладок зависит от типа активной строки в дереве обработок:
— при активной группе — доступны закладки «Описание», «Общие обработчики группы»
— при активном пакете — доступны «Описание», «Параметры пакета», «Кэш значений»
— при активном элементе — доступны «Описание», «Отбор», «Запрос», «Обработка», «Параметры элемента».
Ни сколько! (На мой взгляд — каждый найденный синтаксический баг это, как минимум, минус автору обработки (а то и минус самой обработке) и плюс нашедшему.)
Дело в том, что многие, скорее всего, используют данную обработку на уже сформированных ранее файлах. (Кстати — в этом состоит причина появления бага, описанного Вами.) А в этих случаях, как Вы понимаете, многие баги не проявляются.
(67) AlexO,
Согласен — не откроется. Но будет выдано сообщение:
«Ошибка загрузки документа. Внешняя обработка не может быть прочитана текущей версией программы.»
Я не считаю, что здесь необходимо выкладывать более одной версии обработки.
Причины:
1. Обработка написана для программистов и потому любой программист сможет, при необходимости, произвести ее конвертацию.
2. В общем случае потребовалось бы выкладывать более двух версий обработки — на каждую версию платформы, на которой обработки предыдущих версий без конвертации не работают. А так все достаточно просто — версия 8.1 стабильна (потому что не развивается) и далее см. п.1
Вот тут ничего конкретного ответить не могу — на написание инструкции банально не хватает времени. В основном по этой же причине обработка практически не развивается уже около года. Только производятся мелкие доработки и исправление багов.
Обработка в режиме управляемого приложения работоспособна ?
http://infostart.ru/public/198581 ?
как эта
//»Свалил» 1с кодом
Запрос = новый запрос («Выбрать * из справочник.Файлы»);
ВТД(Запрос.Выполнить().Выгрузить());