Massdomain.ru

Хостинг и домены
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Загрузить массив в таблицу значений

Загрузить массив в таблицу значений

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Как в 1C 8 поместить массив в таблицу значений.

Пример носит скорее учебный характер.

Таблица значений — тяжелый, ресурсоемкий объект — контейнер с огромными возможностями:
— отборы
— запросы
— колонки

Таблица значений требует деликатного отношения — глубокого вдумчивого создания структуры таблицы, — (использование и создания индексов, описание типов данных в колонках, и т.д.).

Пример содержит несколько этапов:
1. Подготовка колонки таблицы значений
1.1 Вычисляем тип данных для записи в колонки по типу данных в первом элементе массива.
1.2 Создаем колонку таблицы значений.
2. Записываем данные массива в колонку.

МассивДопустимыеТипы.Добавить(ТипКолонки);
Описание_Типов = Новый ОписаниеТипов(МассивДопустимыеТипы);
ИмяКолонки = СтрЗаменить(Строка(ТипКолонки),» «,»_»);
ШиринаКолонки = СтрДлина(Строка(МассивЭлементов[0][ИмяРеквизита]));
[ missing image ] —>

Результат:
Гораздо интереснее, с практической точки зрения, преобразование массива в «соответствие».
В контейнере-«соответствие» поиск элемента ведется по «ключу» этого элемента.
Он гораздо «легче» и быстрее.
В качестве ключа может использоваться значение любого типа. Ключ должен быть уникальным в этом контейнере-«соответствие».
Фактически, контейнер-«соответствие» имеет один единственный встроенный индекс по колонке «ключ».
Но это уже отдельная тема.

Предлагаем решение Ваших задач 1С.

Внедрение 1С:

  • Организуем вам индивидуальное экспресс обучение программам 1С.
  • Мы поможем Вам начать работать с программами 1С.
  • Мы поможем Вам настроить ваши отчеты в 1С.
  • Установим и настроим 1С под ваши задачи.
  • Поможем сделать ввод начальных остатков по складам и контрагентам
  • Перенесем данные из старых систем.
  • Подскажем как избежать ошибок.

Доработка и сопровождение 1С:

  • Доработаем существующие или создадим новые печатных формы и документы.
  • Разработаем внешние отчеты по Вашим требованиям.
  • Напишем внешние обработоки по загрузке документов из учетных (торговых) систем в бухгалтерию.
  • Разработаем приложения для выгрузки данных на сайты.

Ориентировочная стоимость работ программиста 1С : 500 р. за 1 час работы.

Данная процедура Преобразует таблицу значений в массив.

Может использоваться для передачи на клиента данных, полученных на сервере в виде таблицы значений в том случае, если таблица значений содержит только такие значения, которые могут быть переданы на клиента

Полученный массив содержит структуры, каждая из которых повторяет структуру колонок таблицы значений.

Не рекомендуется использовать для преобразования таблиц значений с большим количеством строк.

Кратко о массиве структур

Начнем со структуры. Структура это коллекция пар Ключ-Значение

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

«НомерСтроки»«Номенклатура»«Цена»
1Табурет25

Массив это коллекция содержащая значения подобно списку

Значение1
Значение2
Значение3

В нашем случае каждая строка массива будет содержать не просто значение, а структуру. Все структуры массива будут содержать одинаковые ключи

Читайте так же:
Запуск виндовс 10 без пароля
Структура1
Структура2
Структура3

Программное создание колонок таблицы значений в 1С

Программно добавить колонку в таблицу значений 1С просто. Для этого необходимо использовать одно из основополагающих свойств таблиц значений — это свойство Колонки. Данное свойство представляет собой коллекцию значений, в которой хранятся все колонки конкретной таблицы, и имеет тип Коллекция колонок таблицы значений.

У объекта Коллекция колонок таблицы значений существует два метода по созданию новых колонок. Это Добавить и Вставить.

Метод Добавить – добавляет новую колонку в конец коллекции, а метод Вставить – вставляет колонку в нужное место по соответствующему индексу.

ФИО = Новый ТаблицаЗначений ;
ФИО . Колонки . Добавить ( «Фамилия» );
ФИО . Колонки . Добавить ( «Имя» );
ФИО . Колонки . Добавить ( «Отчество» );

В этом примере я использовал самый простой вариант использование метода Добавить: мы указываем только название колонки и всё.

Рассмотрим синтаксис этого метода

Добавить( , , , )

Как видно, у данного метода всего четыре параметра.

Параметр Имя — это имя колонки таблицы значений, задается также как и имя переменной. Обязательный параметр.

Параметр Тип имеет тип ОписаниеТипов, задает тип данных, которые будут храниться в колонке, т.е. при помощи этого параметра, мы задаем тип колонки таблицы значений.

Параметр Заголовок имеет тип Строка и задает заголовок колонки, который отобразиться пользователю, если она будет создана программно на форме.

Параметр Ширина имеет тип Число и задает длину колонки(количество символов).

Если мы зададим все параметры, то наше создание колонок будет выглядеть следующим образом.

ОписаниеТиповСтрока = Новый ОписаниеТипов ( «Строка» );
ОписаниеТиповДата = Новый ОписаниеТипов ( «Дата» )

ФИО = Новый ТаблицаЗначений ;
ФИО . Колонки . Добавить ( «Фамилия» , ОписаниеТиповСтрока , «Фамилия» , 50 );
ФИО . Колонки . Добавить ( «Имя» , ОписаниеТиповСтрока , «Имя» , 50 );
ФИО . Колонки . Добавить ( «Отчество» , ОписаниеТиповСтрока , «Отчество» , 50 );
ФИО . Колонки . Добавить ( «ДатаРождения» , ОписаниеТиповДата , «Дата рождения» , 10 );

Метод Вставить имеет следующий синтаксис:

Вставить( , , , , )

Метод Вставить имеет синтаксис, как и у метода Добавить, но только появился первый параметр Индекс, он указывает тот индекс, на место которого будет вставляться новая колонка.

Доработаем предыдущий код:

ФИО . Колонки . Вставить ( 3 , «ФИО» , ОписаниеТиповСтрока , «ФИО» , 50 );

В нашем случае колонка ФИО встала точно между Отчеством и Датой рождения.

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

Преобразование таблицы массивов в таблицу списка с помощью Kutools for Excel хорошая идея3

стрелка синий правый пузырь Преобразование таблицы массивов в таблицу списка с помощью сводной таблицы

Вы можете применить сводную таблицу для преобразования таблицы массивов в список, а затем скопировать ее как диапазон.

1. Нажмите Alt + D одновременно, а затем нажмите P ключ для включения Мастер сводных таблиц и диаграмм диалог и проверьте Несколько диапазонов консолидации и PivotTable параметры. Смотрите скриншот:
таблица массива документов для списка 1

2. Нажмите «Далее», чтобы перейти к шагу 2а мастера, и установите флажок «Я создам поля страницы». Смотрите скриншот:
таблица массива документов для списка 2

Читайте так же:
Жесты для тачпада windows 10

3. Нажмите Далее идти на Шаг 2b мастера, и выберите диапазон массива и добавьте его в Все диапазоны список. Смотрите скриншот:
таблица массива документов для списка 3

4. Нажмите Далее чтобы перейти к последнему шагу, отметьте нужный вариант. Смотрите скриншот:
таблица массива документов для списка 4

5. Нажмите Завершить а затем была создана сводная таблица, затем перейдите к ячейке пересечения Общий итог, дважды щелкните по нему, и вы увидите, что сводная таблица была создана на новом листе. Смотрите скриншоты:
таблица массива документов для списка 5

6. Затем выберите список PivotTable и щелкните правой кнопкой мыши, чтобы выбрать Настольные > Преобразовать в диапазон из контекстного меню. Смотрите скриншот:
таблица массива документов для списка 6

Теперь таблица массивов преобразована в таблицу списка.
таблица массива документов для списка 7

стрелка синий правый пузырь Преобразование таблицы массивов в таблицу списка с помощью VBA

Вот VBA, который может помочь вам преобразовать таблицу массивов в таблицу списка, выполните следующие действия:

1. Нажмите Alt + F11 для Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модульи вставьте ниже код VBA в новый Модуль окно.

VBA: преобразовать таблицу массивов в список

3. И нажмите F5 нажмите клавишу для запуска VBA, и появится диалоговое окно, в котором вы можете выбрать таблицу массива, исключая заголовки. Смотрите скриншот:
таблица массива документов для списка 7

4. Нажмите OK для перехода к следующему диалоговому окну, чтобы выбрать ячейку для вывода таблицы списка. Смотрите скриншот:
таблица массива документов для списка 9

5. Нажмите OK, и таблица массивов была преобразована в список.
таблица массива документов для списка 10

Наконечник:

Если вы хотите заполнить пустые ячейки на основе указанной выше ячейки, вы можете сделать следующее:

1. Установить Kutools for Excel — удобный инструмент, а затем нажмите Kutools > Вставить > Заполнить пустые ячейки. Смотрите скриншот:
таблица массива документов для списка 11

2. в Заполнить пустые ячейки диалог, проверьте На основе ценностей и вниз параметры. Смотрите скриншот:
таблица массива документов для списка 12

3. Нажмите Ok or Применить, и теперь пустые ячейки заполняются на основе приведенных выше значений.
таблица массива документов для списка 13

стрелка синий правый пузырь Преобразование таблицы массивов в таблицу списка с помощью Kutools for Excel

Если вышеперечисленные методы для вас недостаточно просты, здесь я могу представить удобный инструмент — Kutools for Excel, Его Перенести размеры таблицы Утилита может быстро и легко конвертировать между таблицей массивов и таблицей списков.

После бесплатная установка Kutools for Excel, сделайте следующее:

1. Выберите таблицу массивов, которую вы хотите преобразовать в список, и нажмите Kutools > Диапазон > Перенести размеры таблицы. Смотрите скриншот:
таблица массива документов для списка 14

2. Затем в Перенести размеры таблицы выберите вариант Перекрестная таблица в список, а затем выберите диапазон, который выводит таблицу списка. Смотрите скриншот:
таблица массива документов для списка 15

3. Нажмите Ok, теперь таблица массивов преобразована в таблицу-список.
таблица массива документов для списка 16

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

В языке разработке 1С можно одну таблицу значений скопировать в другую. Причем можно просто скопировать структуру таблицы значений, т.е. создать точно такую же таблицу значений, с тем же набором колонок, но без строк. Такое копирование осуществляется при помощи метода СкопироватьКолонки. А также скопировать одну таблицу в другую с различными отборами, это можно сделать, используя метод Скопировать. Разберем оба этих метода.

Метод СкопироватьКолонки таблицы значений 1С 8.3

Данный метод является функцией, которая возвращает пустую таблицу значений, с набором колонок, как у изначальной. У этого метода следующий синтаксис:

СкопироватьКолонки(СписокКолонок)

Где, параметр СписокКолонок необязательный параметр, в нем должны быть перечислены имена колонок, которые присутствуют в изначальной таблице, и которые должны быть в новой. Если он не указан, то в новой таблице значений будут такие же колонки, что и в изначальной.

Читайте так же:
Загрузить файлы на майл файлообменник

ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( «Фамилия» );
ТЗ . Колонки . Добавить ( «Имя» );
ТЗ . Колонки . Добавить ( «ДатаРождения» );
//новые таблицы
НовТЗ1 = ТЗ . СкопироватьКолонки ();
НовТЗ2 = ТЗ . СкопироватьКолонки ( «Фамилия,Имя» );

В примере выше, в таблице НовТЗ1 будет тот же набор колонок, что и в таблице ТЗ, а в таблице НовТЗ2 будут только колонки Фамилия и Имя.

Метод Скопировать таблицы значений 1С 8.3

Научимся копировать одну таблицу значений в другую, а в этом нам поможет метод Скопировать. Этот метод является функцией, которая возвращает новую таблицу значений. У него имеется два синтаксиса

Скопировать(Строки,Колонки)

Строки – массив строк таблицы значений, которые должны будут присутствовать в новой таблице. Необязательный параметр, если он пуст, то копируются все строки.

Колонки – строка имен колонок, которые перечислены через запятую. Также необязательный параметр, если он пуст, то в новой таблице будут все колонки.

Второй вариант синтаксиса

ПараметрыОтбора – структура, при помощи которой мы отберем нужные строки в новую таблицу значений. В качестве ключей структуры должны быть перечислены названия колонок, по которым будет вестись отбор, а в качестве значений – те значения, по которым должны отобраться нужные строки.

Рассмотрим примеры с обоими вариантами параметров. Будем использовать ту же таблицу, что и в предыдущих примерах, но отберем только те строки, у которых год рождения 1981.

ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( «Фамилия» );
ТЗ . Колонки . Добавить ( «Имя» );
ТЗ . Колонки . Добавить ( «ДатаРождения» );
//первая строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Иванов» ;
НСтр . Имя = «Петр» ;
НСтр . ДатаРождения = Дата ( 1981 , 1 , 15 );
//вторая строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Иванов» ;
НСтр . Имя = «Алексей» ;
НСтр . ДатаРождения = Дата ( 1981 , 1 , 25 );
//третья строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Григорьев» ;
НСтр . Имя = «Петр» ;
НСтр . ДатаРождения = Дата ( 1987 , 6 , 11 );
//формируем новый массив
МассивДляОтбора = Новый Массив ;
Для Каждого стрТЗ из ТЗ Цикл
Если Год ( стрТЗ . ДатаРождения ) = 1981 Тогда
МассивДляОтбора . Добавить ( стрТЗ );
КонецЕсли;
КонецЦикла;
//новая таблица значений
НовТЗ = ТЗ . Скопировать ( МассивДляОтбора , «Имя,ДатаРождения» );

Посмотрим на результат работы этой функции

Метод Скопировать таблицы значений 1С

Теперь скопируем таблицу значений, так, чтобы в новую таблицу вошли только те строки, где есть имя Петр и дата рождения равна 15.01.1981.

ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( «Фамилия» );
ТЗ . Колонки . Добавить ( «Имя» );
ТЗ . Колонки . Добавить ( «ДатаРождения» );
//первая строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Иванов» ;
НСтр . Имя = «Петр» ;
НСтр . ДатаРождения = Дата ( 1981 , 1 , 15 );
//вторая строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Иванов» ;
НСтр . Имя = «Алексей» ;
НСтр . ДатаРождения = Дата ( 1981 , 1 , 25 );
//третья строка
НСтр = ТЗ . Добавить ();
НСтр . Фамилия = «Григорьев» ;
НСтр . Имя = «Петр» ;
НСтр . ДатаРождения = Дата ( 1987 , 6 , 11 );
//отбор
ПараметрыОтбора = Новый Структура ( «Имя,ДатаРождения» , «Петр» , Дата ( 1981 , 1 , 15 ));
//новая таблица значений
НовТЗ = ТЗ . Скопировать ( ПараметрыОтбора , «Имя,Фамилия» );

В этот раз будет следующий результат.

Метод Скопировать таблицы значений 1С

Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект.

Более подробно и основательно работа с таблицей значений в дается в моей книге:

Читайте так же:
Загрузка процессора 100 процентов windows 10

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Загрузить массив в таблицу значений

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Как в 1C 8 поместить массив в таблицу значений.

Пример носит скорее учебный характер.

Таблица значений — тяжелый, ресурсоемкий объект — контейнер с огромными возможностями:
— отборы
— запросы
— колонки

Таблица значений требует деликатного отношения — глубокого вдумчивого создания структуры таблицы, — (использование и создания индексов, описание типов данных в колонках, и т.д.).

Пример содержит несколько этапов:
1. Подготовка колонки таблицы значений
1.1 Вычисляем тип данных для записи в колонки по типу данных в первом элементе массива.
1.2 Создаем колонку таблицы значений.
2. Записываем данные массива в колонку.

МассивДопустимыеТипы.Добавить(ТипКолонки);
Описание_Типов = Новый ОписаниеТипов(МассивДопустимыеТипы);
ИмяКолонки = СтрЗаменить(Строка(ТипКолонки)," ","_");
ШиринаКолонки = СтрДлина(Строка(МассивЭлементов[0][ИмяРеквизита]));
[ missing image ] —>

Результат:
Гораздо интереснее, с практической точки зрения, преобразование массива в "соответствие".
В контейнере-"соответствие" поиск элемента ведется по "ключу" этого элемента.
Он гораздо "легче" и быстрее.
В качестве ключа может использоваться значение любого типа. Ключ должен быть уникальным в этом контейнере-"соответствие".
Фактически, контейнер-"соответствие" имеет один единственный встроенный индекс по колонке "ключ".
Но это уже отдельная тема.

Предлагаем решение Ваших задач 1С.

Внедрение 1С:

  • Организуем вам индивидуальное экспресс обучение программам 1С.
  • Мы поможем Вам начать работать с программами 1С.
  • Мы поможем Вам настроить ваши отчеты в 1С.
  • Установим и настроим 1С под ваши задачи.
  • Поможем сделать ввод начальных остатков по складам и контрагентам
  • Перенесем данные из старых систем.
  • Подскажем как избежать ошибок.

Доработка и сопровождение 1С:

  • Доработаем существующие или создадим новые печатных формы и документы.
  • Разработаем внешние отчеты по Вашим требованиям.
  • Напишем внешние обработоки по загрузке документов из учетных (торговых) систем в бухгалтерию.
  • Разработаем приложения для выгрузки данных на сайты.

Ориентировочная стоимость работ программиста 1С : 500 р. за 1 час работы.

Данная процедура Преобразует таблицу значений в массив.

Может использоваться для передачи на клиента данных, полученных на сервере в виде таблицы значений в том случае, если таблица значений содержит только такие значения, которые могут быть переданы на клиента

Читайте так же:
Другой пользователь windows 10 как войти

Полученный массив содержит структуры, каждая из которых повторяет структуру колонок таблицы значений.

Не рекомендуется использовать для преобразования таблиц значений с большим количеством строк.

Таблица значений в массив структур

Данная процедура Преобразует таблицу значений в массив.

Может использоваться для передачи на клиента данных, полученных на сервере в виде таблицы значений в том случае, если таблица значений содержит только такие значения, которые могут быть переданы на клиента

Полученный массив содержит структуры, каждая из которых повторяет структуру колонок таблицы значений.

Не рекомендуется использовать для преобразования таблиц значений с большим количеством строк.

Начал программировать в 8.2 и столкнулся с постоянной проблемой передачи "таблицы значений" в Управляемую форму ну и написал маленькую функцию конвертации ТЗ в Массив с вложенной структурой.

Функция ТабЗначВМассив ( ТаблицаЗначений ) Экспорт
НашМассив = Новый Массив ;
Для Каждого СтрокаТаблицы из ТаблицаЗначений Цикл
НашаСтруктура = Новый Структура ;
Счетчик = 0 ;
Для Каждого СтрокаСтруктуры из СтрокаТаблицы Цикл
Если НЕ ТипЗнч ( СтрокаСтруктуры ) = Тип ( ТаблицаЗначений ) тогда
НашаСтруктура . Вставить ( ТаблицаЗначений . Колонки [ Счетчик ]. Имя , СтрокаТаблицы [ Счетчик ]);
Иначе
НашаСтруктура . Вставить ( ТаблицаЗначений . Колонки [ Счетчик ]. Имя , ТабЗначВМассив ( СтрокаСтруктуры ));
КонецЕсли;
Счетчик = Счетчик + 1 ;
КонецЦикла;
НашМассив . Добавить ( НашаСтруктура );
КонецЦикла;
Возврат( НашМассив );
КонецФункции

Задача. Получить данные из таблицы объекта, поместить эти данные в параметры оповещения
для открываемой формы. Загрузить эти данные в таблицу открывшейся формы.

Получение данных. Данные решено было поместить в массив структур. Структура описывает данные строки таблицы значений.

Получение данных из массива запись их в таблицу значений

Специальные предложения

Часто требуется перекидывать не только на сервер, но и на клиент.
На клиенте ТЗ недоступна

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

А способ автора – сто лет в обед

(20). Может, и есть какие либо другие решения, но мне не попадались, да и искать не захотелось. Накидал по-быстрому свой вариант.

Читай аннотацию, а не ерничай.

ну еще много ссылок в комментах

Да и мееседж был к (5), не к Вам

(20) Ну так вопрос "Как получить ТЗ на клиенте" в принципе не корректен, т.к. ТЗ на клиенте не существует. Сперва нужно определится зачем таблица на клиенте, затем определится где ее хранить, а уже затем – как ее получить. Почти всегда это заполнение таблицей значений на сервере реквизита формы или объекта. Иногда нужно и преобразование в массив структур или структуру массивов, например для конвертации в JSON. Но первично – определить, а во что положить то на клиенте.

Для задачи передачи ТЗ через клиент – лучший вариант через временное хранилище, но он не единственный и бывают ситуации, когда можно обойтись другим подходом. Именно про это я и говорю в (5)

(24)У меня задача стояла именно прокинуть ТЗ через клиента. Об этом и писал в самом начале.
И ни слова о том, что ее нужно получить на клиенте. Все остальное не мои додумки. 🙂

. Как передать таблицу значений через клиента.

Если простые типы, то и JSON можно использовать

См. также

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector