Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 14:07

Как обратиться к перечислению 1с 8.2 управляемая с модуля менеджера документа

Автор magbz, 25 фев 2016, 13:01

0 Пользователей и 1 гость просматривают эту тему.

magbz

Имеется общий модуль ОбщегоПРНазначения с
Функция ПолучитьИмяЗначенияПеречисления(Ссылка) Экспорт
        Если Ссылка.Пустая() Тогда
            Возврат "";
        КонецЕсли;
//получаем как названо перечисление в конфигураторе   
ИмяПеречисления = Ссылка.Метаданные().Имя;
//теперь получим индекс где хранится то что нам надо
Индекс = Перечисления[ИмяПеречисления].Индекс(Ссылка);
//и вот счастье. возвращаем то что нам надо - идентификатор!!!
Возврат Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[Индекс].Имя;

КонецФункции // ПолучитьИмяЗначенияПеречисления()

имеется джокумент Поступление
в форме документа функция работает

&НаКлиенте
Процедура ПриОткрытии(Отказ)
      Если Объект.Организация.Пустая()Тогда
      Объект.Организация = ОбщегоПРНазначения.НайтиОрганизациюПОКодуИНаименованию("00-000001","")
          КонецЕсли;

         ВидОперации =  ОбщегоПРНазначения.ПолучитьИмяЗначенияПеречисления(Объект.ВидОперации);
   Если ВидОперации = "ПоступлениеОтФизЛиц" Тогда
      Заголовок = "Поступление от жильцов";
      Элементы.ОтловЖивотного.Видимость = Ложь;
      Элементы.Контрагент.Заголовок = "Житель";
      Элементы.Заявка.Видимость = Ложь;
      ОчиститьГруппуОтловЖивотного();

             ИначеЕсли ВидОперации = "ВозвратОтВладельца" Тогда
            Заголовок = "Возврат животного";
           Элементы.ОтловЖивотного.Видимость = Ложь;
            Элементы.Контрагент.Заголовок = "Бывший владелец";
            Элементы.Заявка.Видимость = Истина;
            ОчиститьГруппуОтловЖивотного();

            ИначеЕсли ВидОперации = "ОтказХозяевов" Тогда
            Заголовок = "Отказ хозяина";
           Элементы.ОтловЖивотного.Видимость = Ложь;
            Элементы.Контрагент.Заголовок = "Хозяин";
            Элементы.Заявка.Видимость = Ложь;
            ОчиститьГруппуОтловЖивотного();


   Иначе
      Заголовок = "Поступление от подрядчика";
        Элементы.ОтловЖивотного.Видимость = Истина;
      Элементы.Заявка.Видимость = Истина;
      Элементы.Контрагент.Заголовок = "Подрядчик";
   КонецЕсли;
   
   КонецПроцедуры

а модуле менеджера эта функция не работает

Процедура ПечатьПоступление(ТабДок, Ссылка) Экспорт
   //{{_КОНСТРУКТОР_ПЕЧАТИ(ПечатьПоступление)
   Макет = Документы.Поступление.ПолучитьМакет("ПечатьПоступление");
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   Поступление.АдресМестаОтлова,
   |   Поступление.ВидОперации,
   |   Поступление.Ветеринар,
   |   Поступление.Водитель,
   |   Поступление.Дата,
   |   Поступление.Договор,
   |   Поступление.Заявка,
   |   Поступление.Кинолог,
   |   Поступление.Комментарий,
   |   Поступление.Контрагент,
   |   Поступление.Машина,
   |   Поступление.Номер,
   |   Поступление.Организация,
   |   Поступление.Ответственный,
   |   Поступление.ПричинаОтлова,
   |   Поступление.Питомцы.(
   |      НомерСтроки,
   |      Наименование
   |   )
   |ИЗ
   |   Документ.Поступление КАК Поступление
   |ГДЕ
   |   Поступление.Ссылка В(&Ссылка)";
   Запрос.Параметры.Вставить("Ссылка", Ссылка);
   Выборка = Запрос.Выполнить().Выбрать();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    СведенияОбОрганизации = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(Выборка.Организация, Выборка.Дата, ,);   
   
   ВидОперации =  ОбщегоПРНазначения.ПолучитьИмяЗначенияПеречисления(ВидОперации);
   
   Если ВидОперации = "ПоступлениеОтФизЛиц" Тогда
         Заголовок = "Поступление от жильцов";
         ИначеЕсли ВидОперации = "ВозвратОтВладельца" Тогда
                Заголовок =    "Возрат животного с приюта";
                 ИначеЕсли ВидОперации = "ОтказХозяевов" Тогда
                        Заголовок = "Поступление от хозяевов";
                         Иначе
                        Заголовок = "Поступление от подрядчика";
   КонецЕсли;

   ОбластьЗаголовок.Параметры.ТекстЗаголовка =
            Заголовок
           + Выборка.Номер
           + " от "
           + Формат(Выборка.Дата, "ДФ=""dd MMMM yyyy""");

   ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьПитомцыШапка = Макет.ПолучитьОбласть("ПитомцыШапка");
   ОбластьПитомцы = Макет.ПолучитьОбласть("Питомцы");
   Подвал = Макет.ПолучитьОбласть("Подвал");

   ТабДок.Очистить();

   ВставлятьРазделительСтраниц = Ложь;
   Пока Выборка.Следующий() Цикл
      Если ВставлятьРазделительСтраниц Тогда
         ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
      КонецЕсли;

      ТабДок.Вывести(ОбластьЗаголовок);

      ОбластьШапка.Параметры.Заполнить(Выборка);
      ТабДок.Вывести(ОбластьШапка, Выборка.Уровень());

      ТабДок.Вывести(ОбластьПитомцыШапка);
      ВыборкаПитомцы = Выборка.Питомцы.Выбрать();
      Пока ВыборкаПитомцы.Следующий() Цикл
         ОбластьПитомцы.Параметры.Заполнить(ВыборкаПитомцы);
         ТабДок.Вывести(ОбластьПитомцы, ВыборкаПитомцы.Уровень());
      КонецЦикла;

      Подвал.Параметры.Заполнить(Выборка);
      ТабДок.Вывести(Подвал);

      ВставлятьРазделительСтраниц = Истина;
   КонецЦикла;
   //}}
КонецПроцедуры

выдает ошибку
{ОбщийМодуль.ОбщегоПРНазначения.Модуль(11)}: Значение не является значением объектного типа (Пустая)
     Если Ссылка.Пустая() Тогда

Rasty

Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

magbz


Rasty

Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

magbz

Функция в общем модуле она рабочая потому что работает в модуле формы документа...я так думаю проблема в получении ссылки на перечисление в модуле менеджера
Добавлено: 25 фев 2016, 14:10


В модуле формы документа
Объект.ВидОперации Тип ПеречислениеСсылка.ВидыОперацииПоступленияЖ
а в модуле менеджера
ВидОперации Тип
Добавлено: 25 фев 2016, 14:13


Пробовал та изменить запрос
Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   Поступление.АдресМестаОтлова,
   |   Поступление.ВидОперации,
   |   Поступление.Ветеринар,
   |   Поступление.Водитель,
   |   Поступление.Дата,
   |   Поступление.Договор,
   |   Поступление.Заявка,
   |   Поступление.Кинолог,
   |   Поступление.Комментарий,
   |   Поступление.Контрагент,
   |   Поступление.Машина,
   |   Поступление.Номер,
   |   Поступление.Организация,
   |   Поступление.Ответственный,
   |   Поступление.ПричинаОтлова,
   |   Поступление.Питомцы.(
   |      НомерСтроки,
   |      Наименование
   |   ),
   |   ВидыОперацийПоступленияЖ.Ссылка
   |ИЗ
   |   Документ.Поступление КАК Поступление
   |      ЛЕВОЕ СОЕДИНЕНИЕ Перечисление.ВидыОперацийПоступленияЖ КАК ВидыОперацийПоступленияЖ
   |      ПО Поступление.ВидОперации = ВидыОперацийПоступленияЖ.Ссылка
   |ГДЕ
   |   Поступление.Ссылка В(&Ссылка)";
   Запрос.Параметры.Вставить("Ссылка", Ссылка);
   Выборка = Запрос.Выполнить().Выбрать();

Rasty

перечисление тут не причем
{ОбщийМодуль.ОбщегоПРНазначения.Модуль(11)}: Значение не является значением объектного типа (Пустая)
     Если Ссылка.Пустая() Тогда

что должно быть в ссылке? ссылка на документ?
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

magbz

Я же пытаюсь по виду перечисления изменить заголовок печатной формы....в функцию на общий модуль должна идти ссылка на перечисление
Добавлено: 25 фев 2016, 14:43


почему то запрос не срабатывает!? в отладчике пишет Выборка значение ошибка чтения значения

Rasty

выборка это выборка, его обход совершается
Пока Выборка.Следующий() Цикл
    АдресМестаОтлова = Выборка.АдресМестаОтлова;
КонецЦикла;

если хотите сразу все видеть, то запрос.выполнить().выгрузить();
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

Похожие темы (5)

Рейтинг@Mail.ru

Поиск