Имя: Пароль:
1C
 
Автоматическое заполнение регистра сведений
0 Marry04
 
04.07.16
06:21
Внешняя обработка автоматического заполнения регистра сведений. почему-то обработчик игнорирует запрос и даже в него не заходит. в чем дело?
Процедура Кнопка1Нажатие(Элемент)
    Запрос = Новый Запрос (
    "
    | ВЫБРАТЬ                                        
    |   Пользователи.Ссылка
    |ИЗ
    |   Справочник.Пользователи КАК Пользователи
    |ГДЕ
    |    Пользователи.ПрофильПолномочийПользователя = &ПрофильПолномочийПользователя
    |"
    );
    СтрокаНаименования =  "мастер смены";
    СсылкаНаПользвателяСоответствПрофиля = Справочники.Пользователи.НайтиПоРеквизиту("ПрофильПолномочийПользователя", СтрокаНаименования);
    Запрос.УстановитьПараметр("ПрофильПолномочийПользователя", СсылкаНаПользвателяСоответствПрофиля);    
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить("  " + ВыборкаДетальныеЗаписи.Ссылка);
        НоваяЗапись=РегистрыСведений.ЗапретПроведения.СоздатьМенеджерЗаписи();
        НоваяЗапись.Пользователь = ВыборкаДетальныеЗаписи.Ссылка;
        НоваяЗапись.Записать(Истина);    
    КонецЦикла;

КонецПроцедуры
1 Dmitry1c
 
04.07.16
06:25
(0) открой для себя отладчик
2 Marry04
 
04.07.16
06:29
(1) при помощи его и были сделаны такие выводы!
3 Dmitry1c
 
04.07.16
06:33
(2) в отладчике можно больше посмотреть, а не только как указатель шагает из строки в строку
4 Marry04
 
04.07.16
06:37
(3) в результате запроса имеется коллекция значений,но вот это не нравится ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();пишет {(1)}: Значение не является значением объектного типа (Ссылка)
5 catena
 
04.07.16
06:44
(4)А какой смысл этого запроса после строки:

    СсылкаНаПользвателяСоответствПрофиля = Справочники.Пользователи.НайтиПоРеквизиту("ПрофильПолномочийПользователя", СтрокаНаименования);

???
6 Marry04
 
04.07.16
06:44
(5) Процедура Кнопка1Нажатие(Элемент)
    Запрос = Новый Запрос (
    "
    | ВЫБРАТЬ                                        
    |   Пользователи.Ссылка
    |ИЗ
    |   Справочник.Пользователи КАК Пользователи
    |ГДЕ
    |   ПрофильПолномочийПользователя = ""мастер смены""
    |"
    );
    //СтрокаНаименования =  "мастер смены";
    //СсылкаНаПользвателяСоответствПрофиля = Справочники.Пользователи.НайтиПоРеквизиту("ПрофильПолномочийПользователя", СтрокаНаименования);
    //Запрос.УстановитьПараметр("ПрофильПолномочийПользователя", СсылкаНаПользвателяСоответствПрофиля);    
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить("  " + ВыборкаДетальныеЗаписи.Ссылка);
        НоваяЗапись=РегистрыСведений.ЗапретПроведения.СоздатьМенеджерЗаписи();
        НоваяЗапись.Пользователь = ВыборкаДетальныеЗаписи.Ссылка;
        НоваяЗапись.Записать(Истина);    
    КонецЦикла;

КонецПроцедуры


переделала,да
7 Marry04
 
04.07.16
06:45
но все равно ошибка (4)
8 catena
 
04.07.16
06:46
(7)Что такое ПрофильПолномочийПользователя? Расскажи мне про него все, что знаешь.
9 Marry04
 
04.07.16
06:55
Есть справочник "Пользователи" у которого имеется реквизит "Профиль", в конфигураторе он называется "ПрофильПолномочийПользователя". мне нужно выбрать из справочника всех пользователей с профилем - мастер смены.
10 catena
 
04.07.16
06:56
(9)Ты с ним плохо знакома, а уже пытаешься запросы с ним вытворять, приличные девушки так не поступают.

Сперва надо хотя бы спросить у него тип.
11 Marry04
 
04.07.16
06:58
(10) тип данного реквизита  - СправочникСсылка.ПрофилиПолномочийПользователей
12 Mankubus
 
04.07.16
07:15
(0)
   Запрос.УстановитьПараметр("ПрофильПолномочийПользователя", Справочники.ПрофилиПолномочийПользователей.НайтиПоНаименованию("мастер смены"));
13 Marry04
 
04.07.16
07:20
(12) спасибо. я это и прописала.сама разобралась..с соответствием типов данных проблемы явные))
2 + 2 = 3.9999999999999999999999999999999...