8.х отбор по регистру

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

  1. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    Код:
    ЗапросСум= V8.NewObject("Запрос");
    ЗапросСум.УстановитьПараметр("Дата",Дата(2003,01,01));
    ЗапросСум.УстановитьПараметр("Дата1",ТекущаяДата());
    ЗапросСум.Текст="
    |ВЫБРАТЬ
    |	СУММА(ДенежныеСредства.Регистратор.СуммаДокумента) КАК СуммаКлиента,
    |	ДенежныеСредства.Регистратор.ДокументОснование.Пациент КАК Клиент
    |ИЗ
    |	РегистрНакопления.ДенежныеСредства КАК ДенежныеСредства
    |ГДЕ
    |	ДенежныеСредства.Регистратор.Дата МЕЖДУ &Дата И &Дата1
    |
    |СГРУППИРОВАТЬ ПО
    |	ДенежныеСредства.Регистратор.ДокументОснование.Пациент";
    ВыборкаСум=ЗапросСум.Выполнить().Выбрать();
    пока ВыборкаСум.Следующий() цикл
    Если НЕ Справочники.Клиенты.НайтиПоНаименованию(Строка(ВыборкаСум.Клиент)).Пустая() тогда
    ПотрСумма = РегистрыСведений.ПотраченнаяСумма;
    Контрагент = Новый Структура("Клиент");
    Контрагент.Клиент = ВыборкаСум.Клиент; 
    ВыборкаКонтрагент = ПотрСумма.Выбрать(,Контрагент);
    Если Не ВыборкаКонтрагент.Следующий() тогда 
    
    
    Ошибки возникают в строке ВыборкаКонтрагент = ПотрСумма.Выбрать(,Контрагент)...Подскажите где я не прав. Мне нужно чтобы из регистра выбиралась запись по Контрагенту(Измерение регистра). Заранее спасибо!
  2. dlednev
    Offline

    dlednev Опытный в 1С

    Регистрация:
    23 апр 2008
    Сообщения:
    86
    Симпатии:
    0
    Баллы:
    26
    В данном случае должно помочь - "Контрагент.Клиент"
  3. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    К сожаление не помогло
    Как я понимаю в ПотрСумма.Выбрать() должен идти набор параметров, но вот какой пока понять не могу.
  4. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    скорее всего
    Контрагент.Клиент.Ссылка
  5. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    не помогает =((

  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    А разве не:
    Код:
    ВыборкаКонтрагент = ПотрСумма.Выбрать(,Контрагент.Клиент);
    
  7. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    Помогла но не совсем...
    Вот тут я уже совсем не понимаю в чем проблема :unsure:
  8. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
  9. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    У меня регистр непеодический и независимый ..поэтому
    ...
    Вариант
    ВыборкаКонтрагент = ПотрСумма.Выбрать(Контрагент.Клиент);
    и вариант
    ВыборкаКонтрагент = ПотрСумма.Выбрать(Контрагент.Клиент,);
    выдают вот такую ошибку:
    В итоге я сейчас пришел к такому коду
    Код:
    ВыборкаСум=ЗапросСум.Выполнить().Выбрать();
    пока ВыборкаСум.Следующий() цикл
    Если ВыборкаСум.Клиент=Null тогда
    Продолжить;
    Иначе
    Если (НЕ  Строка(ВыборкаСум.Клиент.Description)=""
    и  Справочники.Клиенты.НайтиПоНаименованию(Строка(ВыборкаСум.Клиент.Description)).Пустая())
    Или Справочники.Клиенты.НайтиПоНаименованию(Строка(ВыборкаСум.Клиент.Description)).Пустая() тогда
    ПотрСумма = РегистрыСведений.ПотраченнаяСумма;
    Контрагент = Новый Структура("Клиент");
    Контрагент.Клиент = Справочники.Клиенты.НайтиПоНаименованию(Строка(ВыборкаСум.Клиент.Description)); 
    ВыборкаКонтрагент = ПотрСумма.Выбрать(Контрагент.Клиент,);
    
    
    И все равно та же ошибка. Можете пояснить в чем заключается несоответсвие типов?
  10. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Ммммм..... не в тему сабжа - просто так:
    Проверьте условие:

    Код:
    Если НЕ А = 1 И а = 2 ИЛИ а = 3 Тогда
    
    Не очень понимаю смысл пока :)

    По теме: что в значении Контрагент.Клиент отладчик показывает?
  11. TopicStarter Overlay
    Amber
    Offline

    Amber Опытный в 1С

    Регистрация:
    16 ноя 2007
    Сообщения:
    98
    Симпатии:
    0
    Баллы:
    26
    Смысл такого условия чтобы отловить когда выборкамед.клиент.description возвращает пустую строку а найтипонаименованию() находит клиента с явно не пустым наименованием( пока не понял почему так происходит..) Ворое же условие проверяетже просто пустую ссылку...Вообщем строки с условиями в моем случае отробатывают.

    Вообщем проблема решена.
    Я оставил тип реквизита "строка", а был в полной уверенности что он ссылается на справочник. Так же поставил галку в "Индексировать". Все огромное спасибо!

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