Как вывести таблицу значений в табличный документ 1с
После манипуляции с файлом необходимо его закрыть. В противном случае он останется захваченным в системе, и мы не сможем его использовать в других приложениях.
Клиент-Серверный вариант в управляемых формах.
1. Считываем данные из файла в массив из структур и затем этот массив передаем на сервер для дальнейших манипуляций с данными.
2-ой способ - это передать файл Excel на сервер через хранилище данных и далее работать с ним уже на сервере.
Очень часто приходится работать с очень большими файлами Excel, и его обработка путем перебора строк занимает огромное количество времени.
В таких случаех удобно в одно действие загрузить всю таблицу в массив и в потом работать уже непосредственно с массивом.
На выходе получаем двумерный массив, который содержит все данные указанного листа Excel
Полезные функции при работе с Excel:
Устанавливает видимость Excel при работе |
Добавление новой книги в файл Excel |
Сохранение книги Excel |
Добавление нового листа к книге |
Переименование листа |
Изменение маштаба листа |
Изменение ориентации листа |
Отступы листа |
Обращение к ячейки чтение/запись |
Обращение к области ячеек |
Очень часто при чтении или записи значений в Excel ставятся лишние пробелы в числе, например, вместо 1502 он читает как 1 502 и в дальнейшем это значение не приводится к числу. Эту проблему можно решить заменой. |
Объединение ячеек |
Работа с именованными ячейками в Excel |
Удаление ячейки |
Удаление области ячеек |
Обращение к строке |
Изменение ширины колонки |
Обращение к колонке |
Удаление Строки |
Фон ячейки / области / Строки / |
Функция переводит цвет из формата RGB в формат Excel |
Управление шрифтом в ячейки/строке/области |
Р азрешает переносить по словам в ячейке |
Управление рамкой ячейки |
Устанавливаем формат ячейки |
Формула в ячейки |
Формула в ячейки |
Формула в ячейки |
Формула в ячейки |
Функция для получения ширины колонки Excel Спасибо пользователю goodwill |
Разрешить перенос слов в ячейке Спасибо пользователю roofless |
Группировки данных на листе Спасибо пользователю dr-wit, ignor |
При работе с Excel мы оперируем столбцами как числом (Например, 1 столбец), а у Excel адресация столбцов производится с помощью символов. И когда нам нужно отредактировать формулу, то нам нужно номер столбца преобразовать в символ. В таких случаях вам пригодится эта функция.
2. Работа с Excel через ТабличныйДокумент 1С
С помощью данного метода можно и загружать из Excel и выгружать в Excel. Но на мой взгляд этот метод идепально подходит когда вам необходимо посто сохранить информацию в Excel без дальнейшей манипуляции.
Итак, приступим: загрузка из Excel:
1. Загружаем файл Excel в табличный документ
2. Производим манипуляции уже с ТабличнымДокументом
Давайте теперь разберем сохранение в Excel с помощью данного метода:
Тут все очень просто сначала мы формируем обычный Табличный документ и затем записываем его в Excel
2. Работа с Excel ADODB
Выражаю особую благодарность коллеги Fragster за хороший комментарий
Данный метод позволяет работать с Excel через ODBC и имеет ряд преимуществ:
- Не требует установки самой Excel, необходима лишь установить ODBC. Но как правило он уже установлен. Это особенность позволяет работать на стороне сервера без дополнительных установок Excel.
- Позволяет работать с таблицой Excel как с БД и строить к ней запросы на T-SQL. Таким образом мы можем делать отборы еще на этапе чтения данных и другие преимущества что дает Т-SQL. Что на мой взгляд огромный плюс.
Подключение к ADO
Отключение от ADO
Выполнение запроса
Пример запроса:
Запись в Excel тоже производится в виде запроса:
Хочу отметить что наименование полей производится по первой строке в таблице
ADODB предоставляет ряд объектов, с которыми мы работаем
ADODB.Recordset
В файле продемонстрированны оба варианта работы с запросами.
На этом пока все. По возможности буду дополнять статью :)
В архиве находится обработка, которая демонстрирует все описанные и другие возможности при работе с Excel.
Как заполнить табличную часть формы программно? 6
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 20
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2) 0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей. COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D: ВашаБаза 1с77 " ; Пользователь= Посмотреть все результаты поиска похожих
Еще в этой же категории
Создание Таблицы значений и описание типов значений ее колонок 28
ТаблицаПериодов = Новый ТаблицаЗначений; ТаблицаПериодов.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число")); ТаблицаПериодов.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.СотрудникиОрганизаций")); ТаблицаП Удаление строк Таблицы Значений 27
// 1. Удаление строк согласно условию НулевыеСтроки = ТаблицаПослеПодмен.НайтиСтроки(Новый Структура(" Сумма" ,0)); Для каждого СтрокаТаблицы Из НулевыеСтроки Цикл ТаблицаПослеПодмен.Удалить(СтрокаТаблицы) КонецЦикла; // Нужно оставить стр Как скопировать, выгрузить данные из одной таблицы значений в другую? 11
Как скопировать или выгрузить данные из одной таблицы значений в другую таблицу значений? 1. Добавление, копирование строк из одной таблицы значений в другую таблицу значений: Для каждого СтрокаТЗ Из Таблица1 Цикл ЗаполнитьЗначенияСвойств(Таблица Объединение 2 таблиц значений 10
// Объединить 2 таблицы значения // тзОсновная - таблица к которой будут изменяться данные // тзПрисоединяемая - таблица из которой будут браться данные // стОтборОдинаковых - стурктура со списком полей по которым определяеться одинаковость запис Ускорение поиска в таблице значений - Индексы 9
Для более быстрого поиска в базах данных было придумано свойство индекс. При использовании таблиц значений мы также можем создавать индексы для произвольных колонок. Например, у нас есть таблица с колонками «Номенклатура, Цена, ЕдиницаИзмерения». И Посмотреть все в категории Работа с Таблицей Значений
Но, не бросив первоначальную идею и потратив вечер на поиск, как это правильно сделать, натыкался только на программное создание элементов на форме, что в конце-концов и пришлось сделать, но упростив для себя модуль. Я заранее вывожу нужные реквизиты на форму, чтобы это не определять программно, и точно видеть, где потом отобразятся мои данные.
Хотя на форме ТЗ и не видна, так как нет ни одной колонки, но после выполнения все встает на свои места.
В итоге предлагаю два варианта вывода ТЗ на Форму через ТЗ и через Табличный документ (чтобы можно было скопировать).
Модуль выполняется &НаСервере в форме объекта.
P.S. Здесь после всех своих поисков наткнулся на похожую статью
Специальные предложения
На примере вывода в реквизит с типом "ТаблицаЗначений" я написал всего одну процедуру и теперь ее могут использовать без допилов все желающие в любом коде, а код для вывода нужной ТЗ на нужную форму теперь состоит всего из 2-х строк.
Войдите как ученик, чтобы получить доступ к материалам школы
Система компоновки данных 1С 8.3 для начинающих: представление отчёта в виде таблицы
Автор уроков и преподаватель школы: Владимир Милькин
На всех прошлых уроках мы выводили данные в отчет в виде списка. Сегодня разберёмся со вторым типом отчета: "Таблица".
Ставим цель
- Написать отчёт, который выводит информацию о заказе еды клиентами в виде таблицы.
- В строках таблицы должна выводиться еда, в колонках - клиенты, а на пересечении количество данной еды заказанной данным клиентом.
- Информацию будем брать из документов "ЗаказКлиента".
Создаём новый отчёт
Открываем базу "Гастроном" в конфигураторе и через меню "Файл"->"Новый. " создаём новый отчёт:
Вид документа - "Внешний отчет":
В новой форме отчёта указываем имя "Урок8" и нажимаем кнопку "Открыть схему компоновки данных":
Имя схемы компоновки данных оставляем по умолчанию:
Составляем запрос
Добавляем новый набор данных - запрос:
Выделяем новый набор данных и вызываем конструктор запроса:
Будем выбирать из табличных частей документа "ЗаказКлиента" следующие поля:
Получился следующий текст запроса:
Сначала пробуем список
Перейдём на закладку "Настройки" и нажмём волшебную палочку, чтобы вызвать конструктор:
Вначале попробуем по старинке выбрать тип отчета "Список. ":
Укажем поля, которые будут отображаться в отчете:
Сохраним наш отчёт в конфигураторе и сформируем в режиме пользователя:
Получился привычный нам список с тремя колонками: Клиент, Еда и Количество.
Выводим в виде таблицы
Ах как замечательно было бы представить эти же самые данные в виде таблицы, в строках которой перечислена еда, в колонках - клиенты, а на пересечении количество данной еды, которое заказал данный клиент:
Сделать это действительно легко. Для этого вернёмся на закладку "Настройки" и вновь вызовем конструктор настроек через волшебную палочку:
На этот раз в качестве типа отчета выберем "Таблица..":
Из полей, которые будут отображаться в отчёте уберём "Клиент" и "Еда", так как эти поля по нашей задумке уйдут в столбцы и строки соответственно:
Оставим только количество, которое будет отображаться на пересечении строк и столбцов:
Здесь нужно указать конструктору какие поля будут отображаться в строках, а какие в столбцах. Для нас очевидно (см. рисунок выше), что строки - это еда, а колонки - клиенты:
Получилось вот так:
Итоговая структура отчёта будет такой:
Сохраняем наш отчёт в конфигураторе и формируем в режиме пользователя:
Вроде бы неплохо. Еда отображаться в строках, а клиенты - в столбцах. Но показатели количества, которые мы ожидали увидеть на пересечении строк и столбцов почему-то оказались все слепёшены в одном столбце.
А причина в том, что строки и столбцы у нас сгруппированы, а показатели нет! Поэтому и такой разлад.
Чтобы сгруппировать количество нужно подвести по нему итоги (вычислить ресурсы). Это мы уже делать умеем.
Забыли подвести итоги
Переходим на закладку "Ресурсы" и перетаскиваем поле "Количество" из левой колонки в правую:
Выражение "Сумма(Про. " оставляем без изменения:
Снова сохраняем отчет и формируем в режиме пользователя:
То, что надо! Мы хорошо поработали. А на следующем уроке - мы модифицируем этот отчёт (вернее его копию) и представим эти же данные в виде диаграммы.
Эталонная обработка, после выполнения всех шагов этого урокаВойдите на сайт как ученик
Для учеников
Прибегайте к изучению эталонного варианта только после самостоятельного выполнения всех шагов.
На вопросы учеников — отвечаю по почте, но прежде загляните в ЧАВО (ссылка) .
Читайте также: