8.х Трабл с запросом.

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

  1. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Добрый день! В запросе по регистру накопления когда делаю отбор по договору, то запрос при выполнении не выдает ни одной ошибки, но и результат запроса пустой. Когда делаю отбор по контрагенту то всё нормально. Может в запросе что-то не так. Подскажите. :unsure:

    Код:
    Процедура ДокументСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    ОформлениеСтроки.Ячейки.Всего.ОтображатьТекст = Истина;
    ОформлениеСтроки.Ячейки.Всего.Текст = ДанныеСтроки.Ссылка.ТЧ_Заказы.Итог("Всего");    
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ВыбКонтрагент", ДанныеСтроки.Ссылка.Контрагент.Ссылка);
    Запрос.УстановитьПараметр("ВыбДоговор", ДанныеСтроки.Ссылка.Договор.Ссылка);
    Запрос.УстановитьПараметр("ВыбДата", РабочаяДата);
    
    ТекстЗапроса = "ВЫБРАТЬ
    |    ПРОНТО_ОплатаСчетовОстатки.ВидОплаты,
    |    СУММА(ПРОНТО_ОплатаСчетовОстатки.СуммаОплатыОстаток) КАК Сумма
    |ИЗ
    |    РегистрНакопления.ПРОНТО_ОплатаСчетов.Остатки(&ВыбДата,                    
    |                           Контрагент = &ВыбКонтрагент И Договор = &ВыбДоговор) 
    |                                              КАК ПРОНТО_ОплатаСчетовОстатки
    |
    |СГРУППИРОВАТЬ ПО
    |    ПРОНТО_ОплатаСчетовОстатки.ВидОплаты";
    
    ТЗ = Новый ТаблицаЗначений;                
    Запрос.Текст = ТекстЗапроса;
    ТЗ = Запрос.Выполнить().Выгрузить();  
    
    Если ТЗ.Количество() > 0 Тогда
    Для Инд = 0 По ТЗ.Количество() - 1 Цикл
    Если ТЗ[Инд].ВидОплаты = Перечисления.ПРОНТО_ВидыОплаты.Наличная Тогда
    ОформлениеСтроки.Ячейки.НаличнаяОплата.ОтображатьТекст = Истина;
    ОформлениеСтроки.Ячейки.НаличнаяОплата.Текст = ТЗ[Инд].Сумма;
    КонецЕсли;    
    КонецЦикла;  
    КонецЕсли;
    
  2. Pavel_Ya
    Offline

    Pavel_Ya

    Регистрация:
    16 дек 2007
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    Косяк в условии:
    Контрагент = &ВыбКонтрагент И Договор = &ВыбДоговор

    Вместо = используй в иерархии:

    Контрагент В ИЕРАРХИИ(&ВыбКонтрагент) И Договор В ИЕРАРХИИ(&ВыбДоговор)

    Думаю этого будет достаточно.
  3. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Так тоже не работает
  4. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Попробуйте этот же запрос в консоли отчетов повторить.
    Задайте Контрагента и Договор.
    Какой будет результат. Возможно в регистре нет ссылки на договор?
  5. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Создал запрос в консоле отчетов. Там работает всё нормально. Помещаю этот запрос в процедуру
    ДокументСписокПриВыводеСтроки не работает. Во внешних обработках этот запрос тоже работает

    Код:
    ТекстЗапроса = "ВЫБРАТЬ
    |    ПРОНТО_ОплатаСчетов1Остатки.ВидОплаты.Ссылка КАК ВидОплаты,
    |    СУММА(ПРОНТО_ОплатаСчетов1Остатки.СуммаОплатыОстаток) КАК Сумма
    |ИЗ
    |    РегистрНакопления.ПРОНТО_ОплатаСчетов1.Остатки(&ВыбДата, ) КАК ПРОНТО_ОплатаСчетов1Остатки
    |ГДЕ
    |    ПРОНТО_ОплатаСчетов1Остатки.Договор.Ссылка  В ИЕРАРХИИ(&ВыбДоговор)
    |
    |СГРУППИРОВАТЬ ПО
    |    ПРОНТО_ОплатаСчетов1Остатки.ВидОплаты.Ссылка";
    
  6. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Может стоит
    Код:
    ТекстЗапроса = "ВЫБРАТЬ
    |	ПРОНТО_ОплатаСчетов1Остатки.ВидОплаты.Ссылка КАК ВидОплаты,
    |	ПРОНТО_ОплатаСчетов1Остатки.Договор Как Договор,
    |	ПРОНТО_ОплатаСчетов1Остатки.Регистратор КАК Документ,
    |	СУММА(ПРОНТО_ОплатаСчетов1Остатки.СуммаОплатыОстаток) КАК Сумма
    |ИЗ
    |	РегистрНакопления.ПРОНТО_ОплатаСчетов1.Остатки(&ВыбДата, ) КАК ПРОНТО_ОплатаСчетов1Остатки
    |
    |СГРУППИРОВАТЬ ПО
    |	ПРОНТО_ОплатаСчетов1Остатки.Договор,
    |	ПРОНТО_ОплатаСчетов1Остатки.ВидОплаты.Ссылка";
    
    
    Впринципе зачем это запихивать "При выводе строки"
    возможне проще сразу готовый список сформировать и уже потом отобразить.
  7. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    AlexFF При открытии журнала с доументами "Счет" мне нужно пробежаться по всем строкам и в регистре счета взять для каждого счета по договору оплата и вывести в колонку журнала "Счета". Если не трудно. Подскажи как ещё можно реализовать? В процедуре ПриВыводеСтроки я получаю ссылку на элемент справочника, чтобы сделать отбор в регистре. Но ссылка какая-то странная.
  8. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    ну как пример нечто подобного можно посмотреть тут:
    http://www.1c-pro.ru/index.php?showtopic=10706

    Конфа управление торговлей?
    Попойзже попробую запрос соорудить.
  9. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Нет. Бухгалтерия предприятия. Платформа 1С 8.1
  10. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    Запрос сам попробую написать
  11. TopicStarter Overlay
    alex-79
    Offline

    alex-79 Опытный в 1С

    Регистрация:
    21 сен 2006
    Сообщения:
    643
    Симпатии:
    1
    Баллы:
    29
    AlexFF Тот пример, который был описан http://www.1c-pro.ru/index.php?showtopic=10706. Этот пример не будет оптимальным решением. Т.к. первоначально в запросе идёт выборка всех документов в базе. Если в организации большой документооборот, то в скором времени просто будет большая нагрузка на сервер и будут тормоза.
  12. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    А что мешает ввести условия отбора в запрос?

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