Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 3
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Проблема с вызовом серверной функции через V3ComCon , Проблема с вызовом серверной функции через V3ComCon ( или параметры )          
Profi_1C77 Подменю пользователя
сообщение 05.08.25, 19:19
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 150
Из: Черкассы
Спасибо сказали: 32 раз
Рейтинг: 32

Ситуация такова - С УТП через 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("Массив");
    СписокВидовДоговоров.Добавить(ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.СПокупателем"));
    СписокВидовДоговоров.Добавить(ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.СКомиссионером"));
    СписокВидовДоговоров.Добавить(ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.СКомитентом"));

    Возврат СписокВидовДоговоров;

КонецФункции


#КонецОбласти



xlmel Подменю пользователя
сообщение 06.08.25, 7:46
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 64
Из: Харьков
Спасибо сказали: 33 раз
Рейтинг: 35.7

СписокВидовДоговоров.Добавить(ПредопределенноеЗначение("Перечисление.ВидыДоговоровКонтрагентов.СПокупателем"));
Фактически Вы в СОМ-объект пытаетесь добавить значение ссылочное значение из текущей базы.
Надо сделать
СписокВидовДоговоров.Добавить(V3.Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
Ну и в отладчике проверьте, что на самом деле представляет из себя СписокВидовДоговоров

Спасибо сказали: Profi_1C77,

Profi_1C77 Подменю пользователя
сообщение 06.08.25, 8:56
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 150
Из: Черкассы
Спасибо сказали: 32 раз
Рейтинг: 32

xlmel @ Сегодня, 8:46 * ,
Вчера действитиельно допер, что массив был "пустой" заполнялся элементами УТП а не BAS

И вопрос походу как отладку норм сделать , что б " прыгало" из УТП в BAS? OData или внешнее соед. ?

xlmel Подменю пользователя
сообщение 06.08.25, 10:15
Сообщение #4

Говорящий
***
Группа: Пользователи
Сообщений: 64
Из: Харьков
Спасибо сказали: 33 раз
Рейтинг: 35.7

Profi_1C77 @ Сегодня, 8:56 * ,
думаю, что никак не сделать.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 21.08.25, 21:42
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!