К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Жесткач с динамическим списком...

Гость
0 - 17.10.2012 - 11:47
Всем привет. Может кто знает как можно обойти глюк (на мой взгляд) 1с82?

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

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

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

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

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

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



Гость
1 - 17.10.2012 - 11:55
up
Uho
2 - 17.10.2012 - 13:06
фигню-с говорите

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

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

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

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

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

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

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




КонецПроцедуры
Гость
4 - 17.10.2012 - 13:25
Ухо, ну, чего? Видишь фигню?

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

Эта процедура должна возвратить ошибку на новом элементе... А почему?
Uho
5 - 17.10.2012 - 13:45
ошибки не могу добиться
Гость
6 - 17.10.2012 - 13:53
При записи на сервере на клиенте вообще не выполняется обновление списков. Вы что то явно не договариваете, а выпытывать клещами - увольте!
Uho
7 - 17.10.2012 - 13:56
6-Lexusss >
Цитата:
Сообщение от Lexusss Посмотреть сообщение
При записи на сервере на клиенте вообще не выполняется обновление списков.
он обновляет сам, как я понял
Гость
8 - 17.10.2012 - 14:31
Воспроизвел на пустой базе - ошибки нет
Гость
9 - 17.10.2012 - 14:47
Переустановил 1с..... ошибка исчезла...
ЭЭЭЭ.... нет слов
Гость
10 - 17.10.2012 - 15:13
(9) Скажи еще - монитор протер. Не верю!
Гость
11 - 17.10.2012 - 15:23
)) Ты был прав. Ошибка не ушла. Но, я нашел закономерность!!!!

Короче: нажали создать, сработала процедура по созданию, обновить список, увидим созданный элемент. Затем интерактивно нажимаем кнопку УДАЛИТЬ запись. Она исчезает. Затем повторяем сначала: "нажали создать"... - и вот тут уже проблемная запись.
Гость
12 - 17.10.2012 - 15:27
(11) Вот мы и допытали автора!!! На стороне клиента кешируется запись, в том числе и ее удаление. Так что признай эту особенность поведения платформы фактом.
Гость
13 - 17.10.2012 - 16:53
(12) А у вас тоже проявляется такая проблема
Гость
14 - 17.10.2012 - 18:13
ОповеститьОбИзменении()
Гость
15 - 18.10.2012 - 20:11
Вопрос: почему нет ТекущиеДанные для программно созданных объектов до полного переоткрытия формы списка регистра сведений?

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

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

ЗначениеСервер = СчитатьВсюКоллекциюНакуйВЗначение(ТвояМегаКоллекци я);
ЗначениеСервер.ЗаписатьНакуйНаСервере();
ТвояМегаКоллекция = ПрочитатьИзЗначения(ЗначениеСервер);
Гость
16 - 18.10.2012 - 20:15
Вопрос: почему нет ТекущиеДанные для программно созданных объектов до полного переоткрытия формы списка регистра сведений?

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

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

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

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

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

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


К списку вопросов






Copyright ©, Все права защищены