|
Не сохраняется значение Хранилища значений | ☑ | ||
---|---|---|---|---|
0
just86
04.03.19
✎
13:16
|
Здравствуйте.
Подскажите, в чём ошибка. С формы документа открываю произвольную форму. На ней есть форматированный документ. Пишу что то в нем. Закрываю форму. При закрытии формы делаю: &НаКлиенте Функция ПередатьЗначенияПриЗакрытии() СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("ДатаСоздания", ?(ЗначениеЗаполнено(ДатаСоздания), ДатаСоздания, ТекущаяДата())); СтруктураПараметров.Вставить("ДатаРедактирования", ТекущаяДата()); СтруктураПараметров.Вставить("ТекстКомментария", Комментарий.ПолучитьТекст()); СтруктураПараметров.Вставить("ТекстКомментарияХЗ", ПолучитХЗ(Комментарий)); СтруктураПараметров.Вставить("УИД", ?(ЗначениеЗаполнено(УИД), Строка(УИД), Строка(Новый УникальныйИдентификатор))); Возврат СтруктураПараметров КонецФункции &НаСервере Функция ПолучитХЗ(Комментарий) ХЗ = Новый ХранилищеЗначения(Комментарий); АдресВремХран = ПоместитьВоВременноеХранилище(ХЗ, Новый УникальныйИдентификатор); Возврат АдресВремХран; КонецФункции в форме владельца получаю данные параметры и добавляю в табличную часть: &НаКлиенте Процедура ДобавитьИзменитьКомментарийПослеЗакрытияФормыКомментария(Результат, СтруктураПараметров) Экспорт МассивСтрок = Объект.Комментарии.НайтиСтроки(Новый Структура("УИД", Результат.УИД)); Если МассивСтрок.Количество() > 0 Тогда Для каждого СтрокаТЧ Из МассивСтрок Цикл ОснРеквизит = Объект; ЗаполнитьТЧКомментарииНаСервере(Результат,ОснРеквизит); КопироватьДанныеФормы(ОснРеквизит,Объект) КонецЦикла; Иначе ОснРеквизит = Объект; ЗаполнитьТЧКомментарииНаСервере(Результат,ОснРеквизит); КопироватьДанныеФормы(ОснРеквизит,Объект) КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Процедура ЗаполнитьТЧКомментарииНаСервере(Результат,ОснРеквизит) ОбъектЗначение = ДанныеФормыВЗначение(ОснРеквизит, Тип("ДокументОбъект.дамТехническиеЗадания")); МассивСтр = ОбъектЗначение.Комментарии.НайтиСтроки(Новый Структура("УИД", Результат.УИД)); Если МассивСтр.Количество() > 0 Тогда Для каждого ЭлМ Из МассивСтр Цикл ХЗ = ПолучитьИзВременногоХранилища(Результат.ТекстКомментарияХЗ); Если ХЗ <> Неопределено Тогда ТекстКомм = ХЗ.Получить().ПолучитьТекст(); Если ЗначениеЗаполнено(ТекстКомм) Тогда ЭлМ.ТекстКомментарияХЗ = ХЗ; ТекстКомм = ХЗ.Получить().ПолучитьТекст(); ЭлМ.ТекстКомментария = ?(ТекстКомм <> Неопределено, ТекстКомм,""); ЭлМ.ДатаРедактирования = ТекущаяДата(); КонецЕсли; КонецЕсли; КонецЦикла; Иначе Если ЗначениеЗаполнено(Результат.ТекстКомментария) Тогда СтрТЧ = ОбъектЗначение.Комментарии.Добавить(); СтрТЧ.ДатаСоздания = ТекущаяДата(); СтрТЧ.ДатаРедактирования = ТекущаяДата(); СтрТЧ.ТекстКомментария = Результат.ТекстКомментария; ХЗ = ПолучитьИзВременногоХранилища(Результат.ТекстКомментарияХЗ); СтрТЧ.ТекстКомментарияХЗ = ХЗ; СтрТЧ.УИД = Результат.УИД; КонецЕсли; КонецЕсли; ЗначениеВДанныеФормы(ОбъектЗначение, ОснРеквизит); КонецПроцедуры но если после этого посмотреть - реквизит тч пустой |
|||
1
aleks_default
04.03.19
✎
13:26
|
Дошел до этого
Для каждого СтрокаТЧ Из МассивСтрок Цикл ОснРеквизит = Объект; ЗаполнитьТЧКомментарииНаСервере(Результат,ОснРеквизит); КопироватьДанныеФормы(ОснРеквизит,Объект) КонецЦикла; дальше читать не стал |
|||
2
just86
04.03.19
✎
13:32
|
(1) какие ваши предложения обхода массива? по индексу?
http://catalog.mista.ru/public/153602/ - можете тут написать, что код говно )) |
|||
3
catena
04.03.19
✎
13:37
|
(2)А где у вас внутри цикла используется обход массива? Я вижу только эн раз вызов одних и тех же процедур для одного и того же объекта. Какой высокий смысл в цикле?
|
|||
4
aleks_default
04.03.19
✎
13:39
|
(2)Там код не говно, а у тебя да. И не надо стрелки переводить если не можешь понять разницу.
|
|||
5
just86
04.03.19
✎
14:15
|
Oh My God This Is A Fucking Shit!
это существенно изменило картину.... один лишний цикл и всё заработало. чтобы я делал без aleks_default.... ЗначениеВРеквизитФормы(ОбъектЗначение, "Объект") - вот это не отрабатывает, потому что в "объект" данные формы структура |
|||
6
aleks_default
04.03.19
✎
14:27
|
один лишний цикл = терабайт трафика между клиентом и сервером
|
|||
7
just86
04.03.19
✎
14:33
|
(6) как думаете, у меня проблема с террабайтом трафика или что не сохраняется значение?
я уже всё переделал 3 раза и всё равно это еще не конечный вариант. было бы не плохо отвечать по существу - как записать ХранилищеЗначений переданное из произвольной формы в форму владелец |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |