8.х Не вытягивается значение реквизита документа

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем bajiepka, 8 дек 2014.

  1. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    Помогите пожалуйста разобраться.
    БП 3.0 (8.3), управляемое приложение.
    Создал ВПФ, подключил, изменил как надо макет.
    Нужно вытянуть в ВПФ заполненные в документе значения из ТЧ "Дополнительно":
    "Отпуск разрешил" и "Ответственный".
    Через СсылкаНаОбъект не тянет (пустое значение), через запрос тоже не вытягивает.
    Не разобрался еще с управляемой формой, поэтому не могу отладить.
    Подскажите, почему может не тянуть? Может в общем модуле БП есть соответствующие процедуры и функции?
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.570
    Симпатии:
    717
    Баллы:
    204
    В режиме УФ значения через "." необходимо получать на стороне сервера.
    bajiepka нравится это.
  3. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    К примеру, делаю так:
    - создаю серверную функцию
    Код:
    &НаСервере
    Функция ПолучитьРеквизит(ТекДок)
    Запрос = Новый Запрос();
    Запрос.Установитьпараметр("ТекДок", ТекДок);
    Запрос.Текст = "ВЫБРАТЬ
    |Док.Ответственный КАК Ответственный
    |ИЗ
    |Документ.РеализацияТоваровУслуг КАК Док
    |ГДЕ
    |Док.Ссылка = &ТекДок";
    Обход = Запрос.Выполнить().Выбрать();
    
    Пока Обход.Следующий Цикл
    НужныйРеквизит = Обход.Ответственный;
    КонецЦикла;
    
    Возврат НужныйРеквизит;
    КонецФункции
    
    - затем в коде я ее вызываю
    Код:
    ...
    РеквизитОтв = ПолучитьРеквизит(СсылкаНаОбъект);
    ОбластьМакета.Параметры.Ответственный = РеквизитыОтв;
    ...
    И всё равно возвращается пустое значение. Я всё делаю не так или что-то отдельное? :)
    Последнее редактирование: 9 дек 2014
  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    1. Оформляйте код тегами CODE
    2. а смысл вашего запроса? возьме сразу нужный реквизит у дока, чего заборы то городить
  5. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    Пытался. К примеру,
    Код:
    ОбластьМакета.Параметры.Ответственный = "" + СсылкаНаОбъект.Ответственный.ПолноеНаименование();
    (обычно так и делал) ничего не дает. Через консоль запросов смотрел этот реквизит, там он заполнен. Вывести же его не получается.
    Пробовал еще так:
    Код:
    ОбщегоНазначенияБПВызовСервера.ЗначениеРеквизитаОбъекта(СсылкаНаОбъект, "Ответственный")
    - тоже не получается
    сам не фанат заборы городить. но в управляемом приложении у меня не получается сделать...
  6. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    Уверен что реквизит документа ОТВЕСТВЕННЫЙ заполнено ?
  7. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.570
    Симпатии:
    717
    Баллы:
    204
    А так чего получается?

    Код:
    &НаСервереБезКонтекста
    Функция ПолучитьЗначениеРеквизита(СсылкаНаОбъект, ИмяРеквизита = Неопределено)
    
    Если НЕ ИмяРеквизита = Неопределено Тогда
    Возврат СсылкаНаОбъект[ИмяРеквизита];
    КонецЕсли;
    
    КонецФункции
  8. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    Вадим, а если ИмяРеквизита = неопределено ? твой код сбойнет, так как не будет возврата в принципе у функции
  9. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    По-другому никак не смог, но вот, чтобы наглядно...

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      962,8 КБ
      Просмотров:
      2
    • 2.jpg
      2.jpg
      Размер файла:
      800,3 КБ
      Просмотров:
      2
  10. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.570
    Симпатии:
    717
    Баллы:
    204
    Значит делаем так:
    Код:
    &НаСервереБезКонтекста
    Функция ПолучитьЗначениеРеквизита(СсылкаНаОбъект, ИмяРеквизита = Неопределено)
    
    Перем ВозвращаемоеЗначение;
    
    Если НЕ ИмяРеквизита = Неопределено Тогда
    ВозвращаемоеЗначение =  СсылкаНаОбъект[ИмяРеквизита];
    КонецЕсли;
    
    Возврат ВозвращаемоеЗначение;
    
    КонецФункции
    
  11. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    Щас попробую...
  12. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    я бы предложила тогда так
    Код:
    &НаСервереБезКонтекста
    Функция ПолучитьЗначениеРеквизита(СсылкаНаОбъект, ИмяРеквизита = Неопределено)
    
    Возврат ?(ИмяРеквизита = Неопределено, Неопределено, СсылкаНаОбъект[ИмяРеквизита]);
    
    КонецФункции
    тогда можно будет понять что вернулось...
  13. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    с &НаСервереБезКонтекста всё время ошибка "Процедура или функция с указанным именем не определена (ПолучитьЗначениеРеквизита) ..."
    с &НаСервереБезКонтекста оба варианта ничего не возвращают...
    пробовал вызывать функцию:
    Код:
    ПолучитьЗначениеРеквизита(СсылкаНаОбъект,)
    ПолучитьЗначениеРеквизита(СсылкаНаОбъект, СсылкаНаОбъект.Ответственный)
    ПолучитьЗначениеРеквизита(СсылкаНаОбъект, "Ответственный")
    
    во всех случаях возвращается "Неопределено"
    Код:
    &НаСервере
    Функция ПолучитьЗначениеРеквизита(СсылкаНаОбъект, ИмяРеквизита = Неопределено)
    
    Возврат ?(ИмяРеквизита = Неопределено, "Неопределено", СсылкаНаОбъект[ИмяРеквизита]);
    
    КонецФункции
    Вернула "Неопределено"
  14. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    я что-то не так сделал? :oops:
  15. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а как вы ее вызвали? приведите код
  16. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    Извиняюсь за долгую паузу... обстоятельства...

    Функция как вы и писали:

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

    Код:
    ...
    ПарамПолучил = ПолучитьЗначениеРеквизита(СсылкаНаОбъект, "Организация");
            ОбластьМакета.Параметры.Получил = ПарамПолучил;
    ...
    В конфигураторе такая ошибка:

    Код:
    {ВнешняяОбработка.ЗаказНаряд.МодульОбъекта(738,18)}: Процедура или функция с указанным именем не определена (ПолучитьЗначениеРеквизита)
            ПарамПолучил = <<?>>ПолучитьЗначениеРеквизита(СсылкаНаОбъект, "Организация"); (Проверка: Сервер)
    
  17. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    обратите внимание на диррективы, вам указали НаСервереБезКонтекста, а вы пишете НаСервереСКонтекстом
  18. TopicStarter Overlay
    bajiepka
    Offline

    bajiepka Опытный в 1С

    Регистрация:
    26 сен 2014
    Сообщения:
    329
    Симпатии:
    23
    Баллы:
    29
    И так и так писал. НаСервереБезКонтекста - выдает ошибку. НаСервереСКонтекстом - не выдает, но и не работает.
    Я уже утром пробовал разные варианты, все равно одно и тоже
  19. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а мой вариант не работает? мне проверить негде к сожалению...
  20. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.570
    Симпатии:
    717
    Баллы:
    204
    А в каком контексте выполняется весь код? Прикрепите ВПФ к теме.

Поделиться этой страницей