|
Помогите исправить ошибку - не меняет договор | ☑ | ||
---|---|---|---|---|
0
Sefuirosu
01.07.14
✎
22:06
|
Запрос = Новый Запрос("ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Ссылка, | РеализацияТоваровУслуг.ДоговорКонтрагента КАК ДоговорКонтрагента, | РеализацияТоваровУслуг.Контрагент КАК Контрагент |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Дата >= &ДатаНач | И РеализацияТоваровУслуг.Дата <= &ДатаКон | И РеализацияТоваровУслуг.ПометкаУдаления = ЛОЖЬ | И РеализацияТоваровУслуг.Организация = &Организация |"); Запрос.УстановитьПараметр("ДатаНач", ЭлементыФормы.ДатаНач.Значение); Запрос.УстановитьПараметр("ДатаКон", ЭлементыФормы.ДатаКон.Значение); Запрос.УстановитьПараметр("Организация", ЭлементыФормы.Организация.Значение); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); ДоговораСпр = Справочники.ДоговорыКонтрагентов; Пока Выборка.Следующий() Цикл Контрагент = Выборка.Контрагент.ПолучитьОбъект(); ДоговорКонтрагента = Выборка.ДоговорКонтрагента.ПолучитьОбъект(); ДоговорДляПроверки = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной договор с покупателем 2014",,,Контрагент.Ссылка); Если ПустаяСтрока(ДоговорДляПроверки) Тогда ДоговорК = ДоговораСпр.СоздатьЭлемент(); //ДоговорК.Организация = Справочники.Организации.НайтиПоКоду("00001"); ДоговорК.Организация = ЭлементыФормы.Организация.Значение; ДоговорК.Владелец = Контрагент.Ссылка; ДоговорК.Наименование = "Основной договор с покупателем 2014"; ДоговорК.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем; ДоговорК.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("643"); ДоговорК.Записать(); Контрагент.ОсновнойДоговорКонтрагента = ДоговорК.Ссылка; Контрагент.Записать(); ДоговорКонтрагента = Контрагент.ОсновнойДоговорКонтрагента; Контрагент.Записать(); КонецЕсли; КонецЦикла; Конфигурация: БП 2.0 Тип: Обработка. Что должно быть: 1) Система должна искать контрагентов, которые пользовались документом "РеализацияТоваровИУслуг" (в указанный в форме промежуток времени, по указанной организации), затем, во всех найденных контрагентах создает новый договор, с некоторыми параметрами и делает его основным. ----> Эта часть работает нормально. 2) Система должна заменить договор в "РеализацияТоваровИУслуг" на созданный договор. ----->>> Не работает, выдает ошибку: {Форма.Форма.Форма(1532)}: Метод объекта не обнаружен (Записать) ДоговорКонтрагента.Записать(); При этом, если выполнить отладку, также видно, что новый договор все еще не присваивается. Посмотрите пожалуйста, в чем моя ошибка. Большое спасибо за любую помощь! Весь день мучаюсь! |
|||
1
ДенисЧ
01.07.14
✎
22:17
|
ДоговорКонтрагента = Контрагент.ОсновнойДоговорКонтрагента;
тут у тебя ссылка. А ссылку ты не запишешь |
|||
2
Sefuirosu
01.07.14
✎
22:26
|
Понимаю.
А как тогда сделать правильным образом, чтобы запись прошла? Какое значение вытянуть? |
|||
3
Мимохожий Однако
01.07.14
✎
22:40
|
Сначала получи объект документа, потом замени ссылку договора и затем записывай.
|
|||
4
Sefuirosu
01.07.14
✎
22:47
|
Так вроде делаю:
ДоговорКонтрагента = Выборка.ДоговорКонтрагента.ПолучитьОбъект(); Вот в этот момент здесь ДоговорКонтрагента равен старому договору. Вот пытаюсь его заменить на новый и записать, но что-то у меня не получается. А с контрагентом нормально вышло. P.S: Там, в конце, была опчатка в записи, у меня так: ДоговорКонтрагента.Записать(); Но тоже не работает.... |
|||
5
mdocs
01.07.14
✎
22:56
|
да нафиг тебе объект договора - тебе нужен объект документа реализации и в нем надо заменить ссылку.
|
|||
6
GreatOne
01.07.14
✎
22:58
|
и правда, в запросе лишних полей целых 2.
Кстати ДоговорДляПроверки = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной договор с покупателем 2014",,,Контрагент.Ссылка);
Может лучше <> Неопределено или ЗначениеЗаполнено()? Как он вообще в условие попадает? |
|||
7
Sefuirosu
01.07.14
✎
23:14
|
mdocs, так это ведь и есть объект объект документа реализации, разве нет?
РеализацияТоваровУслуг.ДоговорКонтрагента КАК ДоговорКонтрагента Извиняюсь за свой тупеж, весь день сижу и наверно уже зациклился сам :)... |
|||
8
hhhh
01.07.14
✎
23:43
|
а где у вас ДоговорКонтрагента.Записать(); ?? Ведь нет этого в программе. Вы наверно нам совершенно другой кусок выложили
|
|||
9
Sefuirosu
01.07.14
✎
23:53
|
hhhh, да, там была опечатка.
Чтобы было удобнее всего, выложил файл самой обработки в интернет: http://files.mail.ru/80A43B2C313743F88EBD62C489C8C089 Кнопка обработки запускает "Процедура СозданиеДоговоровНажатие(Элемент)" Посмотрите пожалуйста, если не сложно. Буду очень признателен! |
|||
10
hhhh
02.07.14
✎
00:00
|
ну в общем как-то так
Реал = Выборка.Ссылка.ПолучитьОбъект(); Реал.ДоговорКонтрагента = ДоговорК.Ссылка; Реал.Записать(); |
|||
11
Sefuirosu
02.07.14
✎
10:01
|
Ага, заработало!
Большое спасибо! Думал сам в этом направлении, только затупил, и неправильно сделал переменную. |
|||
12
Sefuirosu
02.07.14
✎
10:27
|
А как теперь найти и обойти все документы по найденным (обработкой) в РеализацииТоваровИУслуг контрагентам, в которых присутствует тип договора "с покупателем" и поменять в этих документах их текущие договора на новый (который создает обработка)?
Т.е. теперь надо подставить найденным контрагентам во все их документы, в которых присутствуют договора с покупателями созданный договор. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |