Интересное поведение 1С. Сборщик мусора

23.12.21

Разработка - Групповая разработка (Git, хранилище)

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Обработка из примера
.epf 6,60Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

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

Во временном хранилище некоторые данные очищаются. Например, если во временное хранилище поместить ДокументОбъект, то через какое-то время (минут 30-40) его там не будет.

В качестве примера возьмём Обработку, добавим в нее пару кнопок, одна кнопка будет помещать данные во временное хранилище, другая извлекать их.

АдресВоВременномХранилище, рДокументОбъектСозданРазмещен, рДокументОбъектПолучен, рСтрокаПоместить, рСтрокаПолучить поместим в реквизит формы.

Запускаем обработку, помещаем данные в хранилище, ждем 30-40 минут, получаем данные и анализируем результат. Данные с типом Строка остались на месте, а данных с типом ДокументОбъект нет.

Данный код проверял на платформах 8.3.10.2772, 8.3.18.1363 (32-х, 64-х).

 

Изображение

 

&НаСервере
Процедура ПоместитьДанныеВоВременноеХранилищеНаСервере()
	пДокументОбъект = Документы.ЗаказКлиента.СоздатьДокумент();
	Контейнер = Новый Соответствие;
	Контейнер["ДанныеОчистятся"] = пДокументОбъект;
	Контейнер["ДанныеНеОчистятся"] = рСтрокаПоместить;
	рДокументОбъектСозданРазмещен = ?(пДокументОбъект=Неопределено, Ложь, Истина);
	АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Контейнер, Новый УникальныйИдентификатор);
КонецПроцедуры

&НаКлиенте
Процедура ПоместитьДанныеВоВременноеХранилище(Команда)
	ПоместитьДанныеВоВременноеХранилищеНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПолучитьДанныеИзВременногоХранилищаНаСервере()
	Контейнер = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
	пДокументОбъект = Контейнер["ДанныеОчистятся"];
	рСтрокаПолучить = Контейнер["ДанныеНеОчистятся"];
	рДокументОбъектПолучен = ?(пДокументОбъект=Неопределено, Ложь, Истина);
КонецПроцедуры

&НаКлиенте
Процедура ПолучитьДанныеИзВременногоХранилища(Команда)
	ПолучитьДанныеИзВременногоХранилищаНаСервере();
КонецПроцедуры

 

См. также

Групповая разработка (Git, хранилище) EDT OneScript Программист 1С v8.3 Бесплатно (free)

В данной публикации рассматривается пример реализации скрипта, который автоматизирует получение ветки из GIT репозитория и обновление конфигурации, если разработка проекта ведется в EDT.

11.06.2025    1124    AlexF1    3    

6

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) EDT Программист 1С v8.3 Бесплатно (free)

В процессе использования 1С:EDT и репозитория Git для обновлений релизов доработанных конфигураций появилась необходимость в регулярной загрузке конфигураций от вендора 1С в Git-репозиторий. Описанное в статье решение позволяет автоматизировать эту операцию и может быть полезным специалистам, занимающимися обновлениями с использованием 1C:EDT+Git

21.05.2025    2297    ICL-Soft    3    

18

Групповая разработка (Git, хранилище) Обновление 1С Программист 1С v8.3 Россия Бесплатно (free)

Внедряем проверку новых версий прямо в расширение. Оповещайте о новых версиях и показывайте пользователям список изменений. Для разработчиков, которые хотят сэкономить время и повысить лояльность клиентов!

05.02.2025    4195    Nonik    10    

18

Групповая разработка (Git, хранилище) Программист Руководитель проекта 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Когда в хранилище одновременно разрабатывают несколько команд, сортировка сделанного и несделанного при формировании релиза и проведение code review по задачам превращаются в непроходимый квест. В таких случаях нужен бранчинг. Расскажем об опыте перехода на новую схему хранения кода для ИТ-департамента.

23.09.2024    8558    kraynev-navi    3    

27

Групповая разработка (Git, хранилище) Программист 1С v8.3 Бесплатно (free)

Как исправить медленное сравнение конфигурации с файлом cf, сохраненным из хранилища.

17.09.2024    8173    vatkir    16    

10

Групповая разработка (Git, хранилище) Программист Бесплатно (free)

Называть Git новой технологией – уже смешно, но для многих 1С-ников это действительно «новое и неизведанное». Расскажем о плюсах и минусах двух главных систем контроля версий в мире 1С: Git и хранилища.

17.09.2024    15668    Golovanoff    81    

26
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user1559729 23.12.21 18:07 Сейчас в теме
Это? - https://its.1c.ru/db/v837doc#bookmark:dev:TI000000804

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

● При следующем запросе формы.

● При следующем серверном вызове из клиентского общего модуля.

● При контекстном и неконтекстном клиентских вызовах из формы.

● При серверном вызове из модуля команды. Если вызов сервера осуществляется для помещения значения во временное хранилище, то очистка не производится. Очистка производится после того, как вызов закончил свою работу.

То есть можно поместить одно или несколько значений во временное хранилище, а в следующем вызове это значение использовать. При этом после использования и перед тем, как серверный вызов будет окончен, помещенное значение будет автоматически удалено.
2. Evgeny.Bogomolnyy 11 23.12.21 19:20 Сейчас в теме
(1) Интересное поведение как раз и заключается в том, что мы берем Объект, помещаем во временное хранилище и НЕ ВЫЗЫВАЕМ его в течение какого-то времени, в 1С ничего не делаем, через 30-40 минут помещенное значение автоматически очищается. Проверял даже на чистой конфигурации с всего лишь одним документом.
3. SlavaKron 23.12.21 19:50 Сейчас в теме
(2) 1С не умеет восстанавливать прикладные объекты с диска обратно в кеш. Поэтому спустя 20 минут, ДокументОбъект не восстановился, так как является лишь ссылкой в контейнере.
https://its.1c.ru/db/v8310doc#bookmark:dev:TI000000809
Внимание! При получении на сервере значения из временного хранилища следует учитывать то, что оно получается по ссылке. В действительности, ссылка эта указывает на значение, которое хранится в кеше. В течение 20 минут, с момента помещения в хранилище или же с момента последнего обращения, значение сохранится в кеше, а затем записывается на диск и из кеша удаляется. При следующем обращении значение загружается с диска и снова помещается в кеш.

После десериализации и восстановления значения из временного хранилища ссылки не восстанавливаются. Значение в кеше восстанавливается с диска. Но после сериализации/десериализации восстановить ссылки на другие объекты внутри значения невозможно.
DrAku1a; gubanoff; bulpi; booksfill; dhurricane; Evgeny.Bogomolnyy; +6 Ответить
Оставьте свое сообщение