Интересное поведение 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-х).

 

Изображение

 

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

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

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

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

 

См. также

SALE! 50%

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

Использования систем контроля версий — стандарт современной разработки. На курсе научимся использованию Хранилища 1С и GIT при разработке на 1С:Предприятие 8. Разберем подходы и приемы коллективной разработки, научимся самостоятельно настраивать системы и ориентироваться в них.

4900 2450 руб.

29.06.2022    11930    99    4    

131

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

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

23.09.2024    2831    kraynev-navi    2    

25

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

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

17.09.2024    7279    Golovanoff    69    

26

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

Во многих командах незаслуженно забывают о том, что в базе меняются расширения (как от вендора, так и собственные) и внешние отчеты и обработки. Вплоть до того, что релиз происходит каждый день – меняются печатные формы, отчеты, обработки. Расскажем о том, как выгружать в Git не только изменения конфигурации рабочего контура, но и файлы внешних обработок и расширений.

05.09.2024    2170    ardn    12    

15

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

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

14.08.2024    7624    lekot    34    

8

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

В «долгоиграющих» проектах стандартный захват объектов 1С в хранилище может привести к длительным простоям других разработчиков. Но и создавать под каждую доработку отдельное хранилище, чтобы использовать технологию разветвленной разработки конфигураций от фирмы «1С» – избыточно. Расскажем о том, как разрабатывать в отдельной базе без ожиданий, а потом с легкостью перенести изменения в хранилище, используя основную идею технологии 1С – конфигурацию на поддержке хранилища.

05.08.2024    4231    sinichenko_alex    16    

25

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

Про изменения и новинки в агрегаторе открытых проектов OpenYellow, которые появились с момента его создания: про портал, Github и Telegram

15.07.2024    3227    bayselonarrend    8    

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

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

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

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

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

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

То есть можно поместить одно или несколько значений во временное хранилище, а в следующем вызове это значение использовать. При этом после использования и перед тем, как серверный вызов будет окончен, помещенное значение будет автоматически удалено.
2. Evgeny.Bogomolnyy 9 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 Ответить
Оставьте свое сообщение