Чистка кэша 1С (теперь в .exe)






Попробуйте поискать в интернете «Очистить кэш 1С».
Практически везде вы наткнетесь на всякие батники, ps-скрипты, рекомендации зайти и удалить вручную, поставить /ClearCache для баз на УФ и т.д. В подавляющем большинстве случаев предлагается бездумно удалить все содержимое Roaming1C1cv8 и Local1C1cv8, но это как переустановить Windows, чтобы почистить Temp.

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

И сразу скажу, почему она мне неудобна:

  1. Ее нужно устанавливать.
  2. Мне нужна всего одна функция — все остальное получается лишним грузом. 
  3. В бесплатной версии можно чистить кэш только одной базы за раз.

Не исключаю, что где-то и есть то, что мне нужно. Но раз уж это так непросто отыскать, то проще уже сделать свое.

Долго я раскачивался, чтобы сесть за шарп, т.к. никогда в нем не писал, но, с недавним обновлением платформы, терпению моему таки пришел конец. 
Итак, "Чистка кэша 1С" в виде самодостаточного приложения под Windows. Которая умеет только чистить кэш и ничего больше.

Написана под:

  • Платформу 1C 8.3.+
  • .NET Framework 4.5.0+
  • OS Windows 7+/Server 2008+

Исходный код открыт.

Репозиторийhttps://bitbucket.org/FuketsuBaka/clearcache1c

Страница загрузокhttps://bitbucket.org/FuketsuBaka/clearcache1c/downloads/

История изменений:

v 1.0.0

  • Initial release.

v 1.0.1 

  • Добавил подсказки на кнопки.
  • Поправил некритичный косяк с определением "Кэш сущестует" в инфо.

v 1.0.2

  • Библиотека Value.Tuple более не используется.
  • Поддержка с версии .NET Framework 4.5.0
  • Список баз оформлен в виде таблицы. Таблицу можно сортировать. Обработка выделения нескольких — на пробел.
  • Изменение размера окна, изменение размера блока информации о выделенной строке.
  • Поиск по совпадению в наименовании базы или в строке подключения. Регистронезависимо, динамически.
  • Кнопка обновления списка. Заново перечитывает список баз, размеры каталогов и всего остального.
  • Индикация наличия .lck файла (признак запущенной базы)
  • Выбор элементов для очистки: кэш пользователя, кэш приложения, настройки пользователя.

Альтернативы, предложенные в обсуждений:

 

42 Comments

  1. vcv

    У скриптов одно откровенное достоинство — гораздо проще убедиться, что внутри нет ни майнера, ни трояна, ни прочей вредоносной пакости. И скачивать экзешники из инета вредная привычка. Только с доверенных сайтов, к которым инфостартовский форум не относится.

    Reply
  2. capitan

    Для тех кого не забанили в гугле

    http://bfy.tw/KvCb

    найдется

    https://infostart.ru/public/90572

    https://infostart.ru/public/444952/

    Reply
  3. capitan

    (1)можно скачивать с инфостартовского форума, но только обязательно одевать презерватив

    Reply
  4. leosoft

    Желтое окошко надо бы пошире сделать — иначе обрезаются данные путей.

    Reply
  5. leosoft

    (1) Вам же исходники выложили?

    Reply
  6. riposte

    (1) Ссылка на исходный код в публикации есть. Всем сомневающимся, можно его взять, просмотреть и собрать.

    (4) В шарпе всего 2 дня. Замутить масштабирование элементов при ресайзе была мысль, даже примерно знаю, как написать, но пока делаю паузу. На работе ждет работа.

    Reply
  7. Rustig

    (0) молодец! красиво сделано!

    Reply
  8. Rustig

    (3) жестко пошутили )

    Reply
  9. CheBurator

    В Start Manger тоже вроде можно кэши чистить по списку баз.

    Reply
  10. user635667

    (1)вирустотал вроде ничего не нашел

    Reply
  11. riposte

    (2)

    Не сомневался, что где-то оно есть.

    Но искать по сочетанию с .net исключительно на infostart-е — это, увы, выше моей смекалки.

    Пусть будет, это как «загрузка справочников и документов из эксель» — одна универсальнее другой, но они продолжают появляться с завидной регулярностью.

    Reply
  12. fxmike

    Вроде все ок, но непонятно как упорядочены базы в списке, может сделать по наименованию сортировку? Поиск не работает, искать неудобно.

    Reply
  13. riposte

    (12)

    Никак не упорядочены. Базы идут по списку, указанному в ibases.v8i.

    Я подумаю над списком, возможно переоформлю в виде ТЧ с сортировками или древа, или оба варианта на выбор.

    Поиск тоже можно будет добавить.

    Reply
  14. user673778_karavaykov

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

    Reply
  15. fxmike

    (13) Спасибо, поиск наверно будет универсальнее.

    А еще можете подсказать, вот вылезла такая ошибка при запуске (скрин) — что это значит?

    Reply
  16. Azimut99

    Увы, вылезает ошибка

    Reply
  17. kuzyara

    хорошо!

    Reply
  18. riposte

    (14) Этот тоже бесплатный.

    (15) (16) Вы собираете из исходников?

    Reply
  19. fxmike

    (18) Нет, не из исходников, я запустил на своем компе — у меня нормально, запустил на чужом — выпала ошибка, 7 винда. Такое чувство, что каких то компонент не хватает.

    Reply
  20. riposte

    (19) Похоже на конфликт Nuget пакета System.ValueTuple с какой-то версей .NET.

    Есть рекомендации даунгрейднуть его до 4.3.0, попробую.

    Reply
  21. vasyna

    Оно же, но с ключами для запуска. К примеру вот возникла проблема при обновлении платформы. Часть релизов либо не запускается, либо при работе вываливается в ошибки. При чем я точно знаю что всего 2 базы из 10 и делать это руками для 100 пользователей не камильфо… А ну и еще ID задания, чтобы знать выполнено ли оно было или нет для данного пользователя. А так создал батник с указанием для какой базы что надо сделать, добавил его в стартовый батник 1с-ки и милейшее дело.

    Reply
  22. bulpi

    А как насчет того, чтобы чистить только программный кеш?

    Reply
  23. riposte

    (21) Это реквест?

    Reply
  24. rikony

    О как сделал красиво

    Reply
  25. invistik

    (0)

    Попробуйте поискать в интернете «Очистить кэш 1С».

    Практически везде вы наткнетесь на всякие батники, ps-скрипты, рекомендации зайти и удалить вручную, поставить /ClearCache для баз на УФ и т.д. В подавляющем большинстве случаев предлагается бездумно удалить все содержимое Roaming1C1cv8 и Local1C1cv8, но это как переустановить Windows, чтобы почистить Temp.

    Вы простите меня не знающего, всегда чистили кэш удаляя ну не все, а только папки с множеством символов, а что такого критичного в этом методе, или тут решение для массовой очистки?

    Reply
  26. riposte

    (25)

    папки с множеством символов

    Содержат в себе также .pfl-файлы настроек пользователя и информацию о последнем входившем юзере. К кэшу эти файлы не относятся и для задачи «очистить кэш» их удалять нет смысла. Если только какой-то специфический момент, который даже представить себе не могу.

    А так — да, это для массовой очистки с претензией на то, что «не удалится то, чего смысла удалять нет».

    (22)

    Который в localappdata?

    Reply
  27. riposte

    (16) (15)

    Попробуйте эту версию

    Reply
  28. Azimut99

    (27) Изменилась версия ошибки

    Reply
  29. invistik

    (26)

    Который в localappdata?

    Да в данной папке, иногда, особенно на серверной версии 1с ки, после внезапного отключения сервера, без очистки данных папочек пользователь не может зайти в 1с, чистишь и опа все хорошо, возможно грубо, но за то работает…

    Reply
  30. riposte

    (29) Понятно. Попробую сделать без использования этой либы. Есть мысли.

    Reply
  31. МимохожийОднако

    В описании фраза «В бесплатной версии (обновлятора) можно чистить кэш только одной базы за раз» диссонирует с общим посылом о чистке кэша «по конкретным базам». Чистка требуется один раз и обычно по конкретной базе.

    PS Для разовой очистки кэша обычно пользуюсь дедовским способом: убрать-добавить в список.

    Сделал свою программку-молодец.

    Reply
  32. stas1976

    зачем грузить громадный .net когда делаем файлик типа CleanCache.cmd

    и пишем в нем:

    @FOR /D %%i in («C:Users*») do (

    @FOR /D %%j in («%%iLocal settingsApplication data1C1Cv82????????-????-????-????-????????????») do rd /s /q «%%j»

    @FOR /D %%j in («%%iAppDataRoaming1C1Cv82????????-????-????-????-????????????») do rd /s /q «%%j»

    )

    Reply
  33. vkoljan

    чистка кэша 1С с сохранением настроек и имени последнего пользователя :

    ———————————————————————————————————————-

    rem — сохраняем файлы def.usr и 1cv8strt.pfl из 1С-кэша во временной папке

    robocopy.exe %APPDATA%1C1Cv8 %TEMP%copy_of_1C_cache def.usr 1cv8strt.pfl /S

    rem — чистим 1С-кэш

    rmdir /S /Q %APPDATA%1C1Cv8

    rmdir /S /Q %LOCALAPPDATA%1C

    rem — восстанавливаем файлы def.usr и 1cv8strt.pfl из временной папки в 1С-кэш

    robocopy.exe %TEMP%copy_of_1C_cache %APPDATA%1C1Cv8 def.usr 1cv8strt.pfl /S

    ———————————————————————————————————————-

    просто, надежно .

    Reply
  34. u2b

    (31) У меня точно такая же ошибка. Версия 1.0.1 не запускается, 1.0.1.1 выдает ошибку, но запускается, только окно со списком кешей пустое. .NET ниже 4.6 поставить не могу, так как есть другое ПО, которое его требует.

    Reply
  35. riposte

    (35) Работаю над новой версией, на выходных выдам.

    В ней не будет использоваться ValueTuple и какие-либо подключаемые библиотеки вообще, только .net.

    Привязки к версии .net тут как таковой нет. Просто ValueTuple входит в состав сборки начиная с 4.7, поэтому на более ранних версиях не работает. Поправлю.

    Reply
  36. riposte

    Обновлено.

    Reply
  37. mapt

    Спасибо. Некоторые пользователи и сами теперь смогут почистить ;]

    Reply
  38. Terve!R

    Спасибо за игнор компаний, которые еще работают на WinSrv 2003.

    И ставить всякие фреймворки, которые еще потребуют перезагрузки сервера… ну такое.

    Reply
  39. riposte

    (39)

    Не за что.

    Reply
  40. oldcopy

    (39) А я все ждал, когда они появятся. Дождался.

    Только вот есть вопросы.

    Первый: зачем разработчику в 2019 году тратить время на поддержу давно снятых с поддержки (извиняюсь за тавтологию) систем?

    Второй: Чем не угодил Net? Начиная с Win7 — это неотъемлемая часть системы. В Win 7 — это Net 3.5, в Win8/10 — это 4.х. Единственное, что бы я посоветовал автору — понизить версию Net до 4.0 и сделать отдельную сборку на 3.5, чтобы запускать в Семерке.

    Reply
  41. hercares

    (34) Самое практичное решение, кроме «просто и надежно»

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *