Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 мая 2024, 16:28

Два вопроса (запрос и ТаблицаЗначений)

Автор hjd001, 24 апр 2011, 02:37

0 Пользователей и 1 гость просматривают эту тему.

hjd001


1. Скажите, пожалуйста, как проверить (в пакетном запросе) на пустоту результат запроса внутри другого запроса

Например, есть запрос


      |ВЫБРАТЬ
      |   УправленческийОбороты.СуммаОборотДт
      |ПОМЕСТИТЬ ОборотМесяц
      |ИЗ
      |   РегистрБухгалтерии.Управленческий.Обороты(&МоментНачало, &Момент, Месяц, Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Покупатели), , КорСчет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ПрибылиУбытки)) КАК УправленческийОбороты
      |;
      |
      |////////////////////////////////////////////////////////////////////////////////
      |ВЫБРАТЬ
      |   СписокВариантовКурсовОписание.НижняяГраница КАК НижняяГраница,
      |   СписокВариантовКурсовОписание.Курс
      |ПОМЕСТИТЬ Курсы
      |ИЗ
      |   РегистрСведений.Шкалы.СрезПоследних(&Момент, Покупатель = &Покупатель) КАК ШкалыСрезПоследних
      |      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СписокВариантовКурсов.Описание КАК СписокВариантовКурсовОписание
      |      ПО (СписокВариантовКурсовОписание.Ссылка = ШкалыСрезПоследних.ВариантКурса)
      |;
      |
      |////////////////////////////////////////////////////////////////////////////////
      |ВЫБРАТЬ ПЕРВЫЕ 1
      |   Курсы.Курс КАК Курс
      |ИЗ
      |   Курсы КАК Курсы,
      |   ОборотМесяц КАК ОборотМесяц
      |ГДЕ
      |   ОборотМесяц.СуммаОборотДт >= Курсы.НижняяГраница
      |
      |УПОРЯДОЧИТЬ ПО
      |   Курсы.НижняяГраница УБЫВ


В его первой части (" ... УправленческийОбороты.СуммаОборотДт ... ") получается оборот, которого может вообще не быть, тогда при соединении этого "пустого результата" с "чем угодно и как угодно" на выходе получается тоже пустой результат (а хотелось бы хотя бы к 0 привести (" ... УправленческийОбороты.СуммаОборотДт ... ")).
В частности здесь этот вопрос у меня встал в третьей части пакетного запроса ("...Курсы.Курс КАК Курс ..."), где вставка (" ... ОборотМесяц КАК ОборотМесяц ...") делает пустым итоговый результат
Если я вообще что-то не так делаю (или думаю, что делаю),- тоже укажите, пожалуйста.

Есть ли альтернативы варианту с Объединением (типа вот такого) (вместо первого запроса в пакете) ?

| ВЫБРАТЬ
      |   СУММА(ДляСвертки.СуммаОборотДт) КАК СуммаОборотДт
      |ПОМЕСТИТЬ ОборотМесяц
      |ИЗ
      |   (ВЫБРАТЬ
      |      УправленческийОбороты.СуммаОборотДт КАК СуммаОборотДт,
      |      ВЫРАЗИТЬ(""Для"" КАК СТРОКА(3)) КАК ПолеДля
      |   ИЗ
      |      РегистрБухгалтерии.Управленческий.Обороты(&МоментНачало, &Момент, Месяц, Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Покупатели), , КорСчет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ПрибылиУбытки)) КАК УправленческийОбороты
      |   
      |   ОБЪЕДИНИТЬ ВСЕ
      |   
      |   ВЫБРАТЬ
      |      0,
      |      ВЫРАЗИТЬ(""Для"" КАК СТРОКА(3))) КАК ДляСвертки
      |
      |СГРУППИРОВАТЬ ПО
      |   ДляСвертки.ПолеДля


2. Как Нужно именовать колонку соответствующую  Субконто в ТаблицеЗначений, чтобы можно было загружать данные в Движения
Есть, например, результат запроса, где имена колонкам даны в соответствии с именами полей движений, но для Субконто имя должно быть вида
СубконтоДт.Контрагент
Или
СубконтоДт[Контрагент]
А ни то ни другое не принимается ни в запросе ни в имени ТЗ
      ТЗ = Результат.Выгрузить();
      //Кол = ТЗ.Колонки.Найти("Субконто1Дт");
      //Кол.Имя = " СубконтоДт.Контрагент";
      Движения.Управленческий.Загрузить(ТЗ);
      
Как поступить, чтобы не приходилось коллекцию вручную обходить ?      
      Для каждого Движение Из Движения.Управленческий Цикл         
         Движение.СубконтоДт.Контрагент = Покупатель;          
      КонецЦикла;

hjd001

СубконтоДт.Контрагент
Или
СубконтоДт[Контрагент]
А ни то ни другое не принимается ни в запросе ни в имени ТЗ
      ТЗ = Результат.Выгрузить();
      //Кол = ТЗ.Колонки.Найти("Субконто1Дт");
      //Кол.Имя = " СубконтоДт.Контрагент";
      Движения.Управленческий.Загрузить(ТЗ);
      
Как поступить, чтобы не приходилось коллекцию вручную обходить ?      
      Для каждого Движение Из Движения.Управленческий Цикл         
         Движение.СубконтоДт.Контрагент = Покупатель;          
      КонецЦикла;

hjd001

СубконтоДт.Контрагент
Или
СубконтоДт(Скобки)Контрагент(Скобки)
А ни то ни другое не принимается ни в запросе ни в имени ТЗ
      ТЗ = Результат.Выгрузить();
      //Кол = ТЗ.Колонки.Найти("Субконто1Дт");
      //Кол.Имя = " СубконтоДт.Контрагент";
      Движения.Управленческий.Загрузить(ТЗ);
      
Как поступить, чтобы не приходилось коллекцию вручную обходить ?      
      Для каждого Движение Из Движения.Управленческий Цикл         
         Движение.СубконтоДт.Контрагент = Покупатель;          
      КонецЦикла;

hjd001

тут поддерживается редактирование сообщений ?

hjd001


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск