Имя: Пароль:
1C
1C 7.7
v7: как в справочнике найти запись
0 alpha78
 
11.05.19
17:33
как в справочнике найти запись
вот код - постоянно выдает что записи нет, хотя есть, что нето?
на форме внешней обработки положил текстовый реквизит С000

Процедура Сформировать()
    Сотр = СоздатьОбъект("Справочник.Сотрудники");
    Сотр.ВыбратьЭлементы();
    
    пока Сотр.ПолучитьЭлемент()=1 цикл
        
        если Сотр.НайтиПоНаименованию (СокрЛП(С000),,)=1 Тогда
        Предупреждение ("Элемент справочник Сотрудники"+С000+"Найден");  
        
    иначе Предупреждение ("Нет!!!");
        конецесли;
    
    конеццикла;

пишет предупреждение что нет и выдает такую хрень:
пока Сотр.ПолучитьЭлемент()=1 цикл
{D:\1C_LOCAL\TESTBUH\EXTFORMS\НАЙТИ СОТРУДНИКА.ERT(6)}: Не выбран элемент!

подсобите, благодарен!
1 Ёпрст
 
11.05.19
17:40
(0)

Процедура Сформировать()
    Сотр = СоздатьОбъект("Справочник.Сотрудники");
  //  Сотр.ВыбратьЭлементы();
    
   // пока Сотр.ПолучитьЭлемент()=1 цикл
        
    Если Сотр.НайтиПоНаименованию (СокрЛП(С000))=1 Тогда
        Предупреждение ("Элемент справочник Сотрудники"+С000+"Найден");  
        
    Иначе
         Предупреждение ("Нет!!!");
    КонецЕсли;
    
  //  конеццикла;
КонецПроцедуры
2 Looking
 
11.05.19
17:51
(0) см (1) цикл здесь ни к чему.
3 Кодер
 
11.05.19
17:51
http://firststeps.ru, в левом столбце выбери 1С, там много и подробно про 77.
4 Sasha_H
 
11.05.19
17:55
(1) еще хорошо бы добавить Сотр.ТекущийЭлемент() для подальшей работы с элементом .
5 mishaPH
 
модератор
11.05.19
17:57
(0) автор. ты либо цикл гоняй и а наименовании ищи искомое, либо сразу ищи по наименованию.
6 Looking
 
11.05.19
17:58
С циклом будет примерно так

Процедура Сформировать()
    Сотр = СоздатьОбъект("Справочник.Сотрудники");
    Сотр.ВыбратьЭлементы();
    пока Сотр.ПолучитьЭлемент()=1 цикл
    Если СокрЛП(Сотр.Наименование)="С000" Тогда
        Предупреждение ("Элемент справочник Сотрудники"+С000+"Найден");  
    иначе Предупреждение ("Нет!!!");
        конецесли;
    конеццикла;
7 Looking
 
11.05.19
18:00
+(6)правда так лучше будет ))), чтобы не было постоянных предупреждений "Нет"
Процедура Сформировать()
    Сотр = СоздатьОбъект("Справочник.Сотрудники");
    Сотр.ВыбратьЭлементы();
    пока Сотр.ПолучитьЭлемент()=1 цикл
    Если СокрЛП(Сотр.Наименование)="С000" Тогда
        Предупреждение ("Элемент справочник Сотрудники"+С000+"Найден");  
    конеццикла;
8 mishaPH
 
модератор
11.05.19
18:03
(6) (7) странное использование справочника сотрудника. С000 скорее всего какой-то код или реквизит.
9 Looking
 
11.05.19
18:04
+(7)А так еще лучше

Процедура Сформировать()
    ПеремСотрудникС000="";
    Сотр = СоздатьОбъект("Справочник.Сотрудники");
    Сотр.ВыбратьЭлементы();
    пока Сотр.ПолучитьЭлемент()=1 цикл
    Если СокрЛП(Сотр.Наименование)="С000" Тогда
         ПеремСотрудникС000=Сотр.ТекущийЭлемент();
         Прервать;
    конеццикла;
        Если ПустоеЗначение(ПеремСотрудникС000)=1 Тогда
        Предупреждение ("Нет!!!");  
        Иначе
        Предупреждение ("Элемент справочник Сотрудники"+С000+"Найден");  
        КонецЕсли;
10 mishaPH
 
модератор
11.05.19
18:05
(7) вообще быстрее и менее замороченное

если Сотр.НайтиПоНаименованию (СокрЛП(С000),,)=1 Тогда
        Предупреждение ("Элемент справочник Сотрудники"+С000+"Найден");  
        
иначе
Предупреждение ("Нет!!!");
конецесли;


находит просто. НО у автора скорее всего создано было C0000  а ищет он С0000

разные раскладки клавы англ и русский
11 Looking
 
11.05.19
18:05
+(9)только не Прервать, а Продолжить?
13 Looking
 
11.05.19
18:06
(10)это да, я просто пример цикла привожу, как он будет работать, а не оптимальное решение вопроса в (0)
14 alpha78
 
11.05.19
20:27
спасибо всем коллеги удачи все ок
15 alpha78
 
22.05.19
16:06
пробовал показзываеть

Пока Сотр.ПолучитьЭлемент()=1 Цикл
{C:\USERS\...\ПОИСКВСПРАВОЧНИКЕ.ERT(7)}: Не выбран элемент!
16 hhhh
 
22.05.19
16:26
(15) весь код покажи