вівторок, 3 березня 2020 р.

Читання csv файлу

ТекстВопроса = "Перед заполнением табличнaя часть будет очищена. Заполнить?";
Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да,);

Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
ОтработанноеВремя.Очистить();


Таблица = Новый ТаблицаЗначений;
Разделитель = ";";

Файл = "E:\Program Files\Exchange\022020.csv";

// чтение
ЗагружаемыйФайл = Новый ТекстовыйДокумент;
ЗагружаемыйФайл.Прочитать(Файл);

Шапка = ЗагружаемыйФайл.ПолучитьСтроку(1);

//раскладываем строку в массив
МассивКол = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Шапка,Разделитель); // процедура из типовой конфигурации, разбивает строку в массив по разделителям

//генерируем столбцы
Для Каждого ИмяСтолбца Из МассивКол Цикл
ИмяБезПробелов = СтрЗаменить(ИмяСтолбца," ",""); // убираем из имени пробелы
Таблица.Колонки.Добавить(ИмяБезПробелов,,ИмяСтолбца);
//НовыйСтолбец = Таблица.Колонки.Добавить(ИмяБезПробелов, ИмяСтолбца);
//НовыйСтолбец.Данные = ИмяБезПробелов;
КонецЦикла;

Для НомерСтроки = 2 по ЗагружаемыйФайл.КоличествоСтрок() Цикл
Состояние("Обрабатывается "+Строка(Формат(?(ЗагружаемыйФайл.КоличествоСтрок()=0,0,((100*НомерСтроки)/                                                                                                ЗагружаемыйФайл.КоличествоСтрок())),"ЧЦ=3; ЧДЦ=0"))+" %");
ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break

// получить стрoку с указанным номером и преобразуем её в массив
Строка = ЗагружаемыйФайл.ПолучитьСтроку(НомерСтроки);
МассивКол = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Строка,Разделитель);// процедура из типовой конфигурации, разбивает строку в массив по разделителям
НоваяСтрочка = Таблица.Добавить();

Если МассивКол.Количество() <> Таблица.Колонки.Количество() Тогда
Продолжить; // скорее всего в тексте содержит разделитель
КонецЕсли;

Для НомерСтолбца= 1 по МассивКол.Количество() Цикл
//заполняем строчку значениями
ТекущееЗначение = МассивКол[НомерСтолбца-1];
ИмяКолонки = Таблица.Колонки[НомерСтолбца-1].Имя;
НоваяСтрочка[ИмяКолонки] = ТекущееЗначение;
КонецЦикла;
КонецЦикла;

Таблица.ВыбратьСтроку();

неділя, 5 січня 2020 р.

Перехід на Йоксель

// на верх Перем тзГрупи; // ================================================= Процедура ПідготуватиЙоксель(КстРівнів) тзГрупи.УдалитьСтроки(); Для г = 2 по КстРівнів Цикл РівеньПошуку = г; к = тз.КоличествоСтрок(); Кінець = к; Пока к > 0 Цикл ПотРівень = тз.ПолучитьЗначение(к,"Рівень"); Если ПотРівень = РівеньПошуку - 1 Тогда Початок = к + 1; тзГрупи.НоваяСтрока(); тзГрупи.Рівень = РівеньПошуку; тзГрупи.Початок = Початок; тзГрупи.Кінець = Кінець; Кінець = к - 1; ИначеЕсли ПотРівень = РівеньПошуку Тогда Иначе Если ПотРівень < РівеньПошуку Тогда Кінець = к - 1; КонецЕсли; // нічого не робимо КонецЕсли; к = к - 1; КонецЦикла; КонецЦикла; КонецПроцедуры // після формування тз до виводу Если СтандартнийЗвітНеЙоксель = 0 Тогда ПідготуватиЙоксель(сзГрупи.РазмерСписка()); КонецЕсли; // Вивести на друк замість Таб.Показать Если Йоксель = 1 Тогда Документ = СоздатьОбъект ("ТабличныйДокумент"); Документ.ЗагрузитьИзТаблицы(Таб); Фрейм = Документ.Показать("Тест Йоксель"); Фрейм.ОтображатьСтруктуру(1); Фрейм.ОтображатьКнопкиУровней(1); Панель = Фрейм.ПанельИнструментов; Панель.Видимость = 1; // Обратите внимание если у Вас переписана ОбработкаЯчейкиТаблицы и ее события то следущие // строки нужно привести к тому виду, какой он должен быть в Вашей конфигурации! //Панель.ПодписатьсяНаСобытие("ОбработкаЯчейкиТаблицы", "ОбработкаЯчейкиТаблицы", 1); тзГрупи.ВыбратьСтроки(); Пока тзГрупи.ПолучитьСтроку() = 1 Цикл Документ.ДобавитьГруппуСтрок(тзГрупи.Початок + 6,тзГрупи.Кінець + 6); КонецЦикла; Документ.ОбновитьВсеОтображения(); Иначе Таб.Показать(); КонецЕсли; // в кінець СтандартнийЗвітНеЙоксель = ВосстановитьЗначение("СтандартнийЗвітНеЙоксельЗвітЗРеалізаціїОбороти"); СохранитьЗначение("СтандартнийЗвітНеЙоксельЗвітЗРеалізаціїОбороти",СтандартнийЗвітНеЙоксель); тзГрупи = СоздатьОбъект("ТаблицаЗначений"); тзГрупи.НоваяКолонка("Рівень"); тзГрупи.НоваяКолонка("Початок"); тзГрупи.НоваяКолонка("Кінець");