8.х Вопрос о пустой дате

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Ольгусик, 5 окт 2010.

  1. TopicStarter Overlay
    Ольгусик
    Offline

    Ольгусик Опытный в 1С Команда форума

    Регистрация:
    4 фев 2010
    Сообщения:
    646
    Симпатии:
    3
    Баллы:
    29
    Всем привет. Из регистра сведений "Кадровые сведения" мне нужно выбрать данные по сотрудникам. Сотрудники потом перебираются в цикле. Тех сотрудников, которые уволены перебирать не нужно. Я сделала запрос, упорядочила по дате записи, выбираю запись с самой последней датой. Но, если в этой записи поле ДатаУвольнения заполнено, то оно не нужно. Т.е. нужно, чтобы дата была пустая. Результат запроса пустой почему-то.

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

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Код:
    Запрос.Текст = 
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |	КадровыеСведения.Сотрудник,
    |	КадровыеСведения.Начисление,
    |	КадровыеСведения.Подразделение,
    |	КадровыеСведения.Увольнение.ДатаУвольнения
    |ИЗ
    |	РегистрСведений.КадровыеСведения КАК КадровыеСведения
    |ГДЕ
    |	КадровыеСведения.Сотрудник = &Сотрудник
    |	И КадровыеСведения.Увольнение.Дата = [b]NULL[/b]
    |
    |УПОРЯДОЧИТЬ ПО
    |	Период УБЫВ
    |АВТОУПОРЯДОЧИВАНИЕ";
    Запрос.УстановитьПараметр("ДатаУвол", '00010101000000');
    //Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
    
  3. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    alexburn так не заработает.
    1) Для проверки NULL существует ключевое слово "ЕСТЬ NULL" (без равно)
    2) У ТС ошибка в том, что в запрос передается тип Строка, вместо типа Дата. Использовать либо Дата(1, 1, 1, 0, 0, 0) при передаче параметра, либо сразу в запросе ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0).
    3) Вопрос к ТС: почему у вас "ВЫБРАТЬ ПЕРВЫЕ 1" - это действительно так задумано? Непонятный у вас запрос. Неужели вы в цикле собрались по одному сотруднику выбирать?
  4. TopicStarter Overlay
    Ольгусик
    Offline

    Ольгусик Опытный в 1С Команда форума

    Регистрация:
    4 фев 2010
    Сообщения:
    646
    Симпатии:
    3
    Баллы:
    29
    Сделала ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0). Все равно не работает.
    Задача у меня такая. Есть текстовый файл со строками
    Сотрудник
    СуммаЗП
    ОтработДни
    ОтработЧасы

    Нужно на основании этого файла создать документ начисление ЗП. Но там еще несколько реквезитов, которые нужно взять из регистра сведений "Кадровые сведения".Я беру первую строка,например, Иванов. Устанавливую отбор в запросе и получаю нужные сведения по этому сотруднику.

    Но у меня еще проблема в том, что могут быть несколько сотрудников с одинаковыми ФИО. Наверное лучше по таб. номеру искать
  5. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Читайте из файла всех сотрудников, записывайте их в массив, передавайте массив в запрос и получайте данные сразу по всем. По табельному будет получше наверно, если он у вас есть.

    З.Ы. Прошу прощения за невнимательность, вот эта строка "Запрос.УстановитьПараметр("ДатаУвол", '00010101000000');" в принципе должна работать, не обратил внимание на одинарные кавычки.
  6. TopicStarter Overlay
    Ольгусик
    Offline

    Ольгусик Опытный в 1С Команда форума

    Регистрация:
    4 фев 2010
    Сообщения:
    646
    Симпатии:
    3
    Баллы:
    29
    Попробую. Но почему же все-таки запрос не работает. Я сделала по вашему совету ДАТАВРЕМЯ
    Ни так, ни эдак не работает
  7. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Проверьте переменная "Сотрудник" чему равна? Также уберите проверку на дату, и посмотрите в консоли запросов, что вам выдает по этому сотруднику, есть ли записи в принципе.
  8. TopicStarter Overlay
    Ольгусик
    Offline

    Ольгусик Опытный в 1С Команда форума

    Регистрация:
    4 фев 2010
    Сообщения:
    646
    Симпатии:
    3
    Баллы:
    29
    Нет, даже, если я убираю условие Сотрудник, то все равно нет, а вот, если без условия с датой, то все нормально
  9. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    | И КадровыеСведения.Увольнение.Дата <> &ДатаУвол

    или

    | И КадровыеСведения.Увольнение.Дата <> ДАТАВРЕМЯ(1, 1, 1)
  10. TopicStarter Overlay
    Ольгусик
    Offline

    Ольгусик Опытный в 1С Команда форума

    Регистрация:
    4 фев 2010
    Сообщения:
    646
    Симпатии:
    3
    Баллы:
    29
    Так мне наоборот нужны записи, где дата увольн. пустая
  11. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    А запрос выполняется с НЕ пустыми датами?
  12. TopicStarter Overlay
    Ольгусик
    Offline

    Ольгусик Опытный в 1С Команда форума

    Регистрация:
    4 фев 2010
    Сообщения:
    646
    Симпатии:
    3
    Баллы:
    29
    Там может несколько записей быть принят, уволен, может снова принят. Нужна последняя. Но, если последняя уволен, то предпоследняя. Так как в записи, где дата увол не пустая, нет данных кадровых, которые мне нужны
  13. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    В консоле запросов убирали же проверку на дату? посмотрите когда дата увольнения не заполнена, какое значение (2 раза внизу в таблице щелкните на этой ячейке).


    З.Ы. Это у вас ЗуП?
  14. TopicStarter Overlay
    Ольгусик
    Offline

    Ольгусик Опытный в 1С Команда форума

    Регистрация:
    4 фев 2010
    Сообщения:
    646
    Симпатии:
    3
    Баллы:
    29
    ВЫБРАТЬ
    КадровыеСведения.Сотрудник,
    КадровыеСведения.Начисление,
    КадровыеСведения.Подразделение,
    КадровыеСведения.Разряд,
    КадровыеСведения.Ставка,
    КадровыеСведения.СтатьяЗатрат,
    КадровыеСведения.Табель,
    КадровыеСведения.Должность,
    КадровыеСведения.ВидСтавки,
    КадровыеСведения.Период КАК Период,
    КадровыеСведения.Табель КАК Табель1,
    КадровыеСведения.ОсновноеМестоРаботы,
    КадровыеСведения.ИсточникДоходов,
    КадровыеСведения.Увольнение.ДатаУвольнения
    ИЗ
    РегистрСведений.КадровыеСведения КАК КадровыеСведения
    ГДЕ
    КадровыеСведения.Сотрудник = &Сотрудник

    УПОРЯДОЧИТЬ ПО
    Период УБЫВ
    АВТОУПОРЯДОЧИВАНИЕ


    Этот вот, например, выполняется
    А, если я условие добавляю с датой, то нет

    NULL
  15. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Тогда как alexburn сказал:
    | И КадровыеСведения.Увольнение.Дата ЕСТЬ NULL
  16. TopicStarter Overlay
    Ольгусик
    Offline

    Ольгусик Опытный в 1С Команда форума

    Регистрация:
    4 фев 2010
    Сообщения:
    646
    Симпатии:
    3
    Баллы:
    29
    NULL. Но все равно не работает.

    ГДЕ

    КадровыеСведения.Увольнение.ДатаУвольнения Есть NULL

    Нет, работает. Все правильно

    Спасибо!!!
  17. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    И кстати, а почему вы СрезПоследних не используете на дату?
  18. alexburn
    Offline

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Да, shurikvz прав, логичнее будет использовать СрезПоследних
  19. TopicStarter Overlay
    Ольгусик
    Offline

    Ольгусик Опытный в 1С Команда форума

    Регистрация:
    4 фев 2010
    Сообщения:
    646
    Симпатии:
    3
    Баллы:
    29
    Да, я уже переделала.
Похожие темы
  1. zolberg
    Ответов:
    11
    Просмотров:
    3.287
  2. алексий
    Ответов:
    1
    Просмотров:
    583
  3. dmb2006
    Ответов:
    1
    Просмотров:
    700
Загрузка...

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