|
ТипЗнч(Модуль) <> Тип("ОбщийМодуль") - Возможно ошибочный параметр ОбщийМодуль | ☑ | ||
---|---|---|---|---|
0
PiotrLoginov
16.07.13
✎
12:36
|
Пытаюсь разобраться в сонме возможных типов значений, ибо при проверке моей нетленки ругается на выдернутую из СтандартныеПодсистемыКлиент (БСП) в мою нетленку функцию:
Функция КлиентскийОбщийМодуль(Имя) Экспорт Модуль = Вычислить(Имя); #Если НЕ ВебКлиент Тогда Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Общий модуль ""%1"" не найден.'"), Имя); КонецЕсли; #КонецЕсли Возврат Модуль; КонецФункции Сама ругань - в заголовке. Накурил в СП: "ОписаниеТипов (TypeDescription) - Представляет собой объект для управления допустимыми типами значений. В основном предназначен для присвоения в качестве значений соответствующим свойствам других объектов. Набор допустимых типов и квалификаторы примитивных типов задаются при создании объекта." Вопрос: это что же, получается, если хочешь какой-то особый Тип, опиши его явно? Типовые на предмет поиска места, где описываются необходимые типы, еще не мучал. |
|||
1
Ненавижу 1С
гуру
16.07.13
✎
12:37
|
нет таких типов как "модуль"
|
|||
2
zladenuw
16.07.13
✎
12:40
|
(0) так в типовых вроде сравнение текста модулей. а тип знч
|
|||
3
PiotrLoginov
16.07.13
✎
12:46
|
(1) "Модуль" - нет. Есть "Общиймодуль". (?)
примечание к функции в типовой конфе: // Возвращает клиентский общий модуль по имени. ... гм... вернет текст модуля? ссылку на модуль? сразу признаюсь: эксперимент на практике могу не осилить. Да и не важно в данном случае. Подскажите принцип - я правильно понимаю, типы присутствуют изначально + можно описывать дополнительно какие захочешь? (звучит конечно смело) (2) ? мб опечатка? "сравнение НЕ текста модулей, а ТипЗнч" |
|||
4
acsent
16.07.13
✎
12:49
|
(3) вернет объект типа "ОбщийМодуль"
|
|||
5
acsent
16.07.13
✎
12:50
|
(3) можно описывать составные типы только
|
|||
6
PiotrLoginov
16.07.13
✎
12:51
|
(4) (5) так. а в моем случае ругается почему? повторюсь: я должен описать явно Тип "ОбщийМодуль" с помощью ОписаниеТипов ?
|
|||
7
PiotrLoginov
16.07.13
✎
12:52
|
(5) дошло. т.е. ОписаниеТипов тут ни к чему. а тогда ЧЯДНТ ?
|
|||
8
Ненавижу 1С
гуру
16.07.13
✎
13:01
|
(3) действительно есть, а какой в нем смысл?
|
|||
9
PiotrLoginov
16.07.13
✎
13:04
|
(8) так и знал, что кто-то спросит :) в данном случае видимо прежде чем вернуть объект идет проверка, что этот объект - действительно общий модуль.
Вопрос в том, почему в типовой такая проверка нормальна, а у меня ругается |
|||
10
acsent
16.07.13
✎
13:05
|
(8) Посмотри БСП )))
|
|||
11
acsent
16.07.13
✎
13:06
|
в толстом клиенте, в табло Тип("ОбщийМодуль") отрабатывает на ура
|
|||
12
PiotrLoginov
16.07.13
✎
13:13
|
(10) Пытался. Если б хватило мозгов, сюда бы не пошел советоваться. Ну используется там ссылка на модуль по его названию в куче мест. Ну и что мне это дает? Не сомневаюсь, что в типовой когда функция возвращает модуль по его названию, проверка на Тип("ОбщийМодуль") отрабатывается на ура. Если это один из стандартных типов, почему у меня-то ругается?
Вот еще в другой функции у меня (тоже вырванной из БСП): ... Если ТипДанных = Тип("Булево") ИЛИ ТипДанных = Тип("Строка") ИЛИ ТипДанных = Тип("Число") ИЛИ ТипДанных = Тип("Дата") ИЛИ ТипДанных = Тип("Неопределено") ИЛИ ТипДанных = Тип("УникальныйИдентификатор") ИЛИ ТипДанных = Тип("Null") ИЛИ ТипДанных = Тип("Тип") ИЛИ ТипДанных = Тип("ХранилищеЗначения") ИЛИ ТипДанных = Тип("ОбщийМодуль") ИЛИ ТипДанных = Тип("ОбъектМетаданных") ИЛИ ТипДанных = Тип("ТипЗначенияXDTO") ИЛИ ТипДанных = Тип("ТипОбъектаXDTO") ИЛИ ЭтоСсылка(ТипДанных) Тогда ... Т.е. куча типов упоминается, и все норм кроме Тип("ОбщийМодуль") - опять ругань при проверке. Как будто остальные типы существуют, а этому быть не положено. Почему-то всегда думал, что перечень возможных типов един и аксиомен, ан нет... |
|||
13
acsent
16.07.13
✎
13:14
|
может у тебя совместимость какая стоит у конфы?
|
|||
14
acsent
16.07.13
✎
13:14
|
что за проверка кстати?
|
|||
15
PiotrLoginov
16.07.13
✎
13:16
|
(13) затрудняюсь ответить
(14) просто проверка конфы на ошибки в конфигураторе |
|||
16
Ненавижу 1С
гуру
16.07.13
✎
13:17
|
(10) посмотрел - это писец какой-то
|
|||
17
Ненавижу 1С
гуру
16.07.13
✎
13:23
|
+(16) упал под стол
раздел что нового: • Обновлены сведения о валютах Боливар и Замбийская квача в классификаторе валют. |
|||
18
PiotrLoginov
16.07.13
✎
14:18
|
(17) :)
... Поискал все-таки, где объявляется такой тип в типовых - нет такого места. Порылся в перечне возможных типов данных у себя и в типовой - нет такого типа "ОбщийМодуль", однако в типовой проблема не возникает. Поигрался с #Если . Бесполезно. Апаю-с... Может кто-то в теме ? |
|||
19
PiotrLoginov
16.07.13
✎
15:23
|
Ап. Надеюсь на подсказки...
... и еще конечно надеюсь, что пойму сабж лучше на этапе тестирования нетленки; тогда возможно отпишусь полнее в отдельной теме. |
|||
20
hhhh
16.07.13
✎
16:01
|
(19) ну а всё-таки совместимость? Точно-точно 8.3?
|
|||
21
PiotrLoginov
16.07.13
✎
17:03
|
(20) вовсе нет, 8.2... там и проверки нет на версию... или что, этот тип появился в 8.3 ?
|
|||
22
Serginio1
16.07.13
✎
18:01
|
Ну в 8.3 в толстом клиенте
ТипЗнч(Вычислить("ОбщегоНазначения"))=Тип("ОбщийМодуль") Датет ответ да |
|||
23
PiotrLoginov
16.07.13
✎
18:12
|
(22) см. (11) , т.е. и в 8.2 в типовой работает без проблем.
Присутствие такого Типа в типовой мне ничего не дает. У меня в нетленке нет БСП, только клочок от нее. И в этом клочке в трех местах идет проверка ТипЗнч объекта на Тип("ОбщийМодуль"). И во всех трех случаях проверка ругается. |
|||
24
Infsams654
16.07.13
✎
18:20
|
(23) Толстый клиент
Сервис - Табло Выражение Тип("ОбщийМодуль") Значение Общий модуль В управляемом приложении, почему то табло нет |
|||
25
PiotrLoginov
16.07.13
✎
18:25
|
(24) сегодня позже еще помучу конфигуратор с этой бедой.
кстати, да. у меня УФ |
|||
26
acsent
16.07.13
✎
18:27
|
какие галки при проверке стоят?
|
|||
27
PiotrLoginov
16.07.13
✎
18:34
|
логическая целостность, поиск некорр ссылок
тонкий, веб-клиент, сервер расширенная |
|||
28
PiotrLoginov
16.07.13
✎
18:37
|
собственно до тестирования-то дело еще не дошло. проблема пока на уровне проверки в конфигураторе
добавил толстый клиент (управляемое) и толстый клиент (клиент-сервер) Та же беда. Авось разберусь как начну тестировать. Заодно ума наберусь ) |
|||
29
PiotrLoginov
18.07.13
✎
21:40
|
Тестирование начато, но пока не до сабжа - идет отладка более серьезных недочетов. Однако, когда выделяю какую-нибудь переменную, содержащую общий модуль, и нажимаю "Вычислить выражение", в окне Выражение вижу, что тип выражения в переменной - ОбщийМодуль. То есть тип такой существует и активно используется. Надо только научиться проверять тип переменной - является ли он типом "ОбщийМодуль".
|
|||
30
banco
18.07.13
✎
21:52
|
(0) ну платформа предполагает, что ошибочный параметр и что? чем тебе это мешает? давно видел это предупреждение, с 2.1.2 бсп по-моему, просто не заморачиваюсь, знаю, что код рабочий и все.
|
|||
31
PiotrLoginov
18.07.13
✎
23:46
|
(30) понял, спасибо за мнение. Конечно, если в итоге окажется, что проверка ошибается, забью на нее. Пока отложил вопрос - не до того.
|
|||
32
PiotrLoginov
19.07.13
✎
03:28
|
Как бы не так. Проблема все-таки есть - здесь не просто некорректные предупреждения механизма логической проверки.
Вот одно из мест, на которое ругается проверка: Если Метаданные.ОбщиеМодули.Найти(Имя) <> Неопределено Тогда Модуль = Вычислить(Имя); Иначе Модуль = Неопределено; КонецЕсли; Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Общий модуль ""%1"" не найден.'"), Имя); КонецЕсли; Возврат Модуль; К этому приходим, имея название общего модуля в переменнной Имя. Код отрабатывается без толку, возвращая в итоге пустую переменную Модуль с типом значения ОбщийМодуль. Вот так. Буду искать альтернативные способы получения модуля по его названию, ибо функция стандартная, используется часто. |
|||
33
banco
19.07.13
✎
08:18
|
(32) если код отрабатывал без толку, то БСП вообще бы не работала. возвращается модуль, а не пустая переменная, потом через этот модуль вызываются функции и процедуры. кстати в 8.3 платформа уже не дает предупреждение на ошибочный параметр.
|
|||
34
Infsams654
19.07.13
✎
08:20
|
(32) Модуль = Вычислить(Имя); - это как вычислит ", имея название общего модуля в переменнной Имя" ?
|
|||
35
hhhh
19.07.13
✎
09:18
|
(34) а почему не проверяете, на клиенте, на сервере этот общий модуль и т.д.?
|
|||
36
Emilio
16.08.13
✎
01:05
|
А вот чем же все-таки все закончилось? М?)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |