Последние сообщения

#1
FormEx / Re: ПриПолученииКомандыГлавным...
Последний ответ от АЛьФ - Сегодня в 12:22
Насколько я помню, туда пишется из какого именно места перехвата вызов предопределенной процедуры произошел. Польза только мне для отладки.
#2
7.7 / Re: КОПИЛКА: здесь всякие редк...
Последний ответ от Злоп - Вчера в 22:36
ТЕКСТ НА КНОПКЕ В НЕСКОЛЬКО СТРОК
Была такая тема: https://1cpp.ru/forum/YaBB.pl?num=1222937598

Процедура ПослеОткрытия()
   ФормаРасш = СоздатьОбъект("РасширениеФормы");
   Атр = ФормаРасш.ПолучитьАтрибут("кн1");  // ну или что-то там с именем кнопки.
   Атр.ИзменитьСтиль(11,8192+256);//выравнивание влево
   Атр.ИзменитьСтиль(11,8192);//выравнивание по центру
   Атр.Заголовок = "тест1"+РазделительСтрок+"тест2";
КонецПроцедуры // ПослеОткрытия()
#3
7.7 / Re: Текст на кнопке в нескольк...
Последний ответ от Злоп - Вчера в 22:33
Спасибки! Все получилось!
#4
7.7 / Re: Текст на кнопке в нескольк...
Последний ответ от 1ex - Вчера в 16:33
Была такая тема: https://1cpp.ru/forum/YaBB.pl?num=1222937598
        Тут в диалоге "некто" с похожим ником участвовал...

   ФормаРасш = СоздатьОбъект("РасширениеФормы");

        атр = ФормаРасш.ПолучитьАтрибут("кн1");  // ну или что-то там с именем кнопки.
   Атр.ИзменитьСтиль(11,8192+256);//выравнивание влево
   Атр.ИзменитьСтиль(11,8192);//выравнивание по центру
   атр.Заголовок = "тест"+разделительстрок+"тест" ;
#5
FormEx / ПриПолученииКомандыГлавнымОкно...
Последний ответ от Злоп - Вчера в 13:46
Formex 2.0.5.199
ALS от 198.
Описание:
Процедура ПриПолученииКомандыГлавнымОкном(<Команда>, <НулевойПараметр>, <СтандартнаяОбработка>)
КонецПроцедуры

Синтаксис:
Процедура ПриПолученииКомандыГлавнымОкном(<?>,,)
КонецПроцедуры
Назначение:
Предназначена для обработки сообщения WM_COMMAND, посылаемого главному окну приложения.
Параметры:
<Команда> - идентификатор команды;
<НулевойПараметр> - всегда 0, оставлен для совместимости; - а вот тут не так. В разных случаях НулевойПараметр принимает значения 0/1/2. Например, для команды 32881 (выборе периода в журнале) НулевойПараметр=1...

Хотелось бы понять, что и когда в НулевойПараметр? Может из этого пользу извдечь можно было бы... Ну и описание поправить...
#6
7.7 / Re: Подменить штатный диалог в...
Последний ответ от Злоп - Вчера в 13:40
Ввод периода в журнале операций и журнале проводок - перехватывается успешно.
Журнал расчетов не проверил, нет такого объекта у меня, но по идее - тоже должен перехватываться успешно
#7
7.7 / Re: КОПИЛКА: здесь всякие редк...
Последний ответ от Злоп - Вчера в 13:23
ПОДМЕНИТЬ ШТАТНЫЙ ВЫБОР ПЕРИОДА В ЖУРНАЛАХ ДОКУМЕНТОВ, продолжение
Ветка обсуждения

Поправочка.
Описанное выше не работает в системных предопределенных журналах, которых нет в перечне журналов документов в дереве метаданных, но их можно выбрать из перечня журналов, там они идентифицируются как "(Прочие)" и "(Полный)". Формы этих журналов формексом не отлавливаются (не имеют собственного контекста?), поэтому код надо вот так (чтобы не упал по ошибке на КонтекстЖурнала.НачалоИнтервала()):
Процедура ПриПолученииКомандыГлавнымОкном(Команда, НулевойПараметр, ФСО)

  Если Команда = 32881 Тогда
    КонтекстЖурнала = ""; глСервис.АктивныйКонтекст(КонтекстЖурнала);
    Если ПустоеЗначение(КонтекстЖурнала) = 1 Тогда Возврат; КонецЕсли; // тут штатный выбор периода
    ДатаН = КонтекстЖурнала.НачалоИнтервала();
    ДатаК = КонтекстЖурнала.КонецИнтервала();
    глВвестиПериод(ДатаН,ДатаК); // здесь вызываем модально СВОЮ обработку выбора периода
    КонтекстЖурнала.УстановитьИнтервал(ДатаН,ДатаК);
    ФСО = 0; 
    Возврат; 				
  КонецЕсли;

КонецПроцедуры // ПриПолученииКомандыГлавнымОкном()
#8
7.7 / Re: Подменить штатный диалог в...
Последний ответ от Злоп - Вчера в 13:18
Цитата: Злоп от Вчера в 02:13КонтекстЖурнала = ""; глСервис.АктивныйКонтекст(КонтекстЖурнала);

Тут поправочка.
Это не работает в системных предопределенных журналах, которых нет в перечне журналов документов в дереве метаданных, но их можно выбрать из перечня журналов, там они идентифицируются как "(Прочие)" и "(Полный)". Формы этих журналов формексом не отлавливаются (не имеют собственного контекста?), поэтому код надо вот так (чтобы не упал по ошибке на КонтекстЖурнала.НачалоИнтервала()):
Процедура ПриПолученииКомандыГлавнымОкном(Команда, НулевойПараметр, ФСО)

  Если Команда = 32881 Тогда
    КонтекстЖурнала = ""; глСервис.АктивныйКонтекст(КонтекстЖурнала);
    Если ПустоеЗначение(КонтекстЖурнала) = 1 Тогда Возврат; КонецЕсли; // тут штатный выбор периода
    ДатаН = КонтекстЖурнала.НачалоИнтервала();
    ДатаК = КонтекстЖурнала.КонецИнтервала();
    глВвестиПериод(ДатаН,ДатаК); // здесь вызываем модально СВОЮ обработку выбора периода
    КонтекстЖурнала.УстановитьИнтервал(ДатаН,ДатаК);
    ФСО = 0; 
    Возврат; 				
  КонецЕсли; //

КонецПроцедуры // ПриПолученииКомандыГлавнымОкном()


#9
7.7 / Текст на кнопке в несколько ст...
Последний ответ от Злоп - Вчера в 13:08
Кнопка штатная.
Хочется текст/надпись на кнопке в несколько строк.
Вроде был рецепт без отдельных картинок итд извращений, какой-то простой.
Или я что-то путаю...
Есть решение?
#10
7.7 / Re: Маленькие вопросы
Последний ответ от Харлампий Дымба - Вчера в 10:36
Сделал себе "кнопку" в таблице сформированного отчета - тыкаешь "Очистить подытоги" и итоги по группам товаров пустеют, а кнопка меняет название на "Восстановить подытоги". Тыкаешь её ещё раз - подытоги возвращаются, а название кнопки меняется обратно. Думал сделать примерчик на типовой ТиС, открыл ОтчетПоПродажамТМЦ, выпал в осадок от
|СвойствоПокупателя = Регистр.ПартииНаличие.ТекущийДокумент.Реализация.Контрагент.ОсновноеСвойство.ЗначениеСвойства...,
и закрыл)

Цитата: Злоп от 13 мая 2025, 01:14практический смысл #4 - неясен.
Графический объект - идеальный сейф в ванильной 1С.
Например, объект "Линия" "Текст" можно сделать практически точкой (с мелким шрифтом и с невидимым обрамлением).
Точку можно добавить в любую из множества таблиц конфигурации / внешних отчетов.
Эту точку можно разместить где угодно в таблице - даже вне секций на строке 65535 на пересечении границ ячеек.
В эту точку можно положить любой нужный текст и этот текст нельзя обнаружить через "Конфигурация - Поиск во всех текстах".
Если не присвоить этой точке имя, то даже зная таблицу, её нельзя будет обнаружить через позиционирование с помощью Таблица - Имена - Выбрать.
При этом программно всегда можно получить содержимое этой безымянной точки как раз кодом из #4.
Идентифицировать точки можно, например, по .Расшифровка.
Что можно записать в содержимое и как его использовать - это я расписывать не буду, сейф же - значит что-то тайное.

А так, конечно, никакого практического смысла нет. Я, лично, прекрасно обходилось без этих знаний 30 лет :D