как сохранить СписокЗначений в поле ХранилищеЗначений в табличной части документа

1. eda76 18.12.20 02:15 Сейчас в теме
как сохранить СписокЗначений в поле ХранилищеЗначений в табличной части документа?
делаю
&НаСервере
Процедура ЗаписатьГолосаГолосования(НомерСтроки,ГолосаКомисиии)
	ГолосаКомисиииОбъект = РеквизитФормыВЗначение("Объект");
	ТС=Объект.Голоса.НайтиПоИдентификатору(НомерСтроки);
	ИндексСтроки = Объект.Голоса.Индекс(ТС);
    
    СтрокаТабличнойЧасти = ГолосаКомисиииОбъект.Голоса.Получить(ИндексСтроки);
    СтрокаТабличнойЧасти.ГолосаКомисиии=Новый ХранилищеЗначения(ГолосаКомисиии);
	ЗначениеВРеквизитФормы(ГолосаКомисиииОбъект, "Объект");
КонецПроцедуры
Показать

но при открытии поле пустое
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
7. spec8s 832 18.12.20 09:00 Сейчас в теме
Нужно добавить в данных формы для строки реквизит с типом список значений

Использовать события ПриЧтенииНаСервере, ПередЗаписьюНаСервере
У этих событий есть параметр ТекущийОбъект, который представляет из себя сам документ.

В событии ПередЗаписьюНаСервере можно сохранить так:
Для ИндексСтроки = 0 По Объект.Голоса.Количество()-1 Цикл
   ТекущийОбъект.Голоса[ИндексСтроки].ГолосаКомисиии = Новый ХранилищеЗначения(Объект.Голоса[ИндексСтроки].<ИмяРеквизитаСписокЗначений>);
КонецЦикла;


В событии ПриЧтенииНаСервере делаем восстановление по обратному принципу
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
11. starik-2005 3043 18.12.20 15:14 Сейчас в теме
(1)
но при открытии поле пустое


Ну, как бы, э...
//1. Сохранить
  Строка = Объект.Голоса.НайтиПоИдентификатору( НомерСтроки );
  Строка.ГолосаКомиссии = Новый ХранилищеЗначений( Голоса );

//2. Получить назад
  Строка = Объект.Голоса.НайтиПоИдентификатору( НомерСтроки );
  Голоса = Строка.ГолосаКомиссии.Получить();
2. PowerBoy 3370 18.12.20 06:00 Сейчас в теме
ИндексСтроки = Объект.Дела.Индекс(ТС);

СтрокаТабличнойЧасти = ГолосаКомисиииОбъект.Голоса.Получить(ИндексСтроки);

Индекс строки двух таб.частей может не совпадать.
3. ab_initio 95 18.12.20 06:05 Сейчас в теме
Может быть в такой задаче проще было бы сделать еще одну новую табличную часть и связать ее с первой табличной частью ключом?
В типовых конфигурациях от 1С так обычно делают. Например, документ "РеализацияТоваровИУслуг" в УТ-11 - табличные части "Товары" и "Серии".
4. UstinovVA 289 18.12.20 07:51 Сейчас в теме
я делал: сохранив всю таблицу значений (вместо со списком в табличной части) в хранилище значений при записи, и загружал таблицу при создании формы, все работает
5. ab_initio 95 18.12.20 08:05 Сейчас в теме
Я когда-то делал что-то подобное через поле типа строка неограниченной длины. Список для записи преобразовывался методом ЗначениеВСтрокуВнутр(), а для обратно чтения ЗначениеИзСтрокиВнутр().
6. SlavaKron 18.12.20 08:17 Сейчас в теме
Хранилище значения не может использоваться в данных формы.
8. eda76 18.12.20 11:35 Сейчас в теме
(6) оно и не используется, я его в таблицу значений перевожу
7. spec8s 832 18.12.20 09:00 Сейчас в теме
Нужно добавить в данных формы для строки реквизит с типом список значений

Использовать события ПриЧтенииНаСервере, ПередЗаписьюНаСервере
У этих событий есть параметр ТекущийОбъект, который представляет из себя сам документ.

В событии ПередЗаписьюНаСервере можно сохранить так:
Для ИндексСтроки = 0 По Объект.Голоса.Количество()-1 Цикл
   ТекущийОбъект.Голоса[ИндексСтроки].ГолосаКомисиии = Новый ХранилищеЗначения(Объект.Голоса[ИндексСтроки].<ИмяРеквизитаСписокЗначений>);
КонецЦикла;


В событии ПриЧтенииНаСервере делаем восстановление по обратному принципу
9. eda76 18.12.20 11:43 Сейчас в теме
(7)
не подходит, так как при редактировании строки открывается форма редактирования после закрытия надо ее в строку сохранить не сохраняя документ. потом ее можно еще раз выбрать или закрыть документ без сохранения

я делал подобное для константы, там работает, а в табличном поле не получается
10. SlavaKron 18.12.20 14:00 Сейчас в теме
(8) Как же не используется, если вы присваиваете его реквизиту ТЧ, запихиваете в данные формы через ЗначениеВРеквизитФормы(ГолосаКомисиииОбъект, "Объект");, а потом ожидаете, что оно у вас где-то сохранилось.
Прикладной объект вообще существует в рамках одного серверного вызова. Где его ловить в событиях формы вам подсказали в (7).

(9) Ничего специально для хранения списка значений на время работы с формой делать не требуется. Добавьте свой реквизит формы в табличную часть. Ваш список будет храниться в данных формы. Перед записью просто поместите его в хранилище значения для каждой строки.
Прикрепленные файлы:
13. snikolaenko_its 07.05.24 22:22 Сейчас в теме
(7) Есть нюанс, что при записи без закрытия (кнопку "Записать" нажать просто). ПередЗаписьюНаСервере вызывактчя, а ПриЧтенииНаСервере - нет. При этом повторное чтение происходит, что приводит к очищению списков.
Никто не сталкивался?
12. eda76 19.12.20 00:07 Сейчас в теме
спасибо, получилось
невнимательно прочитал (7)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот