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

Как сделать разность двух запросов?

Автор vurdalak, 20 окт 2010, 02:39

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

vurdalak

Есть две выборки запроса.
ЗапросСКД01
   Пока ВыборкаСКД01.Следующий() Цикл
   СКД01 = ВыборкаСКД01.СуммаОборот;
КонецЦикла;
ЗапросСКК02
   Пока ВыборкаСКК02.Следующий() Цикл
   СКК02 =  ВыборкаСКК02.СуммаОборот;
КонецЦикла;
Как сделать разность между ними, я пробовал СКД01 - СКК02 не получилось, не может преобразовать к типу число.

Makifka

Я так полагаю, вы считаете остаточную стоимость основных средств, за минусом амортизации? В обоих циклах у вас в итоге присваивается последнее либо единственное значение Выборок запроса? Или вы его предполагаете суммировать? У вас оба значения присваиваются? попробуйте в циклы добавить
Сообщить(СКД01) и Сообщить(СКК02) соответственно.

Разность можно представить в виде

Ост01 = Число(СКД01) - Число(СКК02);

Вы можете показать тексты запросов?

progmikon

Покажите, пожалуйста, запросы. Я думаю, можно и одним запросом получить данные.

vurdalak

Вот Запросы:
       ЗапросСКД01 = Новый Запрос;
   ЗапросСКД01.УстановитьПараметр("СчетДт",ПланыСчетов.Хозрасчетный.ОсновныеСредства);
   ЗапросСКД01.УстановитьПараметр("НачалоПериода",НачалоПериода);
ЗапросСКД01.УстановитьПараметр("КонецПериода",КонецПериода);
ЗапросСКД01.УстановитьПараметр("Организация",Организация);

    ЗапросСКД01.Текст =
   "ВЫБРАТЬ
   
   |   ХозрасчетныйОборотыДтКт.СуммаОборот

   |ИЗ
   |   РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, , , , , ,) КАК ХозрасчетныйОборотыДтКт
   |ГДЕ
   |   ХозрасчетныйОборотыДтКт.СчетДт = &СчетДт
   |И  ХозрасчетныйОборотыДтКт.Организация = &Организация";
       ВыборкаСКД01 = ЗапросСКД01.Выполнить().Выбрать() ;
        
   Пока ВыборкаСКД01.Следующий() Цикл
   СКД01 = ВыборкаСКД01.СуммаОборот;
КонецЦикла;

ЗапросСКК02 = Новый Запрос;
   ЗапросСКК02.УстановитьПараметр("СчетКт",ПланыСчетов.Хозрасчетный.АмортизацияОсновныхСредств);
   ЗапросСКК02.УстановитьПараметр("НачалоПериода",НачалоПериода);
ЗапросСКК02.УстановитьПараметр("КонецПериода",КонецПериода);
ЗапросСКК02.УстановитьПараметр("Организация",Организация);

    ЗапросСКК02.Текст =
   "ВЫБРАТЬ
   
   |   ХозрасчетныйОборотыДтКт.СуммаОборот

   |ИЗ
   |   РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, , , , , ,) КАК ХозрасчетныйОборотыДтКт
   |ГДЕ
   |   ХозрасчетныйОборотыДтКт.СчетКт = &СчетКт
   |И  ХозрасчетныйОборотыДтКт.Организация = &Организация";
       ВыборкаСКК02 = ЗапросСКК02.Выполнить().Выбрать();
        
   Пока ВыборкаСКК02.Следующий() Цикл
   СКК02 =  ВыборкаСКК02.СуммаОборот;
КонецЦикла;

vurdalak

Мне нужно получить суммы по счетам СКД01 и СКК02,и сделать разность между этими суммами СКД01 - СКК02.

Makifka

ЗапросСКД01.Текст =
   "ВЫБРАТЬ
   
   |   СУММА(ХозрасчетныйОборотыДтКт.СуммаОборот) КАК СуммаОборот

   |ИЗ
   |   РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, , , , , ,) КАК ХозрасчетныйОборотыДтКт
   |ГДЕ
   |   ХозрасчетныйОборотыДтКт.СчетДт В ИЕРАРХИИ (&СчетДт)
   |И  ХозрасчетныйОборотыДтКт.Организация = &Организация";

   ЗапросСКК02.Текст =
   "ВЫБРАТЬ
   
   |   СУММА(ХозрасчетныйОборотыДтКт.СуммаОборот) КАК СуммаОборот

   |ИЗ
   |   РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, , , , , ,) КАК ХозрасчетныйОборотыДтКт
   |ГДЕ
   |   ХозрасчетныйОборотыДтКт.СчетКт В ИЕРАРХИИ (&СчетКт)
   |И  ХозрасчетныйОборотыДтКт.Организация = &Организация";

progmikon

Попробуйте так:

ВЫБРАТЬ
ОборотПо01.СуммаОборот КАК ОборотПо01,
ОборотПо02.СуммаОборот КАК ОборотПо02,
ЕСТЬNULL(ОборотПо01.СуммаОборот, 0) - ЕСТЬNULL(ОборотПо02.СуммаОборот, 0) КАК РазностьОборотов
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, , СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновныеСредства), , , , Организация = &Организация) КАК ОборотПо01,
РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, , , , СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.АмортизацияОсновныхСредств), , Организация = &Организация) КАК ОборотПо02

Makifka

в вашем варианте вы выбирали счета  01 и 02, которые в проводках не используются,  хотя на самом деле вам нужны субсчета 01.01 и 02.01

progmikon

Цитата: Makifka от 20 окт 2010, 15:34
в вашем варианте вы выбирали счета  01 и 02, которые в проводках не используются,  хотя на самом деле вам нужны субсчета 01.01 и 02.01

Тоже верное замечание, хотя такие запросы имеют место быть.

vurdalak

А как выбрать в запросе субсчета?

Теги:

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

Рейтинг@Mail.ru

Поиск