Имя: Пароль:
1C
1С v8
Обработчик/расширение чтобы не менялся реквизит "Название"
0 los_hooliganos
 
04.07.19
12:53
Добрый день. Есть типовой механизм обмена между БП и ЗУП.
Для справочника Подразделение есть пожелание сделать так чтобы не менялось "Наименование" при обмене между базами.
Т.к. кадры и бухгалтерия могут иметь свои Названия для своих нужд.
Лезить в типовой механизм обмена не хочется, т.к. правила меняются и обновляются.
Как лучше реализовать сохранение реквизита в базе за счет обработчиков или расширений?
1 los_hooliganos
 
04.07.19
12:54
тфу.. имел ввиду типовой реквизит "Наименование"
2 Вафель
 
04.07.19
13:15
перед записью поставь
Наименование = Ссылка.Наименование
3 los_hooliganos
 
05.07.19
05:08
(2) Да почти так и сделал.

&После("ПередЗаписью")
Процедура Расш_НППередЗаписью(Отказ)
    
    флНельзяМенять = НельзяМенятьИмяПодразделения();
        
    Если НЕ Наименование = Ссылка.Наименование И флНельзяМенять Тогда
        Наименование = Ссылка.Наименование;
    КонецЕсли;
    
КонецПроцедуры
4 DrZombi
 
гуру
05.07.19
07:24
(0) Можно
1. Наименование делаете единым взяв исходным из БП 3.0 (так проще, чем обратное)
2. Добавляете в ЗУП (можно через расширение) реквизит "РасшА_НаименованиеПолное" (любой длины, на свое безрассудство) :)
3. В модуле менеджера подразделения прописываете Код, ниже:

В итоге во всех ЗУП отчетах вы будете видеть полное наименование, т.е. такое, какое захочет кадровая служба
Соответственно на форму не забудьте добавить свой реквизит, можно и в список вывести, для гурманов настроек форм.

Код...

&Вместо("ОбработкаПолученияПредставления")
Процедура РасшА_ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    Попытка
        Если Не ПустаяСтрока(Данные.РасшА_НаименованиеПолное) Тогда
            Представление = СокрЛП(Данные.РасшА_НаименованиеПолное);
            СтандартнаяОбработка = Ложь;
        КонецЕсли;
    Исключение
        ПродолжитьВызов(Данные, Представление, СтандартнаяОбработка);
    КонецПопытки;
КонецПроцедуры

&После("ОбработкаПолученияПолейПредставления")
Процедура РасшА_ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
    
    Поля.Добавить("Наименование");
    Поля.Добавить("РасшА_НаименованиеПолное");
    Поля.Добавить("Ссылка");
    СтандартнаяОбработка = Ложь;
    
КонецПроцедуры
5 DrZombi
 
гуру
05.07.19
07:26
(3) ну да, спасибо, мы подумаем, над вашим предложением :DDDD
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший