Странно считает сумму

  1. 10 г. назад

    А завтра весна!
    Такая проблема: вторая таб. часть док-та (через служебный док-т).
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = "//{{ЗАПРОС(ПредСписание)
    |ОбрабатыватьДокументы Проведенные;
    |Период с ДатаНачала по ДатаОкончания;
    |ТекДок = Документ.Реализация.ТекущийДокумент;
    |Контрагент = Документ.Реализация.Контрагент;
    |СуммаДока = Документ.Реализация.Сумма;
    |Контроль = Документ.Реализация.Контроль;
    |Служебный = Документ.Реализация.ХранилищеРеализация.ТекущийДокумент;
    |СуммаК = Документ.Реализация.ХранилищеРеализация.Сумма;
    |Группировка ТекДок;
    |Функция ВсегоСумма = Сумма(СуммаДока);
    |Функция ВсегоСуммаК = Сумма(СуммаК);
    |Условие (Контрагент в ВыбКонтрагент);
    |Условие (Контроль = 1);";

    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;

    Пока Запрос.Группировка("ТекДок") = 1 Цикл
    Сообщить("1 - " + Запрос.ТекДок + ", " + Запрос.ВсегоСумма + ", " + Запрос.Служебный + ", " + Запрос.ВсегоСуммаК);
    КонецЦикла;

    СуммаК двоится. Не всегда.
    Куда копать?

    Спасибо.

  2. Хз как чорный запрос соединит таблицы в таком случае. Используй прямые

    Ответы: (2)
  3. (1) То есть в таком запросе работать не будет?

    Ответы: (3)
  4. (2) Хз. Я их логику никогда точно не понимал

    Попробуй сделать без группировок, выгрузить в таблицу и посмотреть, что там

    Ответы: (4)
  5. 28.02.2014 13:00:19 отредактировано andrewks

    (3) Да я обошла:

    Пока Запрос.Группировка("ТекДок") = 1 Цикл
    		СуммаКонтроль = 0;
    		СлужебныйДок = Запрос.Служебный;
    		Если ПустоеЗначение(СлужебныйДок) = 0 Тогда
    			СлужебныйДок.ВыбратьСтроки();
    			Пока СлужебныйДок.ПолучитьСтроку() = 1 Цикл
    				СуммаКонтроль = СуммаКонтроль + СлужебныйДок.Сумма;
    			КонецЦикла;
    		КонецЕсли;
    		Сообщить("1 - " + Запрос.ТекДок + ", " + Запрос.ВсегоСумма + ", " + Запрос.Служебный + ", " + СуммаКонтроль);
    	КонецЦикла;
    
    Ответы: (5)
  6. (4) используй теги кода - смотри, как красиво

    Ответы: (6)
  7. (5) Спасибо [smile=:D] [smile=:D]

  8. 28.02.2014 13:14:25 отредактировано Масянька

    Я просто пробую

    	Пока Запрос.Группировка("ТекДок") = 1 Цикл
    		СуммаКонтроль = 0;
    		СлужебныйДок = Запрос.Служебный;
    		Если ПустоеЗначение(СлужебныйДок) = 0 Тогда
    			СлужебныйДок.ВыбратьСтроки();
    			Пока СлужебныйДок.ПолучитьСтроку() = 1 Цикл
    				СуммаКонтроль = СуммаКонтроль + СлужебныйДок.Сумма;
    			КонецЦикла;
    		КонецЕсли;
    		Сообщить("1 - " + Запрос.ТекДок + ", " + Запрос.ВсегоСумма + ", " + Запрос.Служебный + ", " + СуммаКонтроль);
    	КонецЦикла;
    
  9. Ой, как классно!!!! :)

или зарегистрируйтесь чтобы ответить!