Запрос по РКО в 1с 8.1

Тема в разделе "1C и всё что с ней связано", создана пользователем -, 4 авг 2009.

  1. Гость

    Доброго времени суток!

    Необходимо выбрать те РКО у которых определенная "Статья Движения Денежных Средств". Пишу код
    [codebox]
    ЗапросОРасходниках.Текст =
    "ВЫБРАТЬ
    | РасходныйКассовыйОрдер.СуммаДокумента КАК СуммаДокумента,
    | РасходныйКассовыйОрдер.Контрагент.Наименование КАК Продавец,
    | РасходныйКассовыйОрдер.СтатьяДвиженияДенежныхСредств.Наименование КАК Имя1
    |ИЗ
    | Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер";

    .......

    ТЗРКО = Новый ТаблицаЗначений;
    ТЗРКО = ЗапросОРасходниках.Выполнить().Выгрузить();
    для Инд=0 по ТЗРКО.Количество()-1 цикл
    Предупреждение(ТипЗнч(ТЗРКО.Получить(Инд).Имя1));
    КонецЦикла;
    [/codebox]

    Предупреждение выводит NULL. Подскажите что делать?

    P.S. Соответственно не могу использовать конструкцию ГДЕ в запросе, так как сравнение с NULL не проходит.
     
  2. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    совсем не понял почему нельзя использовать ГДЕ и задать определенные условия?
    запрос конструктором строился? если нет - нада попробовтаь конструктором и указать там условине необходимое. Если сравнение с переменной - не забыть передать этот параметр запросу
     
  3. thinkfast

    thinkfast Гость

    гм...
    Попробовал то, что сам написал, не то ... удалил

    Мысль осталось токо одна, этот реквизит не был заполнен при записи/проведении дока. Поэтому пустая ссылка, значение реквезита/регистра Пустая ссылка/Null.
    При передачи в таблицу пустого значения и формируется Null
    больше идей нет корми инфой )))
     
  4. Гость

    Я делал вот так: [codebox]
    ЗапросОРасходниках = Новый Запрос;
    ЗапросОРасходниках.Текст =
    "ВЫБРАТЬ
    | РасходныйКассовыйОрдер.СуммаДокумента КАК СуммаДокумента,
    | РасходныйКассовыйОрдер.Контрагент.Наименование КАК Продавец
    |ИЗ
    | Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер
    |ГДЕ
    | РасходныйКассовыйОрдер.СтатьяДвиженияДенежныхСредств.Наименование ПОДОБНО &Парам1";

    ЗапросОРасходниках.УстановитьПараметр("Парам1", "Выплата заработной платы");

    ..........

    ТЗРКО = Новый ТаблицаЗначений;
    ТЗРКО = ЗапросОРасходниках.Выполнить().Выгрузить();
    для инд=0 по ТЗРКО.Количество()-1 цикл
    Предупреждение(ТЗРКО.Получить(инд).Продавец);
    КонецЦикла;
    [/codebox]

    Предупреждение ничего не выводит.
    Куда копать???
     
  5. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    ну в случае строки в принцыпе переменную можно было вообще не передавать...
    Код (Text):
    РасходныйКассовыйОрдер.СтатьяДвиженияДенежныхСредств.Наименование ПОДОБНО ""Выплата заработной платы"";
    я бы вот как сделал - убрал бы условие, посмотрел бы отладчиком выходную таблицу значения с отбором из запроса. Может там вообще нет подобного - естественно что в отбор ничо и не попадет. А если и есть - тогда возможно проблема с орфографией - можно прям с таблицы правильную строку скопировать.
     
  6. Гость

    1. Если передавать в условие не параметром - он ругается.
    2. Орфограффию проверил - все норм. (скопировал из справочника)

    3-й день уже бьюсь над этим.
     
  7. thinkfast

    thinkfast Гость

    Выполни запрос как советует KiR без условия полный.
    И через точку останова посмотри строки таблицы, а лучше сюда выложи вместе посмотрим что формирует запрос.

    Например:
    Код (Text):
         
    для Инд=0 по ТЗРКО.Количество()-1 цикл  
    текСтрока = ТЗРКО.Получить(Инд); //Получить строку ТЗ
    Предупреждение(ТипЗнч(ТЗРКО.Получить(Инд).Имя1));
    КонецЦикла;
    Тогда в точке останова будут рассчитаны:
    текСтрока.Имя1 "Служба главного инженера" Строка
     
  8. Гость

    Запрос:
    [codebox]
    ЗапросОРасходниках = Новый Запрос;
    ЗапросОРасходниках.Текст =
    "ВЫБРАТЬ
    | РасходныйКассовыйОрдер.СуммаДокумента КАК СуммаДокумента,
    | РасходныйКассовыйОрдер.Контрагент.Наименование КАК Продавец,
    | РасходныйКассовыйОрдер.СтатьяДвиженияДенежныхСредств.Наименование КАК Статья
    |ИЗ
    | Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер";
    [/codebox]

    Вывод:
    [codebox]
    Индекс Значение элемента Тип элемента СуммаДокумента Продавец Статья
    0 СтрокаТаблицыЗначений СтрокаТаблицыЗначений 150 "Бубнова Галина"
    1 СтрокаТаблицыЗначений СтрокаТаблицыЗначений 123 "Бердалиева Оксана"
    2 СтрокаТаблицыЗначений СтрокаТаблицыЗначений 150 "Бубнова Галина"
    [/codebox]

    В статье пусто (((
     
  9. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    попробуй выбрать просто статью - РасходныйКассовыйОрдер.СтатьяДвиженияДенежныхСредств КАК Статья
     
  10. Гость

    Попробовал, эффект тот же.
     
  11. thinkfast

    thinkfast Гость

    Напрашивается вопрос:
    А в самом доке этот реквизит заполнен?
     
  12. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    [codebox]Процедура КнопкаВыполнитьНажатие(Кнопка)
    ЗапросОРасходниках = Новый ЗАпрос;
    ЗапросОРасходниках.Текст =
    "ВЫБРАТЬ
    | РасходныйКассовыйОрдер.СуммаДокумента КАК СуммаДокумента,
    | РасходныйКассовыйОрдер.Контрагент КАК Продавец,
    | РасходныйКассовыйОрдер.СтатьяДвиженияДенежныхСредств КАК Имя1
    |ИЗ
    | Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер";

    ТЗРКО = Новый ТаблицаЗначений;
    ТЗРКО = ЗапросОРасходниках.Выполнить().Выгрузить();
    для Инд=0 по ТЗРКО.Количество()-1 цикл
    сообщить(ТипЗнч(ТЗРКО.Получить(Инд).Имя1));
    КонецЦикла;
    КонецПроцедуры[/codebox]
    Иначе не правильно в таблицу выгружается.
    И еще - условие ставьте лучше не по наименованию, а по ссылке.
     
  13. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    unknown181538, ты ошибаешься! Новый ТЗ можно не делать, все правильно выгружается в таблицу значений! Причем таблицу значений в отладчике можно простомтеть до ее формирования. Например точку остановы поставить на ТЗРКО = ЗапросОРасходниках.Выполнить().Выгрузить(); - ТЗРКО будет иметь тип НЕОПРЕДЕЛЕНО, а ЗапросОРасходниках.Выполнить().Выгрузить() уже будет заполненной таблицей значений!
    я более склонен согласиться с thinkfast
     
  14. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    KiR , я не про то.
    Если в запросе идет обращение через 2 точки, ТЗ в результате, имеет сложную структуру, не такую, как мы предполагаем.
    Я убрал ".Наименование" в запросе. И у меня все работает.
     
  15. thinkfast

    thinkfast Гость

    А у меня и с ".Наименование" работает...
    А у него по-твоему варианту идет пустая строка...

    Вот не знаю, может ли это быть различием версий, навсяк у меня 1С:Предприятие 8.1 (8.1.12.101)
     
  16. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    unknown181538, суть не в этом. у него не работает и так как ты написал. скорее всего нада открывать журнал и смотреть есть ли там РКО за выбранный период, если есть - заполнен ли реквизит и какой он имеет тип...
     
  17. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Ну, надо сначала смотреть выполняется ли вообще запрос, выводится ли наименование, и затем - попадает ли оно в ТЗ?
    thinkfast , а ты код полностью копировал, или только запрос выполнял?

    PS. Я не прав - все работает в обоих случаях - У меня в исходном варианте выдается Null и "Строка" - вероятно Null там где не заполнено, что несомненно правильно.
     
  18. thinkfast

    thinkfast Гость

    Запрос выпоняется, попадают все значения кроме Статьи вот его результат он привел:
    Я копировал все и запрос и обработку.

    unknown181538 =) К этому мы и пришли ) что null из-за пустого значния )
     
Загрузка...

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