Работа с PowerShell из 1С

Опубликовал blackhole321 в раздел Программирование - Внешние компоненты

Библиотека позволяет выполнять фрагменты кода PowerShell из 1С, аналогично встроенной процедуре Выполнить. Имеется возможность передавать параметры, возвращать результаты выполнения, генерировать внешние события, а также отслеживать ошибки выполнения кода PowerShell.
Библиотека оформлена в виде подсистемы.  

 

При создании прикладных решений, периодически возникает необходимость в использовании расширенных функций администрирования и управления ОС (интеграция решения с Active Directory, поучение расширенной информации о системе), а также программными продуктами, такими как Microsoft Exchange, Lync Server и т. п. В настоящее время, основным инструментом, для решения подобных задач является среда PowerShell, однако "нативный" доступ к этой среде из 1С отсутствует. Конечно существует возможность запуска скриптов, однако зачастую этого не достаточно.

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

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

Библиотека расчитана на использование с платформами 8.2, 8.3, однако после модификации конфигурации (обработка написана для управляемых форм) и с платформой 8.1.

Разработку можно протестировать online 

Сведения

Версия 1.3.088

Исправлена ошибка при загрузке компонента в Web-клиенте. При загрузке компонента в Web-клиенте появляется диалог выбора файла.

Версия 1.3.085

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

Версия 1.3.078

Переработан механизм автоматического определения порта при загрузке компонента. Изменен список параметров функции ЗагрузитьКомпонент.

Версия 1.3.004

Увеличен размер выполняемого кода PowerShell, а также передаваемых параметров. Метод ВыполнитьPowerShell использует POST запрос.

Добавлена возможность работы с относительными URL.

Исправлено появление исключения, если результаты содержат последовательность &#x0

Версия 1.2.001

Добавлен механизм генерации внешних событий из кода PowerShell.

Версия: 1.1.006

Добавлены функции, делающие более удобным использование компонента.

Исправлена ошибка неполной сериализации возвращаемых результатов, при использовании некоторых модулей PowerShell.

Версия: 1.1.003

Добавлена возможность работы в web-клиенте.

Оптимизировано быстродействие работы некоторых участков кода.

Исправлена ошибка получения информации об ошибке при работе с PowerShell 2.0

Исправлена ошибка при загрузке компонента на низкопроизводительных устройствах.

Причины купить

Вашему прикладному решению необходим досуп к расширеным функциям администрирования и управления ОС Windows, а также других продуктов Microsoft (Exchange, Lync и др.)

Вашему прикладному решению необходим доступ к возможностям .NET

Достоинства

  • Не требуется установка и регистрация дополнительных компонентов. Все, что требуется - уже есть в ОС
  • Возможность работы как на стороне клиента так и на стороне сервера
  • Поддержка выполнения на 64-битных ОС
  • Открытый код
  • Наличие интерактивной справки

Файлы

Наименование Файл Версия Размер Кол. Скачив.
Работа с PowerShell из 1С v 1.3.088
20.12.2015
1001 руб.

Моментальная
доставка

См. также

Лучшие комментарии

4. blackhole321 11.05.2014 12:08
С прошедшими праздниками и спасибо за конструктив!
Да, Вы правы, хороший, простой, бесплатный компонент.
Если коротко, то отличия в следующем:
Используемые технологии
Приведенный Вами компонент по всей видимости представляет собой библиотеку на .net, оформленную как com компонет, которая является оберткой к System.Management.Automation.Powershell
Библиотека из публикации представляет собой простенький web сервер, написанный на PowerShell ( http://www.poshserver.net/ или вот попроще https://gist.github.com/wagnerandrade/5424431 ) и код 1с для взаимодействия с ним.
Начальная установка
v3 x86 не поддеживается установка на ОС младше 8.1.
v4 пока нет.
Для установки требуются административные права.
При установке x86 компонента на x64 ОС после выполнения установки необходимо создавать COM+ приложение.
Ну и всякие другие ньюансы, типа http://www.sapien.com/forums/viewtopic.php?f=10&t=6841
В случае библиотеки из публикации, никаких действий по установке не требуется.
Кэширование на уровне сессии и между сессиями
Периодически возникают задачи, в которых необходимо кэширование компонента на уровне пользовательского сеанса и между сеансами (к примеру в случае выполнения на сервере с использованием регламентных заданий и выполнения асинхронных вызовов).
В силу того, что приведеный Вами компонент является com объектом, имеются некоторые сложности с реализацией этого функционала. К сожалению, решения предложенные в
http://infostart.ru/public/62410/ и http://www.forum.mista.ru/topic.php?id=490740 для данного com объекта похоже не работают.
В случае использования опубликованной библиотеки кэширование осуществляется достаточно просто в силу того, что кэшируется не компонент, а фактически параметры подключения. По классификации из http://infostart.ru/public/182414/ - это кэширование на веб сервере.
Работа в кластере серверов
В силу того, что приведенный Вами компонент является com объектом, при использовании компонента на сервере, переход пользовательского сеанса или регламентного задания на другой сервер вызовет определенные проблемы.
В случае опубликованной библиотеки есть возможность вынести веб сервер на отдельный сервер/компьютер (придется внести небольшие изменения в код) и при переходе максимум, что может быть потеряно - это результаты последнего вызова. К тому же, наверное это наиболее правильный вариант при использовании на стороне сервера, т. к. установка различных компонентов на сервера приложений 1С допустимый, однако не самый лучший вариант.
Вот как то так.
Конечно, если приведенные отличия не являются критичными, то смысла в использовании библиотеки конечно же нет.
+ 2 [ alevnev; cool.vlad4; ]
# Ответить
16. engineer74 02.08.2015 21:31
Для люде, пока незнающих, возможности PowerShell было бы неплохо приводить практические интересные примеры. Тогда может и продажи величатся.
+ 1 [ v.a.ryag; ]
# Ответить
5. donyab 14.07.2015 13:05
Купили данную доработку.
Все работает.
В приведенных примерах код работает на стороне клиента, 5и минутной перепиской перенес выполнение кода на сервер, запуск службы сервера 1с сделал от доменного пользователя с правами на создание пользователей и папок - теперь юзеры в АД создаются автоматом с нужными правами.
Разработчик отвечал на возникающие вопросы оперативно и очень подробно.
Я добавил в свою конфу справочник скриптов содержащий скрипт и параметры, которые теперь отрабатывают.
Единственное - админ передачу параметров смог в скриптах сделать только через $args, что в принципе без разницы - главное работает.
Большое спасибо.
Ответили: (6)
+ 1 [ SiAl; ]
# Ответить

Комментарии

1. ksuman 30.04.2014 15:56
Как администратор системы и программист в 1С со стажами: последнее чтобы я доверил 1С-программе, это выполнять системные скрипты, тем более в такой самодостаточной среде, как PowerShell.

Считаю данный механизм банальным, а пример неудачным: зачем вообще складывать строки в чужеродной среде, когда 1С хорошо это делает сама ещё с первых версий.
# Ответить
2. blackhole321 30.04.2014 21:33
Уважаемый ksuman,
Если Вы имели ввиду пример написания кода из первого скриншота,то его основная цель - показать простой пример использования библиотеки, а именно:
Выполнение фрагмента кода PowerShell из 1С
Передача параметров в выполняемый код
Возврат результатов выполнения
И в мыслях не было использовать PowerShell для сложения строк в 1С :). Однако поскольку у Вас сложилось такое впечатление, возможно пример не очень удачный.
А что на Ваш взгляд должно быть в примере?
Вот Вам другой пример (почти из жизни :)):
Вы пишите очередное автоматическое добавление пользователей ИБ из AD и Вам необходимо получить список пользователей AD, у которых
свойство Name содержит определенную подстроку. В случае PowerShell, можно выполнить примерно следующий код:

param (
$substr
)
Get-ADUser -Filter {Name -like $substr} | select Name

Меняем текст PowerShell из примера со скриншота на этот и собственно все готово.
Как бы Вы решили эту задачу?

С наилучшими пожеланиями и хороших праздников!
# Ответить
3. cool.vlad4 08.05.2014 20:31
Зачем покупать, когда есть бесплатный activex от sapien. надо просто зарегистрироваться и скачать http://www.sapien.com/auth/other/downloads . хотя может ваша штука круче, но из описания абсолютно непонятно.
# Ответить
4. blackhole321 11.05.2014 12:08
С прошедшими праздниками и спасибо за конструктив!
Да, Вы правы, хороший, простой, бесплатный компонент.
Если коротко, то отличия в следующем:
Используемые технологии
Приведенный Вами компонент по всей видимости представляет собой библиотеку на .net, оформленную как com компонет, которая является оберткой к System.Management.Automation.Powershell
Библиотека из публикации представляет собой простенький web сервер, написанный на PowerShell ( http://www.poshserver.net/ или вот попроще https://gist.github.com/wagnerandrade/5424431 ) и код 1с для взаимодействия с ним.
Начальная установка
v3 x86 не поддеживается установка на ОС младше 8.1.
v4 пока нет.
Для установки требуются административные права.
При установке x86 компонента на x64 ОС после выполнения установки необходимо создавать COM+ приложение.
Ну и всякие другие ньюансы, типа http://www.sapien.com/forums/viewtopic.php?f=10&t=6841
В случае библиотеки из публикации, никаких действий по установке не требуется.
Кэширование на уровне сессии и между сессиями
Периодически возникают задачи, в которых необходимо кэширование компонента на уровне пользовательского сеанса и между сеансами (к примеру в случае выполнения на сервере с использованием регламентных заданий и выполнения асинхронных вызовов).
В силу того, что приведеный Вами компонент является com объектом, имеются некоторые сложности с реализацией этого функционала. К сожалению, решения предложенные в
http://infostart.ru/public/62410/ и http://www.forum.mista.ru/topic.php?id=490740 для данного com объекта похоже не работают.
В случае использования опубликованной библиотеки кэширование осуществляется достаточно просто в силу того, что кэшируется не компонент, а фактически параметры подключения. По классификации из http://infostart.ru/public/182414/ - это кэширование на веб сервере.
Работа в кластере серверов
В силу того, что приведенный Вами компонент является com объектом, при использовании компонента на сервере, переход пользовательского сеанса или регламентного задания на другой сервер вызовет определенные проблемы.
В случае опубликованной библиотеки есть возможность вынести веб сервер на отдельный сервер/компьютер (придется внести небольшие изменения в код) и при переходе максимум, что может быть потеряно - это результаты последнего вызова. К тому же, наверное это наиболее правильный вариант при использовании на стороне сервера, т. к. установка различных компонентов на сервера приложений 1С допустимый, однако не самый лучший вариант.
Вот как то так.
Конечно, если приведенные отличия не являются критичными, то смысла в использовании библиотеки конечно же нет.
+ 2 [ alevnev; cool.vlad4; ]
# Ответить
5. donyab 14.07.2015 13:05
Купили данную доработку.
Все работает.
В приведенных примерах код работает на стороне клиента, 5и минутной перепиской перенес выполнение кода на сервер, запуск службы сервера 1с сделал от доменного пользователя с правами на создание пользователей и папок - теперь юзеры в АД создаются автоматом с нужными правами.
Разработчик отвечал на возникающие вопросы оперативно и очень подробно.
Я добавил в свою конфу справочник скриптов содержащий скрипт и параметры, которые теперь отрабатывают.
Единственное - админ передачу параметров смог в скриптах сделать только через $args, что в принципе без разницы - главное работает.
Большое спасибо.
Ответили: (6)
+ 1 [ SiAl; ]
# Ответить
6. nickpugachev 14.07.2015 20:43
(5) donyab, 1С слишком опасная штука, чтобы доверять ей такие действия. Не боитесь случайно получить непонятного пользователя с правами Enterprise Admin?
Ответили: (7) (8)
# Ответить
7. blackhole321 15.07.2015 11:18
(6) nickpugachev, Возможность возникновения описанной Вами ситуации будет определяться правами пользователя из под которого выполняется код PowerShell в Active Directory. Используйте принцип наименьших привилегий для исключения подобных ситуаций.
Ответили: (10)
# Ответить
8. donyab 15.07.2015 12:50
(6) nickpugachev,
Опасность любого инструмента определяется умением им пользоваться.
Я ножом нарезаю мясо, а могу оттяпать пол руки, но пока печатаю это сообщение с двух рук ;)
Ответили: (10)
# Ответить
9. donyab 15.07.2015 12:51
+ делегирование обязанностей - скрипты для PS пишет админ))
# Ответить
10. nickpugachev 15.07.2015 17:04
(7) blackhole321, как вы сделаете это на 1С? если один скрипт должен идти с правами EA, а другой - с обычного пользователя?
(8) donyab, поломать 1с значительно проще, чем поломать kerberos. вы думаете, что у вас рукоятка ножа деревянная, а она из поролона.
Ответили: (11)
# Ответить
11. blackhole321 16.07.2015 10:15
(10) nickpugachev, Относительно действий, которые было бы удобно выполнять из 1С:Предприятие и одновременно требующих для своего выполнения прав ЕА что-то сходу не припоминаю. Если Вы дадите конкретный пример, можно будет его предметно обсудить.
В общем случае, для выполнения командлетов с правами, отличными от прав текущего пользователя используется параметр Credential, значение которого Вы можете сформировать на основе логина и пароля.
Собственно права в AD или на доступ к каким либо ресурсам определяются правами пользователя, из под которого запущена библиотека. В случае выполнения на клиенте - это права пользователя ОС на клиентском компьютере. Полагаю, что в этом случае никаких проблем с безопасностью нет. При выполнении на сервере - это будут права пользователя ОС, из под которого запущена служба сервера 1С:Предприятие. Таким образом получается, что все пользователи информационных баз на данном сервере 1С:Предприятие обладают правами аккаунта сервиса 1С:Предприятие, и как Вы правильно заметили, это действительно является проблемой. В этом случае можно запускать серверную часть компонента от имени отдельного аккаунта (возможно на отдельно выделенном сервере). Тогда, права на выполнение кода PowerShell получат только пользователи, прошедшие проверку подлинности и авторизованные на серверной части компонента. Соответственно механизм авторизации Вам будет необходимо реализовать самостоятельно.
Ответили: (12)
# Ответить
12. nickpugachev 16.07.2015 17:39
(11) blackhole321, В качестве примера - конфигурации на тему ITIL и т.п.
проблема именно в варианте исполнения сервером. хранение явок-паролей для доступа к стронним сервисам в 1С - тоже не самый красивый вариант :).

для админов-халявщиков есть RSAT, весьма удобная игрушка.
Ответили: (13)
# Ответить
13. blackhole321 16.07.2015 20:11
(12) nickpugachev,
Честно говоря, с конфигурацией ITIL знаком очень поверхностно, поэтому мне сложно судить о механизмах, используемых в ней, а также о необходимых правах, однако полагаю, что основная масса операций не требует таких высоких привилегий как EA. Собственно поэтому и попросил Вас конкретизировать Ваше утверждение.
Относительно безопасности при выполнении на сервере - все определяется соотношением рисков и получаемых выгод/удобств. Даже в случае выполнения из под аккаунта сервиса 1С:Предприятие, запрет на интерактивное открытие внешних обработок/отчетов для обычных пользователей, совместно с проверкой на членство в определенной роли перед выполнением кода PowerShell, приведет к снижению рисков. Да и что получит злоумышленник, создав обычного пользователя, у которого в зависимости от членства в группах на рабочем столе появятся те или иные ярлыки? В свою очередь компания получит экономию времени сотрудников на выполнении рутинных операций.
хранение явок-паролей для доступа к сторонним сервисам в 1С - тоже не самый красивый вариант :).
Есть основания полагать,что действие, требующее повышения прав и выполняемое автоматически (т.е. без интерактивного участия человека), так или иначе требует хранения учетных данных аккаунта, обладающего этими правами (в базе 1С, хранилище учетных данных, на смарт-карте, в реестре, либо где либо еще). В общем случае, хранение учетных данных в базе 1С не так страшно, если Вы к примеру зашифруете их с помощью сертификата.

для админов-халявщиков есть RSAT, весьма удобная игрушка.

Это не игрушка, а один из основных инструментов администрирования :), который включает в себя в том числе и соответствующие модули PowerShell.
Ответили: (14)
# Ответить
14. nickpugachev 19.07.2015 16:35
(13) blackhole321, EA согласен, слишком редко нужен, но это та группа, которая позволит пользователю устроить армагеддончик в рамках отдельного лесочка. А вот для того, чтобы сделать пользователя EA права EA не особо нужны, особенно в организации с одним доменом в лесу.
Маленький домен и не особо аккуратный админ (99% малых-средних компаний) плюс запуск PS из 1С с достаточными правами - вот и дырка.

В общем случае, хранение учетных данных в базе 1С не так страшно, если Вы к примеру зашифруете их с помощью сертификата.

таки кто бы был против :), только кто это делать будет? сколько поднятых PKI в организациях до 100 пользователей вы видели?

Это не игрушка, а один из основных инструментов администрирования :), который включает в себя в том числе и соответствующие модули PowerShell

именно
Ответили: (15)
# Ответить
15. blackhole321 20.07.2015 09:47
(14) nickpugachev,

[IS-QUOTE]А вот для того, чтобы сделать пользователя EA права EA не особо нужны, особенно в организации с одним доменом в лесу.
[/IS-QUOTE]

Конечно могу ошибаться, однако если мне не изменяет память, управлять членством в этой группе могут члены группы Administrators на контроллере домена, а также администраторы домена. Эти группы и так обладают очень большими привилегиями и все написанное о группе EA также справедливо и для этих групп.

Маленький домен и не особо аккуратный админ (99% малых-средних компаний) плюс запуск PS из 1С с достаточными правами - вот и дырка.

таки кто бы был против :), только кто это делать будет? сколько поднятых PKI в организациях до 100 пользователей вы видели?


Думаю, в большинстве случаев Вы абсолютно правы и получается, что Ваши слова только подтверждают мнение donyab

Опасность любого инструмента определяется умением им пользоваться.
# Ответить
16. engineer74 02.08.2015 21:31
Для люде, пока незнающих, возможности PowerShell было бы неплохо приводить практические интересные примеры. Тогда может и продажи величатся.
+ 1 [ v.a.ryag; ]
# Ответить
17. Aspirant 29.09.2015 12:34
Библиотека для работы с SSH сюда входит?
# Ответить
18. blackhole321 29.09.2015 23:09
Нет, не входит, она является просто примером и Вы можете ее скачать по ссылке в соответствующей статье. К сожалению на сколько я понимаю, выложить что-либо бесплатно в настоящее время нельзя.
# Ответить
19. gorshkov.an 06.10.2015 16:05
Очень понравилось.
По возникшим вопросам получили исчерпывающую консультацию и даже больше.
Из недостатков хотелось бы отметить пару моментов.
  • Нет описания, как начать. Если будет - даже чайникам будет полезно. Сейчас нужен определённый уровень подготовки. Хотя, ничего сложного нет.
  • Сервер сканирует порты. Много. Неспеша. Так случилось, что на машине, где я стартовал систему, всё было закрыто. Внешне 1С тупо висит.
  • Ну и последнее. Небольшой баг. В описании функции ВыполнитьPowerShell параметр Параметры объявлен как необязательный, однако в самом вызове он обязателен.

В остальном - просто шикарная игрушка.
Автору - респект и благодарность.
Ответили: (20)
# Ответить
20. blackhole321 07.10.2015 13:29
(19) gorshkov.an,
Огромное спасибо за конструктивную критику!
Относительно документации - наверное Вы правы, надо что-то придумать :).
Механизм загрузки переработан в соответствии с Вашим замечанием и сейчас находится в стадии тестирования, однако по оценочным данным загрузка не будет быстрее, чем 1-1.5 сек.
Относительно функции ВыполнитьPowerShell - Вы можете не передавать ничего (даже пустого массива) как аргумент Параметры, однако да, запятую поставить надо.
# Ответить
21. Xershi 19.10.2015 10:55
Я так понял есть 3 варианта работы с PowerShell в 1С на текущий момент.
1) Установить бесплатный activex от sapien. И работать по COM.
2) Ваша разработка.
3) Самому сделать web сервер и написать код в 1C для взаимодействия.
Ответили: (22) (24)
# Ответить
22. blackhole321 19.10.2015 11:30
(21) Xershi,
Ну типа того. Можно еще самому написать COM объект etc.
Ответили: (23)
# Ответить
23. Xershi 19.10.2015 11:34
(22) blackhole321, а на чем его пишут?
Ответили: (25) (26)
# Ответить
24. nickpugachev 19.10.2015 11:48
(21) Xershi, можно еще просто записывать скрипт и выполнять его, потом парсить результат, если он нужен.
# Ответить
25. blackhole321 19.10.2015 11:49
(23) Xershi
На C++ или C#
# Ответить
26. nickpugachev 19.10.2015 15:20
(23) Xershi, хоть на vbscript, практически все языки общего назначения под вынь умеют COM делать
# Ответить
27. Crush 18.02.2016 21:48
А запакованные gzip-строки этой штукой можно распаковывать не вызывая окно консоли?
Ответили: (28) (29)
# Ответить
28. Xershi 19.02.2016 08:45
(27) Crush, моя разработка работает так: запускаешь ее она включает ком-объект, а далее в обработке пишешь скрипт на пауршел. Тут я думаю похожий алгоритм.
# Ответить
29. blackhole321 21.02.2016 17:30
(27)
Можно примерно так, как описано по ссылке https://social.technet.microsoft.com/Forums/windowsserver/en-US/5aa53fef-5229-4313-a035-8b3a38ab93f5/unzip-gz-files-using-powershell?forum=winserverpowershell:

Function DeGZip-File{
Param(
$infile,
$outfile = ($infile -replace '\.gz$','')
)

$input = New-Object System.IO.FileStream $inFile, ([IO.FileMode]::Open), ([IO.FileAccess]::Read), ([IO.FileShare]::Read)
$output = New-Object System.IO.FileStream $outFile, ([IO.FileMode]::Create), ([IO.FileAccess]::Write), ([IO.FileShare]::None)
$gzipStream = New-Object System.IO.Compression.GzipStream $input, ([IO.Compression.CompressionMode]::Decompress)

$buffer = New-Object byte[](1024)
while($true){
$read = $gzipstream.Read($buffer, 0, 1024)
if ($read -le 0){break}
$output.Write($buffer, 0, $read)
}

$gzipStream.Close()
$output.Close()
$input.Close()
}

$infile='C:\Temp\DECfpc1new.csv.gz'
$outfile='c:\temp\DECfpc1new.csv'

DeGZip-File $infile $outfile
# Ответить
30. Saldor 29.05.2016 17:10
Есть запрос PowerShell, который нужно дописать на выполнение http-запроса к 1С
http://200.200.100.100/ERP_demo/hs/getting/user/pass/Выбрать Код, Ссылка Из Справочник.Валюты
user = "admin"
pass = "admin"

Запрос ps1:
"Выбрать Код, Ссылка Из Справочник.Валюты"

1cQuerty-Stream -QueryStr $ЗапросТекст -connection $connection -OutFileName 'Отчет.csv'

$ReleaseComObject = [System.Runtime.InteropServices.Marshal]::ReleaseComObject($connection)

$ReleaseComObject = [System.Runtime.InteropServices.Marshal]::ReleaseComObject($ComConnector)
# Ответить
31. Saldor 29.05.2016 17:10
Вот, такое поможет реализовать?
# Ответить
32. blackhole321 29.05.2016 18:49
Не совсем понял Вашу задачу. Вы хотите вызвать http сервис 1С или передать в качестве параметров запрос 1С и выполнить его из PowerShell, обратившись к 1С через COM?
# Ответить
33. Saldor 31.05.2016 06:21
Дописать PowerShell скрипт для импорта с 1С по http
Ответили: (34)
# Ответить
34. blackhole321 31.05.2016 13:48
(33) Saldor,
Если Вы хотите из PowerShell обратиться к http-сервису 1С, то можете использовать командлет Invoke-WebRequest (https://technet.microsoft.com/ru-ru/library/hh849901.aspx), который появился в PowerShell 3.0 или использовать соответствующий класс .NET, если Вы можете использовать только PowerShell 2.0. Далее, обрабатываете тело ответа и извлекаете необходимые данные.
Или Вы имели ввиду что-то другое?
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл






IE 2016