|
Дайте код, как отловить изменение в ТЧ объекта? | ☑ | ||
---|---|---|---|---|
0
Novichok VX
23.04.21
✎
13:51
|
Дайте код, как отловить изменение в ТЧ объекта? при записи
|
|||
1
Михаил Козлов
23.04.21
✎
13:53
|
Запрос по сравнению значений в БД и в объекте. Только ПередЗаписью.
|
|||
2
Novichok VX
23.04.21
✎
13:55
|
У меня такая функция перед записью, там всегда значения до изменеия, что не так?
Функция ПроверитьИзмененаЛиКИ() КИИзменена = Ложь; МассивКОлонокКИ = Новый Массив; МассивКОлонокКИ.Добавить("Тип"); МассивКОлонокКИ.Добавить("Вид"); МассивКОлонокКИ.Добавить("Представление"); МассивКОлонокКИ.Добавить("ЗначенияПолей"); МассивКОлонокКИ.Добавить("Страна"); МассивКОлонокКИ.Добавить("Регион"); МассивКОлонокКИ.Добавить("Город"); МассивКОлонокКИ.Добавить("АдресЭП"); МассивКОлонокКИ.Добавить("ДоменноеИмяСервера"); МассивКОлонокКИ.Добавить("НомерТелефона"); МассивКОлонокКИ.Добавить("НомерТелефонаБезКодов"); МассивКОлонокКИ.Добавить("ВидДляСписка"); МассивКОлонокКИ.Добавить("Значение"); Для Н = 0 По Объект.Ссылка.КонтактнаяИнформация.Количество() - 1 Цикл Для Каждого Колонка ИЗ МассивКОлонокКИ Цикл Если Объект.Ссылка.КонтактнаяИнформация[Н][Колонка] <> Объект.КонтактнаяИнформация[Н][Колонка] Тогда КИИзменена = Истина; иначе сообщить("до "+строка(Объект.Ссылка.КонтактнаяИнформация[Н][Колонка])+" после "+строка(Объект.КонтактнаяИнформация[Н][Колонка])); КонецЕсли; КонецЦикла; КонецЦикла; Возврат КИИзменена; КонецФункции |
|||
3
Михаил Козлов
23.04.21
✎
14:00
|
И что отладчик говорит? Запросом не пробовали? Сообщать в модуле объекта некому.
|
|||
4
Novichok VX
23.04.21
✎
14:10
|
(3)
что значит запросом, куда ссылаться? |
|||
5
Kassern
23.04.21
✎
14:18
|
(2) наверное потому что у тебя Объект.Ссылка не? Пока объект в базу не запишется, в ссылке будут храниться данные до изменений. Обращайся к объекту а не к ссылке.
|
|||
6
Novichok VX
23.04.21
✎
14:27
|
(5)
Да, в одном случает объект.ссылка, а в другом объект, значение при сообщить совпадают, как до изменения сообщить("до "+строка(Объект.Ссылка.КонтактнаяИнформация[Н][Колонка])+" после "+строка(Объект.КонтактнаяИнформация[Н][Колонка])); |
|||
7
Kassern
23.04.21
✎
14:29
|
(6) у вас точно перед записью сравнение проходит? в модуле формы или в модуле объекта?
|
|||
8
Novichok VX
23.04.21
✎
14:30
|
(7)
в модуле формы |
|||
9
piter3
23.04.21
✎
14:31
|
Бац и поменяли без открытия дока
|
|||
10
Serg_1960
23.04.21
✎
15:03
|
(8) В модуле формы ловите при редактирование строки. А перед записью документа Цикл по Объект.Ссылка - неверный подход - Вы проигнорируете добавленные в конец новые строки в Объекте.
|
|||
11
Serg_1960
23.04.21
✎
15:05
|
КИИзменена = Объект.Ссылка.КонтактнаяИнформация.Количество() <> Объект.КонтактнаяИнформация.Количество();
|
|||
12
BeerHelpsMeWin
23.04.21
✎
15:12
|
В модуле объекта перед записью
Если НЕ ЭтоНовый() Тогда Если ТЗИдентичны(ЭтотОбъект.ТЗ,Ссылка.ТЗ) Тогда ... |
|||
13
Serg_1960
23.04.21
✎
15:20
|
Просто о сложном :) Порядок строк в ТЧ КонтактнаяИнформация может быть изменён, но это не означает, что контактная информация изменена.
|
|||
14
1Сергей
23.04.21
✎
15:23
|
(11) если они равны, не факт что ничего не изменилось
|
|||
15
Serg_1960
23.04.21
✎
15:30
|
(14) Я просто прокомментировал вышесказанное - перед обходом по строкам есть смысл сравнить их количество. Тогда, возможно, не потребуется обход строк городить. Но, учитывая Ваше замечание, исправляюсь:
КИИзменена = Объект.Ссылка.КонтактнаяИнформация.Количество() <> Объект.КонтактнаяИнформация.Количество(); Если НЕ КИИзменена Тогда Для Н = 0 По Объект.Ссылка.КонтактнаяИнформация.Количество() - 1 Цикл Для Каждого Колонка ИЗ МассивКОлонокКИ Цикл ... |
|||
16
Serg_1960
23.04.21
✎
15:32
|
PS: если в конфигурации есть версионирование, то есть и соответствующий отчет, где ТС может "подсмотреть" нужные ему алгоритмы.
|
|||
17
Novichok VX
23.04.21
✎
16:22
|
ничего конкретного не вижу, как решить проблему то?
|
|||
18
программистище
23.04.21
✎
16:29
|
если объект не записан или табличная часть пуста
Объект.Ссылка.КонтактнаяИнформация.Количество() будет равна нулю цикл не выполнится ни разу |
|||
19
программистище
23.04.21
✎
16:31
|
при том что строки могут менять положение, удаляться, добавляться, твой код вызовет исключение
|
|||
20
Novichok VX
23.04.21
✎
17:07
|
(18)
у меня по названию колонок сравнение, пофигу на порядок. Нулю не равно в перед записью количество, 100 раз проверял |
|||
21
Serg_1960
23.04.21
✎
17:27
|
(20) Верю, Вам - пофигу :) Но: у Вас сравнение значений по строкам и колонкам (КонтактнаяИнформация[Н][Колонка]) - Вашему алгоритму не пофигу на порядок.
|
|||
22
программистище
23.04.21
✎
17:32
|
судя по заголовку темы, Дайте код
ТС вникать не собирается |
|||
23
dmt
23.04.21
✎
18:17
|
(0) пример вызова: ВывестиРасхождения(ДокОбъект, ДокОбъект.Ссылка)
Функция ВывестиРасхождения(Об1, Об2) Экспорт стрРезультат = ""; Мета1 = Об1.Ссылка.Метаданные(); Для каждого Реквизит Из Мета1.Реквизиты Цикл ИмяРеквизита = Реквизит.Имя; Если Об1[ИмяРеквизита] <> Об2[ИмяРеквизита] Тогда стрРезультат = стрРезультат + ?(стрРезультат="", "", Символы.ПС) + СтрШаблон("Реквизит %1: %2 --> %3", ИмяРеквизита, Об1[ИмяРеквизита], Об2[ИмяРеквизита]); КонецЕсли; КонецЦикла; Для каждого ТЧ Из Мета1.ТабличныеЧасти Цикл ИмяТЧ = ТЧ.Имя; Если Об1[ИмяТЧ].Количество() <> Об2[ИмяТЧ].Количество() Тогда стрРезультат = стрРезультат + ?(стрРезультат="", "", Символы.ПС) + СтрШаблон("ТЧ %1.Количество(): %2 --> %3", ИмяТЧ, Об1[ИмяТЧ].Количество(), Об1[ИмяТЧ].Количество()); //Продолжить; КонецЕсли; Для к=0 По Мин(Об1[ИмяТЧ].Количество()-1, Об2[ИмяТЧ].Количество()-1) Цикл ИмяРеквизита = Реквизит.Имя; Для каждого Реквизит Из ТЧ.Реквизиты Цикл ИмяРеквизита = Реквизит.Имя; Если Об1[ИмяТЧ][к][ИмяРеквизита] <> Об2[ИмяТЧ][к][ИмяРеквизита] Тогда стрРезультат = стрРезультат + ?(стрРезультат="", "", Символы.ПС) + СтрШаблон("ТЧ %1[%2].%3: %4 --> %5", ИмяТЧ, к, ИмяРеквизита, Об1[ИмяТЧ][к][ИмяРеквизита], Об2[ИмяТЧ][к][ИмяРеквизита]); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; Возврат стрРезультат; КонецФункции |
|||
24
xXeNoNx
23.04.21
✎
19:46
|
(0) и квартиру где деньги лежат
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |