helpf.pro
Регистрация

v8: Запрос

Ermak
29.09.2011 11:13Прочитано: 3385
Добрый день! Помогите разобраться в такой ситуации

Вот часть кода

Код 1C v 8.2 УП
 
Зпр = Новый Запрос;
Зпр.Текст = "ВЫБРАТЬ
| ЕСТЬNULL(ВЫБОР
| КОГДА ХозрасчетныйОбороты.Субконто1 = &Потери
| ТОГДА ХозрасчетныйОбороты.СуммаОборотДт
| КОНЕЦ, 0) КАК СуммаОборотДт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачМесяца, &КонМесяца, , Счет = &Счет25, , , , ) КАК ХозрасчетныйОбороты
|ИТОГИ
| СУММА(СуммаОборотДт)
|ПО
| ОБЩИЕ";

Зпр.УстановитьПараметр("НачМесяца", НачалоМесяца(Дата));
Зпр.УстановитьПараметр("КонМесяца", КонецМесяца(Дата));
Зпр.УстановитьПараметр("Счет25", СчетЗатрат);
Зпр.УстановитьПараметр("СтатьиЗатрат", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат);
Зпр.УстановитьПараметр("Потери", Организация.ТехнологическиеПотери);
Результат = Зпр.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
СальдоПотери = Выборка.СуммаОборотДт;
Потери = СальдоПотери * Стр.ОбъемРеализации / РеализацияИтог;
КонецЕсли;



Мне надо найти Потери, вот формула по который считается Потери

Код 1C v 8.2 УП
 Потери = СальдоПотери * Стр.ОбъемРеализации / РеализацияИтог;   

но почему то в этой формуле не видел СальдоПотери, а берет число не понятно откуда.

Подскажите в чем дело может быть, я думаю что то с запросом не так.
Изменено 29.09.11 11:18:20
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
29.09.2011 11:48Ответ № 1
а что есть СТР и Реализация итог, как-то у тебя совершенно не правильный подход к твоей решению задачи
Ermak
29.09.2011 11:53Ответ № 2
(1) E_Migachev, Вот код

Код 1C v 8.2 УП
 
Процедура ПечатьАвизо(Макет);
ТабДок = Новый ТабличныйДокумент;
РеализацияИтог = Калькуляция.Итог("ОбъемРеализации");

Для Каждого Стр Из Калькуляция Цикл
Если Стр.Филиал <> Константы.ГоловнаяОрганизация.Получить() Тогда
// Шапка
Шапка = Макет.ПолучитьОбласть("Шапка");
Шапка.Параметры.Заполнить(ЭтотОбъект);
Шапка.Параметры.Дата = Формат(Дата,"ДЛФ=Д");
Шапка.Параметры.Филиал = Стр.Филиал.НаименованиеПолное;
ТабДок.Вывести(Шапка);
ПорНом = 1;
СуммаИтог = 0;
Область = Макет.ПолучитьОбласть("Записи");
Если СчетЗатрат = ПланыСчетов.Хозрасчетный.ОбщепроизводственныеРасходы Тогда
Затрата = "Переданы общепроизводственные расходы в филиал";
ИначеЕсли СчетЗатрат = ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы Тогда
Затрата = "Переданы общехозяйственные расходы в филиал";
КонецЕсли;
Область.Параметры.Ном = ПорНом;
Область.Параметры.Затр = Затрата;
Область.Параметры.Заполнить(ЭтотОбъект);
ПорНом=ПорНом+1;

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

Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Фил", Стр.Филиал);
Запрос.УстановитьПараметр("Счет79", ПланыСчетов.Хозрасчетный.РасчетыПоТекущимОперациям);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
СуммаСписания = Выборка.Сумма;
КонецЕсли;
Зпр = Новый Запрос;
Зпр.Текст = "ВЫБРАТЬ
| ЕСТЬNULL(ВЫБОР
| КОГДА ХозрасчетныйОбороты.Субконто1 = &Потери
| ТОГДА ХозрасчетныйОбороты.СуммаОборотДт
| КОНЕЦ, 0) КАК СуммаОборотДт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачМесяца, &КонМесяца, , Счет = &Счет25, , , , ) КАК ХозрасчетныйОбороты
|ИТОГИ
| СУММА(СуммаОборотДт)
|ПО
| ОБЩИЕ";

Зпр.УстановитьПараметр("НачМесяца", НачалоМесяца(Дата));
Зпр.УстановитьПараметр("КонМесяца", КонецМесяца(Дата));
Зпр.УстановитьПараметр("Счет25", СчетЗатрат);
Зпр.УстановитьПараметр("СтатьиЗатрат", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат);
Зпр.УстановитьПараметр("Потери", Организация.ТехнологическиеПотери);
Результат = Зпр.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
СальдоПотери = Выборка.СуммаОборотДт;
Потери = СальдоПотери * Стр.ОбъемРеализации / РеализацияИтог;
КонецЕсли;
КонецЕсли;


Мне нужно взять значение с СуммаОборотДт, а берется совсем другое значение, пытался понять что за значение так и не понял.
Ermak
30.09.2011 10:17Ответ № 3
Не кто не знает?
E_Migachev
30.09.2011 10:58Ответ № 4
попробуй так:
Код 1C v 8.х
 //..........................
Выборка = Результат.Выбрать();
//ДОБАВЬ ТУТ:
СальдоПотери = 0;
Если Выборка.Следующий() Тогда
СальдоПотери = Выборка.СуммаОборотДт;
Потери = СальдоПотери * Стр.ОбъемРеализации / РеализацияИтог;
КонецЕсли;
//..........................
Ermak
30.09.2011 11:48Ответ № 5
(4) E_Migachev, Не получилось, так же считает. Что еще можно сделать?
E_Migachev
30.09.2011 12:01Ответ № 6
Добавить сообщить и отследить расчеты
Код 1C v 8.х
 сообщить("До выборки СальдоПотери = "+Строка(СальдоПотери));
Если Выборка.Следующий() Тогда
СальдоПотери = Выборка.СуммаОборотДт;
сообщить("В выборке СальдоПотери = "+Строка(СальдоПотери));
Потери = СальдоПотери * Стр.ОбъемРеализации / РеализацияИтог;
КонецЕсли;
Ermak
30.09.2011 13:03Ответ № 7
Вот он выдал мне

До выборки СальдоПотери = 0
В выборке СальдоПотери = 204 466,5

Но сальдо = 62 690,24

Вот картинка

title

Я не понимаю откуда он берет 204 466,5
Ermak
30.09.2011 14:00Ответ № 8
Вроде я понял в чем дело, эту сумму СальдоПотери = 204 466,5 он плюсует все месяц по ОборотДт, а нужно ОборотДт только за текущий месяц, как это прописать в запросе
E_Migachev
30.09.2011 14:08Ответ № 9
Проблема в запросе, измени его на
Код 1C v 8.х
 	Зпр.Текст = "ВЫБРАТЬ
| СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК СуммаОборотДт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачМесяца, &КонМесяца, Период, Счет = &Счет25, ,Субконто1 = &Потери, , ) КАК ХозрасчетныйОбороты
|";
Ermak
30.09.2011 14:32Ответ № 10
Спасибо большое!
Ermak
30.09.2011 14:33Ответ № 11
Вопрос закрыт!
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.