Имя: Пароль:
1C
1С v8
Заполнение таблицы циклом.
0 progaoff
 
23.07.15
11:19
Ребята помогите проблему решить, ниже приведенный код, заполняет область детальных записей. Но отображает дату одним числом, допустим если это 06.07 а в таблице 6


Макет = ПолучитьМакет("Макет");
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("КонПериода", КонПериода);
    Запрос.УстановитьПараметр("НачПериода", НачПериода);
    Запрос.УстановитьПараметр("Организация", Организация);

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
       ТабДок=ЭлементыФормы.ПолеТабличногоДокумента1;
    ТабДок.Очистить();
        ОбластьЗаголовок.Параметры.Организация=Организация;
    ОбластьЗаголовок.Параметры.Период=ПредставлениеПериода(НачалоДня(НачПериода),КонецДня(КонПериода),"ФП = Истина");

    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();

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

            ВыборкаДетальныеЗаписи = Результат.Выбрать();
            ОбластьДетальныхЗаписей.Параметры.План="План"+Должность;
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                Ном=ДеньНедели(ВыборкаДетальныеЗаписи.День);
                Если j=1 Тогда
                    ОбластьДетальныхЗаписей.Параметры["День"+Ном]=ВыборкаДетальныеЗаписи.КоличествоМастеровВСмену;
                Иначе
                    ОбластьДетальныхЗаписей.Параметры["День"+Ном]=ВыборкаДетальныеЗаписи.КоличествоМастеровМаникюра;
                КонецЕсли;
            КонецЦикла;
            ТабДок.Вывести(ОбластьДетальныхЗаписей);
            ВыборкаДетальныеЗаписи.Сбросить();
            
            ВерхОбъединения=ТабДок.ВысотаТаблицы;
            Область=ТабДок.Область("R"+ВерхОбъединения+"C2:R"+ВерхОбъединения+"C23");
            Область.Шрифт=Новый Шрифт(, , Истина, , , );
            ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
            ОбластьДетальныхЗаписей.Параметры.План="Факт по датам июль"+Должность +Символы.ПС+" (дата/количество мастеров)";
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                Ном=ДеньНедели(ВыборкаДетальныеЗаписи.День);  
                ОбластьДетальныхЗаписей.Параметры["День"+Ном] = День(ВыборкаДетальныеЗаписи.День);
                ОбластьДетальныхЗаписей.Параметры["Кол"+Ном] = ВыборкаДетальныеЗаписи.КвоСпециалистов;
                Область=ОбластьДетальныхЗаписей.Область("R1C"+(Ном+3)+":R1C"+(Ном+3));
                Если j=1 Тогда
                Если ВыборкаДетальныеЗаписи.КвоСпециалистов<>ВыборкаДетальныеЗаписи.КоличествоМастеровВСмену Тогда
                    Область.ЦветТекста=WebЦвета.Красный;
                Иначе
                    Область.ЦветТекста=WebЦвета.Черный;
                КонецЕсли;
                Иначе
                Если ВыборкаДетальныеЗаписи.КвоСпециалистов<>ВыборкаДетальныеЗаписи.КоличествоМастеровМаникюра Тогда
                    Область.ЦветТекста=WebЦвета.Красный;
                Иначе
                    Область.ЦветТекста=WebЦвета.Черный;
                КонецЕсли;
                КонецЕсли;
                Если Ном=7 Тогда
                    ТабДок.Вывести(ОбластьДетальныхЗаписей);
                    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
                    ОбластьДетальныхЗаписей.Параметры.План="Факт по датам"+Должность;
                КонецЕсли;
            КонецЦикла;
            ТабДок.Вывести(ОбластьДетальныхЗаписей);
            НизОбъединения=ТабДок.ВысотаТаблицы;
            Область=ТабДок.Область("R"+(ВерхОбъединения+1)+"C2:R"+НизОбъединения+"C2");
            Область.Объединить();
            ТабДок.ЗакончитьАвтогруппировкуСтрок();
        КонецЦикла;
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
1 palpetrovich
 
23.07.15
11:22
ты пальцем хоть-бы ткнул где твоя дата в печФорсу передается... ну честнослово лень в простыне этой рыться
2 salvator
 
23.07.15
11:25
Наверно поэтому, не?
ОбластьДетальныхЗаписей.Параметры["День"+Ном] = День(ВыборкаДетальныеЗаписи.День);
3 Галахад
 
гуру
23.07.15
11:25
Там русским по белому написано, выводить день вместо даты.
4 progaoff
 
23.07.15
11:51
Подскажите как переделать???
5 Mankubus
 
23.07.15
11:52
ОбластьДетальныхЗаписей.Параметры["День"+Ном] = ВыборкаДетальныеЗаписи.День;
6 progaoff
 
23.07.15
12:05
{Форма.ФормаОтчета.Форма(84)}: Поле объекта не обнаружено (День8)
                    ОбластьДетальныхЗаписей.Параметры["День"+Ном]=ВыборкаДетальныеЗаписи.КоличествоМастеровВСмену;
Вот такую фигню выдает
7 progaoff
 
23.07.15
12:25
{Форма.ФормаОтчета.Форма(99)}: Поле объекта не обнаружено (Дата02.07.2015 0:00:00)
                ОбластьДетальныхЗаписей.Параметры["Дата"+Ном]= ОбластьДетальныхЗаписей;
Вот такую
8 Лефмихалыч
 
23.07.15
12:28
Не твое это. Бросай
9 progaoff
 
23.07.15
12:30
Вумный да?
10 progaoff
 
23.07.15
12:31
Вот это совет! Спасибо! Я же не знал что мне делать! Вот он просветитель мой!
11 salvator
 
23.07.15
12:32
(10) Спокуха. Тебе в (5) дали ответ. Измени одну строчку.
12 progaoff
 
23.07.15
12:35
Поменял, вылезла ошибка, {Форма.ФормаОтчета.Форма(99)}: Поле объекта не обнаружено (Дата02.07.2015 0:00:00)
                ОбластьДетальныхЗаписей.Параметры["Дата"+Ном]= ОбластьДетальныхЗаписей;
13 hhhh
 
23.07.15
12:37
ОбластьДетальныхЗаписей.Параметры["Дата"+Ном]= ОбластьДетальныхЗаписей;

переходи на более легкие наркотики
14 salvator
 
23.07.15
12:38
(12) Еще раз посмотри как написано в (5). Найди 10 отличий.
15 salvator
 
23.07.15
12:38
И определение переменной "Ном" не трогай.
Одну строчку поменяй. Одну, Карл!
16 progaoff
 
23.07.15
12:43
Так я и не трогал, поменял одну строчку..
17 Alexperumov
 
23.07.15
12:45
(16) ОбластьДетальныхЗаписей.ДЕНЬ - ты точно  ДЕНЬ написал?
18 Alexperumov
 
23.07.15
12:46
(17)  Т.Е. ВыборкаДетальныеЗаписи.День ))
19 progaoff
 
23.07.15
12:47
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                Ном=День(ВыборкаДетальныеЗаписи.День);  
                ОбластьДетальныхЗаписей.Параметры["День"+Ном] = ВыборкаДетальныеЗаписи.День;
                ОбластьДетальныхЗаписей.Параметры["Кол"+Ном] = ВыборкаДетальныеЗаписи.КвоСпециалистов;
                Область=ОбластьДетальныхЗаписей.Область("R1C"+(Ном+3)+":R1C"+(Ном+3));
                Если j=1 Тогда
                Если ВыборкаДетальныеЗаписи.КвоСпециалистов<>ВыборкаДетальныеЗаписи.КоличествоМастеровВСмену Тогда
                    Область.ЦветТекста=WebЦвета.Красный;
                Иначе
                    Область.ЦветТекста=WebЦвета.Черный;
                КонецЕсли;
20 progaoff
 
23.07.15
12:47
Да
21 salvator
 
23.07.15
12:48
(16) Не звизди.
У тебя
Ном=ДеньНедели(ВыборкаДетальныеЗаписи.День);
Возвращается число, а никак не дата.
22 progaoff
 
23.07.15
12:49
Ном=ДеньНедели(ВыборкаДетальныеЗаписи.День);
На вот это Ном=День(ВыборкаДетальныеЗаписи.День);
Я поменял только что
23 salvator
 
23.07.15
12:49
(22) Молодец.
24 hhhh
 
23.07.15
12:56
(22) ну тогда чему удивляешься? Программа правильно пишет. В неделе 7 дней. А ты ей суёшь День8. Она офигевает.
25 progaoff
 
23.07.15
13:02
Блин ступил и правда....спасибо большое.