7.7 Запрос начального уровня

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем zamik15rus, 27 май 2013.

  1. TopicStarter Overlay
    zamik15rus
    Offline

    zamik15rus

    Регистрация:
    14 май 2013
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток, дорогие форумчане,
    Начал писать на 1С совсем недавно и столкнулся со следующей траблой. Пишу запрос и в части условии у меня что-то не получается. Т.е. условие ни при каких обстоятельствах не хочет выполняться, понимаю что накосячил в синтаксисе запроса, но не могу понять где, подскажите пожалуйста.Собственно сам запрос:

    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Клиент = Справочник.Контрагенты.ТекущийЭлемент;
    |СуммаКредита = Справочник.Контрагенты.код;
    |Функция СуммаКредитаСумма = Сумма(СуммаКредита);
    |Группировка Клиент без групп;
    |Условие(Клиент.Наименование = 'ООО Трубадур');
    |";

    И еще отличается ли выбор одной записи и выбор группы? Или просто указать Наименование группы?
  2. rshakiro
    Offline

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

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    оформляйте код в тэги!! нужно примерно так:

    Код:
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Клиент = Справочник.Контрагенты.ТекущийЭлемент;
    |СуммаКредита = Справочник.Контрагенты.код;
    |Функция СуммаКредитаСумма = Сумма(СуммаКредита);
    |Группировка Клиент без групп;
    |Условие(СуммаКредита = ""123456789"");
    |";
  3. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Строковые константы в 1С оформляются в двойных кавычках.

    Так как текст запроса это тоже строка, то для выделения строки нужно использовать двойные кавычки (в предыдущем посте этот момент есть).

    В самом запросе при выборе из справочника, нет разницы между группой и элементом. Отличить можно через метод "ЭтоГруппа()".
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    +не забывайте о свойствах 1с... Строковый реквизит возвращается полностью, со всеми пробелами.
    Для сравнения строк используйте СокрЛП
    Пример

    не равно
    Код:
    Клиент.Наименование="Вася Пупкин"
    
    равно
    Код:
    СокрЛП(Клиент.Наименование)="Вася Пупкин"
    
  5. TopicStarter Overlay
    zamik15rus
    Offline

    zamik15rus

    Регистрация:
    14 май 2013
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Все бьюсь над запросом, задача выбрать элементы из справочника определенной группы, пишу запрос

    Код:
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Клиент = Справочник.Контрагенты.ТекущийЭлемент;
    |СуммаКредита = Справочник.Контрагенты.код;
    |Функция СуммаКредитаСумма = Сумма(СуммаКредита);
    |Группировка Клиент без групп;
    |Условие(Клиент.ПринадлежитГруппе(""Поставщики"")=1);
    |"
    ;
    
    Но почему он не работает я вообще не могу понять, уже голова опухла, а понять все равно не могу.
  6. rshakiro
    Offline

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

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    почитайте --> http://www.1c-pro.ru/topic18028.html
  7. TopicStarter Overlay
    zamik15rus
    Offline

    zamik15rus

    Регистрация:
    14 май 2013
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Спасибо почитал, кое что понял, вроде исправил код, но все равно что-то не получается привожу код с изменениями:

    Код:
     ГрКлиент = СоздатьОбъект("Справочник.Контрагенты");
    Если ГрКлиент.НайтиПоНаименованию("Поставщики",0,0) = 1 тогда
    Сообщить(ГрКлиент.Наименование,);
    Иначе
    Сообщить("Не смог найти",);
    КонецЕсли;
    
    
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Клиент = Справочник.Контрагенты.ТекущийЭлемент;
    |СуммаКредита = Справочник.Контрагенты.код;
    |Функция СуммаКредитаСумма = Сумма(СуммаКредита);
    |Группировка Клиент без групп;
    |Условие(Клиент.ПринадлежитГруппе(ГрКлиент)=1);
    |"
    ;
    
    Т.е. переменная ГрКлиент нормально отрабатывается, но запрос все равно не формируется.
  8. rshakiro
    Offline

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

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Попробуйте перенести проверку в тело цикла запроса...
  9. TopicStarter Overlay
    zamik15rus
    Offline

    zamik15rus

    Регистрация:
    14 май 2013
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Это как? Я пока не знаю, подскажите кодом.
  10. rshakiro
    Offline

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

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Код:
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Клиент = Справочник.Контрагенты.ТекущийЭлемент;
    |СуммаКредита = Справочник.Контрагенты.код;
    |Функция СуммаКредитаСумма = Сумма(СуммаКредита);
    |Группировка Клиент без групп;
    |Условие(Клиент.ПринадлежитГруппе(ГрКлиент)=1);
    |";
    ГрКлиент = СоздатьОбъект("Справочник.Контрагенты");
    Пока Запрос.Группировка(1) Цикл
    Если ГрКлиент.НайтиПоНаименованию("Поставщики",0,0) = 1 Тогда
    Если Запрос.Клиент.ПринадлежитГруппе(ГрКлиент)=1 Тогда
    Сообщить("Все прекрасно");
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
  11. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    rshakiro,есть серьезное замечание. Поиск группы ни в коем случае нельзя делать в цикле.

    Ну и пропущено выполнение самого запроса :)
  12. rshakiro
    Offline

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

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    согласен, "писал на коленке" )))))
    вот так должно сработать:

    Код:
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Клиент = Справочник.Контрагенты.ТекущийЭлемент;
    |СуммаКредита = Справочник.Контрагенты.код;
    |Функция СуммаКредитаСумма = Сумма(СуммаКредита);
    |Группировка Клиент без групп;
    //|Условие(Клиент.ПринадлежитГруппе(ГрКлиент)=1);
    |";
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    
    ГрКлиент = СоздатьОбъект("Справочник.Контрагенты");
    ГрКлиент.НайтиПоНаименованию("Поставщики",0,0);
    
    Пока Запрос.Группировка(1) = 1 Цикл
    Если Запрос.Клиент.ПринадлежитГруппе(ГрКлиент)=1 Тогда
    Сообщить("Все прекрасно");
    КонецЕсли;
    КонецЦикла;
  13. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    а так не пробовали?
    Код:
    Условие(Клиент в ГрКлиент);
  14. TopicStarter Overlay
    zamik15rus
    Offline

    zamik15rus

    Регистрация:
    14 май 2013
    Сообщения:
    9
    Симпатии:
    0
    Баллы:
    1
    Всем спасибо за ответы, разобрался, можно тему закрывать :yahoo:

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