Имя: Пароль:
1C
1С v8
Помогите разобраться с ДеревоЗначений(сохранить)
, ,
0 Razzle Kay
 
10.04.18
06:09
На форме документа ТабличноеПоле с типом ДеревоЗначений
дерево заполняется, жму записать, а дерево не сохраняется
подскажите, как правильно сделать ?
1 Mankubus
 
10.04.18
06:13
(0) нужно его записать в табличную часть документа
2 Razzle Kay
 
10.04.18
06:17
(1) Ну я и прошу подсказать, как это сделать )
3 Mankubus
 
10.04.18
06:21
(2) 1. Обходишь дерево в цикле
2. Заполняешь ТЧ
3. Профит
Код за тебя писать я не буду
4 Razzle Kay
 
10.04.18
06:22
(3) а дерево обходится рекурсией ?)
5 Razzle Kay
 
10.04.18
06:41
(3) за меня не надо код писать, просто пример можно ?
6 catena
 
10.04.18
06:44
(5) Процедура ОбойтиВсеСтроки(стр)
Для каждого стрДочь из стр.Строки() Цикл
ОбойтиВсеСтроки(стрДочь)
КонецЦикла;
КонецПроцедуры
7 Razzle Kay
 
10.04.18
06:45
(6) я не про рекурсию, а про сохранить в тч
8 Razzle Kay
 
10.04.18
06:56
(6) не пойму, как сохранять в ТЧ дерево, а не как обойти
9 hhhh
 
10.04.18
06:59
(8) Для каждого стрДочь из стр.Строки() Цикл

НоваяСтрокаТЧ = ТЧ.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ, СтрДочь);


ОбойтиВсеСтроки(стрДочь)
КонецЦикла;
10 Razzle Kay
 
10.04.18
07:02
(9) ПриЗаписи ?
11 hhhh
 
10.04.18
07:09
(10) Блин, ну что за люди? Ну миллион раз уже говорено, что процедура ПриЗаписи вызывается уже после реальной записи в базу.

В ПередЗаписью пишите
12 Razzle Kay
 
10.04.18
07:10
Переменная не определена (Стр)
         ОбойтиВсеСтроки(<<?>>Стр) (Проверка: Толстый клиент (обычное приложение))
13 Razzle Kay
 
10.04.18
07:24
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    ОбойтиВсеСтроки(Стр)
КонецПроцедуры
14 catena
 
10.04.18
07:29
(13)Таки вы сказали, что код вам не нужен. Вы желаете, чтобы вам алгоритм рассказали или сами местами все-таки подумаете?
15 Razzle Kay
 
10.04.18
08:05
Процедура ОбойтиВсеСтроки(РезультатДерево)
                Для каждого стрДочь из РезультатДерево.Строки Цикл

НоваяСтрокаТЧ = Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ, СтрДочь);


ОбойтиВсеСтроки(стрДочь)
КонецЦикла;
КонецПроцедуры

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    ОбойтиВсеСтроки(РезультатДерево)
КонецПроцедуры

не сохраняет
16 hhhh
 
10.04.18
08:17
(15) всё-таки

Объект.Товары.Добавить();

вы хотя бы немного почитайте про программирование в 1с. и видео полно в интернете.
17 Razzle Kay
 
10.04.18
08:32
(16) всё равно не сохраняет
18 Ёпрст
 
10.04.18
08:58
(17) и правильно делает, код же бредовый..и задача странная
19 Сияющий в темноте
 
10.04.18
09:03
В дереве есть иерархия,нужно ее сохранить в линейную таблицу,а для этого в таблицу нужно добавить колонку,в которой будет сохраняться номер строки родительского элемента,к примеру,или нужно вводить свой идентификатор,чтобы соотносить родителя с детьми
свой идентификатор не будет бояться изменения порядка строк
20 Mankubus
 
10.04.18
09:14
(15) >>не сохраняет
как ты это понял? потом при открытии еще нужно из таблицы в дерево заполнить. само оно не заполнится
21 catena
 
10.04.18
10:15
(19)А если дерево строится на иерархии одного из реквизитов?
22 Веселый собака
 
10.04.18
10:24
бгг.
(0) сохрани в хранилище значения и не парься.

Правда, чтобы прочитать, надо будет его считывать, в запросе не пройдешься.
23 Вафель
 
10.04.18
10:49
если в дереве всего пару уровней, то можно и без рекурсии
24 Franchiser
 
гуру
10.04.18
11:03
В форме включаешь сохранение настроек, и в обработке указываешь сохранение в хранилище настроек, на форму кидаешь реквизит Дерево или же создаёшь реквизит обработки Дерево и так же кидаешь на форму, указываешь для него сохранение.
25 Franchiser
 
гуру
10.04.18
11:04
Ну и галочку "автоматическое сохранение при закрытии"
26 Веселый собака
 
10.04.18
11:11
(25) А теперь запросом выберите мне значения..  и побыстрее.
27 Franchiser
 
гуру
10.04.18
11:49
(26) зачем?
28 catena
 
10.04.18
11:52
(27)Наверное затем, что у ТС документ, а не обработка.
29 Razzle Kay
 
10.04.18
11:52
(20) а можно поподробнее ?
30 catena
 
10.04.18
11:58
(29)Это как писать, только наоборот - читать
31 Razzle Kay
 
10.04.18
12:23
(30) ну я имею ввиду как из таблицы в дерево заполнить
32 Franchiser
 
гуру
10.04.18
12:40
Сколько уровней в дереве?
33 Franchiser
 
гуру
10.04.18
12:41
Можно сделать несколько тс, которые связываются по идентификатору, примеры есть в типовых
34 Franchiser
 
гуру
10.04.18
12:42
(31) например, рекурсивным обходом тч
35 Razzle Kay
 
10.04.18
12:43
(34) сейччас я обхожу дерево, чтобы сохранить дерево в тч, теперь мне надо обходить, чтобы из тч в дерево сохранить ??????
Процедура ОбойтиВсеСтроки(РезультатДерево)
    Для каждого стрДочь из РезультатДерево.Строки Цикл         
        НоваяСтрокаТЧ = ДокументОбъект.Товары.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ, СтрДочь);    
        ОбойтиВсеСтроки(стрДочь)
    КонецЦикла;
КонецПроцедуры

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    ОбойтиВсеСтроки(РезультатДерево)
КонецПроцедуры
36 Razzle Kay
 
10.04.18
12:44
(32) уровней разное кол-во в разных доках
37 Малыш Джон
 
10.04.18
12:48
Я конечно нисколько не хочу прерывать это увлекательное действо...

но что мешает завести реквизит документа с типом ДеревоЗначений и сохранять дерево таки там?
38 catena
 
10.04.18
12:49
(35)Сделай запрос к ТЧ с нужными группировками и выгружай без обхода.
39 Razzle Kay
 
10.04.18
12:51
(38) я не совсем понимаю, я сделал дерево из-за иерархии, меня всё устраивает, только не пойму, как записывать дерево в документе
40 catena
 
10.04.18
12:53
(37)Я вот щас дико извиняюсь, а что, сейчас уже и такое реализовано?
41 Franchiser
 
гуру
10.04.18
13:07
(40) тип хранилище значения можно
42 Малыш Джон
 
10.04.18
13:08
(40) хммм... был уверен, что уже таки да... странно...
43 catena
 
10.04.18
13:09
(41)Хранилище ссылочную целостность не поддерживает, к сожалению.
44 Razzle Kay
 
10.04.18
13:10
жесть, не могу понять и всё
45 catena
 
10.04.18
13:11
(44)Забей, не твое это.
46 Fish
 
10.04.18
13:13
(44) Что именно непонятно?
47 Razzle Kay
 
10.04.18
13:26
(46) ну мне сказали нужно сохранить дерево в тч обойди рекурсией, я сделал, как показали
а что теперь делать не понятно
как я понял нужно теперь обойти тч рекурсией и сохранить в дереве что ли ??
48 hhhh
 
10.04.18
13:44
(47) ну как ты понял, что оно не сохранилось? Внутренний толчок в мозг был? Или сон приснился? Типа у тебя не сохранилось?
49 Franchiser
 
гуру
10.04.18
13:47
Тч у тебя уже есть сохранённое дерево, обратно чтобы восстановить дерево рекурсия не нужна, просто обходишь ТЧ и заполняешь реквизит Дерево на форме, сохранять его не надо.
50 Razzle Kay
 
10.04.18
13:54
(49) но у меня же изначально в документе дерево моё заполнено данными из запроса
51 Franchiser
 
гуру
10.04.18
13:59
(50) что есть дерево у тебя, это реквизит формы? Какой там путь?
52 hhhh
 
10.04.18
14:09
(50) ну значит запрос этот надо было изучить сначала. Какие данные он грузит в дерево.
53 Razzle Kay
 
10.04.18
14:12
(52) в смысле ?
54 Razzle Kay
 
10.04.18
14:14
55 Franchiser
 
гуру
10.04.18
14:16
(54) ну если это реквизит формы, что мешает в процедуре причтениинасервере() выполнить его заполнение из ТЧ документа?
56 Razzle Kay
 
10.04.18
14:18
(55) опыт)
57 Franchiser
 
гуру
10.04.18
14:21
В ТЧ тебе нужны все колонки из дерева + Номер строки + Родительский номер строки. По этим данным восстановить дерево не составляет труда.
58 Franchiser
 
гуру
10.04.18
14:23
можно еще уровень в тч записать, дальше дело техники
59 Franchiser
 
гуру
10.04.18
14:29
60 Radkt
 
10.04.18
15:03
на инфостарте есть решение готовое. Ищется как Дерево значений в ТЗ или ТЧ
61 MrCoffin
 
10.04.18
15:12
(6) Какой-то сексистский код.
AdBlock убивает бесплатный контент. 1Сергей