8.х Как выбрать только одну должность

Тема в разделе "Система компоновки данных (СКД)", создана пользователем Ildar Ziganshin, 27 янв 2014.

  1. TopicStarter Overlay
    Ildar Ziganshin
    Offline

    Ildar Ziganshin Опытный в 1С

    Регистрация:
    2 окт 2013
    Сообщения:
    527
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте. Необходимо выбрать только одну жолжность.
    1. Приоритет такой 1 по основному месту работы
    2. Если нет основного то по совмест.
    3. Кто находится в архивет те не нужны

    Допусти Иванов И.И. осн дворник, сов директор, сов бухгалтер
    Должно быть только дворник

    Допустим Сидоров осн. нет по совм бухгалтер, по совм экономист.
    Должно быть бухгалтер
    Код:
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    РаботникиОрганизацийСрезПоследних.Должность КАК Должность
    ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
    ГДЕ
    РаботникиОрганизацийСрезПоследних.Сотрудник.Актуальность = ИСТИНА
    И РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
    И РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо = &Физлицо
    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1
    РаботникиОрганизацийСрезПоследних.Должность
    ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
    ГДЕ
    РаботникиОрганизацийСрезПоследних.Сотрудник.Актуальность = ИСТИНА
    И РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
    И РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо = &Физлицо
    Сейчас получается, если есть осн. и совм. две должности показывает. Как мне убрать по совм?????
    Последнее редактирование модератором: 20 фев 2014
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Еб...ть, продолжается:
    1) Выбрать Первые
    2) Выбор Когда..Тогда...Иначе...
    3) Выгрузка в ТЗ и последующая обработка

    Вам какой способ по душе ???
  3. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    398
    Баллы:
    104
    Я помолчу лучше, а просто буду наслаждаться моментом)))))
  4. TopicStarter Overlay
    Ildar Ziganshin
    Offline

    Ildar Ziganshin Опытный в 1С

    Регистрация:
    2 окт 2013
    Сообщения:
    527
    Симпатии:
    0
    Баллы:
    26
    Код:
    ВЫБРАТЬ ПЕРВЫЕ 1
    ВложенныйЗапрос.Должность
    ИЗ
    (ВЫБРАТЬ РАЗЛИЧНЫЕ
    РаботникиОрганизацийСрезПоследних.Должность КАК Должность
    ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
    ГДЕ
    РаботникиОрганизацийСрезПоследних.Сотрудник.Актуальность = ИСТИНА
    И РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
    И РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо = &Физлицо
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ РАЗЛИЧНЫЕ ПЕРВЫЕ 1
    РаботникиОрганизацийСрезПоследних.Должность
    ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
    ГДЕ
    РаботникиОрганизацийСрезПоследних.Сотрудник.Актуальность = ИСТИНА
    И РаботникиОрганизацийСрезПоследних.Сотрудник.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
    И РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо = &Физлицо) КАК ВложенныйЗапрос
    Вот так сделал вроде нормуль
  5. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Я не понимаю, что Я Вам там непоняно написал?
  6. TopicStarter Overlay
    Ildar Ziganshin
    Offline

    Ildar Ziganshin Опытный в 1С

    Регистрация:
    2 окт 2013
    Сообщения:
    527
    Симпатии:
    0
    Баллы:
    26
    Получалось что если есть осн, сов то показывало две должности. Пришлось сделать выбрать первые.
  7. nbIpKuH_BaH9I
    Online

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.988
    Симпатии:
    398
    Баллы:
    104
    Андрюх, ты не понял еще прикола походу)))))
  8. TopicStarter Overlay
    Ildar Ziganshin
    Offline

    Ildar Ziganshin Опытный в 1С

    Регистрация:
    2 окт 2013
    Сообщения:
    527
    Симпатии:
    0
    Баллы:
    26
    Вы мне помогли спасибо. Но нужно было понять как потом еще выборку седать.
  9. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Значит Вы не так условие поставили, как я Вам писал.

    Я же вам писал - берем первым запросом всех сотрудникорв по основному месту
    Вторым запросом берем всех сотрудников, кто не в ПЕРВОМ ЗАПРОСЕ..

    Как тогда при объединении могут и тот и тот быть

    Вам просто во втором запросе наду было указать

    Сотрудник НЕ В (тут указать первый запрос) и все....

    Вы видимо не поняли или не знали что в качестве условия на поле может использоваться выборка запроса
  10. TopicStarter Overlay
    Ildar Ziganshin
    Offline

    Ildar Ziganshin Опытный в 1С

    Регистрация:
    2 окт 2013
    Сообщения:
    527
    Симпатии:
    0
    Баллы:
    26
    Да это я не понял. Это как на поле запрос?
    Объясните пожалуйста. Но так то же все нормально выводит.
  11. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Если образно то вот так

    Выбрать
    ссылка
    ИЗ Справочники.Номенклатура
    Где
    Ссылка не в (Выбрать
    Номенклатура
    Из ТЧДокРеализации)

    Т.е запрос в скобках обрабатывается - получем массив и на него как раз и накладываем условие
  12. TopicStarter Overlay
    Ildar Ziganshin
    Offline

    Ildar Ziganshin Опытный в 1С

    Регистрация:
    2 окт 2013
    Сообщения:
    527
    Симпатии:
    0
    Баллы:
    26
    А как я сделал это коряво?
  13. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Если работает во всех случаях и ситуациях - когда Вам надо - то пойдет. вы же не на специалиста пишите.
    Просто Ваш данный запрос будет работать только на одного сотрудника.
    Вы же в условии не укзали - Вот мы вам и решаем задачу - получить список сотрудников с их последними должностями - а у Вас всегда только с одним сотрудником будет рабоать.
  14. TopicStarter Overlay
    Ildar Ziganshin
    Offline

    Ildar Ziganshin Опытный в 1С

    Регистрация:
    2 окт 2013
    Сообщения:
    527
    Симпатии:
    0
    Баллы:
    26
    Да у меня отбор всегда для одного будет. Первый мой отчет сложный. Я несколько отборов данных делаю в СКД. Параметр для всех один и тот же.
    Код:
    ВЫБРАТЬ
    СУММА(ТАБЛИЦА2.ОсновныеНачРезультат) КАК ОсновныеНачРезультат,
    ТАБЛИЦА2.ПериодРегистрации,
    СУММА(ТАБЛИЦА2.РезультатДопНач) КАК РезультатДопНач,
    СУММА(ТАБЛИЦА2.ОсновныеНачМассив) КАК ОсновныеНачМассив,
    СУММА(ТАБЛИЦА2.РезультатДопНачМассив) КАК РезультатДопНачМассив,
    СУММА(ТАБЛИЦА2.ОсновныеНачРезультат + ТАБЛИЦА2.РезультатДопНач - ТАБЛИЦА2.ОсновныеНачМассив - ТАБЛИЦА2.РезультатДопНачМассив) КАК ЗаработнаяПлатаИБольничные,
    ТАБЛИЦА2.СотрудникДолжность
    ИЗ
    (ВЫБРАТЬ
    ВЫБОР
    КОГДА Таблица.ОсновныеНачРезультат ЕСТЬ NULL
    ТОГДА 0
    ИНАЧЕ Таблица.ОсновныеНачРезультат
    КОНЕЦ КАК ОсновныеНачРезультат,
    Таблица.ПериодРегистрации КАК ПериодРегистрации,
    ВЫБОР
    КОГДА Таблица.РезультатДопНач ЕСТЬ NULL
    ТОГДА 0
    ИНАЧЕ Таблица.РезультатДопНач
    КОНЕЦ КАК РезультатДопНач,
    ВЫБОР
    КОГДА Таблица.ОсновныеНачМассив ЕСТЬ NULL
    ТОГДА 0
    ИНАЧЕ Таблица.ОсновныеНачМассив
    КОНЕЦ КАК ОсновныеНачМассив,
    ВЫБОР
    КОГДА Таблица.РезультатДопНачМассив ЕСТЬ NULL
    ТОГДА 0
    ИНАЧЕ Таблица.РезультатДопНачМассив
    КОНЕЦ КАК РезультатДопНачМассив,
    Таблица.СотрудникДолжность КАК СотрудникДолжность
    ИЗ
    (ВЫБРАТЬ
    ТаблицаОсновныеНач.ОсновныеНачРезультат КАК ОсновныеНачРезультат,
    ТаблицаОсновныеНач.ПериодРегистрацииОсн КАК ПериодРегистрации,
    0 КАК РезультатДопНач,
    ТаблицаОсновныеНач.ОсновныеНачМассив КАК ОсновныеНачМассив,
    0 КАК РезультатДопНачМассив,
    ТаблицаОсновныеНач.СотрудникДолжность КАК СотрудникДолжность
    ИЗ
    (ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ) КАК ПериодРегистрацииОсн,
    СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК ОсновныеНачРезультат,
    СУММА(ВЫБОР
    КОГДА ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В (&ВидыРасчета)
    ТОГДА ОсновныеНачисленияРаботниковОрганизаций.Результат
    ИНАЧЕ 0
    КОНЕЦ) КАК ОсновныеНачМассив,
    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник.Должность КАК СотрудникДолжность
    ИЗ
    РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
    ГДЕ
    ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &ПериодРегистрации1 И &ПериодРегистрации2
    И ОсновныеНачисленияРаботниковОрганизаций.Сотрудник.Физлицо = &Физлицо
    
    СГРУППИРОВАТЬ ПО
    НАЧАЛОПЕРИОДА(ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    ОсновныеНачисленияРаботниковОрганизаций.Сотрудник.Должность) КАК ТаблицаОсновныеНач
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
    0,
    ТаблицаДопНач.ПериодДопНачислений,
    ТаблицаДопНач.РезультатДопНач,
    0,
    ТаблицаДопНач.РезультатДопНачМассив,
    ТаблицаДопНач.СотрудникДолжность
    ИЗ
    (ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ) КАК ПериодДопНачислений,
    СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат) КАК РезультатДопНач,
    СУММА(ВЫБОР
    КОГДА ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета В (&ВидРасчетаДоплоНач)
    ТОГДА ДополнительныеНачисленияРаботниковОрганизаций.Результат
    ИНАЧЕ 0
    КОНЕЦ) КАК РезультатДопНачМассив,
    ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.Должность КАК СотрудникДолжность
    ИЗ
    РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
    ГДЕ
    ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &ПериодРегистрации1 И &ПериодРегистрации2
    И ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.Физлицо = &Физлицо
    
    СГРУППИРОВАТЬ ПО
    НАЧАЛОПЕРИОДА(ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации, МЕСЯЦ),
    ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.Должность) КАК ТаблицаДопНач) КАК Таблица) КАК ТАБЛИЦА2
    СГРУППИРОВАТЬ ПО
    ТАБЛИЦА2.ПериодРегистрации,
    ТАБЛИЦА2.СотрудникДолжность
    Это понятно что только для одного будет.

Поделиться этой страницей