Имя: Пароль:
1C
1С v8
Проблема с колонками
0 Новичёк123123
 
06.08.11
14:27
Доброго времени суток) такая беда нужно вывести от чет по амортизации в котором должны быть колонки по месяцам, количество этих колонок выбирается из количества месяцев в указанном периоде

макет выглядит так http://saveimg.ru/show-image.php?id=45d2267efb71b98fff3c6863e90f60f9

сам код

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


а на выходе получаю
http://saveimg.ru/show-image.php?id=c42690ccfd50234fa5c99dcff8178bdc
вот в этом собственно и беда? Быть может попробовать выделять не всю колонку а просто область привязывать к строке?
1 DSSS
 
06.08.11
15:01
//ТабДок.Присоеденить зря закомментировал. Организуй цикл и в нем присоединить.
2 Новичёк123123
 
08.08.11
09:45
Спасибо) вопрос а если присоединить оно будет для каждой строчки писать амотртизацию за месяц?
3 vicof
 
08.08.11
09:48
(1) ПрисоедЕнить не заработает
4 Новичёк123123
 
08.08.11
09:52
ТабДок.Присоеденить(ТабДок,1,ОбластьСтроки,1);
а что тут не правильно? выдаёт такую ошибку:


{Форма.ФормаОтчета(67)}: Метод объекта не обнаружен (Присоеденить)
               ТабДок.Присоеденить(ТабДок,1,ОбластьСтроки,1);
5 hhhh
 
08.08.11
09:54
(4) приколол
6 Wobland
 
08.08.11
09:54
(4) феерично!
7 Wobland
 
08.08.11
09:55
8 Новичёк123123
 
08.08.11
09:56
ааа всё увидел) Да действительно лох((
9 Новичёк123123
 
08.08.11
10:54
Понимаю что уже наглость, но не могли бы ещё раз подскать

ставлю при выводе шапки

ОбластьШапки=Макет.ПолучитьОбласть("Шапка");
   ОбластьМесяца=Макет.ПолучитьОбласть("Месяц");
   ОбластьСтроки=Макет.ПолучитьОбласть("Строка");
   ОбластьШапки.Параметры.Организация=Организация;
   ТабДок.Вывести(ОбластьШапки);
   
   //Заполним шапку один раз что бы как дебилы не заполнять её каждый раз
   Пока ДатаНач<ДатаКон=1 Цикл
       ОбластьМесяца=Макет.ПолучитьОбласть("Шапка|Месяц");
       ОбластьМесяца.Параметры.Месяц=Месяц(ДатаНач);
       ТабДок.Присоединить(ТабДок,1,"Строка",Ложь);
       ДатаНач=ДобавитьМесяц(ДатаНач,1);
   КонецЦикла;
виснет и пишет недостаточно памяти
10 Новичёк123123
 
08.08.11
10:55
забыл коментарий удалить извините(
11 hhhh
 
08.08.11
10:58
(9)

   Пока ДатаНач<ДатаКон=1 Цикл

это что за иероглифы? Почему ДатаКон = 1?
12 salvator
 
08.08.11
11:00
(9) Для Сч=0 По КоличествоМесяцев Цикл
...
А количество месяцев, надеюсь, знаешь как получить...
13 Новичёк123123
 
08.08.11
11:01
Ага понял спасибо) ща попробую)
14 salvator
 
08.08.11
11:02
Еще вот тут

ОбластьМесяца.Параметры.Месяц=Месяц(ДатаНач);

у тебя один и тот же месяц будет. Нужно в цикле прибавлять к ДатаНач по 1-му месяцу
15 Новичёк123123
 
08.08.11
11:42
КоличествоМесяцев=Месяц(ДатаКон)-Месяц(ДатаНач);
   Для Сч=0 По КоличествоМесяцев  Цикл
       ОбластьМесяца=Макет.ПолучитьОбласть("Месяц");
       ОбластьМесяца.Параметры.Месяц=Месяц(ДатаНач);
       ТабДок.Присоединить(ТабДок,1,"Строка",Ложь);
       ДатаНач=ДобавитьМесяц(ДатаНач,1);
   КонецЦикла;
всё равно пишет недостаточно памяти(
16 Wobland
 
08.08.11
11:44
Месяц(ДатаКон)-Месяц(ДатаНач) что даст, если ДатаКон январь, а ДатаНач декабрь?
17 Новичёк123123
 
08.08.11
11:46
так оно выдаёт ошибку даже если Месяц(ДатаКон)-Месяц(ДатаНач)=2
18 Wobland
 
08.08.11
11:54
(17) это я не к тому, что в этом ошибка, а к тому, что делай правильно. КоличествоМесяцев=?(Месяц(ДатаКон)-Месяц(ДатаНач)<0, Месяц(ДатаКон)-Месяц(ДатаНач)+12, Месяц(ДатаКон)-Месяц(ДатаНач)); или как-то так
19 Новичёк123123
 
08.08.11
11:55
а понял)

делаю вот так работает
КоличествоМесяцев=Месяц(ДатаКон)-Месяц(ДатаНач);
   Для Сч=0 По КоличествоМесяцев  Цикл
       ОбластьМесяца=Макет.ПолучитьОбласть("Месяц");
       ОбластьМесяца.Параметры.Месяц=Месяц(ДатаНач);
       ТабДок.Вывести(ОбластьМесяца);
       //ТабДок.Присоединить(ТабДок,1,"Строка",Ложь);
       ДатаНач=ДобавитьМесяц(ДатаНач,1);
   КонецЦикла;
я что то не то написал в присоеденить?
20 Wobland
 
08.08.11
11:55
(17) кстати, если Месяц(ДатаКон)-Месяц(ДатаНач)=2, то цикл отработает три раза. так и надо, да?
21 Новичёк123123
 
08.08.11
11:55
присоединить*
22 salvator
 
08.08.11
11:55
(17) Сделай правильный расчет месяца, убери из цикла получение области
23 Новичёк123123
 
08.08.11
12:13
Если Месяц(ДатаКон)-Месяц(ДатаНач)<0 Тогда
       КоличествоМесяцев=Месяц(ДатаКон)-Месяц(ДатаНач)+12
   Иначе КоличествоМесяцев=Месяц(ДатаКон)-Месяц(ДатаНач);
   КонецЕсли;    
   
   Для Сч=0 По КоличествоМесяцев  Цикл
       ОбластьМесяца.Параметры.Месяц=Месяц(ДатаНач);
       //ТабДок.Вывести(ОбластьМесяца);
       ТабДок.Присоединить(ТабДок,1,"Шапка",Ложь);
       ДатаНач=ДобавитьМесяц(ДатаНач,1);
   КонецЦикла;

я не правильно написал присоединить?
24 Wobland
 
08.08.11
12:17
а имя группы тебе зачем?
25 hhhh
 
08.08.11
12:21
(23) у тебя Сч всегда = 0. Бесконечный цикл. В советское время за это сразу к стенке ставили.
26 Новичёк123123
 
08.08.11
12:22
капец я криворукий я писал  ТабДок.Присоединить(ТабДок,1,"Шапка",Ложь);

а надо было
ТабДок.Присоединить(Область месяца);

Не не бесконечный там все нормально, я просто к таб док присоеденял сам таб док. вот он и переполнялся. так что меня пока не растреляют)
27 Новичёк123123
 
08.08.11
12:23
Только терь новый вопрос он отступает одну колонку а потом выводит месяцы. Почему?)
28 salvator
 
08.08.11
12:32
(25) В этой конструкции Сч автоматически на единицу увеличивается.
(27)
ОбластьМесяц = ТабДок.ПолучитьОбласть("ИмяСекцииШапки|ИмяСекцииМесяц");
Для Сч=0 По КоличествоМесяцев  Цикл
    ОбластьМесяца.Параметры.Месяц=НазваниеМесяца;
    ТабДок.Присоединить(ОбластьМесяц);
КонецЦикла;
29 Новичёк123123
 
08.08.11
13:17
Ура получилось) всем спасибо) у меня просто строки и шапка было без ограничений справа. как только поставил все зароботало) Ещё раз всем огромное спасибо)