Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Не создается договор

v7: Не создается договор
Я
   ugorchina
 
04.05.18 - 12:30
Всем привет подскажите где у меня затык по ОЛЕ создаю контрагента + его договор контрагент создается а вот с договором косяк (

КонтрагентОЛЕ = Неопределено;       
    ДоговорОЛЕ    = Неопределено;
    ВалютаОЛЕ     = Неопределено;
    КонтрОЛЕ = ОбъектV77.CreateObject("Справочник.Контрагенты");
    ДогОЛЕ   = ОбъектV77.CreateObject("Справочник.Договоры");
    Валюты   = ОбъектV77.CreateObject("Справочник.Валюты");
    
    Если Валюты.НайтиПоКоду(СокрЛП(Договор.ВалютаВзаиморасчетов.Код)) = 1 Тогда
        ВалютаОЛЕ = Валюты.ТекущийЭлемент();
    КонецЕсли;
    
    Если СокрЛП(Контрагент.ИНН) <> "" Тогда
        Если  КонтрОЛЕ.НайтиПоРеквизиту("ИНН",СокрЛП(Контрагент.ИНН)) = 1 Тогда
            КонтрагентОЛЕ = КонтрОЛЕ.ТекущийЭлемент();    
            Если СокрЛП(КонтрагентОЛЕ.ОсновнойДоговор.ТекущийЭлемент()) <> "" Тогда 
                ДоговорОЛЕ    = КонтрагентОЛЕ.ОсновнойДоговор.ТекущийЭлемент();
            КонецЕсли;
        КонецЕсли;
    Иначе
        Если КонтрОЛЕ.НайтиПоНаименованию(СокрЛП(Контрагент.Наименование)) = 1 Тогда
            КонтрагентОЛЕ = КонтрОЛЕ.ТекущийЭлемент();    
            Если СокрЛП(КонтрагентОЛЕ.ОсновнойДоговор.ТекущийЭлемент()) <> "" Тогда 
                ДоговорОЛЕ    = КонтрагентОЛЕ.ОсновнойДоговор.ТекущийЭлемент();
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

    Если КонтрагентОЛЕ = Неопределено Тогда 
        КонтрОЛЕ.Новый();
        КонтрОЛЕ.Наименование     = СокрЛП(Контрагент.Наименование);
        КонтрОЛЕ.ПолнНаименование = СокрЛП(Контрагент.Наименование);
        КонтрОЛЕ.ИНН              = СокрЛП(Контрагент.ИНН);
        КонтрОЛЕ.Записать();
        ДогОЛЕ.Новый();
        ДогОЛЕ.Наименование = СокрЛП(Договор.Наименование);
        если СокрЛП(Договор.Номер) <> "" Тогда
        ДогОЛЕ.Код          = СокрЛП(Договор.Номер);
        КонецЕсли;
        Если ВалютаОЛЕ <> Неопределено Тогда
        ДогОЛЕ.Валюта       = ВалютаОЛЕ;
        КонецЕсли;
        ДогОЛЕ.Владелец     = КонтрОЛЕ.ТекущийЭлемент();
        ДогОЛЕ.записать();
        БлаБла = КонтрОЛЕ.ТекущийЭлемент();
        БлаБла.ОсновнойДоговор = ДогОЛЕ.ТекущийЭлемент();
        КонтрОЛЕ.Записать();
    КонецЕсли;
    КонтрагентОЛЕ = КонтрОЛЕ.ТекущийЭлемент();
    ДоговорОЛЕ    = ДогОЛЕ.текущийЭлемент();
 
 
   ugorchina
 
1 - 04.05.18 - 12:31
+(0) подозреваю что неверно устонавливаю владельца тупо не помню как это делать в 7-ке (
   ugorchina
 
2 - 04.05.18 - 12:32
На момент  ДогОЛЕ.Новый(); 
КонтрОЛЕ.ТекущийЭлемент() не пустой
   Ёпрст
 
3 - 04.05.18 - 12:33
вот это выкинь
        БлаБла = КонтрОЛЕ.ТекущийЭлемент();
        БлаБла.ОсновнойДоговор = ДогОЛЕ.ТекущийЭлемент();
        КонтрОЛЕ.Записать();
   Мандалай
 
4 - 04.05.18 - 12:33
Попробуй ИспользоватьВладельца
   ugorchina
 
5 - 04.05.18 - 12:34
(3) а чего выкидывать ТО?

это ж я присваиваю Контру его договор как основной!
   Ёпрст
 
6 - 04.05.18 - 12:34
ну и проверять на неопределенно оле-объект.. тоже махер
   Ёпрст
 
7 - 04.05.18 - 12:34
(5) еще подумай
   Ёпрст
 
8 - 04.05.18 - 12:35
вот это
 КонтрагентОЛЕ = КонтрОЛЕ.ТекущийЭлемент();    
            Если СокрЛП(КонтрагентОЛЕ.ОсновнойДоговор.ТекущийЭлемент()) <> "" Тогда 
                ДоговорОЛЕ    = КонтрагентОЛЕ.ОсновнойДоговор.ТекущийЭлемент();

тоже в топку
   Ёпрст
 
9 - 04.05.18 - 12:35
Вообще, бездумное втыкание ТекущийЭлемент где надо и не надо..
   arsik
 
10 - 04.05.18 - 12:36
(4) +
 
 Рекламное место пустует
   ugorchina
 
11 - 04.05.18 - 12:38
(4) пробую
   ugorchina
 
12 - 04.05.18 - 12:39
(8) да здесь Вы правы спасибо

(4) еще пробую
   ugorchina
 
13 - 04.05.18 - 12:41
но по (3) так и не ответили
   Ёпрст
 
14 - 04.05.18 - 12:50
(13) а че отвечать ? Твоё бла-бла там не нужно от слова совсем, ибо нигде не используется.
   ugorchina
 
15 - 04.05.18 - 12:50
теперь ошибка 

    КонтрагентОЛЕ = Неопределено;       
    ДоговорОЛЕ    = Неопределено;
    ВалютаОЛЕ     = Неопределено;
    КонтрОЛЕ = ОбъектV77.CreateObject("Справочник.Контрагенты");
    ДогОЛЕ   = ОбъектV77.CreateObject("Справочник.Договоры");
    Валюты   = ОбъектV77.CreateObject("Справочник.Валюты");
    
    Если Валюты.НайтиПоКоду(СокрЛП(Договор.ВалютаВзаиморасчетов.Код)) = 1 Тогда
        ВалютаОЛЕ = Валюты.ТекущийЭлемент();
    КонецЕсли;
    
    Если СокрЛП(Контрагент.ИНН) <> "" Тогда
        Если  КонтрОЛЕ.НайтиПоРеквизиту("ИНН",СокрЛП(Контрагент.ИНН)) = 1 Тогда
            КонтрагентОЛЕ = КонтрОЛЕ.ТекущийЭлемент();    
            Если СокрЛП(КонтрагентОЛЕ.ОсновнойДоговор) <> "" Тогда 
                ДоговорОЛЕ    = КонтрагентОЛЕ.ОсновнойДоговор;
            КонецЕсли;
        КонецЕсли;
    Иначе
        Если КонтрОЛЕ.НайтиПоНаименованию(СокрЛП(Контрагент.Наименование)) = 1 Тогда
            КонтрагентОЛЕ = КонтрОЛЕ.ТекущийЭлемент();    
            Если СокрЛП(КонтрагентОЛЕ.ОсновнойДоговор) <> "" Тогда 
                ДоговорОЛЕ    = КонтрагентОЛЕ.ОсновнойДоговор;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

    Если КонтрагентОЛЕ = Неопределено Тогда 
        КонтрОЛЕ.Новый();
        КонтрОЛЕ.Наименование     = СокрЛП(Контрагент.Наименование);
        КонтрОЛЕ.ПолнНаименование = СокрЛП(Контрагент.Наименование);
        КонтрОЛЕ.ИНН              = СокрЛП(Контрагент.ИНН);
        КонтрОЛЕ.Записать();
        ДогОЛЕ.Новый();
        ДогОЛЕ.Наименование = СокрЛП(Договор.Наименование);
        если СокрЛП(Договор.Номер) <> "" Тогда
            ДогОЛЕ.Код          = СокрЛП(Договор.Номер);
        КонецЕсли;
        Если ВалютаОЛЕ <> Неопределено Тогда
            ДогОЛЕ.ВалютаДоговора = ВалютаОЛЕ;
        КонецЕсли;
        ДогОЛЕ.ИспользоватьВладельца(КонтрОЛЕ.ТекущийЭлемент());
        ДогОЛЕ.записать();
        БлаБла = КонтрОЛЕ.ТекущийЭлемент();
        БлаБла.ОсновнойДоговор = ДогОЛЕ.ТекущийЭлемент();
        КонтрОЛЕ.Записать();//стр 1018

        
        КонтрагентОЛЕ = КонтрОЛЕ.ТекущийЭлемент();
        ДоговорОЛЕ    = ДогОЛЕ.текущийЭлемент();
    КонецЕсли;

сама ошибка 

{ОбщийМодуль.РегламентныйОбменСоСтороннейПрограммой.Модуль(1018)}: Ошибка при вызове метода контекста (записать)
по причине:
Произошла исключительная ситуация (1С:Предприятие): Не выбран элемент справочника-хозяина! Элемент не может быть записан!
   ugorchina
 
16 - 04.05.18 - 12:51
тьфу простите  ДогОЛЕ.записать(); 1018 )
   Ёпрст
 
17 - 04.05.18 - 12:51
ну и в твоём коде, непонятно, зачем ты вообще вот это делаешь, например:

ДоговорОЛЕ    = КонтрагентОЛЕ.ОсновнойДоговор.ТекущийЭлемент();

зачем тебе нужна ссылка на договор ?
   ugorchina
 
18 - 04.05.18 - 12:53
я потом эти ссылки в заказе присваиваю в другом месте

КонтрагентОЛЕ
        ДоговорОЛЕ 

зтем возваращаются в основной код где присваиваются созданному документ заказ клиента в семерке
   Ёпрст
 
19 - 04.05.18 - 12:54
(16)

 ДогОЛЕ.ИспользоватьВладельца(КонтрОЛЕ.ТекущийЭлемент());
 ДогОЛЕ.Новый();
.....
  ДогОЛЕ.записать();

//    БлаБла = КонтрОЛЕ.ТекущийЭлемент();

//        БлаБла.ОсновнойДоговор = ДогОЛЕ.ТекущийЭлемент();

КонтрОЛЕ.ОсновнойДоговор = ДогОЛЕ.ТекущийЭлемент();
КонтрОЛЕ.Записать()//стр 1018
   ugorchina
 
20 - 04.05.18 - 14:11
Спасибо работает!

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует