0
- 17.10.2012 - 11:47
|
Всем привет. Может кто знает как можно обойти глюк (на мой взгляд) 1с82? Есть регистр сведений: измерение - "Документ (ссылка)", ресурс - "Статус документа (строка)". На форме управляемой форме списка записей этого регистра добавлена кнопка, создающая очередную запись. Нажимаем кнопку - создается запись - обновляем список - получаем: у всех записей есть "ТекущиеДанные", у только что добавленной "ТекущиеДанные = НЕОПРЕДЕЛЕНО". Ну, это же жесть!! Причем для всех строк и для новой ТекущаяСтрока содержит адекватный КлючЗаписи... Если переоткрыть форму списка заново - все записи будут с ТекущиеДанные. Вопрос: почему нет ТекущиеДанные для программно созданных объектов до полного переоткрытия формы списка регистра сведений? | |
1
- 17.10.2012 - 11:55
| up | |
2
- 17.10.2012 - 13:06
|
фигню-с говорите 1. Создаю РС с измерением ДокументСсылка, с ресурсом Строка 2. Создаю форму списка 3. В форме списка пишу процедуру &НаКлиенте Процедура СписокПриАктивизацииПоля(Элемент) Сообщить(Элементы.Список.ТекущиеДанные.РесурсСтрок а); КонецПроцедуры 4. В предприятии создаю запись РС, активизирую поле, в окне сообщений выводится значение ресурса что я делаю не так? | |
3
- 17.10.2012 - 13:11
|
Дело в том, что нужно создать запись не интерактивно (кнопками штатными), а процедурой: НаСервере Процедура РегистрацияНаСервере(ДокументСсылка, РегистрацияАдресХранения) // МенеджерЗаписи = РегистрыСведений.АрхивПервичнойДокументации.Создат ьМенеджерЗаписи(); МенеджерЗаписи.Документ = ДокументСсылка; МенеджерЗаписи.Прочитать(); // МенеджерЗаписи.Документ = ДокументСсылка; МенеджерЗаписи.АдресХранения = РегистрацияАдресХранения; МенеджерЗаписи.ДатаРегистрации = ТекущаяДата(); МенеджерЗаписи.Записать(); //Элементы.Список.Обновить(); КонецПроцедуры | |
4
- 17.10.2012 - 13:25
|
Ухо, ну, чего? Видишь фигню? &НаКлиенте Процедура СписокПриАктивизацииПоля(Элемент) Сообщить(Элементы.Список.ТекущиеДанные.РесурсСтрок а); КонецПроцедуры Эта процедура должна возвратить ошибку на новом элементе... А почему? | |
5
- 17.10.2012 - 13:45
| ошибки не могу добиться | |
6
- 17.10.2012 - 13:53
| При записи на сервере на клиенте вообще не выполняется обновление списков. Вы что то явно не договариваете, а выпытывать клещами - увольте! | |
7
- 17.10.2012 - 13:56
| 6-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
|
Вопрос: почему нет ТекущиеДанные для программно созданных объектов до полного переоткрытия формы списка регистра сведений? - Потому что при переоткрытии - заново считываются контексты с сервера. Т.е. - выполняются мои рекомендации: ЗначениеСервер = СчитатьВсюКоллекциюНакуйВЗначение(ТвояМегаКоллекци я); ЗначениеСервер.ЗаписатьНакуйНаСервере(); ТвояМегаКоллекция = ПрочитатьИзЗначения(ЗначениеСервер); Но без программирования. Просто при закрытии - выполняется: ЗначениеСервер = СчитатьВсюКоллекциюНакуйВЗначение(ТвояМегаКоллекци я); ЗначениеСервер.ЗаписатьНакуйНаСервере(); А при открытии выполняется: ТвояМегаКоллекция = ПрочитатьИзЗначения(ЗначениеСервер); И выполняется неявно (сама платформа обеспечивает). Если хочешь выполнить явно по желанию юзера, без закрытия/открытия - то тут уже нужно программировать некую кнопку... ЗначениеСервер = СчитатьВсюКоллекциюНакуйВЗначение(ТвояМегаКоллекци я); ЗначениеСервер.ЗаписатьНакуйНаСервере(); ТвояМегаКоллекция = ПрочитатьИзЗначения(ЗначениеСервер); | |
| Интернет-форум Краснодарского края и Краснодара |