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