Дерево значений в excel 1с

Сохранить дерево значений в excel или табличный документ

Добрый день,
Подскажите есть ли простой способ вывести в табличный документ сформированное дерево значений на форме или сохранить напрямую это дерево в excel с сохранением иерархии без формирования табличного документа?
Например есть стандартная команда формы в командной панели «Вывести список», можно ли к ней обратится программно и получить на выходе табличный документ? а полученный табличный документ можно сохранить в формате xls.

Перем ТабДок, Секция; Процедура ПечатьДерева (СтрокаДерева,Уровень = 0,Колонки) Для Каждого стр Из СтрокаДерева.Строки Цикл НомерКолонки = 0; отступ = ""; Для н = 1 По Уровень Цикл отступ = отступ + " "; КонецЦикла; Для Каждого КЛ Из Колонки Цикл НомерКолонки = НомерКолонки + 1; Секция.Область(1, НомерКолонки).Текст = ?(НомерКолонки = 1, отступ+стр[КЛ.Имя], стр[КЛ.Имя]); КонецЦикла; ТабДок.Вывести(Секция,Уровень+1); ПечатьДерева(стр,Уровень+1,Колонки); КонецЦикла; КонецПроцедуры Процедура СформироватьТабДок() ТабДок = Новый ТабличныйДокумент; Секция = ТабДок.ПолучитьОбласть("R1"); ТабДок.НачатьАвтогруппировкуСтрок(); ПечатьДерева (Дерево,,Дерево.Колонки); ТабДок.ЗакончитьАвтогруппировкуСтрок(); ВременныйКаталог = КаталогВременныхФайлов(); ИмяФайла = "Журнал выгрузки " + Формат( ТекущаяДата(), "ДФ = 'гггг-ММ-дд_чч-мм-сс'") + ".xls";; ИмяВременногоФайла = ВременныйКаталог + ИмяФайла; ТабДок.Записать(ИмяВременногоФайла , ТипФайлаТабличногоДокумента.XLS); КонецПроцедуры

Prad2002; Kilka_v_Kepke; It-developer; Jenya78; user1474628; hasp_x; nekit_rdx; curdate; bohdan-k; jane_de_rio; orfos; Legin; + 12 – Ответить

Источник

1С 8.x : Загрузка из Excel в Дерево значений

Распечатать

Распечатать

17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=» D:ВашаБаза1с77″ ; Пользователь= Excel файл как Внешний источник данных 16
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа » Внешние источники данных» и назовем его просто » Excel» . https://helpf.pro/uploads/img Google maps : вывод точек на карту и режим панорамы 8
В отличие от яндекс карт в GMaps можно использовать панорамы — за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора Посмотреть все результаты поиска похожих

Читайте также:  Обрамление окон внутри дома деревом

Еще в этой же категории

Как в excel сохраненный из 1С вставить новый лист? 17
Я думаю, все сталкивались с однолистовым excel файлом из 1С, у которого на первый взгляд, нет возможности добавить листы. Все не так страшно — их просто скрыли или, что чаще всего — даже не отображали (обусловлено созданием файла из стороннего прил Как сформировать документ в Word из 1С? (Active Document) 15
ВНИМАНИЕ! При использовании кодов описанных ниже, уберите символ _ Давайте рассмотрим на примерах как это делается! =) Мне известно 2 способа: 1. Путем замены шаблонного текста в макете Wordа. 2. Путем вставки текста с помощью закладок в Wo Экспорт и Импорт данных 1С — Microsoft Excel 13
Экспорт Процедура ОсновныеДействияФормыЭкспорт(Кнопка) — выгружает из указанного справочника данные в режиме экспорта в файл в формате Microsoft Excel с указанным именем, используя преобразование данных к типу число и типу строка; Процедура Основ Быстрая функция чтения данных с листа Excel 10
При чтении файла Excel я использую вариантный массив. Он позволяет быстро получить ВСЮ таблицу листа в память, а также получать данные массива целыми колонками. Тем самым время на чтение области файла Excel в таблицу значений сокращается в десятки ра Преобразование XLS в MXL 10
Конвертация таблиц из Excel в MXL — скачать Converter Excel v MXL: Для 8.х — Для 7.7 — // Выбор файла Microsoft Excel Procedure FileNameStartChoice(Element, StdProcessing) StdProcessing = False; DialogFile = New FileDialog(FileDialogMode. Посмотреть все в категории Работа с Microsoft Office и OpenOffice

Источник

АйТиБложик

Недавно появилась задачка, необходимо создать отчет, который требуется выгружать в Excel. Написал запрос, создал схему компоновки данных и отчет готов, результат компоновки выводится в табличный документ. Приступил к реализации вывода отчетных данных в Excel и призадумался, а как же это лучше сделать?

Оказывается, результат компоновки данных можно выводить в таблицу значений или дерево значений для последующей программной обработки. Для этого предназначен объект языка программирования ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений. У этого объекта имеется метод УстановитьОбъект(), который является аналогом метода УстановитьДокумент() объекта ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент.

Привожу пример вывода результата компоновки в таблицу значений:

Читайте также:  Графика изо 2 класс дерево

Функция СкомпоноватьРезультатВКоллекциюЗначений() Экспорт

тзКомпоновщикМакет = Новый КомпоновщикМакетаКомпоновкиДанных;
тзМакетКомпоновкиДанных = тзКомпоновщикМакет.Выполнить(
СхемаКомпоновкиДанных,
КомпоновщикНастроек.ПолучитьНастройки(),
,
,
Тип(«ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений»));

тзПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
тзПроцессорКомпоновкиДанных.Инициализировать(тзМакетКомпоновкиДанных);

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

тзПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
тзПроцессорВывода.УстановитьОбъект(тзРезультат);
тзПроцессорВывода.Вывести(тзПроцессорКомпоновкиДанных);

Возврат тзРезультат;

Эту функцию я поместил в модуль отчета, что бы можно было вызывать её как из обычной так и из управляемой формы. Далее я успешно обхожу все строки таблицы значений в цикле и вывожу их в Excel.

  • в настройках должны присутствовать только группировки и детальные записи. Использование таблиц, диаграмм и вложенных отчетов не допускается;
  • все папки, указанные в выбранных полях, игнорируются;
  • не используется условное оформление, а также оформление для поля, указанное в схеме компоновки данных;
  • из параметров вывода используются только следующие: расположение общих итогов по вертикали; тип заголовка полей; количество записей; процент записей;
  • предопределенные макеты не используются.

Источник

Дерево значений в excel 1с

Есть файл Excell , где клиент расписал будущее дерево каталога справочника номенклатура.

Нужно в 1С по этому файлу сделать дерево каталога.

1 С экселем работать не будем, сразу переведем его в csv.

2 создадим на форме реквизит «дерево» с типом «деревоЗначений».

3 Напишем процедуру, с помощью которой мы будем выбирать файл csv и создавать дерево значений из него

&НаКлиенте Процедура СоздатьДеревоГрупп1С(Команда) ДиалогФыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); //. ДиалогФыбораФайла.Фильтр="csv файл с разделтелями (*.csv)|*.csv|"; ДиалогФыбораФайла.Заголовок = "Выберите файл"; ДиалогФыбораФайла.ИндексФильтра = 0; описаниеОповещения = Новый ОписаниеОповещения("ГрузимИзФайла", ЭтотОбъект); ДиалогФыбораФайла.Показать(описаниеОповещения); КонецПроцедуры &НаКлиенте Процедура ГрузимИзФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт // вызываем диалог выбора файла Если ВыбранныеФайлы > Неопределено И ВыбранныеФайлы.Количество() > 0 Тогда // Сообщить("Файл выбран!"); //работаем с файлом Имяфайла=ВыбранныеФайлы[0]; // Пишем в реестр сообщить(имяФайла); // вызываем дальнейшую процедуру обработки // читаем файл ЗагружаемыйФайл = Новый ТекстовыйДокумент; ЗагружаемыйФайл.Прочитать(ИмяФайла); СоздаемДеревоПапок1с(ЗагружаемыйФайл); Иначе Сообщить("Файл не выбран!"); КонецЕсли; КонецПроцедуры &наСервере Процедура СоздаемДеревоПапок1с(ЗагружаемыйФайл) тДерево = РеквизитФормыВЗначение("Дерево"); // чтение Для НомерСтроки=1 по ЗагружаемыйФайл.КоличествоСтрок() Цикл // получить стрoку с указанным номером и преобразуем её в массив Строка = ЗагружаемыйФайл.ПолучитьСтроку(НомерСтроки); МассивКол = РазложитьСтрокуВМассивПодстрок(Строка,";");// Для НомерЭлМассива=0 по МассивКол.количество()-1 цикл Если СтрДлина(массивКол[НомерЭлМассива])>0 тогда Каталог=сокрЛП(массивКол[НомерЭлМассива]); // найдено не пустое значение //смотрим вложенность каталога Если НомерЭлМассива=0 тогда // это новый корневой родитель нстр=тДерево.строки.добавить(); нстр.каталог=каталог; //прервать; КонецЕсли; // влож 1 Если НомерЭлМассива=1 тогда нстр1=нстр.строки.добавить(); нстр1.каталог=каталог; //прервать; КонецЕсли; // влож 2 Если НомерЭлМассива=2 тогда нстр2=нстр1.строки.добавить(); нстр2.каталог=каталог; //прервать; КонецЕсли; // влож 3 Если НомерЭлМассива=3 тогда нстр3=нстр2.строки.добавить(); нстр3.каталог=каталог; //прервать; КонецЕсли; // влож 4 Если НомерЭлМассива=4 тогда нстр4=нстр3.строки.добавить(); нстр4.каталог=каталог; //прервать; КонецЕсли; // влож 5 Если НомерЭлМассива=5 тогда нстр5=нстр4.строки.добавить(); нстр5.каталог=каталог; //прервать; КонецЕсли; // влож 6 Если НомерЭлМассива=6 тогда нстр6=нстр5.строки.добавить(); нстр6.каталог=каталог; //прервать; КонецЕсли; // влож 7 Если НомерЭлМассива=7 тогда нстр7=нстр6.строки.добавить(); нстр7.каталог=каталог; //прервать; КонецЕсли; // влож 8 Если НомерЭлМассива=8 тогда нстр8=нстр7.строки.добавить(); нстр8.каталог=каталог; //прервать; КонецЕсли; // влож 9 Если НомерЭлМассива=9 тогда нстр9=нстр8.строки.добавить(); нстр9.каталог=каталог; //прервать; КонецЕсли; // влож 10 Если НомерЭлМассива=10 тогда нстр10=нстр9.строки.добавить(); нстр10.каталог=каталог; //прервать; КонецЕсли; Если НомерЭлМассива=11 тогда нстр11=нстр10.строки.добавить(); нстр11.каталог=каталог; //прервать; КонецЕсли; Если НомерЭлМассива=12 тогда нстр12=нстр11.строки.добавить(); нстр12.каталог=каталог; //прервать; КонецЕсли; Если НомерЭлМассива=13 тогда нстр13=нстр12.строки.добавить(); нстр13.каталог=каталог; //прервать; КонецЕсли; Если НомерЭлМассива=14 тогда нстр14=нстр13.строки.добавить(); нстр14.каталог=каталог; //прервать; КонецЕсли; Если НомерЭлМассива=15 тогда нстр15=нстр14.строки.добавить(); нстр15.каталог=каталог; //прервать; КонецЕсли; конецЕсли; конецЦикла; конецЦикла; ЗначениеВРеквизитФормы(тДерево,"дерево"); конецПроцедуры 

Не стал я заморачиваться с оптимизацией кода, сделал до 15 уровня вложенности. Если кому нужно, можно оптимизировать с помощью команды «выполнить»

Строка, содержащая текст исполняемого кода.
Описание:
Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения.

В результате получил нужное дерево:

Чтобы из него создать группы в спр номенклатура выполняем вот такую процедуру:

&НаСервере Процедура ОбходДерева(дерево,родитель=неопределено) Для Каждого тСтр Из Дерево.Строки Цикл Сообщить(тСтр.Каталог+", Родитель k">+?(тстр.Родитель=неопределено,"",тстр.Родитель.каталог));//+Дерево.каталог); // создаем папку номенклатуры номГр=справочники.Номенклатура.СоздатьГруппу(); номГр.Наименование=сокрЛП(тСтр.Каталог); если Родитель>неопределено тогда // есть родитель номГр.Родитель=родитель; конецЕсли; номГр.Записать(); //конец создаем папку номенклатуры Если тСтр.Строки.Количество()>0 Тогда ОбходДерева(тСтр,номГр.Ссылка); КонецЕсли; КонецЦикла; КонецПроцедуры &Насервере Процедура ОбходНаСервере() тДерево = РеквизитФормыВЗначение("Дерево"); ОбходДерева(тДерево); КонецПроцедуры &НаКлиенте Процедура СоздатьПапкиКаталогаНоменклатуры(Команда) ОбходНаСервере(); КонецПроцедуры #конецОбласти 
  • Главная
  • Примеры работ
  • Обработки
  • Создать дерево значений из Excell файла. УФ

8(495)005-62-29

skype: live:di-sem

@programmist_1C

Отправить заявку

Заметки программиста 1С:

Доработка 1с через расширение конфигурации, пример.

Пример доработки 1с через расширение конфигурации.
Подробнее.

Источник

Оцените статью