Имя: Пароль:
1C
1C 7.7
v7: 1С77: Справочник имеет реквизит тип "Справочник" (условие проверки)
0 листопад
 
09.11.14
21:56
1С77
Подскажите, почему не срабатывает условие проверки.
Добавили справочник "Консультации", у которого есть реквизит "Сотрудник", являющийся справочником "Сотрудники". При загрузке данных из таблицы значений в справочник "Консультации", надо проверять, есть ли запись по этому сотруднику. Пишу код, но он не срабатывает:


    СпрКонс = СоздатьОбъект("Справочник.Консультации");
    Если СпрКонс.НайтиПоРеквизиту("Сотрудник", ТЗ.ФИО, 1  ) = 1 тогда
        Сообщить (ТЗДиалога.ФИО + " - уже есть запись о сотруднике!");
    КонецЕсли;
1 NS
 
09.11.14
22:02
Элемент "Сотрудник" имеет тип справочник. А "ТЗ.ФИО" 100% имеет тип строка.
Странно ты ищешь.
2 листопад
 
09.11.14
22:03
(1) Да, Вы правы. А как правильно?
3 NS
 
09.11.14
22:04
(2) Найти необходимого сотрудника в справочнике "Сотрудники",
а потом его искать в справочнике Консультации.
4 vladko
 
09.11.14
23:08
Примерно так
СпрКонс = СоздатьОбъект("Справочник.Консультации");
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
Если СпрСотр.НайтиПоНаименованию(СокрЛП(ТЗ.ФИО),,) = 1 тогда
    Если СпрКонс.НайтиПоРеквизиту("Сотрудник", СпрСотр.ТекущийЭлемент(), 1  ) = 1 тогда
        Сообщить (ТЗДиалога.ФИО + " - уже есть запись о сотруднике!");
    КонецЕсли;
Иначе
Сообщить("Сотрудник не найден в справочнике "+ТЗ.ФИО);
    КонецЕсли;
5 rbserg
 
09.11.14
23:16
А какой смысл у справочника "Консультации"?
6 листопад
 
09.11.14
23:25
(4) СПАСИБО!!! :*)

А как теперь, если Сотрудник не найден в спр.Консультации, то создавать новый элемент в спр.Консультации,т.е. я пишу:


Если СпрСотр.НайтиПоНаименованию(ТЗ.ФИО, 0, 1) = 1 тогда
        
        ТекСотр = СпрСотр.ТекущийЭлемент();
        
        Если СпрКонс.НайтиПоРеквизиту("Сотрудник", ТекСотр, 1  ) = 1 тогда
            
            Сообщить (ТЗ.ФИО + " - уже есть запись о сотруднике!");
            
        Иначе
            
            СпрКонс.Новый();
            
            СпрКонс.Сотрудник     = ТекСотр;
            СпрКонс.Наименование  = ТЗ.Наименование;
            СпрКонс.Комментарий   = ТЗ.Комментарий;
            
            СпрКонс.Записать();  
            
        КонецЕсли;


Не записывает!!!
7 lavalit
 
10.11.14
14:13
Спр "Консультаций" подчиненный?
8 lavalit
 
10.11.14
14:14
не записывает с какими ругательствами?