8.х Помогите разобраться

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

  1. TopicStarter Overlay
    Panchos
    Offline

    Panchos Опытный в 1С

    Регистрация:
    27 окт 2006
    Сообщения:
    101
    Симпатии:
    0
    Баллы:
    26
    В 1с есть повторяющиеся договора. Написал обработку, которая перепревязывает договора в документе. Но единственная проблема, при перепревязке договоров - не снимается ссылка в документе со старого договора. И получается, что к этому документу привязаны сразу два договора. Помогите разобраться.
  2. Pilgrim
    Offline

    Pilgrim Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    26
    А как ты новый договор к документу привязываешь?
  3. TopicStarter Overlay
    Panchos
    Offline

    Panchos Опытный в 1С

    Регистрация:
    27 окт 2006
    Сообщения:
    101
    Симпатии:
    0
    Баллы:
    26
    Код:
    Запрос = Новый    Запрос("
    |ВЫБРАТЬ
    |    РеализацияТоваровУслуг.Ссылка,
    |    РеализацияТоваровУслуг.ДоговорКонтрагента
    |ИЗ
    |    Документ.РеализацияТоваровУслуг КАК    РеализацияТоваровУслуг
    |ГДЕ
    |    РеализацияТоваровУслуг.ДоговорКонтрагента    =    &Договор 
    |                        Union
    |ВЫБРАТЬ
    |    ПриходныйКассовыйОрдер.Ссылка,
    |   ПриходныйКассовыйОрдер.ДоговорКонтрагента
    |ИЗ
    |    Документ.ПриходныйКассовыйОрдер    КАК    ПриходныйКассовыйОрдер
    |ГДЕ
    |    ПриходныйКассовыйОрдер.ДоговорКонтрагента    =    &Договор
    |                        Union
    |ВЫБРАТЬ
    |    ПлатежноеПоручениеВходящее.Ссылка,
    |   ПлатежноеПоручениеВходящее.ДоговорКонтрагента
    |ИЗ
    |    Документ.ПлатежноеПоручениеВходящее    КАК    ПлатежноеПоручениеВходящее
    |ГДЕ
    |    ПлатежноеПоручениеВходящее.ДоговорКонтрагента    =    &Договор  ");
    
    
    
    Запрос.УстановитьПараметр("Договор", ВыбДоговор);
    
    ДокВыборка    =    Запрос.Выполнить().Выбрать();
    
    Пока    ДокВыборка.Следующий()    Цикл
    
    ДокОбъект    =    ДокВыборка.Ссылка.ПолучитьОбъект();
    
    ДокОбъект.ДоговорКонтрагента = НовДоговор;
    
    Сообщить("ДоговорПерепревязанНа: "+НовДоговор.Код+"    Договор:    "+ДокВыборка.Ссылка);
    
    Попытка
    ДокОбъект.Записать();
    Исключение
    Сообщить(ОписаниеОшибки());
    КонецПопытки;
    
    ОбработкаПрерыванияПользователя();
    КонецЦикла;
    
  4. Pilgrim
    Offline

    Pilgrim Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    26
    А с чего ты взял, что остается ссылка на старый договор?
  5. Deosfen
    Offline

    Deosfen Опытный в 1С

    Регистрация:
    6 фев 2007
    Сообщения:
    67
    Симпатии:
    0
    Баллы:
    26
    А документы проведены? если да, то ДокОбъект.Записать(); - не проведется
  6. Pilgrim
    Offline

    Pilgrim Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    26
    Да это тут не причем, просто Сообщить("....") стоит до записи документа и естественно показывает старый договор, а в том же сообщении стоит код нового договора, вот видимо и решил, что два договора привязались :unsure:
  7. hTonus
    Offline

    hTonus

    Регистрация:
    26 мар 2007
    Сообщения:
    30
    Симпатии:
    0
    Баллы:
    1

    Во-первых договор не привязывается, а записывается в реквизит. Следовательно одновременная "привязка" двух договоров в принципе не возможна! Второе, в теле Сообщить он выводит код нового договора и представление документа, в котором договор не присутствует. Третье, если документ не проведется, то сработает исключение - будет видно. В целом код работоспособный, но не уверен что так можно делать, так как у старого и нового договоров могут быть разные реквизиты которые в свою очередь влияют на реквизиты документа. При такой замене не генерится событие ПриИзмененииДоговора (или как его там...) следовательно в документе никак не будет "заметно" что договор изменен, ну кроме того что собственно ссылка будет указывать на другой договор... В общем думай! Удачи.
Похожие темы
  1. Михаил.
    Ответов:
    3
    Просмотров:
    214
Загрузка...

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