Имя: Пароль:
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
Ура получилось) всем спасибо) у меня просто строки и шапка было без ограничений справа. как только поставил все зароботало) Ещё раз всем огромное спасибо)
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn