Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

результат запроса возвращает пустое значение

результат запроса возвращает пустое значение
Я
   Новый1сник2
 
01.05.21 - 13:09
подскажите где ошибка в запросе? в консоли возвращает пользователя, а в конфигураторе при отладке результат возвращает пустое значение.

Функция ПолучитьПользователя(Ответственный)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    СотрудникиПользователя.Пользователь.Ссылка КАК Пользователь
    |ИЗ
    |    РегистрСведений.СотрудникиПользователя КАК СотрудникиПользователя
    |ГДЕ
    |    СотрудникиПользователя.Сотрудник = &Сотрудник";
    
    Запрос.УстановитьПараметр("Сотрудник", Ответственный);
    
    Результат = Запрос.Выполнить();
    Если НЕ ПустаяСтрока(Результат) Тогда
        Значение = Результат.Выгрузить()[0].Пользователь;
    Иначе
        Значение = "";
    КонецЕсли;
    
    Возврат Значение;
КонецФункции
   ДенисЧ
 
1 - 01.05.21 - 13:10
" Результат = Запрос.Выполнить();
    Если НЕ ПустаяСтрока(Результат) Тогда"

Как жаль, что гильотину отменили... А то в самый раз бы...
   Новый1сник2
 
2 - 01.05.21 - 13:11
(1) если проверяю на Результат.Пустой() пишет ошибку
   ДенисЧ
 
3 - 01.05.21 - 13:12
(2) Ошибку где? В ДНК?
   Новый1сник2
 
4 - 01.05.21 - 13:15
(3) в режиме предприятия, что то про несоответствии типов
   Новый1сник2
 
5 - 01.05.21 - 13:16
(3) где может быть ошибка в запросе ? в регистре только два измерения, сотрудник и пользователь
   ДенисЧ
 
6 - 01.05.21 - 13:17
(4) Извини, но по праздникам я не подаю и не угадывают "что-то" в сообщения об ошибках.
   Новый1сник2
 
7 - 01.05.21 - 13:21
вот такая ошибка:

Значение не является значением объектного типа (Пустой)
{Документ.ЗадачаСотрудника.Форма.ФормаДокумента.Форма(349)}:    Записать();

значение получаю так:
Значение = ?(Результат.Пустой() , "", Результат.Выгрузить()[0].Пользователь);
   Новый1сник2
 
8 - 01.05.21 - 13:25
есть еще варианты, почему запрос пустое значение дает ?
   ДенисЧ
 
9 - 01.05.21 - 13:30
А если так
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() тогда
  Значение = "";
Иначе
  выборка = результатЗапроса.Выбрать(); выборка.Следующий();
  Значение = выборка.Пользователь;
КонецЕсли;

?
   Новый1сник2
 
10 - 01.05.21 - 13:41
(9) перенес функцию в модуль Формы документа, все заработало, х.з почему
   NcSteel
 
11 - 01.05.21 - 13:47
Ибо "результат" видимо реквизит или глобальная переменная модуля.
   Новый1сник2
 
12 - 01.05.21 - 13:50
(11) возможно
   Новый1сник2
 
13 - 01.05.21 - 13:54
можете еще подсказать по системе взаимодействия, нужно оповестить пользователя о новой задаче. пишет ошибку Ошибка протокола системы взаимодействия
код такой

&НаСервере
Процедура ОповеститьПользователя(ИмяПользователяИБ) Экспорт
    _пользователь = СистемаВзаимодействия.ПолучитьИдентификаторПользователя(Пользователи.НайтиПоИмени(ИмяПользователяИБ ).ИдентификаторПользователяИБ);
    нОбсуждение = СистемаВзаимодействия.СоздатьОбсуждение();
    нОбсуждение.Заголовок = СокрЛП(Объект.Ссылка);// "Оповещение о нехватке товара на " + Формат(ТекущаяДата(), "ДЛФ=DDT");

    нОбсуждение.Ключ =  СокрЛП(Объект.Ссылка);//"Новая задача";

    нОбсуждение.Отображаемое = Истина;
    нОбсуждение.Участники.Добавить(_пользователь);
    //нОбсуждение.Групповое = Ложь;

    ////нОбсуждение.Дата 

    //нОбсуждение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

    //НСтр("ru = 'Новая задача %1'"), ПолучитьНавигационнуюСсылку(ЭтотОбъект));

    //нОбсуждение.Автор = СистемаВзаимодействия.ИдентификаторТекущегоПользователя();

    нОбсуждение.Записать();
КонецПроцедуры
   Новый1сник2
 
14 - 01.05.21 - 13:55
+ и некоторые реквизиты не доступны, например текст и автор
   Новый1сник2
 
15 - 01.05.21 - 13:58
конфа УНФ 1.6 (1.6.24.180)
   Новый1сник2
 
16 - 01.05.21 - 13:59
(11) результат действительно реквизит документа ))
   Новый1сник2
 
17 - 01.05.21 - 14:25
Вот такой код пишу, задача создается но оповещение не приходит, появляется только после перезапуска сеанса1с.

&НаСервере
Процедура ОповеститьПользователя(ИмяПользователяИБ) Экспорт
    
    _пользователь = СистемаВзаимодействия.ПолучитьИдентификаторПользователя(Пользователи.НайтиПоИмени(ИмяПользователяИБ ).ИдентификаторПользователяИБ);
    мОбсуждение = СистемаВзаимодействия.СоздатьОбсуждение();
    мОбсуждение.Отображаемое = Истина;
    мОбсуждение.Заголовок = Объект.Описание;
    мОбсуждение.Участники.Добавить(СистемаВзаимодействия.ИдентификаторТекущегоПользователя());
    мОбсуждение.Участники.Добавить(_пользователь);
    УстановитьПривилегированныйРежим(Истина);
    мОбсуждение.Записать();
    
КонецПроцедуры
   Новый1сник2
 
18 - 01.05.21 - 14:27
как сделать чтобы приходило оповещение не перезапуская сеанс ? и как можно передать ссылку на саму задачу, чтобы из сообщения можно было перейти в задачу
   Новый1сник2
 
19 - 01.05.21 - 14:27
некоторые реквизиты не совпадают видимо разные версии БСП
   Новый1сник2
 
20 - 01.05.21 - 15:08
вроде разобрался, спасибо за подсказки. есть еще вопрос как передать ссылку на задачу ?
код такой:
    СообщениеСВ = СистемаВзаимодействия.СоздатьСообщение(мОбсуждение.Идентификатор);
    СообщениеСВ.Автор = СистемаВзаимодействия.ИдентификаторТекущегоПользователя();
    СообщениеСВ.Получатели.Добавить(_пользователь);
//    СообщениеСВ.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Новая задача %1'"), ПолучитьНавигационнуюСсылку(Объект.Ссылка));

    СообщениеСВ.Текст = СокрЛП(Объект);
    СообщениеСВ.Записать();
   Новый1сник2
 
21 - 01.05.21 - 15:53
еще почему то на идентификатор ошибку пишет:
СистемаВзаимодействия.СоздатьСообщение(Обсуждение.Идентификатор)    {(1)}: Значение не является значением объектного типа (Идентификатор)    
вот полный код процедуры


&НаСервере
Процедура ОповеститьПользователя(ИмяПользователяИБ) Экспорт
    
    _пользователь = СистемаВзаимодействия.ПолучитьИдентификаторПользователя(Пользователи.НайтиПоИмени(ИмяПользователяИБ ).ИдентификаторПользователяИБ);
    
    Отбор = Новый ОтборОбсужденийСистемыВзаимодействия;
    Отбор.Отображаемое = Истина; 
    Отбор.Ключ = СокрЛП(Объект.Ссылка);
    МОбсуждение = СистемаВзаимодействия.ПолучитьОбсуждения(Отбор);
    
    Если МОбсуждение.Количество() = 0 Тогда
        Обсуждение = СистемаВзаимодействия.СоздатьОбсуждение();
        Обсуждение.Отображаемое = Истина;
        Обсуждение.Ключ = СокрЛП(Объект.Ссылка);
        Обсуждение.Заголовок = Объект.Описание;
        Обсуждение.Участники.Добавить(СистемаВзаимодействия.ИдентификаторТекущегоПользователя());
        Обсуждение.Участники.Добавить(_пользователь);
        УстановитьПривилегированныйРежим(Истина);
        Обсуждение.Записать();
        
    Иначе 
        Обсуждение = МОбсуждение[0];
    КонецЕсли;
    
    СообщениеСВ = СистемаВзаимодействия.СоздатьСообщение(Обсуждение.Идентификатор);
    СообщениеСВ.Автор = СистемаВзаимодействия.ИдентификаторТекущегоПользователя();
    СообщениеСВ.Получатели.Добавить(_пользователь);
    //    СообщениеСВ.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Новая задача %1'"), ПолучитьНавигационнуюСсылку(Объект.Ссылка));

    СообщениеСВ.Текст = СокрЛП(Объект.ОснованиеПредставление);
    СообщениеСВ.Записать();    
    
КонецПроцедуры
   Новый1сник2
 
22 - 01.05.21 - 15:54
подскажите что не так делаю, как получить этот идентификатор и навигационную ссылку на задачу?
   Новый1сник2
 
23 - 01.05.21 - 16:01
с идентификатором разобрался, как получить ссылку на задачу?
   Новый1сник2
 
24 - 02.05.21 - 08:42
с ссылкой на задачу тоже разобрался


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.