Имя: Пароль:
1C
 
Как меняют содержимое константы ПараметрыСлужебныхСобытий?
0 camojiet
 
12.11.15
03:20
Началось всё с того, что захотел использовать стандартную подсистему печати, для добавления внешних ПФ для созданных мной документах (поверх БП3).
Выяснилось что, документы, для которых можно вставить внешнюю ПФ перечисляются в определённом модуле, и можно добавить свои, если добавить свой обработчик события в ПараметрыСлужебныхСобытий (это хранилище значения, где за несколькими фиксированными массивами и структурами, прячутся обработчики событий).
То есть если действовать не как белый человек, то я могу разобрать фиксированные массивы - добавить своё, и собрать обратно. Или повлиять на формирование этих структур. Первый вариант - не факт, что не будет переодически слетать.
Копал второй - упёрся в функцию ПодсистемыКонфигурацииПереопределяемый.ПриДобавленииПодсистем, где прямо в модуле вшиты модули подсистем.
Можно ли не меняя стандартных объектов конфигурации вставить свой обработчик?
Есть по этой системе (БСП) хорошая литература?
1 camojiet
 
12.11.15
04:31
Пока сделал по-нигретянски (работает!):
    ПараметрыСлужебныхСобытий = Константы.ПараметрыСлужебныхСобытий.Получить().Получить();        
    ОбработчикиСлужебныхСобытий = ПараметрыСлужебныхСобытий.ОбработчикиСобытий.НаСервере.ОбработчикиСлужебныхСобытий;
    ОбработчикиСлужебныхСобытийИзм = Новый Соответствие(ОбработчикиСлужебныхСобытий);
    ОбработчикиИзм = Новый Массив(ОбработчикиСлужебныхСобытийИзм.Получить("СтандартныеПодсистемы.Печать\ПриОпределенииОбъектовСКомандамиПечати"));    
    //-----------------------Проверка на существование этого обработчика -----------------
    Для каждого Обработчик ИЗ ОбработчикиИзм Цикл
        Если Обработчик.Модуль = "ITSP_Серверный" Тогда
            Возврат;
        КонецЕсли;
    КонецЦикла;
    //-----------------------Проверка на существование этого обработчика -----------------
    ОбработчикиИзм.Добавить(Новый ФиксированнаяСтруктура("Модуль, Версия, Подсистема", "ITSP_Серверный","","Стандартные подсистемы"));    
    Обработчики = Новый ФиксированныйМассив(ОбработчикиИзм);
    ОбработчикиСлужебныхСобытийИзм.Вставить("СтандартныеПодсистемы.Печать\ПриОпределенииОбъектовСКомандамиПечати",Обработчики);
    ОбработчикиСлужебныхСобытий = Новый ФиксированноеСоответствие(ОбработчикиСлужебныхСобытийИзм);
    ПараметрыСлужебныхСобытий.ОбработчикиСобытий.НаСервере.ОбработчикиСлужебныхСобытий = ОбработчикиСлужебныхСобытий;
    Константы.ПараметрыСлужебныхСобытий.Установить(Новый ХранилищеЗначения(ПараметрыСлужебныхСобытий));    

В модуле ITSP_Серверный (галка вызов сервера должна быть выключена)
Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
    
    СписокОбъектов.Добавить(Документы.ITSP_Отгрузка);
    
КонецПроцедуры

Вставил внешнюю ПФ, для своего дока. Встала правильно, в форме стандартные механизмы отрабатывают правильно. Короч всё работает.
Перезаходил в базу, константа пока не слетела.
Есть подозрение, что может слететь каким-нибудь регламентным заданием, или при обновлении.
Пока работаю так, но интересно мнение, людей, которые разбираются в БСП.
2 ЧеловекДуши
 
12.11.15
06:13
Молодец. Чего сказать то хотел?

>>> Есть по этой системе (БСП) хорошая литература?

Смешно, 1С особо не заморачивается на описании своих поделок. Ведь код открыт, бери пофигуратор и вперед :)
3 camojiet
 
12.11.15
07:21
Надеялся, что может кто-нибудь подскажет вариант получше. Когда делал топик ещё не знал получится или нет. Ну а второй пост - может кому пригодится.
А по части увлекательных путешествий в кунгфугураторе, понятно, что всё описывать не будут. Но должны быть какие-то верхушки айсберга, которые с течением времени не меняются. Например те же "СтандартныеПодсистемы".
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс