Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Помогите разобраться с ДеревоЗначений(сохранить)

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

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


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

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

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


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

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

не сохраняет
   hhhh
 
16 - 10.04.18 - 08:17
(15) всё-таки
Объект.Товары.Добавить();

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

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

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

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


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