Имя: Пароль:
1C
1С v8
v8: Сбацать вам на groovy?
,
0 Рассвет
 
28.06.12
17:58
Ну воот:

def connector = new ActiveXObject("V81.COMConnector")
def ib = connector.Connect(connectionString);
       
def queryString =
"""
ВЫБРАТЬ ПЕРВЫЕ 10
   Остатки.Товар КАК Tovar,
   Остатки.Склад КАК Sklad,
   Остатки.КоличествоОстаток КАК Ostatok
ИЗ
   РегистрНакопления.ОстаткиТоваров.Остатки КАК Остатки
"""
       
def query = ib.NewObject("Query");
query.Text = queryString;
def selection = query.Execute().Choose();
       
while(selection.Next()) {
   println "Товар: ${selection.Tovar.Description} Склад: ${selection.Sklad.Description} Остаток ${selection.Ostatok}"
}

Один пока недостаток, не достучаться до методов и свойств на русском языке, все в инглишь переводить.
1 Fragster
 
гуру
28.06.12
17:59
Я думал, тут про Пашу будет...
2 Господин ПЖ
 
28.06.12
17:59
щито это за херь?
3 Господин ПЖ
 
28.06.12
18:00
(1) бугага... сплясать на Груви?
4 Fragster
 
гуру
28.06.12
18:00
кстати, в случае (0) надо юзать Представление или ПредставлениеСсылки
5 gosn1ck
 
28.06.12
18:00
похоже на с++, но тема Павла Чистова не раскрыта
6 andrewks
 
28.06.12
18:00
7 Fragster
 
гуру
28.06.12
18:00
а чо с кавычками такое? типа многострочные так обозначаются?
8 gosn1ck
 
28.06.12
18:01
и кстати метод представление надо юзать в запросе
9 Fragster
 
гуру
28.06.12
18:01
(8) баян
10 gosn1ck
 
28.06.12
18:01
тьфу
11 Господин ПЖ
 
28.06.12
18:02
(6) какая-то мертворожденная хрень, типа Ruby...
12 ДенисЧ
 
28.06.12
18:03
Чозахрень это было?? Кому это надо??
Лучше уж на брейнфаке...
13 Rie
 
28.06.12
18:09
(11) Почему мертворожденная? Обычный DSL. Тот же 1Сик, только более развитый и без 1С :-)
14 kryptonite
 
28.06.12
18:15
(12) лучше на брейкдэнсе
15 izekia
 
28.06.12
18:24
а на Хаскелле?
16 Rie
 
28.06.12
18:28
(15) 1С как монада? Интересная идея, только наизнанку вывернутая. Лучше уж не из Хаскеля к 1С, а 1С переписать на Хаскеле.
17 izekia
 
28.06.12
18:43
(16) кстати, надо на досуге потренироваться в написании внешней компоненты на хаскелле)
18 Fragster
 
гуру
28.06.12
18:49
(17) наркоманы
19 Rie
 
28.06.12
18:57
(17) Компонента-то всё равно получится на C :-)
20 Rie
 
28.06.12
19:00
(18) Никоим образом! Это - абсолютно безопасный с точки зрения физиологии способ открытия этих, как их... а, чакр. И прикосновения к великой энергетической мудрости :-)
21 Fragster
 
гуру
28.06.12
19:01
(20) это ли не наркоманы писали? http://habrahabr.ru/post/72782/
22 Fragster
 
гуру
28.06.12
19:02
кстати, в хаскеле
1*-1
дает ошибку, а в 1с - нет
23 izekia
 
28.06.12
19:10
(19) заглушка а не компонента)
24 Asmody
 
28.06.12
19:12
(0) тока я не понимаю, чего там, собственно, от groovy? или пример иллюстрирует, что groovy (под windows) умеет работать с COM-объектами?
25 Rie
 
28.06.12
19:16
(21) Нет, это обычный выбрык из серии "Освойте высший пилотаж за 24 часа".
26 izekia
 
28.06.12
20:21
(17) похоже со сборщиком мусора будет проблема)
27 Рассвет
 
28.06.12
21:00
(24) На что-то серьезнее терпения не хватило, хотелось прям счас. Так устал от 1с-го бойлерплейта, процеура, конецпроцедуры, еще-бы сделали вместо точки с запятой слово "прием", в вместо "возврат" - конец связи.
28 Рассвет
 
28.06.12
21:01
(15) для хаскеля еще время не пришло, не везде, ну по крайней мере у меня :)
29 БалбесВ1с
 
28.06.12
21:01
Блин я думал тс из 1с заставит  сидиром грув выдать))
30 Anton_2011
 
28.06.12
21:05
А на Perl можно сбацать? Простите - не в тему совершенно, но очень хочется... ((
echo "test... test... test..." | sudo perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}
<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
31 Рассвет
 
28.06.12
21:22
Ок, Я вот еще на gradle сбацал. (Gradle - система сборки проектов, с возможностью вставки кода на groovy)

project.ext {

   ibFolder    = "$buildDir\\db"
   ibData        = "$projectDir\\src\\main\\resources\\1Cv8.dt"
   ibCfg        = "$projectDir\\src\\main\\resources\\1Cv8.cf"

   v8home        = "C:\\Program Files\\1cv82\\8.2.14.540"
   v8exe        = "$v8home\\bin\\1cv8.exe"

   createIBIfNeeded = true
}

task clearAll << {
   buildDir.deleteDir()
}

task createIB << {

   def File f = file(ibFolder)

   if(f.exists() && (!f.deleteDir() || !f.mkdir())) {
       throw new Exception("Can't create dir $ibFolder")
   }

   exec {
       commandLine = ["$v8exe", 'CREATEINFOBASE', 'File="' + ibFolder + '"']
   }
}

task prepareIB << {
   if(project.ext.has('createIBIfNeeded') && project.ext.createIBIfNeeded) {
       tasks.createIB.execute()
   }
   else if(!file("$ibFolder\\1Cv8.1CD").exists()) {
       throw new FileNotFoundException("$ibFolder\\1Cv8.1CD")
   }
}

task loadCfg(dependsOn: 'prepareIB') << {
   exec {
       commandLine = ["$v8exe", 'CONFIG', '/F', ibFolder, '/LoadCfg', ibCfg, '/UpdateDBCfg']
   }
}

task restoreIB(dependsOn: 'prepareIB') << {
   exec {
       commandLine = ["$v8exe", 'CONFIG', '/F', ibFolder, '/RestoreIB', ibData]
   }
}

Создать базу:                gradle createIB
Загрузить конфу в существующую:        gradle loadCfg
Загрузить конфу с созданием, если нет:    gradle loadCfg -PcreateIBIfNeeded=true
Восстановить из dt-шника:        gradle restoreIB
Удалить базу:                gradle clearAll
32 Рассвет
 
28.06.12
21:24
Текст разорвало на две половины..
33 Anton_2011
 
28.06.12
22:21
(32) Ну, понятное дело, сервак, где миста лежит - не потянул. )
34 badboychik
 
28.06.12
22:46
а точно русские названия не дает вызывать? на яве же можно русским писать, и классы и методы и переменные называть. А груви это та же ява.
35 quest
 
28.06.12
22:49
make прикрутишь - будешь крут. а так - баловство....
36 quest
 
28.06.12
23:21
+(35) хотя не. make как подумалось через vbs - легко... а от lisp через ffi - тогда точно будешь крут....
37 Рассвет
 
29.06.12
01:09
(34) там используется либа jacob для java2com, она, как я понял, не поддерживает. Возможно поддерживает j-interop, она на чистой java, через DCOM (реализует протокол), я ее не щупал пока.
38 Asmody
 
29.06.12
01:14
для извращенцев придумано много всяких ЯП. Может кто Пролог научит с 1С работать?
39 Рассвет
 
29.06.12
01:17
(36) Не понял зачем. Зачем быть крутым :) а серьезно, до gradle пробовал maven, вроде много кто в нем, и говорили "откройте для себя maven". чуял я что где-то подвох, как-то тесно в нем, а когда попробовал gradle, про все забыл.
40 solver it
 
29.06.12
01:22
(11) Не читал, но осуждаю?
Если ваш мосх не осиливает ничего сложнее 1С, то не надо обсирать вещи, в которых не разбираетесь совсем...
41 Рассвет
 
29.06.12
01:37
ну не мертворожденный точно. На groovy легко писать просто скрипты, я как подумаю о батнике, который будет делать архив базы, складывать в папку и хранить только последние 5 штук. Так возникает такое ощущение, как будта кирпичи в голове зашевелились.

Вот статейка http://eriwen.com/groovy/groovy-shell-scripts/, сравнение с bash. В последних сроках происходит примерно следующее получив ответ на запрос к твиттеру, без рукопашного парсинга xml'я просто фигачим через точку его содержимое:

println "${tweet.user.name}: ${tweet.text}"
42 Kandellaster
 
29.06.12
03:26
groovy и в особенности фреймворк Grails отличные инструменты а кто ихъ называет мертворожденными просто не умеет ихъ готовить.
43 vasilii85
 
29.06.12
06:37
(40)+100500
44 Fragster
 
гуру
29.06.12
10:39
(41) не путай ущербный виндовый командный интерпретатор и нормальный шелл. кстати, повершелл вроде нормальный относительно
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.