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

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

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

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

значение получаю так:

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

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

&НаСервере
Процедура ОповеститьПользователя(ИмяПользователяИБ) Экспорт
    _пользователь = СистемаВзаимодействия.ПолучитьИдентификаторПользователя(Пользователи.НайтиПоИмени(ИмяПользователяИБ ).ИдентификаторПользователяИБ);
    нОбсуждение = СистемаВзаимодействия.СоздатьОбсуждение();
    нОбсуждение.Заголовок = СокрЛП(Объект.Ссылка); // "Оповещение о нехватке товара на " + Формат(ТекущаяДата(), "ДЛФ=DDT");
    нОбсуждение.Ключ =  СокрЛП(Объект.Ссылка); //"Новая задача";
    нОбсуждение.Отображаемое = Истина;
    нОбсуждение.Участники.Добавить(_пользователь);
    //нОбсуждение.Групповое = Ложь;
    ////нОбсуждение.Дата
    //нОбсуждение.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    //НСтр("ru = 'Новая задача %1'"), ПолучитьНавигационнуюСсылку(ЭтотОбъект));
    //нОбсуждение.Автор = СистемаВзаимодействия.ИдентификаторТекущегоПользователя();
    нОбсуждение.Записать();
КонецПроцедуры
14 Новый1сник2
 
01.05.21
13:55
+ и некоторые реквизиты не доступны, например текст и автор
15 Новый1сник2
 
01.05.21
13:58
конфа УНФ 1.6 (1.6.24.180)
16 Новый1сник2
 
01.05.21
13:59
(11) результат действительно реквизит документа ))
17 Новый1сник2
 
01.05.21
14:25
Вот такой код пишу, задача создается но оповещение не приходит, появляется только после перезапуска сеанса1с.

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

вот полный код процедуры


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