История данных. Изменения в платформе 8.3.24

19.06.23

Разработка - Механизмы платформы 1С

16.06.2023 вышла бета 8.3.24.1020, давайте посмотрим, что поменялось в плане Истории данных.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Изменение истории данных (Типовой из платформы 8.3.24)
.epf 114,31Kb
151 Скачать бесплатно

Если коротко, то починили баг, который проявлялся ПриЗаписи() и появилась возможность программного включения Истории данных.

Честно скажу, меня терзал интерес, так как ранее я не стал дожидаться, когда обработку по программному включению истории данных выпустит 1С, и сделал ее сам. Выложил для бесплатного скачивания: Моя версия настройки состава «Истории данных»

В статье я сравню эти две разработки и выложу типовую от фирмы 1С.

Поехали, начнем с бага.

 

1 Баг, который присутствовал в предыдущих версиях (до 8.3.24.1020):

 

 

Я решил его воссоздать.

Демонстрирую на платформе (8.3.23):

Я создал справочник «ТестируемБаг», добавил ему реквизит «Комментарий» - строка длиной 150 символов.

Включил Историю данных и обновление истории данных сразу после записи:

 

 

Далее я запустил клиент и создал элемент справочника:

 

 

В истории у нас вот такая версия:

 

 

Добавил подписки ПередЗаписью и ПриЗаписи:

 

 

Код обработчиков вот такой:

Процедура ТестируемБагПередЗаписью(Источник, Отказ) Экспорт

               Источник.Комментарий = "Перед записью"

КонецПроцедуры



Процедура ТестируемБагПриЗаписи(Источник, Отказ) Экспорт

               Источник.Комментарий = "При записи"

КонецПроцедуры

 

Открыл созданный ранее элемент и перезаписал:

В комментарии видим «При записи»

 

 

Нажимаем «Перечитать»

 

 

В комментарии видим «Перед записью»

 

 

А что у нас в Истории данных?

 

 

В истории данных мы видим «При записи», а в элементе справочника в текущий момент «Перед записью».

Я проверил данное поведение в 8.3.24.1020. Данное поведение исправили, правда должен быть выключен режим совместимости. Возможно, во всех платформах младше 8.3.23 вышедших после данного релиза ошибку поправят, но это не точно.

 

2 Сравнение типовой обработки с моей в части включения Истории данных по объектам.

Скажу честно, пока я сравнивал две обработки я устал от типовой. Дело в том, что при запуске открывается форма настройки отбора. Просто ранее эта обработка служила для поиска версий и почему-то в 1С решили оставить старое поведение. Поэтому приходилось все время закрывать форму отбора.

 

 

В итоге я вытащил типовую обработку из платформы и закомментировал код, выполняющий запуск формы:

&AtClient

Procedure OnOpen(Cancel)

              

          MakeFilterPresentation(FilterValue);

               // СДВ Форма отбора при открытии обработки ++

    //AttachIdleHandler("OnOpenDelayed", 0.1, True);

               // СДВ Форма отбора при открытии обработки --  

              

EndProcedure

В таком виде я прикрепил типовую обработку к статье. Напомню, для работы заявленного 1С функционала нужна платформа от 8.3.11, а лучше 8.3.15.

 

Объекты, на которые нет прав:

Открываем типовую обработку 1С:

 

 

Решение интересное. Если нет прав тогда название объекта становится светлым и появляется надпись, что прав недостаточно. С другой стороны, кто будет пользоваться этой обработкой? Обычные пользователи?

Запускаем мою обработку:

 

 

Я предусмотрел «привилегированный режим» включения, тем более данные настройки должен включать человек с административными правами.

Итог: За оформление объектов, на которые нет прав я несомненно ставлю плюс фирме 1С, но то, что не предусмотрен привилегированный режим ставлю минус.

Счет: 1-1

 

Запуск на платформе 8.3.24 в режиме совместимости 8.3.10 (до появления истории данных):

Открываем типовую обработку 1С как внешнюю:

 

 

Информативность сообщения, конечно, не «Агонь». Хотелось бы более дружелюбное сообщение, в котором указывалось с какой версии обработку можно запускать.

Хм, стресс тест не пройден… Дам тогда фору и запущу на 8.3.24 в режиме совместимости 8.3.10 прямо из «Функции для технического специалиста». Но не тут-то было. Обработка пропала из меню.

 

Запускаем мою обработку:

 

 

У меня обработка запускается и выводит четко и понятно какую платформу нужно установить.

Итог: Если вы используете режим совместимости 8.3.10 вы даже не узнаете про новую возможность. Балы не дам не себе не 1С, будем считать это незначительными придирками.

Счет: 1-1

В режимах совместимости 8.3.11 и выше, обработки ведут себя одинаково адекватно

Счет: 2-2

 

Информативность:

Открываем типовую обработку 1С:

 

 

Вот скажите История данных включена в конфигураторе или программно? А может быть, где-то есть выключенная программно история данных?

Смотрим, например, Регистр Сведений:

 

 

Что за поля? Что есть ресурс, а что реквизит? И самое непонятное - это для чего выведено измерение?

 

 

 

Я решил провести краш тест. Выключаем измерение «Имя подсистемы»

 

 

Меня ждал сюрприз, дело в том, что ранее подобное поведение приводило к ошибке, из-за чего я выключил отображение измерений в своей обработке.

В любом случае не видно, что у регистра Версии подсистем что-то отключено, пока не выделишь его.

Запускаем мою обработку:

 

 

Все наглядно. Сразу видно, какой документ включен программно, какой в конфигураторе. И если выключить программно, мы тоже это увидим.

Я вернул обратно «Измерения» и выложил новую версию своей обработки.

 

 

Итог: Информативность у 1С явно проигрывает и самое интересное далее станет понятно почему ;))

Счет: 2-3

Тест - Нажимаем «Записать» ничего не меняя:

Ничего не произошло. Обе обработки прошли этот тест.

Счет: 3-4

Тест – Нажимаем выключить, а затем включить историю данных у объекта, после чего нажимаем «Записать».

Ничего не произошло. Обе обработки прошли этот тест.

Счет: 4-5

Тест – У включенного в конфигуратор объекта снимаем галочку. Записываем. Ставим галочку обратно и записываем.

При выключении и записи обе обработки повели себя правильно. Было установлено программное отключение истории данных. (Результат буду демонстрировать через мою обработку, так как в типовой этот момент невиден)

 

 

А теперь ставим включить и записываем.

1С сделала двойное включение…

 

 

 

То есть теперь история данных включена и в конфигураторе и программно. Соответственно в таблице, где хранятся программные настройки «DataHistorySettings» появилась лишняя запись, а обыватель об этом и знать не знает.

Моя обработка смотрит если включено в конфигураторе тогда программно включать не надо и не включает.

 

 

Итог: В 1С явно пошли путем на скорую руку, работает и ладно. Тут я бы еще и отнял бал за реализацию, но не буду.

Счет: 4-6

 

Настройки по умолчанию.

Что я ожидал от этой кнопки? Я ожидал, что в любой момент нажму на данную кнопку и вернусь к версии с очищенными программными настройками.

В 1С так и делают на первый взгляд. Снимают все галочки программные. А дальше ты думаешь все норм и закрываешь обработку и изменения не меняются. Оказывается, нужно нажать «Записать» и вот тут получаем еще более странное поведение:

До того, как нажал «Настройки по умолчанию» и «Записать»:

 

 

Результат:

 

 

Включенный программно объект, выключен тоже программно. Соответственно место в таблице «DataHistorySettings» занято данной настройкой.

Моя обработка при нажатии «Настройка по умолчанию» чистит программные настройки освобождая таблицу «DataHistorySettings» от ненужных данных.

 

 

Итог: Поведение у 1С крайне странное, отключение программных настроек происходит путем создания программной настройки. Моя обработка удаляет программные настройки и соответственно чистит после себя таблицу «DataHistorySettings»

Счет: 4-7

Отменить изменения и Прочитать настройки заново:

Обе обработки отработали корректно. Отменили все текущие изменения.

Счет: 4-8

 

Подвожу итоги:

Обработка от 1С рабочая, но, к сожалению, сделана на скорую руку. Имеет функционал достаточный для включения/выключения истории данных в пользовательском режиме, но только если есть права на все объекты. Визуально непонятно, что включено программно, а что в конфигураторе. При выключенных реквизитах вы не увидите изменений по выключенному объекту. В общем, хорошо, что они сделали, но плохо что сделали на 3-

По моему субъективному мнению, моя обработка выиграла со счетом 8 – 4, хотя я поддавался в некоторых пунктах. 

На этом заканчиваю. Всем удачи и новых свершений!

 

Полезные статьи по этой теме:

Обработка для программной настройки состава "Истории данных"

Версионирование объектов VS История данных

Вступайте в нашу телеграмм-группу Инфостарт

История данных Баг 8.3.24 типовая обработка

См. также

Механизмы платформы 1С Программист Бесплатно (free)

Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?

16.07.2025    24831    TitanLuchs    106    

144

Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    13730    bayselonarrend    127    

67

Механизмы платформы 1С Программист 1С:Предприятие 8 Бесплатно (free)

В этой статье подробно рассматривается работа с JSON в XDTO в 1С:Предприятие. Вы узнаете, как сериализовать и десериализовать объекты XDTO в JSON, интегрировать 1С с веб-сервисами и API, а также корректно обрабатывать данные при обмене. Разбираются особенности работы с коллекциями, использование функций восстановления и частые ошибки при работе с JSON и XDTO.

30.01.2025    14819    user2122906    9    

60

Механизмы платформы 1С WEB-интеграция Программист 1С:Предприятие 8 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    25154    dsdred    77    

142

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    23304    bayselonarrend    22    

172

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    12925    dsdred    22    

85
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RocKeR_13 1460 19.06.23 13:30 Сейчас в теме
В истории данных мы видим «При записи», а в элементе справочника в текущий момент «Перед записью».

Эм, а кто вообще пытается что-то изменить в событии ПриЗаписи?)

Цитата:
Обработчик события ПриЗаписи

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

1. В данном обработчике модуля объекта (набора записей, значения константы; далее - "объект"), как правило, выполняются действия по записи связанной с объектом данных в других объектах конфигурации, а также выполняются другие действия, связанные с изменением объекта.

Запрещается в данном обработчике изменять содержимое записываемого объекта, поскольку на момент выполнения обработчика, объект уже записан в БД.

2. Все действия в процедуре-обработчике события ПриЗаписи должны выполняться после проверки на ОбменДанными.Загрузка.

Источник: ИТС
2. dsdred 4147 19.06.23 13:44 Сейчас в теме
(1)незнаю кто пытается менять ПриЗаписи(). Я про это поведение прочитал из описания, что нового в 8.3.24.

Ранее этот баг незнал, а так как до этого писал масштабную статью по сравнению версионирования и истории данных решил, что должен рассказать и про этот баг.

ПС если это поведение поправили значит был запрос на исправление.
3. artbear 1583 19.06.23 15:23 Сейчас в теме
(1) Возможно, речь об изменениях "других" объектов, изменяемых в обработчиках "ПриЗаписи"
- например, так можно делать для изменения связанных подчиненных объектов после записи основного\главного объекта
5. RocKeR_13 1460 19.06.23 15:27 Сейчас в теме
(3) Так судя по скринам, в историю писались именно те изменения, которые пытались внести в основной объект в событии "ПриЗаписи"
8. truba 27.07.23 14:43 Сейчас в теме
(3) То будут уже другие, связанные объекты, по всей логике они не пойдут в запись этого текущего объекта, на которого настроено ИД.
К слову интересный вопрос как бы сохранять эти связанные подчиненные объекты слинкованными с ведущим объектом. Не их отдельно, а именно в связке, что бы понимать какие изменения ведущего привели к изменениям ведомых.
4. fatman78 21 19.06.23 15:24 Сейчас в теме
А можно где-то почитать, как перейти с версионирования объектов на основе БСП на платформенный механизм "Истории данных" без потери накопленной информации по изменениям?

Upd. нашел у zeegin: История данных и БСП
7. fatman78 21 19.06.23 15:35 Сейчас в теме
(6) Спасибо, уже сам нашел. Плохо что типовая обработка не учитывает изменение метаданных объекта при переносе.
Для отправки сообщения требуется регистрация/авторизация