8.х Пишу запрос

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

  1. TopicStarter Overlay
    Franc333_2008
    Offline

    Franc333_2008 Опытный в 1С

    Регистрация:
    12 ноя 2009
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Восьмерка - Конфигурация Астор ТД 6.0


    Суть задачи - Хочу выбрать все элементы из справочника номенклатура у которых
    СтавкаНДС = Без НДС.

    Посмотрел структуру справочника Номенклатура в нем реквизита Ставка НДС нет
    а есть в другом справочнике СтавкиНДС ( реквизит Ставка которого указан в поле ввода на форме справочника Номенклатура).

    Следовательно мне нужно делать запрос по 2м справочникам .

    Написал при помощи конструктора запросов следующее :

    ВЫБРАТЬ
    спрНоменклатура.Наименование,
    спрНоменклатура.ВидТовара,
    спрНоменклатура.ТипТовара,
    спрНоменклатура.Артикул
    ИЗ
    Справочник.Номенклатура КАК спрНоменклатура
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    СтавкиНДС.Ссылка КАК Ссылка,
    СтавкиНДС.Номенклатура КАК Номенклатура,
    СтавкиНДС.Ставка КАК Ставка
    ИЗ
    Справочник.СтавкиНДС КАК СтавкиНДС) КАК ВложенныйЗапрос
    ПО спрНоменклатура.Ссылка = ВложенныйЗапрос.Ссылка
    ГДЕ
    ВложенныйЗапрос.Ставка = &Ставка

    Результат - ничего не вывел !!!!!!!!!!!!!!!!!!

    Подскажите пожалуйста в чём я косячу и как сделать правильно ?


    Проверил предложенные варианты

    1) вариант всё просто , а то что я делал это ересь - не прошел - ничего не просто , ведь не хранятся у меня данные в справочнике номенклатура.
    2) вариант сделать левое соединение
    Попробовал и возникли вопросы :

    1)Почему связывате 2 этих поля ? там не будет равенства СтавкиНДС.Номенклатура это не название номенклатуры !!! ???????????????
    ПО спрНоменклатура.Ссылка = СтавкиНДС.Номенклатура

    2) Когда выполнил этот запрос , то

    вывел строку справочника номенклатура в наименовании которого была цифра 18

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Справочник не является подчиненным. Реквизита СтавкаНДС в спрНоменклатура НЕТ !!!
    у элемента на форме тип значения такой СправочникСсылка.СтавкиНДС
    а у свойства данные написано СтавкаНДСИзРегистра

    //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//



    спрноменклатура - поле ставка ндс на форме элемента ссылается - спр ставкиНДС - реквизит ставка.
    Открыл в режиме предприятия справочник СтавкиНДС

    Ставка Номенклатура для суммового учета

    18% Товар НДС 18%

    10% Товар НДС 10%

    БезНДС Товар БезНДС

    Когда я выполняю запрос то в результате получаю строчку из этого справочника , а не из справочника номенклатура.

    Выводится значение из колонки Номенклатура для суммового учета. ( а не из колнки наименование номенклатуры справочника номенклатура) .


    т.е запрос выводжит одинкаовые в 2х справочниках элементы справочников (т.е.е и там и там есть элемент Товар БезНДС) а мне ведь нужно чтобы выводил все элементы спрНоменклатура со ставкой БезНДС

    /////////////////////////////////////////////////////////////////////////////
    Всем спасибо - всё работает !
  2. wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    зачем тут вложенный запрос?
    надо просто делать левое соединение по полю ссылки номенклатуры
  3. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    Код:
    ВЫБРАТЬ
    спрНоменклатура.Наименование,
    спрНоменклатура.ВидТовара,
    спрНоменклатура.ТипТовара
    ИЗ
    Справочник.Номенклатура КАК спрНоменклатура
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтавкиНДС КАК СтавкиНДС
    ПО спрНоменклатура.Ссылка = СтавкиНДС.Номенклатура
    ГДЕ
    СтавкиНДС.Ставка = &Ставка
    
    
    так попробуй
  4. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Все просто, я использую только реквизит в примере запроса не "СтавкаНДС", т.к. это у меня перечисление, а реквизит "БазоваяЕдиницаИзмерения", являющейся ссылкой справочника.
    Код:
    Функция ПолучитьРезультатЗапроса_ИдентификаторCPro()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |	Номенклатура.Ссылка,
    |	Номенклатура.БазоваяЕдиницаИзмерения
    |ИЗ
    |	Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |	Номенклатура.БазоваяЕдиницаИзмерения = &БазоваяЕдиницаИзмерения";
    //Параметры запроса
    Запрос.УстановитьПараметр("БазоваяЕдиницаИзмерения", Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт"));// Справочник ссылка: Классификатор единиц измерения
    Результат = Запрос.Выполнить();
    
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
    //<Код>
    КонецЦикла;
    
    Возврат Результат;
    
    КонецФункции //ПолучитьРезультатЗапроса_ИдентификаторCPro
    
    т.е. не надо не каких внутренних или вложнных запросов, это ересь, просто ссылку отдайте
    Код:
    Запрос.УстановитьПараметр("БазоваяЕдиницаИзмерения", Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт"));
    
    и будет Вам счастье.
    Удачи!
  5. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    не согласен.. ведь как показоно выше ставка не хранится как ссылка в номенклатуре.

    поэтому ему надо делать левое соединение..

    Проверь.. &;Ставка - твое а должно быть &Ставка
    у устанавливай параметр Ставка - что это у тя?
  6. gosn1ck
    Offline

    gosn1ck Опытный в 1С

    Регистрация:
    13 авг 2009
    Сообщения:
    1.329
    Симпатии:
    1
    Баллы:
    26
    не знаю, что за хрень, нажимаю исправить сообщение, а там нету точки с запятой после амперсанта
  7. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    1.
    Где это показано, если в документе нету ставки НДС тогда выбирается ссылка "БезНДС", если просто не поставили НДС, а Вам нужно с ним работать, то ставится Справочники.СтавкиНДС.ПусаяСсылка()
    2.
    Запомните раз и навсегда, это глюк такой на форуме, и существует он столько сколько я нахожусь на этом форуме.
    3.
    Определитесь что тут написано
    Это ссылка, в противном случае в базе организована связь многие - ко многим что не допустимо и является ошибкой, и говорит о том что база не нормализована.
    4. Вариант номер два, справочник СтавкаНДС является подчиненным справочником, это в корне меняет дело.
  8. TopicStarter Overlay
    Franc333_2008
    Offline

    Franc333_2008 Опытный в 1С

    Регистрация:
    12 ноя 2009
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Попробовал и возникли влпросы :

    1)Почему связывате 2 этих поля ? там не будет равенства СтавкиНДС.Номенклатура это не название номенклатуры !!! ???????????????
    ПО спрНоменклатура.Ссылка = СтавкиНДС.Номенклатура

    2) Когда выполнил этот запрос , то
    а) при подстановке значения в параиметр он мне позволил ввести только цифру (я ввел 18)
    а нужно ведь лишь варианты из справочника Без ндс , 18%, 10% почему не дает их выбирать ?
    б) вывел строку справочника номенклатура в наименовании которого была цифра 18
  9. TopicStarter Overlay
    Franc333_2008
    Offline

    Franc333_2008 Опытный в 1С

    Регистрация:
    12 ноя 2009
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Как посмотреть является ли справочник СтавкиНДС подчиненным ? посмотрел его свойства вроде подчиненный не нашел ?
  10. dponomarchuk
    Offline

    dponomarchuk Новичок в 1С

    Регистрация:
    11 окт 2009
    Сообщения:
    47
    Симпатии:
    1
    Баллы:
    4
    Автору: посмотри свойства элемента поле ввода, в котором выбирается ставка ндс. Конкретно свойство "Данные". Реквизит должен относится к Элементу справочника, а не к форме. Так ?
    Я полагаю должен быть один верный вариант - ставка НДС это обычный не подчиненный справочник! Может название реквизита "замаскированное" ?
    Или кто то может предложить более правильный вариант хранения информации в справочнике ? :unsure:
  11. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.552
    Симпатии:
    716
    Баллы:
    204
    Свойства справочника в конфигураторе - ВЛАДЕЛЬЦЫ.

    В типовых СтавкиНДС всю жизнь было ПЕРЕЧИСЛЕНИЕ. В самописных - все возможно :)
  12. dponomarchuk
    Offline

    dponomarchuk Новичок в 1С

    Регистрация:
    11 окт 2009
    Сообщения:
    47
    Симпатии:
    1
    Баллы:
    4
    Не типовые, но авторизированные фирмой 1С я б не назвал самописными. Хотя возможно меня просто смущает это слово ) :unsure:
  13. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Я Вам все описал, что и как сделать, делайте.
  14. TopicStarter Overlay
    Franc333_2008
    Offline

    Franc333_2008 Опытный в 1С

    Регистрация:
    12 ноя 2009
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Да не подчиненный справочник .
    не уверен что что-то маскировали - про я навернео плохо разбираюсь.

    Это свойство не заполнено !
  15. dponomarchuk
    Offline

    dponomarchuk Новичок в 1С

    Регистрация:
    11 окт 2009
    Сообщения:
    47
    Симпатии:
    1
    Баллы:
    4
    Если это свойство не заполнено, то или все слишком не просто... Или куда более вероятно потерялся реквизит СтавкаНДС, который:
    1. должен быть в реквизитах справочника "номенклатура" - тип значения справочник СтавкиНДС;
    2. стоять в этом свойстве.

    Попробуйте в режиме Предприятие зайти в несколько позиций номенклатуры. Интересует заполняется, сохраняется ли это значение вообще ?
  16. TopicStarter Overlay
    Franc333_2008
    Offline

    Franc333_2008 Опытный в 1С

    Регистрация:
    12 ноя 2009
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Да заполняется и сохраняется.

    спрноменклатура - поле ставка ндс на форме элемента ссылается - спр ставкиНДС - реквизит ставка.
    Открыл в режиме предприятия справочник СтавкиНДС

    Ставка Номенклатура для суммового учета

    18% Товар НДС 18%

    10% Товар НДС 10%

    БезНДС Товар БезНДС

    Когда я выполняю запрос то в результате получаю строчку из этого справочника , а не из справочника номенклатура.

    Выводится значение из колонки Номенклатура для суммового учета. ( а не из колнки наименование номенклатуры справочника номенклатура) .
  17. dponomarchuk
    Offline

    dponomarchuk Новичок в 1С

    Регистрация:
    11 окт 2009
    Сообщения:
    47
    Симпатии:
    1
    Баллы:
    4
    Текст запроса давай.
  18. TopicStarter Overlay
    Franc333_2008
    Offline

    Franc333_2008 Опытный в 1С

    Регистрация:
    12 ноя 2009
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    ВЫБРАТЬ
    спрНоменклатура.Наименование,
    спрНоменклатура.ВидТовара,
    спрНоменклатура.ТипТовара
    ИЗ
    Справочник.Номенклатура КАК спрНоменклатура
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтавкиНДС КАК СтавкиНДС
    ПО спрНоменклатура.Ссылка = СтавкиНДС.Ссылка
    ГДЕ
    СтавкиНДС.Ставка = &Ставка
  19. dponomarchuk
    Offline

    dponomarchuk Новичок в 1С

    Регистрация:
    11 окт 2009
    Сообщения:
    47
    Симпатии:
    1
    Баллы:
    4
    И все таки в справочнике номенклатура есть реквизит СтавкаНДС ?
  20. TopicStarter Overlay
    Franc333_2008
    Offline

    Franc333_2008 Опытный в 1С

    Регистрация:
    12 ноя 2009
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    [ :unsure: Совершенно точно такого реквизита там нет !

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