Ситуация такова - С УТП через V3Com создается документ ( Заказ Покупателя в СчетНаОплату) ;
Шапка заполняется корректно, но есть проблемы с заполнением доп реквизитов ( Договор)
для его заполнения использую серверную функцию ;
Собственно , Ошибка и Код ;
Помилка при виклику методу контексту (УстановитьДоговорКонтрагента)
{ОбщийМодуль.syn_ОбщегоНазначения.Модуль(278)}: Рез = V3.БухгалтерскийУчетПереопределяемый.УстановитьДоговорКонтрагента(
{Документ.ЗаказПокупателя.Форма.ФормаДокумента.Форма(3050)}: syn_ОбщегоНазначения.ПередатьДокументV3(ЭтотОбъект);
через:
Відбулася виняткова ситуація (BAF 8.3.19.1529): {ОбщийМодуль.БухгалтерскийУчетПереопределяемый.Модуль(335)}: Помилка при виклику методу контексту (Выполнить)
{(18, 40)}: Неправильні параметри
И ДоговорыКонтрагентов.ВидДоговора В (<<?>>&СписокВидовДоговора)
Область ПолучениеПередачаДанныхCOM
// Функции и процедуры работы с COM - Данными;
Процедура ПередатьДокументV3(ОбъектВыгрузки) Экспорт
Перем СчетПриемник,ОрганизацияПриемник,КонтрагентПриемник,СчетПокупателюПриемник;
//ОбъектВыгрузки = Документы.ЗаказПокупателя.СоздатьДокумент();
Если ТипЗнч(ОбъектВыгрузки) <> Тип("ДокументОбъект.ЗаказПокупателя") Тогда Возврат КонецЕсли;
ТекстОшибки = "Документ должен быть записан и проведен - Отказ в передаче";
Если ОбъектВыгрузки.ЭтоНовый() Тогда Предупреждение(ТекстОшибки); Возврат КонецЕсли;
Если НЕ ОбъектВыгрузки.Проведен Тогда Предупреждение(ТекстОшибки); Возврат КонецЕсли;
ТекстОшибки = "Нет данных для Выгрузки";
Если ОбъектВыгрузки.ТоварыБух.Количество() = 0 Тогда Предупреждение(ТекстОшибки); Возврат КонецЕсли;
Если НЕ ЗначениеЗаполнено(ОбъектВыгрузки.СтруктурнаяЕдиница) Тогда Возврат КонецЕсли;
ИсходныйСчетСсылка = ОбъектВыгрузки.СтруктурнаяЕдиница.Ссылка;
ДанныеОбмена = ПолучитьНастройкуОбменаДляСчетаБанка(ИсходныйСчетСсылка);
V3 = ВыполнитьПодключениеКИБПриемнику(ДанныеОбмена);
// Данные
СчетПриемник = ПолучитБанковскийСчет(СокрЛП(ИсходныйСчетСсылка.НомерСчета),V3);
Если СчетПриемник <>Неопределено Тогда
ОрганизацияПриемник = СчетПриемник.Владелец.Ссылка;
КонецЕсли;
КонтрагентПриемник = ПолучитьКонтрагентаПриемника(СокрЛП(ОбъектВыгрузки.Контрагент.КодПоЕДРПОУ),V3);
// создаем документ Счет;
СчетПокупателюПриемник = V3.Документы.СчетНаОплатуПокупателю.СоздатьДокумент();
СчетПокупателюПриемник.Дата = ТекущаяДата();//ОбъектВыгрузки.Дата;
СчетПокупателюПриемник.Организация = ОрганизацияПриемник;
СчетПокупателюПриемник.СтруктурнаяЕдиница = СчетПриемник;
СчетПокупателюПриемник.Контрагент = КонтрагентПриемник;
СчетПокупателюПриемник.Комментарий = "Создано из УТП";
СчетПокупателюПриемник.ОбменДанными.Загрузка= Истина;
//СчетПокупателюПриемник.Записать();
// Выолним метод Приемника;
СписокДоговоровПриемник = ПолучитьМассивВидовДоговоровПриемника(V3);
Рез = V3.БухгалтерскийУчетПереопределяемый.УстановитьДоговорКонтрагента(
СчетПокупателюПриемник.ДоговорКонтрагента, СчетПокупателюПриемник.Контрагент, СчетПокупателюПриемник.Организация,
СписокДоговоровПриемник);
V3= Неопределено; // разрыв соединения;
КонецПроцедуры
Функция ПолучитБанковскийСчет(ИсходныйСчет,Соединение)
Рез = Неопределено;
//Возврат Соединение.Справочники.БанковскиеСчета.НайтиПоРеквизиту("НомерСчета",ИсходныйСчет); не отрабатывает , так как Владелец может быть и Контрагент;
Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| БанковскиеСчета.Ссылка КАК Ссылка
|ИЗ
| Справочник.БанковскиеСчета КАК БанковскиеСчета
|ГДЕ
| БанковскиеСчета.НомерСчета = &НомерСчета
| И ТИПЗНАЧЕНИЯ(БанковскиеСчета.Владелец) = ТИП(Справочник.Организации)";
Запрос = Соединение.NewObject("Запрос");
Запрос.Текст = Текст;
Запрос.УстановитьПараметр("НомерСчета", ИсходныйСчет);
ТЗ = Запрос.Выполнить().Выгрузить();
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Рез = Выборка.Ссылка;
КонецЦикла;
Возврат Рез;
КонецФункции
Функция ПолучитьКонтрагентаПриемника(КодЕДРПОУ,Соединение)
Возврат Соединение.Справочники.Контрагенты.НайтиПоРеквизиту("КодПоЕДРПОУ",КодЕДРПОУ);
КонецФункции
Функция ПолучитьМассивВидовДоговоровПриемника(Соединение)
СписокВидовДоговоров = Соединение.NewObject("Массив");
СписокВидовДоговоров.Добавить(ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.СПокупателем"));
СписокВидовДоговоров.Добавить(ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.СКомиссионером"));
СписокВидовДоговоров.Добавить(ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.СКомитентом"));
Возврат СписокВидовДоговоров;
КонецФункции
#КонецОбласти