Имя: Пароль:
1C
 
Установить созданный вручную объект справочник в форму документа.
0 Vyacheslav_UZ
 
01.07.16
14:28
Добрый день. Бухгалтерия.Хозрасчетный 8.2. Делаю внешнюю обработку которая устанавливает в банковских документах в зависимости от расчетного счета и мфо определенный договор. Если нет договора вообще то создает новый с нужным наименование и должен его подставить в этот документ. Вот тут и возникла проблема. Не хочет не как договор вставать в реквизит документа. Выдает ошибку "Поле объекта недоступно для записи". Но я же получаю ссылку из запроса которую приравниваю к объекту.     Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПлатежныйОрдерПоступлениеДенежныхСредств.СчетКонтрагента.НомерСчета КАК НомерСчета,
    |    ПлатежныйОрдерПоступлениеДенежныхСредств.Контрагент.ОсновнойБанковскийСчет.Банк.Код КАК МФО,
    |    ПлатежныйОрдерПоступлениеДенежныхСредств.ДоговорКонтрагента,
    |    ПлатежныйОрдерПоступлениеДенежныхСредств.Ссылка,
    |    ПлатежныйОрдерПоступлениеДенежныхСредств.Контрагент
    |ИЗ
    |    Документ.ПлатежныйОрдерПоступлениеДенежныхСредств КАК ПлатежныйОрдерПоступлениеДенежныхСредств
    |ГДЕ
    |    ПлатежныйОрдерПоступлениеДенежныхСредств.Дата МЕЖДУ &Дата И &ДатаОкончания";
    
    Запрос.УстановитьПараметр("Дата", ЭтотОбъект.ДатаНачало);
    Запрос.УстановитьПараметр("ДатаОкончания", ЭтотОбъект.ДатаОкончания);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        //Чек//
        //Андижан
        Если ВыборкаДетальныеЗаписи.НомерСчета = "29804000500226818002" И ВыборкаДетальныеЗаписи.МФО = "01114" Тогда
            Если НЕ ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.ДоговорКонтрагента) Тогда
//                    НЕ ДоговорКонтрагента.Наименование = "Чек" Тогда
                
                //Создаем новый договор контрагента
                НовыйЭлемент = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
                Родитель     = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000000199");
                НовыйЭлемент.Наименование   = "Чек";
                НовыйЭлемент.Организация    = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация");
                НовыйЭлемент.Владелец       = ВыборкаДетальныеЗаписи.Контрагент;
                НовыйЭлемент.ВидДоговора    = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
                НовыйЭлемент.Родитель       = Родитель;
                НовыйЭлемент.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("860");
                НовыйЭлемент.Записать();
                
                 //Вставляем в документ новый договор контрагента
                ИзменяемыйДокумент = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
                ФормаДокумента     = ИзменяемыйДокумент.ПолучитьФорму();
                ФормаДокумента.ЭлементыФормы.ДоговорКонтрагента = СозданныйДоговор;
                ИзменяемыйДокумент.РасшифровкаПлатежа[0].ДоговорКонтрагента = СозданныйДоговор;
                ИзменяемыйДокумент.записать();
                
            Иначе
        
                ИзменяемыйДокумент = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
                НеобходимыйДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000002974");
                ИзменяемыйДокумент.ДоговорКонтрагента = НеобходимыйДоговор;
                ИзменяемыйДокумент.РасшифровкаПлатежа[0].ДоговорКонтрагента = НеобходимыйДоговор;
                ИзменяемыйДокумент.записать();
            КонецЕсли;
1 Зая Бусечка
 
01.07.16
14:30
Искузе муа, а зачем значение в форму ставить?
2 Nuobu
 
01.07.16
14:31
ФормаДокумента.ЭлементыФормы.ДоговорКонтрагента.Значение = СозданныйДоговор;

или так:

ИзменяемыйДокумент.ДоговорКонтрагента = СозданныйДоговор;
3 catena
 
01.07.16
14:33
Во-первых, отстаньте уже от формы, пишите как в Иначе, сразу в объект.
Во-вторых, почему создается НовыйЭлемент, а записавается СозданныйДоговор?
4 Vyacheslav_UZ
 
01.07.16
14:35
Nuobu пробовал и так и так не цепляет.
5 Vyacheslav_UZ
 
01.07.16
14:36
catena изначально ятак и делал как в иначе, тоесть :
                //Вставляем в документ новый договор контрагента
                ИзменяемыйДокумент = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
                ИзменяемыйДокумент.ДоговорКонтрагента = НовыйЭлемент;
                ИзменяемыйДокумент.РасшифровкаПлатежа[0].ДоговорКонтрагента = НовыйЭлемент;
                ИзменяемыйДокумент.записать();
6 salvator
 
01.07.16
14:36
(4) Что в переменной "СозданныйДоговор"?
7 catena
 
01.07.16
14:37
(5)И? Какой точный текст ошибки?
8 Vyacheslav_UZ
 
01.07.16
14:37
Если ВыборкаДетальныеЗаписи.НомерСчета = "29804000500226818002" И ВыборкаДетальныеЗаписи.МФО = "01114" Тогда
            Если НЕ ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.ДоговорКонтрагента) Тогда
                
                //Создаем новый договор контрагента
                НовыйЭлемент = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
                Родитель     = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000000199");
                НовыйЭлемент.Наименование   = "Чек";
                НовыйЭлемент.Организация    = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация");
                НовыйЭлемент.Владелец       = ВыборкаДетальныеЗаписи.Контрагент;
                НовыйЭлемент.ВидДоговора    = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
                НовыйЭлемент.Родитель       = Родитель;
                НовыйЭлемент.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("860");
                НовыйЭлемент.Записать();
                
                 //Вставляем в документ новый договор контрагента
                ИзменяемыйДокумент = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
                ИзменяемыйДокумент.ДоговорКонтрагента = НовыйЭлемент;
                ИзменяемыйДокумент.РасшифровкаПлатежа[0].ДоговорКонтрагента = НовыйЭлемент;
                ИзменяемыйДокумент.записать();
                
            Иначе
        
                ИзменяемыйДокумент = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
                НеобходимыйДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоКоду("000002974");
                ИзменяемыйДокумент.ДоговорКонтрагента = НеобходимыйДоговор;
                ИзменяемыйДокумент.РасшифровкаПлатежа[0].ДоговорКонтрагента = НеобходимыйДоговор;
                ИзменяемыйДокумент.записать();
            КонецЕсли;
9 Vyacheslav_UZ
 
01.07.16
14:38
без Созданный договор. Не заменил текст.
10 Nuobu
 
01.07.16
14:38
НовыйЭлемент.ССылка; !!!!
СозданныйДоговор.ССылка; !!!
11 catena
 
01.07.16
14:38
ИзменяемыйДокумент.ДоговорКонтрагента = НовыйЭлемент.Ссылка
12 Vyacheslav_UZ
 
01.07.16
14:39
В данном случаи ошибки не какой нет.Просто не подставляет.
13 catena
 
01.07.16
14:39
(12)Как это было проверено, что не подставляет?
14 Vyacheslav_UZ
 
01.07.16
14:40
Ятиишки матрешки. Получилось.ИзменяемыйДокумент.ДоговорКонтрагента = НовыйЭлемент.Ссылка Катена вам 5)
AdBlock убивает бесплатный контент. 1Сергей