Страницы: 1 2 3 4 5 6 След.
RSS
Удобное внедрение языка программирования "Python" в файл Excel на основе портативной сборки Python, Настроенный файл Excel для удобного вызова скриптов Python из Excel
 

Всем привет!
Хочу поделится наработками, которые получились в процессе реализации своих задач.
Может описываемое тут кому-то покажется банальным, но в сети мало информации по конкретным действиям. Я много потратил времени на поиски того как в удобной форме подружить Excel и Python. Ниже подробно расписываю, что нужно делать чтобы работа с "Python" в файл Excel стала удобной, а главное чтобы файл эксель можно удобно было передать другому человеку, который ничего не знает о программировании и у которого на компьютере отсутствует Python и при этом все работало (это возможно если установить Python на общем сетевом диске или передать файл вместе с папкой в которой установлен Python).

Идея не моя, вдохновителем улучшений является сайт https://www.xlwings.org.

Во вложении имеется файл Excel из которого возможен удобный запуск скриптов языка программирования "Python" (точно такой же как запуск макросов VBA).
На сайте https://www.xlwings.org/ автономная работа файла Excel с кодом Python предлагается только по платной подписке до версии "PRO", а бесплатные решения, предлагаемые на сайте не так удобны, так как требуют чтобы скрипт с расширением ".py" размещался отдельным файлом в той же папке что и файл Excel и был назван тем же именем что и файл Excel.
Удобная возможность запуска языка программирования "Python" из файла Excel базируется на трех решениях:

1. Портативная сборка интерпретатора языка Python
https://sourceforge.net/projects/winpython/files/

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

Шаг 1. Установить библиотеку "xlwings" для Python в "WinPython Command Prompt.exe":
Код
pip install xlwings

Шаг 2. Скачайте файл "My_project.xlsm" и открыв его пропишите путь к файлу "python.exe" в ячейке b1 на листе "xlwings.conf".
У меня этот путь выглядит так:
C:\Winpython64-3.10.1\python-3.10.1.amd64\python.exe

По совершению указанных действий папка с Python (и библиотекой "xlwings") станет портативной, ничего не слетит, если вы поставите другие библиотеки и затем решите переместить эту папку в другое место на своем компьютере или поделитесь папкой с коллегой. При перемещении сборки на другой компьютер она сможет работать с файлом My_project.xlsm, требуется только задать правильно путь в ячейке b1 на листе "xlwings.conf" (шаг 2).

2. Файл Excel с модулем "xlwings" для удобной работы с библиотекой "xlwings" для Python

https://www.xlwings.org/

Чтобы во всем этом разобраться, рекомендую ознакомится с документацией, но если у вас есть время на чтение понятной литературы, то рекомендую бесплатно cкачать и прочесть "Python for Excel" от автора этой библиотеки (Felix Zumstein). Книга на английском языке. Ориентирована на людей мало знающих программирование, все хорошо объясняется с азов. Гугл хром отлично переводит и сайт и книгу.
Некоторые подробности, которые будут полезны по мере погружения в изучение библиотеки "xlwings":
надстройка Excel "xlwings" для работы файла не используется, у меня  она даже не установлена.
Исходным файлом является файл "Standalone", который после установки библиотеки "xlwings" (о том как установить библиотеку я написал в 1 пункте) вы сможете найти тут:
"Ваша папка с Python"\App\Python\Lib\site-packages\xlwings\quickstart_standalone.xlsm"
Из исходного файла я взял лист "xlwings.conf" и модуль VBA "xlwings", этот модуль вы можете обнаружить через штатный редактор VBA. Подробности о Standalone-версии, по-моему, есть только в упомянутой книге "Python for Excel". А на сайте информации, к сожалению, не много, - смотрите Alternative: Standalone VBA module.
Отличие моего файла от исходного файла "Standalone" в том, что для его работы не требуется размещать скрипт Python в той же папке и под тем же именем что и файл Excel. На сайте https://www.xlwings.org/ опция со спрятанным кодом Python внутри книги Excel предлагается только по платной подписке до версии "PRO", и эта платная возможность реализована там каким-то другим способом (не тем, которому я даю описание).

3. Хранилище файлов из листа Excel.

https://www.cyberforum.ru/blogs/829006/blog4964.html

Позволяет хранить скрипты с кодом Python прямо в файле Excel.
Если бы не нашлось этого решения, пришлось бы хранить файлы с расширениями ".py" отдельно от файла Excel в одной папке, либо где-то отдельно и прописывать к ним пути в ячейке "B3" листа "xlwings.conf", что не так прикольно. К счастью, оказалось, что код с cyberforum.ru прекрасно скопировался через штатный редактор VBA прямо в лист "xlwings.conf" Standalone-версии, которая упоминается в пункте 2. Адаптации кода не потребовалось (я отредактировал только необязательный "test"). Если потребуется, то все описываемые действия из пункта 3 легко повторить, но вам ничего не нужно делать, при скачивании мной прилагаемого файла:
чтобы увидеть файл скрипта "Python", хранящийся в Excel просто запустите макрос "START_MENU"

Запуск:

А. Скачайте файл Excel ниже.
Б. Скачайте портативную чистую версию Python отсюда:
https://sourceforge.net/projects/winpython/files/
В. Проделайте шаги 1-2 из пункта 1.
Г. В файле Excel нажмите кнопку теста на работоспособность.

Если вы видите, что меняется текст в ячейке "B14" после нажатия кнопки теста, то принимайте поздравления - ваша сборка полностью готов к плаванию в океане под названием "Python"!

Важно: Для просмотра скриптов Python (файлы с расширениями ".py"), их выгрузки для редактирования и загрузки новых редакций, пользуйтесь макросом "START_MENU". Описание макроса и его функционала найдете по ссылке в 3 пункте.

Оставлю это здесь:
1) pywin32 устанавливается автоматически на первом шаге и может так случиться, что придется откатить его до предшествующей версии с помощью "pip install pywin32==302" где "302" это номер версии до которой нужно откатиться (у вас вероятно будет не 302-я версия, смотрите через команду "pip list").
2) Если в пункте №1 вы скачали облегченную портативную сборку и хотите чтобы в ней заработал вложенный файл "WinPython Control Panel.exe", который скачался вместе со сборкой Python, выполните в "WinPython Command Prompt.exe":
Код
pip install PyQt5
pip install packaging

"pip install pyside6" возможный вариант замены "pip install PyQt5" в коде выше, но трудно сказать что предпочтительнее. Вариант с PyQt5 мне нравится тем, что вес его файлов меньше.

Требования: любой Windows 8+, 2 ГБ оперативной памяти
Тестировалось 25.12.2021 на сборке:
Python x64   v.3.10.1               https://sourceforge.net/projects/winpython/files/WinPython_3.10/3.10.1.0/
pywin32        v.303
xlwings         v.0.25.3
Изменено: Сергей Юрьевич - 06.09.2022 21:06:42
 
Сергей, Приветствую!
Сразу к делу: зачем мне питон в вба? Какие бонусы он даёт?
Есть сортер например, потестить или ещё что-то более осязаемое?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
зачем мне питон в вба?
не трогай  змею :-)
По вопросам из тем форума, личку не читаю.
 
Цитата
Jack Famous написал:
Сразу к делу: зачем мне питон в вба?
Я оценил ваш юмор, а именно фразу "Сразу к делу".
Предлагаю избавить эту тему от религиозных, политических и иных споров, не относящихся к теме. Ответ на вопрос зачем ему Python в Excel пусть каждый дает сам. Быть может вы удивитесь, но, я знаю людей, которым и VBA в экселе не нужен.
Они похожим образом думают - вот нафига им VBA в Excel, ведь отчет шефу и руками делается.
Я считаю, что не солидно скатываться до такой категории потребителей экселя.
Кому мое решение нужно, тот сюда придет. А вам мое замечание за раздувание споров не по теме / троллинг.
Изменено: Сергей - 04.06.2021 22:29:12
 
Сергей,  ну замечания Вам тут рановато делать,  тем более вопрос был по существу. Зачем? Давайте PowerShell скрипт , а не питон запихнем, или что иное. Вопрос именно  в конечной цели, а не в методах её достижения.
Изменено: БМВ - 04.06.2021 22:32:09
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Давайте PowerShell скрипт , а не питон запихнем, или что иное
Давайте! А это поможет запускать Python из экселя?
Цитата
БМВ написал:
у замечания Вам тут рановато делать
Не люблю когда обесценивают, не сдержался, я очень старался, когда писал этот текст.
 
Цитата
Сергей написал:
это поможет запускать Python из экселя?
а это имеет смысл? Об этом и вопрос.
По вопросам из тем форума, личку не читаю.
 
Сергей, интересное решение. Расскажите,какие плюсы-минусы, по сравнению с VBA, PP, PQ, решениями на dll, xll?
Смотрю и мое решение с Андреем (п.3) пригодилось.
«Бритва Оккама» или «Принцип Калашникова»?
 
Сергей, Слушайте, я и сам не люблю, когда флудят в теме, но тут не об этом. Ну, допустим, есть какой-то костыль (а по количеству действий, это костыль), чтобы кодить питоном в Эксель. Окей. Спасибо за инфу, но можно ли узнать, на кого ориентирован этот метод? На тех, кто знает питон, но не знает вба? Вы тут губки надули, что многабукав написали, а толку мало, кроме инфы, что так можно. Так быстрее получится или что?

Если тема просто о том, что так можно и вот вам инструкция, то я больше ничего спрашивать не буду...

P.S. Внедрение библиотеки bedvit'а (подключение, как обычной надстройки) несравненно удобнее, скорости в десятки раз быстрее, удобство, надёжность, тесты — и всё равно мало кому интересно, Так что вы бы так не огрызались на интерес к теме. Очень скоро вам будет не хватать внимания  :D
Изменено: Jack Famous - 04.06.2021 23:06:30
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
bedvit, приветствую! Ваш мозги с Андреем пригодились бы этой теме. Круто было бы хранить код Python не как вложенный файл, а непосредственно в виде текста на листе Excel и иметь возможность его от туда запускать.
Подобную возможность я видел тут:
https://www.xlwings.org/pro
но она платная.

Что касается вашего вопроса. Вопросов БМВ, Jack Famous.С вашего позволения, я передам почетную возможность на них отвечать любому читающему эту тему, тому, кто возьмется за столь благородную цель. А я покурю в сторонке  ;)  
 
Цитата
Сергей написал:
А я покурю в сторонке
Нормальная позиция: я создал тему, но на вопросы отвечать не буду - подожду, пока другие объяснят, зачем это нужно.
Изменено: Юрий М - 04.06.2021 23:36:44
 
Юрий М, моя цель - сделать изысканное мною решение лучше, либо найти ему замену. Я уверен это возможно. Я уверен что кто-нибудь найдет что-то, что работает лучше. А может быть, нашел, использует и захочет поделиться со мной в этой теме. Но в любом случае речь идет о запуске кода Python из Excel. А не запуске чего-то другого или отказе от этой цели.
Разговоры - отвлечение от моих целей, если хотите угроза им. По этой причине я охотно передам возможность поучаствовать в них тем, кто этим заинтересуется. Возможно, у людей тут много свободного времени, поэтому на понимание сильно не рассчитываю.
Возможно, кому-то пригодится то, что я опубликовал.
Изменено: Сергей - 05.06.2021 00:11:42
 
Чтобы помочь кому-то, кто "не в теме", нужно нормально, без задиристости, отвечать на вопросы.
Спросили - зачем? Трудно объяснить? Может, после Вашего  объяснения желающих заняться темой прибавится?
 
Но Вам же нормальные вопросы задают: в чем прелесть использования Питона из Excel? Какие в этом есть плюсы/минусы? Может отличное быстродействие? А Вы сразу иголки выпускаете.  Неужели так трудно ответить по существу? Ведь теба, размещённая на форуме, становится уже не Вашей. Она для всех. И форумчанам интересно - вдруг и им пригодится?
 
Просто нужно взять https://help.libreoffice.org/6.2/en-US/text/shared/guide/scripting.html?DbPAR=SHARED и не парить мозг.
По вопросам из тем форума, личку не читаю.
 
Я пока еще не тестировал, но меня эта тема очень заинтересовала! А заинтересовала вот почему: я не умею кодить на VBA, но вот на Pythone немного могу (специально проходил базовые курсы). Если это мне поможет как-то кодить на Pythone в Excel, то для меня это возможно огромный потенциал в развитии и решении задач. Т.е. я не знаю VBA, но базово знаю Python, и для меня это случайная удивительная находка!
И за это огромное спасибо Сергей, !
 
Vladimir Chebykin, всегда можно спросить тут совета по поводу программирования, тем более, вы давно тут. К тому же, VBA совсем несложный язык, а чтобы выполнять какие-то основные действия и вообще много знать не надо

Видимо, я был прав, что этот метод для тех, кто знает питон, но не знает VBA. У питонщиков, по сути, выбора нет (кроме более удобного и родного варианта, предложенного медведем, но на другой платформе), а что VBAшникам делать?

Никаких сравнений производительности при выполнении типовых задач. Может на питоне они быстрее (в чём я сильно сомневаюсь)? Язык простой - я бы выучил ради скила в Excel, например, однако вряд ли это будет быстрее библиотеки bedvit'а на C++.  Так нет же - у нас тут автор не за этим пришёл, чтобы сравнивать
Вы-то хоть потом поделитесь, как разберётесь  :D
Со стороны VBA тестами обеспечу  ;) Удачи в освоении новых горизонтов!
Изменено: Jack Famous - 05.06.2021 08:47:19
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Автор явно ошибся сайтом, вам туда где программируют на "Python", там 100% эта тема будет интересна.
А зачем мне и остальным пользователям через какой-то "костыль" делать то, что я и так прекрасно делаю с помощью VBA?
 
Цитата
Vladimir Chebykin написал:
я не умею кодить на VBA, но вот на Pythone немного могу
Это не поможет, так как вопрос не в синтаксисе, а в применении оного к конкретной объектной модели. Я не умею программировать в 1С но , особенно если переключить язык на ENG, читаю код и касательно каких либо системных веще даже оказывался полезным для прогеров. Были  пара моментов по работе с компортами и еще с чем-то и тут был важен не язык а объекты с которыми работаешь.
По вопросам из тем форума, личку не читаю.
 
Цитата
Jack Famous написал:
У питонщиков, по сути, выбора нет (кроме более удобного и родного варианта, предложенного медведем, но на другой платформе),
Можете осветить о каком решении медведя вы говорите? Я правда не в курсе него(
Меня заинтересовало то, что вы называете другой вариант более удобным. Я должен этот вариант посмотреть. Может что-то для себя открою.
Если этот вариант через надстройку - то это уже обуза. Так как когда придет время делиться файлом Excel с другими, потребуется установить надстройку каждому новому пользователю (в этом преимущество портативной папки с Python - она может находится на общем для всех сетевом диске и тогда вообще ничего устанавливать не нужно при распространении файлов внутри сети).
Говоря о удобстве предложенного мною варианта, мне кажется вы не учитываете, что библиотеку "xlwings" питонисту все равно придется поставить.
Т.е. есть запуская Python через вариант медведя (если такое вообще возможно, я пишу об этом с ваших слов), вы лишь отложите установку библиотеки "xlwings" на попозже. Потом "xlwings" все равно придется поставить, если, конечно, настрой на работу с Excel. С этих позиций установку "xlwings" не рассматривайте лишь для цели запуска файла ".py", эта библиотека найдет применение при других задачах, связанных с Excel.
Изменено: Сергей - 05.06.2021 11:43:52
 
Сергей, #15
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
БМВ написал:
Это не поможет
Не поможет в чем? Мне, как аналитику не требуется писать какие-либо приложения. А вот автоматизировать какие-либо задачи, делать расчеты - это для меня. И Питон со своими библиотеками мне в этом плане гораздо ближе и понятнее чем VBA. Я не понимаю, почему местные старожилы развели холивар в этой теме. ТС же не спрашивал местное комьюнити, что лучше или хуже, а поделился наработками, которые могут быть полезны другим.
 
Vladimir Chebykin, я не считаю заданные вопросы холиваром. Я прямо сказал, что, если тема про "можно вот так", то ок - я только за разнообразие, просто автор занял довольно агрессивную позицию вместо прямого ответа.
Если вам правда удобнее наворотить кучу всего описанного вместо того, чтобы спросить, как это сделать на родном VBA, то ради бога. Как потестите, отпишитесь, пожалуйста - мне правда интересно
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Vladimir Chebykin написал:  ТС же не спрашивал местное комьюнити, что лучше или хуже, а поделился наработками,
И это неплохо. Но еще лучше, если бы ТС доступно объяснил тем, кто не знает/сомневается... Не должны простые вопросы вызывать агрессию.

Мой пример. Присматривался - а не поизучать ли Питон? И вот показывают что-то в Excel для Python... А вдруг это интересно? А вдруг это параллельно можно? Можно ли начинать изучение с помощью этого? А может, оно мне 300 лет не надо? Но ТС сразу стал в позу - НЕ ПРИСТАВАЙТЕ!

Цитата
Jack Famous написал: зачем мне питон в вба? Какие бонусы он даёт?
Цитата
bedvit написал: Расскажите,какие плюсы-минусы, по сравнению с VBA, PP, PQ, решениями на dll, xll?
Что в этих вопросах такого недопустимого или обидного?
Изменено: vikttur - 05.06.2021 14:18:50
 
Цитата
Jack Famous написал:
Язык простой - я бы выучил ради скила в Excel, например, однако вряд ли это будет быстрее библиотеки bedvit'а на C++.
Вы рассуждаете не верно, когда рассматриваете вопрос выбора языка отдельно от вопросов "какие преимущества языка будут полезны конкретно мне в решении конкретно моего круга задач". "Какие уникальные библиотеки предлагает язык и есть ли у меня в них потребность".
Вы рассуждаете правильно, отвергая Python когда говорите о времени исполнения кода. Языки можно поделить на два вида - те, на которых можно быстро написать код, и те, на которых код можно быстро исполнить. Судя из написанного, вам интересны языки второй категории (быстрые). Вы сосредоточились на времени исполнения кода машиной, а не на времени обслуживания кода человеком, по этой причине Python может вас расстраивать.
Вы рассуждаете правильно, когда, говорите что вам лучше все оставить как есть, особенно если вам нравятся встроенные в Excel языки М, DAX и VBA. Вам нравятся редакторы этих языков. Особенно если вы мало сталкивались с удобствами, которые могут предложить другие языки, либо вы про эти удобства знаете, но в отличии от меня, легко ими жертвуете, по той причине, что ваше нутро не восстает против вас, всякий раз, как вы садитесь решать задачи посложнее, например, в редакторе PQ кодить сбор данных из файлов, в условиях, когда пользователи переименовывают и удаляют столбцы, вставляют перед шапкой строки. А файлы и листы называют с вариациями.

Цитата
Jack Famous написал:
Спасибо за инфу, но можно ли узнать, на кого ориентирован этот метод?
Ммм... подойдет всем нижеперечисленным, за остальных не ручаюсь:

1. "Профессионал" - знает почему именно Python и почему именно в Excel, знает почему не что-то иное (этот типаж не задумываясь перечислить нужные ему библиотеки).
2. "Убежденный" - знает почему именно Python и почему именно в Excel (в отличии от "профессионала" этот типаж столкнется с затруднениями при попытке объяснить технические мотивы своего решения).
3.  "Раб своих привычек" - для кого удобство работы ассоциируется с "Python" в силу каких-то причин, пусть даже не объективных. В отличии от "Экспериментатора" имеет стабильное чувство удовлетворенности, по этой причине не имеет тяги к новшествам.
4. "Жертва рекламы" - тот, кому важно себя чувствовать модным, остальное не важно.
5. "Не согласный" - тот, кто по любым причинам, в том числе не уважительным, хочет минимизировать свое время в VBA, не хочет применять языки М и DAX.
6. "Перспективный" - считает изучение VBA, M и DAX бесполезным вложением времени, считает, что хочет тратить время на более полезные для него языки.
7. "Экспериментатор" - не получает чувства полной удовлетворенности при работе штатными средствами, голос внутри как-бы говорит, что человеку нужно попробовать другие инструменты и другие редакторы, по этой причине типаж решается на эксперименты.
Изменено: Сергей - 05.06.2021 14:55:17
 
Цитата
Vladimir Chebykin написал:
ТС же не спрашивал местное комьюнити, что лучше или хуже, а поделился наработками, которые могут быть полезны другим.
Это сродни астрофизике, мы расчитали что там должна быть звезда или даже экзо планета, но как это влияет на нас?

Я уже несколько раз на этом форуме продвигаю идею, что профессионал  - это не тот кто знает , а тот кто это знание продает. В узких форумных кругах, я вроде не самый неподкованный в Excel, но это не мой бизнес, от слова совсем.

и Еще раз, что дает использование питона со всеми  библиотеками и прочими плюшками, кроме того что это синтаксис знаю а другой - нет?
По вопросам из тем форума, личку не читаю.
 
Интересная развернулась дискуссия по поводу полезности данной темы. Но думаю на самом деле тему будет интересна очень ограниченному кругу.
Цитата
Сергей написал:
Языки можно поделить на два вида - те, на которых можно быстро написать код, и те, на которых код можно быстро исполнить.
А VBA вы к какому виду отнесли? Да он не быстрый по сравнению с C++, но поэтому и бывают обсуждения применения этого языка. Если Python не придает скорости, то смысла применять его в Excel вместо VBA не вижу, потому что VBA уже заточен специально под Excel. И думаю, что перейти с Python на VBA не составит большого труда. Только поймите меня правильно, я ЗА эту статью. Это расширяет возможности Excel.  И для тех кто хорошо знает Python может стать подспорьем, а возможно кто-то просто ради спортивного интереса будет это пробовать.
 
Возможно, скорость - это не конек Питона, но есть, к примеру, очень удобные инструменты работы с WEB, СУБД, готовые библиотеки решения математических задач (раскроя, о рюкзаке и т.д), задач теории графов (кратчайшего пути ит.д), что либо еще, легко и непринужденно уделывающие текущие решения. Я не спец по Питону, поэтому и спрашиваю спецов в теме, про плюсы, минусы данного языка, возможностях использования в Excel.
Изменено: bedvit - 05.06.2021 22:41:24
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
msi2102 написал:
А VBA вы к какому виду отнесли?
Ни к какому не относил. Только про Python говорил, что он к медленным скорее относится. Тем более его с C++ стали сравнивать.
Цитата
msi2102 написал:
Если Python не придает скорости, то смысла применять его в Excel вместо VBA не вижу, потому что VBA уже заточен специально под Excel
Можно на мелких таблицах тестировать скорость и приходить к одному результату, а можно тестировать скорости на Big Data. Я думаю, вполне может оказаться, что преимущества Python будут нарастать с ростом массива данных. Лучшим решением будет применять каждый языка под решение тех задач, под которые он заточен.
Что лучше бокс или карате в драке рассматривать не имеет смысла - для вас же лучше применить то, что лучше знаете. Такое решение, зачастую, гарантирует более надежный результат.
Изменено: Сергей - 06.06.2021 00:39:29
 
Цитата
БМВ написал:
Еще раз, что дает использование питона со всеми  библиотеками и прочими плюшками, кроме того что это синтаксис знаю а другой - нет?
Вы считаете, что Вам кто-то что-то здесь должен? Если ТС предложил решение и оно Вам не подходит, это означает что оно бесполезно - так что ли? Мне абсолютно без разницы, что Python проигрывает VBA в том или ином аспекте, для моих задач это не критично. И поэтому решение ТС интересно мне и мне подобным юзверям. Если Вы не входите в целевую аудиторию решения ТС, то зачем автора упрекать, что его решения не эффективны, не целесообразны и тому подобное?
Страницы: 1 2 3 4 5 6 След.
Наверх