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

Публикация № 1522855 27.09.21

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

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

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

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

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

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

Наименование Файл Версия Размер
Консоль запросов управляемого приложения 8.2

.epf 97,42Kb
30
.epf 97,42Kb 30 Скачать бесплатно
Консоль запросов управляемого приложения 8.3

.epf 115,11Kb
102
.epf 115,11Kb 102 Скачать бесплатно

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

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

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

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

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

См. также

Настройка состава "Истории данных"

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

Обработка позволяет настраивать состав платформенной "Истории данных".

14.02.2023    3649    203    dsdred    16    

67

Отладка временных таблиц и типа ТаблицаЗначений

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

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

01.02.2023    4127    109    biimmap    22    

46

Быстрый неблокирующий поиск в конфигураторе

Инструментарий разработчика Платформа 1С v8.3 Платформа 1C v8.2 Россия Бесплатно (free)

Описание решения по быстрому неблокирующему глобальному поиску в текстах конфигурации. Используется Total Commander и небольшая программа Everything, индексирующая поиск по файлам.

29.09.2022    2592    3    Serg2000mr    6    

5

Улучшайзер - как одна внешняя обработка может улучшать другие внешние обработки

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

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

08.07.2022    5049    86    delta    2    

21

Генератор текста запроса

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

Простой инструмент для быстрой подготовки данных для демонстрации.

20.05.2022    5364    157    echo77    4    

64

Редактор кода (расширение)

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

Редактор кода для управляемых форм с подсказками и подсветкой синтаксиса.

05.05.2022    6701    338    33lab    12    

83

Исполнитель команд (ОФ)

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

Обработка позволяет выполнять команды, написанные на языке 1С.

09.03.2022    3326    29    kozusenok    0    

4

Инструмент тестирования бухгалтерских движений в 1С

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

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

05.03.2022    3251    49    e9504100606    0    

7

Создание предопределенных элементов из существующих ссылок

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

Обработка для создания предопределенного элемента из существующей ранее ссылки для удобного обращения к ней в коде.

09.01.2022    4152    96    AtamanovYS    2    

6

Открывашка общих форм

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

Внешняя обработка на управляемых формах для открытия общих форм конфигурации.

14.12.2021    4869    100    frkbvfnjh    0    

19

Коллекция универсальных обработок

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

Коллекция универсальных обработок, которые могут облегчить жизнь разработчику.

02.12.2021    10250    1011    user1051565    26    

101

Я у мамы декоратор...

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

Пример реализации общей функциональности для в 1С, похож на Декоратор, но реализован на уровне модулей. Может пригодиться разработчикам. Тестировалось на 1С:Предприятие 8.3 (8.3.19.1264).

15.11.2021    4360    19    markivkin    3    

6

OneS Cluster Admin - консоль администрирования кластера серверов 1С (кроссплатформенная, мультиверсионная)

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

OneS Cluster Admin (консоль администрирования кластера серверов 1С) - создана для того, что бы избавиться от недостатков классической консоли администрирования, а также привнести некоторые удобные фичи.

10.09.2021    12862    411    YanSergey    64    

139

Шаблон дополнительной обработки, работающей по расписанию

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

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

02.08.2021    7474    148    Shvapsss    6    

18

Структура хранения БД в виде дерева конфигурации

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

Структура БД конфигурации в очень похожем виде, как в самом конфигураторе.

20.04.2021    9752    297    JIEX@    2    

39

Работа с кодом и его выполнение в режиме 1С: Предприятие (обычные формы)

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

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

11.03.2021    8054    227    Nik_Name    8    

12

Микро сервис для работы с запросами SQL

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

Альтернатива COM соединению с SQL базой, обработка запроса.

13.12.2020    9728    57    ivan1703    14    

32

Графит. Правщик 1С морд от kuzkov.info.2

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

Вторая часть записок о разработке программы Графит, векторного правщика для быстрого рисования 1С морд. Обзор сделанного в виде текста описания, гифках и приложенных svg файлах для пощелкать в обозревателе.

02.12.2020    7186    18    Steelvan    6    

11

Быстрый старт

Инструментарий разработчика Платформа 1С v8.3 Платформа 1C v8.2 Бесплатно (free)

Создание баз данных 1С, любое количество, из файлов dt и cf в один клик

18.11.2020    5896    52    vova-1c    8    

7

DaJet Studio: расширенный язык запросов 1С, очереди сообщений и web сервисы

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

DaJet Studio - разработка и управление скриптами, хранимыми процедурами и функциями, написанными на расширенном языке запросов 1С, а также очередями сообщений и web сервисами, основанными на использовании Microsoft SQL Server.

10.11.2020    12651    126    zhichkin    14    

25

Консоль HTTP запросов

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

Простая консоль для отправки и тестирования HTTP запросов и WEB сервисов. Есть функция сохранения в файл. 

05.10.2020    12167    581    zarankony    5    

45

Файл тестов для xUnitFor1C: тестирование проведения документов

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

Тестирование проведения документов. Проверяется, что: а) документ проводится; б) движения документа после перепроведения не изменились.

30.06.2020    11111    55    q_i    16    

25

Нейроконструктор

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

Изучайте нейронные сети и экспериментируйте вместе с расширением конфигурации "Нейроконструктор". Навыки программирования не требуются.

20.05.2020    20915    273    user1404129    26    

121

Загрузка, редактирование и установка цветовых схем (раскраски кода) в Конфигуратор и EDT

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

В современных IDE и текстовых редакторах есть удобная работа с цветовыми схемами: их можно загружать из файлов, выбирать из списка и сразу устанавливать в оболочку. К сожалению, в Конфигураторе и EDT цвета кода можно настроить только вручную. Этой разработкой хочу исправить эту проблему.

14.05.2020    25151    1194    CyberCerber    48    

159

Универсальные инструменты 1С

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

Свободно распространяемый набор универсальных обработок и отчетов в виде расширения для разработки и поддержки, которое работает во ВСЕХ видах клиентских приложений и во всех операционных системах, которые поддерживает платформа 1С:Предприятие, кроме мобильных. Консоль запросов - консоль отчетов - консоль кода - редактор объектов базы данных - удаление помеченных объектов - поиск и удаление дублей - редактор констант - консоль заданий - групповая обработка справочников и документов - динамический список - поиск ссылок на объект - регистрация изменений для обмена данными - структура хранения базы - консоль HTTP запросов-консоль вебсервисов- консоль сравнения данных- информация о лицензиях- загрузка из табличного документа-файловый менеджер-все функции- навигатор по конфигурации-конструктор регулярных выражений-Выгрузка загрузка XML с фильтрами

21.01.2020    78719    7717    cprit    219    

656

Шаблон теста правил регистрации

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

Шаблон на базе, которого можно написать тест правил регистрации. Тесты запускаются с использованием инструмента xddTestRunner framework Vanessa-ADD.

26.07.2019    8276    6    milut    0    

3

Консоль запросов EX (внешние данные)

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

Работа с внешними данными в консоли запросов (1С 7.7, 8.x, XBase, Excel, ADO).

30.10.2016    15331    99    Cерый    0    

17

Генерация кода управляемой формы (декомпиляция элементов)

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

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

29.09.2014    130436    10396    ekaruk    150    

653

Просмотр SQL-таблиц из 1С. Возможность очистки таблиц

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

Обработка позволяет соединиться с SQL-сервером (SQL-авторизация), получить список баз на сервере, после выбора базы - получить список таблиц. Позволяет вывести таблицу на просмотр, при необходимости очистить таблицу средствами SQL (delete from), просмотреть соответствие имен таблиц объектам конфигурации, в которой запущена база

29.08.2014    28628    524    Abadonna    4    

27

PARAM. Карта разума и 1С Предприятие 8

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

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

01.10.2013    26622    14    knight2007    10    

12

Native ВК для 1CV8: независимое чтение файлов *.xls и *.xlsx

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

Не требует установленного в системе Microsoft Office (Excel) и Open Office. Технология Native, не требует регистрации в реестре

15.08.2013    40998    416    Abadonna    143    

156

V8 FORMATTER: Расширенная версия

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

Форматирование кода модуля одним хот-кеем, ввод "неудобных" символов без переключения раскладки.

22.07.2013    25473    205    Abadonna    124    

79

Информация по реквизитам объекта метаданных на полную глубину

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

Дерево реквизитов объектов метаданных. На всю глубину (т.е. смотрит реквизиты у реквизитов).

10.06.2011    19682    192    kosmo0    3    

24

Обработка поиска дублей кода. Исходного кода модулей 1С

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

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

12.04.2011    12498    217    bk-81    37    

50

Помощник для написания запроса в тонком клиенте

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

Обработка дает возможность писать в тонком клиенте текст запроса не вручную, а перетаскивая имена таблиц, полей и конструкции языка запроса мышью.

01.04.2011    23308    328    boln    14    

51

Проверка печатных форм

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

Обработка для обнаружения ошибок при выводе печатной формы и сравнения печатной формы с эталоном.

22.03.2011    13442    56    afedorov    1    

4

Порядок объекта

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

Попытка избавиться от "Порядок объекта изменен"

09.02.2011    10004    52        2    

5

Запись текста модуля ert-файла из текстового файла

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

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

02.12.2010    27818    152    Abadonna    40    

52