Делёжка опытом

Автор ADirks, 09 апреля 2024, 12:22

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

ADirks

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

У объекта РасширениеФормы есть свойство Иконка - если его прописать, то эта иконка отображается в панели окон, получается симпатишно.

Например так:
//в ГМ
Процедура ПослеСозданияФормы(Конт) Экспорт
   Попытка
      фф = Конт.Форма;
   Исключение
      Возврат;
   КонецПопытки;
   
   _оФорма = СоздатьОбъект("РасширениеФормы");
   _оФорма.УстановитьФорму(Конт.Форма);

   Тип = _оФорма.ПолныйТипОбъекта();

   Если Тип = "ВнешнийОтчет" Тогда
      //ИмяФайла.ert
      Имя = "";
      Конт.РасположениеФайла(, Имя);
      сзЧасти = СтрокуВСписок(Имя, ".", 1);
      Имя = сзЧасти.ПолучитьЗначение(1);
   Иначе
      сзТип = СтрокуВСписок(Тип, ".");
      Если сзТип.РазмерСписка() < 2 Тогда
         Возврат;
      КонецЕсли;
      
      Тип1 = сзТип.ПолучитьЗначение(1);
      Имя = "";
      Если (Тип1 = "Обработка") ИЛИ (Тип1 = "Отчет") Тогда
         Имя = сзТип.ПолучитьЗначение(2);
      КонецЕсли;
   КонецЕсли;

   
   Путь = КаталогИБ()+"Images\Icons\"+Имя+".ico";
   Если ФС.СуществуетФайл(Путь) <> 1 Тогда
      ИмяИконки = сзИконкиФорм.Получить(Имя);
      Путь = КаталогИБ()+"Images\Icons\"+ИмяИконки+".ico";
   КонецЕсли;
   
   Если ФС.СуществуетФайл(Путь) = 1 Тогда
      _оФорма.Иконка = Путь;
   КонецЕсли;
КонецПроцедуры


Пиит

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

alyuev

Хм... А у меня почти не получилось. Из трех внешних обработок иконка показалась только для одной. Иконки выдирал из Imagecol.bmp.

alyuev

Иконки рабочие. Проверил на той обработке, где показывает. Менял на другие иконки - показывает. Интересно, что может мешать?

ADirks

Цитата: alyuev от 09 апреля 2024, 13:58Хм... А у меня почти не получилось. Из трех внешних обработок иконка показалась только для одной. Иконки выдирал из Imagecol.bmp.
Предполагаю, с именами файлов что-то не то. В моём примере файл с иконкой должен быть тупо <ИмяВнешнейОбработки>.ico . Или с правами в винде облом :)
Кстати, иконки показываются любые, не только 16x16.

alyuev

Пишет, что файл есть. Проходит строку присвоения - но по факту - иконка стандартная.

alyuev

А только для отчетов можно заменить? Или другие объекты тоже (Журналы, Справочники...)?

АЛьФ

Если указан путь к файлу иконки, то грузится с помощью функции WinAPI LoadImage. Соответственно, должна картинка укладываться в требования этой функции.
Можно попробовать предварительно загрузить файл в объект Картинка и его уже присвоить в качестве иконки.
Иконка устанавливается для любых форм, не только для отчетов.

Пиит


Чтобы отключить скроллинг в табличном документе,
достаточно задать большее число <ФиксСтрок> или/и <ФиксСтолбцов> в Опциях, например 100.
Кто знал о этом?

АЛьФ

Цитата: item от 09 апреля 2024, 15:11Чтобы отключить скроллинг в табличном документе,
достаточно задать большее число <ФиксСтрок> или/и <ФиксСтолбцов> в Опциях, например 100.
Кто знал о этом?
Разве это не сломает навигацию по таблице?

Пиит

Цитата: АЛьФ от 09 апреля 2024, 15:27Разве это не сломает навигацию по таблице?

Вот, гляньте, я немного не понял про навигацию.
Да, понял, сломает, но иногда она, навигация, и не нужна.

Пиит

Кстати, может кому-то пригодится вышеупомянутый на фото гаджет, эдакий навигатор по истории периодических реквизитов элемента, честно показывает что, где и когда поменялось.
Внедрение минимальное: "Обработка.Экскурсовод", функция глОткрытьЭкскурс(Контекст), иконка "Экскурсовод" в галереее и плоди кнопки на формах.
Обработка, функция и иконки формы/кнопки в архиве.

Пиит

Есть такой символ - НеразрывныйПробел - код 160, помогает творить.

1. Использую его как заменитель РазделителяСтрок, чтобы
хранить небольшие тексты в строках ограниченной длины.
Для ввода такой строки предназначен специальный диалог,
по завершении ввода заменяю РазделителиСтроки на НеразрывныеПробелы.
А функция глПолнНаименование() преобразовывает строку обратно в текст.
Благодаря этой хитрости ПолнНаименование и ему подобные получают бонус в печатных формах,
могут использоваться в Запросе, не тормозят формы списков и читаются в текстах на форме.

2. Маска элемента диалога имеет известнные проблемы с пробелом.
И здесь нам также поможет НеразрывныйПробел, сотворить, например ДатуВремя.


Злоп

ОТКЛЮЧИТЬ ВЫЗОВ ПОМОЩИ ПО F1
Для обработки нажатия кнопки F1 используем Ф-штатные, например, ПриНажатииКнопкиКлавиатуры().
Чтобы отключить показ "помощи", выполняемый системой, дополнительно в ГМ ставим

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

Злоп

Предлагаю здесь НЕ ОБСУЖДАТЬ приводимые здесь фичи/опыт, обсуждать в отдельных ветках!