Имя: Пароль:
1C
1С v8
СКД. Отбор по сотруднику в запросе
0 Flempy
 
27.11.20
07:35
Имеется отчет в скд, где нужно выводить всех сотрудников, кроме одного. Как можно это сделать, чтобы не выбирать этого сотрудника в ручную?
1 Арбузов
 
27.11.20
07:41
Любого одного сотрудника? Или какого-то конкретного?
2 Flempy
 
27.11.20
07:45
(1) Конкретного
3 ДенисЧ
 
27.11.20
07:49
Укажи этого сотрудника в коде...
4 Арбузов
 
27.11.20
07:57
(2) Ну и укажи его в параметре запроса СКД.
5 Flempy
 
27.11.20
08:07
(4) как я его укажу в параметре, если там можно выбрать лишь ссылку на справочник с сотрудниками
6 Flempy
 
27.11.20
08:11
(3) Можно по-подробнее?
7 Lexandr
 
27.11.20
08:11
(5) Сделай вариант отчета без сотрудника и сделай настройки общие для всех. Выгрузи настройку отчета из клиентского режима и загрузи в режиме конфигуратора. При открытии отчета можешь программно добавлять отбор по сотруднику. Да тут гулять можно во все стороны. Гугл просто распирает от подобных решений.
8 kobzon2
 
27.11.20
08:11
(5) В графе выражение можно написать: Справочники.Сотрудники.НайтиПоНаименованию"Иванов Иван Иванович")
или по коду так же.
9 Flempy
 
27.11.20
08:23
(8) Почему-то ругается, мол синтаксическая ошибка
10 kobzon2
 
27.11.20
08:36
(9) Потому что я с ошибкой написал. Справочники.Сотрудники.НайтиПоНаименованию("Иванов Иван Иванович")
11 Flempy
 
27.11.20
08:42
(10) Ну скобку я то добавил и сам) Не из-за этого ошибка
12 breezee
 
27.11.20
09:31
(11) Было бы прекрасно, если бы мы могли видеть текст ошибки. Возможно, тогда мы бы и помочь смогли
13 Flempy
 
27.11.20
09:47
(12) ошибка возникала в консоли скд, добавил в конфигурации - запустилось, однако условие не выполнилось, этот сотрудник все равно вывелся
14 Homer
 
27.11.20
09:55
Справочники.СотрудникиОрганизаций.НайтиПоНаименованию("
15 breezee
 
27.11.20
09:56
(13) Херово написали
16 Flempy
 
27.11.20
14:57
В общем сделал программно через отбор следующим образом

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    УстановитьОтборСКД("ТС", ВидСравненияКомпоновкиДанных.НеРавно, Справочники.ТранспортныеСредства.НайтиПоНаименованию("B 096 EE 777 Mercedes-Benz GL 350 CDI 4MATIC"));
КонецПроцедуры

Процедура УстановитьОтборСКД(ИмяПоля, ВидОтбора, Значение)
    ПолеОтбора = Новый ПолеКомпоновкиДанных(ИмяПоля);
    ОтборыКомпановщика = КомпоновщикНастроек.Настройки.Отбор.Элементы;
    Для Каждого Стр Из ОтборыКомпановщика Цикл
        Если Стр.ЛевоеЗначение = ПолеОтбора Тогда
            Отбор = Стр;
        КонецЕсли;
    КонецЦикла;
    Если Отбор = Неопределено Тогда
        Отбор = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        Отбор.ЛевоеЗначение  = ПолеОтбора;
    КонецЕсли;
    
    Если Значение <> Неопределено Тогда
        Отбор.ВидСравнения   = ВидОтбора;
        Отбор.Использование  = Истина;
        Отбор.ПравоеЗначение  = Значение;
    Иначе
        Отбор.Использование  = Ложь;
    КонецЕсли;
    
КонецПроцедуры
17 Flempy
 
27.11.20
14:58
Однако когда я собираюсь расшифровать отчет по сотруднику, вышеуказанная процедура затирает расшифровку. Как можно избежать этого?
18 Flempy
 
27.11.20
14:59
И да, я сделал в итоге отбор по ТС, а не по сотруднику
19 Flempy
 
27.11.20
15:00
Надо сделать чтобы процедура работала только при нажатии на кнопку Сформировать
20 Chameleon1980
 
27.11.20
15:07
сделай в запросе
21 Flempy
 
27.11.20
15:11
(20) это как, если не секрет
22 Chameleon1980
 
27.11.20
19:28
самой первой сделай временную таблицу с твоей ссылкой хоть по коду хоть по наименованию
далее в твоём запросе используй эту вт как ыильтр
23 Flempy
 
30.11.20
07:48
А ведь все было так просто. Нужно было лишь добавить в самом запросе условие

ГДЕ СправочникТранспортныеСредства.Наименование <> "НаименованиеМашины"
24 ДенисЧ
 
30.11.20
07:51
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.