Имя: Пароль:
1C
1С v8
Запись и использование Хранилища значений и временного хранилища
,
0 alekosansey
 
05.06.17
12:12
Добрый день. Подскажите в чем может быть дело. Записываю Таблицу значений  в ячейку таблицы типа Хранилище Значений .
    ТЗ = ПолучитьИзВременногоХранилища(Адрес);
    ТЗЗалоговоеИмущество[НомерСтроки].СписокКорректировок = Новый ХранилищеЗначения(ТЗ,Новый СжатиеДанных(9));

Затем в последствие хочу использовать это значение в другой форме получаю адрес и передаю его в форму

    ДокументОбъект = РеквизитФормыВЗначение("Объект");
    ТЗЗалоговоеИмущество = ДокументОбъект.ЗалоговоеИмущество;
    УникальныйИдентификатор1 = Новый УникальныйИдентификатор;
    Адрес = ПоместитьВоВременноеХранилище(ТЗЗалоговоеИмущество[НомерСтроки].СписокКорректировок,УникальныйИдентификатор1);
    ЗначениеВРеквизитФормы(ДокументОбъект,"Объект");
    возврат Адрес;

Вопрос такой при получении с хранилища он ничего не получает. Пишет тип неопределено в чем может быть проблема??
1 alekosansey
 
05.06.17
12:14
ТЗЗалоговоеИмущество[НомерСтроки].СписокКорректировок возвращает неопределено
2 alekosansey
 
05.06.17
12:40
up
3 lodger
 
05.06.17
12:55
есть мнение, что где-то тут:

ДокументОбъект = РеквизитФормыВЗначение("Объект");
    ТЗЗалоговоеИмущество = ДокументОбъект.ЗалоговоеИмущество;
    УникальныйИдентификатор1 = Новый УникальныйИдентификатор;
    Адрес = ПоместитьВоВременноеХранилище(ТЗЗалоговоеИмущество[НомерСтроки].СписокКорректировок

СписокКорректировок оказывается пустым.

а если без этих танцев с РеквизитФормыВЗначение, сразу передать ЗалоговоеИмущество[НомерСтроки].СписокКорректировок ?
4 aleks_default
 
05.06.17
12:57
В курсе что НомерСтроки и Идентификатор строки - это разные сущности?
5 alekosansey
 
05.06.17
13:16
Таб[0].ВесФрукта а в чем отличие ТЗЗалоговоеИмущество[0].СписокКорректировок?
6 alekosansey
 
05.06.17
13:18
(3) Без реквизитаформывзначение получаю не всю таблицу так как тип хранилищеЗначений не виден на клиенте.
7 alekosansey
 
05.06.17
13:19
верх
8 cw014
 
05.06.17
13:39
(6) А на сервере это сделать - религия не позволяет?
9 alekosansey
 
05.06.17
13:43
Это на сервере и делается
10 alekosansey
 
05.06.17
13:44
&НаСервере
Функция ЗаписатьДанныеКорректировкиНаСервере(СтруктураДанных)
    ДокументОбъект = РеквизитФормыВЗначение("Объект");
    ТЗЗалоговоеИмущество = ДокументОбъект.ЗалоговоеИмущество;
    НомерСтроки = СтруктураДанных.НомерСтроки;
    Адрес = СтруктураДанных.Адрес;
    Если ЗначениеЗаполнено(Адрес) Тогда
        ТЗ = ПолучитьИзВременногоХранилища(Адрес);
        ТЗЗалоговоеИмущество[НомерСтроки].СписокКорректировок = Новый ХранилищеЗначения(ТЗ,Новый СжатиеДанных(9));
    Иначе
        ТЗЗалоговоеИмущество[НомерСтроки].СписокКорректировок = Новый ХранилищеЗначения(Неопределено);
    КонецЕсли;
    ЗначениеВРеквизитФормы(ДокументОбъект,"Объект");    
КонецФункции
11 alekosansey
 
05.06.17
13:44
&НаСервере
Функция ПолучитьАдресВременногоХранилищаСпискаКорректировокНаСервере(НомерСтроки)
    ДокументОбъект = РеквизитФормыВЗначение("Объект");
    ТЗЗалоговоеИмущество = ДокументОбъект.ЗалоговоеИмущество;  
    УникальныйИдентификатор1 = Новый УникальныйИдентификатор;
    Адрес = ПоместитьВоВременноеХранилище(ТЗЗалоговоеИмущество[НомерСтроки].СписокКорректировок.Получить(),УникальныйИдентификатор1);
    ЗначениеВРеквизитФормы(ДокументОбъект,"Объект");
    возврат Адрес;
КонецФункции
12 cw014
 
05.06.17
14:05
(6) Без реквизитаформывзначение получаю не всю таблицу так как тип хранилищеЗначений не виден на клиенте.


А зачем ты на клиенте это делаешь?
13 cw014
 
05.06.17
14:05
(6) Не преобразовывай в объект то
14 alekosansey
 
05.06.17
14:14
&НаСервере
Функция ПолучитьАдресВременногоХранилищаСпискаКорректировокНаСервере(НомерСтроки)
    //ДокументОбъект = РеквизитФормыВЗначение("Объект");
    ТЗЗалоговоеИмущество = Объект.ЗалоговоеИмущество;   //Документ
    УникальныйИдентификатор1 = Новый УникальныйИдентификатор;
    Адрес = ПоместитьВоВременноеХранилище(ТЗЗалоговоеИмущество[НомерСтроки].СписокКорректировок.Получить(),УникальныйИдентификатор1);
    //ЗначениеВРеквизитФормы(ДокументОбъект,"Объект");
    возврат Адрес;
КонецФункции

Если так то необнаружено Поле "Список корректировок"
15 h-sp
 
05.06.17
14:48
всё-таки с НомерСтроки не до конца понятно. Что за НомерСтроки?
16 cw014
 
05.06.17
14:54
Давай разберемся по порядку. У тебя документ. У документа табличная часть. В табличной части есть колонка "СписокКорректировок", так?
17 alekosansey
 
07.06.17
08:48
верх
18 alekosansey
 
07.06.17
08:50
(16) Да верно. "СписокКорректировок" - тип хранилищеЗначений. Туда я помещаю из вспомогательной формы таблицу
19 cw014
 
07.06.17
08:52
(18) Если в контексте формы все делаешь, используй ПоместитьВоВременноеХранилище(ТЗЗалоговоеИмущество[НомерСтроки].СписокКорректировок.Получить(),ЭтаФорма);
20 alekosansey
 
07.06.17
09:23
Прикол в том что запись ТЗЗалоговоеИмущество[НомерСтроки].СписокКорректировок.Получить() дает уже неопределено.
21 cw014
 
07.06.17
10:11
(20) Значит не та строка
22 alekosansey
 
07.06.17
11:49
верх
23 alekosansey
 
07.06.17
11:49
Там одна строка больше нет
24 alekosansey
 
07.06.17
11:52
v8: Хранилище значения - это тема сильно похожая, там обошлись просто временным хранилищем. А мне все таки записать в таблицу. Дело в том что при записи он показывает что записал а уже в другом методе он уже не видит там значения
25 lodger
 
07.06.17
12:15
значит плохо записал. чтобы не ванговать, показывайте место где происходит запись и где(сервер\клиент).
26 alekosansey
 
07.06.17
12:21
//Alx  01.06.17 Передаем параметры для открытия формы "ФормаКорректировок" и после закрытия передаем для записи значений
//ЗалоговоеИмущество - имущество что выбрано для корректировки
//НомерСтроки - Номер строки Таблицы "ЗалоговоеИмущество" что выбрано было
//АдресВременногоХранилища - Временное хранилище где хранится таблица предыдущих корректировок
&НаКлиенте
Процедура ЗалоговоеИмуществоТекстКорректировокНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтрокаТЗ = Элементы.ЗалоговоеИмущество.ТекущиеДанные;
    АдресВременногоХранилища = ПолучитьАдресВременногоХранилищаСпискаКорректировокНаСервере(СтрокаТЗ.НомерСтроки-1);
    ПараметрыОткрытия = Новый Структура("ЗалоговоеИмущество,НомерСтроки,АдресВременногоХранилища",СтрокаТЗ.ЗалоговоеИмущество,СтрокаТЗ.НомерСтроки-1,АдресВременногоХранилища);
    форма = ПолучитьФорму("Документ.КорректировкаЗалоговогоИмущества.Форма.ФормаКорректировок",ПараметрыОткрытия,ЭтаФорма);
    ПараметрыВозврата = Форма.ОткрытьМодально();
    Если ПараметрыВозврата <> Неопределено  Тогда
        ЗаписатьДанныеКорректировкиНаСервере(ПараметрыВозврата);
    КонецЕсли;     
КонецПроцедуры

//Alx  02.06.17 Записываем во временное хранилище данных СписокКорректировок
&НаСервере
Функция ПолучитьАдресВременногоХранилищаСпискаКорректировокНаСервере(НомерСтроки)
    ДокументОбъект = РеквизитФормыВЗначение("Объект");
    ТЗЗалоговоеИмущество = ДокументОбъект.ЗалоговоеИмущество;
    УникальныйИдентификатор1 = Новый УникальныйИдентификатор;
    Адрес = ПоместитьВоВременноеХранилище(ТЗЗалоговоеИмущество[НомерСтроки].СписокКорректировок.Получить(),УникальныйИдентификатор1);
    возврат Адрес;
КонецФункции

//Alx  02.06.17 Запись или удаление Таблицы Корректировки в ячейки колонки "СписокКорректировок" Таблицы "ЗалоговоеИмущество"
// также установки удаление значения реквизита "ТекстКорректировок"    
&НаСервере
Функция ЗаписатьДанныеКорректировкиНаСервере(СтруктураДанных)
    ДокументОбъект = РеквизитФормыВЗначение("Объект");
    ТЗЗалоговоеИмущество = ДокументОбъект.ЗалоговоеИмущество;
    НомерСтроки = СтруктураДанных.НомерСтроки;
    Адрес = СтруктураДанных.Адрес;
    Если ЗначениеЗаполнено(Адрес) Тогда
        ТЗ = ПолучитьИзВременногоХранилища(Адрес);
        ТЗЗалоговоеИмущество[НомерСтроки].СписокКорректировок = Новый ХранилищеЗначения(ТЗ,Новый СжатиеДанных(9));
    Иначе
        ТЗЗалоговоеИмущество[НомерСтроки].СписокКорректировок = Новый ХранилищеЗначения(Неопределено);
    КонецЕсли;
    ЗначениеВРеквизитФормы(ДокументОбъект,"Объект");    
КонецФункции
27 lodger
 
07.06.17
15:03
как то тут все не так.
делайте заново.

а) никаких модальных вызовов в УФ.
б) внимательно читать что написано в СП про ПоместитьВоВременноеХранилище и адрес во втором параметре.
в) так и не показали где подготавливаются и как передаются данные к помещению в .СписокКорректировок
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший