|
Входящее платежное поручение и номер договора | ☑ | ||
---|---|---|---|---|
0
nebelung
09.05.14
✎
22:09
|
Здравствуйте,
Создаю подписку на событие проведения входящего платежа. В процедуру обработки подписки при этом система передает ссылку на документ источник, в данном случае ссылку на входящее платежное поручение. Вопрос, каким образом по ссылке узнать договор контрагента. Процедура ИнформироватьМакроАккаунтОПоступленииНовогоВходящегоПлатежа(Источник, Отказ) Экспорт ВнешнийСервис = WSСсылки.InfromMacroAccount.СоздатьWSПрокси("http://tempuri.org/","InformFrom1C","BasicHttpBinding_IInformFrom1C"); ВнешнийСервис.InformIncomeUpdates(); Запись = Источник.Ссылка; Договор = Запись.РасшифровкаПлатежа.ДоговорКонтрагента; При попытке получить из РасшифровкиПлатежа договор контрагента, выдает ошибку "Поле Объекта ДоговорКонтрагента не обнаружено" |
|||
1
Alamo-10
09.05.14
✎
22:36
|
(0) Ну так РасшифровкаПлатежа - это ж, табличная часть вроде. Обходи коллекцию, выбирай договоры
|
|||
2
nebelung
10.05.14
✎
22:25
|
Сделал так
Процедура ИнформироватьМакроАккаунтОПоступленииНовогоВходящегоПлатежа(Источник, Отказ) Экспорт ВнешнийСервис = WSСсылки.InfromMacroAccount.СоздатьWSПрокси("http://tempuri.org/","InformFrom1C","BasicHttpBinding_IInformFrom1C"); ВнешнийСервис.InformIncomeUpdates(); Запись = Источник.Ссылка; Запрос = Новый Запрос("ВЫБРАТЬ ПлатежноеПоручениеВходящее.РасшифровкаПлатежа.ДоговорКонтрагента | КАК Договора, ПлатежноеПоручениеВходящее.Номер КАК Номер, | ПлатежноеПоручениеВходящее.Дата КАК ДатаПлатежа |ИЗ | Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее |ГДЕ ПлатежноеПоручениеВходящее.Номер = &Nomer И ГОД(ПлатежноеПоручениеВходящее.Дата)=&God"); ГодЗаписи = Год(Запись.Дата); Запрос.УстановитьПараметр("Nomer",Запись.Номер); Запрос.УстановитьПараметр("God",ГодЗаписи ); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл ДогКонтр = Выборка.Номер; ДоговорКонтрагента= Выборка.Договора.Выбрать(); Пока ДоговорКонтрагента.Следующий() Цикл НомерДоговора = ДоговорКонтрагента.ДоговорКонтрагента; КонецЦикла; КонецЦикла; Текст=Новый ТекстовыйДокумент; Текст.УстановитьТипФайла(КодировкаТекста.UTF8); Текст.ДобавитьСтроку(Запись.СуммаДокумента); Текст.ДобавитьСтроку(ДогКонтр); //Текст.ДобавитьСтроку(Запись.Ссылка.ДоговорКонтрагента); Текст.Записать("C:\Дятель.utf"); //Текст.Записать(Запись.СуммаДокумента); Текст=Неопределено; Данные=Новый ДвоичныеДанные("C:\Дятель.utf"); Строка64=Base64Строка(Данные); Строка64=Прав(Строка64,СтрДлина(Строка64)-4); ДанныеНаЗапись=Base64Значение(Строка64); ДанныеНаЗапись.Записать("C:\Дятель.txt"); КонецПроцедуры |
|||
3
zmaximka
10.05.14
✎
22:47
|
ну может надо написать
Пока ДоговорКонтрагента.Следующий() Цикл НомерДоговора = ДоговорКонтрагента.НомерДоговора; КонецЦикла; |
|||
4
nebelung
11.05.14
✎
00:09
|
В итоге вместе в вызовом веб сервиса
Если вдруг кому интересно Процедура ИнформироватьМакроАккаунтОПоступленииНовогоВходящегоПлатежа(Источник, Отказ) Экспорт ВнешнийСервис = WSСсылки.InfromMacroAccount.СоздатьWSПрокси("http://tempuri.org/","InformFrom1C","BasicHttpBinding_IInformFrom1C"); Запись = Источник.Ссылка; Запрос = Новый Запрос("ВЫБРАТЬ ПлатежноеПоручениеВходящее.РасшифровкаПлатежа.ДоговорКонтрагента | КАК Договора, ПлатежноеПоручениеВходящее.Номер КАК Номер, | ПлатежноеПоручениеВходящее.Дата КАК ДатаПлатежа |ИЗ | Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее |ГДЕ ПлатежноеПоручениеВходящее.Номер = &Nomer И ГОД(ПлатежноеПоручениеВходящее.Дата)=&God"); ГодЗаписи = Год(Запись.Дата); Запрос.УстановитьПараметр("Nomer",Запись.Номер); Запрос.УстановитьПараметр("God",ГодЗаписи ); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл НомерПлатежа = Выборка.Номер; ДатаПлатежа = Выборка.ДатаПлатежа; ДоговорКонтрагента= Выборка.Договора.Выбрать(); Пока ДоговорКонтрагента.Следующий() Цикл НомерДоговора = ДоговорКонтрагента.ДоговорКонтрагента; КонецЦикла; КонецЦикла; ТипWSПараметров = ВнешнийСервис.ФабрикаXDTO.Пакеты.Получить("http://tempuri.org/").Получить("InformIncomeUpdatesByPayment"); WSПараметр = ВнешнийСервис.ФабрикаXDTO.Создать(ТипWSПараметров); WSПараметр.contractNo = СокрЛП(НомерДоговора); WSПараметр.paymentNo = СокрЛП(НомерПлатежа); WSПараметр.paymentDate = ДатаПлатежа; ВнешнийСервис.InformIncomeUpdatesByPayment(WSПараметр.contractNo,WSПараметр.paymentNo, WSПараметр.paymentDate); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |