Экспорт запроса из отладки в консоль запросов

06.10.21

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

Есть множество вариантов, как выгрузить запрос в файл в момент отладки для дальнейшей быстрой загрузки этого файла в консоль запросов (включая временные таблицы). Я просто опишу код, который можно добавить в консоль запросов управляемого приложения, скачанную с сайта ИТС для 8.2 и 8.3. Описание - в самом коде/заголовках процедур. Тестировал на платформе 1С:Предприятие 8.3 (8.3.18.1334). Спасибо за тестирование, объективная критика приветствуется. Спасибо Андрею Габец (прощу прощения, если склонение фамилии сделал неверно). При просмотре его курсов по БСП впервые увидел реализацию выгрузки запроса из отладки. Отдельное спасибо ему за соавторство в написании книги "Профессиональная разработка в системе «1С:Предприятие 8»", по которой я в 2012 начал изучать 1С.

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

Наименование Файл Версия Размер
Консоль запросов управляемого приложения 8.2
.epf 97,42Kb
36
.epf 97,42Kb 36 Скачать бесплатно
Консоль запросов управляемого приложения 8.3
.epf 115,11Kb
121
.epf 115,11Kb 121 Скачать бесплатно

Исходные обработки скачать можно отсюда:

https://its.1c.ru/db/metod8dev/content/4500/hdoc    

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

Список изменений (добавления с префиксом "ЛС"):
1. В "модуль объекта" добавлены следующие процедуры/функции:
    - ЛС_ВыгрузитьЗапросВФайл
    - ЛС_ЗаполнитьПараметр
2. В модуль основной формы обработки добавлены следующие команды:
    - ЛС_ПриСозданииНаСервере
    - ЛС_ПоказатьМетодикуВнедрения
    - ЛС_ЗагрузитьИзОтладки
    - ЛС_ПолучитьФайлССервера
    - ЛС_ВыбратьЗапросыИзФайла
    - ЛС_ОбработкаЧтенияФайла
3. В модуле основной формы в конце процедуры "ПриСозданииНаСервере" добавлен вызов процедуры "ЛС_ПриСозданииНаСервере"
4. В модуле объекта закомментирована исходная функция "ИмяТипаИзЗначения" и задана обновленная(расширил ее)

Больше никаких изменений нет.

Проверялась на консолях запросов для управляемого приложения от 8.2 и 8.3 с сайта ИТС.

После вставки кода в обработки нужно в процедурах/функциях выбрать номер версии:

8.2: ЛС_Версия = 1 
8.3: ЛС_Версия = 2
 

В модуль объекта вставляете вот этот код:

//++ ЛС Усольцев 25.09.2021

//Записываем Запрос во внешний файл временного хранилища с фиксированным названием 
//"FileQueryExport.q1c". Сам файл удалится после прочтения (в модуле формы)
//
//Делаем 2 одинаковых запроса, чтобы можно было вернуться к исходному
//Запросы называются "ИсходныйЗапрос" и "ТекущийЗапрос"
//
//Если в запросе указан менеджер временных таблиц и в нем есть таблицы,
//к которым идет обращение - такие таблицы будут
//выгружены как внешние таблицы значений(добавлены в параметры),
//и в начало запроса будет добавлен код объявления временных таблиц
//Сам код будет обрамлен комментариями:
//АВТОМАТИЧЕСКИ_ФОРМИРУЕМАЯ_ЧАСТЬ_ЗАПРОСА_ИЗ_ВРЕМЕННЫХ_ТАБЛИЦ
//КОНЕЦ АВТОМАТИЧЕСКИ_ФОРМИРУЕМАЯ_ЧАСТЬ_ЗАПРОСА_ИЗ_ВРЕМЕННЫХ_ТАБЛИЦ
//
// Для разных версий консолей внедряется немного по-разному.
//Проверялась на обычных консолях запросов для управляемого приложения от 8.2 и 8.3(те что с сайта ИТС можно скачать)
// (8.2): ЛС_Версия = 1 
// (8.3): ЛС_Версия = 2 
// Параметры:
//  ОбъектЗапроса  - Запрос - Запрос, по который нужно сохрать в файл.
Функция ЛС_ВыгрузитьЗапросВФайл(знач ОбъектЗапроса) Экспорт 
	
	//В старой и новой версии консоли запросов
	//разные процедуры загрузки из файла(различаются подходы)
	
	ЛС_Версия = 2;
		
	ПрефиксЗапроса = "";
	ВременныеТаблицыТЗ = Новый Структура;
	
	Если ОбъектЗапроса.МенеджерВременныхТаблиц <> Неопределено Тогда
		
		ПрефиксЗапроса = ПрефиксЗапроса + "//АВТОМАТИЧЕСКИ_ФОРМИРУЕМАЯ_ЧАСТЬ_ЗАПРОСА_ИЗ_ВРЕМЕННЫХ_ТАБЛИЦ" + Символы.ПС+ Символы.ПС;
		
		ЗапросБезПробелов = СтрЗаменить(ОбъектЗапроса.Текст, Символы.ПС, "");
		ЗапросБезПробелов = СтрЗаменить(ЗапросБезПробелов, Символы.Таб, "");
		ЗапросБезПробелов = СтрЗаменить(ЗапросБезПробелов, " ", "");
		
		Для каждого Таблица Из ОбъектЗапроса.МенеджерВременныхТаблиц.Таблицы Цикл
			
			//Проверка на то что временная таблица используется в текущем запросе
			Если Найти(ЗапросБезПробелов, Таблица.ПолноеИмя+"КАК") = 0 Тогда
				Продолжить;	
			КонецЕсли; 
			
			Данные = Новый ТаблицаЗначений;
			
			РезультатЗапросаВТ = Таблица.ПолучитьДанные();
			
			Для каждого Колонка Из РезультатЗапросаВТ.Колонки Цикл
			
				Данные.Колонки.Добавить(Колонка.Имя, Колонка.ТипЗначения);	
			
			КонецЦикла;
			
			ВыборкаВТ = РезультатЗапросаВТ.Выбрать();
			
			Пока ВыборкаВТ.Следующий() Цикл
			
				ЗаполнитьЗначенияСвойств(Данные.Добавить(), ВыборкаВТ);	
			
			КонецЦикла;
						
			ИмяПараметраТЗ = "ЛСВР_" + Таблица.ПолноеИмя;
			
			ВременныеТаблицыТЗ.Вставить(ИмяПараметраТЗ, Данные);
			
			ПрефиксЗапроса = ПрефиксЗапроса + "ВЫБРАТЬ";
			
			ПервыйПроход = Истина;
			
			Для каждого Колонка Из Данные.Колонки Цикл
				
				Если ПервыйПроход Тогда
					ПервыйПроход = Ложь;	
				Иначе 
					ПрефиксЗапроса = ПрефиксЗапроса + ",";	
				КонецЕсли; 
				
				ПрефиксЗапроса = ПрефиксЗапроса + Символы.ПС + "	Т." + Колонка.Имя + " КАК " + Колонка.Имя;	
				
			КонецЦикла;
			
			ПрефиксЗапроса = ПрефиксЗапроса + Символы.ПС + "ПОМЕСТИТЬ " + Таблица.ПолноеИмя;
			ПрефиксЗапроса = ПрефиксЗапроса + Символы.ПС + "ИЗ";
			ПрефиксЗапроса = ПрефиксЗапроса + Символы.ПС + "	&" + ИмяПараметраТЗ + " КАК Т" + Символы.ПС + ";" + Символы.ПС + Символы.ПС;
			
		КонецЦикла;	
		
		ПрефиксЗапроса = ПрефиксЗапроса + "//КОНЕЦ АВТОМАТИЧЕСКИ_ФОРМИРУЕМАЯ_ЧАСТЬ_ЗАПРОСА_ИЗ_ВРЕМЕННЫХ_ТАБЛИЦ"+ Символы.ПС+ Символы.ПС;
		
	КонецЕсли; 	
	
	ТекстЗапроса = ПрефиксЗапроса + ОбъектЗапроса.Текст;
	
	ДанныеПоЗапросу = Новый Структура;
	
	ДанныеПоЗапросу.Вставить("Параметры", ЭтотОбъект.Параметры.ВыгрузитьКолонки());
	
	ДанныеПоЗапросу.Вставить("Запросы", ЭтотОбъект.Запросы.ВыгрузитьКолонки());
	
	Для НомерЗапроса = 1 По 2 Цикл
		
		НовЗапрос = ДанныеПоЗапросу.Запросы.Добавить();
		
		Если НомерЗапроса = 1 Тогда
			НовЗапрос.Имя = "ТекущийЗапрос";
		Иначе	
			НовЗапрос.Имя = "ИсходныйЗапрос";
		КонецЕсли; 	
		
		НовЗапрос.Текст = ТекстЗапроса;
		
		НовЗапрос.Идентификатор = Новый УникальныйИдентификатор;
		
		Если ЛС_Версия = 1 Тогда
			
			//в старой версии нет реквизита "АдресХранилищаПланаЗапроса"
			
		ИначеЕсли ЛС_Версия = 2 Тогда
			
			НовЗапрос.АдресХранилищаПланаЗапроса = ПоместитьВоВременноеХранилище(Неопределено);
			
		КонецЕсли; 
		
		Для каждого ТекПараметр Из ОбъектЗапроса.Параметры Цикл
			ЛС_ЗаполнитьПараметр(ДанныеПоЗапросу, ТекПараметр, НовЗапрос.Идентификатор);	
		КонецЦикла;
		
		Для каждого ВременнаяТаблицаТЗ Из ВременныеТаблицыТЗ Цикл
			ЛС_ЗаполнитьПараметр(ДанныеПоЗапросу, ВременнаяТаблицаТЗ, НовЗапрос.Идентификатор);	
		КонецЦикла;
		
	КонецЦикла;
	
	ДД = ЗаписатьЗапросыВФайлXML(ДанныеПоЗапросу);
	
	ИмяФайла = КаталогВременныхФайлов() + "FileQueryExport.q1c";
	
	ДД.Записать(ИмяФайла);
	
	Возврат СтрШаблон("Запрос успешно сохранен в файл.%1Теперь в консоли запросов нажмите кнопку ""Загрузить из отладки""", Символы.ПС);
	
КонецФункции // ЛС_ВыгрузитьЗапросВФайл()

// Параметры:
//  ДанныеПоЗапросу  - Структура - Структура, которая повторяет табличные
//						части "Запросы", "Параметры" 
//  Параметр  - КлючЗначение - текущий параметр из коллекции
//  ИдентификаторЗапроса  - УникальныйИдентификатор - Уникальный идентификатор текущего запроса
Процедура ЛС_ЗаполнитьПараметр(ДанныеПоЗапросу, Параметр, ИдентификаторЗапроса)
	
	//приводим значение параметра к тому, которое может записываться обработкой
	Если ТипЗнч(Параметр.Значение) = Тип("Массив") Тогда
		ПараметрЗначение = Новый СписокЗначений;
		ПараметрЗначение.ЗагрузитьЗначения(Параметр.Значение);
	Иначе 	
		ПараметрЗначение = Параметр.Значение;
	КонецЕсли; 
	
	НовПараметр = ДанныеПоЗапросу.Параметры.Добавить();
	НовПараметр.Значение = ЗначениеВСтрокуВнутр(ПараметрЗначение);
	НовПараметр.Идентификатор = Новый УникальныйИдентификатор;
	НовПараметр.ИдентификаторЗапроса = ИдентификаторЗапроса;
	НовПараметр.Имя = Параметр.Ключ;
	
	НовПараметр.Тип = ИмяТипаИзЗначения(ПараметрЗначение);
	
КонецПроцедуры // ЛС_ЗаполнитьПараметр()

//Переопределяемая функция
//исходную нужно закомментировать
Функция ИмяТипаИзЗначения(Значение) Экспорт
	
	Если ТипЗнч(Значение) = Тип("Строка") Тогда
		ИмяТипа = "Строка";
	ИначеЕсли ТипЗнч(Значение) = Тип("Число") Тогда
		ИмяТипа = "Число";
	ИначеЕсли ТипЗнч(Значение) = Тип("Булево") Тогда
		ИмяТипа = "Булево";
	ИначеЕсли ТипЗнч(Значение) = Тип("Дата") Тогда
		ИмяТипа = "Дата";
	ИначеЕсли ТипЗнч(Значение) = Тип("МоментВремени") Тогда
		ИмяТипа = "МоментВремени";
	ИначеЕсли ТипЗнч(Значение) = Тип("Неопределено") Тогда
		ИмяТипа = "Строка";
	ИначеЕсли ТипЗнч(Значение) = Тип("ФиксированныйМассив") Тогда
		ИмяТипа = "ФиксированныйМассив";
	ИначеЕсли ТипЗнч(Значение) = Тип("ТаблицаЗначений") Тогда
		ИмяТипа = "ТаблицаЗначений";
	ИначеЕсли ТипЗнч(Значение) = Тип("Граница") Тогда
		ИмяТипа = "Граница";
	ИначеЕсли ТипЗнч(Значение) = Тип("СписокЗначений") Тогда
		ИмяТипа = "СписокЗначений";
	ИначеЕсли ТипЗнч(Значение) = Тип("ВидДвиженияНакопления") Тогда
		ИмяТипа = "ВидДвиженияНакопления";
	ИначеЕсли ТипЗнч(Значение) = Тип("ВидДвиженияБухгалтерии") Тогда
		ИмяТипа = "ВидДвиженияБухгалтерии";
	Иначе
		ИмяТипа = xmlТип(ТипЗнч(Значение)).ИмяТипа;
	КонецЕсли;
	
	Возврат ИмяТипа;
	
КонецФункции

//-- ЛС Усольцев 25.09.2021

 

В модуль основной формы вот этот код:

 

//++ ЛС Усольцев 25.09.2021

&НаСервере
Процедура ЛС_ПриСозданииНаСервере()

	МассивДобавляемыхРеквизитов = Новый Массив; 
	МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("ЛС_ТекстДляВычисления", Новый ОписаниеТипов("Строка"))); 
	ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
	
	ЛС_ИмяФайла = РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла;
	
	ЭтаФорма.ЛС_ТекстДляВычисления = СтрШаблон("ВнешниеОбработки.Создать(""%1"",Ложь).ЛС_ВыгрузитьЗапросВФайл(Запрос)", ЛС_ИмяФайла);
	
	ЛС_Группа1 = Элементы.Добавить("ЛС_Группа1", Тип("ГруппаФормы"));
	ЛС_Группа1.Вид = ВидГруппыФормы.ОбычнаяГруппа;
	ЛС_Группа1.Заголовок = "(ЛС) Получение запроса из отладки";
	ЛС_Группа1.Отображение = ОтображениеОбычнойГруппы.Нет;
	ЛС_Группа1.ОтображениеУправления = ОтображениеУправленияОбычнойГруппы.Картинка;
	ЛС_Группа1.Поведение = ПоведениеОбычнойГруппы.Свертываемая;
	ЛС_Группа1.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда;
	ЛС_Группа1.Скрыть();
		
	ЛС_Надпись1 = Элементы.Добавить("ТА_Декорация1", Тип("ДекорацияФормы"), ЛС_Группа1);
	ЛС_Надпись1.Вид = ВидДекорацииФормы.Надпись;
	ЛС_Надпись1.Заголовок = 
	"1. Самое главное, чтобы обработка была доступна серверу 1С. Для этого нужно открывать ее либо на сервере 1С(как локальный файл),
	|либо положить в общую папку. И только после этого переходить к следующим пунктам.
	|2. Скопируйте текст справа(начинается ""ВнешниеОбработки.Создать("").
	|3. Откройте конфигуратор. Запустите процедуру в отладке и поставьте точку останова на моменте выполнение запроса (Запрос.Выполнить())
	|4. Убедитесь что у вас не работает ""Безопасный режим"". Для этого Нажмите Shift + F9, в поле ""Выражение"" введите текст ""БезопасныйРежим()"" и нажмите ""Рассчитать"".
	|В таблице ""Результат"" в колонке ""Значение"" должно быть Ложь. Если у вас ""Значение"" = Истина, значит смотрите в интернете как
	|отключить безопасный режим для вашего пользователя. Дальнейшие действия возможны только при отключенном безопасном режиме.
	|5. Нажмите Shift + F9. Вставьте из буфера(Ctrl + V) в поле ""Выражение"", укажите переменную содержащую сам запрос(если у вас он называется
	|Запрос1, то в поле выражение замените единственный параметр с ""Запрос"" на ""Запрос1"") и нажмите ""Рассчитать"".
	|6. Вернитесь в консоль запросов и нажмите кнопку ""Загрузить из отладки""(при загрузке файл, содержащий выгрузку из запроса удалится из временных файлов)
	|7. У вас заполнится консоль из выгруженного ранее файла.
	|Временные таблицы, используемые этим запросом реализованы через таблицы значений
	|и выделены специальным комментарием:
	|//АВТОМАТИЧЕСКИ_ФОРМИРУЕМАЯ_ЧАСТЬ_ЗАПРОСА_ИЗ_ВРЕМЕННЫХ_ТАБЛИЦ
	|//КОНЕЦ АВТОМАТИЧЕСКИ_ФОРМИРУЕМАЯ_ЧАСТЬ_ЗАПРОСА_ИЗ_ВРЕМЕННЫХ_ТАБЛИЦ";
	
	ЛС_Группа2 = Элементы.Добавить("ЛС_Группа2", Тип("ГруппаФормы"), ЛС_Группа1);
	ЛС_Группа2.Вид = ВидГруппыФормы.ОбычнаяГруппа;
	ЛС_Группа2.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
	ЛС_Группа2.Отображение = ОтображениеОбычнойГруппы.Нет;
	
	ЛС_ТекстДляВычисления = Элементы.Добавить("ЛС_ТекстДляВычисления", Тип("ПолеФормы"), ЛС_Группа2);
	ЛС_ТекстДляВычисления.Вид = ВидПоляФормы.ПолеВвода;
	ЛС_ТекстДляВычисления.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
	ЛС_ТекстДляВычисления.ПутьКДанным = "ЛС_ТекстДляВычисления";
	ЛС_ТекстДляВычисления.ТолькоПросмотр = Истина;
	
	ЛС_ЗагрузитьИзОтладки = ЭтаФорма.Команды.Добавить("ЛС_ЗагрузитьИзОтладки");
	ЛС_ЗагрузитьИзОтладки.Действие = "ЛС_ЗагрузитьИзОтладки";
	ЛС_ЗагрузитьИзОтладки.Заголовок = "Загрузить из отладки";

	Элемент = ЭтаФорма.Элементы.Добавить("ЛС_ЗагрузитьИзОтладки", Тип("КнопкаФормы"), ЛС_Группа2);
	Элемент.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
	Элемент.ИмяКоманды = "ЛС_ЗагрузитьИзОтладки";
	
	ЛС_ЗагрузитьИзОтладки = ЭтаФорма.Команды.Добавить("ЛС_ПоказатьМетодикуВнедрения");
	ЛС_ЗагрузитьИзОтладки.Действие = "ЛС_ПоказатьМетодикуВнедрения";
	ЛС_ЗагрузитьИзОтладки.Заголовок = "Показать методику внедрения";

	Элемент = ЭтаФорма.Элементы.Добавить("ЛС_ПоказатьМетодикуВнедрения", Тип("КнопкаФормы"), ЛС_Группа2);
	Элемент.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
	Элемент.ИмяКоманды = "ЛС_ПоказатьМетодикуВнедрения";
	
КонецПроцедуры

&НаКлиенте
Процедура ЛС_ПоказатьМетодикуВнедрения(Команда)

	ТекстСообщения = "
	|Все реквизиты/команды реализованы программным методом, поэтому теоретически можно добавить возможность в любую консоль запросов на управляемых формах.
	|
	|Список изменений(добавления с префиксом ""ЛС""):
	|1. В ""модуль объекта"" добавлены следующие процедуры/функции:
	|	- ЛС_ВыгрузитьЗапросВФайл
	|	- ЛС_ЗаполнитьПараметр
	|2. В модуль основной формы обработки добавлены следующие команды:
	|	- ЛС_ПриСозданииНаСервере
	|	- ЛС_ПоказатьМетодикуВнедрения
	|	- ЛС_ЗагрузитьИзОтладки
	|	- ЛС_ПолучитьФайлССервера
	|	- ЛС_ВыбратьЗапросыИзФайла
	|	- ЛС_ОбработкаЧтенияФайла
	|3. В модуле основной формы в конце процедуры ""ПриСозданииНаСервере"" добавлен вызов процедуры ""ЛС_ПриСозданииНаСервере""
	|4. В модуле объекта закомментирована исходная функция ""ИмяТипаИзЗначения"" и задана обновленная(расширил ее)
	|
	|Больше никаких изменений нет
	|
	|Проверялась на консолях запросов для управляемого приложения от 8.2 и 8.3 с сайта ИТС.
	|После вставки кода в обработки нужно в процедурах/функциях выбрать номер версии:
	|
	|8.2: ЛС_Версия = 1 
	|8.3: ЛС_Версия = 2"; 
	
	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = ТекстСообщения;
	Сообщение.Сообщить();

КонецПроцедуры // ЛС_ПоказатьМетодикуВнедрения()
 
&НаКлиенте
Процедура ЛС_ЗагрузитьИзОтладки(Команда)
	
	//В старой и новой версии консоли запросов
	//разные процедуры загрузки из файла(различаются подходы)
	
	ЛС_Версия = 2;
	
	Если ЛС_Версия = 1 Тогда
		
		ЛС_ВыбратьЗапросыИзФайла();
		
	ИначеЕсли ЛС_Версия = 2 Тогда
		
		ДанныеССевера = ЛС_ПолучитьФайлССервера();	
		
		Выполнить("ПомещениеФайловЗавершение(ДанныеССевера.Результат, ДанныеССевера.ДополнительныеПараметры)");
		
	КонецЕсли; 
	
КонецПроцедуры // ЛС_ЗагрузитьИзОтладки()

&НаСервереБезКонтекста
Функция ЛС_ПолучитьФайлССервера()

	ЛС_КраткоеИмяФайла = "FileQueryExport.q1c";
	ЛС_ИмяФайла = КаталогВременныхФайлов() + ЛС_КраткоеИмяФайла;
	
	ДД = Новый ДвоичныеДанные(ЛС_ИмяФайла);
	
	УдалитьФайлы(ЛС_ИмяФайла);
	
	ЛС_ИдентификаторФайла = Новый УникальныйИдентификатор;
	
	ЛС_АдресФайла = ПоместитьВоВременноеХранилище(ДД, ЛС_ИдентификаторФайла);
	
	ЛС_ОписаниеФайла = Новый Структура;
	ЛС_ОписаниеФайла.Вставить("Имя", ЛС_КраткоеИмяФайла);
	ЛС_ОписаниеФайла.Вставить("ИдентификаторФайла", ЛС_ИдентификаторФайла);
	ЛС_ОписаниеФайла.Вставить("ПолноеИмя", ЛС_ИмяФайла);
	ЛС_ОписаниеФайла.Вставить("Хранение", ЛС_АдресФайла);
	
	ЛС_Результат = Новый Массив;
	ЛС_Результат.Добавить(ЛС_ОписаниеФайла);
		
	ДанныеССевера = Новый Структура;
	ДанныеССевера.Вставить("Результат", ЛС_Результат);
	ДанныеССевера.Вставить("ДополнительныеПараметры", Новый Структура("Удалять",Истина));

	Возврат ДанныеССевера;
	
КонецФункции // ЛС_ПолучитьФайлССервера()

&НаКлиенте
Процедура ЛС_ВыбратьЗапросыИзФайла()

	ЛС_ОбработкаЧтенияФайла();
	
	КоличествоЗапросов = Объект.Запросы.Количество();
	Если КоличествоЗапросов > 0 Тогда 
		ИдентификаторТекущегоЗапроса 	= Объект.Запросы.Получить(0).Идентификатор;
		Модифицированность				= Ложь;
	Иначе
		Элемент 						= Объект.Запросы.Добавить();
		ИдентификаторТекущегоЗапроса	= Новый УникальныйИдентификатор;
		Элемент.Идентификатор  			= ИдентификаторТекущегоЗапроса;
		Элемент.Имя						= ИмяЗапросаПоУмолчанию;
		Результат						= Новый ТабличныйДокумент;
	КонецЕсли;	
	
	ОбновитьФормуКлиент();

КонецПроцедуры // ЛС_ВыбратьЗапросыИзФайла()

&НаКлиенте
Процедура ЛС_ОбработкаЧтенияФайла()
	
	Объект.Запросы.Очистить();
	Объект.Параметры.Очистить();
	
	ДанныеССевера = ЛС_ПолучитьФайлССервера();	
	
	ДвоичныеДанные = ПолучитьИзВременногоХранилища(ДанныеССевера.Результат[0].Хранение);
	
	ЗагрузитьЗапросыИзФайла(ДвоичныеДанные);
	Объект.ИмяФайла = ДанныеССевера.Результат[0].ПолноеИмя;

КонецПроцедуры // ЛС_ОбработкаЧтенияФайла()

//-- ЛС Усольцев 25.09.2021

 

И в модуле объекта и в модуле формы есть объявление переменной:

	ЛС_Версия = 2;

Вот с этим очень внимательно!

Повторюсь, что:

    ЛС_Версия = 1 это для консоли 8.2

    ЛС_Версия = 2 это для консоли 8.3

 

Прилагаю обработки, в коде мои вставки обрамляются комментариями:

//++ ЛС Усольцев

//-- ЛС Усольцев

 

Дополнение от 06.10.2021:

- В "Консоль запросов управляемого приложения 8.3" в модуле объекта обработки в функции "ВывестиРезультатОдногоЗапроса" закомментировал строчку:

	//КоличествоСтрок = РезультатЗапроса.Количество(); // ЛС Усольцев 06.10.2021 "ошибка при выполнении Итоги ПО"

Причина: ошибка при работе конструкции "ИТОГИ ПО".

Описание ошибки:

Метод объекта не обнаружен (Количество

P.S. ошибка не связана с моими доработками.

Можно скачать с сайта ИТС чистую консоль и выполнить в ней такой запрос:

ВЫБРАТЬ
	Валюты.Ссылка КАК Ссылка
ИЗ
	Справочник.Валюты КАК Валюты
ИТОГИ ПО
	Ссылка

В результате получить соответствующую ошибку.

Это актуально на 06.10.2021

консоль запросов запрос в отладке

См. также

SALE! 20%

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

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

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

13000 10400 руб.

02.09.2020    121545    670    389    

709

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7252    21    6    

39

SALE! 20%

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

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

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

10000 8000 руб.

10.11.2023    3490    11    1    

33

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177716    1073    0    

848

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

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

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

5000 руб.

07.02.2018    99330    239    97    

296

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

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

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

3000 руб.

27.08.2019    18095    6    8    

39

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

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

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

2040 руб.

27.12.2017    28080    3    10    

14

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

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

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

2400 руб.

24.09.2019    23590    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Rootking2010 27.09.21 09:57 Сейчас в теме
При нажатие на кнопку "Загрузить из отладки" появляется ошибка:
Тип не определен (AccumulationMovementType)
{ВнешняяОбработка.КонсольЗапросов.МодульОбъекта(387)}: ТипЭлемента = Тип(ФайлXML.Значение);
{ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма(1539)}: ОбъектВнешнейОбработки = ОбъектОбработки().ПрочитатьЗапросыИзФайлаXML(ДвоичныеДанные);
{ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма(1511)}: ЗагрузитьЗапросыИзФайла(Результат[0].Хранение);
{(1)}:ПомещениеФайловЗавершение(ДанныеССевера.Результат, ДанныеССевера.ДополнительныеПараметры)
{ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма(2436)}: Выполнить("ПомещениеФайловЗавершение(ДанныеССевера.Результат, ДанныеССевера.ДополнительныеПараметры)");
2. prohorp 33 27.09.21 12:09 Сейчас в теме
(1)Отправьте мне по почту файл, который у вас сохранился:

Он находится в каталоге временных файлов с названием FileQueryExport.q1c

поя почта "upv@940000.ru"
3. prohorp 33 27.09.21 12:43 Сейчас в теме
(2)Исправил. Обработки обновил. Исправил описание процедур в самой теме.
4. prohorp 33 27.09.21 18:51 Сейчас в теме
(3) Спасибо за тестирование!
Rootking2010; +1 Ответить
5. gmkushkunov 30.09.21 13:46 Сейчас в теме
Добрый день! При вставке скопированного текста из обработки в конфигуратор в поле Выражение происходит зависание и сам текст в поле не появляется. Приходится через диспетчер задач снимать задачу. (1С:Предприятие 8.3 (8.3.19.1264))
6. gmkushkunov 30.09.21 14:19 Сейчас в теме
(5) Странно, после нескольких не удачных попыток (штук 5 и завершениями задач через диспетчер задач) вдруг начало работать. Будем считать ложная тревога.
7. prohorp 33 01.10.21 04:13 Сейчас в теме
(6) Проблемы стабильности работы обычно в платформе. Попробуйте сменить платформу. Спасибо за тест!
8. prohorp 33 01.10.21 08:13 Сейчас в теме
(6) Проблемы стабильности работы обычно в платформе. Попробуйте сменить платформу. Спасибо за тест!
(5)Или у вас были очень большие временные таблицы, которые выгружались в файл.
Больше ничего в голову не приходит, т.к. операция сохранения в файл легкая(использована из самой консоли запросов)
На тот случай, если у вас действительно огромные временные таблицы - сделал их выгрузку через Выборка.Следующий(), а не через Выгрузить(). Публикацию и обработки обновил.
9. prohorp 33 01.10.21 08:40 Сейчас в теме
15. prohorp 33 19.01.22 05:14 Сейчас в теме
(5)Это ошибка платформы. На текущий момент она не исправлена - обращение в техподержку зарегистрировал. Платформа зависнет, если вы любой текст из сеанса скопируете и попытаетесь его либо вычислить в отладке, либо просто попытаться вставить в текст модуля.
10. DrAku1a 1679 09.10.21 19:07 Сейчас в теме
11. prohorp 33 11.10.21 03:01 Сейчас в теме
(10)Да, ловко у вас сделано)
12. prohorp 33 11.10.21 19:02 Сейчас в теме
(10) Не придираюсь, но как у вас существующие временные таблицы переносятся (созданные до выполнения текущего запроса, и используемые текущим запросом) ?
13. tormozit 7136 11.10.21 19:48 Сейчас в теме
(12) Такой способ этого не подразумевает.
14. DrAku1a 1679 12.10.21 08:40 Сейчас в теме
(12) Для такого уже нужно использовать модуль обработки и выгрузку делать через файл. Это тоже реализовано (в том-же диалоге "Открыть из отладчика"), скриншоты прилагаю.

В практике - интереснее изучать как формируются эти самые временные таблицы, т.е. выгрузить весь пакет запросов, даже если он формируется по частям. Это сложная задача. Вручную её решал в предыдущей версии отладчика (на обычных формах).
Прикрепленные файлы:
16. ZhokhovM 724 27.03.23 14:31 Сейчас в теме
Оставьте свое сообщение