8.х Добавить договор

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем OIT, 11 авг 2008.

  1. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Код:
    НайденныйДоговор = Справочники.ДоговорыКонтрагентов.Выбрать(,Контрагент,,);
    Если НайденныйДоговор.Ссылка.Пустая() Тогда
    // не знаю как добавить
    КонецЕсли;
    
    
    Подскажите пожалуйста
    Благодарю Вас
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Код:
    НайденныйДоговор = Справочники.ДоговорыКонтрагентов.Выбрать(,Контрагент,,);
    Если НайденныйДоговор.Ссылка.Пустая() Тогда
    НайденныйДоговор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
    НайденныйДоговор.Владелец = Контрагент;
    НайденныйДоговор.Наименование = "Мой новосозданный договор";
    // ... заполнение прочих реквизитов
    Попытка
    НайденныйДоговор.Записать();
    Исключение
    Сообщить("Не удалось записать новый договор! ");
    Сообщить(ОписаниеОшибки());
    КонецПопытки
    КонецЕсли;
    
    
    Примерно так. Не проверял. Не забывайте про тег CODE в сообщениях форума.
  3. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Большое спасибо
  4. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Выходит сообщение
    Значение не является значением объектного типа(Пустая)
    Скажите пожалуйста в чем причина
    Благодарю Вас
  5. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Потому, что у ссылки нет такого метода ^_^ сразу не обратил внимание :-( должно быть так:

    Код:
    Если НайденныйДоговор.Пустая() Тогда
    
    
    
    
    Либо, нужно сравнивать ссылку с пустой ссылкой данного вида справочника:
    Код:
    Если НайденныйДоговор.Ссылка = Справочники.ДоговорыКонтрагентов.ПустаяСсылка() Тогда 
    
    
    Хотя и так должен работать. Посмотрите не забыли ли скобки у метода ".Пустая()".
  6. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Код:
    НайденныйДоговор = Справочники.ДоговорыКонтрагентов.Выбрать(,Сотрудник,,);
    Если НайденныйДоговор.Ссылка=Справочники.ДоговорыКонтрагентов.ПустаяСсылка() Тогда
    НайденныйДоговор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
    НайденныйДоговор.Владелец = Сотрудник;
    НайденныйДоговор.Наименование = "Договор Займа1";
    НайденныйДоговор.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоНаименованию("руб.");
    НайденныйДоговор.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Прочее;
    НайденныйДоговор.ВидВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом;
    Попытка
    НайденныйДоговор.Записать();
    Исключение
    Сообщить("Не удалось записать новый договор! ");
    Сообщить(ОписаниеОшибки());
    КонецПопытки;
    КонецЕсли;
    
    
    Не добавляется договор в чем же тут дело
    Подскажите пожалуйста
    Благодарю Вас
  7. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Хотя, впрочем, опять не досмотрел
    Код:
    НайденныйДоговор = Справочники.ДоговорыКонтрагентов.Выбрать(,Сотрудник,,);
    
    Глянул на название переменной НайденныйДоговор, и решил, что он содержит пустую ссылку на договор, хотя это не так.
    НайденныйДоговор в данном случае - выборка.
    К ней нужно применять метод ".Следующий()"
    И только после этого выборка будет возвращать объект после выполнения метода .ПолучитьОбъект().
    Т.е. код должен выглядеть так:
    Код:
    Выборка =  Справочники.ДоговорыКонтрагентов.Выбрать(,Сотрудник,,);
    НашлиДоговор = Ложь; // Это флаг для определения, нашли ли мы договор.
    Пока Выборка.Следующий() Цикл
    НашлиДоговор = Истина;
    // Здесь  Выборка - содержит найденный договор, и нам нужно с ним что-то сделать.
    НайденныйДоговор = Выборка.Ссылка;
    КонецЦикла;
    
    Если НЕ НашлиДоговор  Тогда // А вот тут уже придется его создавать...
    НайденныйДоговор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
    НайденныйДоговор.Владелец = Сотрудник;
    НайденныйДоговор.Наименование = "Договор Займа1";
    НайденныйДоговор.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоНаименованию("руб.");
    НайденныйДоговор.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Прочее;
    НайденныйДоговор.ВидВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом;
    Попытка
    НайденныйДоговор.Записать();
    Исключение
    Сообщить("Не удалось записать новый договор! ");
    Сообщить(ОписаниеОшибки());
    КонецПопытки;
    КонецЕсли;
    
    Не проверял.
  8. TopicStarter Overlay
    OIT
    Offline

    OIT Опытный в 1С

    Регистрация:
    7 май 2007
    Сообщения:
    347
    Симпатии:
    0
    Баллы:
    26
    Попытка записи ошибок не выдает
    Сообщений нет
    Но я захожу в справочник а там пусто
    Не пойму почему
    Благодарю Вас
Похожие темы
  1. Daron777
    Ответов:
    1
    Просмотров:
    1.292
  2. antylopa
    Ответов:
    5
    Просмотров:
    525
Загрузка...

Поделиться этой страницей