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

24.11.12

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

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

Файлы

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

Наименование Скачано Купить файл
(только для физ. лиц)
Системные переменные
.epf 9,27Kb
48 1 850 руб. Купить

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

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

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


Данная обработка позволяет просматривать установленные системные переменные 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 - работает теперь не только на управляемых но и на обычных формах.

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

См. также

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

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

21.05.2024    36413    dimanich70    83    

155

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

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

1 стартмани

18.03.2024    5517    6    John_d    11    

57

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

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

12.02.2024    42570    atdonya    29    

64

Универсальные функции Программист 1С v8.3 Бесплатно (free)

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

30.11.2023    7177    ke.92@mail.ru    17    

66

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    19512    YA_418728146    8    

174

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    5358    86    progmaster    13    

4

Инструментарий разработчика Универсальные функции 1С v8.3 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 2 1С:Розница 3.0 1С:Документооборот Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    21218    208    sapervodichka    117    

138
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7290 22.11.12 17:26 Сейчас в теме
А че все в табличном виде сразу вычислить нельзя разве?
2. Yury1001 1475 22.11.12 17:36 Сейчас в теме
(1) tormozit, кажыся зреет версия 2.0:)
3. abc2000 83 22.11.12 17:41 Сейчас в теме
(1) tormozit,
В версии 2.0 пожелание будет исполнено.
4. tormozit 7290 22.11.12 17:50 Сейчас в теме
(3) С нетерпением будем ждать версию 2.0!
5. abc2000 83 22.11.12 19:03 Сейчас в теме
(4) Обновил, скачиваем и голосуем.
6. tormozit 7290 22.11.12 19:10 Сейчас в теме
А почему не указываешь для какого пользователя и компьютера получены значения переменных?
7. abc2000 83 22.11.12 19:16 Сейчас в теме
(6) Не понял вопроса. Для разных рабочих станций значения будут разными .
8. tormozit 7290 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 Ответить
Оставьте свое сообщение