Имя: Пароль:
1C
 
Как узнать кто вызвал подписку на событие
↓ (Волшебник 22.02.2024 09:54)
0 UstyakAnd
 
21.02.24
17:55
Задача. При выборе организаций в справочниках и документах,  организации быть не должно, но в отчетах она должна выбираться. Сделали подписку на событие, в котором добавляется проверка на "Неиспользуемость" организации, возникла проблема - в отчетах при выборе организации также действует подписка. Нужно или узнать что вызов из отчета, или решить вопрос другим методом. Можно как-то узнать в подписке,  кто инициировал событие?
1 Волшебник
 
21.02.24
18:17
чушь
2 Волшебник
 
21.02.24
19:02
какую подписку Вы сделали? На какое событие?

у подписки есть источник

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

Для организации установите пометку на удаление (свойство ПометкаНаУдаление, стандартный реквизит типа булево). Это и есть пометка на используемость элемента справочника в 1С, да будет вам известно.
3 steep1
 
22.02.24
07:32
(0) Сделайте галочку в организация - активна и сделайте по ней отбор в тех. местах где вам нужно
4 Valdis2007
 
22.02.24
07:39
(0) в подписку приходит объект-источник
5 Valdis2007
 
22.02.24
07:40
(0) но эту проблему, как ты описал - подписками не решают
6 YFedor
 
22.02.24
09:07
Это отдельное умение так описать проблему, чтобы никто не понял.
Хорошим тоном будет прочитать свое сообщение прежде чем отправить и подумать: "а человек не знакомый с проблемой сможет понять ее из этого описания?"
7 UstyakAnd
 
22.02.24
10:15
Подписка ОбработкаПолученияДанныхВыбора для справочника Организация. В ней устанавливался фильтр на доп. реквизит "Неиспользуемый", который позволял отфильтровать неиспользуемые организации, чтобы при выборе организации в документах, справочниках, отчетах.
  
   Проблема решена умным человеком, (не мной) с помощью механизма, о котором я даже не подозревал. В параметры, передаваемые в подписку передавался дополнительный семафорный параметр, позволяющий понять, что выбор производится в отчете.
8 Волшебник
 
22.02.24
10:34
тупизна...
9 Valdis2007
 
22.02.24
10:41
(7) "Проблема решена умным человеком, (не мной)"...Чатом гпт?))
10 1Снеговик
 
22.02.24
11:22
(7) ОбработкаПолученияДанныхВыбора - это событие поля ввода на форме.
11 evorle145
 
22.02.24
13:53
(0) " При выборе организаций в справочниках и документах,  организации быть не должно, но в отчетах она должна выбираться" это решается с помощью наложения фильтров на значение ДанныеВыбора в процедуре:


Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)

Сама процедура описывается в модуле менеджера справочника Организации.

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

Но в типовых отчетах типа ОСВ - останутся, ибо там это событие не будет вызываться.
12 UstyakAnd
 
22.02.24
14:10
Спасибо, сегодня проверю!
13 evorle145
 
22.02.24
14:23
(12) вот прям можете расширение сделать и там в модуле менеджера организации сделать:


&Вместо("ОбработкаПолученияДанныхВыбора")
Процедура ITОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    Организации.Ссылка КАК Ссылка,
    |    Организации.Наименование КАК Наименование
    |ИЗ
    |    Справочник.Организации КАК Организации
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ITОрганизацииСкрытыеИзСписка КАК ITОрганизацииСкрытыеИзСписка
    |        ПО Организации.Ссылка = ITОрганизацииСкрытыеИзСписка.Организация
    |ГДЕ
    |    ITОрганизацииСкрытыеИзСписка.Организация ЕСТЬ NULL
    |    И Организации.Наименование ПОДОБНО &СтрокаПоиска
    |
    |УПОРЯДОЧИТЬ ПО
    |    Наименование";

    Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Параметры.СтрокаПоиска + "%");
    
    Выборка = Запрос.Выполнить().Выбрать();
    ОрганизацииСкрытыеИзСписка = Новый СписокЗначений;
    Пока Выборка.Следующий() Цикл
        ОрганизацииСкрытыеИзСписка.Добавить(Выборка.Ссылка, Выборка.Наименование);
    КонецЦикла;
    ДанныеВыбора = ОрганизацииСкрытыеИзСписка;  
    Параметры.ПолнотекстовыйПоиск =  ПолнотекстовыйПоискПриВводеПоСтроке.Использовать;

КонецПроцедуры


ну или через реквизит, тут уж как вам больше нравится.
Закон Брукера: Даже маленькая практика стоит большой теории.