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

Ап. Надеюсь на подсказки… … и еще конечно надеюсь, что пойму сабж лучше на этапе тестирования нетленки; тогда возможно отпишусь полнее в отдельной теме.
ну а всё-таки совместимость? Точно-точно 8.3?
вовсе нет, 8.2… там и проверки нет на версию… или что, этот тип появился в 8.3 ?
Ну в 8.3 в толстом клиенте ТипЗнч(Вычислить(«ОбщегоНазначения»))=Тип(«ОбщийМодуль») Датет ответ да
см. , т.е. и в 8.2 в типовой работает без проблем. Присутствие такого Типа в типовой мне ничего не дает. У меня в нетленке нет БСП, только клочок от нее. И в этом клочке в трех местах идет проверка ТипЗнч объекта на Тип(«ОбщийМодуль»). И во всех трех случаях проверка ругается.
Выражение Тип(«ОбщийМодуль») Значение В управляемом приложении, почему то табло нет
сегодня позже еще помучу конфигуратор с этой бедой. кстати, да. у меня УФ
какие галки при проверке стоят?
логическая целостность, поиск некорр ссылок тонкий, веб-клиент, сервер расширенная
собственно до тестирования-то дело еще не дошло. проблема пока на уровне проверки в конфигураторе добавил толстый клиент (управляемое) и толстый клиент (клиент-сервер) Та же беда. Авось разберусь как начну тестировать. Заодно ума наберусь )
Тестирование начато, но пока не до сабжа — идет отладка более серьезных недочетов. Однако, когда выделяю какую-нибудь переменную, содержащую общий модуль, и нажимаю «Вычислить выражение», в окне Выражение вижу, что тип выражения в переменной — ОбщийМодуль. То есть тип такой существует и активно используется. Надо только научиться проверять тип переменной — является ли он типом «ОбщийМодуль».
ну платформа предполагает, что ошибочный параметр и что? чем тебе это мешает? давно видел это предупреждение, с 2.1.2 бсп по-моему, просто не заморачиваюсь, знаю, что код рабочий и все.
понял, спасибо за мнение. Конечно, если в итоге окажется, что проверка ошибается, забью на нее. Пока отложил вопрос — не до того.
Как бы не так. Проблема все-таки есть — здесь не просто некорректные предупреждения механизма логической проверки. Вот одно из мест, на которое ругается проверка: К этому приходим, имея название общего модуля в переменнной Имя. Код отрабатывается без толку, возвращая в итоге пустую переменную Модуль с типом значения ОбщийМодуль. Вот так. Буду искать альтернативные способы получения модуля по его названию, ибо функция стандартная, используется часто.
если код отрабатывал без толку, то БСП вообще бы не работала. возвращается модуль, а не пустая переменная, потом через этот модуль вызываются функции и процедуры. кстати в 8.3 платформа уже не дает предупреждение на ошибочный параметр.
Модуль = Вычислить(Имя); — это как вычислит «, имея название общего модуля в переменнной Имя» ?
а почему не проверяете, на клиенте, на сервере этот общий модуль и т.д.?
А вот чем же все-таки все закончилось? М?)
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
При моделировании информации, рассказанной по данному теме , столкнулся с проблемой, которая не освещена ни в курсе, ни в данной ветке обсуждения… Проблему решил – хочу поделится решением (в случае, если кто то так же столкнулся с данной проблемой) при реализации “тесного внедрения БСП 2.1.9.2.” и настройки синхронизации на стороне базы, используюйще УФ (т.е. уже имеющей внедренный БСП)
Ошибка выполнения созданного и настроенного обмена на стороне Базы приемника – при использовании БСП 2.1.9.2 в базе источнике (стоит отметит, что с базой источником проблематика не связана):
”
{ОбщийМодуль.ОбщегоНазначения.Модуль(2954)}: Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().
Для объекта метаданных “ПланОбмена.ОбменИсходнаяБухгалтерия3”
не найден идентификатор
в справочнике “Идентификаторы объектов метаданных”.
Для разработчика: возможно требуется обновить вспомогательные данные,
которые влияют на работу программы. Для выполнения обновления можно:
– воспользоваться внешней обработкой
“Инструменты разработчика: Обновление вспомогательных данных”,
– либо запустить программу с параметром командной строки 1С:Предприятия 8
“/С ЗапуститьОбновлениеИнформационнойБазы”,
– либо увеличить номер версии конфигурации, чтобы при очередном запуске
выполнились процедуры обновления данных информационной базы.
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
”
Решение, которое мне помогло:
1. В “ПланОбмена” – в обоих программах = Добавить реквизит “ИспользоватьОтборПоОрганизации” – без этого происходит ошибка проверки данного реквизита.
2. В “ПланОбмена” БП3 – добавить Макет “ПравилаОбменаКорреспондента”, заполнив его текстом правил обмена из БазыИсточника (откуда данные идет в БП3). Если этого не сделать – происходит ошибка проверки всех требуемых условий для добавленния данных о ПланеОбмена в Регистр “Правила для обмена данными” – т.к. для добавления ТРЕБУЕТСЯ иметь оба эти макета… Ошибка происходит в функции “ВыполнитьОбновлениеВерсииТиповыхПравилДляОбменаДанными” = в общем модуле “ОбменДаннымиСервер”.
3. Создать внешнюю обработку для “ручного” обновления информации в справочнике “ИдентификаторыОбъектовМетаданных” – со следующим кодом (выполнение на сервере без контекста):
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();
