Имя: Пароль:
1C
1С v8
Перечисление возвращается строкой
,
0 Сильф
 
04.02.13
10:23
Выдрал из БСП общий модуль ДополнительныеОтчетыИОбработки, в нём есть функция ПолучитьВидОбработкиПоСтроковомуПредставлениюВида, из которой происходит возврат значения перечисления, например

Возврат Перечисления.ВидыДополнительныхОтчетовИОбработок.ЗаполнениеОбъекта;

Так вот, при работе в демобазе БСП функция возвращает, как и должна, значение типа "ПеречислениеСсылка.ВидыДополнительныхОтчетовИОбработок". А в УПП 1.3, в которую я перенёс этот общий модуль, выдаётся строковое значение перечисления, т.е., в данном случае "Заполнение объекта". В чём может быть дело?
1 Сильф
 
04.02.13
10:29
Как быстро улетают темы вниз...
2 Defender aka LINN
 
04.02.13
10:31
(0) Тут главное что - не смотреть в процедуру ни за какие коврижки.
3 Сильф
 
04.02.13
10:35
(2) Не понял, если честно, ирония это или нет. Процедура примитивнейшая: Если (условие) Тогда Возврат (значение перечисления) ИначеЕсли ... КонецЕсли.
4 Maxus43
 
04.02.13
10:36
(3) перевожу - отладчик то что говорит?
5 Reset
 
04.02.13
10:39
"выдаётся строковое значение перечисления" - как определил?
6 Сильф
 
04.02.13
10:45
Внутри упомянутой функции перечисление является перечислением. После выхода из процедуры возвращаемое значение в разных конфигурациях имеет разный тип.

(5) ну как? отладчиком и определил.
7 Maxus43
 
04.02.13
10:47
скрин процедуры с точкой останова отладчика и окна с возвращаемым значением. иначе не понять, чудеса
8 Reset
 
04.02.13
10:51
(6) Не верю.
Давай подробности.
9 Сильф
 
04.02.13
10:51
Ещё раз, развёрнуто. Это функция общего модуля ДополнительныеОтчетыИОбработки:

Функция ПолучитьВидОбработкиПоСтроковомуПредставлениюВида(СтроковоеПредставление) Экспорт
   
   Если      СтроковоеПредставление = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта() Тогда
       Возврат Перечисления.ВидыДополнительныхОтчетовИОбработок.ЗаполнениеОбъекта;
   ИначеЕсли СтроковоеПредставление = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиОтчет() Тогда
       Возврат Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет;
   ИначеЕсли СтроковоеПредставление = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма() Тогда
       Возврат Перечисления.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма;
   ИначеЕсли СтроковоеПредставление = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиСозданиеСвязанныхОбъектов() Тогда
       Возврат Перечисления.ВидыДополнительныхОтчетовИОбработок.СозданиеСвязанныхОбъектов;
   ИначеЕсли СтроковоеПредставление = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка() Тогда
       Возврат Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительнаяОбработка;
   ИначеЕсли СтроковоеПредставление = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет() Тогда
       Возврат Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет;
   КонецЕсли;
   
КонецФункции

//--------------------------

А вот вызов этой функции из модуля управляемой формы ДополнительныеОтчетыИОбработки, процедура ПриСозданииНаСервере:

...
ВидОбработок = ДополнительныеОтчетыИОбработки.ПолучитьВидОбработкиПоСтроковомуПредставлениюВида(ВидОбработокСтрока);
...

И вот в результате этого вызова переменная ВидОбработок в демоБСП имеет тип "ПеречислениеСсылка", а в УПП 1.3 — "Строка"...
10 Сильф
 
04.02.13
10:51
Минутку, сейчас будут скриншоты.
11 Reset
 
04.02.13
10:52
ВидОбработок - реквизит поди с типом строка?
12 Сильф
 
04.02.13
10:56
(11) Бинго!! Спасибо!! Ушёл посыпать голову пеплом...