1С:Предприятие и системные переменные Windows.

24.11.12

Разработка - Универсальные функции

Данная обработка позволяет просматривать установленные системные переменные Windows.

Файлы

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

Наименование Скачано Купить файл
Системные переменные
.epf 9,27Kb
48 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • Поиск от одного разработчика до ИТ-команд под проект.
  • Обмен любыми контактами разрешён.
  • 0% комиссии, допускаются расчёты напрямую.


Данная обработка позволяет просматривать установленные системные переменные Windows.


Какая же польза от использования системных переменных в 1С спросите Вы у меня ?

Пример №1:

Нам нужно удалить файлы кэша IE.
Как это сделать средствами 1С.

// Удалим в каталоге все файлы JS

Попытка УдалитьФайлы(КаталогКэша, "*.js");
   Исключение
        #Если Клиент Тогда
            Сообщить(ОписаниеОшибки());
        #КонецЕсли
КонецПопытки;


Переменная КаталогКэша у меня будет равна "C:\Users\Администратор\AppData\Local\Microsoft\Windows\Temporary Internet Files";

У Васи "C:\Users\Vasya\AppData\Local\Microsoft\Windows\Temporary Internet Files";
У Пети "C:\Users\Peter\AppData\Local\Microsoft\Windows\Temporary Internet Files";

И вот тут на помощь приходит системная переменная %LOCALAPPDATA%, т.е. можно для каждого пользователя можно записать

КаталогКэша = "%LOCALAPPDATA%\Microsoft\Windows\Temporary Internet Files";

Тут правда возникает еще одна проблема, дело в том что 1С не поймет такой путь.
И тут нам на помощь приходит старый добрый Windows Script Host.


Shell = Новый COMОбъект("WScript.Shell");
LOCALAPPDATA = Shell.ExpandEnvironmentStrings("%LOCALAPPDATA%");
КаталогКэша = LOCALAPPDATA + "\Microsoft\Windows\Temporary Internet Files";


Пример №2:

Например, возникла потребность удалить или скопировать настройки пользователей 1С.

Для Win 7 настройки хранятся в каталогах:

%userprofile%\AppData\Roaming\1C\1Cv82
%userprofile%\AppData\Local\1C\1Cv82

У меня полный путь выглядет так:
C:\Users\Администратор\AppData\Local\1C\1Cv82\

Соответственно получить путь к настройкам:

Shell = Новый COMОбъект("WScript.Shell");
APPDATA = Shell.ExpandEnvironmentStrings("%APPDATA%");
КаталогНастроек = APPDATA + "\1C\1Cv82";

 

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


P. S. По многочисленным просьбам добавил версию 2.0. Функционал тот же, отличается только тем, что все значения отображает в табличном поле.

UPD: Версия 2.1 - работает теперь не только на управляемых но и на обычных формах.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    4673    Abysswalker    11    

46

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

Порой необходимо временно отключить расширение 1С, не удаляя его, чтобы не потерять данные. Но в этом случае при каждом запуске всем будет лезть уведомление о неактивном расширении, хотя очевидно, это техническая информация, которой не стоит лишний раз пугать пользователей.

14.05.2025    8675    DeerCven    15    

62

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

21.05.2024    56767    dimanich70    85    

174

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    7995    7    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    71315    atdonya    31    

72

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    9993    ke.92@mail.ru    17    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7373 22.11.12 17:26 Сейчас в теме
А че все в табличном виде сразу вычислить нельзя разве?
2. Yury1001 1477 22.11.12 17:36 Сейчас в теме
(1) tormozit, кажыся зреет версия 2.0:)
3. abc2000 83 22.11.12 17:41 Сейчас в теме
(1) tormozit,
В версии 2.0 пожелание будет исполнено.
4. tormozit 7373 22.11.12 17:50 Сейчас в теме
(3) С нетерпением будем ждать версию 2.0!
5. abc2000 83 22.11.12 19:03 Сейчас в теме
(4) Обновил, скачиваем и голосуем.
6. tormozit 7373 22.11.12 19:10 Сейчас в теме
А почему не указываешь для какого пользователя и компьютера получены значения переменных?
7. abc2000 83 22.11.12 19:16 Сейчас в теме
(6) Не понял вопроса. Для разных рабочих станций значения будут разными .
8. tormozit 7373 22.11.12 19:35 Сейчас в теме
(7) Это если переменные на клиенте вычисляются.
9. abc2000 83 22.11.12 19:41 Сейчас в теме
(8) Это Вы к тому , потому что в версии 2.0 получение переменных происходит внутри процедуры помеченной директивой &НаСервере ?
10. abc2000 83 22.11.12 19:59 Сейчас в теме
Сервера у меняя нет, только файловая версия, потому проверить не могу. Вставил код в процедуру с директивой &НаКлиенте.
11. pvl_mksv 20 16.04.13 15:06 Сейчас в теме
12. testpilot24 30.09.21 14:50 Сейчас в теме
Есть еще такой вариант получения переменных среды без использования ком объекта. Но через файловый костыль. И работает только на клиенте

Функция ПрочитатьПеременныеСреды() Экспорт

	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt");
	СИ = Новый СистемнаяИнформация();	
	ЭтоLinux = СИ.ТипПлатформы = ТипПлатформы.Linux_x86 ИЛИ СИ.ТипПлатформы = ТипПлатформы.Linux_x86_64;
	ЭтоMacOS = СИ.ТипПлатформы = ТипПлатформы.MacOS_x86 ИЛИ СИ.ТипПлатформы = ТипПлатформы.MacOS_x86_64;
	ЭтоWindows = СИ.ТипПлатформы = ТипПлатформы.Windows_x86 ИЛИ СИ.ТипПлатформы = ТипПлатформы.Windows_x86_64;

	Если ЭтоLinux ИЛИ ЭтоMacOS Тогда
		КомандаСистемы("env > """ + ИмяВременногоФайла + """");
	ИначеЕсли ЭтоWindows Тогда	
		КомандаСистемы("set > """ + ИмяВременногоФайла + """");
	Иначе	
		Возврат Null; //неизвестная платформа
	КонецЕсли;

	СоотвествиеПеременные = Новый Соответствие();
	
	Попытка
		
		ДанныеФайл = Новый ЧтениеТекста(ИмяВременногоФайла, КодировкаТекста.UTF8);
		
		Пока Истина Цикл
			
			ДанныеСтрока = ДанныеФайл.ПрочитатьСтроку();
			
			Если ДанныеСтрока = Неопределено Тогда
				Прервать;
			КонецЕсли;	
			
			Разделитель = СтрНайти(ДанныеСтрока, "=");
			ИмяПеременной = Лев(ДанныеСтрока, Разделитель - 1);
			ЗначениеПеременной = Сред(ДанныеСтрока, Разделитель + 1);
			
			Если Не ПустаяСтрока(ИмяПеременной) Тогда
				СоотвествиеПеременные.Вставить(ИмяПеременной, ЗначениеПеременной);
			КонецЕсли;
			
		КонецЦикла;
		
		ДанныеФайл.Закрыть();
		
	Исключение
		Возврат Null; //если не смогли считать файл то все плохо
	КонецПопытки;
	
	//пробуем почистить за собой
	Попытка
		УдалитьФайлы(ИмяВременногоФайла);
	Исключение
	КонецПопытки;

	Возврат Новый ФиксированноеСоответствие(СоотвествиеПеременные);

КонецФункции
Показать
BigB; begemot; Onaisoft; platonov.e; user747134; Zeskord; VGHOST; +7 Ответить
Для отправки сообщения требуется регистрация/авторизация