Как таблицу 1с сохранить в таблицу значений

Обновлено: 05.02.2023

Таблица значений — специальный объект в программировании 1С 8.3, который позволяет хранить промежуточные значения в виде двумерного массива со строками и колонками. Таблицы значений можно использовать как источник данных в запросе.

Таблицу значений, как любую коллекцию, можно обойти циклом. Например:

Получить нужную строку можно по индексу, например:

Индексы в 1С начинается с 0 (нуля).

Рассмотрим основные свойства и методы этого объекта на примерах.

Создание и использование таблиц значений 1С в примерах

Создать таблицу можно следующим образом:

Добавить колонки в таблицу значений 1С:

Крайне рекомендую указывать кроме первого еще и второй параметр — тип данных. Он поможет избежать некоторых ошибок.

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

После создания колонок добавим несколько новых строк и заполним колонки:

Добавим еще одну колонку:

Которую мы можем заполнить одинаковыми значениями двумя способами — перебором таблицы или функцией ЗаполнитьЗначения:

Сообщим пользователю название первой в списке программы (индекс таблицы значений в 1С начинается с «0»:

Скопировать строку таблицы значений 1С, для примера — первую:

Поиск в таблице значений 1С с ценой «17400» с помощью структуры:

Сортировка программ в таблице по цене:

Количество строк в таблице:

Выгрузить колонку таблицы значений в массив 1С:

Чтобы удалить строку в таблице значений, нужно передать саму строку или индекс в метод «Удалить». Два варианта:

Полностью скопировать таблицу значений 1С можно так:

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

Свернуть таблицу можно так:

При этом в таблице останутся только различные значения из колонки «ВерсияПлатформы» с суммированными полями «Цена».

Ну и напоследок очистим строки таблицы значений 1С 8.3 полностью:

И удалим все колонки:

Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):


3) Добавим реквизит формы “ОтборНаФорме” с типом “КомпоновщикНастроекКомпоновкиДанных”. Перенесём таблицу с отборами на форму.(рис.4). Реквизит мы назвали "ОтборНаФорме", но там не только настройки отбора. Помимо "Отбора", на форму можно вынести: "Параметры данных", "Выбор", "Порядок" - любую настройку Компоновщика Настроек - ОтборНаФорме.Настройки.


4) Добавим реквизит формы “ТаблицаОжиданий” с типом "ТаблицаЗначений", куда будем выгружать результата нашей СКД. Перенесём таблицу на форму. (рис.5).


5) В обработчике формы “ПриСозданииНаСервере” Инициализируем компоновку, чтобы окошко с отборами заполнялось выбранными отборами нашего СКД.

6) Осталось выполнить нашу СКД(Макет) по Настройкам на форме (ОтборНаФорме.Настройки) и результат загрузить в таблицу значений

Стоит отметить:

1) В компоновщик настроек можно передать параметры. Параметры должны быть в описании нашей СКД (закладка "Параметры"). "НастройкиКомпановщикаНастроек" - в нашем примере это "ОтборНаФорме.Настройки"

2) Настройки нашего реквизита "ОтборНаФорме" можно сохранять/восстанавливать, например, в/из константы.

В процедуре инициализации восстанавливаем:

3) Результат СКД можно выгрузить в "ДеревоЗначений". Имеет смысл, если Структура нашего СКД тоже имеет древовидную структуру, имеет больше одной группировки.

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

Для таблицы значений:

Для табличного документа(тут тип генератора можно не указывать, подходит тип по умолчанию):

5) Текст запроса СКД можно изменить. Конечно, менять текст имеет смысл только в процедуре выполнения компоновщика, в нашей случае это процедура ЗаполнитьНаСервере()

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

Для автоматического режима ничего восстанавливать не нужно. Форму мы не открываем. Передаём сохранённую настройку из константы(НастройкаИзКонстанты) прямо в функцию выполнения Компоновщика.

Не нужно открывать конфигуратор и менять условия в запросах, достаточно изменить настройки компановщика в хранилище. Мало того, одна СКД может отрабатывать по нескольким настройкам.

Распечатать

Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2) 0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей. COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь= Посмотреть все результаты поиска похожих

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

Создание Таблицы значений и описание типов значений ее колонок 29
ТаблицаПериодов = Новый ТаблицаЗначений; ТаблицаПериодов.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число")); ТаблицаПериодов.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.СотрудникиОрганизаций")); ТаблицаП Удаление строк Таблицы Значений 27
// 1. Удаление строк согласно условию НулевыеСтроки = ТаблицаПослеПодмен.НайтиСтроки(Новый Структура(" Сумма" ,0)); Для каждого СтрокаТаблицы Из НулевыеСтроки Цикл ТаблицаПослеПодмен.Удалить(СтрокаТаблицы) КонецЦикла; // Нужно оставить стр Как скопировать, выгрузить данные из одной таблицы значений в другую? 11
Как скопировать или выгрузить данные из одной таблицы значений в другую таблицу значений? 1. Добавление, копирование строк из одной таблицы значений в другую таблицу значений: Для каждого СтрокаТЗ Из Таблица1 Цикл ЗаполнитьЗначенияСвойств(Таблица Объединение 2 таблиц значений 11
// Объединить 2 таблицы значения // тзОсновная - таблица к которой будут изменяться данные // тзПрисоединяемая - таблица из которой будут браться данные // стОтборОдинаковых - стурктура со списком полей по которым определяеться одинаковость запис Ускорение поиска в таблице значений - Индексы 10
Для более быстрого поиска в базах данных было придумано свойство индекс. При использовании таблиц значений мы также можем создавать индексы для произвольных колонок. Например, у нас есть таблица с колонками «Номенклатура, Цена, ЕдиницаИзмерения». И Посмотреть все в категории Работа с Таблицей Значений

Распечатать

17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 6
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р, НомСтроки, НомЯче COM-подключение к базе 7.7 из 8.2 1С 6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь= Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э Посмотреть все результаты поиска похожих

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

Вывод картинки (изображения) на печать, в макет (табличный документ) 32
// 1-й вариант //Как вывести картинку в табличный документ? ТабДок = Новый ТабличныйДокумент; Макет = ОбработкаОбъект.ПолучитьМакет(" Макет" ); ОбластьКартинки = Макет.ПолучитьОбласть(" ОбластьСКартинкой" ); Картинка = Новый Картинка(ПутьККа Вывести табличный документ в PDF 18
Данный пример работает на платформе выше 8.2.13 Макет = ПолучитьМакет(" Макет" ); ОбластьШапка = Макет.ПолучитьОбласть(" Шапка" ); ТабДок = Новый ТабличныйДокумент; ОбластьШапка.Параметры.НомерДок = Номер; ОбластьШапка.Параметры.ДатаДок = Как программно изменить текст, цвет, фон ячейки или области табличного документа? 7
Ниже приведено несколько полезных шаблонов кода по работе с табличным документом: //Пример получения текста ячейки ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента; ПолеТабДок.Область("R1C2").Текст = спрНоменклатура.Наименование; ПолеТабДок Как в отобразить картинку в табличной части 7
В табличной части есть документы заявки от покупателя, нам нужно добавить картинку для отображения статуса документов заявка - проведен , не проведен, помечен на удаление. //Отобразим картинку Процедура СписокПриВыводеСтроки(Элемент, Оформление Вывод колонтитулов программно ВерхнийКолонтитул, НижнийКолонтитул 6
Колонтитул является специальным текстом, выводимым вверху или внизу каждой страницы при выводе документа на печать. В тексте колонтитула можно использовать следующие управляющие конструкции: > ( >) - при печати в данном месте будет выведен номер ст Посмотреть все в категории Табличный документ

В данном примере хочу привести несколько универсальных функций по выгрузке таблицы значений в файл и дальнейшего чтения из файла:

Порядок программных действий при выгрузке в файл выглядит так:

  • Подготавливаем таблицу значений (выгружаем из табличной части, выбираем колонки);
  • Конвертируем таблицу значений в табличный документ;
  • Сохраняем табличный документ в MXL.

При загрузке таблицы порядок действий такой:

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

Соответственно файл для хранения данных таблицы имеет расширение *.mxl.

Основные функции для реализации поставленной задачи следующие:

ПреобразоватьТДвТЗ – Функция преобразования табличного документа в таблицу значений.

ПреобразоватьТЗвТД – Функция обратного преобразования таблицы значений в табличный документ.

ПрочитатьТЗИзMXL – Читает из файла данные, определяет колонки таблицы и преобразует эти данные в таблицу значений.

ЗаписатьТЗВMXL – Преобразует таблицу значений в табличный документ и записывает его в файл.

Еще небольшой набор функций для вывода таблицы значений в табличный документ. После формирования табличного документа, - сохраняем его в файл mxl.

Табличный документ можно сохранить a файлы следующих типов:

  • ANSITXT - Текстовый документ
  • DOCX - документ MS Word
  • HTML
  • HTML3
  • HTML4
  • HTML5
  • MXL
  • MXL7
  • ODS - Файл Open Office
  • PDF - файл Acrobat Readr
  • TXT - Текстовый документ
  • XLS - файл Excel
  • XLS95 - файл Excel95
  • XLS97 - файл Excel97
  • XLSX - файл Excel2010

Пример выгруженной таблицы значений в файл:


Распечатать

Похожие FAQ

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

Как быстро вывести таблицу значений в табличный документ? 96
ТекстЗапроса = " ВЫБРАТЬ * ИЗ Справочник.Пользователи" ; ЗапросаДанных = Новый Запрос(ТекстЗапроса); РезЗапроса = ЗапросаДанных.Выполнить().Выгрузить(); ТабДокумент = Новый ТабличныйДокумент; Построитель = Новый Построит Создание Таблицы значений и описание типов значений ее колонок 29
ТаблицаПериодов = Новый ТаблицаЗначений; ТаблицаПериодов.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число")); ТаблицаПериодов.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.СотрудникиОрганизаций")); ТаблицаП Удаление строк Таблицы Значений 27
// 1. Удаление строк согласно условию НулевыеСтроки = ТаблицаПослеПодмен.НайтиСтроки(Новый Структура(" Сумма" ,0)); Для каждого СтрокаТаблицы Из НулевыеСтроки Цикл ТаблицаПослеПодмен.Удалить(СтрокаТаблицы) КонецЦикла; // Нужно оставить стр Как скопировать, выгрузить данные из одной таблицы значений в другую? 11
Как скопировать или выгрузить данные из одной таблицы значений в другую таблицу значений? 1. Добавление, копирование строк из одной таблицы значений в другую таблицу значений: Для каждого СтрокаТЗ Из Таблица1 Цикл ЗаполнитьЗначенияСвойств(Таблица Объединение 2 таблиц значений 11
// Объединить 2 таблицы значения // тзОсновная - таблица к которой будут изменяться данные // тзПрисоединяемая - таблица из которой будут браться данные // стОтборОдинаковых - стурктура со списком полей по которым определяеться одинаковость запис Посмотреть все в категории Работа с Таблицей Значений

Читайте также: