Тема: Строим Мини АВК

Прислано Valentin January 22 2009 22:03
#2

Портал сметчиков

Урок 1 -БАЗА РАСЦЕНОК.

Прежде всего нам понадобиться база расценок ДБН.
В свободной публикации этих вещей нет, есть в Зодчем техкарты, но при их использовании нужно вручную создавать базу самим.
Учитывая украинский опыт взаимствования норм (пример с Гарячкиным) мы не будем сами заниматься разработкой базы.
Если у наших друзей или знакомых есть ПК, рекомендованный Минрегионстроем, попросим набрать сметку со всеми расценками из всех сборников.
Что, трудоемко?
Не думаю.
Для примера возьмем ПК АВК5 (для рекламы этого продукта) последней версии и попробуем создать базу расценок всех сборников Р (Ремонтные работы).
Создаем стройку, объект, смету.
На уровне локальной сметы жмем ALT+F2.
В НСИ отмечаем "Ремонтно строительные-работы". В поле поиска "поисковый образ/часть" ставим букву Р и жмем "Начать поиск".
Все расценки всех сборников выстроились в порядке возрастания.
Осталось только выбирать.
Ремонтных расценок где-то больше 7500шт. Выбирать вручную будет очень накладно.
Проанализируем наши действия при наборе и постараемся процесс автоматизировать.
1.ALT+F2
2.ENTER
3.1
4.ENTER
5.ALT+F2
6.опускаемся на одну позицию вниз (DOWN)
7.повторяем п.2-6
и т.д. до конца.
Мы нажимаем одни и те же клавиши на клавиатуре в цикле 7500раз.
Если заставить клавиши нажиматься самим, то и набор сметки выйдет в сто крат дешевле.
Заставить клавиши работать самостоятельно при помощи ВИНДЫ можно, если написать соответствующий скрипт.
Итак открываем обычный блокнот и пишем:
'=============================================
Set WshShell = CreateObject("WScript.Shell")
DIM cnt
cnt=10

While cnt > 1
NABOR
cnt=cnt-1
Wend

Sub NABOR ()
WshShell.SendKeys "%{F2}"
WshShell.SendKeys "{DOWN}"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 100
WshShell.SendKeys "1"
WshShell.SendKeys "{ENTER}"
End Sub
'=============================================

Попробуем разобраться:

1. Set WshShell = CreateObject("WScript.Shell") '(в переменную WshShell создать объект "WScript.Shell")
2.Создаем счетчик количества вызова функции набора одной строки
3. Устанавливаем счетчик в 10 (набор десяти строк) для эксперимента, потом поставим сколько нужно.
4. While -это цыкл вызова функции: выполняется до тех пор пока счетчик больше 1 (первую позицию мы набрали вручную), дальше с каждым вызовом счетчик уменьшается на единицу cnt=cnt-1 и при достжении cnt=1 -выходим - Wend
5. Sub NABOR () -это и есть сама функция набора расценок.
6. WshShell.SendKeys "%{F2}" - означает подать команду SendKeys объекту WshShell.
SendKeys - это виртуальные клавиши, "%{F2}" - это ALT+F2
7. Далее {DOWN} , {ENTER}, WScript.Sleep 100 -это задержка в 100миллисекунд чтобы в АВК установилась расценка, далее 1 и {ENTER}. Все понятно.
Всю нашу писанину сохраняем под именем RAVK5.vbs
Присвоив файлу расширение vbs мы как бы прописываем его к программе (есть в ВИНДЕ), которая выполняет скрыпты.
А теперь внимание: ни вкоем случае не пробуйте запускать ваш файл, т.к. начнут работать виртуальные клавиши и натворят делов на компе без вашего на то разрешения.
Делаем следующее:
Становимся курсором на файл, правая кнопка мыши >> отправить >> Рабочий стол (создать ярлык).
На рабочем столе появится ярлык нашего скрипта.
Становимся на него курсором, правая кнопка мыши >> свойства >> ставим курсор в окно "Быстрый вызов". Нажимаем клавиши ( к примеру) Ctrl+Alt+Z. Жмем ОК.
Мы присвоили ярлыку гарячие клавиши и теперь мы всегда сможем вызывать наш скрипт по нажатию этих клавиш.
Итак открываем смету и делаем в строгой последовательности:
1.На уровне локальной сметы жмем ALT+F2.
2.В НСИ отмечаем "Ремонтно строительные-работы". В поле поиска "поисковый образ/часть" ставим букву Р и жмем "Начать поиск".
Все расценки всех сборников выстроились в порядке возрастания.
Жмем:
3.ENTER
4.1
5.ENTER
Набрана первая расценка, теперь передаем слово скрипту: жмем Ctrl+Alt+Z.
Если все правильно сделано - пошла работа, ждем пока не наберутся 10 расценок.
Далее - установите в скрипте счетчик на 100 или 200 и повторите урок для закрепления и уверенности в дальнейших действиях.

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

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

Есть вопросы-задавайте, нет - поедем дальше.