Имя: Пароль:
1C
 
КД замена реквизита в "После загрузки" не проходит
0 GreatOne
 
09.11.14
18:22
Есть такой код в ПКО:

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




В итоге договор создается, но в объекте замена не происходит. Выгружается вместе с тем договором, который указан в источнике.

Как можно произвести замену договора в объекте?
1 zmaximka
 
09.11.14
18:29
Объект.ДоговорКонтрагента = НовыйДоговорПрочее.Ссылка;
2 GreatOne
 
09.11.14
18:38
(1)не помогло(

Разобрался. В типовой БП передзаписью() есть строчка "ДоговорКонтрагента = РасшифровкаПлатежа[0].ДоговорКонтрагента;", заменяла мой договор.
3 GreatOne
 
09.11.14
20:35
Все равно не выходит.

Ловлю отладчиком, получается, что при вызове метода ЗАписать() из ПКО документ записывается с пустым договором. Такое впечатление, что я присваиваю реквизиту ДоговорКонтрагента пустое значение. Но сам договор в базе создается.

Жесть какая-то.
4 Сияющий Асинхраль
 
09.11.14
20:43
(0) Загадочный код. Этак при каждой загрузке у тебя новый договор формируется :-( , спрашивается - нах?
5 Сияющий Асинхраль
 
09.11.14
20:51
+(4) Гораздо проще было бы сделать отдельное ПКО для договоров с названием "Для покупки валюты(перенос)", т.е. просто переносить любой договор в договор с наименованием "Для покупки валюты(перенос)" и видом договора - "Прочее".
Строго говоря ты пытаешься записать договор в момент, когда его владелец еще не записан :-( , хрен знает что может получиться из этого...
6 GreatOne
 
09.11.14
20:51
о(4) Не каждый. Это на скорую руку код. Дело в том, что в КА можно делать такую платежку с договором "поставщику", а в БП только "прочее". Проверяю каждую платежку со счетом 57.02.

Если Объект.СчетУчетаРасчетовСКонтрагентом.Код = "57.02" И
    НЕ Объект.ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Прочее Тогда
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ДоговорыКонтрагентов.Ссылка КАК ДоговорКонтрагента
        |ИЗ
        |    Справочник.Контрагенты КАК Контрагенты
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
        |        ПО Контрагенты.Ссылка = ДоговорыКонтрагентов.Владелец
        |ГДЕ
        |    Контрагенты.Ссылка = &Ссылка
        |    И ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(перечисление.ВидыДоговоровКонтрагентов.Прочее)
        |    И ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ";

    Запрос.УстановитьПараметр("Ссылка", Объект.Контрагент);
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выгрузить();
    
    Если ВыборкаДетальныеЗаписи.Количество() > 0 Тогда
        Объект.ДоговорКонтрагента = ВыборкаДетальныеЗаписи[0].ДоговорКонтрагента;
    Иначе
        НовыйДоговорПрочее = Объект.ДоговорКонтрагента.Скопировать();
        НовыйДоговорПрочее.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Прочее;
        НовыйДоговорПрочее.Наименование = "Для покупки валюты(перенос)";
        НовыйДоговорПрочее.Записать();
        Сообщить("Создан новый договор ");
        //Объект.ОбменДанными.Загрузка = Истина;
        Объект.РасшифровкаПлатежа[0].ДоговорКонтрагента = НовыйДоговорПрочее;
        Объект.ДоговорКонтрагента = НовыйДоговорПрочее;
        Объект.Записать();
7 GreatOne
 
09.11.14
20:52
(5) спасибо, так и сделаю. Завтра уже правда.
8 GreatOne
 
10.11.14
01:05
(5) Честно говоря не понял, как это.
Вызывать отдельное ПКО при каком-то условии? Или создавать дубли всех договоров из платежек но с видом "прочее"?
9 hhhh
 
10.11.14
01:15
(8) издеваешься? Написали же

        Объект.РасшифровкаПлатежа[0].ДоговорКонтрагента = НовыйДоговорПрочее.Ссылка;
10 GreatOne
 
10.11.14
01:30
(9) Даа!! Спасибо, теперь можно заснуть спокойно!
11 GreatOne
 
10.11.14
01:31
пробовал это, но без Объект.РасшифровкаПлатежа[0].ДоговорКонтрагента