Имя: Пароль:
1C
1С v8
Правильно ли?
, ,
0 Новичёк123123
 
11.08.11
18:43
Доброго времени суток) Написал один отчетик, старший сказал что в принципе работает, но написано не правильно. Вопрос прав ли старший?


Код

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

   СП=Новый СписокЗначений;
   СП.Добавить(ПланыСчетов.Хозрасчетный.МашиныИОборудование);
   СП.Добавить(ПланыСчетов.Хозрасчетный.ТранспортныеСредства);
   СП.Добавить(ПланыСчетов.Хозрасчетный.ИнструментыПриборыИИнвентарь);
   
   Если Месяц(ДатаКон)-Месяц(ДатаНач)<0 Тогда
       КоличествоМесяцев=Месяц(ДатаКон)-Месяц(ДатаНач)+12
   Иначе КоличествоМесяцев=Месяц(ДатаКон)-Месяц(ДатаНач);
   КонецЕсли;    
   
   Запрос.УстановитьПараметр("Дата", новый Граница(КонецДня(ДатаКон),ВидГраницы.Включая));
   Запрос.УстановитьПараметр("Организация", Организация);
   Запрос.УстановитьПараметр("Счет", СП);
   КолМес=КоличествоМесяцев+1;
   Запрос.УстановитьПараметр("КоличествоМесяцев", КолМес);
   
   Результат=Запрос.Выполнить();
   Результат=Результат.Выбрать();
   ТабДок=ЭлементыФормы.ТабДок;
   ТабДок.Очистить();
   Макет=ПолучитьМакет("Макет");
   ОбластьШапки=Макет.ПолучитьОбласть("Шапка");
   ОбластьМесяца=Макет.ПолучитьОбласть("Месяц");
   ОбластьСтроки=Макет.ПолучитьОбласть("Строка");
   ОбластьАмортизации=Макет.ПолучитьОбласть("Амортизация");
   ОбластьПродолженияСтроки=Макет.ПолучитьОбласть("ПродолжениеСтроки");
   ОбластьПодстроки=Макет.ПолучитьОбласть("Подстрока");
   ОбластьШапки.Параметры.Организация=Организация;
   ОбластьШапки.Параметры.ДатаНач=ДатаНач;
   ОбластьШапки.Параметры.ДатаКон=ДатаКон;
   ТабДок.Вывести(ОбластьШапки);
   
   Для Сч=0 По КоличествоМесяцев  Цикл
       Если Месяц(ДатаНач)=01 Тогда Месяц="Январь";
       ИначеЕсли Месяц(ДатаНач)=02 Тогда Месяц="Фефраль";
       ИначеЕсли Месяц(ДатаНач)=03 Тогда Месяц="Март";
       ИначеЕсли Месяц(ДатаНач)=04 Тогда Месяц="Апрель";
       ИначеЕсли Месяц(ДатаНач)=05 Тогда Месяц="Май";
       ИначеЕсли Месяц(ДатаНач)=06 Тогда Месяц="Июнь";
       ИначеЕсли Месяц(ДатаНач)=07 Тогда Месяц="Июль";
       ИначеЕсли Месяц(ДатаНач)=08 Тогда Месяц="Август";
       ИначеЕсли Месяц(ДатаНач)=09 Тогда Месяц="Сентябрь";
       ИначеЕсли Месяц(ДатаНач)=10 Тогда Месяц="Октябрь";
       ИначеЕсли Месяц(ДатаНач)=11 Тогда Месяц="Ноябрь";
       ИначеЕсли Месяц(ДатаНач)=12 Тогда Месяц="Декабрь";
       КонецЕсли;
       ОбластьМесяца.Параметры.Месяц=Месяц;
       ТабДок.Присоединить(ОбластьМесяца);
       ДатаНач=ДобавитьМесяц(ДатаНач,1);                                                
   КонецЦикла;
   ОбластьПродолженияШапки=Макет.ПолучитьОбласть("ПродолжениеШапки");
   ОбластьПродолженияШапки.Параметры.ДатаКон=ДатаКон;
   ТабДок.Присоединить(ОбластьПродолженияШапки);
   
   Пока Результат.Следующий()=1 Цикл
               ОбластьСтроки.Параметры.ОсновноеСредство=Результат.ОсновноеСредство;
               ОбластьСтроки.Параметры.ИнвНом=Результат.ИнвНом;
               Если ЗначениеЗаполнено(Результат.ОсновноеСредство)=1 Тогда
                   ОбластьСтроки.Параметры.СчетУчета=Результат.Счет;
                   ОбластьСтроки.Параметры .СпособНачисления=Результат.СпособНачисленияАмортизации;
                   ОбластьСтроки.Параметры.ПервоначальнаяСтоимость=Результат.ПервоначальнаяСтоимость;
                   ОбластьСтроки.Параметры.ЛиквидационнаяСтоимость=Результат.ЛиквидационнаяСтоимость;
                   ОбластьСтроки.Параметры.СрокПолезногоИспользования=Результат.СрокПолезногоИспользования;
                   ОбластьСтроки.Параметры.ИспользованиеДляВычисленияАмортизации=Результат.ИспользованиеДляВычисленияАмортизации;
                   ОбластьСтроки.Параметры.ОстаточнаяСтоимостьНач=Результат.ОстаточнаяСтоимостьНач;
                   ТабДок.Вывести(ОбластьСтроки);
                   Для Сч=0 По КоличествоМесяцев  Цикл
                         ОбластьАмортизации.Параметры.АмортизацияЗаМесяц=Окр(Результат.АмортизацияЗаМесяц,3);
                       ТабДок.Присоединить(ОбластьАмортизации);
                   КонецЦикла;
                   ОбластьПродолженияСтроки.Параметры.АмортизацияНаКонецПериода=Окр(Результат.СуммаАмортизации,3);
                   ОбластьПродолженияСтроки.Параметры.ОстаточнаяСтоимостьКон=Окр(Результат.ОстаточнаяСтоимость,3);
                   ТабДок.Присоединить(ОбластьПродолженияСтроки);
               Иначе
                   ЦифраСчета=Прав(Результат.Счет,1);
                   ОбластьСтроки.Параметры.СчетУчета="131"+ЦифраСчета;
                   ОбластьСтроки.Параметры.ПервоначальнаяСтоимость=Результат.ПервоначальнаяСтоимость;
                   ОбластьСтроки.Параметры.ЛиквидационнаяСтоимость=Результат.ЛиквидационнаяСтоимость;
                   ОбластьСтроки.Параметры.ОстаточнаяСтоимостьНач=Результат.ОстаточнаяСтоимостьНач;
                   ТабДок.Вывести(ОбластьСтроки);
                       Для Сч=0 По КоличествоМесяцев  Цикл
                           ОбластьАмортизации.Параметры.АмортизацияЗаМесяц=Окр(Результат.АмортизацияЗаМесяц,3);
                           ТабДок.Присоединить(ОбластьАмортизации);
                       КонецЦикла;
                   ОбластьПродолженияСтроки.Параметры.АмортизацияНаКонецПериода=Окр(Результат.СуммаАмортизации,3);
                   ОбластьПродолженияСтроки.Параметры.ОстаточнаяСтоимостьКон =Окр(Результат.ОстаточнаяСтоимость,3);
                   ТабДок.Присоединить(ОбластьПродолженияСтроки);
               КонецЕсли;
   КонецЦикла;
   ТабДок.Показать("Отчет по амортизации");
КонецПроцедуры


макет: http://saveimg.ru/show-image.php?id=0460f62b97ea5c72171b0291d0065408
1 iamnub
 
11.08.11
18:44
Старший всегда прав.
2 Родной
 
11.08.11
18:46
а не судьба спросить что не правильно ?
3 Новичёк123123
 
11.08.11
18:48
Спросил Говорит что как бы раз работает то не плохо, но

Пока Результат.Следующий()=1 Цикл
               ОбластьСтроки.Параметры.ОсновноеСредство=Результат.ОсновноеСредство;
               ОбластьСтроки.Параметры.ИнвНом=Результат.ИнвНом;
               Если ЗначениеЗаполнено(Результат.ОсновноеСредство)=1 Тогда
                   ОбластьСтроки.Параметры.СчетУчета=Результат.Счет;
                   ОбластьСтроки.Параметры .СпособНачисления=Результат.СпособНачисленияАмортизации;
                   ОбластьСтроки.Параметры.ПервоначальнаяСтоимость=Результат.ПервоначальнаяСтоимость;
                   ОбластьСтроки.Параметры.ЛиквидационнаяСтоимость=Результат.ЛиквидационнаяСтоимость;
                   ОбластьСтроки.Параметры.СрокПолезногоИспользования=Результат.СрокПолезногоИспользования;
                   ОбластьСтроки.Параметры.ИспользованиеДляВычисленияАмортизации=Результат.ИспользованиеДляВычисленияАмортизации;
                   ОбластьСтроки.Параметры.ОстаточнаяСтоимостьНач=Результат.ОстаточнаяСтоимостьНач;
                   ТабДок.Вывести(ОбластьСтроки);
                   Для Сч=0 По КоличествоМесяцев  Цикл
                          ОбластьАмортизации.Параметры.АмортизацияЗаМесяц=Окр(Результат.АмортизацияЗаМесяц,3);
                       ТабДок.Присоединить(ОбластьАмортизации);
                   КонецЦикла;
                   ОбластьПродолженияСтроки.Параметры.АмортизацияНаКонецПериода=Окр(Результат.СуммаАмортизации,3);
                   ОбластьПродолженияСтроки.Параметры.ОстаточнаяСтоимостьКон=Окр(Результат.ОстаточнаяСтоимость,3);
                   ТабДок.Присоединить(ОбластьПродолженияСтроки);
               Иначе
                   ЦифраСчета=Прав(Результат.Счет,1);
                   ОбластьСтроки.Параметры.СчетУчета="131"+ЦифраСчета;
                   ОбластьСтроки.Параметры.ПервоначальнаяСтоимость=Результат.ПервоначальнаяСтоимость;
                   ОбластьСтроки.Параметры.ЛиквидационнаяСтоимость=Результат.ЛиквидационнаяСтоимость;
                   ОбластьСтроки.Параметры.ОстаточнаяСтоимостьНач=Результат.ОстаточнаяСтоимостьНач;
                   ТабДок.Вывести(ОбластьСтроки);
                       Для Сч=0 По КоличествоМесяцев  Цикл
                           ОбластьАмортизации.Параметры.АмортизацияЗаМесяц=Окр(Результат.АмортизацияЗаМесяц,3);
                           ТабДок.Присоединить(ОбластьАмортизации);
                       КонецЦикла;
                   ОбластьПродолженияСтроки.Параметры.АмортизацияНаКонецПериода=Окр(Результат.СуммаАмортизации,3);
                   ОбластьПродолженияСтроки.Параметры.ОстаточнаяСтоимостьКон =Окр(Результат.ОстаточнаяСтоимость,3);
                   ТабДок.Присоединить(ОбластьПродолженияСтроки);
               КонецЕсли;

нужно было бы выразить через группировки. А по мне так зачем когда там можно условием обойтись.
4 unregistered
 
11.08.11
18:48
(0) Ссылка на макет битая
5 Новичёк123123
 
11.08.11
18:49
<a href='http://saveimg.ru/show-image.php?id=0460f62b97ea5c72171b0291d0065408'>; <img src='http://saveimg.ru/thumbnails/11-08-11/3212cbd483cbbd38cdb75b871c8e4122.JPG' alt='загрузи изображение бесплатно' border='0'> </a>
6 Новичёк123123
 
11.08.11
18:49
7 Новичёк123123
 
11.08.11
18:49
вот последняя работает
8 zladenuw
 
11.08.11
18:51
а печатную форму отчета покаж
9 unregistered
 
11.08.11
18:55
Что-то я с месяцами ни фига не понял. Там что в каждый месяц одна и та же цифирь кладется? А занафига? А если в разных месяцах разная сумма амортизации реально была (модернизации там всякие)?
10 Новичёк123123
 
11.08.11
18:55
http://saveimg.ru/show-image.php?id=2bf382f14ac95d3975ffac812ceca54e

при прямолинейной амортизации сумма одинакова на все месяца)
11 unregistered
 
11.08.11
18:59
(10) >> при прямолинейной амортизации сумма одинакова на все месяца)

Что за бред?

А если ты модернизировал основное средство через год с начала его эксплуатации?

У тебя стопудово измениться его стоимость для начисления амортизации. А вот срок полезного использования может остаться и неизменным или измениться непропорционально изменению стоимости.
12 Новичёк123123
 
11.08.11
19:02
примем за аксиому, что модернизация ОС проводиться не будет
13 unregistered
 
11.08.11
19:04
(12) Тебе бухи мамой клялись? Ну, ну....
14 Новичёк123123
 
11.08.11
19:05
(13) Проверкой налоговой поклялись)
15 unregistered
 
11.08.11
19:14
(14) Верить бухам в таких впросах - большая ошибка. Поймешь когда тебя в грубой форме поимеют за неправильно работающий отчет, а твои слова типа "ну вы же сами мне обещали" ни кто слушать не будет.


По сути вопроса в (0): старший прав. правильнее через обход по группировкам. Ошибка может быть в том, что если в регистре нарисуются записи с пустым значением Субконто1, твой отчет воспримет это как итоговую строку по счету. Конечно если учет ведется правильно, то таких записей быть не должно, но чисто технически такое вполне допустимо и возможно.
16 Новичёк123123
 
11.08.11
19:16
понятно) спасибо) Старший тоже передал спасибо)
17 Mnemonic1C
 
11.08.11
19:55
(0) Правильные отчета всегда пишутся на СКД
18 zladenuw
 
11.08.11
19:56
(17) ну да и про построитесь отчета скажи забыли :)