Есть ли функция, которая возвращает все измененные поля формы, то есть объект не равен ссылке и по какому полю (для обычных форм).

1. AlexandrSmith 69 05.09.23 16:19 Сейчас в теме
Интересует функция (обычные формы), которая есть в официальной конфигурации, БСП или хоть как-то протестирована на этом форуме.
По теме из базы знаний
Найденные решения
14. karamazoff 96 05.09.23 18:41 Сейчас в теме
(12)Нет такой функции, если элементы формы напрямую связаны с реквизитами объекта, то обход по метаданным всех реквизитов и табличных частей для сравнения с данными в ссылке, если нет (форма живет своими реквизитами и при записи сует их в объект), то селя ви
user1936670; AlexandrSmith; user1880116; lefthander; Sashares; +5 Ответить
24. AlexandrSmith 69 05.09.23 22:25 Сейчас в теме
(14) (15) (7)(11) Я дам развернутый ответ, для новичков:
1) В тексте ответов были указания, что данных много, значит функцию однозначно нельзя делать на 1С и программисты 1С наверняка об этом знали. Потому что они тестируют на огромном количестве данных свои функции. Поэтому надо делать платформенную функцию.
2) Платформенную функцию не сделали, из того же соображения быстродействия, даже в откомплированном машинном коде, но с многократными запросами к базе данных её не выгодно делать.
3) И наконец перспективы её применения при возможности заблокировать элемент на форме - сомнительны!!!

Вот наиболее правильный полный ответ, собранный на основе ответов поддержки 1С

Ответ (14) наиболее правильный, для остальных фирма 1С рекомендует блокировать пользователю элементы, которые он не должен изменять. ВСЕ!!!
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1826630 05.09.23 16:53 Сейчас в теме
Сначала определитесь - что означает "измененные"?
user1936670; user1880116; +2 1 Ответить
6. AlexandrSmith 69 05.09.23 17:43 Сейчас в теме
(2) Объект <> ссылка, по каким полям изменения?

Отмененные изменения не интересуют

Заранее благодарю за ответ.
3. ya.Avoronov 115 05.09.23 17:17 Сейчас в теме
* Есть метод формы Модифицированность()

* Если поля на форме, связанны с объектом формы, то можно сформировать коллекцию из этих реквизитов и сравнить с коллекцией по ссылке/данными на сервере. Получаем две коллекции и сравниваем: ОбщегоНазначения.КоллекцииИдентичны(БСП) - Сравнивает две коллекции строк (ТаблицаЗначений, ДеревоЗначений и т.д.), Возвращаемое значение: Булево - Истина, если идентичны.

* В интернете есть масса фукнкций по сравниванию структур, массивов, коллекций. Писать самому - вообще полезнее, вам скорее всего универсальная и не нужна.

* Можно сравнить хэш суммы, но состав хэша придется все равно самому придумывать.

* Если поля реквизитов формы, не связанных с объектом, то нужно запомнить их в память до редактирования, сравнить после...

* Еще есть ОбщегоНазначенияКлиентСервер.РазностьМассивов(БСП) - Возвращает разность массивов. Разностью двух массивов является массив, содержащий все элементы первого массива, не существующие во втором массиве.
user1936670; user1880116; SlavaKron; +3 1 Ответить
5. AlexandrSmith 69 05.09.23 17:40 Сейчас в теме
(3)Даже не надо конкретного изменения, нужен флаг что именно эти поля изменялись и изменились. То есть, если кто-то нажал Esc не учитывать.

Заранее благодарю за ответ.
4. AlexandrSmith 69 05.09.23 17:38 Сейчас в теме
(3) Скажу прямо, мне скорее всего нужна "только универсальная", и даже не собираюсь косячить сам.
А вы скорее всего не сталкивались с формой в которой 200 разнообразных переменных 50 полей и семь табличных частей. Поэтому прошу не продолжать. Если общей нет, то ваши предложения не заинтересовали. Я четко все написал в задании.

А всех возможных функций я уже натаскал из инета и проверил.

Еще раз повторю, есть необходимость сравнить объект и ссылку - все!!!. Нужна стандартная функция без лишних нравоучений и умозаключений

Объект <> Ссылка и на выходе массив полей и табличных частей с измененными данными.

Отмененные изменения не интересуют

Заранее благодарю за ответ.
7. пользователь 05.09.23 17:57
Сообщение было скрыто модератором.
...
8. пользователь 05.09.23 17:58
Сообщение было скрыто модератором.
...
9. пользователь 05.09.23 18:06
Сообщение было скрыто модератором.
...
31. пользователь 05.09.23 23:21
Сообщение было скрыто модератором.
...
10. пользователь 05.09.23 18:08
Сообщение было скрыто модератором.
...
15. пользователь 05.09.23 21:13
Сообщение было скрыто модератором.
...
17. пользователь 05.09.23 21:47
Сообщение было скрыто модератором.
...
27. пользователь 05.09.23 22:46
Сообщение было скрыто модератором.
...
28. пользователь 05.09.23 22:47
Сообщение было скрыто модератором.
...
30. пользователь 05.09.23 23:18
Сообщение было скрыто модератором.
...
11. Sashares 34 05.09.23 18:13 Сейчас в теме
(4)
Еще раз повторю, есть необходимость сравнить объект и ссылку - все!!!

Это совсем не то, что написано в заголовке темы.
В БСП в подсистеме Версионирование новая версия создается только если были изменения в объекте.
Можете попробовать посмотреть в эту сторону.
13. AlexandrSmith 69 05.09.23 18:22 Сейчас в теме
(11) Я это пробовал, версионирование вести нельзя, база гигантская, это следует из моей фразы "А вы скорее всего не сталкивались с формой в которой 200 разнообразных переменных 50 полей". Архивы очень, очень большие и так. И интересует именно функция, если вы знаете конкретно эту функцию.
12. AlexandrSmith 69 05.09.23 18:17 Сейчас в теме
Есть ли функция, которая возвращает все измененные поля формы, то есть объект не равен ссылке и по какому полю (для обычных форм). Где чего не совпадает

"Еще раз повторю, есть необходимость сравнить объект и ссылку - все!!!" - "объект не равен ссылке и по какому полю"

Отвечаю автору который предлагает сравнивать коллекции

Если поля на форме, связанны с объектом формы, то можно сформировать коллекцию из этих реквизитов и сравнить с коллекцией по ссылке/данными на сервере. Получаем две коллекции и сравниваем:
14. karamazoff 96 05.09.23 18:41 Сейчас в теме
(12)Нет такой функции, если элементы формы напрямую связаны с реквизитами объекта, то обход по метаданным всех реквизитов и табличных частей для сравнения с данными в ссылке, если нет (форма живет своими реквизитами и при записи сует их в объект), то селя ви
user1936670; AlexandrSmith; user1880116; lefthander; Sashares; +5 Ответить
16. AlexandrSmith 69 05.09.23 21:46 Сейчас в теме
18. AlexandrSmith 69 05.09.23 21:51 Сейчас в теме
(14) Вот я так всем и сказал, но решил по другому задачу, за правильный ответ, спасибо. Да я получил официальный ответ разарботчиков 1С по телефону, и сам знал именно это. И меня интересовало подтверждение.
19. пользователь 05.09.23 21:54
Сообщение было скрыто модератором.
...
20. пользователь 05.09.23 21:57
Сообщение было скрыто модератором.
...
32. пользователь 05.09.23 23:22
Сообщение было скрыто модератором.
...
21. пользователь 05.09.23 21:59
Сообщение было скрыто модератором.
...
22. пользователь 05.09.23 22:07
Сообщение было скрыто модератором.
...
23. пользователь 05.09.23 22:16
Сообщение было скрыто модератором.
...
24. AlexandrSmith 69 05.09.23 22:25 Сейчас в теме
(14) (15) (7)(11) Я дам развернутый ответ, для новичков:
1) В тексте ответов были указания, что данных много, значит функцию однозначно нельзя делать на 1С и программисты 1С наверняка об этом знали. Потому что они тестируют на огромном количестве данных свои функции. Поэтому надо делать платформенную функцию.
2) Платформенную функцию не сделали, из того же соображения быстродействия, даже в откомплированном машинном коде, но с многократными запросами к базе данных её не выгодно делать.
3) И наконец перспективы её применения при возможности заблокировать элемент на форме - сомнительны!!!

Вот наиболее правильный полный ответ, собранный на основе ответов поддержки 1С

Ответ (14) наиболее правильный, для остальных фирма 1С рекомендует блокировать пользователю элементы, которые он не должен изменять. ВСЕ!!!
25. пользователь 05.09.23 22:29
Сообщение было скрыто модератором.
...
26. пользователь 05.09.23 22:44
Сообщение было скрыто модератором.
...
29. пользователь 05.09.23 22:54
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот