Поиск  Пользователи  Правила  Войти
Выгрузка в Excel Плохой тип переменной
 
"Процедура VExcel()
Exc=СоздатьОбъект("Excel.Application");
ИмяФайла=("C:\temp.xls");

НовыеРабочиеКниги=Exc.Workbooks;
РабочаяКнига=НовыеРабочиеКниги.Open(ИмяФайла);
КолРек=МФКатЦены.РазмерСписка();
Для Ном=1 по КолРек Цикл
Exc.Cells(1, Ном).Value=МФКатЦены.ПолучитьЗначение(Ном);
КонецЦикла

КонецПроцедуры

В результате сообщение
Exc.Cells(1, Ном).Value=МФКатЦены.ПолучитьЗначение(Ном);
{Обработка.ПечатьПрайсЛиста.Форма.Модуль(44)}: Плохой тип переменной

Вопрос: что не так?"
 
"> Exc.Cells(1, Ном).Value=МФКатЦены.ПолучитьЗначение(Ном);

Попробуйте например сделать так:
Exc.Cells(1, Ном).Value=1;
Вылезет ошибка? Нет - Хорошо
Но вообще-то Cells - это метод листа Excelевской книги, а если смотреть на вашу процедуру, то вы пытаетесь в приложении Excel найти ячейку

В 1С 8 можно найти такой пример:
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
Состояние("Обработка файла Microsoft Excel...");
ExcelЛист = Excel.Sheets(НомерЛистаExcel);
ExcelЛист.Cells(Row,Column).Value = 1;
"
 
"Не, ячейку мне находить не нужно
мне нужно выгрузить значения элементов списка в excel
если например делаю так:
Exc.Cells(1, Ном).Value=Ном;
Учитывая если размер списка равен - 4
то в excel вылазит в ячейку А1-"1", А2-"2" и тд до четырех
А вот вернуть значение списка согласно номеру как я это делаю ( МФКатЦены.ПолучитьЗначение(Ном))
не получается

"
 
"Тогда другой вопрос, а в качестве элементов списка у вас какой тип используется?
ПолучитьЗначение(,)
Синтаксис:
ПолучитьЗначение(<Позиция>,<Строка>)
Назначение:
Получить значение из указанной позиции списка.
Возвращает значение из списка.
Параметры:
<Позиция> - номер позиции в списке, из которой возвращается значение (изменяется от 1 до РазмерСписка);
<Строка> - идентификатор переменной, в которой возвращается символьное представление получаемого значения.

В Excel вы скорее всего можете передать строку или число, а у вас какой тип возвращается МФКатЦены.ПолучитьЗначение(Ном)(что в списке МФКатЦены)?"
 
"Дык Cells - не принадлежит классу Application, а принадлежит классу WorkSheet или Range
Надо примерно так:
Exc.ActiveSheet.Cells(1, Ном).Value="чего нибудь"

а еще лучше вообще сформировать ссылку на конкретный лист рабочей книги а потом именно в него слать значения, а то если алгоритм будет работать долго и пользователь параллельно сменит ActiveSheet, произойдет выдача значений уже в другой активный лист, короче, (пишу без теста и проверок), я бы делал так:
Exc=СоздатьОбъект("Excel.Application");
РабочаяКнига=Exc.Workbooks.Open(ИмяФайла);
ЛистКниги=РабочаяКнига.Sheets("Лист 1");
ЛистКниги.Cells(1, 1).Value="чего нибудь";"
 
вобщем начинаю рассказывать с самого начала
нужно справочник прайс лист выгрузить в ексель
для начала сделать шапку

у товара есть 4 категории цены
Закупочная, оптовая, мелкооптовая, розничная
эти категории можно выбирать из списка (МФКатЦен)
и выбраные категории нужно перенести в ексель
если например выбрать цены оптовая и розничная
должно получиться следующее
 ______A___________B_____________C_______________D________­>1| Наименование |  Артикул | Цена оптовая | Цена Розничная |
 
RE:  Дык Cells - не принадлежит классу Application, а принадлежит классу WorkSheet или Range
    Надо примерно так:
    Exc.ActiveSheet.Cells(1, Ном).Value="чего нибудь"
вот если туда написать "его нибудь" то это "чего нибудь" вылазит, причем вылазит правильно
если в списке выбрано два значения то и в ексель вылазит в А1-чего нибудь, B1-чего нибудь
а мне нужно чтобы вылазило значение списка МФКатЦены согласно его номеру в списке
 
"Если задача этим ограничивается, сделайте проще. Сформируйте печатную форму обычным сопособом, то есть прямо в 1С, а потом дайте команду:
Таб.Записать(ИмяФайла, 1);

Записать(,);
Синтаксис:
Записать(<ИмяФайла>,<ТипФайла>)
Назначение:
Записать таблицу в файл.
Параметры:
<ИмяФайла> - имя файла.
<ТипФайла> - необязательный параметр. Числовое или строковое выражение, определяющее тип файла:
· отсутствует, 0 или ''MXL'' - формат 1C;
· 1 или ''XLS'' - формат Ms Excel;
· 2 или ''HTM'' или ''HTML'' - формат HTML;
· 3 или ''TXT'' - формат TXT.
Замечание:
Метод может использоваться при работе с таблицей в режиме ввода данных.


P.S. Если хочется все таки в Excel через OLE, напишите, завтра отвечу"
 
Я пока так и сохраняю, только через Файл-сохранить как..
но в справочнике прайс лист около 10000 наименований и поэтому сохраняется он очень долго
 
"Посмотрите через отладчик какой тип возвращает
МФКатЦены.ПолучитьЗначение(Ном)
или можно еще так написать
Сообщить(ТипЗначенияСтр(МФКатЦены.ПолучитьЗначение(Ном)));

Тип должен быть либо строка, либо число
Если что-то другое, то нужно преобразовывать, тем болееесли это тип "Справочник" или "Документ""
Читают тему (гостей: 1)

Читайте нас: