Имя: Пароль:
1C
1С v8
Открытие управляемой формы выбора через V82C.Application
0 MRAK
 
03.01.13
10:48
Приложение = вичи_СинхронизацияСервер.ПолучитьСоединениеПриложения(Объект.ИнформационнаяБаза);
       Если НЕ Приложение = Неопределено Тогда
           Форма = Приложение.ПолучитьФорму("Справочник." + Объект.ИмяТипаВДругойИБ + ".ФормаВыбора",, Элемент);
           ВыбранныйЭлемент = Форма.ОткрытьМодально();
           Если НЕ ВыбранныйЭлемент = Неопределено Тогда
               ТекущиеДанные.ПредставлениеВДругойИБ = ВыбранныйЭлемент.Наименование;
           КонецЕсли;
       КонецЕсли;

Проблема с получением значения "ВыбранныйЭлемент". Получаю ComОбъект, у которого есть 2 свойства IsEmpty, UUID (у обоих значение "Ошибка чтения значения").
Что-то не могу допереть, как достучаться до свойств этого элемента? (по-идее, должен быть СправочникСсылка)
1 ДенисЧ
 
03.01.13
11:13
Возвращает не элемент, а наименование...
2 MRAK
 
03.01.13
11:16
(1) в базе, из который подключаюсь, аналогичный код возвращает "СправочникСсылка".
с какого хрена-то наименование возвратит?
3 ДенисЧ
 
03.01.13
11:16
(2) Ты возвращай из той базы. И нефиг по Оле брать объекты другой базы, геморрою не обереься
4 MRAK
 
03.01.13
11:19
(3) так в "той" базе нет объектов из "другой")
Хочется сделать обработку, где для пользователя удобно можно задать соответствия объектов двух баз.
в толстом подобное работало без гемора - а в тонком какая-то засада...
5 MRAK
 
03.01.13
11:32
А альтернативные варианты?

Сейчас думаю подключаться через "ComConnector", запросом выбирать данные из чуждой базы и выбрасывать на форму для выбора.

Или есть что-то интереснее?
6 Serjio
 
03.01.13
12:15
(0) Недавно тоже пришлось с такой задачей столкнуться.
В результате во второй базе добавил общий модуль и в нем функции, которые открывают нужные формы и возвращают ссылки.
Как я понимаю в (3) тебе примерно то же советовали
7 MRAK
 
03.01.13
12:23
(6) А, понял, спасибо.
Примера под рукой нет случайно? Буду благодарен
8 Serjio
 
03.01.13
13:03
(7)
Функция СоздатьФайл(ВидОбъекта="", Идентификатор="") Экспорт

   Попытка
       Если ПустаяСтрока(Идентификатор) Тогда
           ФормаВладелец = ПолучитьФорму("Справочник.Файлы.Форма.ХранилищеФайлов");
           ВладелецФайла = ОткрытьФормуМодально("Справочник.ПапкиФайлов.ФормаВыбора",,ФормаВладелец);
           Если ВладелецФайла <> Неопределено
               И НЕ ВладелецФайла.Пустая() Тогда
           Иначе
               Предупреждение(НСтр("ru = 'Для создания файлов необходимо выбрать папку, в которой они будут храниться.'"));
               Возврат Неопределено;    
           КонецЕсли;
       Иначе
           ВладелецФайла = ДоработкиСервер.ПолучитьСсылкуСправочникаПоИдентификатору(ВидОбъекта,Идентификатор);
           Если ВладелецФайла=Неопределено Тогда
               Возврат Неопределено;
           КонецЕсли;
           ФормаВладелец = ПолучитьФорму("Справочник."+ВидОбъекта+".ФормаОбъекта");
       КонецЕсли;
       
       // Создание из файла
       ПолноеИмяФайла = "";
       
       РасширениеПодключено = ПодключитьРасширениеРаботыСФайлами();
       Если РасширениеПодключено Тогда
           ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
           ВыборФайла.МножественныйВыбор = Ложь;
           ВыборФайла.Заголовок = НСтр("ru = 'Выбор файла'");
           ВыборФайла.Фильтр = НСтр("ru = 'Все файлы (*.*)|*.*'");
           
           РабочийКаталог = РаботаСФайламиВызовСервера.ПолучитьРабочийКаталог(ВладелецФайла);
           ВыборФайла.Каталог = РабочийКаталог;
           
           Результат = ВыборФайла.Выбрать();
           
           Если Не Результат Тогда
               Возврат Неопределено;
           КонецЕсли;
           
           ПолноеИмяФайла = ВыборФайла.ВыбранныеФайлы[0];
           Возврат РаботаСФайламиКлиент.СоздатьДокументНаОсновеФайла(ПолноеИмяФайла, ВладелецФайла, ФормаВладелец, Истина,,, ,, );
               
       КонецЕсли;
       
   Исключение
       Инфо = ИнформацияОбОшибке();
       Предупреждение(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
       НСтр("ru = 'Ошибка создания нового файла: ""%1""'"),
       Инфо.Описание ));
       Возврат Неопределено;
   КонецПопытки;
   
КонецФункции // СоздатьФайл()
9 sapphire
 
03.01.13
13:08
(0) По-любому в этом коде никогда не увидишь тип СправочникСсылка поскольку цепляешься по COM/OLE...
10 MRAK
 
03.01.13
15:20
(9) это понятно)
11 MRAK
 
03.01.13
15:21
(8) спасибо!
посмотрим...
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс