Имя: Пароль:
1C
1С v8
Программно создать колонки в ТЧ документа. Вопросы сохранения этого всего добра.
0 AlexITGround
 
18.11.13
04:43
Есть документ. Программно добавляю колонки в таблицу значений. Количество не фиксированное, соответственно в документе сохранить не смогу. Методами Сохранить/ВосстановитьЗначение - тоже не могу, необходимо работать нескольким пользователям с документом. Регистр - жОсткое извращение, но всё же сработает, не хочется таким путем идти. Ребят, какие мысли?
1 ДенисЧ
 
18.11.13
05:05
иди выпей коньяку, проспись и переформулируй вопрос.
2 AlexITGround
 
18.11.13
05:09
(1) Попробую растолковать. Есть документ. ТЗ - реквизит формы, в кот. добавляется произвольное количество колонок. Вопрос: каким макаром сохранять?
3 AlexITGround
 
18.11.13
05:10
+ 2 коньяку бы -- это да, если бы результат был)
4 Лодырь
 
18.11.13
06:11
(2) Что сохранять? Куда сохранять?
5 Wobland
 
18.11.13
06:13
как только выяснишь, куда сохранять, сигнализируй
6 Галахад
 
гуру
18.11.13
06:57
В хранилище значений можно.
7 VladZ
 
18.11.13
07:05
(0) К чему такие извращения? Со временим возникнет желание анализировать эту информацию. Каким образом это будешь делать?
8 Рэйв
 
18.11.13
07:29
(0)Реквизит строка неограниченной длины +

При записи:
Реквизит=ЗначениеВстрокуВнутр(ТЗ);

При открытии:

ТЗ=ЗначениеИзСтрокиВнутр(Реквизит).Скопировать()
9 AlexITGround
 
18.11.13
07:40
(8) спасибо, проанализирую данный случай
10 Defender aka LINN
 
18.11.13
07:58
(8) А потом кто-нибудь меняет в конфигураторе тип, сохраненный в этой таблице, и привет
11 Рэйв
 
18.11.13
08:14
(10)а завтра ядерная война и мы все умрем:-)
12 kosts
 
18.11.13
08:20
Если колонок создается не много, например, пусть даже 30-40, то добавь сразу столько колонок в твою ТЧ. Потом по мере надобности открывай.

Если там сотни колонок, то можно так:

Создай новую ТЧ, с колонками.
ИД колонки (число)
ИД строки (число)
Значение (такое какое нужно).

При открытии и сохранении гоняешь значения из экранного ТЗ в ТЧ и обратно.
13 Apokalipsec
 
18.11.13
08:23
про видимость и роли автору уже говорили или тут только извращения предлагать?
14 Лодырь
 
18.11.13
08:44
(13) Дружище, странный вопрос, ты на мисте! Только извращения разумеется.
15 Фокусник
 
18.11.13
08:54
(0) Колонка в ТЧ: "ИмяКолонки". Хранить либо в одной "развернутой" ТЧ, либо в двух (как в типовом документе "установка цен")
16 Lama12
 
18.11.13
09:01
(0) Хотелось бы услышать цель данного документа?
Какое событие он фиксирует?
17 AlexITGround
 
18.11.13
09:03
(15) там реквизиты есть в ТЧ, не оно
18 AlexITGround
 
18.11.13
09:04
(16) формирует заказы покупателей и как следствие создает маршрут по ним
19 AlexITGround
 
18.11.13
09:05
(13) причем здесь "видимость" и "роли", аргументируй
20 AlexITGround
 
18.11.13
09:06
(12) была такая идея, колонок немного, что-то около 20-30, если др. варианты не прокнут, то так и придется
21 Wobland
 
18.11.13
09:07
(18) что в колонках?
22 Lama12
 
18.11.13
09:07
(18) Может не в табличной части хранить данные а в регистре сведений?
А на форме документа отображать этот регистр так, как понадобится?
Там же можно навертеть как угодно. И колонки добавлять сколько вздумается. :)
23 AlexITGround
 
18.11.13
09:08
(12) "Создай новую ТЧ, с колонками.
ИД колонки (число)
ИД строки (число)
Значение (такое какое нужно). "

Вот этого я не понял, можно подробнее плиз?
24 Lama12
 
18.11.13
09:08
22+ Ну т.е. как в операции сделать.
Только с отображением колонок придется помучится. А так все должно получиться.
25 AlexITGround
 
18.11.13
09:08
(21) в колонках числа, но разница...
26 AlexITGround
 
18.11.13
09:09
(22) в топике про регистр я упомянул, не хотелось бы так, как крайний вариант держу
27 Lama12
 
18.11.13
09:10
(26) ИМХО - это самое оптимальное.
Остальные варианты либо ссылочную целостность не дают, либо избыточную информацию придется хранить.
28 ИС-2
 
naïve
18.11.13
09:11
(26) хранилище значений.
Но, имхо, переменное количекство колонок есть зло. Лучше уж регистр
29 disla
 
18.11.13
09:13
Регистр - это не крайний, а самый разумный и оптимальный вариант.
30 ИС-2
 
naïve
18.11.13
09:13
(26) посмотри документ Уставновка цен номенклатуры - там тоже количество колонок по ценам в псевдо ТЧ произвольное.
31 Мимохожий Однако
 
18.11.13
09:14
Добавь в документ реквизит с типом Таблица значений и в него сохрани.
32 Wobland
 
18.11.13
09:14
(25) рассказываю разницу. всё становится сильно проще, если колонки сделать строками
33 AlexITGround
 
18.11.13
09:14
(30) да нет там того, чего я хочу, там фиксированное количество реквизитов...
34 AlexITGround
 
18.11.13
09:16
(31) хм...да нету там такого типа, уже искал
35 disla
 
18.11.13
09:18
(31) насмешил!
36 Фокусник
 
18.11.13
09:19
(25) "в колонках числа"

Ну значит одна сводная ТЧ для хранения данных:
ИмяКолонки (строка)
Значение (число)
37 Мимохожий Однако
 
18.11.13
09:19
(34) тогда см (26).Чего бояться регистров, если они твои и с поставщиком конфигурации не связаны. Если объснишь по какой причине разные колонки, то возможно и решение будет связаны с этими причинами.
38 Мимохожий Однако
 
18.11.13
09:19
(35) да ))
39 Фокусник
 
18.11.13
09:21
(26) "в топике про регистр я упомянул"
Зачем регистр, если тоже самое можно в ТЧ самого документа хранить? ;)
40 romashov
 
18.11.13
09:22
установа уен номенклатуры как вариант
41 Necessitudo
 
18.11.13
09:22
(0) Ну делаешь просто - создаешь реквизит у документа с типом ХранилищеЗначения, в него запихиваешь табличное поле с формы. Профит.
42 mdocs
 
18.11.13
09:23
Несруктурированный документ - это какая-то...
43 AlexITGround
 
18.11.13
09:32
(41) Рейв выше предложил, сейчас обкатываю
44 AlexITGround
 
18.11.13
09:32
(42) всё в жизни может быть
45 Apokalipsec
 
18.11.13
09:37
(19) Тем что лучше готовая ТЧ с полным списком фиксированных колонок, а какие колонки показывать - решать при открытии(создании на сервере) в зависимости от роли пользователя.
У тебя в шапке топика ТЧ, а внутри уже ТЗ.
46 disla
 
18.11.13
09:39
(39) если делать ТЧ, то например, 30 колонок по 30 строк - подумай, сколько по времени будет документ с такой ТЧ сохраняться/проводиться. Тем более в ТЧ количество строк ограничено.
47 kosts
 
18.11.13
09:41
(39) +1 Регистры в данном случае не дадут ничего полезного чем ТЧ.

(23) >Вот этого я не понял, можно подробнее плиз?

В такой ТЧ адрес ячейки и значение. Что именно не понятно?
48 AlexITGround
 
18.11.13
09:41
(45) верно подметил, спс, если есть модеры - измените в названии ТЧ на ТЗ
49 ASU_Diamond
 
18.11.13
09:42
А почему бы не сделать как в документе "Установка цен" в типовых конфигах?
50 kosts
 
18.11.13
09:47
(46) В типовом табеле в ЗУП, если не ошибаюсь 4*31*2 + 2 = 250 колонок и ничего платформа пережевала не подавилась...
51 AlexITGround
 
18.11.13
09:49
(49) коллеги, ну вот где вы там видите, тыкните строчку, нет там такого!
52 ASU_Diamond
 
18.11.13
09:50
(46) сохроняться вообще без проблем будет, а проведение от этого вообще не зависит. Кстати как раз в проведении будет проблемнее работать с регистром сведений, чем с ТЧ.
И ещё как будет делаться привязка к регистру сведений у не записанного документа?
53 ASU_Diamond
 
18.11.13
09:51
(51) что ты там найти не можешь? в одном документе можно устанавливать цены на несколько типов цен. при добавлении различных типов цен добавляются колонки.
54 disla
 
18.11.13
09:54
(50) (52) насколько я понял из (0) речь идёт о произвольном количестве колонок.
55 ASU_Diamond
 
18.11.13
09:56
(54) ты привел пример 30 колонок по 30 строк, тебе привели пример в 250 колонок в типовой, который нормально работает. В чём проблема?
56 kosts
 
18.11.13
09:56
(54) Понятно. Вот только обычно в какое-то ограничение вписывается.
57 wade25
 
18.11.13
09:57
Значение в строку.  Решения с 40 колонками в ТЧ, стукнитесь обо что нибудь кто предложил :)
58 hhhh
 
18.11.13
10:04
(55) правильный отчет в (36)
59 disla
 
18.11.13
10:06
(55) смотри (36).
60 ASU_Diamond
 
18.11.13
10:11
(58)(59) см (49)
61 disla
 
18.11.13
10:22
(60) ничего не нашел по теме. смотрел в бух 2.0
62 kosts
 
18.11.13
10:25
(61) Это в части торговле наверное
63 ASU_Diamond
 
18.11.13
10:32
(61) а в бух-ии есть несколько типов цен (никогда там не возникала необходимости вести в БП различные цены)?
в типовых УТ, УПП, КА точно механизм есть
64 AlexITGround
 
18.11.13
10:32
попробовал запихать в строку, все колонки сохраняет, а те, которые добавлялись программно - нет, ЧЯДНТ?
65 kosts
 
18.11.13
10:37
(64) Если хочешь головной боли продолжай сохранять в строку...
66 ASU_Diamond
 
18.11.13
10:41
1986 г.р.
67 ИС-2
 
naïve
18.11.13
11:42
(49) сейчас точно не помню как устроено, но суть в том, что строки по типам цен разворачиваются в колонки

ТЧ содержит:
Товар1 ТипЦен1
Товар1 ТипЦен2
Товар1 ТипЦен3

Выводимая таблица
Товар1 ТипЦен1 ТипЦен2 ТипЦен3

при сохранении просходит обратное преобразование
68 AlexITGround
 
18.11.13
12:23
(67) спасибо, я помню как, хотел найти другой способ, так как в данном случае это аналогично созданию регистра, в котором нужно будет сохранять. Вообще-то "Тицен" и "индекс" содержит вторая ТЧ, по ним же генерируется, связь через соответствие.
69 AlexITGround
 
18.11.13
12:23
(66) на личности переходить не буду, как-то непрофессионально получится, спасибо и тебе тоже
70 Ymryn
 
18.11.13
12:43
Поддержу идею с регистром сведений. В регистре измерения - документ и идентификатор колонки - ресурс - значение. Собственно при открытии - читаешь регистр и строишь каждый раз таблицу с нуля. Кодится несложно. Основная трудность - это определиться со структурой идентификаторов.
71 kosts
 
18.11.13
13:00
(70) Регистр не лучше ТЧ, а только хуже.

Регистр есть смысл использовать только для сохранения структуры колонок, и то если одна структура будет применяться для многих документов. И то даже тут, тогда лучше справочник использовать.
72 Ymryn
 
18.11.13
13:41
(71) Чем он принципиально хуже? (без сарказма, действительно интересно.)
73 kosts
 
18.11.13
14:05
(72) Не сказать, что прям в 10 раз хуже, но так несколько хуже.
Данные оторваны от объекта, отсюда:

-При открытии документа лишний запрос к бд.
-В запросах к документу лишнее соединение.
-Усложняется обмен с другими базами.
-В момент записи документа нужно проследить, что бы данные в регистре обновились только в том и только в том случае, если документ записан. Если произошел отказ записи документа (по какой-либо причине), то и регистр не должен быть записан. И наоборот. Если ошибка при записи регистра, то и документ не должен быть записан. Этого лучше всего добиться передав данные для записи в модуль объекта и записывать в одной транзакции.

Это все можно обойти, но зачем усложнять себе жизнь...

Думаю, выигрыша в объеме хранимых данных в регистре не будет (думаю примерно одинаково, что так, что так).
74 kosts
 
18.11.13
14:09
(73) В ТЧ же нужно-то всего два маленьких цикла, перед записью документа и при открытии, для трансформации данных в другой вид...
75 Ymryn
 
18.11.13
14:15
(73) Возможно я ошибаюсь, но насколько я знаю, в БД шапка и табличная часть хранятся в разных "таблицах" (извините за путаницу), поэтому 1 и 2 пункты неактуальны. Усложнение обмена - вопрос для обсуждения.
Соглашусь разве только с 4 пунктом. Но на мой взгляд, оба варианта по функциональности примерно одинаковые и сугубо дело вкуса.