|
v7: Как сделать окно внешней обработки невидимым | ☑ | ||
---|---|---|---|---|
0
victuan1
26.05.16
✎
11:37
|
Через 1с++ можно сделать окно внешней обработки невидимым? Т.е. пользователь ее не видит. Но можно обращаться к ней из других форм через Форма.Параметр и процедуру ПриПовторномОткрытии().
|
|||
1
Ёпрст
26.05.16
✎
11:39
|
А зачем для этого форма обработки ?
ВыполняемыйМодуль или ДопГлобальник формекса .. или классы - покрывают все потребности |
|||
2
victuan1
26.05.16
✎
11:41
|
(1) Доп.глобальник вещь хорошая. Его я тоже задействую. Но хочется просто иметь еще контролы на форме, которые выберет и сохранит ответственный работник и скроет форму.
|
|||
3
victuan1
26.05.16
✎
11:42
|
Просто требуется создать тиражное решение, которое будет работать еще там, где политикой запрещен запуск 1с++, в этом случае форма останется видимой.
Если использовать доп.глобальник, то не получится вообще никак использовать где ВК запрещены. |
|||
4
victuan1
26.05.16
✎
11:43
|
И изменения в конфигурацию вносить нельзя
|
|||
5
Злопчинский
26.05.16
✎
12:59
|
(2) "Но хочется просто иметь еще контролы на форме, которые выберет и сохранит ответственный работник и скроет форму."
- юзверь выбрал контролы, нажал "далее/сформировать" - закрой форму (это только форма для ввода данных), открой другую форму в которой код выполнения и в процедуре "ПриОткрытии" делай все что надо без показа формы, потом сделал что надо - статусвозврата(0) и вернулся куда надо |
|||
6
Ёпрст
26.05.16
✎
13:04
|
(3) Где "ВК запрещены" - пихай сами вк в ert-ник, + все классы для работы туда же.. При запуске поделки извлекай их, запускай ВК, подключай классы. Пользователь ничего и не заметит :)))
|
|||
7
Ёпрст
26.05.16
✎
13:04
|
И твори, что хочешь.
|
|||
8
Ёпрст
26.05.16
✎
13:05
|
Можешь, и несколько ерт-ек запихать туда, до кучи, чтоб разные формы были.
При закрытии, можешь и "замести" следы - поудалять распакованные файлы. Или, в темповых директориях их распаковывай. |
|||
9
Злопчинский
26.05.16
✎
13:10
|
ну можно еще извращенно: при старте обработки считать ключи из реестра с положением окна, если их нет - вписать их туда принудительно, указав значения далеко за пределами экрана
|
|||
10
ДенисЧ
26.05.16
✎
13:14
|
(6) Заметит. В справка - о программе...
|
|||
11
Злопчинский
26.05.16
✎
13:54
|
еще можно через WSH получить "заголовок" окна и сделать с ним всякое непотребное
|
|||
12
Ёпрст
26.05.16
✎
14:22
|
(10) её можно тоже убирать, при подключении вк :)
|
|||
13
victuan1
26.05.16
✎
18:17
|
(6) Это, наверное, высший пилотаж. Я так не умею!
|
|||
14
mszsuz
26.05.16
✎
20:40
|
Переходите на 8-ку. Там легко )
|
|||
15
Злопчинский
26.05.16
✎
22:39
|
Муйня полная
Если для алгоритма не нужно окно - нахрена его держать открытым и делать невидимым? Не проще ли не открывать окно? |
|||
16
victuan1
27.05.16
✎
06:33
|
Задача такая.
Нужно сделать МОДУЛЬ для среды 1С7.7, который запускается в типовой конфигурации. Типовые объекты конфигурации (включая глобальный модуль) желательно не менять. Данный модуль является одновременно Интерфейсом для работы с Доп. Функционалом (назовем ИДФ), которого нет в типовой ТИС, а также модулем с Набором ОБЩИХ Переменных, Функций и Процедур (назовем НОП). К этому НОП обращаются: - как ИДФ, - так и ДОБАВЛЕННЫЕ в типовую конфигурации объекты метаданных (назовем ДОМ). ИДФ выполнен в виде внешней обработки. Поэтому и НОП находится в ней же. Вынести НОП в отдельную внешнюю обработку, чтобы вызывать без показа окна обработки (через СтатусВозврата(0) в ПриОткрытии) не приемлемо, т.к. НОП используется в ИДФ постоянно в цикле процедур и функций ИДФ. А открытие в цикле другой внешней обработки очень сильно скажется на скорости работы ИДФ. Т.о. ИДФ и НОП находятся в теле одной внешней обработки. ИДФ обычно всегда запущен, если пользователю он нужен для текущей работы. ДОМ также обращается к НОП, но изредка, поэтому скорость не важна и вызов из ДОМа НОПа, который находится в теле отдельной внешней обработки, вполне приемлем. Что и выполняется сейчас - ДОМ обращается к НОП через ИДФ. Обращение ДОМа к НОП идет через процедуру ПриПовторномОткрытии ИДФ. Т.е. ИДФ должен быть открытым, пока требуется работа ДОМа. Сделать обращение через процедуру ПриОткрытии неприемлемо, т.к. 1) ПриОткрытии ИДФ происходит инициализация переменных, которая может занять несколько секунд. Поэтому пока ИДФ открыт переменные определены, и можно обращаться к НОП через ПриПовторномОткрытии (при этом задержка в милисекундах) 2) Используется совместный режим работы ИДФ и ДОМа, когда НОП используется и ДОМом и ИДФом. Итак, задачу можно конкретизировать: - как физически организовать НОП, чтобы он: 1) был доступен для использования ИДФом без задержек по времени 2) был доступен для использования ДОМом (скорость обращения некритична в мс) 3) типовые объекты конфигурации не были бы изменены 4) работа пользователя не была бы остановлена из-за невозможности запустить сторонний по отношению к платформе 1С 7.7 функционал (в частности, внешние компоненты) |
|||
17
victuan1
27.05.16
✎
06:38
|
Один из вариантов организации НОП предложил Ёпрст: "ДопГлобальник формекса"
Но ищутся также другие варианты, менее зависимые от п. 4 конкретизированной задачи. |
|||
18
victuan1
27.05.16
✎
06:48
|
Да, забыл добавить - все 4 пункта Конкретизированной Задачи (КЗ) удовлетворяются текущей реализацией.
Но я добавляю п. 5 (который собсно и вынесен в сабж): 4) ДОМ должен уметь обращаться к НОП, когда ИДФ не нужен и поэтому не должен быть виден на экране. |
|||
19
Mikeware
27.05.16
✎
06:59
|
(13) обработки с файлами компонент внутри - лежат на инфостарте, под авторством Ёпрст.
как заметил Злоп, можно брать хедер окна и творить с ним непотребства, но тогда при закрытии программы надо будет самостоятельно уничтожать окно. И да, политикой разрешать запускать всякие поделки (ИДФ, ДОМ и НОТ), и запрещать этой же политикой 1с++ и формекс - это идиотизм. Они стали стандартом де-факто |
|||
20
victuan1
27.05.16
✎
07:08
|
(19) Запретить формекс ведь может не политика, а неисправность ОС (включая ограниченные права пользователя). А останавливать бизнес нельзя (на устранение неисправности / лечение сисадмина) - это же деньги!
А на ИДФ, ДОМ, НОП эта неисправность ОС не повлиеят, т.к. они часть 1С, если 1С запустилась, то и они будут работать. Поэтому п.4 КЗ для меня на тек. момент приоритетнее, чем п.5: 5) ДОМ должен уметь обращаться к НОП, когда ИДФ не нужен и поэтому не должен быть виден на экране. |
|||
21
victuan1
27.05.16
✎
07:14
|
(19) Вариант Ёпрста у меня на заметке - т.к. нравится идейно.
Если не будет предложено альтернатив - начну рассматривать. Вариант Злопа мне не нра - это как Апендицит лечить через Ж. |
|||
22
victuan1
27.05.16
✎
07:30
|
(19) Не нашел такую обработку на ИС. Можешь дать ссылку или название?
(6) У тебя есть пример этой реализации? На ИС не нашел. |
|||
23
Ёпрст
27.05.16
✎
08:07
|
(22)
Ну вот, как пример: там и 2 вк, и подключаемые классы и доп глобальник. Правда, вк уже старые, но можно и поновее встроить. http://catalog.mista.ru/public/79515/ |
|||
24
1Сергей
27.05.16
✎
08:17
|
тему не читал. Не предлагали ещё при открытии проверять параметры и выполнять все действия до открытия?
|
|||
25
Злопчинский
27.05.16
✎
09:02
|
с формексом и WSH (что можно рассматривать как ВК) - неинтересно...
можно было попытаться сделать окно минимального размера, но движок не дает - миниумм 70x35 |
|||
26
пипец
27.05.16
✎
09:33
|
нипонел - статусвозврата и возврат при открытии после формирования запретили ?
|
|||
27
Злопчинский
27.05.16
✎
10:09
|
(26) автор декларирует что накладные расходы на открытие обработки - слишком высоки
|
|||
28
пипец
27.05.16
✎
10:21
|
подумал - он походу или "закладку" хочет или как в анекдоте - выкопать ямку в песке и принести ее домой (с) )))
|
|||
29
Mikeware
27.05.16
✎
10:22
|
(28) :-)))
|
|||
30
Злопчинский
27.05.16
✎
10:49
|
допустим без всяких ВК сделали окно невидимым.
вопрос в том, как сделать его видимым снова - это же надо как-то команду дать "хочу сделать окно такой-то обработки сделать видимым" - причем это окно не в фокусе... |
|||
31
victuan1
27.05.16
✎
11:26
|
(30) Ну можно и не делать видимым.
Можно пользователей разделить на две категории: - операторы - они работают всегда в ИДФ, поэтому у них окно ВСЕГДА видимое. - кассиры - они не работают в ИДФ, поэтому окно для них всегда невидимое. Главное, чтобы при закрытии 1С это окно корректно завершало свою работу. |
|||
32
victuan1
27.05.16
✎
11:27
|
WSH у меня кстати используется для вызова команды Run, поэтому его нет в списке запрета.
|
|||
33
victuan1
27.05.16
✎
11:28
|
(25) Еще бы запретить движку его разворачивать надо?
|
|||
34
Злопчинский
27.05.16
✎
11:31
|
(32) WSH по идее может быть запрещен политиками безопасности
|
|||
35
Злопчинский
27.05.16
✎
11:32
|
(33) В формексе есть предопределенные процедуры на этот счет вроде
|
|||
36
Ёпрст
27.05.16
✎
15:54
|
Еще можешь это посмотреть.
Как "нечто" работает почти во всех формах. http://catalog.mista.ru/public/20885/ Думаю, это "почти" то, что тебе надо |
|||
37
victuan1
27.05.16
✎
18:44
|
Осталось теперь найти время во всем этом разобраться. Кто готов поделиться свободным временем?
(36) У тебя есть время мне сделать для меня более детальные примеры? |
|||
38
Duke1C
28.05.16
✎
17:32
|
(37) "Не болтайте ерундой". Внешний глобальный модуль закроет все потребности на 100%. Тем более что в сабже присутсвует: "Через 1с++ можно сделать окно внешней обработки невидимым?" - т.е. 1С++ для этих целей прикрутить нормально, а Formex нет???
К тому же, если мне память не изменяет, обе эти компоненты грузятся не требуя регистрации в реестре |
|||
39
Torquader
28.05.16
✎
23:06
|
Если вам не дают "внешек", то смотрим в сторону DDE - из него из сторонней программы (которую мы спокойно запускаем из обработки) можно открывать любую внешнюю обработку, передавая команду OpenForm.
Решение очень подходит для конфигураций, где не разрешается что-то писать в реестр (только Exe всё равно придётся сделать). |
|||
40
victuan1
29.05.16
✎
19:43
|
(39) А formex будет корректно работать, если ему запретить писать в реестр?
|
|||
41
Ёпрст
31.05.16
✎
09:54
|
(40) будет. Что 1cpp, что formex, сто лет в обед не требуют регистрации в реестре
|
|||
42
victuan1
01.06.16
✎
07:25
|
Рекомендуется при запуске использовать vkloader.dll ?
|
|||
43
Mikeware
01.06.16
✎
07:27
|
(42) зачем?
|
|||
44
victuan1
01.06.16
✎
07:51
|
(43) А зачем дан пример запуска 1с++ через нее?
http://openconf.1cpp.ru/vk/vkloader/ ЗагрузитьВнешнююКомпоненту("vkloader.dll"); звк = СоздатьОбъект("ЗагрузчикВК"); Рез = звк.КодЗагрузки("1cpp.dll"); Если Рез.КодОшибки = 0 Тогда Сообщить(Рез.Результат); Иначе Сообщить("Ошибка " + Рез.КодОшибки + РазделительСтрок + Рез.Результат); КонецЕсли; |
|||
45
victuan1
01.06.16
✎
07:53
|
Можно ли, используя формеркс, объявить переменную, чтобы ее значение было доступно во всех контекстах (модулях объектах конфигурации, внешних обработках), без объявления этой переменной в глобальном модуле?
Или, как сделать ссылку на внешний гл. модуль доступной во всех контекстах? |
|||
46
Ёпрст
01.06.16
✎
08:19
|
(44) Это для старых сборок 1cpp, когда она еще была реестрозависима
|
|||
47
Ёпрст
01.06.16
✎
08:20
|
(45) доп глобальник формекса или свой класс.
|
|||
48
Ёпрст
01.06.16
✎
08:21
|
посмотри ужо мои примеры, там всё есть. Например, в редакторе форм, у всех форм есть формулы и своё меню. Можешь еще поделку Undo посмотреть - там "запоминаются" все атрибуты формы, и по-кругу можно нажимать Ctrl+z для возврата к прежним значениям любых реквизитов формы.
|
|||
49
Ёпрст
01.06.16
✎
08:22
|
вот в ней - добавляется формула во все формы..например.
|
|||
50
victuan1
01.06.16
✎
08:30
|
(48) Посмотрю. Пока время не освободилось. В перерывы задаю вопросы, чтобы потом не забыть про них.
Заглянул как в КАМИНе защита сделана. Похоже они формекс (или 1с++) переименовали в kmnGUARD.mod и теперь называют это своей поделкой: Там такой код есть: Если (ФС.СуществуетФайл(КаталогИБ()+"vkloader.dll") = 1) Тогда ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"vkloader.dll"); Загрузчик = СоздатьОбъект("ЗагрузчикВК"); Результат = Загрузчик.ЗагрузитьВК(КаталогИБ()+"ExtForms\KMNGuard.mod", "Addin.KMNGuard=E6C9C319-46F2-451f-BBCA-B8E836FF0105"); Иначе ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"ExtForms\KMNGuard.mod"); КонецЕсли; ГлобальныйМодуль = СоздатьОбъект("KMNGuardObject"); ГлобальныйМодуль.Подключить(); ... ГлобальныйМодуль.ОбрРН(Число(Константа.РегНомПП), л_ФлагРН, 1); Это что? внешний глобальник подключается? Но переменная ГлобальныйМодуль объявлена в основном гл.модуле Перем ГлобальныйМодуль Экспорт; |
|||
51
Mikeware
01.06.16
✎
08:32
|
(47) Шоб не плодить темы....
ПОдскажи, как правильно вызвать функцию, объявленую в доп глобальнике? 1.функция формируется динамически, т.е. при компиляции классов ее еще не существует, как и доп. глобальника 2. при наличии в тексте класса ее вызова - платформа при компиляции классов ругается на отсутсвие такой функции (ну что логично). 3. обошелся вызовом через шаблон, с передачей документа через ЗначениеВСТрокуВнутр, но как-то это неправильно... |
|||
52
Mikeware
01.06.16
✎
08:34
|
(50) Ну вопросы по Камину - наверное, надо задавать каминовцам?
Но судя по тексту, у них это не "внешний глобальник", а просто вынесенный функционал. |
|||
53
victuan1
01.06.16
✎
08:35
|
А где храниться модуль этого глобальника? Наверное, в list.ert. Я этот файл средствами 1с даже открыть не могу: выдает ошибку "Общая файловая ошибка при доступе"
|
|||
54
victuan1
01.06.16
✎
08:37
|
(52) Так они и раскроют мне свою защиту... Ладно, бог с ним с камином.
Как можно защитить текст внешнего глобальника? Только КЗК2 или средства formex тоже позволяют? |
|||
55
Mikeware
01.06.16
✎
08:42
|
(53) кроме "средств 1с" есть много чего другого... и "модуля этого глобальника" скорее всего просто не существует в связи с отсутсвинм собственно "этого глобальника". Есть объект, и реализации функций этого объекта.
(54) скорее всего, никак. КЗК, насколько помню, защищает конфигурации целиком. Можно, конечно, обсфуцировать. |
|||
56
victuan1
01.06.16
✎
08:46
|
(55) Нет, КЗК2 может защищать отдельно внешние обработки. Надо будет на досуге поразбираться с КЗК-2.
|
|||
57
victuan1
01.06.16
✎
09:31
|
(23) А сколько времени занимает извлечение файлов? А как встроить поновее? После выполнения модуля извлеченные файлы не удаляются?
Вот это что делает? Модуль.УстановитьМодуль("т = КонтекстФормыОбработки"); К фунциям доп.глобальника можно обращаться только через Шаблон()? |
|||
58
Mikeware
01.06.16
✎
10:14
|
(57)
http://www.1cpp.ru/docum/html/extobjs.html#id25 конкретно данный код формирует для исполдлнения модуль с единственной строчкой "т = КонтекстФормыОбработки" след.строка пытается этот модуль скомпилировать. Если компиляция успешна, значит, существует переменная КонтекстФормыОбработки, значит, глобальник с этой переменной уже загружен... |
|||
59
Ёпрст
01.06.16
✎
12:59
|
||||
60
Ёпрст
01.06.16
✎
13:03
|
(53)там всё запаковано в саму dll
|
|||
61
Ёпрст
01.06.16
✎
13:04
|
(57) поновее - просто сдалать новые картинки на вк и положить в моксель.
|
|||
62
Ёпрст
01.06.16
✎
13:04
|
(51) я прям так не вспомню, как обходил это. Через шаблон, хз, главное - шо работает. Вспоминать надо :)
|
|||
63
Mikeware
01.06.16
✎
13:30
|
(62) через выполняемый модуль тоже заработало...
|
|||
64
ДенисЧ
01.06.16
✎
13:32
|
||||
65
Mikeware
01.06.16
✎
13:42
|
(64) ну, не совсем.
мне сейчас нужно привести базу в приличный вид для переноса в УПП. И база при этом - файловая... вот и приходится почти как на картинке, только не лизать, а кусать... "Финал чемпионата мира по вольной борьбе. В массажной мнут нашего борца. Тренер даёт последние наставления: - Запомни, ты сильнее, моложе, быстрее. Ты уже почти чемпион. Только помни одно- НЕ ПОПАДИ В ШЕЙНЫЙ ЗАХВАТ!!! Ещё не один человек на земле не вырвался из его захвата. Ты всё понял? - Понял тренер. - Всё иди. Борец выходит на татами и через 5 секунд в захвате. Тренер разворачивается и матерясь уходит в тренерскую. С горя наливается водкой продолжая матерится. И вдруг до его слуха доносится:"Союз нерушимый..." Выскочил тренер в зал и видит, как на его воспитанника навешивают золото. Когда утихли овации подзывает тренер к себе воспитанника. - Не понял как это ты...? - Понимаешь тренер, зажал он меня, я от боли не вдохнуть не пёрнуть и тут вижу передо мной его яйца висят осмотрелся, судья вроде не видит ну я пасть пошире раззявил да как вцеплюсь... - Ну и...? - Что ну, что ну тренер, ты себе даже не представляешь на что способен человек укусивший себя за яйца!!!" © |
|||
66
victuan1
02.06.16
✎
05:35
|
(61) А как сделать новые картинки? Какой программой?
И картинки извлекаются через серию промежуточных файлов -> mxl -> bmp -> dll. Нельзя ли сразу в длл, а промежуточные файлы только в опер.памяти хранить? |
|||
67
VladZ
02.06.16
✎
05:55
|
(16) Я бы делал так: 1с++ и использовать классы.
|
|||
68
victuan1
02.06.16
✎
08:51
|
(67) Мне больше понравилась идея: формекс и внешний глобальник.
|
|||
69
Ёпрст
02.06.16
✎
10:12
|
(66) все известные валяются на нимфостарте
|
|||
70
Ёпрст
02.06.16
✎
10:14
|
там и Маляеева есть алгоритм и еще один, который я в свою поделку запихал - там есть указание автора в коде, вроде и адрес, где поделка валяется + есть еще пара изделий для упаковки чего либо в моксель
|
|||
71
victuan1
04.06.16
✎
11:49
|
Оказывается, что формер и 1с++ не работают на 64-битной Виндовс 10?
Вот народ мучается http://forum.infostart.ru/forum24/topic140854/message1567515/?result=reply#message1567515 |
|||
72
victuan1
04.06.16
✎
11:49
|
*не формер, а формекс
|
|||
73
mikecool
04.06.16
✎
13:52
|
(31) есть типовые слои, скрыть одному и показать другому
|
|||
74
Djelf
04.06.16
✎
15:52
|
(0) Вот это глянь http://catalog.mista.ru/public/57767/
https://cloud.mail.ru/public/DU7L/UKhc4YFXh Чуток подпилить и кажется это то что надо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |