Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Жесткач с динамическим списком... (http://forums.kuban.ru/f1040/zhestkach_s_dinamicheskim_spiskom-3188942.html)

zidane_rus 17.10.2012 11:47

Жесткач с динамическим списком...
 
Всем привет. Может кто знает как можно обойти глюк (на мой взгляд) 1с82?

Есть регистр сведений: измерение - "Документ (ссылка)", ресурс - "Статус документа (строка)".

На форме управляемой форме списка записей этого регистра добавлена кнопка, создающая очередную запись.

Нажимаем кнопку - создается запись - обновляем список - получаем: у всех записей есть "ТекущиеДанные", у только что добавленной "ТекущиеДанные = НЕОПРЕДЕЛЕНО".
Ну, это же жесть!!

Причем для всех строк и для новой ТекущаяСтрока содержит адекватный КлючЗаписи...

Если переоткрыть форму списка заново - все записи будут с ТекущиеДанные.

Вопрос: почему нет ТекущиеДанные для программно созданных объектов до полного переоткрытия формы списка регистра сведений?

zidane_rus 17.10.2012 11:55

up

Uho 17.10.2012 13:06

фигню-с говорите

1. Создаю РС с измерением ДокументСсылка, с ресурсом Строка
2. Создаю форму списка
3. В форме списка пишу процедуру

&НаКлиенте
Процедура СписокПриАктивизацииПоля(Элемент)
Сообщить(Элементы.Список.ТекущиеДанные.РесурсСтрока);

КонецПроцедуры

4. В предприятии создаю запись РС, активизирую поле, в окне сообщений выводится значение ресурса

что я делаю не так?

zidane_rus 17.10.2012 13:11

Дело в том, что нужно создать запись не интерактивно (кнопками штатными), а процедурой:
НаСервере
Процедура РегистрацияНаСервере(ДокументСсылка, РегистрацияАдресХранения)

//
МенеджерЗаписи = РегистрыСведений.АрхивПервичнойДокументации.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Документ = ДокументСсылка;
МенеджерЗаписи.Прочитать();
//
МенеджерЗаписи.Документ = ДокументСсылка;
МенеджерЗаписи.АдресХранения = РегистрацияАдресХранения;
МенеджерЗаписи.ДатаРегистрации = ТекущаяДата();
МенеджерЗаписи.Записать();

//Элементы.Список.Обновить();




КонецПроцедуры

zidane_rus 17.10.2012 13:25

Ухо, ну, чего? Видишь фигню?

&НаКлиенте
Процедура СписокПриАктивизацииПоля(Элемент)
Сообщить(Элементы.Список.ТекущиеДанные.РесурсСтрок а);
КонецПроцедуры

Эта процедура должна возвратить ошибку на новом элементе... А почему?

Uho 17.10.2012 13:45

ошибки не могу добиться

Lexusss 17.10.2012 13:53

При записи на сервере на клиенте вообще не выполняется обновление списков. Вы что то явно не договариваете, а выпытывать клещами - увольте!

Uho 17.10.2012 13:56

6-Lexusss >[quote=Lexusss;27296747]При записи на сервере на клиенте вообще не выполняется обновление списков.[/quote] он обновляет сам, как я понял

Lexusss 17.10.2012 14:31

Воспроизвел на пустой базе - ошибки нет

zidane_rus 17.10.2012 14:47

Переустановил 1с..... ошибка исчезла...
ЭЭЭЭ.... нет слов

Lexusss 17.10.2012 15:13

(9) Скажи еще - монитор протер. Не верю!

zidane_rus 17.10.2012 15:23

)) Ты был прав. Ошибка не ушла. Но, я нашел закономерность!!!!

Короче: нажали создать, сработала процедура по созданию, обновить список, увидим созданный элемент. Затем интерактивно нажимаем кнопку УДАЛИТЬ запись. Она исчезает. Затем повторяем сначала: "нажали создать"... - и вот тут уже проблемная запись.

Lexusss 17.10.2012 15:27

(11) Вот мы и допытали автора!!! На стороне клиента кешируется запись, в том числе и ее удаление. Так что признай эту особенность поведения платформы фактом.

zidane_rus 17.10.2012 16:53

(12) А у вас тоже проявляется такая проблема

Reaper 17.10.2012 18:13

ОповеститьОбИзменении()

DeiMos 18.10.2012 20:11

Вопрос: почему нет ТекущиеДанные для программно созданных объектов до полного переоткрытия формы списка регистра сведений?

- Потому что программно ты на клиенте что-то там тусишь у себя в песочнице...
Сервер об этом не подозревает ваще.

Если ты желаешь принудительно обновить инфу на сервере (передать туда всё, что ты там напрыгал/надрыгал), и потом с сервера считать обратно на клиента в контекст формы - следует пользоваться извратами, вызываемыми по кнопке, типа

ЗначениеСервер = СчитатьВсюКоллекциюНакуйВЗначение(ТвояМегаКоллекция);
ЗначениеСервер.ЗаписатьНакуйНаСервере();
ТвояМегаКоллекция = ПрочитатьИзЗначения(ЗначениеСервер);

DeiMos 18.10.2012 20:15

Вопрос: почему нет ТекущиеДанные для программно созданных объектов до полного переоткрытия формы списка регистра сведений?

- Потому что при переоткрытии - заново считываются контексты с сервера.

Т.е. - выполняются мои рекомендации:
ЗначениеСервер = СчитатьВсюКоллекциюНакуйВЗначение(ТвояМегаКоллекци я);
ЗначениеСервер.ЗаписатьНакуйНаСервере();
ТвояМегаКоллекция = ПрочитатьИзЗначения(ЗначениеСервер);

Но без программирования.
Просто при закрытии - выполняется:
ЗначениеСервер = СчитатьВсюКоллекциюНакуйВЗначение(ТвояМегаКоллекци я);
ЗначениеСервер.ЗаписатьНакуйНаСервере();

А при открытии выполняется:
ТвояМегаКоллекция = ПрочитатьИзЗначения(ЗначениеСервер);

И выполняется неявно (сама платформа обеспечивает).

Если хочешь выполнить явно по желанию юзера, без закрытия/открытия - то тут уже нужно программировать некую кнопку...
ЗначениеСервер = СчитатьВсюКоллекциюНакуйВЗначение(ТвояМегаКоллекци я);
ЗначениеСервер.ЗаписатьНакуйНаСервере();
ТвояМегаКоллекция = ПрочитатьИзЗначения(ЗначениеСервер);


Текущее время: 11:52. Часовой пояс GMT +3.