Получение IP компьютера, имя компьютера, имя пользователя и домена в сеансе 1С.
Скачать файл
ВНИМАНИЕ:
Файлы из Базы знаний - это исходный код разработки.
Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы.
Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных.
Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
При удаленном работе с пользователями (например через R-admin), для подключения к компьютеру необходимо что бы пользователь сообщил свой IP. Можно, конечно, вытянуть эту информацию и стандартными способами, но порой сложно объяснить бухгалтеру как это сделать. Данная обработка позволяет нажатием кнопки получить нужные сведения в режиме 1С.
Кроме того, ее можно рассматривать как пример работы с wscript.network
Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя.
Решение в Реестре отечественного ПО
Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.
Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2
Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).
Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!
Многие сталкиваются с проблемой когда изображения, находящиеся в базе разные по объему и размерам. Менеджеры могут добавить файлы в очень высоком разрешении, объемом свыше 20 Мегабайт.
База данных становится слишком большой, выгрузка на сайт идёт медленно и требуется много место на хостинге.
Как сжать картинки и уменьшить размер базы 1С?
Это можно сделать с помощью данной обработки.
Существует возможность выбрать различные варианты для того чтобы уменьшить картинки: в разы, в процентах от первоначального объема, а также сделать картинки одинаковой ширины.
В результате размер базы 1С значительно сократится (в зависимости от количества и размера картинок), а изображения станут небольшого объема, равными по ширине, почти без потери качества.
Работает на управляемых формах для УТ 11, КА, ERP.
В процессе работы возникла необходимость управления последовательностями в разрезе измерений. Штатные возможности не позволяют этого сделать. Но бывает очень необходимо восстановить последовательность только по одному измерению (например, подразделению, организации и т.д.).
(Возможность покупки за рубли и StartMoney).
Да и ну и до кучи, как верно было замечено в (3), можно через WMI, пример:
// Host,Mac,User,IP
// Для локального компьютера IP_Host = "."
Функция ПолучитьСетевыеПараметры(IP_Host) Экспорт
Попытка
Структура = Новый Структура("Host,Mac,User,IP");
ServicesSet = GetComObject("winmgmts:{impersonationLevel=impersonate}!\\" + СокрЛП(IP_Host) + "\root\cimv2");
// Host, UserName
Items = ServicesSet.ExecQuery("SELECT UserName,Name FROM Win32_ComputerSystem");
Для каждого Item Из Items Цикл
Структура.Host = СокрЛП(Item["Name"]);
Структура.User = СокрЛП(Item["UserName"]);
Прервать;
КонецЦикла;
Если ПустаяСтрока(Структура.Host) Тогда
Возврат Неопределено;
КонецЕсли;
// MACAddress
Items = ServicesSet.ExecQuery("SELECT MACAddress FROM Win32_NetworkAdapter WHERE NetConnectionStatus=2");
Для каждого Item Из Items Цикл
Если СокрЛП(Item["MACAddress"]) <> "" Тогда
Структура.Mac = СокрЛП(Item["MACAddress"]);
Прервать;
КонецЕсли;
КонецЦикла;
// IPAddress
Items = ServicesSet.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress='" + Структура.Mac + "'");
Для Каждого objItem Из Items Цикл
Если ТипЗнч(objItem.IPAddress) = Тип("COMSafeArray") Тогда
Для Каждого Элем Из objItem.IPAddress Цикл
Структура.IP = Элем;
Прервать;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат Структура;
Исключение
Возврат Неопределено;
КонецПопытки;
КонецФункции // ПолучитьСетевыеПараметры()
Показать
Это, конечно, просто выдранный кусок, но тоже рабочий.
Обработка для 8.1 но через конфигуратор 8.2. можно легко перекодировать.
Что касается объема информации - то ее делали имено что бы бухгалтер мог легко и просто сказать IP - поэтому не стали перегружать излишними данными.
Работает в 8.1. В моем случае у юзеров было несколько сетевых устройств (VPN, локалка и спутник). Чтобы выбрать все возможные IP, можно просто убрать "преравать" в процедуре Получить_ip.
Имхо, на публикацию не тянет. Чем качать, да еще и непонятно что внутри, было бы гораздо интересней если бы был описан сам подход к решению задачи, ну и оформить все это дело по уму, показать пару-тройку примеров, вот тогда бы было гуд.
Что касается статьи - стыдно признаться я не знаю как это делается. Разберусь - буду писать статьи. Мне самому обычно удобнее рассматривть готовые (работоспособные) обработки (которые можно запустить и оттрасировать). В наивности думал, что и остальным так удобнее, чем просмтртивать здоровые листинги.
Что касается плюсов, то не я придумывал правила этого форума. Я всего лишь им следую. И эти плюсы использую для скачки интересующих меня обработок. Так что да, получил, и благодарен за них.
Ну так пишите с помощью чего это можно получить, а то вот запущу вашу обработку в толстом клиенте на linux и скажу "Ааа, не работает!".
Если видео смотрели, то должны были увидеть утилитку которая генерит код (распространяеться микрософтом бесплатно).
Вот написали качаем от сюда программу, документацию, смотрим как сформировать правильный запрос, переносим это в 1С и получаем результат. Как пример для чего необходимо - вот лежит обработка получающая IP компьютера, имя компьютера, имя пользователя и домена в сеансе 1С.
P.S.: вот есть обработка, подскажите где можно увидеть другие параметры, получить другие данные?
:) Обновите публикацию, допишите где вы взяли, как нашли такой запрос, а то извините смотришь на код, вау шаманство и откуда люди это знают, наверное днями и ночами не спять dll декомпилируют?
Процедура Получить_network()
WSH = Новый COMobject("wscript.network");
ИмяКомпьютера = WSH.ComputerName;
ИмяПользователя = WSH.UserName;
ДоминПользователя = WSH.UserDomain;
КонецПроцедуры
Процедура Получить_ip()
IP = "";
MACAddress = Неопределено;
ИПАдрес = "";
ServicesSet = ПолучитьCOMОбъект("winmgmts:\\localhost\root\cimv2");
MyItems = ServicesSet.ExecQuery("Sel ect * Fr om Win32_NetworkAdapterConfiguration Where IPEnabled = True");
Для Каждого MyItem Из MyItems Цикл
MACAddress = MyItem.MACAddress;
Если ЗначениеЗаполнено(MACAddress) Тогда
IPAddress = Неопределено;
Для Каждого IPAddress Из MyItem.IPAddress Цикл
Если ЗначениеЗаполнено(IPAddress) Тогда
IP = IPAddress;
прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика.
Получить_network();
Получить_ip();
КонецПроцедуры
Показать
На решение наткнулся где-то на форумах в инетернете, когда копался в даном направлении. На исключительное авторство алгоритма и кода не претендую :)
Давайте тогда уж я дополню, а вы в статью отредактируете.
На решение наткнулся где-то на форумах в инетернете, когда копался в даном направлении.
Для того, что бы не искать это на форумах, достаточно скачать с сайта microsoft программку "Scriptomatic2.exe", данная программа генерит код на js, vbs, python для таких запросов. Если вы ее скачаете и посмотрите на код который она создает и код представленный в (18) то можно будет увидеть аналогию и спокойно получить эти данные в 1С.
Пример кода, который она генерит для задач в (18) вот:
var wbemFlagReturnImmediately = 0x10;
var wbemFlagForwardOnly = 0x20;
var arrComputers = new Array("LOCALHOST");
for (i = 0; i < arrComputers.length; i++) {
WScript.Echo();
WScript.Echo("==========================================");
WScript.Echo("Computer: " + arrComputers[i]);
WScript.Echo("==========================================");
var objWMIService = GetObject("winmgmts:\\\\" + arrComputers[i] + "\\root\\CIMV2");
var colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterSetting", "WQL",
wbemFlagReturnImmediately | wbemFlagForwardOnly);
var enumItems = new Enumerator(colItems);
for (; !enumItems.atEnd(); enumItems.moveNext()) {
var objItem = enumItems.item();
WScript.Echo("Element: " + objItem.Element);
WScript.Echo("Setting: " + objItem.Setting);
}
}
мне пока еще такая обработка не пригождалась, но я думаю в будущем вполне возможно, что будет полезно. сколько интересных вещей можно найти на этом сайте. что ж, спасибо!
(21) Mudrii_Gankster, А если терминал с внешним IP (на удаленном от офиса серваке), то IP или Имя компа с которого подконектились в RDP будет бесполезной информацией
Когда-то хотел написать монитор для 1С7, чтобы он видел пользователя, и его ip, именно клиентский. Монитор так и не написал, а вот скрипт нашел, пользуйтесь) Для просмотра работы скрипта сохраните его в текстовый файл *.vbs
Dim Shell, DesktopPath, URL, Text
strComputer = "."
Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2")
Set IPConfigSet = objWMIService.ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration where ipenabled = true")
Set HostNameSet = objWMIService.ExecQuery("Select DNSHostName from Win32_NetworkAdapterConfiguration where ipenabled = true")
For Each obj in HostNameSet
Text = "Имя компьютера: " & obj.DNSHostName & VbCrLf
Next
Text = Text & VbCrLf
for each IPConfig in IPConfigSet
if Not IsNull(IPConfig.IPAddress) then
for i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
Text = Text & "Ваш IP: " &IPConfig.IPAddress(i)& VbCrLf
next
end if
next
if session <> "Console" then
getIP(remotepc)
end if
Text = Text & VbCrLf & "Пользуйтесь на здоровье!"
WScript.Echo Text
function getIP(strComputer)
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
Text = Text & VbCrLf & "Терминальная сессия с:" & VbCrLf
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
Text = Text & VbCrLf & "Host: " & strComputer & " IP: " & IPConfig.IPAddress(i)
Next
End If
Next
Text = Text & VbCrLf
end function
Месье, я за то, чтобы подобные вещи в виде статьи были - кому надо, используют опыт и сделают обработку/процедуру в своей системе.
Но не надо же издеваться над народом - чтобы посмотреть, как это сделано, надо скачать.
(0) Автор, есть некий этикет. Об нём намекали. Говорили прямо.
Лично МНЕ не жалко самому зафигачить пару-тройку макросов на js, vbs или wsh и прикрутить их к 1С.
Но нужно уважать сообщество.
Повторю прямо - допиши текст статьи. А пока минус. Исправишь - мой минус превратится в плюс.
vladal происходил из испанской семьи крещёных евреев[2] и приходился племянником кардиналу Джорджи (исп.)русск., также крещеному еврею. Историк той эпохи pumbaE (исп.)русск. пишет о vladal, что "его дед и бабка были из рода обращенных в нашу святую веру 1С".
Получив специалиста по 1С и отличаясь аскетическими наклонностями, vladal поступил в infostart, в 20.. году стал Профессиональный разработчиком.
Главной задачей vladal было религиозное и политическое объединение infostart. Для достижения этой цели он реорганизовал и расширил деятельность модераторов. В 1483 году vladal был назначен «великим инквизитором».
А теперь вопрос сложней, мож кто знает.
Нужно получить внешний ИП адрес клиента, который подключился через ВЕБ.
Через winmgmts определяются только локальные адреса...