Имя: Пароль:
1C
 
создание нового контрагента в событии КонтрагентСоздание
0 lamme
 
19.06.23
16:23
1С8 УФ
форма документа
поле с типом Контрагент и наименованием Контрагент
как можно в событие - вызываемое при создании нового по кнопке с + (см скрин)
https://skr.sh/sKPMzPfgPLo
добавить своих параметров

т.е. чтобы при создании нового контрагента - определенные поля уже были указаны из той формы - откуда вызывается создание контрагента.


Событие - Процедура КонтрагентСоздание(Элемент, СтандартнаяОбработка)
подразумевает штатный механиз открытия карточки нового контрагента

если тут менять на самописное - то потом в обратную стороны созданный контрагент не прилетает (

т.е. делаю


    Оповещение = Новый ОписаниеОповещения("ПослеСозданияНовогоКонтрагента", ЭтаФорма, );
    Режим = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
    ОткрытьФорму("Справочник.Контрагенты.ФормаОбъекта", СтрПРМ,,,,, Оповещение, Режим);



в этой экспортной процедура нет информации о созданном контрагенте
&НаКлиенте
Процедура ПослеСозданияНовогоКонтрагента(Результат, ДополнительныеПараметры) Экспорт
    Если Результат = Неопределено Тогда
    
        
        
    КонецЕсли;
КонецПроцедуры
1 lamme
 
19.06.23
16:26
те надо открыть окно нового контр с заполненными реквизитами
+ вернуть в документ обратно созданного контр (если он был созлдан)
2 lamme
 
19.06.23
16:30
закрыли вопрос
3 lamme
 
19.06.23
16:33
кому интересно.

1.


&НаКлиенте
Процедура КонтрагентСоздание(Элемент, СтандартнаяОбработка)
    // Вставить содержимое обработчика.
    СтрПРМ = новый Структура();
    СтрПРМ.Вставить("МойРеквизит", Объект.МоеЗначение);
    
    СтандартнаяОбработка = ложь;
    Оповещение = Новый ОписаниеОповещения("ПослеСозданияНовогоКонтрагента", ЭтаФорма, );
    Режим = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
    ОткрытьФорму("Справочник.Контрагенты.ФормаОбъекта", СтрПРМ,,,,, Оповещение, Режим);
        
КонецПроцедуры



2.
ПриСозданииНаСервере формы объекта контрагента-  обрабатываем входящие параметры и подставляем


Если Параметры.Свойство("МойРеквизит") Тогда
        Объект.МойРеквизит= Параметры.МойРеквизит;
    конецесли;    



3. ПриЗаписи карточки контрагента делема- Оповестить("Запись_Контрагент")

4. В документе - откуда шел вызов создания нового контр делаем -

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    
    Если ИмяСобытия = "Запись_Контрагент" Тогда
Объект.Контрагент= Параметр;





долго и нудно (
4 lodger
 
19.06.23
17:36
(3) в уф это ещё не долго.
действительно нудно это в вебморде файлы или криптоподписи юзать без БСП.

а в твоём случае, почему ДанныеЗаполнения не использовал? тогда оно триггерит ОбработкуЗаполнения в модуле объекта.
и ЗаписьКонтрагента не может происходит в ином сценарии? типа открыто 5 документов разных, и полез делать нового контрагента. а во всех документах шлёп - и готово. везде твой новый контрагент.
лучше как то оповестить ту форму, откуда был вызвано создание нового. например ОписаниеОповещенияОЗакрытии в ОткрытьФорму
Программист всегда исправляет последнюю ошибку.