Имя: Пароль:
1C
1С v8
Как правильно выбрать Лист Excel из списка значений поля ввода?
0 geka-geka
 
20.01.12
09:19
Делаю так:

СписокВыбораЛисты = ЭлементыФормы.ПолеВвода1.СписокВыбора;
СписокВыбораЛисты.Очистить();
Для ТекущийНомерЛиста = 1 По КоличествоЛистов Цикл
   СписокВыбораЛисты.Добавить(Excel.WorkSheets(ТекущийНомерЛиста),Excel.WorkSheets(ТекущийНомерЛиста).Name);
КонецЦикла;

Лист = СписокВыбораЛисты.ВыбратьЭлемент("Выбор листа",1);

Реквизит Лист с типом "Произвольный"
Когда проходит метод "ВыбратьЭлемент" - все нормально, а после выбора из списка значением ПолеВвода1 становится строка "Com-объект", хотя  ПолеВвода1.СписокЗначений содержит все листы.
1 Рэйв
 
20.01.12
09:20
Все верно.Листы - COM объекты. Чего еще надо то?
2 geka-geka
 
20.01.12
09:24
Надо чтобы после выбора из списка значением ПолеВвода1 становилось не строка "Com-объект", а элемент из ПолеВвода1.СпискаЗначений
3 Rusty Nail
 
20.01.12
09:26
(2) ну сделай еще реквизит
4 Рэйв
 
20.01.12
09:28
(2)Оно и становится элементом. Элемент у тебя как раз СОМ объект
5 geka-geka
 
20.01.12
09:37
Код в (0) я делаю, из процедуры при открытии формы:
Лист = СписокВыбораЛисты.ВыбратьЭлемент("Выбор листа",1);
там Элемент из списка значений, но когда после того ка форма уже открылась после выбора из списка, значением Лист и соотвестсвенно ПоляВВода1 становится строка "Com-объект". Я бы хотел чтобы в поле ввода было значение из списка значений ПоляВВода
6 Рэйв
 
20.01.12
09:39
(5)Ты определись что тебе надо ЗНАЧЕНИЕ или ПРЕДСТАВЛЕНИЕ?
7 geka-geka
 
20.01.12
09:40
Вообще представление, но там ни то и не другое
8 Рэйв
 
20.01.12
09:41
(7)Там значение.Твой лист есксель
9 geka-geka
 
20.01.12
09:42
(7) там левая строка "СОМ-объект"
10 Рэйв
 
20.01.12
09:42
(9)Это не левая строка:-)..Это твой лист, я же говорю
11 geka-geka
 
20.01.12
09:43
у листа тип "СОМ-объект", у строки тип "Строка"
12 DSatan
 
20.01.12
09:47
СписокЛистов = Новый СписокЗначений;
       
       КоличествоЛистов = ExcelФайл.Sheets.Count;
       
       Если КоличествоЛистов = 1 Тогда
           ВыбранныйЛист = ExcelФайл.Sheets(1);
       Иначе    
           Для а = 1 По КоличествоЛистов Цикл
               //Лист = ExcelФайл.Sheets(а);
               СписокЛистов.Добавить(а, ExcelФайл.Sheets(а).Name);
           КонецЦикла;
           
           ИмяЛиста = СписокЛистов.ВыбратьЭлемент("Выберите лист Excel с данными для закачки", ВыбранныйЛист);
           Если ИмяЛиста = Неопределено Тогда
               Предупреждение("Не выбран лист Excel с данными для загрузки!");
               ExcelПриложение.Quit();
               Возврат;
           Иначе
               ВыбранныйЛист = ExcelФайл.Sheets(ИмяЛиста.Представление);
           КонецЕсли;
           
       КонецЕсли;
13 vmv
 
20.01.12
09:49
(0)

1. сделать обход листов эксель-файла через ком
2. в цикле обхода заполнить список значений листов
2. в итерации цикла: значение элемента ком-объект(лист эксель), представление строка ("Лист № " + НомерЛиста)
4. на форме создать поле выбора из полученного списка.

усе, крой топ, 500К в кассу
14 vmv
 
20.01.12
09:50
+(12) или значение списка номер листа, чтобы не юзать ком в списке, сгласен
15 Рэйв
 
20.01.12
09:52
(11)Про неявное приведение типов слышал?  Если нет то погугли:-)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.