v7: Баг 7.7 не сохраняется реквизит? #749770


#0 by AlexSTAL
Справочник, редактирование в списке, есть реквизит "ДатаРедактирования", которого нет на форме. Если в процедуре ПриЗаписи формы списка присваивать значение ТекущаяДата, то всё ок, если вынести в глобальную процедуру то в отладчике значение меняется, а в результате не сохраняется! Если добавить реквизит на форму списка - то значение начинает сохранятся! Что это????
#0 by AlexSTAL
Справочник, редактирование в списке, есть реквизит "ДатаРедактирования", которого нет на форме. Если в процедуре ПриЗаписи формы списка присваивать значение ТекущаяДата, то всё ок, если вынести в глобальную процедуру то в отладчике значение меняется, а в результате не сохраняется! Если добавить реквизит на форму списка - то значение начинает сохранятся! Что это????
#1 by AlexSTAL
Вот выгрузка конфы там есть отчёт, который выводит этот реквизит для проверки
#2 by AlexSTAL
проверьте пожалуйста у себя, коллеги
#3 by 1Сергей
Для формы списка "Контекст" - это не контекст элемента справочника, ИМХО
#4 by AlexSTAL
Хм... но реквизит то устанавливается! в отладчике он в самой форме списка установлен Процедура ПриЗаписи(СписокПериодРекв)     Если глПрисвоитьОбщиеРеквизитыСправочника("ЗаписьЭлемента", Контекст) = 0 Тогда СтатусВозврата; Возврат; КонецЕсли; КонецПроцедуры возвращает правильное значение
#5 by AlexSTAL
То же самое, если поставить "Редактировать в диалоге" - работает без проблем
#6 by PuhUfa
Помести его на форму раз 1С так хочет и поставь галочки невидимый, недоступный и т.п.
#7 by AlexSTAL
Да, так и сделал, но это же не верно, и про это нужно помнить! При чём, как я написал, для Редактировать в диалоге всё корректно работает
#8 by PuhUfa
Есть подозрение, что 1С пишет именно строку, точнее данные которые в ней есть. Нет реквизита в строке... на нет и суда нет...
#9 by palpetrovich
(0 ) может дело в том, что это именно Контекст Формы. Нет реквизита на форме - нет его и в контексте
#10 by HawkEye
поместил на форму вызов функции: Функция лкНаформе сообщает в окне: Код   .  .   Код   .  .   Наименование   .  .   т.е. реквизит записывается...
#11 by HawkEye
ну и конечно надо что-то одно оставить...
#12 by AlexSTAL
скиньте конфу мне, у меня не выходит
#13 by AlexSTAL
это я пробовал и так и так
#14 by AlexSTAL
а как же всё тоже самое с Диалоговыми формами? Там нет этого реквизита, но всё работает
#15 by HawkEye
так твоя конфа, я поменял только: 1. закоментировал в глобальнике УстановитьАтрибут 2. кинул на форму функцию, текст функции в .. все.
#16 by HawkEye
Код   .  .   Нажал Enter в коде Код   .  .   Нажал Enter в наименовании Наименование   .  .   Наименование 04.08.15 Наименование 04.08.15
#17 by AlexSTAL
Это ты добавляешь строку, а попробуй существующую отредактировать
#18 by AlexSTAL
там, где ДатаРедактирования пустая
#19 by Alexor
На форме списка надо Контекст заменить на ТекущийЭлемент Т.к. Контекст относиться к Форме, а не выбранному элементу.
#20 by Alexor
+19 т.е. КонецПроцедуры
#21 by AlexSTAL
На всякий случай я и так пробовал Не взлетает! А вообще ТекущийЭлемент - это доступ к значению до сохранения элемента справочника. Т.е. ДатаРедактирования и ТекущийЭлемент.ДатаРедактирования - реквизит текущий и до записи.
#22 by AlexSTAL
+В отладчике в Конт есть реквизит ДатаРедактирования, хотя на форме его нет!
#23 by AlexSTAL
(All) Вы попробуйте пожалуйста сами у себя, конфа 5 байт В режиме редактирования старой строки, не добавления новой P.S. Ещё один баг выловил на этой же почве
#24 by Злопчинский
нет там багов. есть непонимание. соответственно преждевременно свое непонимание трактовать как баги платформы
#25 by GreyK
Познай секретную процедуру ГлВзятьКонтекст(Конт), применяемую во всех типовых.
#26 by Mikeware
"Ошибка не в программе, ошибка в ДНК"©
#27 by Alexor
Не поможет.
#28 by Alexor
Единственный вариант. Разместить в списке справочника реквизит ДатаРедактирования и сделать ее скрытой. Тогда работает.
#29 by Pit0n_08
А что, в глобальных процедурах создавать Объект уже не нужно? Старею, видимо...
#30 by trad
че накинулись то, баг есть - подтверждаю
#31 by AlexSTAL
по подробнее, вот скрин:
#32 by AlexSTAL
да, именно так сейчас пришлось делать, так работает
#33 by AlexSTAL
какой объект? Контекст передаётся, не работает только в форме списка, только при отсутствующем реквизите
#34 by AlexSTAL
спасибо, что поддерживаете
#35 by Злопчинский
и без этого можно было обойтись.
#36 by Злопчинский
а попробовать: 1. убрать реквизит из формы списка
#37 by Pit0n_08
Естественно. Передаёте контекст элемента формы списка у которого нет реквизита "ДатаИзменения". Если хочется изменить в глобальной процедуре, я бы делал через СоздатьОбъект и НайтиЭлемент
#38 by AlexSTAL
Как можно перезаписать заблокированный (в режиме редактирования) элемент???
#39 by AlexSTAL
Как это нет? а это что, барабашки?
#40 by AlexSTAL
Ещё раз, товарищи. При работе с формой элемента, где НЕТ этого реквизита, всё работает. Так же передаётся контекст ФОРМЫ. Ну что вы, читать не умеете что ли?
#41 by AlexSTAL
С 2000 года работаю по совместительству (невольному) бета-тестером...
#42 by Злопчинский
Еще раз, товарищ. в идет речь о форм есписка. Откуда внезапно вылез форма элемента?
#43 by AlexSTAL
+а при создании элемента нового всё прекрасно работает это наверное фича такая. Реквизита нет, но он есть. Браво
#44 by Злопчинский
В форме элемента контекст формы (упрощенно) совпадает с элементом. в Форме списка - контекст формы - к какому элементу относится? ни к какому.
#45 by AlexSTAL
В результате экспериментов. В форме списка при создании нового элемента работает, а при редактировании существующего не работает. Не ужели это не убийственный неопровержимый аргумент?
#46 by Pit0n_08
Просто в целом по ТС - непонятно для чего тогда целый ЖР с отбором по объекту существует?
#47 by AlexSTAL
см 45
#48 by AlexSTAL
зачем мне отбирать этот объект, если он выбран, заблокирован и находится в режиме редактирования??
#49 by hhhh
но Конт не относиттся к этому объекту. Хоть вы его 10 раз заблокируйте. Поэтому Конт.ДатаРедактирования тоже не относится к этому объекту.
#50 by Ёпрст
на вот, занимайся
#51 by Ёпрст
И по х, какой там элемент, новый/старый..
#52 by AlexSTAL
И? реквизит на форме, передаётся 1 параметр... не мой случай, обходные пути всегда находятся.... Мне нужно менять 50 реквизитов, предлагается в процедуре 50 параметров вставлять?
#53 by AlexSTAL
при создании нового относится, при редактировании не относится. Смешно
#54 by Злопчинский
Неинтересно... ибо есть колонкас реквизитом
#55 by Злопчинский
ну вот есть у тебя форма списка. ДЛЯ ВИЗУАЛЬНОГО осмотра. Элемент справочника "весит" допустим 10 мб. на списке у тебя 20 строк. и что - системе тянуть в кеш 200 МБ при каждом листании? нафейхоа?
#56 by AlexSTAL
Off: нашёл схожий баг, описать полностью его не могу, потому что не воспроизвёл на демо базе из-за недостатка времени и нахождении простой затычки Суть в чём, обновляю существующий документ из файла. Все реквизиты устанавливаю через Док.УстановитьАтрибут Так он не обновляется! Если прописать хоть один реквизит Док.ИмяРеквизита = Док.ИмяРеквизита; то всё начинает работать как часы!
#57 by AlexSTAL
Мы говорим про строку, которая редактируется С помощью отладчика легко выяснить, что все не существующие на форме реквизиты подтягиваются ПриНачалеРедактированияСтроки
#58 by Злопчинский
рецепт тебе дали: позиционируйся на текущем объекте. Тогда будут доступны все реквизиты
#59 by Злопчинский
имхается что они доступны только для чтения... ???
#60 by Злопчинский
Ты сильный шаман, однако! ;-)
#61 by AlexSTAL
Какой рецепт??? Вы бы хоть попробовали.... Объект блокируется, это не возможно... Единственный вариант - это реквизит на форме, скрытый
#62 by AlexSTAL
Я просто делаю зачастую не стандартные вещи и всегда ищу баги
#63 by Pit0n_08
+, речь о журнале регистрации. Если речь в целом о выявлении багов в платформе, то поговорить и сформировать список для общеогуманитарных целей полезно. Использовать такую поделку в рабочей базе я бы не стал ни в коем случае - "ни к чему плодить лишние сущности".
#64 by AlexSTAL
Нифига, значение правильное возвращается
#65 by AlexSTAL
Что не так делаю? Всё по уставу Намного легче сказать, что ошибка в ДНК, чем признать существование бага
#66 by AlexSTAL
ладно, камрады, спасибо за участие будут затычки стоять
#67 by Pit0n_08
в журнале регистрации пишется дата, время и имя пользователя, изменившего элемент справочника - зачем изобретать велосипед?
#68 by AlexSTAL
абстрагируйтесь от названия реквизита....
#69 by Злопчинский
было бы странно если при чтении возвращалось бы неправильное значение...
#70 by Злопчинский
в конце процедуры ПриЗаписи сгенери внешнее событие и после окончания транзакции записи - делай с элементом что хочешь
#71 by Злопчинский
я, например, в списке редактирую только самые простые справочники. все остальное только через форму элемента.
#72 by AlexSTAL
я устал уже писать одно и тоже, вы не правы, проверять не хотите , Всё что вы пишите - это обходные пути, к делу не относятся
#73 by Ёпрст
#74 by Ёпрст
Хоть все реквизиты меняй
#75 by Злопчинский
вы задолбали извините за выражение ;-) какое при чтении возвращается "правильное" значение? хочеь прочитать значение из базы а не из кэша читай через конт.ТекущийЭлемент.КакойТоРеквизит
#76 by Ёпрст
Чебур, это же не наш метод :)
#77 by HawkEye
ты прав однако... я бы переделал на форму элемента
#78 by Злопчинский
кстати на рисунке автора неудивительно что ДатаРедактирования = пусто. так как оператор присвоения еще не выполнился... ;-)
#79 by AlexSTAL
млин... ну выложу я ещё 10 скринов, до, после, во время на вас это не подействует
#80 by AlexSTAL
да, или так, или скрытый реквизит
#81 by Ёпрст
Чего, не осилил ?
#82 by trad
ну изврат же, а
#83 by HawkEye
для новых работает, для существующих - то-же самое.. меняет только то, что показано на форме...
#84 by HawkEye
+83 т.е. по сути все то-же самое, что и в .. хотя подход и интересный
#85 by Ёпрст
И ? Что это меняет ? :)) Че курим ?
#86 by Ёпрст
+85 что напишешь в глобальнике, то и присвоит, хоть для новый, хоть для старых.
#87 by trad
ничего не меняет - костыль для обхода бага, как и добавление скрытого реквизита в МЧ. При этом последнее - менее ужасный изврат.
#88 by Злопчинский
почему, вполне себе универсально
#89 by Злопчинский
тут интересно почему твой код присваивает (сам не проверял, надеюсь на гуру), а вот как описано в - нет...
#90 by Злопчинский
описанное в - не работает потому что общаеться с элементом через непонятный контекст, а с шаблоном - напрямую к реквизитам - то есть к реквизитам редактируемой строки ???
#91 by Ёпрст
Сто-стоп-стоп. Нет никакого СКРЫТОГО реквизита в МЧ.
#92 by Ёпрст
Если че, в глобальнике доступны ВСЕ реквизиты, более того, ВСЕ переменные модуля формы.
#93 by Злопчинский
ну так он про это и говорит. что шаблон, что добавление скрытого реквизита = костыль
#94 by Ёпрст
И... это баян древнейший
#95 by Ёпрст
Какой скрытый реквизит ?
#96 by Ёпрст
А всё, проитал, что там trad ответил. Не, Шаблон, вполне себе универсальное средство.
#97 by Ёпрст
и. это лучше , чем лепить реквизиты на форму, как в первом случае.
#98 by Злопчинский
я в курске. 1. твой шаблон 2. чье-то предложение добавить скрытый реквизит - типа это костыли.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С