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

#1
7.7 / Re: Ошибки типовой ТиС
Последний ответ от Харлампий Дымба - 01 февраля 2026, 21:57
ПОДБОР ЭЛЕМЕНТОВ В МНОЖЕСТВЕННЫЙ ФИЛЬТР ВО ВСЕХ СТАНДАРТНЫХ ОТЧЕТАХ: ЕСЛИ ПРИ ОТКРЫТОМ ОКНЕ ПОДБОРА ПОМЕНЯТЬ ТЕКУЩУЮ СТРОКУ В СПИСКЕ ФИЛЬТРОВ "ОТФИЛЬТРОВАТЬ ДАННЫЕ ПО", ТО ВЫБРАННЫЕ ЗНАЧЕНИЯ БУДУТ ПОПАДАТЬ В НЕПРАВИЛЬНЫЙ СПИСОК.
Релиз 1012 и младше. Причем в старых редакциях (ТиС 8.7 и Компл. 3) была проверка на соответствие списка, из которого был вызван подбор, и списка, в который попадают выбранные значения. Но вот в ТиС 9 проверки не стало в угоду универсальности функций - переносу части общего функционала отчетов в глобальный модуль.
Так как окно подбора немодальное, то может быть открыто несколько окон подбора для разных переменных, или изменена текущая строка в списке фильтров, что приведет к неправильному попаданию значений не в свои списки отбора.

Во всех отчетах поиском по
Процедура ОбработкаПодбора(Значение)
вставить в начало процедуры:
Если глЗначениеПодбораСоответствуетСтрокеТаблицыМФ(ТаблицаМФ, Значение) = 0 Тогда Возврат КонецЕсли;

В глобальном модуле добавить:

//******************************************************************************
//
Функция глТипВидЗначения(Значение) Экспорт
    Попытка
        Возврат ТипЗначенияСтр(Значение)+"."+Значение.Вид()
    Исключение
    КонецПопытки;
    Возврат ТипЗначенияСтр(Значение)
КонецФункции    // глТипВидЗначения()

//******************************************************************************
//
Функция глЗначениеПодбораСоответствуетСтрокеТаблицыМФ(ТаблицаМФ, Значение) Экспорт
    
    Если ПустоеЗначение(Значение) = 1 Тогда Возврат 0 КонецЕсли;
    СписокДопустимыхТиповВидов = СоздатьОбъект("СписокЗначений");
    Если (ТаблицаМФ.ТекущаяСтрока() >= 1) и (ТаблицаМФ.ТекущаяСтрока() <= ТаблицаМФ.КоличествоСтрок()) Тогда
        Если ТипЗначенияСтр(ТаблицаМФ.Вид)="СписокЗначений" Тогда
            Если ТаблицаМФ.Вид.РазмерСписка() = 0 Тогда
                СписокДопустимыхТиповВидов.ДобавитьЗначение(СокрЛП(ТаблицаМФ.Тип));
            Иначе    
                Для СчВидов = 1 По ТаблицаМФ.Вид.РазмерСписка() Цикл
                    СписокДопустимыхТиповВидов.ДобавитьЗначение(СокрЛП(ТаблицаМФ.Тип) + "." + СокрЛП(ТаблицаМФ.Вид.ПолучитьЗначение(СчВидов)));
                КонецЦикла;
            КонецЕсли;    
        Иначе    
            СписокДопустимыхТиповВидов.ДобавитьЗначение(СокрЛП(ТаблицаМФ.Тип) + ?(ПустоеЗначение(ТаблицаМФ.Вид) = 1, "", "." + СокрЛП(ТаблицаМФ.Вид)));
        КонецЕсли;
        Если СписокДопустимыхТиповВидов.НайтиЗначение(глТипВидЗначения(Значение)) = 0 Тогда
            Предупреждение("Тип выбранного значения (" + глТипВидЗначения(Значение) + ") не соответствует ожидаемому (" + СписокДопустимыхТиповВидов.ПолучитьЗначение(1) + "). Закройте все окна подбора и попробуйте снова!");
            Возврат 0;    
        КонецЕсли;
    КонецЕсли;        
    
    Возврат 1;
КонецФункции    // глЗначениеПодбораСоответствуетСтрокеТаблицыМФ()





#2
FormEx / Re: ИД формы - как получить?
Последний ответ от Злоп - 30 января 2026, 23:20
Всяко бывает. Будем ждать Деда Мороза к следующему Новому году ;-)
#3
FormEx / Re: ИД формы - как получить?
Последний ответ от АЛьФ - 30 января 2026, 22:23
Цитата: Злоп от 30 января 2026, 21:08Наверное, у Алексея просто руки не дошли до внешних отчетов в части этой метки.
Алексей тупо многие вещи просто для внешних отчётов не тестировал. Сегодня посмотрел, там и некоторые другие атрибуты не будут для внешних работать.
#4
FormEx / Re: ИД формы - как получить?
Последний ответ от Злоп - 30 января 2026, 21:08
Наверное, у Алексея просто руки не дошли до внешних отчетов в части этой метки.
#5
Глюки форума / Re: задолбало это Выполнение T...
Последний ответ от MWW_Ruza - 30 января 2026, 14:52
Ну, и я на Win7... Еще и 32 бита...
Баузер - в основном - Хром. Да, при старте пишет, что не обновляется. Но, все работает.
Там, где надо с ЭЦП работать - ЯндексБраузер(с синеньким значком,типа "для организаций")...
#6
FormEx / Re: ИД формы - как получить?
Последний ответ от Злоп - 30 января 2026, 00:44
но где-то же эта "метка" хранится и для внешних, раз отрабатывает каждый раз новая форма даже просто если "Отчет#"
#7
FormEx / Re: ИД формы - как получить?
Последний ответ от Харлампий Дымба - 29 января 2026, 23:37
Не работает с внешними отчетами.
Если вызывать отчет из конфигурации, РасширениеФормы::Метка возвращает корректный Id в обоих случаях: и когда он явно задан, и когда присваивается системой.
#8
FormEx / Re: ИД формы - как получить?
Последний ответ от Злоп - 29 января 2026, 22:24
Не работает. РасширениеФормы.Метка - возвращает пусто.
Форма, кнопка "Сформировать" (тестовый пример скачать здесь: https://wdfiles.ru/4Ssxc)
.

Процедура Сформировать()
	МеткаНовойФормы = _GetPerformanceCounter();
	Сообщить("Открываем форму с меткой: "+МеткаНовойФормы);
	ОткрытьФорму("Отчет#"+МеткаНовойФормы,,РасположениеФайла());
КонецПроцедуры // Сформировать()

Процедура ПослеОткрытия()
	РФ = СоздатьОбъект("РасширениеФормы");
	МеткаЭтойФормы = РФ.Метка;
	Сообщить(СимволТабуляции+"метка открытой формы: " + МеткаЭтойФормы);
КонецПроцедуры // ПослеОткрытия
#9
FormEx / Re: ИД формы - как получить?
Последний ответ от АЛьФ - 29 января 2026, 15:54
РасширениеФормы::Метка
Синтаксис:
Метка
Назначение:
Доступ к значению метки формы. Атрибут для чтения/записи.
Возвращает/устанавливает метку формы, которая задается при вызове метода ОткрытьФорму()
после знака '#' в названии объекта.
#10
FormEx / Re: ИД формы - как получить?
Последний ответ от Злоп - 29 января 2026, 14:02
В Формексе такого не нашел. а хотелось бы, типа как атрибут РасширениеФормы или как-то иначе...