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

24.11.12

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

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

Скачать файл

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

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


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

153

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

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

1 стартмани

18.03.2024    5080    6    John_d    11    

57

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

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

12.02.2024    36084    atdonya    29    

62

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

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

30.11.2023    6694    ke.92@mail.ru    17    

66

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

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

28.08.2023    18380    YA_418728146    8    

172

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

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

2 стартмани

22.08.2023    4933    80    progmaster    11    

4

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

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

1 стартмани

13.10.2022    20027    192    sapervodichka    113    

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