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

06.10.21

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
Консоль запросов управляемого приложения 8.2
.epf 97,42Kb
38
38 Скачать бесплатно
Консоль запросов управляемого приложения 8.3
.epf 115,11Kb
129
129 Скачать бесплатно

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

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! 15%

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

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

10000 руб.

02.09.2020    160155    882    399    

866

SALE! 15%

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    8073    60    28    

70

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

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

9360 руб.

17.05.2024    23625    69    45    

117

SALE! 15%

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

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

22200 19980 руб.

06.10.2023    15498    36    7    

71

SALE! 15%

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

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

10000 8500 руб.

10.11.2023    10535    37    27    

62

SALE! 35%

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

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

4800 3120 руб.

14.01.2013    188187    1141    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17363    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7755    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 1745 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 7233 11.10.21 19:48 Сейчас в теме
(12) Такой способ этого не подразумевает.
14. DrAku1a 1745 12.10.21 08:40 Сейчас в теме
(12) Для такого уже нужно использовать модуль обработки и выгрузку делать через файл. Это тоже реализовано (в том-же диалоге "Открыть из отладчика"), скриншоты прилагаю.

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