|
v7: класс ВыполняемыйМодуль, ошибка в компиляции. не пойму в чем причина. | ☑ | ||
---|---|---|---|---|
0
Skom
15.10.14
✎
10:33
|
Есть у меня в конфе класс Выполняемый модуль.
Есть внешняя обработка, которая работает с этим модулем. Когда открываю внешнюю обработку, то все работает нормально. Модуль компилируется, когда встраиваю обработку в конфу, то модуль не компилируется. вот текст компилируемого модуля |Процедура УстановитьЗначение(НовоеЗначение) | Карта = НовоеЗначение; | ПриИзмененииКарты(); |КонецПроцедуры |
|||
1
Skom
15.10.14
✎
10:35
|
Модуль.НазначитьКонтекст(КонтекстФормы);
Модуль.КомпилироватьМодуль(); Вот на компиляции модуля говорит, что Процедура ПриИзмененииКарты не обнаружена. Это в том случае, когда обработка встроена в конфигурацию. Если такую же обработка запускаю как внешнюю обработку, то все отлично работает. |
|||
2
lavalit
15.10.14
✎
12:31
|
Должна быть Экспортная
|
|||
3
Skom
15.10.14
✎
12:32
|
пробовал. не работает.
|
|||
4
lavalit
15.10.14
✎
12:32
|
Как внешняя обработка конечно будет работать, но еслиона как класс работает, то обязательнонадо Экспортное делать.. и переменные, которые хотите доставать оттудова тоже Экспортные...
|
|||
5
Ёпрст
15.10.14
✎
12:32
|
а сама ПриИзмененииКарты где хоть описана ?
|
|||
6
Skom
15.10.14
✎
12:33
|
обработка 1в1 загружается из внешней в конфу.
во внешней работает, внутри конфы - нет. |
|||
7
Skom
15.10.14
✎
12:33
|
(5) в форме обработки
|
|||
8
Skom
15.10.14
✎
12:34
|
Обработка это не класс.
Обработка это обычная обработка, в моем случае это просто рабочее место. |
|||
9
lavalit
15.10.14
✎
12:35
|
А это что было? "Есть у меня в конфе класс Выполняемый модуль. "
|
|||
10
lavalit
15.10.14
✎
12:36
|
ТО естьнекая обработка которая используеткакой то класс? и Вы хотите ее впихнуть в конфу*
|
|||
11
Skom
15.10.14
✎
12:38
|
(10) нет)
|
|||
12
Ёпрст
15.10.14
✎
12:40
|
проверил, всё работает
Процедура ПриИзмененииКарты() Сообщить("ой"); КонецПроцедуры // ПриИзмененииКарты Процедура Выполнить() ТекстМодуля=" |Процедура УстановитьЗначение(НовоеЗначение) | Карта = НовоеЗначение; | ПриИзмененииКарты(); |КонецПроцедуры |"; Модуль = СоздатьОбъект("ВыполняемыйМодуль"); Модуль.НазначитьКонтекст(Контекст); Модуль.УстановитьМодуль(ТекстМодуля); Модуль.КомпилироватьМодуль(); КонецПроцедуры // сформировать |
|||
13
Skom
15.10.14
✎
12:48
|
Класс Общие.ПолеВыбораЗначения
встроен в конфигурацию. Процедура Инит(Конт, _ИдентификаторПоляВвода, ИдентификаторМаскирующегоТекста, _МаксКоличествоЭлементов, _ТолькоПоКнопкеВвода = 0, _МаскаПоиска = "") Экспорт КонтекстФормы = Конт; ИдентификаторПоляВвода = _ИдентификаторПоляВвода; ПолеНаФорме = КонтекстФормы.Форма.ПолучитьАтрибут(ИдентификаторПоляВвода); Если ПустаяСтрока(ИдентификаторМаскирующегоТекста) = 1 Тогда ИдентификаторМаскирующегоТекста = "текстМаска" + ИдентификаторПоляВвода; КонецЕсли; ИдентификаторТекстаНаФорме = ИдентификаторМаскирующегоТекста; Попытка ТекстНаФорме = КонтекстФормы.Форма.ПолучитьАтрибут(ИдентификаторМаскирующегоТекста); Исключение //Текстового поля на форме нет - ну и не будем ничего показывать ТекстНаФорме = ""; КонецПопытки; МаксКоличествоЭлементов = _МаксКоличествоЭлементов; МинКоличествоСимволов = 0; стрПрефиксНаименования = ""; фЕстьРамка = 1; фДляТабличногоПоля = 0; ТолькоПоКнопкеВвода = _ТолькоПоКнопкеВвода; МаскаПоиска = _МаскаПоиска; ПоказатьТекстНаФорме("", 0); //JohnyDeath 18.11.2006 { АтрФормы = СоздатьОбъект("АтрибутФормы"); АтрФормы.УстановитьАтрибут(КонтекстФормы.Форма,ИдентификаторПоляВвода); ФормулаПоляВвода = СокрЛП(АтрФормы.Формула); Если Прав(ФормулаПоляВвода,1)<>";" Тогда ФормулаПоляВвода=ФормулаПоляВвода+";"; КонецЕсли; // } JohnyDeath 18.11.2006 АтрФормы.АвтоВыбор = 0; Модуль = СоздатьОбъект("ВыполняемыйМодуль"); Модуль.УстановитьМодуль(" |Функция ПолучитьЗначение() | Возврат "+ИдентификаторПоляВвода+"; |КонецФункции | |Процедура УстановитьЗначение(НовоеЗначение) | "+ИдентификаторПоляВвода+" = НовоеЗначение; | "+ФормулаПоляВвода+" //JohnyDeath 18.11.2006 |КонецПроцедуры | |Функция Тип() | Возврат ТипЗначенияСтр("+ИдентификаторПоляВвода+"); |КонецФункции | |Функция Вид() | Попытка | Возврат "+ИдентификаторПоляВвода+".Вид(); | Исключение | Возврат """"; | КонецПопытки; |КонецФункции |"); Модуль.НазначитьКонтекст(КонтекстФормы); Модуль.КомпилироватьМодуль(); Модуль.ВыполнитьМодуль(); Тип = Модуль.Тип(); Если Тип = "Справочник" Тогда ВидСправочника = Модуль.Вид(); //Сообщить(""+ИдентификаторПоляВвода+": "+ВидСправочника+", "+АтрФормы.ТипЗначенияСтр()); Если ПустаяСтрока(ВидСправочника) = 0 Тогда Если ТипЗначения(ВыборГруппы) = 0 Тогда ВыборГруппы = ПолеНаФорме.ВыборГруппы(); Если ВыборГруппы <> 1 Тогда ВыборГруппы = 0; КонецЕсли; КонецЕсли; //ПоставщикДанных = СоздатьОбъект("Общие.ПолеВыбораЗначения.ПоставщикДанных.Справочник"); ПоставщикДанных.Инит(ВидСправочника, ПоискПоВхождению, ВыборГруппы); КонецЕсли; КонецЕсли; ПоказатьТекстНаФорме("", 0); КонецПроцедуры |
|||
14
Skom
15.10.14
✎
12:49
|
Вот если Инит вызывается из внешней обработки, то все норм.
если из встроенной в конфу то ппц. |
|||
15
Skom
15.10.14
✎
13:02
|
я собственно выкрутился, просто из меню вызываю внешнюю обработку а не встроенную, но вот интересно все же, почему такое поведение. Да и если удастся сделать встроенную, то все же перекину в конфу обработку.
|
|||
16
Ёпрст
15.10.14
✎
13:04
|
Не используй левые классы, пиши свои, православные.
|
|||
17
Skom
15.10.14
✎
13:04
|
это не левый) это садовниковский
|
|||
18
Ёпрст
15.10.14
✎
13:04
|
а так, всё работает, см (12)
А че , где там у тебя вызывается, откуда ноги растут - лень смотреть даже. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |