Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Объектная модель EXCEL для работы с 1С - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Excel и другие приложения » » Объектная модель EXCEL для работы с 1С (Свойства строк таблицы EXCEL)
Объектная модель EXCEL для работы с 1С
Pawlick Дата: Вторник, 14.05.2013, 19:51 | Сообщение № 1
Группа: Гости
Добрый Всем!
Прошу помощи в следующем вопросе.
Сам я занимаюсь немножко другой темой - 1С.
Не хочу сейчас грузить условиями поставленной задачи, ограничусь конкретной
проблемой:
Дано:
Лист EXCEL.
На листе есть сгрупированные строки.(т.е. когда плюсик слева от строки)

Вопрос:
могу ли я через свойства строки получить номер строк начала и конца группировки?
Т.е чтот типа
НомерСтрокиНачалоГруппировки = ЛистEXCEL.Строка().НачалоГруппировки;
НомерСтрокиКонецГруппировки = ЛистEXCEL.Строка().КонецГруппировки;

или

НомерСтрокиНачалоГруппировки = ЛистEXCEL.Строка(5:4).НачалоГруппировки;
КоличествоСгруппированныхСтрок = ЛистEXCEL.Строка(5:4).КоличествоСтрокГруппировки;

мне необхоидмо из 1С использовать следующую конструкцию:

Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
ExcelЛист = Excel.Sheets(НомерЛистаExcel);
Для Каждого ActiveCell.Row Из ExcelЛист Цикл

//Ну а дальше примерно чтобы так получилось:
Если ActiveCell.Row.НАЧАЛО ГРУППИРОВКИ Тогда
////
КонецЦикла;

Если ActiveCell.Row.КОНЕЦ ГРУППИРОВКИ Тогда
////
КонецЦикла;

Всем заранее спасибо.
 
Ответить
СообщениеДобрый Всем!
Прошу помощи в следующем вопросе.
Сам я занимаюсь немножко другой темой - 1С.
Не хочу сейчас грузить условиями поставленной задачи, ограничусь конкретной
проблемой:
Дано:
Лист EXCEL.
На листе есть сгрупированные строки.(т.е. когда плюсик слева от строки)

Вопрос:
могу ли я через свойства строки получить номер строк начала и конца группировки?
Т.е чтот типа
НомерСтрокиНачалоГруппировки = ЛистEXCEL.Строка().НачалоГруппировки;
НомерСтрокиКонецГруппировки = ЛистEXCEL.Строка().КонецГруппировки;

или

НомерСтрокиНачалоГруппировки = ЛистEXCEL.Строка(5:4).НачалоГруппировки;
КоличествоСгруппированныхСтрок = ЛистEXCEL.Строка(5:4).КоличествоСтрокГруппировки;

мне необхоидмо из 1С использовать следующую конструкцию:

Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ИмяФайла);
ExcelЛист = Excel.Sheets(НомерЛистаExcel);
Для Каждого ActiveCell.Row Из ExcelЛист Цикл

//Ну а дальше примерно чтобы так получилось:
Если ActiveCell.Row.НАЧАЛО ГРУППИРОВКИ Тогда
////
КонецЦикла;

Если ActiveCell.Row.КОНЕЦ ГРУППИРОВКИ Тогда
////
КонецЦикла;

Всем заранее спасибо.

Автор - Pawlick
Дата добавления - 14.05.2013 в 19:51
Jhonson Дата: Вторник, 14.05.2013, 20:07 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
Репутация: 169 ±
Замечаний: 0% ±

Не? [vba]
Код
Rows(НАЧАЛО ГРУППИРОВКИ & ":" & КОНЕЦ ГРУППИРОВКИ).Rows.Group
[/vba]


"Ничто не приносит людям столько неприятностей, как разум."
 
Ответить
СообщениеНе? [vba]
Код
Rows(НАЧАЛО ГРУППИРОВКИ & ":" & КОНЕЦ ГРУППИРОВКИ).Rows.Group
[/vba]

Автор - Jhonson
Дата добавления - 14.05.2013 в 20:07
Alex_ST Дата: Вторник, 14.05.2013, 21:46 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
[offtop]До чего же прикольно 1С-шники на Бэйсике "говорят": всё вроде бы то же самое, но операторы по-русски :)[/offtop]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение[offtop]До чего же прикольно 1С-шники на Бэйсике "говорят": всё вроде бы то же самое, но операторы по-русски :)[/offtop]

Автор - Alex_ST
Дата добавления - 14.05.2013 в 21:46
Pawlick Дата: Вторник, 14.05.2013, 23:48 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 10 ±
Замечаний: 0% ±

Цитата (Jhonson)
Rows(НАЧАЛО ГРУППИРОВКИ & ":" & КОНЕЦ ГРУППИРОВКИ).Rows.Group


А можете подробнее разжевать?

Идеальный вариант: рабочий код...
Допустим:
перебираем в цикле строки листа, если находим строку начала групировки, ложим номер строки в переменную А
перебираем далее, находим конец - ложим номер строки в переменную В ?

А я как нибудь попробую на 1с перевести...

Был бы безмерно благодарен.

А я с 1С если что помогу wink
 
Ответить
Сообщение
Цитата (Jhonson)
Rows(НАЧАЛО ГРУППИРОВКИ & ":" & КОНЕЦ ГРУППИРОВКИ).Rows.Group


А можете подробнее разжевать?

Идеальный вариант: рабочий код...
Допустим:
перебираем в цикле строки листа, если находим строку начала групировки, ложим номер строки в переменную А
перебираем далее, находим конец - ложим номер строки в переменную В ?

А я как нибудь попробую на 1с перевести...

Был бы безмерно благодарен.

А я с 1С если что помогу wink

Автор - Pawlick
Дата добавления - 14.05.2013 в 23:48
Serge_007 Дата: Вторник, 14.05.2013, 23:57 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (Pawlick)
А я с 1С помогу
Расскажите как в Excel из ААА и ЗуП 8.2 напрямую (без создания файла) выгружать данные?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (Pawlick)
А я с 1С помогу
Расскажите как в Excel из ААА и ЗуП 8.2 напрямую (без создания файла) выгружать данные?

Автор - Serge_007
Дата добавления - 14.05.2013 в 23:57
Jhonson Дата: Среда, 15.05.2013, 07:36 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
Репутация: 169 ±
Замечаний: 0% ±

в самом простом варианте: [vba]
Код
Sub групп()
Dim i, n, k As Integer
Dim flag As Boolean
flag = True
For i = 1 To 100 'перебераем строки с 1-й по 100-ю
     If Rows(i).OutlineLevel > 1 And flag Then n = i: flag = False
     If Rows(i).OutlineLevel > 1 And Not flag Then k = i
Next
MsgBox ("НАЧАЛО ГРУППИРОВКИ: " & n & Chr(10) & "КОНЕЦ ГРУППИРОВКИ: " & k)
End Sub
[/vba]


"Ничто не приносит людям столько неприятностей, как разум."
 
Ответить
Сообщениев самом простом варианте: [vba]
Код
Sub групп()
Dim i, n, k As Integer
Dim flag As Boolean
flag = True
For i = 1 To 100 'перебераем строки с 1-й по 100-ю
     If Rows(i).OutlineLevel > 1 And flag Then n = i: flag = False
     If Rows(i).OutlineLevel > 1 And Not flag Then k = i
Next
MsgBox ("НАЧАЛО ГРУППИРОВКИ: " & n & Chr(10) & "КОНЕЦ ГРУППИРОВКИ: " & k)
End Sub
[/vba]

Автор - Jhonson
Дата добавления - 15.05.2013 в 07:36
Pawlick Дата: Среда, 15.05.2013, 08:52 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 10 ±
Замечаний: 0% ±

Цитата (Serge_007)
Расскажите как в Excel из ААА и ЗуП 8.2 напрямую (без создания файла) выгружать данные?


? еща раз, по подробнее
 
Ответить
Сообщение
Цитата (Serge_007)
Расскажите как в Excel из ААА и ЗуП 8.2 напрямую (без создания файла) выгружать данные?


? еща раз, по подробнее

Автор - Pawlick
Дата добавления - 15.05.2013 в 08:52
Pawlick Дата: Среда, 15.05.2013, 08:55 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 10 ±
Замечаний: 0% ±

Цитата (Jhonson)
в самом простом варианте:


щас попробую...
 
Ответить
Сообщение
Цитата (Jhonson)
в самом простом варианте:


щас попробую...

Автор - Pawlick
Дата добавления - 15.05.2013 в 08:55
Pawlick Дата: Среда, 15.05.2013, 09:13 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 10 ±
Замечаний: 0% ±

Так. Давайте по порядку.

Dim i, n, k As Integer - Объявляем пременные i, n, k, тип: число;

Dim flag As Boolean - Объявляем пременную flag, тип: булево;

Устанавливаем flag в Истина

Перебираем строки

If Rows(i).OutlineLevel > 1 And flag Then n = i: flag = False

OutlineLevel - видимо свойство строки, возвращающее количество вложеных строк группировки?
Где почитать можно?
 
Ответить
СообщениеТак. Давайте по порядку.

Dim i, n, k As Integer - Объявляем пременные i, n, k, тип: число;

Dim flag As Boolean - Объявляем пременную flag, тип: булево;

Устанавливаем flag в Истина

Перебираем строки

If Rows(i).OutlineLevel > 1 And flag Then n = i: flag = False

OutlineLevel - видимо свойство строки, возвращающее количество вложеных строк группировки?
Где почитать можно?

Автор - Pawlick
Дата добавления - 15.05.2013 в 09:13
M73568 Дата: Среда, 15.05.2013, 09:42 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 197
Репутация: 46 ±
Замечаний: 0% ±

2007-2013
Цитата (Pawlick)
OutlineLevel - видимо свойство строки, возвращающее количество вложеных строк группировки?
Где почитать можно?

Тут http://msdn.microsoft.com/ru-ru....el.aspx
 
Ответить
Сообщение
Цитата (Pawlick)
OutlineLevel - видимо свойство строки, возвращающее количество вложеных строк группировки?
Где почитать можно?

Тут http://msdn.microsoft.com/ru-ru....el.aspx

Автор - M73568
Дата добавления - 15.05.2013 в 09:42
Jhonson Дата: Среда, 15.05.2013, 09:43 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
Репутация: 169 ±
Замечаний: 0% ±

Цитата (Pawlick)
возвращающее количество вложеных строк группировки?
Нет, это свойство строки либо столбца возвращающее уровень вложенности группировки, т.е. если на листе несколько уровней вложенности, а также несколько групп и все это надо учитывать, то макрос нужно переделывать!


"Ничто не приносит людям столько неприятностей, как разум."

Сообщение отредактировал Jhonson - Среда, 15.05.2013, 09:50
 
Ответить
Сообщение
Цитата (Pawlick)
возвращающее количество вложеных строк группировки?
Нет, это свойство строки либо столбца возвращающее уровень вложенности группировки, т.е. если на листе несколько уровней вложенности, а также несколько групп и все это надо учитывать, то макрос нужно переделывать!

Автор - Jhonson
Дата добавления - 15.05.2013 в 09:43
Serge_007 Дата: Среда, 15.05.2013, 10:20 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (Pawlick)
еща раз, по подробнее
Это я Вас прошу рассказать поподробнее как это делается, я этого не знаю sad


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (Pawlick)
еща раз, по подробнее
Это я Вас прошу рассказать поподробнее как это делается, я этого не знаю sad

Автор - Serge_007
Дата добавления - 15.05.2013 в 10:20
Pawlick Дата: Среда, 15.05.2013, 10:21 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 10 ±
Замечаний: 0% ±

Да, да, да:
Цитата (Jhonson)
на листе несколько уровней вложенности, а также несколько групп и все это надо учитывать
 
Ответить
СообщениеДа, да, да:
Цитата (Jhonson)
на листе несколько уровней вложенности, а также несколько групп и все это надо учитывать

Автор - Pawlick
Дата добавления - 15.05.2013 в 10:21
Pawlick Дата: Среда, 15.05.2013, 10:26 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 10 ±
Замечаний: 0% ±

Цитата (Serge_007)
Это я Вас прошу рассказать поподробнее как это делается, я этого не знаю


Уточните пожалуйста,

а) что такое ААА ?
б) что Вы имели ввиду под
Цитата (Serge_007)
напрямую (без создания файла) выгружать данные?


Вам нужно выгрузить таблицу сразу в файл EXCEL?
Поставте задачу.


Сообщение отредактировал Pawlick - Среда, 15.05.2013, 10:33
 
Ответить
Сообщение
Цитата (Serge_007)
Это я Вас прошу рассказать поподробнее как это делается, я этого не знаю


Уточните пожалуйста,

а) что такое ААА ?
б) что Вы имели ввиду под
Цитата (Serge_007)
напрямую (без создания файла) выгружать данные?


Вам нужно выгрузить таблицу сразу в файл EXCEL?
Поставте задачу.

Автор - Pawlick
Дата добавления - 15.05.2013 в 10:26
Serge_007 Дата: Среда, 15.05.2013, 10:31 | Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (Pawlick)
что такое ААА?



Цитата (Pawlick)
что Вы имели ввиду?
Это значит что данные должны попадать в Excel напрямую, без необходимости создавать файл для их выгрузки
К сообщению приложен файл: 1825323.gif (20.7 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (Pawlick)
что такое ААА?



Цитата (Pawlick)
что Вы имели ввиду?
Это значит что данные должны попадать в Excel напрямую, без необходимости создавать файл для их выгрузки

Автор - Serge_007
Дата добавления - 15.05.2013 в 10:31
Jhonson Дата: Среда, 15.05.2013, 10:33 | Сообщение № 16
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
Репутация: 169 ±
Замечаний: 0% ±

Цитата (Pawlick)
Да, да, да:

в таком случае ОБЯЗАТЕЛЬНО почитайте здесь


"Ничто не приносит людям столько неприятностей, как разум."
 
Ответить
Сообщение
Цитата (Pawlick)
Да, да, да:

в таком случае ОБЯЗАТЕЛЬНО почитайте здесь

Автор - Jhonson
Дата добавления - 15.05.2013 в 10:33
Pawlick Дата: Среда, 15.05.2013, 10:34 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 10 ±
Замечаний: 0% ±

Просто я не пойму какие именно данные должны попадать в Excel
 
Ответить
СообщениеПросто я не пойму какие именно данные должны попадать в Excel

Автор - Pawlick
Дата добавления - 15.05.2013 в 10:34
Serge_007 Дата: Среда, 15.05.2013, 10:36 | Сообщение № 18
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Любые. Вы просто объясните как это делается на любом, удобном Вам примере, а дальше я разберусь smile


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЛюбые. Вы просто объясните как это делается на любом, удобном Вам примере, а дальше я разберусь smile

Автор - Serge_007
Дата добавления - 15.05.2013 в 10:36
Pawlick Дата: Среда, 15.05.2013, 11:57 | Сообщение № 19
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 10 ±
Замечаний: 0% ±

Serge_007, Ок.

В 1С есть такой объект: ТабличныйДокумент;
У этого Объекта есть метод Записать;
Синтаксис:
Записать(<ИмяФайла>, <ТипФайлаТаблицы>)
Параметры:
<ИмяФайла> (обязательный)
Тип: Строка.
Имя файла, в котором сохраняется табличный документ.
<ТипФайлаТаблицы> (необязательный)
Тип: ТипФайлаТабличногоДокумента.
Формат, в котором будет сохранен табличный документ.
Значение по умолчанию: MXL
Описание:
Записывает табличный документ в файл.

Например:
ТабличныйДокумент.Записать("C:\My Documents\РезультатВыгрузки.xls", ТипФайлаТабличногоДокумента.XLS);

Т.е. процедура для сохранения печатной формы какого нибудь документа в файл EXCEL общем виде будет выглядеть так:

Процедура ВыгрузитьВEXCEL

//Сначала формируем табличный документ:
ТабличныйДокумент = СформироватьТабличныйДокумент;
//Потом выгружаем в файл с именем РезультатВыгрузки.xls
ТабличныйДокумент.Записать("C:\My Documents\ РезультатВыгрузки.xls", ТипФайлаТабличногоДокумента.XLS);

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

Соответственно задача по выгрузке данных из 1С в EXCEL сводится к формированию табличного документа, который потом выгружается в EXCEL.
Поэтому я и спросил какие именно данные необходимо выгрузить в EXCEL, т.к. от этого будет зависеть способ формирования табличного документа.
Табличные документы в типовых конфигурациях 1С создаются при формировании печатных форм (то что вы непосредственно отправляете на печать)
либо при формировании отчетов: само поле отчета и есть ТабличныйДокумент.

Вот по быстрому наваял выгрузку в EXCEL печатной формы документа Прим на работу в организацию (ЗУП 2.5.46.1 )
Сделал в виде внешней печатной формы.
Как подключить знаете?
В объщем, спрашивайте если что.
К сообщению приложен файл: ___.epf (17.5 Kb)


Сообщение отредактировал Pawlick - Среда, 15.05.2013, 11:58
 
Ответить
СообщениеSerge_007, Ок.

В 1С есть такой объект: ТабличныйДокумент;
У этого Объекта есть метод Записать;
Синтаксис:
Записать(<ИмяФайла>, <ТипФайлаТаблицы>)
Параметры:
<ИмяФайла> (обязательный)
Тип: Строка.
Имя файла, в котором сохраняется табличный документ.
<ТипФайлаТаблицы> (необязательный)
Тип: ТипФайлаТабличногоДокумента.
Формат, в котором будет сохранен табличный документ.
Значение по умолчанию: MXL
Описание:
Записывает табличный документ в файл.

Например:
ТабличныйДокумент.Записать("C:\My Documents\РезультатВыгрузки.xls", ТипФайлаТабличногоДокумента.XLS);

Т.е. процедура для сохранения печатной формы какого нибудь документа в файл EXCEL общем виде будет выглядеть так:

Процедура ВыгрузитьВEXCEL

//Сначала формируем табличный документ:
ТабличныйДокумент = СформироватьТабличныйДокумент;
//Потом выгружаем в файл с именем РезультатВыгрузки.xls
ТабличныйДокумент.Записать("C:\My Documents\ РезультатВыгрузки.xls", ТипФайлаТабличногоДокумента.XLS);

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

Соответственно задача по выгрузке данных из 1С в EXCEL сводится к формированию табличного документа, который потом выгружается в EXCEL.
Поэтому я и спросил какие именно данные необходимо выгрузить в EXCEL, т.к. от этого будет зависеть способ формирования табличного документа.
Табличные документы в типовых конфигурациях 1С создаются при формировании печатных форм (то что вы непосредственно отправляете на печать)
либо при формировании отчетов: само поле отчета и есть ТабличныйДокумент.

Вот по быстрому наваял выгрузку в EXCEL печатной формы документа Прим на работу в организацию (ЗУП 2.5.46.1 )
Сделал в виде внешней печатной формы.
Как подключить знаете?
В объщем, спрашивайте если что.

Автор - Pawlick
Дата добавления - 15.05.2013 в 11:57
Serge_007 Дата: Среда, 15.05.2013, 12:22 | Сообщение № 20
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Спасибо за ответ

Но хотелось всё-же не это smile
Постараюсь пояснить по аналогии. Работаю в Excel и необходимо импортировать данные из-какой-либо СУБД, например Access, FoxPro или 1С.

Для Access: Данные - Импорт - из Access. Далее создаю выбираю нужную таблицу или таблицы, при необходимости корректирую запрос

Для FoxPro: Данные - Импорт - из других источников. Далее выбираю источник, при необходимости корректирую запрос

А для 1С?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеСпасибо за ответ

Но хотелось всё-же не это smile
Постараюсь пояснить по аналогии. Работаю в Excel и необходимо импортировать данные из-какой-либо СУБД, например Access, FoxPro или 1С.

Для Access: Данные - Импорт - из Access. Далее создаю выбираю нужную таблицу или таблицы, при необходимости корректирую запрос

Для FoxPro: Данные - Импорт - из других источников. Далее выбираю источник, при необходимости корректирую запрос

А для 1С?

Автор - Serge_007
Дата добавления - 15.05.2013 в 12:22
Мир MS Excel » Вопросы и решения » Excel и другие приложения » » Объектная модель EXCEL для работы с 1С (Свойства строк таблицы EXCEL)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!