Интересное поведение 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    9144    78    4    

110

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

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

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

25.03.2024    1186    bayselonarrend    3    

36

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

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

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

05.03.2024    1866    user1989937    6    

15

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

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

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

05.02.2024    3780    bayselonarrend    15    

61

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

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

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

22.01.2024    7843    bayselonarrend    50    

86

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

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

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

17.01.2024    2774    kamisov    17    

57

Отдай корень! Библиотека OneScript для получения информации о захваченных объектах в хранилище

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

Хранилище конфигурации 1С - это инструмент групповой разработки. Работают с хранилищем следующим образом: захватывают какой-либо объект, редактируют, потом отдают его в хранилище. Хранилище помечает уже захваченные объекты и не дает возможности захватить их другим пользователям. Это рождает и самый большой недостаток хранилища - невозможность работы с одним объектом нескольких пользователей, например в случае доработки разных методов в одном большом модуле. Корень конфигурации - это самый верхний ее узел. Только захватив корень, мы можем добавить в конфигурацию новые общие модули, документы, справочники, регистры и подобное. Только захватив корень можно изменить настройки поддержки конфигурации. Соответственно, если корень захвачен одним программистом, другой программист не может добавить новые объекты или снять что-то с поддержки. Потому то и всплывает эта фраза - отдай корень, мне нужно тоже что-то добавить.

26.12.2023    1336    ardn    1    

26

Git Code Review - инструмент для рецензирования кода

Групповая разработка (Git, хранилище) Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Абонемент ($m)

Git Code Review - инструмент, позволяющий быстро анализировать изменения из git-репозитория прямо в 1С

1 стартмани

20.12.2023    3958    59    salexdv    26    

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

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

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

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

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

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

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