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

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

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

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

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

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

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

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

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

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

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