Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/35: Рейтинг темы: голосов - 35, средняя оценка - 4.60
2 / 2 / 0
Регистрация: 21.11.2011
Сообщений: 57
1

Выгрузка данных в Excel

02.12.2011, 11:18. Просмотров 6859. Ответов 11
Метки нет (Все метки)

Добрый день!
Посмотрите пожалуйста. Есть в обработке таблица значений, в которую я выгружаю данные их XML, после этого я корректирую таблицу и хочу чтобы программа сохранила ее в новый документ эксель. Для этого я создал процедуру "Процедура СохранитьНажатие(Элемент) Экспорт". При сохранении выскакивает: "Ошибка при установке значения атрибута контекста (Value)". Насколько я понимаю, программе не нравится тип значения, который я передаю.
Переменные:

ТПП - "табличное поле правил", в ней уже занесены некотрые значения из XML
НоменклатураЗагрузки, НоменклатураБазы - имена столбцов ТПП
СтолбЗагр, СтолбБаз - столбцы в экселе

Код процедуры:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
СтолбЗагр = 1;
СтолбБаз = 2;
 
Если ИнициализацияЭкселя() Тогда
      Книга = Excel.WorkBooks.Add();
      Sheet = Книга.Sheets(1);
    
      Для каждого стр из ТПП Цикл
              Sheet.Cells(стр,СтолбЗагр).Value=стр.НоменклатураЗагрузки;
              Sheet.Cells(стр,СтолбБаз).Value=стр.НоменклатураБазы;
      КонецЦикла;
 
      Попытка
              Книга.SaveAs("F:\1CBaseнешнии обработки\правила.xls");
      Исключение
              Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
              Возврат;
      КонецПопытки;
КонецЕсли;
Сообщить("Готово");
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2011, 11:18
Ответы с готовыми решениями:

Выгрузка картинок в Excel
Выгружаю список номенклатуры из 1с в ексель, при этом в номенклатуре храниться путь картинки, при...

Выгрузка информации из Excel в 1с
Добрый день! Случилась такая проблема, что на рабочем компьютере пропал файл с выгрузкой реализации...

Подскажите пожалуйста(выгрузка в excel)
Помогите пожалуйста. Выгружаю из 1С оборотно-сальдовую ведомость в шаблонный файл excel, т.е....

Выгрузка в excel
Как сделать выгрузку в Excel справочника и документа

11
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
02.12.2011, 11:32 2
СохранитьНажатие(Элемент) это событие формы
в этой процедуре пропиши вызов другой процедуры, например СохранитьВЭксель();
саму же процедуру СохранитьВЭксель() добавь в модуль объекта и сделай её экспортной. Вставь свой код представленный выше.
обращение из формы будет ЭтотОбъект.СохранитьВЭксель();
1
2 / 2 / 0
Регистрация: 21.11.2011
Сообщений: 57
02.12.2011, 11:56  [ТС] 3
СохранитьНажатие(Элемент) это событие формы
в этой процедуре пропиши вызов другой процедуры, например СохранитьВЭксель();
саму же процедуру СохранитьВЭксель() добавь в модуль объекта и сделай её экспортной. Вставь свой код представленный выше.
обращение из формы будет ЭтотОбъект.СохранитьВЭксель();
В МодулеОбъекта создал функцию "Процедура СохранитьВЭксель(ТПП) Экспорт"
Прописал в ней тотже код, что выше. В событии формы написал: ЭтотОбъект.СохранитьВЭксель(ТПП);
Выскочила ошибка: Ошибка при вызове метода контекста (Cells)
Что я нетак сделал?
0
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
02.12.2011, 12:10 4
процедуру ИнициализацияЭкселя() тоже закинь в модуль объекта
СохранитьВЭксель(ТПП), параметр ТПП скорее всего не нужен
1
2 / 2 / 0
Регистрация: 21.11.2011
Сообщений: 57
02.12.2011, 12:19  [ТС] 5
Да я именно так и сделал, просто забыл упомянуть, ТПП нужна в противном случае он не понимает что это за переменная

Добавлено через 4 минуты
Проблема вот в чем:
Sheet.Cells(стр,СтолбЗагр).Value=1;
Sheet.Cells(стр,СтолбБаз).Value=2;

Так работает, но если я поставлю
Sheet.Cells(стр,СтолбБаз).Value=стр.НоменклатураБазы;
Выдает ошибку "Ошибка при установке значения атрибута контекста (Value)".

Дело в том что "стр.НоменклатураБазы" - это справочник ссылка, если у нее текстовый тип то программа глотает и записывает.
0
19 / 19 / 1
Регистрация: 15.11.2011
Сообщений: 54
02.12.2011, 12:22 6
чет вы мудрено делаете.
У вас не правильно указывается адресс ячейки в cell. Если стр - это коллекция или массив записей, то он не может нести в себе номер ячейки.
Не знаком с 1C, но програмлю в Excel и делаю выгрузки из других систем.
1
2 / 2 / 0
Регистрация: 21.11.2011
Сообщений: 57
02.12.2011, 12:28  [ТС] 7
В данный момент ему не нравится присваемое значение к ячейке экселя (если я правильно понимаю сообщение "Ошибка при установке значения атрибута контекста (Value)" )

Причем если тип значения строка, то он его получает без вопросо, если тип значения СправочникССсылка, то он руегается на "Ошибка при установке значения атрибута контекста (Value)".

Я просто не понимаю как обратиться к такому типу переменных чтобы получить значение типа строка.
0
19 / 19 / 1
Регистрация: 15.11.2011
Сообщений: 54
02.12.2011, 12:30 8
а принудительно все значения в текст перевести нельзя?
1
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
02.12.2011, 12:30 9
стр.НоменклатураБазы.Наименование например
1
2 / 2 / 0
Регистрация: 21.11.2011
Сообщений: 57
02.12.2011, 12:32  [ТС] 10
стр.НоменклатураБазы - это уже есть наименование интересующего меня поля (имя столбца), в некотрых случаях можно писать: стр.НоменклатураБазы.Значение, но это нетот случай

Добавлено через 56 секунд
Спасибо вам большое, вы меня на правильный путь направили, мне сейчас только понять как получить значение из данного элемента
0
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
02.12.2011, 12:34 11
значение из Excel?
1
2 / 2 / 0
Регистрация: 21.11.2011
Сообщений: 57
02.12.2011, 12:43  [ТС] 12
Рабочий код:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Функция ИнициализацияЭкселя()
 
    //Пытаемся подключиться к Excel
    Попытка
        Excel = новый COMОбъект("Excel.Application");
        Сообщить("=====> Загрузка производится через MS Excel...");
        Возврат Истина;
    Исключение
        Возврат Ложь                
    КонецПопытки;     
    
КонецФункции
 
 
Процедура СохранитьНажатие(Элемент) Экспорт
    СтолбЗагр = 1; // задаю номер столбца№1 в эксель
    СтолбБаз = 2;  // задаю номер столбца№2 в эксель
    
    Если ИнициализацияЭкселя() Тогда
        Книга = Excel.WorkBooks.Add(); // создал новый документ
        Sheet = Книга.Sheets(1);          // открыл страницу 1
   
// цикл для заполнения таблицы эксель данными из табличного поля (по двум полям)     
        Для каждого стр из ТПП Цикл
            Sheet.Cells(стр,СтолбЗагр).Value=стр.НоменклатураЗагрузки;
            Sheet.Cells(стр,СтолбБаз).Value=стр.НоменклатураБазы.Наименование;
        КонецЦикла;
 
//выполняю сохранение документа       
        Попытка
            Книга.SaveAs("F:\1CBaseнешнии обработки\правила12.xlsx");
        Исключение
            Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
            Возврат;
        КонецПопытки;
    КонецЕсли;
    Книга.Application.Quit();
    Сообщить("Готово");
КонецПроцедуры
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2011, 12:43

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Выгрузка данных в Excel с ограниченным количеством строк
Добрый день! Мне нужно выгружать в каждый файл Excel до 1000 строк с базы данных. Вот мой код:...

Выгрузка в Excel
Добрый день! Может кто сталкивался с такой проблемой. У меня стоит офис 2010, у пользователя офис...

Выгрузка в Excel
Пытаюсь выгрузить данные в Excel. Нужно создавать книгу, и в ней три листа. Вот пример: Попытка...

Выгрузка ТЧ обработки В Excel
Здравствуйте. В собственной конфигурации 1С 8.3 есть обработка, у которой есть реквизит формы:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.