8.х Вопрос по работе с запросом

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем maritime, 8 июн 2011.

  1. TopicStarter Overlay
    maritime
    Offline

    maritime

    Регистрация:
    22 апр 2011
    Сообщения:
    26
    Симпатии:
    0
    Баллы:
    1
    Мне необходимо сравнить балансовую стоимость и износ по объекту ОС и по доработкам к этом объекту ОС.
    при этом, в зависимости от результата сравнения, выбрать дату прихода и срок полезного использования.

    в результате запроса почему-то в первом круге цикла выходит дата прихода и срок полезного действия(СПИ), а балансовая стоимость и износ выходят нулевыми.
    Во втором круге цикла к дате и СПИ добавляется балансовая стоимость, а износ остается нулевым
    В третьем круге цикла выходит износ а балансовая обнуляется.
    Сравнить их никак не получается и не могу понять почему по одному и тому же объекту не выходлят все параметры из запроса сразу.

    помогите пожалуйста!!!!

    Код:
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ПериодКонец",ПериодКонец);
    
    Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |	Софт_ОсновныеСредстваМеждународныйУчетСрезПоследних.СчетУчета Как Ссылка
    |ИЗ
    |	РегистрСведений.Софт_ОсновныеСредстваМеждународныйУчет.СрезПоследних(&ПериодКонец, ) КАК Софт_ОсновныеСредстваМеждународныйУчетСрезПоследних
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |	Софт_ОсновныеСредстваМеждународныйУчетСрезПоследних.СчетНачисленияАмортизации Как Ссылка
    |ИЗ
    |	РегистрСведений.Софт_ОсновныеСредстваМеждународныйУчет.СрезПоследних(&ПериодКонец, ) КАК Софт_ОсновныеСредстваМеждународныйУчетСрезПоследних";
    Результат = Запрос.ВыполнитьПакет();
    СчетаМСФО_01 = Результат[0].Выгрузить().ВыгрузитьКолонку("Ссылка");
    СчетаМСФО_02 = Результат[1].Выгрузить().ВыгрузитьКолонку("Ссылка");
    
    Состояние("Определение СПИ по доработкам");
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Счета01М",СчетаМСФО_01);
    Запрос.УстановитьПараметр("Счета02М",СчетаМСФО_02);
    Запрос.УстановитьПараметр("Период", Новый Граница(КонецДня(ПериодКонец),ВидГраницы.Включая));
    Запрос.УстановитьПараметр("ОсновноеСредство",ОсновноеСредство_ОсновноеМодернизируемое);
    Запрос.УстановитьПараметр("ПериодКонец",ПериодКонец);
    Запрос.УстановитьПараметр("Организация",Организация);
    Запрос.Текст = "ВЫБРАТЬ
    |	Софт_СвязанныеОсновныеСредстваСрезПоследних.ОсновноеСредство,
    |	Софт_СвязанныеОсновныеСредстваСрезПоследних.СвязанныеОсновныеСредства
    |ПОМЕСТИТЬ СвязанныеОС
    |ИЗ
    |	РегистрСведений.Софт_СвязанныеОсновныеСредства.СрезПоследних(&ПериодКонец, ОсновноеСредство = &ОсновноеСредство) КАК Софт_СвязанныеОсновныеСредстваСрезПоследних
    |ГДЕ
    |	Софт_СвязанныеОсновныеСредстваСрезПоследних.ВЭксплуатации = ИСТИНА
    //  |	И Софт_СвязанныеОсновныеСредстваСрезПоследних.ОсновноеСредство <> &ОсновноеСредство
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |	Софт_ПараметрыАмортизацииОСМеждународныйУчетСрезПоследних.ОсновноеСредство,
    |	Софт_ПараметрыАмортизацииОСМеждународныйУчетСрезПоследних.СрокИспользованияДляВычисленияАмортизации
    |ПОМЕСТИТЬ СрокСПИ_ОсновногоОС
    |ИЗ
    |	РегистрСведений.Софт_ПараметрыАмортизацииОСМеждународныйУчет.СрезПоследних(
    |			&ПериодКонец,
    |			Организация = &Организация
    |				И ОсновноеСредство = &ОсновноеСредство) КАК Софт_ПараметрыАмортизацииОСМеждународныйУчетСрезПоследних
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |	ХозрасчетныйОстатки.Субконто1 КАК ОсновноеСредство,
    |	ВЫБОР
    |		КОГДА ХозрасчетныйОстатки.Счет В (&Счета01М)
    |			ТОГДА ХозрасчетныйОстатки.СуммаОстатокДт
    |		ИНАЧЕ 0
    |	КОНЕЦ КАК БалансоваяСтоимостьОсновногоОС,
    |	ВЫБОР
    |		КОГДА ХозрасчетныйОстатки.Счет В (&Счета02М)
    |			ТОГДА ХозрасчетныйОстатки.СуммаОстатокКт
    |		ИНАЧЕ 0
    |	КОНЕЦ КАК СуммаИзносаОсновногоОС
    |ПОМЕСТИТЬ Стоимости_ОсновногоОС
    |ИЗ
    |	РегистрБухгалтерии.Хозрасчетный.Остатки(&ПериодКонец, , , Субконто1 = &ОсновноеСредство) КАК ХозрасчетныйОстатки
    |ГДЕ
    |	ХозрасчетныйОстатки.Субконто1 = &ОсновноеСредство
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |	Софт_СостоянияОСМеждународныйУчет.ОсновноеСредство,
    |	Софт_СостоянияОСМеждународныйУчет.ДатаСостояния,
    |	Софт_ПараметрыАмортизацииОСМеждународныйУчетСрезПоследних.СрокИспользованияДляВычисленияАмортизации,
    |	ВЫБОР
    |		КОГДА ХозрасчетныйОстатки.Счет В (&Счета01М)
    |			ТОГДА ХозрасчетныйОстатки.СуммаОстатокДт
    |		ИНАЧЕ 0
    |	КОНЕЦ КАК БалансоваяСтоимостьДоработки,
    |	ВЫБОР
    |		КОГДА ХозрасчетныйОстатки.Счет В (&Счета02М)
    |			ТОГДА ХозрасчетныйОстатки.СуммаОстатокКт
    |		ИНАЧЕ 0
    |	КОНЕЦ КАК СуммаИзносаДоработки
    |ПОМЕСТИТЬ СвязанныеОС_СДатойПринятияКУчету
    |ИЗ
    |	РегистрСведений.Софт_СостоянияОСМеждународныйУчет КАК Софт_СостоянияОСМеждународныйУчет
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Софт_ПараметрыАмортизацииОСМеждународныйУчет.СрезПоследних(
    |				&ПериодКонец,
    |				Организация = &Организация
    |					И ОсновноеСредство В
    |						(ВЫБРАТЬ
    |							СвязанныеОС.СвязанныеОсновныеСредства
    |						ИЗ
    |							СвязанныеОС КАК СвязанныеОС)) КАК Софт_ПараметрыАмортизацииОСМеждународныйУчетСрезПоследних
    |			ПОЛНОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки
    |			ПО (ХозрасчетныйОстатки.Субконто1 = Софт_ПараметрыАмортизацииОСМеждународныйУчетСрезПоследних.ОсновноеСредство)
    |		ПО Софт_СостоянияОСМеждународныйУчет.ОсновноеСредство = Софт_ПараметрыАмортизацииОСМеждународныйУчетСрезПоследних.ОсновноеСредство
    |ГДЕ
    |	Софт_СостоянияОСМеждународныйУчет.Организация = &Организация
    |	И Софт_СостоянияОСМеждународныйУчет.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОС.ПринятоКУчету)
    |	И Софт_СостоянияОСМеждународныйУчет.ОсновноеСредство В
    |			(ВЫБРАТЬ
    |				СвязанныеОС.СвязанныеОсновныеСредства
    |			ИЗ
    |				СвязанныеОС КАК СвязанныеОС)
    |	И ХозрасчетныйОстатки.Субконто1 В
    |			(ВЫБРАТЬ
    |				СвязанныеОС.СвязанныеОсновныеСредства
    |			ИЗ
    |				СвязанныеОС КАК СвязанныеОС)
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |	Софт_СостоянияОСМеждународныйУчет.ОсновноеСредство,
    |	Софт_СостоянияОСМеждународныйУчет.ДатаСостояния
    |ПОМЕСТИТЬ ОсновноеОС_СДатойПринятияКУчету
    |ИЗ
    |	РегистрСведений.Софт_СостоянияОСМеждународныйУчет КАК Софт_СостоянияОСМеждународныйУчет
    |ГДЕ
    |	Софт_СостоянияОСМеждународныйУчет.Организация = &Организация
    |	И Софт_СостоянияОСМеждународныйУчет.ОсновноеСредство = &ОсновноеСредство
    |	И Софт_СостоянияОСМеждународныйУчет.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияОС.ПринятоКУчету)
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |	СрокСПИ_ОсновногоОС.ОсновноеСредство КАК ОсновноеОС,
    |	СрокСПИ_ОсновногоОС.СрокИспользованияДляВычисленияАмортизации КАК СПИ_ОсновгоОС,
    |	СвязанныеОС_СДатойПринятияКУчету.ОсновноеСредство КАК СвязанноеОС,
    |	СвязанныеОС_СДатойПринятияКУчету.ДатаСостояния КАК ДатаПринятияКУчетуСвязанногоОС,
    |	СвязанныеОС_СДатойПринятияКУчету.СрокИспользованияДляВычисленияАмортизации КАК СПИ_СвязанногоОС,
    |	ОсновноеОС_СДатойПринятияКУчету.ДатаСостояния КАК ДатаПринятияКУчетуОсновногоОС,
    |	СвязанныеОС_СДатойПринятияКУчету.БалансоваяСтоимостьДоработки,
    |	СвязанныеОС_СДатойПринятияКУчету.СуммаИзносаДоработки,
    |	Стоимости_ОсновногоОС.БалансоваяСтоимостьОсновногоОС,
    |	Стоимости_ОсновногоОС.СуммаИзносаОсновногоОС
    |ИЗ
    |	СрокСПИ_ОсновногоОС КАК СрокСПИ_ОсновногоОС
    |		ЛЕВОЕ СОЕДИНЕНИЕ СвязанныеОС_СДатойПринятияКУчету КАК СвязанныеОС_СДатойПринятияКУчету
    |		ПО (ИСТИНА)
    |		ЛЕВОЕ СОЕДИНЕНИЕ ОсновноеОС_СДатойПринятияКУчету КАК ОсновноеОС_СДатойПринятияКУчету
    |		ПО СрокСПИ_ОсновногоОС.ОсновноеСредство = ОсновноеОС_СДатойПринятияКУчету.ОсновноеСредство,
    |	Стоимости_ОсновногоОС КАК Стоимости_ОсновногоОС";
    
    СрокСПИ = 0;
    КоличествоОС_Основных = 0;
    
    
    
    Выборка = Запрос.Выполнить().Выбрать();   //ОбходРезультатаЗапроса.ПоГруппировкам);
    Попытка
    Пока Выборка.Следующий() Цикл
    
    Если СрокСПИ = 0 Тогда
    СрокСПИ = СрокСПИ + Выборка.СПИ_ОсновгоОС;
    КоличествоОС_Основных = КоличествоОС_Основных + 1;
    КонецЕсли;
    
    
    Если Выборка.ДатаПринятияКУчетуСвязанногоОС = ДатаНачалаВеденияУчетаПоМСФОвНЕФАЗ и ЗначениеЗаполнено(ДатаНачалаВеденияУчетаПоМСФОвНЕФАЗ) Тогда
    СрокСПИ = СрокСПИ + Выборка.СПИ_СвязанногоОС;
    КоличествоОС_Основных = КоличествоОС_Основных + 1;
    КонецЕсли;
    
    Если Выборка.БалансоваяСтоимостьОсновногоОС=Выборка.СуммаИЗносаОсновногоОС Тогда
    ИзносСвязанногоОС=0;
    ВыборкаПоДоработкам = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Если ИзносСвязанногоОС=0 Тогда
    Пока ВыборкаПоДоработкам.Следующий() Цикл
    ИзносСвязанногоОС=ВыборкаПоДоработкам.БалансоваяСтоимостьДоработки-ВыборкаПоДоработкам.СуммаИзносаДоработки;
    КонецЦикла;	
    Иначе 
    Если ДатаУстановкиОсновногоОС = "" Тогда
    ДатаУстановкиОсновногоОС = Выборка.ДатаПринятияКУчетуСвязанногоОС;
    КонецЕсли;
    КонецЕсли;
    Иначе 	
    Если ДатаУстановкиОсновногоОС = "" Тогда
    ДатаУстановкиОсновногоОС = Выборка.ДатаПринятияКУчетуОсновногоОС;
    КонецЕсли;
    КонецЕсли;
    
    КонецЦикла;
    Исключение  ДатаУстановкиОсновногоОС = Выборка.ДатаПринятияКУчетуСвязанногоОС;
    
    КонецПопытки;
    
    Возврат ?(КоличествоОС_Основных = 0, 0,Окр( СрокСПИ / КоличествоОС_Основных,0,0));
    
    КонецФункции
    
    
    [warn="Внимание!"]
    Просьба пользоваться тегами!
    [/warn]
    Посмотреть вложение 7471

    Вложения:

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