|   |   | 
| 
 | Программная работа из 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 | 
        а есть ещё варианты?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |