Имя: Пароль:
1C
1C 7.7
v7: Как сделать окно внешней обработки невидимым - 2
0 victuan1
 
27.07.16
18:26
Продолжение темы Как сделать окно внешней обработки невидимым

Через 1с++ можно сделать окно внешней обработки невидимым? Т.е. пользователь ее не видит. Но можно обращаться к ней из других форм через Форма.Параметр и процедуру ПриПовторномОткрытии().

Ёпрст: А зачем для этого форма обработки ?
ВыполняемыйМодуль(2) или ДопГлобальник(1) формекса .. или классы(3) - покрывают все потребности

(1) Если использовать ДопГлобальник, то модуль не проходит синтаксический контроль при использовании процедур и функций ДопГлобальника.
Можно? конечно, ДопГлобальник загружать в модуле одной обработки, а использовать в модуле другой, но рой синтаксических ошибок всё равно будет мешать в конфигураторе.

Использовать Шаблон? Некрасиво, и не получится определить в ДопГлобальнике процедуры. А функции должны будут возвращать только простые типы данных, либо придется результат оборачивать в ЗначениеВСтрокуВнутр. Использование этих доп. функций (Шаблон, ЗначениеВстрокуВнутр, ЗначениеИзСтрокиВнутр) наверняка скажется на производительности.

Как изящно решить проблему?
1 orefkov
 
27.07.16
18:42
классы
2 victuan1
 
27.07.16
18:50
Как с помощью классов объявить глоб. переменную, не изменяя основной глобальный модуль?
Эта переменная должна быть доступна в модулях внешних обработок и модулях некоторых справочников и документов.
3 victuan1
 
27.07.16
18:53
ГМЕ = СоздатьОбъект("МойКласс");
Или как сделать чтобы ссылка ГМЕ не разрушалась при закрытии обработки и была доступна в контексте другого открываемого модуля?
4 arsik
 
гуру
27.07.16
19:04
(3) Объявить экспортную переменную ГМЕ в глобальном модуле религия не позволяет?
5 victuan1
 
27.07.16
19:08
(4) Если бы позволяла, то я бы туда запихал все свои доп. процедуры и функции, и зачем мне тогда нужны были бы Классы, ВМ или ДопГлобальник?
6 arsik
 
гуру
27.07.16
19:19
(5) Ну если глобальник нельзя менять, то возможно там уже опубликованы глобальные переменные и не факт что все они используются. Посмотри внимательно.
7 arsik
 
гуру
27.07.16
19:20
(5) Какая конфа?
8 akaBrr
 
27.07.16
19:23
(2) Как с помощью внешней обработки это сделать?
9 victuan1
 
27.07.16
19:30
(7) Любая (ТИС, Бух, УСН), поэтому список свободных гл. переменных не известен.
10 victuan1
 
27.07.16
19:30
(8) Что именно сделать?
11 akaBrr
 
27.07.16
19:40
(10) Как с помощью классов объявить глоб. переменную, не изменяя основной глобальный модуль?
Эта переменная должна быть доступна в модулях внешних обработок и модулях некоторых справочников и документов.  

вот это было написано в (2)

как вы собирались это делать через внешнюю обработку?
12 arsik
 
гуру
27.07.16
19:42
(9) Во всех стандартных практически есть работа с торговым оборудованием. Для этого выделенная отдельная глобальная переменная. пользуйся ей.
13 arsik
 
гуру
27.07.16
19:43
И в принципе можешь весь функционал сделать как обработку подключаемого оборудования.
14 victuan1
 
27.07.16
19:47
(11) С помощью формекс можно подключить Доп. Гл. модуль, в котором объявлена экспортная переменная. Она будет доступна во всех модулях конфигурации и внешних обработках даже после закрытия этой внешней обработки.
Но возникают проблемы, описанные в (0) и я их не могу решить ((
15 victuan1
 
27.07.16
19:48
(12) Эта переменная мне нужна для обслуживания торгового оборудования. Если я ее перепределю, то разве смогу нормально пользоваться торговым оборудованием?
16 victuan1
 
27.07.16
19:50
Либо сохранять значения переменных в файле или в реестре. Но это ваще жесть!
17 arsik
 
гуру
27.07.16
19:53
(15) Если я правильно помню, там в переменной хранится ссылка на массив подключенного оборудования. Ну добавь в этот массив еще свое "оборудование".
18 arsik
 
гуру
27.07.16
19:55
+ (17) Вроде не массив а ТЗ
Будет у тебя обращение через точку только.
глТорговоеОборудование.ГМЕ
19 victuan1
 
27.07.16
20:03
(18) Нет там такой переменной.
20 victuan1
 
27.07.16
20:06
Ладно, допустим уговорили на использование гл. переменной в основном гл. модуле.
Что лучше использовать Класс или ВыполняемыйМодуль?
Через тот и другой можно обращаться к функциям, процедурам и переменным через точку.

Классы менее удобны тем, что нужно держать в каталоге базы defcls, который должен учесть определения других классов, если они были задействованы конфигурацией до начала ее адаптации под мои задачи
21 Злопчинский
 
27.07.16
23:20
задвинь окно обработки за пределы окна программно и все - чем не подходит?
22 victuan1
 
28.07.16
04:34
(21) У меня аппетиты выросли) Нужно чтобы контекст этой обработки был доступен из других модулей конфигурации. Для этого того нужен 1с++. А раз он нужен, то лучше я вынесу эти функции/обработки/переменные в отдельный ВыполняемыйМодуль (или Класс? пока не решил, что лучше).

Доп. глобальный модуль Формекса не подходит, т.к. его функции/процедуры/переменные не будут проходит синтаксический контроль в модулях, что очень не удобно при отладке и разработки программы (а этот этап будет продолжительным).

Поэтому выбираю ВМ (или класс?), т.к. он (в отличие от допглобальника) позволяет обращаться к функциям/процедурам/переменным через точку (селектор), а это позволяет пройти синтаксический контроль.
23 Это_mike
 
28.07.16
07:32
А прикольно -  править "модули некоторых справочников и документов" религия не запрещает, а добавить одну переменную в глобальник - запрещает.

Если будет система классов, определяемых пользователем - то все равно в глобальник придется вносить изменения (грузить 1спп).
Хотя я - за классы...
24 Это_mike
 
28.07.16
07:34
(22) для отладки - можно определить переменные, функции и процедуры в глобальнике.
25 victuan1
 
28.07.16
07:57
(23) Нельзя править типовые объекты метаданных: глМодуль, справочники, документы и т.д.
Можно править те объекты метаданных, которые были добавлены в конфигурацию: справочники, документы и которые не влияют на типовые объекты метаданных.

Это сделано для того, чтобы можно было обновлять конфигурацию типовыми релизами через "Объединение конфигурации" и при этом, чтобы ничего не сломалось.

Грузить 1с++ не обязательно через гл.модуль, ее можно загрузить из внешней обработки, которую откроет пользователь, или из модулей добавленных объектов метаданных (справочников, документов) при первом обращении к ним пользователя.
26 victuan1
 
28.07.16
08:00
(24) Можно и так. Но мне проще временно объявить в глобальнике  одну переменную, которая будет глобальной ссылкой на ВМ или Класс.

При желании в рабочем режиме эту переменную можно изъять из гл.модуля, а объявить как переменную, инициализируемую внешним гл. модулем, который будет содержать только эту экспортную переменную. А остальной функционал реализовать через ВМ или Класс.
27 Это_mike
 
28.07.16
08:11
(26) именно так.
кстати, если уж сильно приспичило, дефкласс можно создать/ подредактировать при первом запуске обработки, и попросить пользователей перезапуститься.
Можно поэкспериментировать с автоматической выгрузкой модулей классов из самой обработки как у Ёпрст сделано, емнип - метода Маляева?)
28 victuan1
 
28.07.16
08:14
Сейчас экспериментирую с ВМ, при этом текст модуля я защитил КЗК2, но происходит падение 1С. Написал Альфу:
При вызове процедур и функции выполняемого модуля (ВМ_КЗК.txt), комплированного с помощью КЗК-2, падает 1С на операторе "Сообщить" внутри компилированного модуля. Оператор "Предупреждение" работает успешно.
Если этот модуль выполнять не в компилированном виде (ВМ_КЗК.txt.bk1), то падения не происходит.
Также не происходит падения если компилированный модуль подключать как внешний глобальный модуль (а не выполняемый модуль).
29 victuan1
 
28.07.16
08:16
(27) По сути, что Класс, что ВМ, в моем случае - одно и тоже. Тот же вызов переменных/процедур/функций через объект с точкой.
Почему приверженность именно к Классу, а не к ВМ (выполняемому модулю)?
30 Это_mike
 
28.07.16
08:25
(29) потому, что один раз созданый, объект класса обладает всем нужным функционалом, и предоставляет наружу только то, что надо. Это идеологически правильно.
Хотя хез, что у тебя за задача.
31 victuan1
 
28.07.16
09:01
(30) ВМ тоже можно создавать один раз, сразу после загрузки 1С++.
У меня это просто набор переменных, функций и процедур, которые ничего не визуализируют на форме или где бы ни было. Просто что-то делают и возвращают результат выполнения.
32 Злопчинский
 
28.07.16
11:39
ЕГАИС пилишь или что-то зарплатное?
33 victuan1
 
28.07.16
14:17
(32) ЕГАИС
34 Это_mike
 
28.07.16
14:32
(33) пока допилишь - уже отменят :-)
35 Ёпрст
 
28.07.16
14:32
Вообще не понимаю, в чем у тебя проблема.
Пишешь обработку, пихаешь в неё все свои вк, формы, классы.
При старте, анализируешь, загружены ли вк, если нет, грузишь, далее проверяешь, запущены ли твои классы, если нет, грузишь, далее проверяешь, есть ли твой доп глобальник, если нет, грузишь.. усё собственна.
Можешь еще и кучу других обработок туда напихать, при желании.
36 Ёпрст
 
28.07.16
14:33
Пример:
тут и вк и загрузка класса и доп глобальник:
http://catalog.mista.ru/public/79515/
37 Ёпрст
 
28.07.16
14:37
Ну, а используя Перехватчик, так можешь вообше творить чудеса
38 victuan1
 
28.07.16
14:39
(34) Я даже не мечтаю уже об этом )))
При старте обработки, если 1с++ был уже загружена (например, ПриНачалеРаботыСистемы), то как дозагрузить свои классы?
Как обработка пройдет синтаксический контроль, если использует переменные/процедуры/функции, объявленные в доп.глобальнике?
39 Ёпрст
 
28.07.16
14:47
(38) дык скачай поделку да посмотри
40 Ёпрст
 
28.07.16
14:47
там нет проблем с синтаксисом
41 Ёпрст
 
28.07.16
14:49
На счет классов, их не обязательно загружать в приначалеработы системы, если че.
42 victuan1
 
28.07.16
14:50
(39) Понял, я просто не ту смотрел. Я смотрел Редактор2
(41) Разве классы не нужно определять через Дефкласс.прн до загрузки 1с++?
43 Это_mike
 
28.07.16
14:51
(40) кстати, а как в перехватчике (да и вообще) с проверкой синтаксиса вирт() ?
44 Это_mike
 
28.07.16
14:51
(41) Хм. обана....
45 Ёпрст
 
28.07.16
14:53
(42) их можно загрузить потом, через объект MetaInfoClasses
46 Ёпрст
 
28.07.16
14:53
предварительно проверив их существование
47 victuan1
 
28.07.16
14:58
(41) Ага, увидел. Классы можно подгружать уже при загруженной 1с++ через МетаИнфо.
48 victuan1
 
28.07.16
15:02
(40) Увидел доп.глобальник. Один хрен, ты его функции обернул в Шаблон, либо используешь в формуле контролов на форме.
Для меня это не приемлемо.
Красивых способов использовать методы допглобальника не существует?
49 Это_mike
 
28.07.16
15:03
(45)ну тогда задача (0) решена
50 Это_mike
 
28.07.16
15:04
(48) вызовы из реквизитов диалога, например :-)
51 victuan1
 
28.07.16
15:04
За динамическое подключение класса спасибо, наверное, теперь буду использовать Класс вместо ВМ (выполняемого модуля). Хотя реализация их использования одинакова, что в лоб, что по лбу. Там и там через точку.
52 victuan1
 
28.07.16
15:06
(49) Не решена пока не будет найден изящный способ объявить глобальную переменную без вмешательства в основной гл. модуль.
53 victuan1
 
28.07.16
15:07
Я же ведь не смогу сохранить значение переменной, созданной в экземпляре моего класса, т.к. после закрытия обработки, он будет разрушен.
54 victuan1
 
28.07.16
15:07
(50) Написал же в том же посте, что это неприемлимо ), нужно использовать в модуле и без Шаблона
55 Это_mike
 
28.07.16
15:08
(52) сделай дополнительный.
56 Это_mike
 
28.07.16
15:09
(53) Переменная в глобальнике. в дополнительном.
57 Ёпрст
 
28.07.16
15:09
(52) дык определяй в доп глобальнике, делов то
58 victuan1
 
28.07.16
15:10
(55) Но эта переменная не будет проходить синтаксический контроль в конфигураторе. Неудобно для отладки программы)
59 Ёпрст
 
28.07.16
15:12
(58) всё будет
60 Ёпрст
 
28.07.16
15:12
И это, методы доп глобальника я использую в своём классе, там нет шбалона, о котором ты пишешь, смотри внимательнее
61 Это_mike
 
28.07.16
15:12
(58) оборачивай в ложное условие, в конце концов..
62 Ёпрст
 
28.07.16
15:14
(61) тоже вариант
63 Ёпрст
 
28.07.16
15:14
ТС просто на ровном месте буксует.
Объяснил бы конкретнее, чего надо что ле.
64 victuan1
 
28.07.16
15:14
(59) В режиме Предприяетие будет, но не в режиме Конфигуратор. (60) Ты используешь доп.глобальник в Классе, т.е. то и то.
Мне маслить малясное не нужно, нужно выбрать либо Класс либо доп.глобальник.

Поэтому я выбираю Класс, а доп.глобальник оставляю на всякий случай, когда религия запретит использовать в осн. гл.модуле доп. переменную )))
65 victuan1
 
28.07.16
15:15
(63) Нет, я не буксую. Я уже на финишной прямой - шлифую углы. )
66 Ёпрст
 
28.07.16
15:16
(64) а какая разница что использовать ?
67 Это_mike
 
28.07.16
15:16
(64) когда ты куда-нибудь идешь, ты тоже выбираешь, либо шагать левой ноо, либо правой?
68 Это_mike
 
28.07.16
15:16
(65) только почему ты их шлифуешь головой, если надо это делать руками?
69 Ёпрст
 
28.07.16
15:17
По-уму, лучше вообще через турбомд лепить. Там и контролы создавть
70 victuan1
 
28.07.16
15:17
Я колебался между Классом и ВМ, но Ёпрст показал как его дозагружать "на лету".
Теперь для меня эти два объекта равнозначны.
Есть ли особенности по скорости работы этих двух объектов?
71 victuan1
 
28.07.16
15:18
(68) Почему ты так считаешь? Я уже написал горку кода с использованием ВМ. С целью тестирования.
72 victuan1
 
28.07.16
15:19
(67) Тут выбор пока в направлении пути)
73 victuan1
 
28.07.16
15:19
Между допглобальником и ВМ/Классом.
А вот выбор между ВМ и Классом это уже выбор ноги.
74 victuan1
 
28.07.16
15:20
Есть опыт какая нога легче на подъем (быстрее) - левая или правая (ВМ или Класс)?
75 victuan1
 
28.07.16
15:21
(69) Пока задача стоит сделать обертку исключительно для кода, а не для визуализации.
76 victuan1
 
28.07.16
15:23
(61)
Если 1=0 Тогда
гме = 0
КонецЕсли;

Хорошая идея.
77 Ёпрст
 
28.07.16
15:23
как то у тебя каша какая то, класс это класс, с его методами, наследованием, перезагрузкой методов.
А вм, это вм, всего лишь обёртка для доп процедур и существует, пока переменная вм жива. Класс же есть всегда, пока его спецом не выгрузишь
78 Ёпрст
 
28.07.16
15:24
(76) это [:]||||||[:]
который перекочевал в снеговик, чтобы пофигуратор определял что за объект и показывал методы через точку.
79 victuan1
 
28.07.16
15:26
(77) Значит, Класс быстрее, т.к. при повторной инициализации не теряется время на компиляцию.
80 victuan1
 
28.07.16
15:27
Ладно, иду ваять. По ходу пьесы буду возвращаться в тему.
81 DrZombi
 
гуру
28.07.16
15:40
(78) Хотя 1С не рекомендует так писать код, захламляя его лишними командами :)
82 Это_mike
 
28.07.16
15:42
(74) ВМ/ГМ привычнее поначалу, классы логичней.
83 Это_mike
 
28.07.16
15:43
(81) вместо чтоб "порекомендовать", сделали бы нормальный редактор, как телепат в клющках
84 victuan1
 
28.07.16
16:12
Сочетая ГМ/ВМ|Классы не удобно то, что приходится использовать разные ВК (1с++/Формекс). Было бы удобней, если бы сделали сборку единой ВК:
icpp.dll+formex.dll+precomp.dll
85 Это_mike
 
28.07.16
16:15
(84) формекс когда-то был в составе 1с++. потом АЛьФ чой-то обиделся...
86 Ёпрст
 
28.07.16
16:34
(85) не, просто было тяжело компилить в одну вк, тогда оне стремительно развивались, проще было разделить
87 victuan1
 
28.07.16
16:46
(86) Сейчас нет развития - можно и соединить.
88 Это_mike
 
28.07.16
16:48
(87) а оно надо?
их уже вообще пора забывать...
89 victuan1
 
28.07.16
17:04
(88) Ты не представляешь сколько клиентов на клюшках, которые не собираются никуда переходить
90 Это_mike
 
28.07.16
17:06
(89) Найти бы нормальных... и на удаленку...
91 victuan1
 
28.07.16
17:14
(90) Я нашел, теперь отдых только снится)))
92 victuan1
 
28.07.16
18:08
Вот засада... МетаИнфо с какого релиза 1с++ поддерживается?
93 Ёпрст
 
28.07.16
18:10
(92) ну, все icpp его поддерживают
94 Ёпрст
 
28.07.16
18:10
а у тя че, древняя, с встроенным формексом поди, да ?
95 victuan1
 
28.07.16
18:12
мммм. К примеру стоит у клиента древняя 1с++, на которой уже наворочено в 1ске хрен до кучи. Он поставит icpp и у него не взлетит годами выстраданный функционал.
Может такое быть? Я читал, что icpp обратно не совместима со старыми версиями.
96 Ёпрст
 
28.07.16
18:13
(95) там вся несовместимость, только со старыми методами формекса - чутка другие методы создания контролов и объекта сервис. Минимум изменений.
97 victuan1
 
28.07.16
18:13
(94) У меня и древняя стоит, ее я баловался с универсальным переносом данных между неодинаковыми базами клюшек.
98 Ёпрст
 
28.07.16
18:13
причем, можно написать универсальный код, чтоб работало и там и там
99 victuan1
 
28.07.16
18:22
(98) Ладно, будешь моим консультантом в сложных случаях ;)
100 Ёпрст
 
28.07.16
18:24
(99) если вспомню
101 Злопчинский
 
28.07.16
19:51
(94) Ёпрст, скажи как попытный гуру
- какую версию 1С++ ставить в продакшен сейчас
- какую версию формекса
102 Злопчинский
 
28.07.16
19:51
а... попытный = опытный
;-)
103 victuan1
 
28.07.16
20:10
(101) Он давал ссылки здесь:
http://catalog.mista.ru/public/20885/
1cpp.dll      http://www.1cpp.ru/images/3/32/Icpp-latest.rar
formex.dll  http://www.dorex.ru/files/?formex_t.zip
104 Garykom
 
гуру
28.07.16
20:11
Может хорош уже вире/троянописателям то подсказывать?
105 Garykom
 
гуру
28.07.16
20:12
(103) dorex того (( почил в бозе
106 Это_mike
 
28.07.16
21:02
Забавно, что у Масяньки были какие-то траблы с чуть более старой версией формекса, нежели последняя...
107 Злопчинский
 
29.07.16
00:30
(103) вообщем-то насколько я себе представляю на дорекспро лежала некая "финальная" версия. после которой формекс был отдан на разграбление и развивался/дорабатывался уже не Альфом (на 1С++ форуме).

собственно поэтому и ветка
108 victuan1
 
29.07.16
04:15
(107) Разве дорекс.про не сайт Альфа?
http://dorex.pro/?projects&formex&download
109 victuan1
 
29.07.16
06:16
(36) RegEditor выдал ошибки:
=== Syntax error в модуле 'unknown' 42951144
т = КонтекстФормыОбработки<<?>>
{(1)}: Переменная не определена (КонтекстФормыОбработки)

Старая версия 1с++? Как избежать этих ошибок, если вдруг у клиента окажется старая версия?
110 victuan1
 
29.07.16
06:29
1С 2.5.0.7, 3-ю версию ставить надо?
111 victuan1
 
29.07.16
06:31
3-я версия 1с++ не ставит себя в Сервис-Параметры, где теперь настройки "Оптимизация", "Отладка" и т.д. смотреть?
112 Это_mike
 
29.07.16
07:14
(111) Помощь-О программе?
113 victuan1
 
29.07.16
07:18
(112) Нет там эти настроек
114 victuan1
 
29.07.16
07:19
Точнее, они там ReadOnly. Интерактивно менять не дает.
115 Это_mike
 
29.07.16
07:44
116 victuan1
 
29.07.16
08:09
(115) "Эти 3 настройки ВК настраиваются в параметрах 1С на закладке Настройки 1С++"
Так вот нет этой закладки в Сервис - Параметры, если 1с++ версии 3.х. Если версии 2.х, то - есть!
ЧЯДНТ?
117 ADirks
 
29.07.16
08:57
(116) специально убрали настройки из интерфейса - ибо нефиг
только программно

МетаИнфо = СоздатьОбъект("MetaInfoClasses");
МетаИнфо.УстановитьТекУстановки(0, 0, 0); //кэширование отключено
МетаИнфо.УстановитьТекУстановки(1, 0, 0); //с кэшированием

или
оУправлениеНастройками = СоздатьОбъект("УправлениеНастройками");
оУправлениеНастройками.Включить("Оптимизация");
оУправлениеНастройками.Включить("ПерехватитьСобытияГК");
оУправлениеНастройками.Включить("TurboBL");
118 victuan1
 
29.07.16
09:15
(117) Спасибо. А есть ответ на вопрос, что метод КомпилироватьМодуль работает по разному в разных версиях 1с++ в случае синтакс. ошибок?
В версии 2.х выдает ошибки:
=== Syntax error в модуле 'unknown' 42951144
т = КонтекстФормыОбработки<<?>>
{(1)}: Переменная не определена (КонтекстФормыОбработки)

а в версии 3.х выдает Исключение.

Как можно в версии 2.х программно узнать, что возникла ошибка синтаксиса и подавить вывод сообщений в табло сообщений пользователю?
119 ADirks
 
29.07.16
09:24
(118) как-то не задавался, но возможно это ?

ВыполняемыйМодуль :: РазрешитьИсключения / EnableExceptions

Синтаксис: РазрешитьИсключения()

Описание: Включает флаг выдачи исключений вместо показа ошибок в окне сообщений.

После выполнения данного метода методы ВыполнитьМодуль, КомпилироватьМодуль вызывают исключение в случае ошибки, а не выдают сообщение в окно сообщений. В случае ошибок синтаксиса в тексте модуля или ошибок выполнения генерируется исключение. Метод КомпилироватьИВыполнитьМодуль всегда выбрасывает исключения, независимо от выполнения данного метода.
120 Ёпрст
 
29.07.16
09:27
(110) да, ибо 2-ая не развивалась, совсем.
(119) так и есть
121 victuan1
 
29.07.16
09:47
(119)
Модуль.РазрешитьИсключения(1);
Модуль.КомпилироватьМодуль();

Как-то странно работает метод РазрешитьИсключения в 2.5.0.7, он выдает исключение независимо от того, есть ошибка в тексте модуля или нет.
122 Ёпрст
 
29.07.16
09:50
(121) забить на 2* и ставить icpp
123 victuan1
 
29.07.16
09:55
(122) Я так не хочу. Мины надо обезвреживать.
124 victuan1
 
29.07.16
09:57
(121) Тут 1 в скобках лишняя:
Модуль.РазрешитьИсключения();
Модуль.КомпилироватьМодуль();

Но в таком случае РазрешитьИсключения() никак не влияет на поведение в случае синт. ошибки - исключение не возникает :-(
125 victuan1
 
29.07.16
09:58
Мда.. вот засада!
126 victuan1
 
29.07.16
10:00
Как программно определить версию плюсов?
127 Ёпрст
 
29.07.16
10:10
128 victuan1
 
29.07.16
10:24
1с++ 2.5.0.7 вернул 33882119
1с++ 3.3.3.0 вернул 50463232
И как это расшифровывать?
129 Ёпрст
 
29.07.16
10:28
Да ё.. ну посмотри
так, что ле:

Мета = СоздатьОбъект("MetaInfoClasses");
Сообщить(Мета.ПолучитьВерсиюФайла());
130 victuan1
 
29.07.16
10:34
Получается, так:
    Версия = МетаИнфо.ПолучитьВерсиюФайла();
    Если Число(Версия) < 3 Тогда
        мсообщить("Установлена версия 1С++ "+Версия+". Установите версию 1cpp.dll не ниже 3.х.х ("+Ссылка1СПП+")");
        Возврат 0
    КонецЕсли;
131 Злопчинский
 
29.07.16
18:45
(129) Ёпрст, не будь бякой
скажи какую версию формекса из последних стоит юзать
и какую 1С++

спасибо.
132 victuan1
 
29.07.16
22:31
Я не понял как использовать в классе Контроль установки/записи атрибутов:
ПриПолучении_ИмяАтрибута
ПриЗаписи_ИмяАтрибута

Примеры есть?
133 Ёпрст
 
01.08.16
08:07
(131) я использую последние
(132)че за класс ?
134 Это_mike
 
01.08.16
08:29
(133) "последние" - звучит невесело :-)
135 Ёпрст
 
01.08.16
08:42
(134) врят ли кто-то будет их еще модернизировать
136 Это_mike
 
01.08.16
08:51
(135) угу
137 ADirks
 
01.08.16
09:03
(131) а у меня FormEx 108 - уже не помню точно почему, но кажется в 109 события мыши "просачивались" сквозь системные модальные формы.
138 Это_mike
 
01.08.16
09:20
(137) и еще какие-то проблемы были - Масянька натыкалась
139 Ёпрст
 
01.08.16
09:39
(138) в модальной форме не работает ПередОткрытием
140 Ёпрст
 
01.08.16
09:40
но этот [:]||||[:]   всех устраивает, его АЛьФ так и не поправил
141 Это_mike
 
01.08.16
09:49
(140) известный глюк считается фичей...
142 victuan1
 
02.08.16
05:53
(133) Не важно какой, любой пользовательский класс (КОП).
143 ADirks
 
02.08.16
06:24
(133) например

Перем Родитель Экспорт;

Процедура ПриЗаписи_Родитель(НовРодитель)
    Родитель = НовРодитель;
    ПостроитьЗапросы();
КонецПроцедуры
144 victuan1
 
02.08.16
08:22
(143) Не работает, 1с++ версии 3.2.2.0
145 Ёпрст
 
02.08.16
12:15
(144) а что должно работать ?
146 Ёпрст
 
02.08.16
12:17
Что за класс Контроль и откуда ты его ввзял ?
147 Ёпрст
 
02.08.16
12:17
Что за события ПриЗаписи_Реквизит, и с чего они должны "работать"  ?
148 Злопчинский
 
02.08.16
12:19
(139) наверное ПослеОткрытия()..?
149 Ёпрст
 
02.08.16
12:19
(148) да
150 ADirks
 
02.08.16
12:53
(147) ну это типа атрибуты объекта с контролем записи/чтения
во всяких дельфях  это OnGeg / OnSet
пишешь к примеру
о = СоздатьОбъект(...);
о.Родитель = "Вася";

а внутре класса срабатывает метод ПриЗаписи_Родитель() и из Васи делает что-то другое, или какие-то дополнительные телодвижения
151 Ёпрст
 
02.08.16
13:20
(150) че-то не видел этого в доке :(
152 ADirks
 
02.08.16
13:24
(151) да в общем-то не самая нужная фича, обычный syntax sugar
была чуть ли не с самого начала
153 Ёпрст
 
02.08.16
13:29
(152) Значит, не заметил, проверил, работает..только вот, применение этим методам сразу и не найду. Зачем оно ? :)
154 ADirks
 
02.08.16
13:38
(153) В основном чтобы что-то сделать после установки атрибута, или перед получением. Типа, код будет красивше.
155 Ёпрст
 
02.08.16
13:58
(154) в общем ясно.
156 Злопчинский
 
02.08.16
16:23
емеа.. если бы это все я применил в клюшках - снеговик вообще бы у меня не прижился.. ;-)
157 victuan1
 
02.08.16
20:13
(153) Потому что не работает напрямую запись в переменные, объявленные в классе.
МойКласс.МояПеременная = 13;
Сообщить(МойКласс.МояПеременная); //выдаст значение, которое было до использования пред. оператора присвоения (т.е не 13)
158 victuan1
 
02.08.16
20:25
Проверил еще раз, работает (143) и (157).
Моя ошибка была в том, что я писал:
Перем МояПеременная, МояПеременная2 Экспорт;

а надо так:
Перем МояПеременная Экспорт;
Перем МояПеременная2 Экспорт;

Иначе экспортной будет только МояПеременная2.

Неудобно конечно, несклько десятков экспортных переменных объявлять таким способом.
Может есть способ задать Экспорта для всего списка переменных?
159 victuan1
 
02.08.16
20:32
А есть ли пример скрипта (кода), который позволяет заменить текст модуля внешней обработки на другой (например, из текстового файла)?
#ЗагрузитьИзФайла не предлагать.
160 Зая Бусечка
 
02.08.16
20:36
(159) Предлагаю #ЗагрузитьИзФайла.
Или напрячь межушный ганглий и осилить документацию к 1сpp и ему сопутствующему turbomd
161 victuan1
 
02.08.16
20:40
(160) Спасибо)  #ЗагрузитьИзФайла помогло! Вопрос закрываю.
Обратная задача, как программно сохранить текст модуля внешнего отчета в текстовый файл?
162 Зая Бусечка
 
02.08.16
20:55
(161) gcomp опять не предлагать?
163 victuan1
 
02.08.16
21:07
(162) Да почему же?
Но ведь я прошу _п_р_и_м_е_р_ кода. Пока я изучаю матчасть, может мне предложат более короткий путь?
Я себя невольно чувствую изобретателем велосипеда)
164 Ёпрст
 
03.08.16
07:58
(161) в формексе есть метод для получения текста модуля + еще был способ один (формекс, вроде как не ловит внешние формы, не помню)
165 Ёпрст
 
03.08.16
08:49
вспомнил, через информатор еще можно:
http://www.1cpp.ru/docum/html/Informer.html#getmoduletext
166 victuan1
 
03.08.16
09:32
(165) Спасибо.
Проверяю:
    конт = "";
    ЗагрузитьВнешнююКомпоненту("1cpp.dll");
    Информатор = СоздатьОбъект("Информатор");
    ОткрытьФорму("Отчет",конт,"F:\1.ert");
    стр = Информатор.ПолучитьТекстМодуля(конт);
    конт.Форма.Закрыть(0);
    Т = СоздатьОбъект("Текст");
    Т.ДобавитьСтроку(стр);
    Т.Записать("F:\1.txt");
    Т.Показать("Файл","F:\1.txt");

Всё нормально, но если модуль 1.ert зашифрован КЗК-2, то стр возвращается пустой.
Как решить проблему?
167 Ёпрст
 
03.08.16
09:48
(166) никак. Не пользоваться поделками, зашифрованными кзк-2.
168 Это_mike
 
03.08.16
09:58
(166) как ты думаешь, если бы информатором можно было бы получить текст зашифрованного модуля - нужно ли было бы это шифрование? :-)
169 Это_mike
 
03.08.16
09:59
(167) тут все хуже. он хочет и рыбку сьесть, и чешую продать....
170 victuan1
 
03.08.16
09:59
(166) (168) Так мне нужно получить текст модуля в зашифрованном виде! ;)))
171 Это_mike
 
03.08.16
10:01
(170) для подмены чтоль?
172 Ёпрст
 
03.08.16
10:01
(170) занафига ?
если очень надо, то активмд
173 victuan1
 
03.08.16
10:03
(171) Подмены чего?
(172) В принципе, выход нашелся, сейчас проверю...
174 victuan1
 
03.08.16
10:38
(173) Нет, не получилось. Пошел изучать ActiveMD
175 victuan1
 
03.08.16
10:49
(174) Изучил, ну и где в нем работа с внешними обработками?
Идти изучать gcomp?
176 Это_mike
 
03.08.16
10:51
(172) шоб тему не заводить - на файловой базе прямые запросы на запись только фоксом, 1склайт низя?
177 Ёпрст
 
03.08.16
10:58
(175) на вот, еще почитай. Не понятно, чего лепишь и чего надо
http://www.1cpp.ru/forum/YaBB.pl?num=1417782474

(176) ага
178 Это_mike
 
03.08.16
11:04
(177) фокса не ставится на 2008-й у меня почему-то...
пни в нужно мнаправлении - как еще можно "на горячуюю" подменить регистр копией другого?
скопировать и поменять имена полей - надо минут 30, а их нет... Иначе к вечеру порвут как грелку...
179 Ёпрст
 
03.08.16
11:05
(178) да ладно ? на 2012 и то ставится
180 Ёпрст
 
03.08.16
11:07
вот этот не устанавливается ?
https://www.microsoft.com/en-us/download/details.aspx?id=14839
181 Ёпрст
 
03.08.16
11:08
так то по ado можно еще запрос на инсерт/апдейт.. только имена полей рученьками писать тогда
182 Это_mike
 
03.08.16
11:11
(181) а чойто рученьками? я запрос могу и метапарсером сгенерить.
Но адо - попробую
(180) да, вроде его пробовал. Админа нет сейчас на месте, у меня права немного ниже админских. Ну и его зона ответсвенности.
183 Ёпрст
 
03.08.16
11:12
(182) а ну да, через обрметаsql получишь текст, его и пихай в адо тогда
184 Ёпрст
 
03.08.16
11:13
только вот, адо, через какой провайдер ? :))
185 Ёпрст
 
03.08.16
11:13
лучше всё же vfpoledb заставить работать
186 Ёпрст
 
03.08.16
11:14
слушай, а доступа извне нет, по сетке ?
Можешь же запрос на своём компе слепить.
187 Это_mike
 
03.08.16
11:15
Блин, как кайфно работать на SQL...
188 Ёпрст
 
03.08.16
11:15
да и вообще, со сторонней базы запрос выполнить, при желании. Там надо то всего лишь пути до файлов знать
189 Это_mike
 
03.08.16
11:16
(186) хм. попробую щаз. просто сервер удален на пару километров, доступ по рдп
(188) чтоб со сторонеей базы - один хрен нужен фокс на серваке.
190 Ёпрст
 
03.08.16
11:20
(189) да, но мот у тебя есть еще сервачок, на которые есть права, чтоб сам поставил оледб и с него по сетке до базы стучаться
191 Это_mike
 
03.08.16
11:25
(190) ладно, попытаюсь выпросить отсрочку от растрела...
192 victuan1
 
03.08.16
11:31
(180) Связался с АЛьФом, совместно решили проблему. Не понадобился ни АктивМД, ни gcomp, ни Информатор, ни #ЗагрузитьИзФайла.
Всё получилось просто и красиво)))
193 Ёпрст
 
03.08.16
11:32
(192) он еще живой ?
И как решили ?
194 victuan1
 
03.08.16
11:39
(193) Ну, если мне отвечал не бот, то живой ))))
Решили вместо внешней обработки использовать текстовый файл, который грузить как класс 1с++ в компилятор.
Соответственно, проблемы чтения текста из внешней обработки нет, т.к. нет самой внешней обработки ))
195 Ёпрст
 
03.08.16
11:43
(194) и что это даст ?
196 Ёпрст
 
03.08.16
11:44
ты и так мог хранить текст класса либо в текстовом файле, либо в ert.. разницы - никакой.
197 Ёпрст
 
03.08.16
11:45
Не вкурил, как это поможет в (0) ?
198 victuan1
 
03.08.16
11:52
(197) Сейчас я решал не задачу в (0), а в (161), (166).
С (0) я уже давно разобрался - использую классы 1с++.
199 Ёпрст
 
03.08.16
11:55
(198) и как ты получил с помощью (194) текст модуля закодированный кзк-2 ?
200 victuan1
 
03.08.16
11:56
Еще одну неприятную бяку поймал. 1С падает если в модуле класса обратиться к несуществующей колонке таблицы значений.
Например:
сообщить(глСуперТЗ.МояКолонка);

уронит 1С, если колонка с идентификатором МояКолонка не существует в глСуперТЗ.
Кто-нибудь сталкивался с этим?
201 Ёпрст
 
03.08.16
11:56
или ты свою поделку сам зашифровал и пытался её модуль получить, или что ?
202 Ёпрст
 
03.08.16
11:58
(200) попытка-исключение или проверить на существование колонки через видимость
203 victuan1
 
03.08.16
11:58
(199) Мне нужно программно получить ЗАШИФРОВАННЫЙ текст модуля . Я не пытаюсь его расшифровать.
(201) Да, сам шифрую. Я еще в уме, чтобы не пытаться взломать чужие поделки, защищенные КЗК-2.
204 Ёпрст
 
03.08.16
11:59
(203) зачем ?
205 victuan1
 
03.08.16
11:59
(202) В попытке и упадет. А через видимость как?
206 victuan1
 
03.08.16
12:00
(203) Чтобы запускать через ВыполняемыйМодуль.
207 Ёпрст
 
03.08.16
12:00
(206) храни его в мокселе или в операторах основной программы, тупо в переменной.
208 Ёпрст
 
03.08.16
12:03
(205) ВидимостьКолонки вернёт -1 для не существующей колонки
209 victuan1
 
03.08.16
12:06
(208) Кстати через попытку тоже не падает.
210 victuan1
 
03.08.16
12:14
(207) Мне нужно хранить глобальные переменные. Значения которых будут доступны после закрытия объектов, их задающие.
Поэтому я через внешний гл. модуль объявил одну экспортную переменную. Сделал ее таблицей значений с одной строкой, и напихал в нее несколько десятков колонок по числу нужных мне глобальных переменных. Причем состав этих колонок-переменных расширяем в зависимости от выполняемого функционала. Т.е. эти переменные не только глобальные, но и динамические.
211 victuan1
 
03.08.16
12:14
Можешь предложить решение удобнее?
212 Ёпрст
 
03.08.16
12:19
(211) вектор, ассоциативныйВектор, структура - выбирай.
213 victuan1
 
03.08.16
12:20
Неприятно то, что один и тот же код, выполненный в модуле стандартного объекта 1С и в модуле класс 1С++ ведет себя по разному: "поле агрегатного объекта не обнаружен" vs <Падение 1С>.
Как-то после этого стремаюcь использовать 1с++: мало ли где еще что упадет в самый неподходящий момент.
Я думал, что за годы своего развития "плюсы" отлажены и работают надежнее чем сам движок 1С....
214 victuan1
 
03.08.16
12:22
(212) Хотелось обойтись стандартными объектами 1С 7.7, чтобы можно было при желании быстро переходить на вариант без использования ВК (воткнув весь функционал в стандартный гл. модуль).
А так потеряется гибкость. И будет очередная поделка, жестко зависящая от любого чиха.
215 Ёпрст
 
03.08.16
12:25
(214) Хозяин-барин
массив[100]
сделай тогда и привет
216 victuan1
 
03.08.16
12:34
(215) Это будет точно привет. Надо будет лист распечатать с легендой по этим номерам ))
217 victuan1
 
03.08.16
12:37
Лучше уж тогда СписокЗначений:

глСп.Установить(<ИмяПеременной>,<ЗначениеПеременной>);
глСп.Получить(<ИмяПеременной>);
218 victuan1
 
03.08.16
12:37
Но хотелось еще короче:
глСп.<ИмяПеременной>;

Поэтому изначально подошла ТЗ, а тут 1С++ со своими глюками...
219 Ёпрст
 
03.08.16
12:38
(217) он медленнее, в массиве первым элементом храни описание
220 Ёпрст
 
03.08.16
12:38
тз, тоже медленно
221 victuan1
 
03.08.16
12:39
(219) Скорость в этом месте не критична. Эти переменные используются при интерактивных действия пользователя.
222 victuan1
 
03.08.16
12:40
СписоЗначений зато динамичен и очень ёмок. В нем миллионы значений можно сохранить.
223 Ёпрст
 
03.08.16
12:42
(222) зашифрованный текст модуля просто храни в переменной модуля. Потом скармливай его в вм
224 Ёпрст
 
03.08.16
12:43
и не нужно будет иметь класс для этого
225 victuan1
 
03.08.16
12:48
(224) Зашифрованный текст модуля надо же где-то изначально взять. Он хранится в виде текстового файла, потом я его считываю с помощью BinaryData и выполняю в ВМ.
Вопрос был в создании тиражируемых зашифрованных модулей (т.е. программным способом). С альфом этот вопрос решили.
226 victuan1
 
03.08.16
12:50
(224) Что класс, что ВМ, примерно одно и то же для моих задач. Решил всё-таки использовать для основных обработок Класс, т.к. с его помощью проще вести разработку и отладку. ВМ использую только для выполнения тех зашифрованных текстовых файлов.
227 victuan1
 
03.08.16
12:52
(220) А разве ТЗ будет медленной, если в ней 100 колонок и одна строка, которая является всегда текущей.
Обращение МояТЗ.МояКолонка будет медленным в этом случае?
228 victuan1
 
03.08.16
12:55
229 victuan1
 
04.08.16
08:50
(210) (219) Решил отказаться от идеи динамических экспортных переменных. Будет список статичных переменных.
230 victuan1
 
05.08.16
10:50
Вот с такой проблемой столкнулся.
Скомпилированный КЗК-2 модуль КОП не видит экспортные переменные, объявленные во внешнем дополнительном глобальном модуле (через Formex):

Ошибка связывания процедур контекста окружения.
<<глобальная переменная (ГЛМОЯПЕРЕМ)>>
Класс: МойКласс Файл: F:\МойКласс.ert компиляция не выполнена!
Внимание! Инициализация класса: МойКласс закончилась неудачно!

Если модуль класса не компилировать, то проблемы нет.
231 Ёпрст
 
05.08.16
10:55
А как твой класс связан с глобальной переменной из глобальника?
232 Ёпрст
 
05.08.16
10:56
и че за модуль класса ?
233 victuan1
 
05.08.16
11:06
(231) Он читает из нее значение.
234 victuan1
 
05.08.16
11:06
(232) модуль КОП
235 Ёпрст
 
05.08.16
11:12
(233)перед загрузкой класса, доп глобальник уже загружен ?
Ну воткни обманку в код класса, делов-то
236 Ёпрст
 
05.08.16
11:12
Если 0=1 Тогда
  ГЛМОЯПЕРЕМ = "Вася";
КонецЕсли;
237 victuan1
 
05.08.16
11:14
(236) Нельзя. Эта обманка создает локальную переменную ГЛМОЯПЕРЕМ, даже несмотря на то что ее код не выполняется. Видимо, так работает интерпретатор встроенного языка 1С.
238 victuan1
 
05.08.16
11:16
Обманул через
Функция глПрисвоить(Кому,Что) Кому = Что КонецФункции
Шаблон("[глПрисвоить(глПер,ГЛМОЯПЕРЕМ)]");
239 Ёпрст
 
05.08.16
11:18
(238) можно и так, у меня в примере так и было, не помню
240 victuan1
 
05.08.16
11:26
(239) Ну да, из твоего примера взял.
241 victuan1
 
05.08.16
11:26
Ну вроде поделка получилась, отдал людям потестить)
242 Это_mike
 
05.08.16
11:36
(235) как обмануть Вирт()?
243 Ёпрст
 
05.08.16
12:14
244 Это_mike
 
08.08.16
13:35
(180) Ёпрст,  пни в правильном направлении по строке соединения с фоксом.
достал меня этот dbf.
Пользую вот так:
СтрокаСоединения="DRIVER={Microsoft Visual FoxPro Driver};Deleted=No;Null=Yes;Collate=RUSSIAN;Exclusive=No;SourceType=DBF;SourceDB="+КаталогИБ();

ИБ=СоздатьОбъект("ODBCDataBase");
ИБ.ПрисоединитьИБ(КаталогИБ(), , ,СтрокаСоединения);
рс=СоздатьОбъект("ODBCRecordset");
рс.УстБД(ИБ);
Результат=рс.ВыполнитьИнструкцию(ТекстЗапроса);
Результат.выбратьСтроку();

и так:

Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ() + ";Mode=ReadWrite;Collating Sequence=MACHINE";
DB = СоздатьОбъект("OLEDBData");
Рез = DB.Соединение(Соединение);
Запрос = DB.СоздатьКоманду();                                      
ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
тз.ВыбратьСтроку();

результат одинаков: FAILED! ICommandText::Execute():
245 Злопчинский
 
08.08.16
13:39
у мну вот так работает

        Попытка База         = СоздатьОбъект("OLEDBData");
                RS = База.Соединение("
                |Provider=VFPOLEDB.1;
                |Null = Yes;
                |Exclusive = No;
                |SourceType = DBF;
                |Data Source=" + КаталогИБ() + ";
                |Mode=ReadWrite;
                |Extended Properties="""";
                |User ID="""";
                |Password="""";
                |Mask Password=False;
                |Collating Sequence=MACHINE;  
                |DSN=""""");
                //Это ВАЖНО !!! соединение Collating Sequence=MACHINE
                Запрос = База.СоздатьКоманду();
246 Это_mike
 
08.08.16
13:45
(245) нифига.
247 Это_mike
 
08.08.16
13:45
ЧЯНТД?
248 Ёпрст
 
08.08.16
14:06
(244)
на вот, там всё понятно
https://cloud.mail.ru/public/AeJK/71o1vuzd1
249 Это_mike
 
08.08.16
14:11
(248) такая же фигня
250 Это_mike
 
08.08.16
14:11
скульлайт у меня работает, а вот фокса не хочет
251 Ёпрст
 
08.08.16
14:16
(249) запрос то какой хоть ?
252 Ёпрст
 
08.08.16
14:16
кажи :)
253 Это_mike
 
08.08.16
14:24
(252) да любой. последний -
    |select
    |J.iddoc
    |from _1journ J
    |order by
    | J.iddoc
254 Это_mike
 
08.08.16
14:25
что-то со строкой, или с драйвером, чтоль...
255 Ёпрст
 
08.08.16
14:28
(253) в фоксе критично в некоторых местах отсутствие as
256 Ёпрст
 
08.08.16
14:29
И это, нафига тебе фокс, если ты к скулю подключаешься ?

_1journ?
257 Это_mike
 
08.08.16
14:33
(256) глаз замылился.
исправил, но результат не изменился. поставил "as", тоже без толку.
258 Ёпрст
 
08.08.16
14:34
этот провайдер воткни
https://www.microsoft.com/en-us/download/details.aspx?id=14839
259 Это_mike
 
08.08.16
14:34
его и воткнул
260 Ёпрст
 
08.08.16
14:36
Это, монопольно база открыта ?
261 Ёпрст
 
08.08.16
14:36
там если че, нужно заплатку от hogik ставить, чтоб в монопольном режиме запросы фокса запущать :)
262 Это_mike
 
08.08.16
14:37
(260) Нет, в разделенном.
263 Ёпрст
 
08.08.16
14:38
264 Ёпрст
 
08.08.16
14:38
(262)
такой тоже не выполняется ?
select * from 1sjourn
265 Это_mike
 
08.08.16
14:41
(264) хм. такой выполнился.
266 Это_mike
 
08.08.16
14:41
"ниссего нипанимаю"©
267 Ёпрст
 
08.08.16
14:41
(265) это, еще был прикол с табуляцией
268 Ёпрст
 
08.08.16
14:42
метапарсер её не жувал, в каких то случаях.
Каких, не вспомню, табуляцию не использовал, токма пробелы.
269 Ёпрст
 
08.08.16
14:42
(266) давай реальный запрос, который с ошибкой :)
270 Это_mike
 
08.08.16
14:43
Ладно, извиняюсь за беспокойство, пошел мучить апдейт.
после сиквельной версии..
271 Это_mike
 
08.08.16
14:43
после сиквельной версии в файловой "все не так"
272 Это_mike
 
08.08.16
14:44
(269) да реального не было, только поставил, апдейтнуть надо табличку
273 Ёпрст
 
08.08.16
14:45
(272) ну.. там тоже всё примитив:
        ТекстЗапроса = "
        |Update Номенклатура
        |SET   $Номенклатура.ОсновнаяЕдиница = $Номенклатура.БазоваяЕдиница
        |FROM $Справочник.Номенклатура as Номенклатура
        |Where $Номенклатура.ОсновнаяЕдиница = $ПустойИд and Номенклатура.isfolder=2";
274 victuan1
 
21.08.16
17:10
Насколько глючная эта 1с++?
Имею в виду последнюю версию (3.2.2.0).
Очень тяжело отлаживать модули пользовательских классов - постоянно зависает 1С на точке останова в отладчике.
Ничего криминального в коде нет. Если текст модуля из класса перенести в модуль внешней обработки, вызываемой стандартным способом, то отладчик не виснет на точке останова.
Винда 7 32-битная.
275 Ёпрст
 
22.08.16
08:14
3.2.4.3
хз че там у тебя, на XP ничего не виснет, нигде
276 ADirks
 
22.08.16
08:16
(274) Отладка глючит, да
У тебя классы как оформлены? В ert или txt?

версия 3.2.4.2
277 Это_mike
 
22.08.16
08:22
(275) на семерке есть глюки при отладке.
278 victuan1
 
22.08.16
09:31
(276) в ert.
Кстати, еще неудобно, что класс в ert не имеет доступа к табличному документу (Таблица), которая находится в этой же ert.
279 victuan1
 
22.08.16
09:32
(277) Устранить нельзя?
А также есть проблемы с "плюсами" в Виндовс 10 (32/64) в режиме Предприятие?
280 Ёпрст
 
22.08.16
09:34
(278) имеет
281 Ёпрст
 
22.08.16
09:35
как и к остальным атрибутам формы.
282 victuan1
 
22.08.16
09:40
В модуле КОП такой код:
    ИмяИсхТаблицы = "КодыАлкоголя";
    ТаблицаПеречень = СоздатьОбъект("Таблица");
    ТаблицаПеречень.ИсходнаяТаблица(ИмяИсхТаблицы);  
    ТаблицаПеречень.Вывести();
    
    НомСтрокиТаблицы = 2;
        
    Пока Лев(ТаблицаПеречень.Область(НомСтрокиТаблицы, 1).Текст, 3) <> "###" Цикл
        
        Код          = СокрЛП(ТаблицаПеречень.Область(НомСтрокиТаблицы, 1).Текст);
        Наименование = СокрЛП(ТаблицаПеречень.Область(НомСтрокиТаблицы, 2).Текст);
        
        спКл.ДобавитьЗначение(Код,нрег(сокрлп(Наименование)));
                    
        НомСтрокиТаблицы = НомСтрокиТаблицы + 1;                        
        
    КонецЦикла;

выдает сообщение "Файл КодыАлкоголя не найден!"
283 victuan1
 
22.08.16
09:46
Исключение возникает на строке:
    ТаблицаПеречень.ИсходнаяТаблица(ИмяИсхТаблицы);
В ert-шку с КОП таблица с именем КодыАлкоголя добавлена.
284 Ёпрст
 
22.08.16
10:09
(282)
http://www.1cpp.ru/forum/YaBB.pl?num=1392732561
на вот, почитай, там есть решение.
285 victuan1
 
22.08.16
10:18
(284) Т.е. путь к ерт-шке надо указывать?
286 victuan1
 
22.08.16
10:19
Мне нужно из самого класса обратиться к таблице, которая находится в ерт-шке этого же класса.
Тоже надо путь указывать?
287 Ёпрст
 
22.08.16
10:19
(285) да
288 Ёпрст
 
22.08.16
10:20
(286) да, тупо получив РасположениеФайла()
289 Ёпрст
 
22.08.16
10:20
Ну и коды свои, можешь и не в мокселе хранить, а просто в переменной.
290 victuan1
 
22.08.16
10:33
(287) Угу, получилось. У меня это так выглядит:
    ТаблицаПеречень.ИсходнаяТаблица(ИмяИсхТаблицы,СпПутей.ПолучитьЗначение(2)+ИмяКласса);
291 victuan1
 
22.08.16
10:34
(289) Откуда я эти коды загружу в переменную? Мне нужно организовать постоянное хранилище этих кодов, с возможностью простого обновления. Удобнее всего в Таблица.
292 Ёпрст
 
22.08.16
10:40
(291) да просто в коде пишешь
перем Коды Экспорт;
...
коды = "200#Водка#500#Пивасик";
и усё

Дальше имеешь хоть массив хоть структуру, хоть тз или че те там надо из строки. Можешь и значениеИзСтроки сразу, в общем, как угодно. Не обязательно это в мокселе хранить
293 victuan1
 
22.08.16
10:42
(292) Не удобно мне так. Все классификаторы у меня давно запилены в мокселе. Я просто их переношу теперь в класс. Ты мне предлагаешь за так доп. объем работы? ))
294 Ёпрст
 
22.08.16
10:42
Абрхамс, раньше, в операторах основной программы, целые вк пихал в бэйс64 в виде строки, и ничего :). Хотя в мокселе да, удобнее
295 Ёпрст
 
22.08.16
10:42
(293) ну, можешь формировать строку из мокселя и пихать в класс. Хоть в зашифрованном виде.
296 Ёпрст
 
22.08.16
10:43
Зато, можешь весь класс хранить как строку и подключать когда хочешь, не имея самой формы класса.
297 victuan1
 
22.08.16
10:45
(295) Да, уже всё сделал я! Работает у меня моксель в классе. Помог ты мне ссылкой. Спасибо.
298 victuan1
 
22.08.16
10:45
(296) Мне так не надо. Мне нужен инструмент для отладки классов. А вот он виснет в винде 7.
299 Ёпрст
 
22.08.16
10:49
(298) поставь виртуалку и в ней православную хрюшу, там и отлаживай. Там нет проблем ни с какими вк.
300 victuan1
 
22.08.16
10:54
(299) Мне нужно чтобы и клиент мог отлаживать без всяких ограничений. Иначе могут запинать меня: "Сделал поделку на ВК, которые вешают 1С".
301 victuan1
 
22.08.16
10:56
Может ADirks что подскажет?

А где взять 1с++ 3.2.4.3
По ссылке http://www.1cpp.ru/images/3/32/Icpp-latest.rar не та
302 Злопчинский
 
22.08.16
11:00
ну так в итоге - первоначальную-то задачу в (0) удалось решить?
303 victuan1
 
22.08.16
11:03
(302) Да, задача была немного трансформирована и успешно решена с использованием 1с++ (и опционально FormEx)
304 victuan1
 
22.08.16
11:04
Т.е вместо внешней обработки юзаются Классы, а они не видимы априори.
305 Ёпрст
 
22.08.16
11:06
306 aka AMIGO
 
22.08.16
11:09
формексы.. суперпуперклассы..

Есть простейшее решение средствами самой 1с v7.

Для начала - из формы диалога отчета/обработки убирается кнопка типа "Сформировать". Процедура остается, чтобы быть вызванной из "ПриОткрытии()"
http://pics.rsh.ru/img/10_zci8kzl5.png

как здесь:
http://pics.rsh.ru/img/12_v8zbme3d.png

Процедурка вызова - в нужном месте модуля документа/справочника/пр.др..
http://pics.rsh.ru/img/13_79y81bru.png

и - результат. Только отчет, диалога нет:
http://pics.rsh.ru/img/14_v7wgz8aw.png
307 victuan1
 
22.08.16
11:17
(306) Таблица в РВД?
308 victuan1
 
22.08.16
11:18
(305) ух ты!
"Добавил в icpp объекты для последовательного чтения и записи XML файлов.
Решение базируется на XmlLite"
309 aka AMIGO
 
22.08.16
11:20
(307) "Пустая"
310 Злопчинский
 
22.08.16
11:20
(306) хм.. автору вроде нужно было обеспечить постояннуую "видимость" объектов/переменных, то есть некий "дополнительный глобальный контекст"...?
311 victuan1
 
22.08.16
11:26
(306) Похожий подход у меня тоже реализован. Но он не подходит когда, нужно:
1) хранить значение переменной, не объявленной в гл. модуле, пока запущен сеанс 1С
2) избежать потери времени на исполнение метода ОтрытьФорму("Отчет.ХХХ")
312 victuan1
 
22.08.16
11:27
(305) А официал-ссылки нету?
313 Злопчинский
 
22.08.16
11:27
(311) так в итоге - как вывернулся-то?
314 aka AMIGO
 
22.08.16
11:28
(310) Ну, так если надо, чтобы что-нибудь было видно можно изменить режим вывода таблицы:
http://pics.rsh.ru/img/15_km0y28f2.png

(311) Понятно. Успеха!
315 Злопчинский
 
22.08.16
11:30
(314) товарищ и не читатель и не писатьель? хочу иметь дополнительную переменную, видимую во всех прочих внешних отчетах и обработках, причем эту доппеременную - без изменения конфигурации ...
316 victuan1
 
22.08.16
11:30
(305) А XmlLite.dll встроена в 1с++ или должна отдельно валяться?
317 aka AMIGO
 
22.08.16
11:31
(315) Писатель, и только :)
318 victuan1
 
22.08.16
11:32
(313) С помощью Формекс создаю доп. глобальник, который содержит только эту доп. переменную.
А остальной функционал на Классе, ссылка на который сохраняется в этой переменной.
319 victuan1
 
22.08.16
11:33
Уточню, в доп. переменной хранится ЭКЗЕМПЛЯР класса. Т.о. всего его атрибуты доступны на все время сессии 1С.
320 Ёпрст
 
22.08.16
11:40
(316) всё встроено
321 victuan1
 
22.08.16
11:42
(320) А есть примеры использования xmllite?
322 victuan1
 
22.08.16
11:44
И чем она выгодно отличается от ВК OpenXML (http://x-romix.narod.ru/)?
323 Ёпрст
 
22.08.16
11:45
(321) выкладывали на 1cpp, я не пользовался, меня и домдокумент устраивает
324 victuan1
 
23.08.16
22:24
Еще один баг 1С++.
Пытаюсь загрузить КОП методом МетаИнфо.ЗагрузитьОписаниеКлассов(стр)
Стр содержит строку:
класс Вася.Пупкин=I:\ВА СЯ\Вася_Пупкин.ert{}

как видим в имени папки (ВА СЯ) есть пробел. Получаем ошибку:
Не существует файла: I:\ВАСЯ\Вася_Пупкин.ert для класса: Вася.Пупкин
Регистрация класса закончилась неудачно!
Пробел пропал!!!

Пытался имя файла с путем заключить в кавычки, эффект тот же:
класс Вася.Пупкин="I:\ВА СЯ\Вася_Пупкин.ert"{}

Как забороть этот страшный косяк?
325 victuan1
 
23.08.16
23:05
То же самое будет если задать класс через defcls.prm (с пробелом в имени папки).
В имени папки пробел присутствует на самом деле.
(Переименовать папку не предлагать)
326 Злопчинский
 
23.08.16
23:17
ЛичноЯПапкиВсегдаНазываюБезПробелов
327 victuan1
 
24.08.16
00:26
(326) Клиент всегда прав! (с) Так что не обсуждается.
328 Djelf
 
24.08.16
01:46
(327) Ну так почини... исходники 1с++ открыты.
329 victuan1
 
24.08.16
04:25
(328) Вот это поворот!
Не смогу - квалификации и времени на повышение квалификации на данный момент нет.
330 Chieftain
 
24.08.16
06:41
(324) Кладем файл I:\ВАСЯ\Вася_Пупкин.prm, содержащий текст
"класс Вася.Пупкин=Вася_Пупкин.ert{}"

затем делаем
МетаИнфо.ЗагрузитьОписаниеКлассов("I:\ВАСЯ\Вася_Пупкин.prm")
331 victuan1
 
24.08.16
08:12
(330) Не помогло, и я даже не удивлен, т.к. пробел в ВАСЯ надо ставить и в этом варианте:
"класс Вася.Пупкин=Вася_Пупкин.ert{}"

затем делаем
МетаИнфо.ЗагрузитьОписаниеКлассов("I:\ВА СЯ\Вася_Пупкин.prm")

Тупит именно ЗагрузитьОписаниеКлассов(), видимо оно вырезает в строке все пробелы и напрасно.
332 Chieftain
 
24.08.16
08:18
(331) А я удивлен.
MetaInfoClasses            = СоздатьОбъект("MetaInfoClasses");
MetaInfoClasses.ЗагрузитьОписаниеКлассов("d:\Папка С пробелами\Вася_Пупкин.prm");    


Внутри Вася_Пупкин.prm:

класс Вася.Пупкин=Вася_Пупкин.ert{}
333 Chieftain
 
24.08.16
08:21
+(332) У меня уже 100 лет на любых путях работает код:

    // ИНИЦИАЛИЗАЦИЯ КЛАССОВ
    КаталогКлассов            = КаталогИБ()+"Extented\Classes\";
    MetaInfoClasses            = СоздатьОбъект("MetaInfoClasses");
    ПОИСК_КЛАССОВ            = СоздатьОбъект("ФС");
    ИмяФайла                = ПОИСК_КЛАССОВ.НайтиПервыйФайл(КаталогКлассов+"*.prm");
    Пока ПустаяСтрока(ИмяФайла)=0 Цикл
        MetaInfoClasses.ЗагрузитьОписаниеКлассов(КаталогКлассов+ИмяФайла);    
        ИмяФайла            = ПОИСК_КЛАССОВ.НайтиСледующийФайл();
    КонецЦикла;


Пробелы режутся если полный путь указан, а если путь не указан, берется относительно prm-файла и все ок
334 victuan1
 
25.08.16
04:47
(332) А я не понимаю. Этот код выдает ошибку, которую я выше писал. Из-за чего это может быть?
Какую версию 1с++ используешь?
335 Chieftain
 
25.08.16
04:49
(334) Где пробовал - там 3.2.3.18

Покажи содержимое Вася_Пупкин.prm
336 victuan1
 
25.08.16
06:00
Не существует файла: F:\ВАСЯ\ВАСЯ_Пупкин.prm для класса: ВАСЯ.Пупкин
Регистрация класса закончилась неудачно!

(Папка на самом деле называется ВА СЯ)
содержимое:
Класс ВАСЯ.Пупкин=ВАСЯ_Пупкин.ert{};
337 victuan1
 
25.08.16
06:06
(335) Блин! Моя невнимательность, неправильно задал строку для   ЗагрузитьОписаниеКлассов()
Всё работает! Респект тебе.
338 Злопчинский
 
25.08.16
23:28
вы такие умные, ребята!
чувствую себя полным идиётом...
339 victuan1
 
27.08.16
12:52
Вопрос про пиктограммы. Имеются типовые (или почти) конфигурации, в них нужно внедрить новые справочники и документы (через режим "Объединение конфигураций"), которые используют в табличных частях (формах списка, ТЧ документа) пиктограммы, которых нет в типовой конфигурации в библиотеке "Общие картинки".
Задача многократно повторяемая.

Можно ли как-то используя 1с++ безгеморно решить эту проблему?
340 victuan1
 
27.08.16
12:55
(275) Спасибо, 3.2.4.3 не виснет при отладке в Вин 7.
341 Ёпрст
 
29.08.16
09:49
(339) дык картинки храни просто на форме, на невидимом слое, или в мокселе. И бери оттуда. Не грузя их в "Общие картинки"
342 victuan1
 
29.08.16
18:01
(341) А как хранить на форме и как брать?
343 victuan1
 
29.08.16
19:02
Ну как хранить понятно, а как брать?
344 Dmitry77
 
29.08.16
19:24
В 77 есть #ЗагрузитьИзФайла
Повесил это код на кнопку и переписывай файл пока не надоест...
345 victuan1
 
29.08.16
19:31
(344) Мне не это нужно.
346 Ёпрст
 
30.08.16
10:50
(343) Подсовывать в штатные контролы, возможно будет только с помощью дюнаврап и классов от chessman
347 Ёпрст
 
30.08.16
10:51
либо, переписывать на табличное поле и там, как угодно.
348 victuan1
 
30.08.16
20:16
(346) Ох блин! Т.е. простого пути нет?
А ссылка на хороший пример из "дюнаврап и классов от chessman" у тебя есть?
Или мне в гугль идти?
349 victuan1
 
30.08.16
20:21
Гугль не дал примеров именно для ТЧ списка или документа. Только для вкладок, списков значений...
350 victuan1
 
30.08.16
20:27
А если задачу поставить проще? Пусть картинки добавлены в "Общие картинки". Как узнать идентификатор нужной картинки и этот ИД установить для ТЧ?
351 Ёпрст
 
31.08.16
09:58
(350) Класс Система и там ПолучитьОлеКартинку, посмотри в справке метод
352 Ёпрст
 
31.08.16
10:02
ПолучитьOLEКартинку, если быть точнее
353 victuan1
 
01.09.16
08:36
(340) Но зато теперь виснет в отладчике на "православной ХР" ))
Блин, что за бяка такая!
354 victuan1
 
01.09.16
13:00
Да, и на Вин 7 бывает зависает. Короче, не дружат плюсы с отладчиком. Печально..
355 victuan1
 
01.09.16
21:38
Вылетает, если в отладчике пытаться прочитать значение переменной, которая не существует в данном контексте.
356 victuan1
 
07.09.16
18:52
На одном компьютере обнаружил еще одну бяку. Если загружены 1с++ и Формекс, то при использовании КОП 1с++, происходит падение 1с на операторе Предупреждение().
Если формекс не загружать, то падения не происходит.
Как лечить?
357 victuan1
 
08.09.16
10:34
ап. вопрос серьезный.
358 ADirks
 
08.09.16
10:43
В каком порядке грузятся компоненты?
Что ещё грузится?


крайне желательно, чтобы первой грузилась 1cpp, потом FormEx, а потом уж всё остальное
359 victuan1
 
08.09.16
12:22
Сначала грузиться 1с++, потом формекс, потом подключается класс через МетаИнфо, затем в классе вызывается Предупрждение.
Если из этой цепочки убрать загрузку формекса, то траблы нет.
Пока на одном компьютере такая бяка обнаружена.
360 victuan1
 
08.09.16
13:28
какую еще инфу предоставить?
361 Ёпрст
 
08.09.16
14:26
>>>затем в классе вызывается Предупрждение.
Зачем ?
362 Ёпрст
 
08.09.16
14:27
Используй лучше "Легкое сообщение" заместо этого, и красившее и систему не стопарит
363 Это_mike
 
08.09.16
14:36
(362)офф. А почему Турбомд может не работать? Из-за перехватчика - может?
А то вот понадобилось внезапно под конец, и не заработало
364 victuan1
 
08.09.16
15:35
Обнаружил что еще запускается класс с перехватчиком предопределенных процедур.
365 victuan1
 
08.09.16
15:36
(362) Что такое "легкое сообщение"?
366 victuan1
 
08.09.16
16:11
Проверил влияние Перехватчика отключением он не причем. Виснет 1С если запущен формекс, если формекс не запускать, то не виснет. Куда копать дальше?
367 Это_mike
 
08.09.16
16:19
(366) а какие-нибудь формексовские объекты создаются? или только загрузка?
368 Ёпрст
 
08.09.16
17:42
(363) Их есть несколько версий и только одна корректно более менее работает с 1cpp
369 Ёпрст
 
08.09.16
17:47
370 Ёпрст
 
08.09.16
17:57
371 victuan1
 
08.09.16
19:35
(367) упростил всё до минимума - только загрузка
(368) 2.0.5.108
372 victuan1
 
10.09.16
14:51
Ну вот, еще на одном компьютере тоже зависло. Но уже на операторе Вопрос() внутри КОП.
Формекс не загружался, только 1с++.
Как решить проблему?
373 victuan1
 
10.09.16
18:04
(372) Нет, формекс там стоит в закгрузке ПриНачалеРаботыСистемы. просто версия древняя, в Сервис-Параметры не отображалась. Отключил загрузку формекса - проблема ушла. Запуск 1с++ перед формексом не решает проблему.
374 victuan1
 
10.09.16
18:22
Удалось создать демо-пример для иллюстрации ошибки. Если есть заинтересованные, то могу выслать для анализа кода.
375 victuan1
 
10.09.16
18:50
Для всех заинтересованных: https://yadi.sk/d/ODIKTzSFuyqUN
Для иллюстрации проблемы используются файлы:
ПроверкаКОП.ert - обработка, инициализирующая КОП.
КОП_Проверка.ert - собственно класс.

Порядок действий, приводящий к появлению проблемы:
1) в гл. модуле конфигурации 1С нужно объявить экспортную переменную глКОП:
Перем глКОП Экспорт;
2) В режиме 1С:Предприятие открыть ПроверкаКОП.ert, нажать кнопку Сформировать, затем Проверка - произойдет показ диалогов Предупреждение и Вопрос.
3) Закрыть обработку ПроверкаКОП.ert
4) Снова открыть ПроверкаКОП.ert, нажать кнопку Проверка - произойдет зависание программы 1С. Отладчик остановится на операторе Предупреждение внутри класса КОП_Проверка.ert
Если кнопку Проверка нажимать повторно, не закрывая обработку ПроверкаКОП.ert - зависания не происходит. Т.е. проблема возникает при переопредении переменной, ссылающейся на экземпляр класса.

1с++ использовалась версии 3.2.4.3.
Формекс - 2.0.5.108, но на более ранних версиях проблема сохраняется.
376 victuan1
 
10.09.16
18:53
Возможно окна Предупреждение или Вопрос появляются, но они невидимы и нет возможности их интерактивно обработать.
377 Djelf
 
10.09.16
21:54
(375) Win10, 1cpp 3.2.4.3, formex 2.0.5.101 - все ок.
А если таймаут в предупреждении и вопросе указать тоже замерзает?
378 victuan1
 
11.09.16
05:04
(377) Не успел еще проверить. При случае проверю. Мне приходится удаленно подключаться к клиенту для проверки. Т.к. на моих компах подобного сабжа нет.
379 victuan1
 
12.09.16
12:08
Доп. информация. "Замерзает" именно из-за переопределения переменной, ссылающейся на экземпляр класса:
    глЕ = глКОП;
    глЕ.ИмяФайлаОбработки("Проверка")

В таком виде:
    глКОП.ИмяФайлаОбработки("Проверка")
зависания при повторном запуске обработки не происходит.

Таймаут в Предупреждение не помогает.
380 victuan1
 
12.09.16
12:22
Если Формекс не загружать, то зависания также нет при любом варианте.

На одном из двух компьютеров сторонний дебаггер сообщает об необработанном исключении в 1cv7s.exe (https://yadi.sk/i/YdHco4Guv4HjN).

Могу организовать удаленный доступ на компьютер, в котором имеет место быть сабж (уже два таких устойчивых инцидента на разных компьютерах зарегистрированы).
381 Ёпрст
 
12.09.16
12:30
Ничего не падает и не "подвисает"
Win2012 x64
Win XP x32
382 Злопчинский
 
12.09.16
12:38
смотреть версии формекса и 1С++ ???
383 victuan1
 
12.09.16
13:51
(382) А что смотреть? Последние стоят.
384 victuan1
 
12.09.16
13:51
(381) Этот сабж я воспроизвел на двух ПК из 20. Могут дать уд. доступ к сабжевому компу.
385 Djelf
 
12.09.16
17:30
Поймал вылет! Еще одно условие для вылета: объявление  переменной глКОП не должно быть первым в глобальнике.
Странно, вчера не вылетало...
386 victuan1
 
12.09.16
17:58
(385) У меня первым стоит.
387 Djelf
 
12.09.16
18:28
(386) Вот поэтому и вылетает не всегда. Перемести пониже будет вылетать стабильнее.
Присвоение глЕ=глКОП тоже не обязательно...
Похоже при закрытии формы глКОП как то портится
Без formex, кстати, тоже вылетает, даже на таком коде


// Функция в Обработке
Процедура Проверка()
    глКОП.ИмяФайлаОбработки();
КонецПроцедуры
// Функция в Коп
Функция ИмяФайлаОбработки() Экспорт
    Предупреждение("Ой упаду...");
КонецФункции
388 victuan1
 
12.09.16
18:32
(387) Мне без формекса уронить не удалось ни разу.
389 Злопчинский
 
12.09.16
19:09
продолжаю наблюдение...
390 Djelf
 
12.09.16
21:14
А что там наблюдать? И так уже понятно.

Открытие модальных окон из класса можно делать только из класса инициализированного в вызывающей форме.
391 Злопчинский
 
13.09.16
12:02
А в доку внести...?
392 victuan1
 
13.09.16
18:53
Это пока предположение. И почему проблему с классами КОП вызывает  формекс?
393 Djelf
 
13.09.16
23:01
(392) formex не виноват т.к. я воспроизвел проблему на созданной с нуля базе только с загрузкой 1сpp (иначе классов же не будет).
Для вывода монопольной формы нужна ссылка на родительскую.
Видимо класс при создании запоминает эту ссылку.
Когда форма закрыта, что-то еще может остаться в памяти как "мусор", но именно этот мусор и помогает не падать.
Когда ссылка очищается полностью - ссылка на форму ведет в космос и мы падаем...
А вот когда ссылка на форму очистится явление не сильно предсказуемое, поэтому оно иногда работает довольно долго.
394 victuan1
 
14.09.16
15:06
И что, 1с++ кривая, или есть возможность ее поправить?
395 Djelf
 
14.09.16
15:41
(394) Кто ж это уже будет делать...
Есть обходной путь: сделай микро класс обертку над предупреждением и вопросом и пересоздавай его внутри своего класса.
396 victuan1
 
14.09.16
16:03
(395) Не понял идею.
397 Djelf
 
14.09.16
16:09
(396) В Класс Сообщения
Функция Предупредить(ТекстПредупреждения="",Таймаут=0) Экспорт
    Предупреждение(ТекстПредупреждения,Таймаут);
КонецФункции

в твой коп вместо Предупредить
Сообщения=СоздатьОбъект("Сообщения");
Сообщения.Предупредить("Упаду?");

привязка к форме будет пересоздаваться и так падать не должно.
398 Chieftain
 
14.09.16
17:10
(375) 1C++ 3.2.4.1, FormEx 2.0.5.101, не воспроизвелось.
399 victuan1
 
14.09.16
17:12
(398) У меня воспроизводилось на этих версиях.
400 victuan1
 
14.09.16
17:13
(398) Для чистоты эксперимента нужно проверить на указанных мною.
401 Chieftain
 
14.09.16
17:17
(400) Выложи свои версии, 4.3 на 1Cpp.ru не нашел что-то сходу
402 Chieftain
 
14.09.16
17:20
(399) Понял в чем косяк, 1С++ и formex загружал в глобальнике. При загрузке из обработки были какие-то проблемы, сейчас порою - может найду.
403 victuan1
 
14.09.16
17:30
(402) Какая разница где загружать?
404 victuan1
 
14.09.16
17:33
(401) 3.2.4.3 здесь лежит http://www.1cpp.ru/forum/YaBB.pl?num=1332077808
405 Chieftain
 
14.09.16
17:34
(404) Устал я походу - не вижу там ссылки
406 Djelf
 
14.09.16
17:45
А нет... все таки formex. Забыл что он в функции загрузки коп грузится. Убрал - не падает.
Но в любом случае через класс обертку и с ним не падает.
407 Djelf
 
14.09.16
17:51
(405) https://cloud.mail.ru/public/45EM/KVt7spxJW
чистая конфа с тестом падения, внутри 1cpp 3.2.4.3
у меня 100% падение
408 victuan1
 
14.09.16
18:05
(407) Проверил на дом. компе. Упало. Спасибо)
Напомню инструкцию для вызова падения:
1) запустить демо-конфу по ссылке https://cloud.mail.ru/public/45EM/KVt7spxJW
2) в меню выбрать "упасть"
3) откроется обработка, нажать последовательно кнопки "ИнитКОП", "Упасть", "Закрыть", обработка закроется.
4) в меню выбрать "упасть"
5) обработка снова откроется, сразу нажать "Упасть". 1С зависнет.
409 Chieftain
 
14.09.16
18:56
(408) Попробуй в КОП_Проверка.ert добавить код:

Перем FormEx_ЗаголовокПредупреждения Экспорт;
Перем FormEx_ИконкаПредупреждения Экспорт;
Перем FormEx_ОсновнаяКнопкаПредупреждения Экспорт;
410 Djelf
 
14.09.16
18:59
(409) Ай шайтан! Не падает ;)
411 Chieftain
 
14.09.16
19:01
(410) Видимо ноги растут из этой фичи:

[.0] функционал переопределения иконки, заголовка и кнопки "по умолчанию" для диалогов "Предупреждение" и "Вопрос"
// для переопределения надо определить переменные FormEx_ЗаголовокПредупреждения, FormEx_ИконкаПредупреждения и FormEx_ОсновнаяКнопкаПредупреждения и задать им значение
//FormEx_ЗаголовокПредупреждения: строка с заголовком диалога
//FormEx_ИконкаПредупреждения: число 1 - "стоп"; 2 - "вопрос"; 3 - "предупреждение"; 4 - "информация"; любое другое значение - не менять;
//FormEx_ОсновнаяКнопкаПредупреждения: число - порядковый номер кнопки диалога, которая становится "по умолчанию"
412 Chieftain
 
14.09.16
19:03
+(411) ИМХО: пытается получить переменные из текущего контекста как из модуля, а там другой тип (КОП) - вот и валится.
413 Djelf
 
14.09.16
19:05
(411) Об этом я думал, т.е. пытался установить эти параметры через Сервис - не помогало. А вот про экспортные переменные совсем не подумал.
414 Chieftain
 
14.09.16
19:10
(413) Возможно для обычных модулей FormEx их явно добавляет, поэтому проблем с чтением нет. А у КОПов свойства нет и при попытке чтения крашится.
415 victuan1
 
14.09.16
19:56
(409) Проверил, не падает.
Оператор Вопрос это тоже "лечит"?
416 Chieftain
 
14.09.16
20:04
(415) Что мешало сразу и проверить? У меня не падает.
417 victuan1
 
14.09.16
20:06
(416) Я сразу и проверил. У меня не падает. Интересуюсь, как у других.
418 Chieftain
 
14.09.16
20:10
(417) Ну в общем-то, если логически рассуждать - должно вылечиться, т.к. эти переменные и на диалог вопроса влияют
419 victuan1
 
14.09.16
20:16
(418) Да, прочитал - вижу. Проверю еще на двух компьютерах (когда будет доступ) и можно будет считать вопрос решенным.))
420 Злопчинский
 
14.09.16
20:25
Ну вы монстры!!!
421 victuan1
 
15.09.16
14:17
Пользователи тех двух ПК отчитались - всё стало работать нормально.
АЛьФ подготовил сборку, в которой эта проблема решена без объявления в КОП переменных переопределения иконки.
https://yadi.sk/d/mp4drZMqvBqLr
422 Ёпрст
 
15.09.16
14:43
(421) Попроси его, чтоб событие ПослеОткрытия работало в модальных формах еще.
423 Chieftain
 
15.09.16
14:57
(422) Так юзай ФормаПриСоздании(), оно вроде работает везде
424 victuan1
 
15.09.16
15:02
(422) А сам что не попросишь?
425 АЛьФ
 
15.09.16
15:03
Обновленная версия выложена на dorex.pro
2(422) При всем моем уважении... Там реально не реально сделать.
2(423) ПослеСозданияФормы()
426 Chieftain
 
15.09.16
15:06
(425) ФормаПриСоздании аналогично ПослеСозданияФормы и генерится объектом "Форма" из состава 1С++
427 victuan1
 
15.09.16
15:07
(425)
[665.21 Kb]
[версия: 2.0.5.110 от 15.09.2016]
[скачиваний: 888]
Откуда столько скачиваний?
428 Chieftain
 
15.09.16
15:08
+(426) правда оно чуть сложнее - объект "Форма" нужно держать. У меня просто в глобальном перехватчике все есть + доп.процедуры генерятся
429 АЛьФ
 
15.09.16
15:11
2(427) Логично предположить, что я просто не скидываю счетчик. :)
Но он и сам по себе глючно сделан.
430 Ёпрст
 
15.09.16
15:47
(425) ну и ладно, я то переделал в своё время все свои поделки :)
Так, думал, мот там не долго.
431 Ёпрст
 
15.09.16
15:49
(429) А, древнюю хотелку, с добавитьАтрибут с типом атрибута 9 (текстовая колонка), можно как-нить доработать ? Или там тоже засада по самые помидоры ?
432 АЛьФ
 
15.09.16
15:55
2(431) Добавление атрибутов это ж вообще не я до работоспособного состояния доводил, а Артур. Так что для меня там действительно засада, надо опять во всю влезать в проект.
Смотри как я к "вижуал студио" сейчас подключаюсь:
- на работе бездисковая станция, сервер где-то далеко-далеко за морями,
- с нее подрубаюсь к домашнему компу в терминальном режиме,
- там запускаю виртуальную машину с хрюшей,
- и уже тут запускаю студию.
Естественно, в таком режиме нормально не поработаешь. Кстати, во многом именно поэтому и пришлось остановить развитие проекта.
433 Ёпрст
 
15.09.16
15:57
(432) ну ясно. Артуру, тоже в своё время некогда было копаться. Так-то много полезных вещей с добавленной колонкой можно было бы лепить.
А и ладно, один хрне, все на снеговике ужо. почти все
434 Chieftain
 
15.09.16
16:08
(432) (433) Вроде на 1Cpp какой-то деятель вопросы по этому поводу сегодня задавал
http://www.1cpp.ru/forum/YaBB.pl?num=1191404333/all
435 АЛьФ
 
15.09.16
16:20
2(434) Это месяц назад. Но там я тоже уже не бывал давно. Спасибо.
436 Vippi
 
15.09.16
16:38
(433)
> А и ладно, один хрне, все на снеговике ужо. почти все

Не, не все :)

(435) Рад видеть, Алексей.
437 АЛьФ
 
15.09.16
16:40
2(436) Взаимно.
438 Chieftain
 
15.09.16
16:47
(435) Извиняюсь за ошибку, забыл что сегодня уже сентябрь... заработался...
439 victuan1
 
15.09.16
17:42
(438) Хорошо, когда детей в школу отправлять не надо)))
440 Chieftain
 
15.09.16
17:45
(439) Ну дочь в этом году в 1 класс пошла)) Правда водит ее жена - я в этот момент только спать ложусь последнее время))
441 victuan1
 
15.09.16
17:52
А я и дочь в школу вожу и сына в садик. И забираю я же. И жену на/с работу вожу)))
442 Djelf
 
15.09.16
21:10
(425) Я как-то не понял про ПослеОткрытия...
> 2(422) При всем моем уважении... Там реально не реально сделать.
FormEx_2.0.5.101 - в модальных срабатывает
FormEx_2.0.5.108 - в модальных не срабатывает
FormEx_2.0.5.110 по ссылке выше - в модальных срабатывает! оО
443 АЛьФ
 
16.09.16
08:34
2(442) Эуэмуэ.... Кхем... Вот точно помню, что затык там конкретный был с CDialog::DoModal, что я так и не разобрался как обойти. Может я чего не то помню? Старею...
444 ildary
 
16.09.16
15:00
Уважамые гуру, все не читал, стоит обновлять FormEx до 2.0.5.110, если сейчас стоит 2.0.5.109? Задача скрытия формы пока что не стоит.
445 АЛьФ
 
16.09.16
15:49
2(444) Если все работает, то нет смысла обновляться. Этот новый релиз очень специфичный глюк исправляет.
446 Злопчинский
 
16.09.16
17:12
(433) а я? а как же я...?! ;-)
447 Злопчинский
 
16.09.16
17:14
так где правильный формекс следует брать, со всеми псолдедними и предпоследними доработками? ведь вроде когда Альф отошел от проекта - его автономно пилили формекс на 1С++ ктото.. а сейчас Альф допилил... в итоге - где "правильно"..? или ветка по формексу всего одна?
448 Chieftain
 
16.09.16
17:20
(447) на дорексе, вестимо. Артур, емнип, когда пилил - все изменение Алексею сливал
449 Злопчинский
 
16.09.16
19:42
(448) спсб!
450 Djelf
 
16.09.16
21:17
(445) На 110й РасширениеФормы.ОбработкаОжидания спамит  CTimerWithEvent::SendEvent
451 АЛьФ
 
19.09.16
11:03
2(450) Так и знал, что что-то обязательно всплывет. Сегодня поправлю.
452 АЛьФ
 
19.09.16
12:41
+(451) Поправил.
453 Djelf
 
19.09.16
13:14
(452) Спасибо! Не спамит, на предупреждении не вылетает.
А с методами methColArray, methCreateStdControl_Static, methCtrlInfo, methFieldsArray, methGetCtrl, methTraceWindows что-то полезное/интересное сделать можно? Или это только для отладки?
454 АЛьФ
 
19.09.16
13:20
2(453) Это Артур делал. Насколько я понимаю, именно для отладки.