Имя: Пароль:
1C
1С v8
Выбор работников из определенной папки
0 Константин536
 
01.03.15
11:10
Здравствуйте.
Хочу выбирать сотрудников из определенной папки, а при выборе из другой выводить предупреждение.
Есть справочник *Список сотрудников*. В нем 2 группы: *Продавцы* и *Кладовщики*.

В документе *Прием товара* есть реквизит *Сотрудник*, в котором нужно указывать фамилии сотрудников из группы *Кладовщики*, а при выборе сотрудников из группы *Продавцы*, выдавать ошибку.

Написал код:

&НаКлиенте
        Процедура СотрудникПриИзменении(Элемент)
                
    Результат = Проверить(Объект.Сотрудник);
    Если Не Результат Тогда
    Сообщить("не может быть выбран");
    КонецЕсли;
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция Проверить(Сотрудник)
    //а = 0;
    если Сотрудник.Родитель = Справочники.НайтиПоКоду("000000002") тогда Результат = истина;
    иначе Результат = ложь;
    возврат Результат
    КонецЕсли;
    КонецФункции

но выдается ошибка: *Метод объекта не обнаружен(найтипокоду)*.

Что не так? Может кто другой код подскажет?
1 XLife
 
01.03.15
11:11
Справочники.Сотрудники.НайтиПоКоду("000000002")
2 XLife
 
01.03.15
11:12
а вообще через запрос...
3 Константин536
 
01.03.15
13:32
Исправил, но теперь при выборе ЛЮБОГО сотрудника система говорит *не может быть выбран*.
Мне тут подсказали, что проблема в описании функции, она написана для Булево, а надо для Ссылки.
Вообще не понимаю теперь ничего
4 Euroset1
 
01.03.15
14:35
у тебя конец если после возврата стоит. должно быть наоборот и тогда проканает
5 Wobland
 
01.03.15
14:36
а всё поломается, когда в группе кладовщиков заведут подгруппу?
6 GROOVY
 
01.03.15
14:38
(0) Как я говорил ранее, сравнивать ссылку с булевом не корректно.
7 Euroset1
 
01.03.15
14:40
(5) Конечно. Но это уже другой вопрос. Я бы рекомендовал использовать запрос или же хотябы цикл перебора родительских групп.

Но автор всего-то спросил, почему у него функция не пашет
8 Euroset1
 
01.03.15
14:42
(6) да... и это тоже.
9 Константин536
 
01.03.15
19:55
Уважаемые.
Я понимаю, что у Вас у всех большой опыт в программировании. В отсутствии такового у меня, прошу Вас написать корректный код, используя код, написанный мной ранее..
Буду очень Вам признателен.

Уважаемый Павел, я за аналог брал Ваш код, написанный в видео, и поэтому я не знаю как преобразовать булево в ссылку....
10 ДенисЧ
 
01.03.15
21:17
хм....
Возврат на строчку ниже перенеси...
После КонецЕсли....
11 zulu_mix
 
01.03.15
21:22
жесть какая то....

&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
    Если Не Проверить(Объект.Сотрудник) Тогда
    Сообщить("не может быть выбран");
    КонецЕсли;
КонецПроцедуры

&НаСервереБезКонтекста
Функция Проверить(Сотрудник)
    Возврат Сотрудник.Родитель.Код = "000000002";
КонецФункции
12 Константин536
 
02.03.15
15:40
(11)  Респект!
Все получилось! Буду теперь размышлять почему именно так надо было писать!!!!
Благодарю!
Спасибо еще раз.
13 MSOliver
 
02.03.15
15:45
Помогли так помогли, по-мистовски что сказать :)
14 Константин536
 
02.03.15
18:12
(11)  А я сделал теперь немного по-другому и тоже работает.!!
Использовал  &НАСЕРВЕРЕ!

&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
        Если не Проверить(Объект.Сотрудник) тогда
        Сообщить ("Не может быть выбран");
        КонецЕсли;
        КонецПроцедуры
    
    &НаСервере
    Функция Проверить(Родитель)
Возврат Объект.Сотрудник.Родитель.Наименование = "Продавцы";
        КонецФункции;
15 ktvladimir
 
02.03.15
18:45
ужас... а если в папке кладовщики заведут подпапку? опять будешь кодом править?

почему нельзя запросом
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ 1
|ИЗ Справочник.Сотрудник
|ГДЕ
|  Ссылка В ИЕРАРХИИ (&Родитель)";
Запрос.УстановитьПараметр("Родитель", Справочник)

Возврат НЕ Запрос.Выполнить().Пустой()

папку лучше вытащить в константы (иное место где хранить фиксированные значения элементов), так как у тебя может оказаться другая папка с таким наименованием но в другой иерархии, а также кому то не понравится такое название и он переименует
16 ktvladimir
 
02.03.15
18:48
p/s/ Найти по коду может не работать если для кода отключили полнотекстовый поиск
17 zulu_mix
 
02.03.15
19:03
(15) больше строк + на скорость при единичной выборке не влияет