Вход | Регистрация
 

Реквизит при СОМ соединении

Реквизит при СОМ соединении
Я
   dim3740
 
02.01.19 - 11:22
ДругаяБаза = Новый COMObject("V83.Application");
Подключение = ДругаяБаза.Connect(УЭ);
       
Выборка=ДругаяБаза.Документы.ПоступлениеНаРасчетныйСчет.Выбрать(НачДата,КонецДня(КонДата));
   Пока Выборка.Следующий()  Цикл  
    Сообщить("Выборка "+Выборка.СуммаДокумента); // верно
    Сообщить("ВО "+Выборка.ВидОперации); // НЕ ДАЕТ!! пишет "СОМОбъект"

Как получить реквизит Вид операции?
 
 
   Cyberhawk
 
1 - 02.01.19 - 11:23
Ну так примитивные типы только гуляют туда-сюда нативно
   Cyberhawk
 
2 - 02.01.19 - 11:25
Попробуй через String СОМ-объекта
   Cyberhawk
 
3 - 02.01.19 - 11:26
метод
   Cyberhawk
 
4 - 02.01.19 - 11:26
Ну или XMLСтрока
   ДенисЧ
 
5 - 02.01.19 - 11:27
Сообщить("ВО "+ДругаяБаза.XMLСтрока(Выборка.ВидОперации))
   butterbean
 
6 - 02.01.19 - 12:49
Application... в 2019 году? Серьезно?
   dim3740
 
7 - 02.01.19 - 13:17
(5) Спасибо, выводится. Да, само значение реквизита мне больше не нужно. Но дальше нужен фильтр на соответствие этого реквизита нужному Перечислению "ВидыОпераций", скажем "ПолучениеЗайма". Подскажите, как это сделать?

В итоге надо отобрать в подключаемой второй базе все поступления займов от организации первой базы.
   ГдеСобакаЗарыта
 
8 - 02.01.19 - 13:32
ДругаяБаза.Перечисления.ВидыОперацийПоступленияДенежныхСредств.ПолучениеЗайма
ДругаяБаза.Справочники.Организации.НайтиПоРеквизиту("ИНН", ИНН)
   dim3740
 
9 - 02.01.19 - 13:37
(1) Выборка=ДругаяБаза.Документы.ПоступлениеТоваровУслуг.Выбрать(НачДата,КонецДня(КонДата));
Пока Выборка.Следующий()  Цикл
  Если Найти(Выборка.Контрагент.ИНН,"02..")>0 Тогда

Вот тут же имхо не примитивный тип данных, т.е. ИНН, но работает... Но я не программист, попробую понять))) Спасибо.
   dim3740
 
10 - 02.01.19 - 13:55
(8) Выборка=ДругаяБаза.Документы.ПоступлениеНаРасчетныйСчет.Выбрать(НачДата,КонецДня(КонДата));
Пока Выборка.Следующий()  Цикл     
Сообщить("ВО "+ДругаяБаза.XMLСтрока(Выборка.ВидОперации));  //ок. есть ПолучениеЗайма

Если Выборка.ВидОперации = ДругаяБаза.Перечисления.ВидыОперацийПоступлениеДенежныхСредств.ПолучениеЗайма Тогда..

ничего не находит.
Понял, что ИНН - строка, а тут... перечисление.
 
 Рекламное место пустует
   ГдеСобакаЗарыта
 
11 - 02.01.19 - 14:52
Запрос = ДругаяБаза.NewObject("Запрос");
    Запрос.УстановитьПараметр("ДатаНачала", НачДата);
    Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(КонДата));
    Запрос.УстановитьПараметр("Организация", ДругаяБаза.Справочники.Организации.НайтиПоРеквизиту("ИНН", "7728599079"));
    Запрос.Текст = "ВЫБРАТЬ
    |    ПоступлениеНаРасчетныйСчет.Ссылка КАК Ссылка,
    |    ПоступлениеНаРасчетныйСчет.СуммаДокумента КАК СуммаДокумента,
    |    ПоступлениеНаРасчетныйСчет.Номер,
    |    ПоступлениеНаРасчетныйСчет.Дата
    |ИЗ
    |    Документ.ПоступлениеНаРасчетныйСчет КАК ПоступлениеНаРасчетныйСчет
    |ГДЕ
    |    ПоступлениеНаРасчетныйСчет.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    |    И ПоступлениеНаРасчетныйСчет.Проведен
    |    И ПоступлениеНаРасчетныйСчет.Организация = &Организация
    |    И ПоступлениеНаРасчетныйСчет.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеДенежныхСредств.ПолучениеЗайма)";
    
    Выборка = Запрос.Выполнить().Выбрать();
    
            
    Пока Выборка.Следующий()  Цикл  
        Сообщить("Поступило "+Выборка.СуммаДокумента + " от "+Формат(Выборка.Дата, "ДФ=dd.MM.yyyy"));
    КонецЦикла;

Правильные пацаны вот так делают
   dim3740
 
12 - 02.01.19 - 18:54
(11) Спасибо за подробный ответ! Все работает. Только в отбор поставил еще параметр с ИНН займодавца, т.е. основной организации первой базы, как и требовалось по ТЗ.
   Cyberhawk
 
13 - 02.01.19 - 20:19
Если без запроса, то сравнивать перечисление надо по индексу метаданных
   dim3740
 
14 - 03.01.19 - 07:32
Проблемка... Результат запроса свожу в таблицу. И она в первой базе. Но запрос "ПоступлениеНаРасчетныйСчет.Ссылка КАК Ссылка" - это ссылка на док второй базы. (Она у меня открывается и висит в панели задача). В итоге все вылетает с ошибкой "преобразования данных XDTO". 

Получается, я не смогу по клику ячейки проваливаться на док второй базы (тоже открытой), но находясь при этом в первой? (не очень то и надо, но... интересно).

В тогда: нельзя ли ВООБЩЕ не видеть как открываются иные базы, раз они не допустимы для расшифровок?
   PuhUfa
 
15 - 03.01.19 - 07:45
(14) >>Получается, я не смогу по клику ячейки проваливаться на док второй базы (тоже открытой), но находясь при этом в первой?
нет не можешь
>>В тогда: нельзя ли ВООБЩЕ не видеть как открываются иные базы, раз они не допустимы для расшифровок?
а что у тебя в панели задач? у меня ничего не появляется
   Провинциальный 1сник
 
16 - 03.01.19 - 07:58
(1) Нативно гуляет только строка. С числами возможны сюрпризы типа потери точности. Поэтому, когда я работаю с COM, предпочитаю передавать примитивные типы через сериализацию в строку.
   dim3740
 
17 - 03.01.19 - 08:30
(15) Я делаю так:
ДругаяБаза = Новый COMObject("V83.Application");
Подключение = ДругаяБаза.Connect(УЭ);
    Если НЕ Подключение Тогда
        Сообщить("Подключение к УЭ не удалось");
        Возврат;
    КонецЕсли;
 В результате БП другой базы\организация ОТКРЫВАЕТСЯ (во всеми рекламами и т.п.) что видно в панели задач.

Программно "закрываю" = разрываю СОМ после получения данных так:
ДругаяБаза=Неопределено;  
Подключение = Ложь;
Потом еще - мышкой. Иначе не умею(((
   dim3740
 
18 - 03.01.19 - 09:21
Может есть готовые решения: Мне нужно как главбуху осуществлять контроль разнесения мл.бухгалтерами выписок банка по разным базам ОДНОЙ группы компаний. Т.е. нечто ИНТЕРКОМПАНИ, но не автоформирование связанных доков, а только контроль ручных записей.  БП 3.0, 4-5 баз, файловый режим.
   hhhh
 
19 - 03.01.19 - 11:16
(18) в виде отчетов всё делай. То есть основной отчет у тебя, бух щелкает по ячейке: вызывается отчет-расшифровка, где можно просмотреть какие-то реквизиты, которые нужно.
   Nikoss
 
20 - 03.01.19 - 11:21
(6) что не так с Application в 2019 году?
   ГдеСобакаЗарыта
 
21 - 03.01.19 - 11:35
ДругаяБаза.Connect("File=;");
ДругаяБаза.Visible = false;

ДругаяБаза.ЗавершитьРаботуСистемы(Ложь);
ДругаяБаза = Неопределено;
   dim3740
 
22 - 03.01.19 - 11:49
(21) Это чтобы не открывалась. Ок. Счас попробую, закроется ли, если в настройках для юзера стоит "спрашивать при закрытии".
(19)  Это не по месту)) Понятно, что отчет... Задача, как с одного рабочего места главбуха, не напрягая мл.бухов, собрать с РАЗНЫХ баз, инфу... Скажем, если деньги в сумме 100 руб отправлялись как займ, значит в другой базе они должны сесть как получение займа, а не как за товар. И т.п.
   dim3740
 
23 - 03.01.19 - 12:26
(21)
ДругаяБаза = Новый COMObject("V83.Application");
Подключение=ДругаяБаза.Connect(УЭ);
ДругаяБаза.Visible = false;
Сама база не открывается, т.е. гуд, но рекламное окно есть в панели задач((( Его вроде убрать можно расширениями, но это другой вопрос.
На закрытие появляется вопрос, что требует изменения настроек юзера, что не есть хорошо. Но все равно ответы по существу, спс!
   ГдеСобакаЗарыта
 
24 - 03.01.19 - 13:41
Заведи служебного юзера у которого не будет настройки спрашивать при закрытии.

А вообще для твоей задачи кошернее использовать ХТТП-сервисы. Отправил запрос - получил ответ.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует