|
ПолучитьИдентификатор() и НайтиПоИдентификатору(Инд) | ☑ | ||
---|---|---|---|---|
0
Sasha_H
11.07.19
✎
14:25
|
1С:Предприятие 8.3 (8.3.13.1644)
Вообщем делаю следующее: Необходимо в табличной части формы добавить реквизит и чтобы в момент ПослеЗаписи этот реквизит там смог сохранится. Реквизит добавлен (булево) Имя: "РеквизитыИзменены" - этот параметр свидетельствует о том, что надо перезаписать элементы справочника именно измененных строк. Почему послеЗаписи - потому как сам документ который записуется должен войти в реквизит Элемента справочника каждой строки ТЧ. А поскольку документ В ПередЗаписью еще не записался то не можем передать туда ссылку на него. и еще куча других строк из документа уходят в справочник. Поэтому выбран метод послезаписи. Делаю следующее: В реквизиты формы добавляю Реквизит с типом произвольный СтрокиРеквизитыИзменены Перед записью запоминаю какие идентификаторы строк требуются. После записи проверяю эти идентификаторы и в таблице формы взвожу флаги. &НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) // Сохранение списка требующих перезаписи объектов характеристики // поскольку метод ПослеЗаписи приводит к очистке реквизитов таблицы формы СтрокиРеквизитыИзменены = Новый Структура("ИдентификаторыСтрок", Новый Массив); МассивСтрок = Объект.Характеристики.НайтиСтроки(Новый Структура("РеквизитыИзменены", Истина)); Для Каждого СтрокаТЧ Из МассивСтрок Цикл СтрокиРеквизитыИзменены.ИдентификаторыСтрок.Добавить(СтрокаТЧ.ПолучитьИдентификатор()); КонецЦикла; КонецПроцедуры //Вызвана из процедуры ПоСлеЗаписиНаСервере &НаСервере Процедура ОбновитьРеквизитыХарактеристик() // Возобновление флагов Для каждого Индекс Из СтрокиРеквизитыИзменены.ИдентификаторыСтрок Цикл СтрокаТЧ = Объект.Характеристики.НайтиПоИдентификатору(Индекс); Если СтрокаТЧ = Неопределено Тогда Продолжить; КонецЕсли; СтрокаТЧ.РеквизитыИзменены = Истина; КонецЦикла; ................. А проблема странная. Работает но с одним дефектом: ВНИМАНИЕ! Тут реально важна последовательность: Если открыть форму (объект уже записан) и сделать сдвиг строки - Трындец не находит его идентификатора. Последующая перезапись все нормально сдвигай сколько угодно. Если открыть форму перезаписать (не сдвигая) все работает. Сдвигаешь - работает!!! Именно проблема в первом открытии - ссдвиг - Запись. |
|||
1
butterbean
11.07.19
✎
14:31
|
>> А поскольку документ В ПередЗаписью еще не записался то не можем передать туда ссылку на него
открой для себя ПолучитьСсылкуНового() |
|||
2
Sasha_H
11.07.19
✎
14:31
|
(0) Дополню. Пробовал как угодно.
Открыл форму - Запись, а потом сдвиг (проблема не проявлятся). Почему-то жопа когда Открыть форму СДВИГ - ЗАПИСЬ (вот тут то и в методе НайтиПоИдентификатору = Неопределено) и все проблема пропадает именно После первой записи. Можно сдвигать сколько угодно. Если открыть - Записать - проблемы не будет. Если открыть - Записать - Сдвинуть - Записать - не будет проблемы Если открыть - Сдвинуть - Записать (проблема). Последующие сдвиги и перезаписи нет проблем. |
|||
3
Sasha_H
11.07.19
✎
14:32
|
(1) Я думаю Вам следует открыть это! Потому как я не управляю Объектом и не создаю объект, а нахожусь в форме документа!
|
|||
4
butterbean
11.07.19
✎
14:33
|
(3) и?
|
|||
5
Sasha_H
11.07.19
✎
14:33
|
(4) И проверьте для себе - сделаете новых открытий!!!!
|
|||
6
Sasha_H
11.07.19
✎
14:36
|
ТекущийОбъект.ПолучитьСсылкуНового() и по факту какая ссылка получится будет отличаться!
|
|||
7
Sasha_H
11.07.19
✎
14:36
|
Данный метод рабочий только для создания объекта на программном уровне!
|
|||
8
butterbean
11.07.19
✎
14:37
|
(6) если предварительно не сделать УстановитьСсылкуНового(), то конечно будет отличаться
|
|||
9
Sasha_H
11.07.19
✎
14:38
|
(8) что за чушь вы тут несете!!!!
|
|||
10
Sasha_H
11.07.19
✎
14:38
|
ЭТО ФОРМА ДОКУМЕНТА. ПЛАТФОРМА САМА УПРАВЛЯЕТ ЭТОЙ ОПИРАЦИЕЙ!!
|
|||
11
Жан Пердежон
11.07.19
✎
14:39
|
конечно имхо, но ТС нам втирает какую-то дичь!
|
|||
12
Sasha_H
11.07.19
✎
14:41
|
Сбой исключительно странный и это повдение дикой именно в такой последовательности. Возможно это баг/фича этой платформы или серии платформ. или я туплю!
|
|||
13
Sasha_H
11.07.19
✎
14:42
|
Цуко хоть бери заводи свой идентификатор строки для идентифкатора!
|
|||
14
fisher
11.07.19
✎
14:59
|
(0) Предлагаю начать с другого конца - изложите в терминах бизнес-области какую бизнес-задачу вы изначально пытаетесь решить.
|
|||
15
Жан Пердежон
11.07.19
✎
15:06
|
идентификаторы после записи обновляются
|
|||
16
Sasha_H
11.07.19
✎
15:11
|
(15) Странно, а почему когда я последовательность другую делаю все работает. Я же дописал в посте (2) дополнение.
Проблема именно, когда открыть -Сдвинуть - записать. Открыть - Записать - Сдвинуть -Записать Нет проблемы |
|||
17
lodger
11.07.19
✎
15:12
|
(10) толсто троллите )
|
|||
18
Жан Пердежон
11.07.19
✎
15:36
|
(16) и кстати, у формы нет табличной части, тч есть у документов, справочников и т.д.
если у тебя тч документа - просто сохраняй номера строк |
|||
19
Sasha_H
11.07.19
✎
15:49
|
(18) Таблица формы. В данном случае выступает ссылкой на табличную часть документа без какого либо преобразования.
Да пришлось с номером строки решить. Но экзотика проблемы явно есть в платформе. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |