Имя: Пароль:
1C
 
Табличный документ и формула из колонок
0 Eugeneer
 
04.10.22
21:11
Есть формула. Ну типа на встроенном языке любой код. Но в этом коде обращение к значениям колонок строки Колонка1 - Колонка2 - Колонка3 и так далеее.

Для чего?

Юзеры пишут формулы например Наименование = Колонка1 + " "+ Колонка3;

Для простоты.

Если у нас исходная таблица - это ТЗ. То ма в коде потом просто можно обработать формулу простым -

ТекстАлгоритма = СтрЗаменить(ТекстАлгоритма,"Колонка","СтрокаИмпорт.");

И там легко Колонка1  превратится в СтрокаИмпорт.1; - т.е. сразу к названию колонки.


А вот что делать если Табличный документ. В нем нужно обращаться к конкретной области ячейки. А значит нужно что то типа Колонка1 превращать в Область(1,2,1,2);

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

Задание непростое. Я лично пока не допер. Кто сделает - с меня моментально 1000 рублей на карту.
1 Eugeneer
 
04.10.22
21:13
Причем надо чтобы это было максимально оптимально. Формула может быть достаточно сложной.

А перечитываться могут десятки тысяч строк.
2 RomanYS
 
04.10.22
21:18
Эксель хочешь придумать? Возьми либру)
3 RomanYS
 
04.10.22
21:20
(1) Если пересчитывать нужно всю таблицу, то оптимальнее всю таблицу в ТЗ прочитать например построителем.
Если нужно как в экселе формула в каждой ячейке, то обрабатывай области. Кстати достаточно Область(нс,нк)
4 Ivan_495
 
04.10.22
21:21
Нужно в табличный документ выводить макет и работать с его ячейками
5 Eugeneer
 
04.10.22
21:45
Вопрос РЕШИЛ!. триста лет не решал. а тут решил
6 Eugeneer
 
04.10.22
21:47
Я просто значения всех ячеек строки (по факту колонок) загнал в структуру.

ЗначенияВсехКолонок = Новый Структура();
        Для ИндексКолонки = 1 По ТабличныйДокумент.ШиринаТаблицы Цикл
            ОбластьЗначения = ТабличныйДокумент.Область(НомерСтрокиЧГ,ИндексКолонки,НомерСтрокиЧГ,ИндексКолонки);
            ЗначениеКолонки = ОбластьЗначения.Текст;  
            ЗначенияВсехКолонок.Вставить("Колонка"+ИндексКолонки,ЗначениеКолонки);
        КонецЦикла;


А формуле!!

ТекстАлгоритма = СтрЗаменить(ТекстАлгоритма,"Колонка","ЗначенияВсехКолонок.Колонка");
7 Eugeneer
 
04.10.22
21:48
(1) таблицу построителем ок. А табличный документ разве можно в запросы пихать?))
8 Eugeneer
 
04.10.22
21:48
кстати а можно ли пихать табличные документы в запрос??????
9 mistеr
 
04.10.22
21:51
(5) На карту себе не забыл перевести? :)
10 Eugeneer
 
04.10.22
21:55
Новое обьявление))

Как запихнуть Таб док в запрос.

Ну типа хотя бы чтобы из него получить временную таблицу прям в запросе. Это для того чтобы не создавать ТЗ.
11 RomanYS
 
04.10.22
21:56
(8) Построитель же, посмотри описание источника данных.
Прочесть ТД в ТЗ построителем несколько строк кода
12 Eugeneer
 
04.10.22
21:57
(11) не.. не нужно ТЗ вообще. Нужно временная таблица в самом запросе.
13 Eugeneer
 
04.10.22
21:57
и чтобы запрос еще можно было усложнить далее. начать работать с этой таблицей
14 RomanYS
 
04.10.22
22:01
(12) глупость. Есть инструмент, он работает. А твое желание не забивать гвозди молотком не чем не обоснованно.
Тут Геню надо, ему тоже надо чтобы через ж. было
15 Guk
 
04.10.22
22:02
Женя жжот ;)..
16 mistеr
 
04.10.22
22:05
Да чего мелочиться, пихай сразу в СКД. Там язык намного богаче запросов.
17 Guk
 
04.10.22
22:05
Женя, учи матчасть. что может быть источником данных в запросе...
https://its.1c.ru/db/metod8dev/content/2591/hdoc
18 Злопчинский
 
04.10.22
22:05
19 mistеr
 
04.10.22
22:17
(18) В любое другое время я бы сказал, что копировать Эксель в 1С тупиковый путь. Но в текущих условиях "все не так однозначно"...
20 Eugeneer
 
04.10.22
22:24
(14) мы с тобой выясняли уже вопрос о том сколько жрут ТЧ и ТЧ памяти....
Я решил пойти на таб доки.

Одну из значимых частей я уже сделал. А теперь нужно результат решить. А результат - это если вообще отказаться целиком от ТЗ и ТЧ. причем и у клиента и на сервере.

Речь идет об огромных данных. в десятки, сотни тысяч строк.
21 Злопчинский
 
04.10.22
22:26
(19) главное чтобы сам 1С не был тупиковым
22 RomanYS
 
04.10.22
22:28
(20) жрут как раз ТД и коллекции формы. С ТЗ и ТЧ никаких проблем
23 Eugeneer
 
04.10.22
22:28
(17) там вода. причем в том материале даже нет и слова о том что в запросы можно передавать ТЗ.

У меня конкретный вопрос про Таб доки. Причем не нужно мне чтобы таб док в ТЗ превращался.

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

вот нужно чтобы можно было загнать его в запрос. и там соединить со всяким разным. чтобы на выходу получить новый таб док. с дополненными данными.
24 RomanYS
 
04.10.22
22:29
+(22) ну и очевидно временные таблицы жрут столько же. Экономия на спичках могла бы получиться... но нет такого решения))
25 Eugeneer
 
04.10.22
22:30
(22) да да. расскажи)) сказку как дед насрал в коляску))

У меня тут документ есть на 500к строк. Его что не загрузишь так 5 гигов оперативки нет.
26 Eugeneer
 
04.10.22
22:31
(24) ок жрут.

Но если ТД превращать в ТЗ чтобы ТЗ снова передать в запрос.... то это как бы ....
27 RomanYS
 
04.10.22
22:41
(25) Что значит "загрузишь"? Если ты форму открываешь, то может и 5 гиг. А так 10кБ на строку многовато
28 RomanYS
 
04.10.22
22:42
(26) Это как бы нормально, так и было задумано. В запрос можно засунуть данные только через базу или через ТЗ, других вариантов нет
29 mistеr
 
04.10.22
22:44
(25) При таких объемах я бы рассматривал ВИД
30 Eugeneer
 
04.10.22
23:13
(28) для начала пусть в ТЗ уберут лимиты строк. и до ума доведут) ТЗ 1С памяти жрут как вне себя.
31 Eugeneer
 
04.10.22
23:13
эксели с кучей форматов, разукрашек, картинок, гиперссылок не так жрут как в 1С таблицы значений.
32 RomanYS
 
04.10.22
23:16
(30) ну жди тогда. И ветку подними с замерами, нет там проблем с памятью под ТЗ
33 RomanYS
 
04.10.22
23:31
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn