|
Программная работа из 1С в Excel, как определить количество группировок | ☑ | ||
---|---|---|---|---|
0
slasher
03.05.17
✎
17:32
|
Доброго всем дня! Ситуевина такая! Отчет на СКД с 2 группировками, сохраняется в Эксель. Потом средствами 1С проставляются формулы в этом отчете, уже в экселевском. Столкнулся с проблемой, как средствами 1с, из группировки 1-го уровня, определить количество группировок 2-го уровня? Кто-нибудь может подсказать?
|
|||
1
Heckfy
03.05.17
✎
17:45
|
"Я" справа от темы нажмите пожалуйста!!!
|
|||
2
Tatitutu
03.05.17
✎
18:08
|
(0) кидай код в студию (как к файлу цепляешся)
|
|||
3
Heckfy
03.05.17
✎
18:10
|
(2) "цепляешся" - черезь "шься" пишется!
|
|||
4
Tatitutu
03.05.17
✎
18:12
|
(3) Спасибо, мил человек !
На 8 языках разговариваю, а вот писать так и не научился без ошибок. |
|||
5
slasher
03.05.17
✎
18:22
|
(2)
Процедура ДействияФормыСохранитьВExcel(Кнопка) Файл = "D:\temp\proba.xlsx"; ЭлементыФормы.Результат.Записать(Файл, ТипФайлаТабличногоДокумента.XLSX); Попытка Эксель = Новый COMОбъект("Excel.Application"); Исключение Возврат; КонецПопытки; Эксель.DisplayAlerts = 0; Эксель.Visible = 0; // Открытие файла Попытка Эксель.Application.Workbooks.Open(Файл); Исключение Возврат; КонецПопытки; // Перебор строк узнать максимальную группировку КоличествоСтрок = Эксель.Cells(1,1).SpecialCells(11).Row; МаксимальныйУровеньГруппировки = 0; Для Сч = 1 По КоличествоСтрок Цикл ТекущийУровеньГруппировки = Эксель.Rows(Сч).OutlineLevel; Если ТекущийУровеньГруппировки > МаксимальныйУровеньГруппировки Тогда МаксимальныйУровеньГруппировки = ТекущийУровеньГруппировки; КонецЕсли; КонецЦикла; //Сообщить(МаксимальныйУровеньГруппировки); //Сообщить(КоличествоСтрок); // Перебор строк проставить формулы Для Сч = 1 По КоличествоСтрок Цикл ТекущийУровеньГруппировки = Эксель.Rows(Сч).OutlineLevel; Если ТекущийУровеньГруппировки = МаксимальныйУровеньГруппировки-1 Тогда//группировка первая Эксель.Cells(Сч, 11).FormulaR1C1 = "=СУММ(R[1]C:R[5]C)"; //Сумма прихода КонецЕсли; Если ТекущийУровеньГруппировки = МаксимальныйУровеньГруппировки Тогда//группировка вторая Эксель.Cells(Сч, 11).FormulaR1C1 = "=RC[-3] * RC[-1]"; //Сумма прихода КонецЕсли; КонецЦикла; Эксель.Save(); // Закрытие файла Эксель.ActiveWorkbook.Close(); Эксель.Quit(); ЗапуститьПриложение(Файл); КонецПроцедуры |
|||
6
slasher
03.05.17
✎
18:24
|
(2)
вот где //группировка первая мне непонятно, как узнать сколько ниже идёт деталей (вторых группировок) |
|||
7
Ц_У
03.05.17
✎
18:31
|
(6) может поможет
СКД количество группировок |
|||
8
slasher
03.05.17
✎
18:33
|
(7), круто, но это не в СКД надо делать, а в экселе
|
|||
9
MaxS
03.05.17
✎
20:17
|
Зачем Excel использовать? 1С давно умеет без него обходится. Тогда вопрос сведётся к тому, как в табличном документе определить количество уровней.
|
|||
10
slasher
03.05.17
✎
20:28
|
(9) Excel нужен чтобы "поиграть" с ценами, посмотреть в нем как изменится выручка. Как в 1С-ном отчете СКД это сделаю?
|
|||
11
slasher
04.05.17
✎
10:16
|
а есть ещё варианты?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |