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

19.06.23

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

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

Скачать исходный код

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

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

Честно скажу, меня терзал интерес, так как ранее я не стал дожидаться, когда обработку по программному включению истории данных выпустит 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С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

13.03.2024    2756    dsdred    16    

60

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Перенос данных 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    6352    dsdred    59    

86

Как готовить и есть массивы

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

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    6212    YA_418728146    25    

68

Планы обмена VS История данных

Перенос данных 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    7229    dsdred    36    

114

1С-ная магия

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

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    19370    SeiOkami    46    

121

Дефрагментация и реиндексация после перехода на платформу 8.3.22

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

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    13100    human_new    27    

76

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    9679    YA_418728146    6    

146

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6636    sebekerga    54    

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

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

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

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

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

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

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

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

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

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

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