|
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
|
||||
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
|
||||
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
|
||||
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
|
(363) вот эта
https://cloud.mail.ru/public/Micg/RNZLTUP6K |
|||
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) Это Артур делал. Насколько я понимаю, именно для отладки.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |