Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Преобразование таблицы из линейной в прямоугольную

v7: Преобразование таблицы из линейной в прямоугольную
Я
   brenli
 
16.02.20 - 01:07
ВСем привет.
Есть таблица в которой 2 колонки:
1)Параметр
2)Значение

И пример ёё заполнения

Параметр Значение
ААА       12  
АВА       13
ССС       16
ААА       83  
АВА       99
ССС       61

Нужно привести к виду чтобы получилось 3 колонки

ААА АВА ССС
12  13  16
83  99  61

Подскажите максимально  быстрый способ  создания такой таблицы
   Ненавижу 1С
 
1 - 16.02.20 - 01:16
вопрос, а почему новая таблица как у вас, а не:

ААА АВА ССС
83  13  61
12  99  16
   brenli
 
2 - 16.02.20 - 01:19
(1)  потому что это распарсенный json
   Ненавижу 1С
 
3 - 16.02.20 - 01:22
(2) распарсенный JSON он какой-то особенный, на вопрос есть что ответить?
   brenli
 
4 - 16.02.20 - 01:28
(3) Особенный.
Парсим перечень товаров ответ такой

"cis": "0000000000000000000000000000000",
"gtin": "04059155704529",
"tnVedEaes": "6401990000",
"tnVedEaesGroup": "6405",
"productName": "string",
"emissionDate": "2019-01-23T08:24:21.048Z",
"ownerInn": "583713710002",
"ownerName": "string",
"participantName": "string",
"participantInn": "0000000000",
"status": "INTRODUCED",
"lastDocId": "string",
"emissionType": "LOCAL"
"cis": "0000000000000000000000000000000",
"gtin": "04059155704529",
"tnVedEaes": "6401990000",
"tnVedEaesGroup": "6405",
"productName": "string",
"emissionDate": "2019-01-23T08:24:21.048Z",
"ownerInn": "583713710002",
"ownerName": "string",
"participantName": "string",
"participantInn": "0000000000",
"status": "INTRODUCED",
"lastDocId": "string",
"emissionType": "LOCAL"
"cis": "0000000000000000000000000000000",
"gtin": "04059155704529",
"tnVedEaes": "6401990000",
"tnVedEaesGroup": "6405",
"productName": "string",
"emissionDate": "2019-01-23T08:24:21.048Z",
"ownerInn": "583713710002",
"ownerName": "string",
"participantName": "string",
"participantInn": "0000000000",
"status": "INTRODUCED",
"lastDocId": "string",
"emissionType": "LOCAL"
   МихаилМ
 
5 - 16.02.20 - 01:29
(0) все зависит от разряженности матрицы.
если матрица заполнена и колонок больше 4 - то самый быстрый способ поколоночный, но сложно программируемый.
иначе - построчный в, обернутый в исключения.
   МихаилМ
 
6 - 16.02.20 - 01:30
+(5)
построчный метод - проверка на проф пригодность.
   Ненавижу 1С
 
7 - 16.02.20 - 01:38
кстати в (4) кривой JSON - там поля повторяются
наверняка это был массив объектов, тогда вообще проблем не вижу сразу нужную таблицу рисовать
   brenli
 
8 - 16.02.20 - 01:43
(7) Поля и повторяются. json не кривой - конечно я привел пример не из запроса, а из документации, но запрос выводит именно списком.
И поля повторяются. Поэтому я и спросил про преобразование.
   brenli
 
9 - 16.02.20 - 01:43
(7) скрин сделать ответа?
   brenli
 
10 - 16.02.20 - 01:55
(7) у вас есть парсер json?
   Ненавижу 1С
 
11 - 16.02.20 - 02:14
(10) он встроен в 8.3, но у 7.7 я так понял
возьми любой онлайн парсер и проверьте на валидность
откуда я решил про кривой?
 - поля повторяются
- после значения нет запятой:
"emissionType": "LOCAL"
"cis": "0000000000000000000000000000000",
   NorthWind
 
12 - 16.02.20 - 08:31
Скопируем исходную таблицу, пусть это будет таблица1. Значение забьем единицей. Свернем по значению. Отсортируем по параметру. Получим параметр - это будет список всех полей результирующей таблицы, Макс (значение) - количество строк которые надо вставить в нее. Можно сразу наставлять пустых строк чтобы потом с этим не париться. Получили пустую таблицу. Дальше берём исходную таблицу (до копирования), идём по не в цикле и помещаем значения в соотв ячейку результата. Возможно понадобится ещё служебный список, где будем хранить для каждой колонки, сколько строк уже занято... Ничего сложного не вижу.
   SleepyHead
 
13 - 16.02.20 - 08:36
(0) А что, свертку и траспонирование уже не изучают в школе юных программистов ?
   trdm
 
14 - 16.02.20 - 08:45
   Злопчинский
 
15 - 16.02.20 - 12:37
а не проще получить таблицу с треия строчками, в которых вложенные таблицы..? на 77 в ИТЗ такое одной строкой делается, что-то подобное м.б. и 8-ке есть..?
   ДедМорроз
 
16 - 16.02.20 - 13:05
Так это,читая json,просто пишите по столбцам
Я не очень понимаю,зачем из предложенного файла вообще делать линейную таблицу.
   brenli
 
17 - 16.02.20 - 14:15
(16) Для работы. Насколько я знаю json в 7.7 просто текст
   brenli
 
18 - 16.02.20 - 14:23
(13) нет ). Я программист самоучка. Матрицы когда то давно пробегал для самообразования
   Злопчинский
 
19 - 16.02.20 - 14:38
(17) ээээ? а в других местах json - это не текст?!
   Провинциальный 1сник
 
20 - 16.02.20 - 14:44
(0) Не надо так делать. Самое правильное - использовать индексированную таблицу из 1с++, и не хранить физически двумерную таблицу, а хранить в виде кортежа (ключ строки,ключ колонки,значение). По ключам строятся индексы, и далее легко программно сэмулировать двумерную таблицу. При этом не придется хранить воздух и быстродействие будет на порядок выше.
   brenli
 
21 - 16.02.20 - 14:50
(19) я имею ввиду что в 1с его надо разбирать и анализировать посимвольно.
По индексам к массивам обращаться нельзя  и т.д
   brenli
 
22 - 16.02.20 - 14:52
(20) спасибо попробую.
   brenli
 
23 - 16.02.20 - 16:44
(15) можно подробнее что имеется ввиду?
   NorthWind
 
24 - 16.02.20 - 16:46
(23) можно из таблицы сослаться на таблицу, т.е. в таблице может быть колонка типа "ТаблицаЗначений".
Допустим, строка таблицы Параметр ААА, Значения типа ТаблицаЗначений и в ней строки 12 и 83.
   NorthWind
 
25 - 16.02.20 - 16:49
а имеется в виду скорее всего вот это http://www.1cpp.ru/docum/html/IndexedTable.html#group
   NorthWind
 
26 - 16.02.20 - 16:50
кстати, да, если можно юзать в проекте 1С++, то вариант идеальный, наверно
   brenli
 
27 - 16.02.20 - 16:54
(19) (25) спасибо. Идея годная
   brenli
 
28 - 16.02.20 - 16:55
(27) + (14)


Список тем форума
Рекламное место пустует  Рекламное место пустует
Компьютер — устройство разработанное для ускорения и автоматизации человеческих ошибок.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.