![]() |
![]() |
![]() |
|
v7: как выполнить процедуру модуля формы документа из обработки? | ☑ | ||
---|---|---|---|---|
0
net
16.01.09
✎
08:50
|
есть такая возможность? или надо ее только в глобальном модуле прописывать со словом Экспорт?
|
|||
1
Guk
16.01.09
✎
08:51
|
через АЛьФа можно...
|
|||
2
net
16.01.09
✎
08:52
|
что это?
|
|||
3
Guk
16.01.09
✎
08:52
|
(2) формекс...
|
|||
4
TM
16.01.09
✎
08:53
|
||||
5
Sadovnikov
16.01.09
✎
08:53
|
(1) Почему через АЛьФа?
(0) Загрузи 1С++. Желательно, последней версии. |
|||
6
Guk
16.01.09
✎
08:54
|
(5) я так формекс называю...
|
|||
7
Vippi
16.01.09
✎
08:55
|
(5)+1
(0) И запускай процедуру просто Конт.ТвояПроцедура(). Просто, правда? |
|||
8
Sadovnikov
16.01.09
✎
08:55
|
(6) Офигеть...
|
|||
9
Sadovnikov
16.01.09
✎
08:56
|
(6) При помощи 1С++ удобнее.
|
|||
10
smaharbA
16.01.09
✎
08:56
|
(4) если процедуру, то именно штатно
|
|||
11
Guk
16.01.09
✎
08:57
|
(0) а вообще, чем башку ломать, давно бы скопипастил ;)...
|
|||
12
Сергей-ХХХ
16.01.09
✎
09:06
|
В принципе, можно и без извратов.
В обработке: параметр = "выполнить процедуру"; открытьформу(док.текущийДокумент(),параметр); ... ... В документе: Процедура ПриОткрытии() если ТипЗначенияСтр(форма.параметр) = "Строка" Тогда если форма.параметр = "выполнить процедуру" тогда мояпроцедура(); статусвозврата(0); форма.закрыть() конецЕсли; ... ... конецПроцедуры; Вот как-то так... |
|||
13
net
16.01.09
✎
09:07
|
ух ты, попробуем
|
|||
14
net
16.01.09
✎
09:08
|
(11) неправильное решение. Если кто-то изменит эту процерц в документе, не будет ж он искать где она еще скопирована
А вот формекс сейчас посмотрим, по описанию замечательная штука |
|||
15
Sadovnikov
16.01.09
✎
09:08
|
(12) Ага, молодец. Теперь выполни это при открытом в данном сеансе документе. Или, если форма обработки открыта модально.
|
|||
16
Sadovnikov
16.01.09
✎
09:09
|
(14) Еще раз. Для выполненния задачи в (0) смотри 1С++. Формекс - замечательная вещь. Но, несколько для других задач.
|
|||
17
net
16.01.09
✎
09:10
|
(12) и открывать форму тоже мне не надо, просто надо изменить реквизиты в документах и провести их. а при изменении реквизита должна выполняться процедура из м.ф. док-та. Вот так
|
|||
18
Guk
16.01.09
✎
09:10
|
(14) ну, если вас там целый выводок, и каждый правит то что хочет, то конечно неправильное решение...
|
|||
19
Sadovnikov
16.01.09
✎
09:11
|
(18) В любом случае неправильное...
|
|||
20
Guk
16.01.09
✎
09:13
|
(19) я знаю. однако городить огород с ВК для задачи в (17), это тоже та еще болезнь...
|
|||
21
Сергей-ХХХ
16.01.09
✎
09:16
|
Можно проверять блокировку документа. Но для того, чтобы при изменении реквизита выполнялась процедура модуля форма, ИМХО, лучше эту процедуру перенести в модуль обработки и убрать все лишнее. Часто достаточно после изменения прописать что-то типа:
глПриИзмененииРеквизита(док,"реквизит"); |
|||
22
Рэйв
16.01.09
✎
09:20
|
(17)А чего б тупо не скопировть процедуру из формы дока в обработку?
|
|||
23
Guk
16.01.09
✎
09:21
|
(22) да вишь, тут есть мнение, что для мегазадачи в (17), это неправильное решение...
|
|||
24
Sadovnikov
16.01.09
✎
09:22
|
(20) Нифига подобного. Во-первых, не "городить огород", а загрузить ВК. Тоесть воспользоваться штатным механизмом 1С. Во-вторых - простая загрузка 1С++ даст ускорение работы базы. Плюс, решит задачу из (0).
(21) Зачем городить вот такой непонятный огород, если можно все сделать просто и правильно? (22) Фи... Ну от тебя-то я такого не ожидал... |
|||
25
Sedoy
16.01.09
✎
09:23
|
(23) Я бы тоже скопировал во внешнюю обработку, зачем лишний раз лезть в основную конфигурацию...
|
|||
26
Guk
16.01.09
✎
09:27
|
(24) разработчики 1С++ несут ответственность за то, что после загрузки 1С++, уменя база на переферии заткнется по непонятным причинам?...
|
|||
27
Сергей-ХХХ
16.01.09
✎
09:29
|
(24) Г-н Sadovnikov. а вы на секунду не могли бы представить, что тоже можете ошибаться? Хотя... Нет, это невозможно, определенно! )))
|
|||
28
Vippi
16.01.09
✎
09:29
|
(26) А почему по непонятным? Причины всегда есть, чудес не бывает.
|
|||
29
Рэйв
16.01.09
✎
09:30
|
(24)А накой ходить сложными путями?:) Тем более если разово.
|
|||
30
Guk
16.01.09
✎
09:30
|
(28) А оно мне надо, разбираться с этими причинами?...
|
|||
31
Vippi
16.01.09
✎
09:31
|
(30) Гм... Был прецедент? Есть уверенность в виновности 1С++?
|
|||
32
net
16.01.09
✎
09:31
|
это не разово, а постоянный обмен с другой программой
|
|||
33
Рэйв
16.01.09
✎
09:33
|
(32)Да все равно нормально будет работать. Зачем ломиться к форме и изобретать велосипед если можно все написать локально.
|
|||
34
Sedoy
16.01.09
✎
09:33
|
(32) Если постоянно, перенеси процедуру в глобальный модуль или в модуль документа...
|
|||
35
Sadovnikov
16.01.09
✎
09:34
|
(26) Во насмешил... Можно я задам встречный вопрос? Разработчики 1С несут ответственность за то, что после загрузки 1С++, уменя база на переферии заткнется по непонятным причинам?
(27) А можно данное высказывание как-то по-понятнее аргументировать? В свете того, что писал в данной ветке? (29) Так и я про тоже :) Грузишь 1С++ и наслаждаешься результатом. Зачем что-то сложное изобретать? Копипастить, исправлять все обращения к реквизитам документа, другим функциям и процедурам модуля форму документа :) |
|||
36
Sadovnikov
16.01.09
✎
09:35
|
+(35) Блин.
"В свете того, что писал в данной ветке?" = "В свете того, что Я писал в данной ветке?" |
|||
37
Guk
16.01.09
✎
09:35
|
нет, всё таки вк - это религия...
|
|||
38
Рэйв
16.01.09
✎
09:35
|
(35):-)) Вот у меня например стойкое отвращение к 1С++ ...Так что не для всех подходит:)
|
|||
39
TM
16.01.09
✎
09:36
|
(31) А при чем здесь прецедент? Чем больше ВК и тому подобного тем меньше общая надежность системы. Это азбука.
|
|||
40
Vippi
16.01.09
✎
09:39
|
(39) А при чем здесь ВК? Чем кривее руки, тем меньше общая надежность системы. Это азбука.
|
|||
41
Сергей-ХХХ
16.01.09
✎
09:39
|
(36) (24) "Зачем городить вот такой непонятный огород, если можно все сделать просто и правильно?"
На мой взгляд, при таком раскладе правильно - это поменять реквидит документа "док.реквизит = значение" и вызвать процедуру, пкркнксенную в форму " приизмененииреквизита("реквизит") ", если данной процедуры еще нет в глобальном модуле. А по поводу того, что какой-то объект может быть открыт, то есть "док.блокировка", позволяющая это проверить. |
|||
42
Guk
16.01.09
✎
09:40
|
(39) Доказано. Непереубеждаемо...
|
|||
43
TM
16.01.09
✎
09:40
|
(40) Вот только формализовать кривость рук и включить их в расчет надежности пока еще не получается.
|
|||
44
Sadovnikov
16.01.09
✎
09:41
|
(41) Не понял. Мне надо вызвать процедуру, которая живет в форме документа. И почему я должен обламываться с этим, если форма этого документа открыта??
|
|||
45
TM
16.01.09
✎
09:41
|
+(43) Только не говорите мне, что ни разу не сталкивались в школе с расчетом надежности ПО.
|
|||
46
Sadovnikov
16.01.09
✎
09:42
|
(42) Ты на вопрос-то в (35) ответь :)
|
|||
47
Sadovnikov
16.01.09
✎
09:42
|
(45) Представляю тогда на сколько ненадежна восьмерка...
|
|||
48
Guk
16.01.09
✎
09:46
|
(46) Разработчики тойоты несут ответственность, если я себе в авенсис шаровую от приоры воткну?...
|
|||
49
Ёпрст
гуру
16.01.09
✎
09:47
|
(4) гон. Штатно всё можно.
|
|||
50
ДенисЧ
16.01.09
✎
09:48
|
(45) Это в какой школе учат надёжности ПО? О_о
|
|||
51
smaharbA
16.01.09
✎
09:48
|
(49) ну не совсем все конечно, если не о приоткрытии речь конечно
|
|||
52
smaharbA
16.01.09
✎
09:49
|
+(51) а об обработкаожидания )))
|
|||
53
Sadovnikov
16.01.09
✎
09:49
|
(48) При чем здесь доработка машины? Я имел ввиду абсолютно штатную безо всяких ВК 1С и абсолютно типовую конфигурацию. Так каким будет твой отрицательный ответ?
|
|||
54
Токс3
16.01.09
✎
09:50
|
Кроме Гука кто-нить (17) читал? Нах ВК?
|
|||
55
smaharbA
16.01.09
✎
09:51
|
(53) слушай, тыж спец какой-никакой ))) по 1с++, ты тут сказал, что если просто загрузить 1с++ база убыстрится, с чем это связано, есть объяснение ?
|
|||
56
smaharbA
16.01.09
✎
09:51
|
(54) дак то понятно, что скопипастил в обработку и успокоился
|
|||
57
rie
16.01.09
✎
09:52
|
(54) Так автор вопроса хочет использовать именно процедуру из модуля формы документа.
|
|||
58
Vippi
16.01.09
✎
09:52
|
(55) Есть. Потому что в 1С++ встроена TurboBl
|
|||
59
rie
16.01.09
✎
09:52
|
(56) Потом в модуле формы документа что-то изменилось и начинаем искать, почему обработка работает не так, как надо.
|
|||
60
Ёпрст
гуру
16.01.09
✎
09:53
|
(55) есть. Это описано в описании работы turbobl.dll ..которая вошла в 1cpp.dll
|
|||
61
Sadovnikov
16.01.09
✎
09:54
|
(55) Есть, конечно. Знаю человека, который на этом бизнес строит :) Просто грузит 1С++ и берет 1 тыр за каждый прогцен увеличения скорости работы :)
При загрузке 1С++ 1. Очень сильно увеличивается скорость вызова (самого поиска) процедур и функций того же глобального модуля. 2. В разы возрастает скорость работы метода СоздатьОбъект() Это, вот, что сразу на вскидку вспомнилось. |
|||
62
smaharbA
16.01.09
✎
09:54
|
пля, дак эта турба вроде с турбойМД не живет нормально
|
|||
63
Ёпрст
гуру
16.01.09
✎
09:55
|
(62) Путаешь чего-то :)
|
|||
64
smaharbA
16.01.09
✎
09:55
|
(61) а как (62) ?
|
|||
65
Sadovnikov
16.01.09
✎
09:55
|
(54) Не мешай спорить :)
|
|||
66
Sadovnikov
16.01.09
✎
09:55
|
(64) Прекрасно живут вместе.
|
|||
67
Vippi
16.01.09
✎
09:56
|
(62) Откуда сведения?
|
|||
68
smaharbA
16.01.09
✎
09:56
|
(63) не, нифига, помню точно не дежавю и не ретроградная амнизия, с кем то или турбоМД или формексом косяки при совместном пользовании
|
|||
69
TM
16.01.09
✎
09:56
|
(47) С научной точки зрения надежность восмерки меньше чем семерки. Хотя бы по причине большего объема кода и меньшеко срока эксплуатации.
Я ни в коем случае не против ВК. Они действительно расширяют возможности семерки весьма и весьма и используются в стопицоттыще конкретных задач, которые семерка в дефолтном виде не потянула бы. Но использовать ВК для решения данной задачи, мягко говоря, нецелесообразно. Предпосылок нет. (50) В любой, где готовят специалистов по програмному обеспечению всяких АСУ. Навскидку - МАИ, Бауманка, ЛИАП, Военмех, Политех, Техноложка, Бауманка. Там, где ошибка ПО может привести к выполнению годового плана по выработки энергии за одну милисекунду надежность ПО считают всегда. Есть учебники, ЕМНИП, даже ГОСТ есть :) |
|||
70
Токс3
16.01.09
✎
09:56
|
(57) Я так сильно подозреваю, что при выборе какого-то реквизита формы выполняется процедура модуля формы и заполняются реквизиты документа... по которым документ и проводится...
|
|||
71
Sadovnikov
16.01.09
✎
09:57
|
(68) если загрузишь 1С++ версии ниже 2.5 и формекс - вот тогда и получишь косяки :)
|
|||
72
Ёпрст
гуру
16.01.09
✎
09:57
|
(68) есть такое, но щас почти всё пофиксили... в последней сборке турбомд
|
|||
73
smaharbA
16.01.09
✎
09:57
|
(67) не помню, но точно было, может со старинными версиями, но было, причем касяк описать не могу, но был конкретный (не пропадающий), я даже тогда (года 3-4 назад) убрал турбоБЛ из конфы
|
|||
74
Guk
16.01.09
✎
09:58
|
(71) класс!...
|
|||
75
Sadovnikov
16.01.09
✎
09:58
|
(69) "Но использовать ВК для решения данной задачи, мягко говоря, нецелесообразно" - не факт. Глянь, например, (61).
|
|||
76
Токс3
16.01.09
✎
09:58
|
(65) Извините, ошибся... :)
|
|||
77
Sadovnikov
16.01.09
✎
09:58
|
(74) Поясни свой восторг?
|
|||
78
Sadovnikov
16.01.09
✎
09:59
|
(76) :)))
|
|||
79
Сергей-ХХХ
16.01.09
✎
09:59
|
(44) Только в одном случае из многих тысяч других необходимо как-то подправить форму уже открытого документа из какой-то обработки. Да и в этом оном случае можно пойти другим путем, более простым (все гениальное - прото, как сказал один из признанных, в отличие от меня, гениев))) способом.
По поводу решения, предложенного мной (и не только), то оно стало очевидным после того, как задача была сформулирована более конкретно. Извините, если чем обидел. |
|||
80
Vippi
16.01.09
✎
09:59
|
(68) Все могло быть.
Но проект 1С++ живет и развивается. Никогда не задумывался о числе даже документированных ошибок в Windows7 |
|||
81
Guk
16.01.09
✎
10:00
|
(77) это неописуемо...
|
|||
82
TM
16.01.09
✎
10:01
|
(75) В задаче (0) не требуеться увеличивать скорость работы создатьобъекта :)
|
|||
83
NS
16.01.09
✎
10:01
|
Правильное решение - вынести процедуру в глобальный модуль.
|
|||
84
Sadovnikov
16.01.09
✎
10:01
|
(79) Да почему обидел-то? Нормальное общение :)
Если уж идти совсем правильным путем, то эту процедуру стоит вынести в класс документа. |
|||
85
Guk
16.01.09
✎
10:02
|
(83) +100...
|
|||
86
Sadovnikov
16.01.09
✎
10:02
|
(81) Наверное, потому, что ты не в курсе, что в 1С++ версии ниже 2.5 встроен формекс? И повторная загрузка такой ВК, мягко говоря, не приветствуется.
|
|||
87
Sadovnikov
16.01.09
✎
10:03
|
(82) Ага. В задаче из (0) не требуется. Но, почему бы, попутно этого не сделать?
(83) Неа :) См. (84). |
|||
88
Vippi
16.01.09
✎
10:03
|
(77) Guk видимо не в курсе, о чем ты.
|
|||
89
smaharbA
16.01.09
✎
10:03
|
а что там с 1с++ и формексом ? т.е. или забываю про раскраски для тупых или забываю про ускорение ?
или всеже можно совместить ? |
|||
90
Guk
16.01.09
✎
10:03
|
(86) Не вижу ни одной причины, по которой я должне быть в курсе столь знаменательного события...
|
|||
91
Vippi
16.01.09
✎
10:04
|
(86) Обогнал :))
|
|||
92
Sadovnikov
16.01.09
✎
10:04
|
(89) И можно и нужно совмещать :)
(90) Дык, если ты не обладаешь информацией - чего тогда такие посты создаешь? |
|||
93
smaharbA
16.01.09
✎
10:04
|
а где 1с++ качнуть ? на его сайте ?
|
|||
94
ДенисЧ
16.01.09
✎
10:05
|
(93) Eue/
|
|||
95
TM
16.01.09
✎
10:05
|
(87) Анекдот про обрезание вспомнил
"Но зачем?!!" "Ну, во первых, это красиво" |
|||
96
smaharbA
16.01.09
✎
10:08
|
а чо делать с 1с++ , она без регистрации работает ? (без админской)
|
|||
97
ДенисЧ
16.01.09
✎
10:08
|
(96) Вормекс свежий - точно работает :-)
|
|||
98
smaharbA
16.01.09
✎
10:10
|
а это, как проверить ее загруженность ? вызвать в исключении метод, или есть кошерный вариант ?
|
|||
99
Sadovnikov
16.01.09
✎
10:13
|
(98) Например, так:
Функция ЗагрузитьКомпоненту(ИмяКомпоненты, ИмяКласса, ИмяДЛЛ) Если ЗагрузитьВнешнююКомпоненту(ИмяДЛЛ) <> 1 Тогда Если ПустаяСтрока(ИмяКомпоненты) = 0 Тогда Предупреждение("Компонента "+ИмяКомпоненты+" ("+ИмяКласса+", "+ИмяДЛЛ+") не загружена! |Работа системы невозможна!!!"); КонецЕсли; Возврат 0; КонецЕсли; Возврат 1; КонецФункции . Процедура ПриНачалеРаботыСистемы() Если (ЗагрузитьКомпоненту("1C++", "AddIn.1C++", "1cpp.dll") = 0) ИЛИ (ЗагрузитьКомпоненту("FormEx", "AddIn.FormEx", "formex.dll") = 0) ИЛИ (ЗагрузитьКомпоненту("NetaTable", "AddIn.NTable", "NetaTable.dll") = 0) ИЛИ (ЗагрузитьКомпоненту("RiK_SQL", "AddIn.R_SQL", "RiK_SQL.dll") = 0) ИЛИ (ЗагрузитьКомпоненту("RiK_Inet", "AddIn.R_Inet", "RiK_Inet.dll") = 0) ИЛИ (ЗагрузитьКомпоненту("NetaMenu", "AddIn.NMenu", "NetaMenu.dll") = 0) ИЛИ (ЗагрузитьКомпоненту("TableDoc", "ПолеТабличногоДокумента", "TableDoc.dll") = 0) ИЛИ (ЗагрузитьКомпоненту("Dial-Mail", "AddIn.FTP", "DialMail.dll") = 0) Тогда СтатусВозврата(0); Возврат; КонецЕсли; |
|||
100
Ёпрст
гуру
16.01.09
✎
10:18
|
(98) можно и в попытке создватьобъект какой-нить..если что - грузить... если в ПриНачале не грузится.
|
|||
101
smaharbA
16.01.09
✎
10:18
|
(99) не, я не о том, это ясно
у меня вообще так ))))))) (и работает падло как надо) |
|||
102
Ёпрст
гуру
16.01.09
✎
10:19
|
(101) а нафига проверять наличие файла ? :)
Он же сам всё ищет в указаных каталогах..:) |
|||
103
smaharbA
16.01.09
✎
10:22
|
(102) там еще и ExtDLL и обрати внимание на
|
|||
104
Sadovnikov
16.01.09
✎
10:22
|
(103) А я по другому вопрос задам: зачем держать ВК в стольких разных папках? Не замучаешься одинаковые версии поддерживать?
|
|||
105
smaharbA
16.01.09
✎
10:24
|
(104) да не раскиданы они, это так, для "многа буков" )))
|
|||
106
Сергей-ХХХ
16.01.09
✎
10:25
|
(101) А че такой неоптимальный код?
СЗ.ИзСтрокиСРазделителями("перечень каталогов и файлов через точку с запятой (или запятую - не помню)"); для а = 1 по СЗ.РазмерСписка(); если фс.СуществуетФайл(СЗ.ПолучитьЗначение(а))=1 тогда путь = СЗ.ПолучитьЗначение(а); прервать конецЕсли; ну и т.д. |
|||
107
smaharbA
16.01.09
✎
10:28
|
переопределил все что надо и ненадо )))
Состояние Сообщить ОткрытьФорму ОткрытьФормуМодально ЗавершитьРаботуСистемы ЗаголовокСистемы ЗагрузитьВнешнююКомпоненту (106) самый, что ни наесть оптимальный... писать просче и понятнее, всегда пользуюсь Стр если не много строк и не часто вызывается |
|||
108
Vippi
16.01.09
✎
10:28
|
(96) Нет. Пока не работает без регистрации. Но скорее всего будет.
А 1С++ настоятельно рекомендую v. 3.0 |
|||
109
smaharbA
16.01.09
✎
10:29
|
(108) а на сайте вроде 2.5.какаято
|
|||
110
smaharbA
16.01.09
✎
10:31
|
+(107) не изменив вызов, играюсь внутри типами переданных параметров и содержимым, Состояние и Сообщить сделал функциями
|
|||
111
Vippi
16.01.09
✎
10:33
|
(109) Не надо. 2.5 больше развиваться не будет.
Бери 3.0 вот тут http://www.1cpp.ru/index.php/Image:Icpp-latest.rar#.D0.92.D0.B5.D1.80.D1.81.D0.B8.D1.8F_3.0.1.22 |
|||
112
smaharbA
16.01.09
✎
10:37
|
(111) спасибо... только я ее пользовать буду как микроскопом гвозди )))
согласно (61) |
|||
113
Sadovnikov
16.01.09
✎
10:38
|
(111) Что ж прямее-то ссылку не дал?
http://www.1cpp.ru/images/3/32/Icpp-latest.rar |
|||
114
Vippi
16.01.09
✎
10:40
|
(112) Ну, уже огромный прогресс то, что будешь вообще использовать.
Согласись, твое мастерское использование VBA совсем не прибавляет скорсти работе.:)) |
|||
115
Vippi
16.01.09
✎
10:41
|
(113) Чтобы поглядел, где в следующий раз искать.
|
|||
116
smaharbA
16.01.09
✎
10:42
|
(114) да это баловство, но на скору руку нетривиальные штучки иногда канают )))
|
|||
117
Vippi
16.01.09
✎
10:44
|
(116) Давно хочется, чтобы ты направил свои нетривиальные штучки в правильное русло.
И сегодня сделан еще один шажок в этом направлении :)) |
|||
118
Sadovnikov
16.01.09
✎
10:45
|
(116) И я к (117) присоединяюсь!!
|
|||
119
net
16.01.09
✎
10:50
|
Вот это активность! Господа, внимательно изучив все посты, я приняла решение все-таки вынести процедуру в гл.модуль. Формекс, как оказалось, здесь совсем ни к чему, использование 1с++ - противоречиво судя по разнообразным мнениям... В общем всем спасибо :)
ПС. Будет время, посмотрю на возможности 1с++, сейчас задачу необходимо было решить срочно. |
|||
120
Sadovnikov
16.01.09
✎
10:51
|
(119) " использование 1с++ - противоречиво судя по разнообразным мнениям... " - так ты глянь, кто негативные мнения выдает. Тот, кто ничего об 1С++ не знает и никогда ею не пользовался :)
|
|||
121
Ёпрст
гуру
16.01.09
✎
10:53
|
(120) 1срр - это как новые грибочки: вставляет хорошо, а съесть боязно ....
:) |
|||
122
net
16.01.09
✎
10:53
|
(120) кто их выдает, лично не знакома с ними, а ошибки типа копирования процедур - с кем не бывает :)
|
|||
123
Sadovnikov
16.01.09
✎
10:54
|
(121) Это да... Зато, привыкание - с первой дозы :)
|
|||
124
Vippi
16.01.09
✎
10:55
|
(123) +1 :))
|
|||
125
Рэйв
16.01.09
✎
10:57
|
(132)Я уже привык вот к телепату.....Теперь на "обестелепаченой" 77 работать не могу:))...Так что нафик-нафик
|
|||
126
Sadovnikov
16.01.09
✎
10:58
|
(125) "Вреда - ноль! Привыкания - ноль!" "Это не наркотик! Это - супернаркотик!!!" ©Бо
:) |
|||
127
Mikeware
16.01.09
✎
11:01
|
(123) Освоение требует некоего мозгового напряжения, что не всем по силам ввиду известной причины. :-) Ну и ЖКК нету.
|
|||
128
Vippi
16.01.09
✎
11:02
|
(125) Что именно нафик? Если ты про (38), то не смущает, что автор телепата Орефков имеет статус "1c++ developer"?
|
|||
129
Sadovnikov
16.01.09
✎
11:03
|
(127) Я почему-то твердо уверен, что для Ёпрст3 и smaharbA не составит труда освоить функционал 1С++ :)
"Ну и ЖКК нету" - ну да. Описание 1С++ - не желто-красное :) |
|||
130
Sadovnikov
16.01.09
✎
11:04
|
(128) Да он же просто подсесть боится. Как подсел на телепата :)
|
|||
131
Vippi
16.01.09
✎
11:04
|
(127) Угу. "Стойкое отвращение" у некоторых возникает именно по этой причине.
|
|||
132
Mikeware
16.01.09
✎
11:06
|
(129) Ну так Ёпрст3 и smaharbA - человеки! точнее, Человеки!
|
|||
133
Torquader
16.01.09
✎
11:15
|
А из модуля документа процедуру выполнить можно ?
И ещё вопрос - можно ли каким-то образом выполнить произвольный код на встроенном языке 1С не вызывая внешней обработки ? |
|||
134
Sadovnikov
16.01.09
✎
11:16
|
(133)
Модуль = СоздатьОбъект("ВыполняемыйМодуль"); Модуль.УстановитьМодуль(" |Функция ПолучитьЗначение() | Возврат "+ИдентЭлемДиалога+" |КонецФункции | |Процедура УстановитьЗначение(НовЗнач) | "+ИдентЭлемДиалога+" = НовЗнач; |КонецПроцедуры | |Функция ВыборГруппы() | Возврат ?(Форма."+ИдентЭлемДиалога+".ВыборГруппы() = 1, 1, 0); |КонецФункции |"); Модуль.НазначитьКонтекст(Конт); Модуль.КомпилироватьМодуль(); Модуль.ВыполнитьМодуль(); ЗначениеЭлемента = Модуль.ПолучитьЗначение(); |
|||
135
Ёпрст
гуру
16.01.09
✎
11:17
|
(133)
1.Код из модуля вызывается в момент проведения... 2.можно. |
|||
136
Рэйв
16.01.09
✎
11:18
|
(128)Привыкнув,потом испытываешь определенные неудобство при отсутствии.
Мне пока не попадалась такая ситуация что я просто жить не смогу без 1С++. Так что обходился без него раньше и думаю и в дальнейшем не заболею без этой фичи. |
|||
137
Ёпрст
гуру
16.01.09
✎
11:19
|
(136) это до первой балшой базы.
|
|||
138
Рэйв
16.01.09
✎
11:21
|
(137) да были балшие.
Около 120-130 юзверев одновременно + нехилый документооборот. Не сказать конечно что 77 летало, но и не загибалось |
|||
139
Mikeware
16.01.09
✎
11:26
|
жЁстко форум работает... на пост 132 ссылка в 125 :-))
|
|||
140
Torquader
16.01.09
✎
11:49
|
(134) большое спасибо за пример, но всё равно немножко не то.
При использовании DDE можно получить любой параметр из базы, передав выполняемую строку, возвращающую значение. Также можно передать функцию ОткрытьФорму для открытия внешней обработки. Но, так как по DDE можно передавать только строки, то невозможно выполнить создание какого-то объекта. Хотя, процедуры глобального модуля вызываются на ура. Внешние обработки - это очень большая проблема безопасности, так как "умный" пользователь может её подредактировать - приходится их хранить на сетевом диске ReadOnly и вызывать только оттуда. Данный вариант хорошо подходит для идеи хранения кода в самой базе - тогда можно будет изменять код на лету без выхода всех пользователей. |
|||
141
Sadovnikov
16.01.09
✎
11:51
|
(140) А можно чуть подробнее? Зачем используется DDE? Если я не ошибаюсь, это устаревшая технология, на смену которой пришло OLE. Что вообще за задача?
|
|||
142
Torquader
16.01.09
✎
12:01
|
Задача в том, чтобы в открытый сеанс 1С из другой программы передать данные.
Другими словами, запускается программа-монитор. Она ожидает каких-либо событий в системе, и смотрит, запустилась ли 1С. Как только происходит событие - монитор "пинает" 1С и просит её выполнить обработку этого действия. Такой изощрённый способ позволяет избежать постоянного вызова процедур из обработки ожидания. |
|||
143
Vippi
16.01.09
✎
12:01
|
(138) Не верю.
|
|||
144
Ёпрст
гуру
16.01.09
✎
12:03
|
(142) а что мешает по оле запустить еще один сеанс из сторонней проги ? В нём делай всё что хочешь..
|
|||
145
Sadovnikov
16.01.09
✎
12:04
|
(142) Так и пусть этот монитор отдает 1С-ке нужный программный код.
И второе - чем пинать по DDE, ИМХО, лучше пнуть на сокет. Причем, в таком случае можно 1С-ке и файлик какой-нибудь скормить. Например, обработку, которую надо выполнить, а потом удалить. |
|||
146
smaharbA
16.01.09
✎
12:05
|
а не просче внешнее событие счупать ?
|
|||
147
smaharbA
16.01.09
✎
12:06
|
хотя ОЛЕ ще проще конечно, либо вообще робота и обычный запуск
|
|||
148
Torquader
16.01.09
✎
12:10
|
DDE гарантировано выполняет процедуры из глобального модуля.
Если писать внешнюю компоненту для прослушивания сокета, то она должна ещё и уметь обходить FireWall. Скармливать файл - это и есть ОткрытьФорму по DDE - а в форме ПриОткрытии - всё, что нужно сделать. OLEConnector - это замена DDE для 1С v8. У семёрки с OLE не срослось. Есть ещё более "изощрённый" способ - посылка в 1С сообщения WM_COMMAND с идентификатором какого-то пункта меню, который вызывает определённую функцию, но невиден пользователю - здесь проблема в том, что 1С бросает все свои дела (даже выполнение обработки или обработки проведения) и начинает выполнять обработку события. |
|||
149
Sadovnikov
16.01.09
✎
12:13
|
(148) Есть уже написанная и проверенная временем и дорогами ВК для работы с сокетами:
http://www.rikcenter.ru/downloads.php?file=5 и пример ее использования: http://www.rikcenter.ru/downloads.php?file=13 |
|||
150
Torquader
16.01.09
✎
12:13
|
(147) мысль с "роботом" уже рассматривается - один процесс на сервере делает всё, а с клиентов ему пишутся задания в определённый справочник.
На клиенте же всё равно нужно проверять события. Идея в том, что на клиенте пользователь вообще может закрыть 1С, а монитор - это сервисный процесс - он жив всегда и пользователь увидит сообщение о том, что он "поступил нехорошо", и 1С запустится автоматически. P.S. с написанием сервисных процессов у меня немного лучше, чем с "дрессировкой" 1С. |
|||
151
smaharbA
16.01.09
✎
12:13
|
(148) нифига она не бросает, надо только постмесадж, но тогда не гарантированный вызов, не понял почему у семерки ОЛЕ не срослось ?
|
|||
152
smaharbA
16.01.09
✎
12:14
|
(150) автоматически в пределах доверия станций запустить можно что угодно
|
|||
153
smaharbA
16.01.09
✎
12:15
|
+(152) целиком штатными средствами ОС
|
|||
154
Torquader
16.01.09
✎
12:20
|
(151) OLE в текущий открытый сеанс (чем ?).
Я пробовал вызывать управление бухгалтерскими итогами в сеансе пользователя, которому это не разрешено. При этом в сеансе выполнялась обработка, из которой проводились документы. "Умная" 1С посылкой ей SendMessage(УказательОкна1С,WM_COMMAND,ИдентификаторМенюДляВызоваОкна,0) успешно открыла окно, а потом SendMessage(УказательОкнаКнопкиПересчитать,WM_LBUTTONDOWN,0,0) запустило процесс пересчёта итогов в момент проведения документа (документ иногда проводился иногда нет). Факт в том, что 1С даже не проверила, а монопольно ли я в базе. Если делать через PostThreadMessage, то сообщения теряются из-за переполнения очереди и никто не гарантирует, что они испонятся. |
|||
155
Torquader
16.01.09
✎
12:22
|
(153) про WScript можно не рассказывать - я на нём даже базы данных пишу.
Причём там штатно есть метод eval, который позволяет исполнять код. (Сейчас пишу интерактивный отладчик кода, чтобы не можно было отлаживать написанное). |
|||
156
Sadovnikov
16.01.09
✎
12:23
|
(155) Ты по ссылкам из (149) сходил?
|
|||
157
Torquader
16.01.09
✎
12:26
|
Я их скачал - буду смотреть.
Пример чата я уже смотрел - проблема в том, что любая внешняя компонента к 1С требует запущеной 1С. Если 1С запускается на сервере терминалов, то если пользователь с клиентской машины не зашёл на сервер терминалов, то запустить 1С там нельзя. А чтобы показать сообщение пользователю на клиентской машине, нужно - чтобы там кто-то жил и мог показать это сообщение. |
|||
158
Guk
16.01.09
✎
12:34
|
(143) 2001 год. 80-100 активных юзеров. 30-40 из них в цитриксе. База 20 гигов. Ежедневный документооборот порядка 1,5 тыс. доков. Среднее количество строк в доке приблизительно 100. Ни одной ВК в системе. Всё работает. Тормоза редки и незначительны. Веришь?
Можешь не верить. А я с этим работал... |
|||
159
Torquader
16.01.09
✎
12:36
|
(158) про цитрикс поподробнее можно - сколько максимально пользователей можно "запихать" в терминале на один сервер, чтобы последний не "тормозил" на каждом нажатии?
|
|||
160
Guk
16.01.09
✎
12:44
|
(159) Не моя епархия. За цитрикс отдельный админ отвечал...
|
|||
161
Torquader
16.01.09
✎
12:45
|
(160) везёт же людям - у них отдельные админы.
А если всё и сразу, то только полная ж... и получается. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |