Полигон 1С
06 Февраль 2012, 09:23:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: НОВЫЕ РАЗДЕЛЫ НА ФОРУМЕ: РАБОТА И ОБРАЗОВАНИЕ, КЛУБ ПУТЕШЕСТВЕННИКОВ, БЫТОВАЯ ТЕХНИКА, ПОЛИТИКА И ЭКОНОМИКА, ЗДОРОВЬЕ, БИБЛИОТЕКА, КУХНЯ, БАРНАЯ СТОЙКА
Расширенный поиск  
Страниц: [1] 2 3 4   Вниз
Печать
Автор Тема: v8.Работа с таблицами xls  (Прочитано 8625 раз)
0 Пользователей и 1 Гость смотрят эту тему.
alexey
Гость
« : 02 Октябрь 2007, 09:08:50 »

Наверно каждому, кто связал себя с 1С приходится рано или поздно столкнуться с проблемой загрузки или выгрузки информации из xls.
Примеров много, но для начинающих постараюсь разъяснить все доступным языком:
Пример:
//1. пытаемся прочитать, если возникают ошибки то предупреждаем пользователя
Попытка
   Загрузка = ПолучитьCOMОбъект(ПутьКФайлу);
        //Синтаксис:
        //ПолучитьCOMОбъект(<Имя файла>, <Имя класса COM>);
        //ПолучитьCOMОбъект("C:\DATA\DATA.XLS");
        //Создание нового экземпляра объекта
        //ПолучитьCOMОбъект("", "Excel.Application");
        //В дальнейшем этот документ может быть программно заполнен и сохранен в файл.
Исключение
   Предупреждение("Не удалось загрузить информацию из файла!!!",10);
   Возврат;
КонецПопытки;
//2. прочитали файл необходимо считать с него информацию
//допустим мы читаем информацию с листа 1, со строки 2
НомерЛиста = 1;
//читаем по 10-ю строку
Для НомерСтроки = 2 По 10 Цикл
         //читаем колонки с 1-ой по 15-ю
         Для НомерКолонки = 1 По 15 Цикл
                  НеобходимоеЗначение = Загрузка.Sheets(НомерЛиста).Cells(НомерСтроки,НомерКолонки).Value;
                  //думаю здесь все понятно
                  //в НеобходимоеЗначение записывается значение с конкретного листа, из конкретной строки и конкретной колонки, далее это значение этой можно передать куда необходимо
         КонецЦикла;
КонецЦикла;
//закрываем объект xls
Загрузка.Application.Quit();
При чтении их файлов могут возникать некоторые проблемы связанные с тем, что допустим файл xls создан в другой версии MS Office, отличной от установленной у Вас. Это можно поправить просто пере сохранив файл..
Пример сохранения отчета в формате xls:
Счетчик = 0;
Макет = ПолучитьМакет("МакетОтчета");
Шапка = Макет.ПолучитьОбласть("Шапка");
ТО = Новый ТабличныйДокумент();
ТО.Вывести(Шапка);
//Допустим есть некая ТаблицаОтчета содержащая таблицу некоторых событий
Для Каждого СтрокаОтчета Из ТаблицаОтчета Цикл
   Счетчик = Счетчик + 1;
   Данные = Макет.ПолучитьОбласть("Данные");
   Данные.Параметры.Счетчик = Число(ТаблицаОтчета.Индекс(СтрокаОтчета))+1;
   Данные.Параметры.ДатаВремя = СтрокаОтчета.ВремяСобытия;
   Данные.Параметры.Результат = СтрокаОтчета.РезультатСобытия;
   Данные.Параметры.Описание = СтрокаОтчета.ОписаниеСобытия;
   ТО.Вывести(Данные);
КонецЦикла;
ТО.Записать(КаталогВременныхФайлов()+"\otchet.xls","XLS");
//ну и откроем результат
ЗапуститьПриложение(КаталогВременныхФайлов()+"\otchet.xls");
Записан
JEKA
Администратор
*****

Карма: +67/-2
Offline Offline

Сообщений: 4627


ГЫ-ГЫ


WWW
« Ответ #1 : 13 Июль 2008, 11:39:34 »


далее это значение этой можно передать куда необходимо

А как программно создать новый элемент справочника контрагенты, присвоить ему код и наименование и записать?
Записан

Vasko
Ветеран
*****

Карма: +8/-0
Offline Offline

Сообщений: 577



« Ответ #2 : 13 Июль 2008, 19:52:34 »

Спр=Справочники.Контрагенты.СоздатьЭлемент();
Спр.Код=бла-бла-бла;
Спр.Наименование=бла-бля-бла;
//другие реквизиты
Спр.бла-бла-бла=бла-бла-бла;
Спр.Записать();
Записан
sherhan
Новичок
*

Карма: +0/-0
Offline Offline

Сообщений: 12



« Ответ #3 : 26 Сентябрь 2008, 12:33:25 »

Интерестно а каким образом можно отсеить при чтении файла xls одинаковые строки
Записан
alexey
Гость
« Ответ #4 : 26 Сентябрь 2008, 12:35:34 »

sherhan я за чем? Мне кажется легче слить сначало все в Таблицу значений, а потом её свернуть.. Вот одинаковые строки и схлопнуться.. Хотя все зависит от задачи Подмигивающий.. Но гемороя много и работать будет значительно дольше..
Записан
sherhan
Новичок
*

Карма: +0/-0
Offline Offline

Сообщений: 12



« Ответ #5 : 26 Сентябрь 2008, 13:12:36 »

Хотелось бы посмотреть на примерчик такого действия по свертыванию таблицы значений
Записан
alexey
Гость
« Ответ #6 : 26 Сентябрь 2008, 13:27:39 »

sherhan
да вроде помоему ни чего сверхъестественного в данном действе нет Подмигивающий.. Допустим в файле xls три колонки Номенклатура, Количество и Сумма..
//Готовим ТЗ - Таблицу Значений
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Номенклатура");
ТЗ.Колонки.Добавить("Количество ");
ТЗ.Колонки.Добавить("Сумма");
//Читаем:
Попытка
   Загрузка = ПолучитьCOMОбъект(ПутьКФайлу);
Исключение
   Предупреждение("Не удалось загрузить информацию из файла!!!",10);
   Возврат;
КонецПопытки;
НомерЛиста = 1;
//читаем по 10-ю строку
Для НомерСтроки = 2 По 10 Цикл
         НоваяСтрока = ТЗ.Добавить();
         //читаем колонки с 1-ой по 3-ю
         Для НомерКолонки = 1 По 3 Цикл
                  НеобходимоеЗначение = Загрузка.Sheets(НомерЛиста).Cells(НомерСтроки,НомерКолонки).Value;
                  Если НомерКолонки = 1 Тогда
                          НоваяСтрока .Номенклатура = СокрЛП(НеобходимоеЗначение );
                  ИначеЕсли НомерКолонки = 2 Тогда
                          НоваяСтрока .Количество= СокрЛП(НеобходимоеЗначение );
                  ИначеЕсли НомерКолонки = 3 Тогда
                          НоваяСтрока .Сумма= СокрЛП(НеобходимоеЗначение );
                  КонецЕсли;
         КонецЦикла;
КонецЦикла;
//закрываем объект xls
Загрузка.Application.Quit();
//Далее используем свернуть что бы исключить дублирующиеся значения Номенклатуры
//Синтаксис:
//Свернуть(<Колонки группировок>, <Колонки суммирования>)
ТЗ.Свернуть("Номенклатура","Количество, Сумма");
Ну вот собственно-то и все Подмигивающий..
Записан
sherhan
Новичок
*

Карма: +0/-0
Offline Offline

Сообщений: 12



« Ответ #7 : 26 Сентябрь 2008, 14:34:41 »

вот спасибо а то я такую конструкцию нагромоздил что аж потерятся можно
Записан
alexey
Гость
« Ответ #8 : 26 Сентябрь 2008, 14:54:26 »

sherhan не за что.. Пиши если чё :)..
Записан
sherhan
Новичок
*

Карма: +0/-0
Offline Offline

Сообщений: 12



« Ответ #9 : 26 Сентябрь 2008, 15:52:21 »

есть одно но при свертывании
допустим у меня  есть два поля наименование клиента и его код так вот после свертывания
наименование клиента сорачивается нормально а вот код в итог е залетает как 0
Записан
alexey
Гость
« Ответ #10 : 26 Сентябрь 2008, 16:15:12 »

есть одно но при свертывании
допустим у меня  есть два поля наименование клиента и его код так вот после свертывания
наименование клиента сорачивается нормально а вот код в итог е залетает как 0
смотри, я твоего кода не вижу, так что могу только гадать Подмигивающий.. Но вариант, допустим в "Колонки группировок" ты код просто не включил, тогда в колонке Код у тебя все значения свернуться к Нулю.. Т.к. как я понял они там числовые.. Исправить это можно, при получение значения кода, значение из ячейки включаешь его в СокрЛП().. Тогда в колонку ТЗ у тебя будет попадать значение в текстовом виде.. Далее обязательно включаешь Код в Колонки группировок: ТЗ.Свернуть("Код, Клиент",Колоки сумирования);
Записан
sherhan
Новичок
*

Карма: +0/-0
Offline Offline

Сообщений: 12



« Ответ #11 : 26 Сентябрь 2008, 16:42:57 »

вот втом то весь и прикол что код как раз я сделал строками вот енто то и удивляет
Записан
alexey
Гость
« Ответ #12 : 26 Сентябрь 2008, 16:48:38 »

sherhan ну вообще было бы интерсено посмотреть на код Подмигивающий.. т.к. честно говоря особых проблем со сворачиванием ТЗ ни когда не испытывал..
Так же Коди Наименование на сколько я понимаю в разных строках одинаковые?..
Если пропаду, значит уехал на парозе Подмигивающий извини.. Если до понедельника ни кто не поможет, то приеду разберемся..
Записан
sherhan
Новичок
*

Карма: +0/-0
Offline Offline

Сообщений: 12



« Ответ #13 : 29 Сентябрь 2008, 10:21:20 »

Здравствуйте ошибка была здесь ( ТЗ.Свернуть("Номенклатура","Количество, Сумма")Подмигивающий
а надо  ( ТЗ.Свернуть("Номенклатура,Количество, Сумма")Подмигивающий
Записан
sherhan
Новичок
*

Карма: +0/-0
Offline Offline

Сообщений: 12



« Ответ #14 : 29 Сентябрь 2008, 16:11:13 »

Иеще вопрос как прочитать файл XLS c помощъю select
??????????
Записан
Страниц: [1] 2 3 4   Вверх
Печать
 
Перейти в:  

�������@Mail.ru Rambler Top100
 
Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC | © 2008 Полигон 1С