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

23.12.21

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

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

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

Наименование Файл Версия Размер
Обработка из примера
.epf 6,60Kb
0
.epf 6,60Kb Скачать

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

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

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

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

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

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

 

Изображение

 

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

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

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

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

 

См. также

Системы контроля версий для 1С-разработчиков.

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

Основы командной разработки на 1С. Использование систем контроля версий при разработке на платформе 1С:Предприятие 8

4900 руб.

29.06.2022    9386    78    4    

112

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

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

Не знаете, чем бы таким заполнить свой профиль Github? Заполните его своими статьями на Инфостарт! Этот простой workflow сам соберет список ваших последних статей и будет периодически обновлять его для актуализации данных.

08.04.2024    918    bayselonarrend    2    

31

Процесс разработки с использованием GIT и расширений для 1С:ERP. Без EDT

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

Доработки 1С:ERP на крупных проектах можно организовать, не внося изменения в саму типовую конфигурацию, а используя только расширения и отдельные «микроконфигурации». Расскажем о том, как это сделать без EDT, используя процесс разработки GitHub Flow.

02.04.2024    4570    Begemoth80    24    

45

Особенности национального Workflow: Github Actions и OneScript

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

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    1567    bayselonarrend    3    

38

Автоматизация процесса разработки с помощью сервиса GitFlic

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

GitFlic – первая в России полностью самостоятельная реализация сервиса для хранения репозиториев с исходным кодом. За три года разработки сервис GitFlic стал полноценным инструментом, которым можно заменить GitLab, GitHub и BitBucket. Расскажем о том, как выстроить в GitFlic процесс автоматического тестирования, статического анализа кода и сборки приложений.

05.03.2024    2080    user1989937    6    

16

OpenYellow - рейтинг открытых GitHub репозиториев для платформы 1С:Предприятие

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

Обновляемый топ GitHub репозиториев для 1С по всем языкам программирования и еще немного рассуждений про open-source.

05.02.2024    4011    bayselonarrend    15    

63

Насколько глубок 1С-ный GitHub?

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

Open-source проекты - важная часть мира программного обеспечения. 1С привычно держится немного в стороне от глобальных трендов, но бросить холодный статистический взгляд на положение дел мне показалось небезынтересным.

22.01.2024    8055    bayselonarrend    50    

87

TCP прокси-сервер хранилища конфигурации 1С

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

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    3006    kamisov    17    

60
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 Ответить
Оставьте свое сообщение