порядок вариантов сохранения в меню "сохранить как"

Автор ЯнСмит, 24 ноября 2025, 22:47

« назад - далее »

ЯнСмит

Штатно при сохранении в файл печатной формы первым предлагается "родной" формат .mxl, а хотелось бы чтобы первым был excel (.xls / .xlxs), возможно ли?

Злоп

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

Ветер в поле

В глобальном модуле расположить предопределенную процедуру и посмотреть какой код у команды сохранить. Потом перехватывать эту команду и свой диалог предлагать.
Вот пример как я перехватываю команду Помощь
Процедура ПриПолученииКомандыГлавнымОкном(Команда, НулевойПараметр, ФСО) //предопределенная FormEx
	
	Если Команда = 57670 Тогда // нажата F1
		ФСО = 0; 
		Возврат; 
	КонецЕсли;
	
КонецПроцедуры //ПриПолученииКомандыГлавнымОкном

Харлампий Дымба

Ну так-то тогда ничто не мешает просто в Меню - Файл добавить отдельный пункт меню для своего диалога. Как раз он тогда непосредственно за  "Сохранить как" будет. Делал так с "Быстрым сохранением в Yoksel"

Злоп

Цитата: Ветер в поле от 26 ноября 2025, 13:01В глобальном модуле расположить предопределенную процедуру и посмотреть какой код у команды сохранить.

ну дык я и предложил так...

Ветер в поле


ЯнСмит

Спасибо коллеги, я подозревал, что нужно копать в сторону Formex'а, но увы, не настолько хорошо с ним знаком

Злоп

Можно формексовскую глобальную
ПриЗаписиТаблицы()
перекидываем входящую в табличный документ Йокселя и сохраняем как xlsx

АЛьФ

Цитата: Злоп от 27 ноября 2025, 22:47Можно формексовскую глобальную
ПриЗаписиТаблицы()
перекидываем входящую в табличный документ Йокселя и сохраняем как xlsx

Для примера. У меня вот так реализован обход глюка сохранения больших таблиц:

Процедура ПриЗаписиТаблицы(КонтТаб, ИмяФайла, ФорматФайла, СтандартнаяОбработка)
	Если ФорматФайла = 1 Тогда // xls
	//	Если КонтТаб.ВысотаТаблицы() > 100 Тогда
		СтандартнаяОбработка = 0;
		ТабличныйДокумент = СоздатьОбъект("ТабличныйДокумент");
		ТабличныйДокумент.ЗагрузитьИзТаблицы(КонтТаб);
		ТабличныйДокумент.Записать(ИмяФайла,"xls");
	//	КонецЕсли;
	КонецЕсли;
КонецПроцедуры

ЯнСмит

Цитата: Злоп от 27 ноября 2025, 22:47Можно формексовскую глобальную ПриЗаписиТаблицы()
перекидываем входящую в табличный документ Йокселя и сохраняем как xlsx
так не совсем годится, данная процедура вызывается уже после диалога выбора способа записи, мне же нужно подменить начальный диалог, чтобы формат по умолчанию был не .mxl, а .xlx ... в идеале оставить только два .xlx и .pdf

ЯнСмит

Цитата: Ветер в поле от 26 ноября 2025, 13:01В глобальном модуле расположить предопределенную процедуру и посмотреть какой код у команды сохранить. Потом перехватывать эту команду и свой диалог предлагать.
хм ... не очень ясно как получить внешний контекст, то бишь саму сохраняемую таблицу, разве что через выгрузку в глобальную таблицу, но как то это ну совсем не кошерно :'(

item

Как много нам открытий чудных готовит просвещенья век...

item

Сервис,АктивныйКонтекс(Конт, Заголовок)
Читает формы, таблицы и тексты,
Не читает константы, историю и календари

Злоп

Цитата: АЛьФ от Вчера в 13:01
Цитата: Злоп от 27 ноября 2025, 22:47Можно формексовскую глобальную
ПриЗаписиТаблицы()
перекидываем входящую в табличный документ Йокселя и сохраняем как xlsx

Для примера. У меня вот так реализован обход глюка сохранения больших таблиц:

Процедура ПриЗаписиТаблицы(КонтТаб, ИмяФайла, ФорматФайла, СтандартнаяОбработка)
	Если ФорматФайла = 1 Тогда // xls
	//	Если КонтТаб.ВысотаТаблицы() > 100 Тогда
		СтандартнаяОбработка = 0;
		ТабличныйДокумент = СоздатьОбъект("ТабличныйДокумент");
		ТабличныйДокумент.ЗагрузитьИзТаблицы(КонтТаб);
		ТабличныйДокумент.Записать(ИмяФайла,"xls");
	//	КонецЕсли;
	КонецЕсли;
КонецПроцедуры

В каркасной конфигурации у меня тоже практически так

ЯнСмит

Спасибо всем, получилось, только сейчас понял насколько Альф молодец =))