8.х Работа с запросами

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

  1. TopicStarter Overlay
    planfin
    Offline

    planfin

    Регистрация:
    17 май 2010
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    1С: Предприятие 8.1, нетиповое решение.

    Помогите, пожалуйста, с простым запросом. Не пойму, что я делаю не так.
    Есть справочник "Подразделения", со следующей структурой:
    код - 3-х значное число
    наименование - название подразделения (длина 150 символов)
    реквизиты: ЮридическийСтатус, тип: ПеречислениеСсылка.ЮридическийСтатус

    Необходимо выбрать из справочника Подразделения все юридические лица. Юридические лица описаны в Перечислениях следующим образом: "Юридическое лицо", "Обособленное лицо".

    Запрос такой:
    Код:
    ВЫБРАТЬ
    Подразделения.Наименование,
    Подразделения.ЮридическийСтатус
    ИЗ
    Справочник.Подразделения КАК Подразделения
    ГДЕ
    Подразделения.ЮридическийСтатус = "Юридическое лицо"
    
    Не работает. Никак не пойму почему?
  2. Alive
    Offline

    Alive Опытный в 1С

    Регистрация:
    15 янв 2010
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    26
    Мне кажется не работает, потому что ты в условии сравнивает разные типы, у тебя Подразделения.ЮридическийСтатус имеет тип Перечисление, а ты ему присваиваешь строкой значение. Попробуй в условии напиши не Подразделения.ЮридическийСтатус, а Подразделения.ЮридическийСтатус.Наименование если есть такое, ну или сделать через параметр.
  3. StarLight
    Offline

    StarLight Опытный в 1С

    Регистрация:
    28 июл 2009
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    надо написать Подразделения.ЮридическийСтатус = ЗНАЧЕНИЕ(Перечисление.<НазваниеПеречисления>.ЮридическоеЛицо)
  4. TopicStarter Overlay
    planfin
    Offline

    planfin

    Регистрация:
    17 май 2010
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Нет, так тоже не работает. При формировании запроса я пользуюсь КОНСТРУКТОРОМ ЗАПРОСОМ и в нем сразу отрезаются все не логичные запросы. Вот это меня и вводит в тупик. Запрос составляется констуктором, а не мной.
  5. Alive
    Offline

    Alive Опытный в 1С

    Регистрация:
    15 янв 2010
    Сообщения:
    141
    Симпатии:
    0
    Баллы:
    26
    но условие же ты сам прописываешь, сделай через параметр, должно заработать. Подразделения.ЮридическийСтатус = &ЮридическийСтатус

    После запроса
    Запрос.УстановитьПараметр("ЮридическийСтатус ".Перечисления.<>.ЮридическийСтатус )
  6. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    StarLight правильно написал(а?) (картинку плоха видно :angry: ). Должно работать. Если конструктор запроса выдает ошибку, значит неправильно указываете наименование перечисления.
  7. StarLight
    Offline

    StarLight Опытный в 1С

    Регистрация:
    28 июл 2009
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    Это прописывается ручками в условии! Заходишь на вкладку условия, добавляешь новое условие - ставишь галку, нажимаешь на 3 точечки и пишешь условие запроса. Хоть какая кофигурация у тебя?
  8. TopicStarter Overlay
    planfin
    Offline

    planfin

    Регистрация:
    17 май 2010
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Код:
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Год", Год);
    Запрос.УстановитьПараметр("ЮрСтат", Перечисления.ЮридическийСтатус.ЮридическоеЛицо);
    
    Запрос.Текст = "ВЫБРАТЬ
    |	Подразделения.Наименование,
    |	Подразделения.ЮридическийСтатус
    |ИЗ
    |	Справочник.Подразделения КАК Подразделения
    |ГДЕ
    |	Подразделения.ЮридическийСтатус = &ЮрСтат";
    
    
    
    Перечисления у меня называются ЮридическийСтатус
  9. StarLight
    Offline

    StarLight Опытный в 1С

    Регистрация:
    28 июл 2009
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    Год-то тебе на кой??? простите, сорвалось...

    Код:
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ЮрСтат", Перечисления.ЮридическийСтатус.ЮридическоеЛицо);
    
    Запрос.Текст = "ВЫБРАТЬ
    |	Подразделения.Наименование,
    |	Подразделения.ЮридическийСтатус
    |ИЗ
    |	Справочник.Подразделения КАК Подразделения
    |ГДЕ
    |	Подразделения.ЮридическийСтатус = ЗНАЧЕНИЕ(Перечисление.ЮридическийСтатус.ЮридическоеЛицо)";
    
    
    Что тебе мешает так написать? У тебя же перечисление всегда одинаковое, а в параметры пихать его иррационально
  10. TopicStarter Overlay
    planfin
    Offline

    planfin

    Регистрация:
    17 май 2010
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Дело в том, что это только часть программы, в которой у меня несколько запросов. Я не могу так записать, так как статус у меня меняется из формы. В форме я могу задать любой из четырех статусов.
  11. StarLight
    Offline

    StarLight Опытный в 1С

    Регистрация:
    28 июл 2009
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    Тогда в параметр, так так и надо с самого начала писать, а то, что у вас было приведено в самом первом запросе, показывает обратное, ничего у вас не задается с формы)
  12. TopicStarter Overlay
    planfin
    Offline

    planfin

    Регистрация:
    17 май 2010
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Ничего не получается. Может дело в пробелах в имени?
  13. StarLight
    Offline

    StarLight Опытный в 1С

    Регистрация:
    28 июл 2009
    Сообщения:
    212
    Симпатии:
    0
    Баллы:
    26
    А вышли мне cf-ник базы, скажи в каком документе этот "чудо"-запрос и я посмотрю и скажу где ошибка
  14. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Вот, выложил базу. Там справочник, перечисление (как вы описали) и отчет, который выводит подразделения с отбором по статусу. Вроде все просто :)...

    Вложения:

  15. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    [OFF]упс[/OFF]
  16. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54

    Вложения:

  17. TopicStarter Overlay
    planfin
    Offline

    planfin

    Регистрация:
    17 май 2010
    Сообщения:
    48
    Симпатии:
    0
    Баллы:
    1
    Большое, пребольшое спасибо. Все прошло!
    Надо было всего вместо:

    Подразделения.Наименование, указать Подразделения.Ссылка

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