![]() |
Жесткач с динамическим списком... Всем привет. Может кто знает как можно обойти глюк (на мой взгляд) 1с82? Есть регистр сведений: измерение - "Документ (ссылка)", ресурс - "Статус документа (строка)". На форме управляемой форме списка записей этого регистра добавлена кнопка, создающая очередную запись. Нажимаем кнопку - создается запись - обновляем список - получаем: у всех записей есть "ТекущиеДанные", у только что добавленной "ТекущиеДанные = НЕОПРЕДЕЛЕНО". Ну, это же жесть!! Причем для всех строк и для новой ТекущаяСтрока содержит адекватный КлючЗаписи... Если переоткрыть форму списка заново - все записи будут с ТекущиеДанные. Вопрос: почему нет ТекущиеДанные для программно созданных объектов до полного переоткрытия формы списка регистра сведений? |
up |
фигню-с говорите 1. Создаю РС с измерением ДокументСсылка, с ресурсом Строка 2. Создаю форму списка 3. В форме списка пишу процедуру &НаКлиенте Процедура СписокПриАктивизацииПоля(Элемент) Сообщить(Элементы.Список.ТекущиеДанные.РесурсСтрока); КонецПроцедуры 4. В предприятии создаю запись РС, активизирую поле, в окне сообщений выводится значение ресурса что я делаю не так? |
Дело в том, что нужно создать запись не интерактивно (кнопками штатными), а процедурой: НаСервере Процедура РегистрацияНаСервере(ДокументСсылка, РегистрацияАдресХранения) // МенеджерЗаписи = РегистрыСведений.АрхивПервичнойДокументации.СоздатьМенеджерЗаписи(); МенеджерЗаписи.Документ = ДокументСсылка; МенеджерЗаписи.Прочитать(); // МенеджерЗаписи.Документ = ДокументСсылка; МенеджерЗаписи.АдресХранения = РегистрацияАдресХранения; МенеджерЗаписи.ДатаРегистрации = ТекущаяДата(); МенеджерЗаписи.Записать(); //Элементы.Список.Обновить(); КонецПроцедуры |
Ухо, ну, чего? Видишь фигню? &НаКлиенте Процедура СписокПриАктивизацииПоля(Элемент) Сообщить(Элементы.Список.ТекущиеДанные.РесурсСтрок а); КонецПроцедуры Эта процедура должна возвратить ошибку на новом элементе... А почему? |
ошибки не могу добиться |
При записи на сервере на клиенте вообще не выполняется обновление списков. Вы что то явно не договариваете, а выпытывать клещами - увольте! |
6-Lexusss >[quote=Lexusss;27296747]При записи на сервере на клиенте вообще не выполняется обновление списков.[/quote] он обновляет сам, как я понял |
Воспроизвел на пустой базе - ошибки нет |
Переустановил 1с..... ошибка исчезла... ЭЭЭЭ.... нет слов |
(9) Скажи еще - монитор протер. Не верю! |
)) Ты был прав. Ошибка не ушла. Но, я нашел закономерность!!!! Короче: нажали создать, сработала процедура по созданию, обновить список, увидим созданный элемент. Затем интерактивно нажимаем кнопку УДАЛИТЬ запись. Она исчезает. Затем повторяем сначала: "нажали создать"... - и вот тут уже проблемная запись. |
(11) Вот мы и допытали автора!!! На стороне клиента кешируется запись, в том числе и ее удаление. Так что признай эту особенность поведения платформы фактом. |
(12) А у вас тоже проявляется такая проблема |
ОповеститьОбИзменении() |
Вопрос: почему нет ТекущиеДанные для программно созданных объектов до полного переоткрытия формы списка регистра сведений? - Потому что программно ты на клиенте что-то там тусишь у себя в песочнице... Сервер об этом не подозревает ваще. Если ты желаешь принудительно обновить инфу на сервере (передать туда всё, что ты там напрыгал/надрыгал), и потом с сервера считать обратно на клиента в контекст формы - следует пользоваться извратами, вызываемыми по кнопке, типа ЗначениеСервер = СчитатьВсюКоллекциюНакуйВЗначение(ТвояМегаКоллекция); ЗначениеСервер.ЗаписатьНакуйНаСервере(); ТвояМегаКоллекция = ПрочитатьИзЗначения(ЗначениеСервер); |
Вопрос: почему нет ТекущиеДанные для программно созданных объектов до полного переоткрытия формы списка регистра сведений? - Потому что при переоткрытии - заново считываются контексты с сервера. Т.е. - выполняются мои рекомендации: ЗначениеСервер = СчитатьВсюКоллекциюНакуйВЗначение(ТвояМегаКоллекци я); ЗначениеСервер.ЗаписатьНакуйНаСервере(); ТвояМегаКоллекция = ПрочитатьИзЗначения(ЗначениеСервер); Но без программирования. Просто при закрытии - выполняется: ЗначениеСервер = СчитатьВсюКоллекциюНакуйВЗначение(ТвояМегаКоллекци я); ЗначениеСервер.ЗаписатьНакуйНаСервере(); А при открытии выполняется: ТвояМегаКоллекция = ПрочитатьИзЗначения(ЗначениеСервер); И выполняется неявно (сама платформа обеспечивает). Если хочешь выполнить явно по желанию юзера, без закрытия/открытия - то тут уже нужно программировать некую кнопку... ЗначениеСервер = СчитатьВсюКоллекциюНакуйВЗначение(ТвояМегаКоллекци я); ЗначениеСервер.ЗаписатьНакуйНаСервере(); ТвояМегаКоллекция = ПрочитатьИзЗначения(ЗначениеСервер); |
Текущее время: 11:52. Часовой пояс GMT +3. |