Имя: Пароль:
1C
1С v8
Дублирование строк на макете в печатной форме
0 Валидатор
 
27.08.13
14:26
При выводе строк данные по колонкам ДатаИзвещения дублируются, в документе они берутся из табличной части одноименной графы, и получается следующая картина:
Номенклатура     Датаизвещения
Круг              01.01.2013
Ромб              01.02.2013
Квадрат           01.03.2013
в печатную форму в колонку извещение будет такой вывод:
Номенклатура      январь\ февраль\ март
Круг              2013
Ромб              2013    2013
Квадрат           2013    2013     2013
и т.д.
вот как сделать, чтобы не было такого дублирования? вот мой цикл, который заполняет печатную форму:
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Номер = Номер + 1 ;
        Строка.Параметры.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
        Строка.Параметры.Порядковый = Номер;
        Строка.Параметры.Закупка = ВыборкаДетальныеЗаписи.Закупка;
        Строка.Параметры.Артикул = ВыборкаДетальныеЗаписи.Артикул;
        Строка.Параметры.Количество = ВыборкаДетальныеЗаписи.Количество;
        Строка.Параметры.Сумма = ВыборкаДетальныеЗаписи.Цена * ВыборкаДетальныеЗаписи.Количество ;
        Строка.Параметры.ОКДП = ВыборкаДетальныеЗаписи.НоменклатураАртикул;
        Строка.Параметры.ЕдОКЕИ = ВыборкаДетальныеЗаписи.ЕдОКЕИ;
        Строка.Параметры.ОКАТОРегион = ВыборкаДетальныеЗаписи.КодОкато;
        Строка.Параметры.НаименованиеРегион = ВыборкаДетальныеЗаписи.Наименование;
        Строка.Параметры.Требования = ВыборкаДетальныеЗаписи.МинимальныеТребования;
        Строка.Параметры.ЕдНаименование = ВыборкаДетальныеЗаписи.ЕдиницаИзмеренияНаименование;
        Строка.Параметры.СпособЗакупки = ВыборкаДетальныеЗаписи.СпособЗакупки;
        
        //заполняем по дате планирования месяцы
        Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда
            Строка.Параметры.я = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy");    
        КонецЕсли;
        Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 2 Тогда
            Строка.Параметры.ф = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy");    
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 3 Тогда
            Строка.Параметры.март = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy");    
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 4 Тогда
            Строка.Параметры.апр = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy");    
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 5 Тогда
            Строка.Параметры.май = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy");    
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 6 Тогда
            Строка.Параметры.июнь = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy");    
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 7 Тогда
            Строка.Параметры.июль = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy");    
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 8 Тогда
            Строка.Параметры.авг = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy");    
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 9 Тогда
            Строка.Параметры.с = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy");    
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 10 Тогда
            Строка.Параметры.о = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy");    
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 11 Тогда
            Строка.Параметры.н = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy");    
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 12 Тогда
            Строка.Параметры.д = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy");    
        КонецЕсли;


        //заполняем по дате извещения месяцы
        Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 1  И  НЕ ВыборкаДетальныеЗаписи.ДатаИзвещения = '00010101'Тогда
            Строка.Параметры.январь = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");
        КонецЕсли;
        
        Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 2 Тогда
            Строка.Параметры.февраль = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 3 Тогда
            Строка.Параметры.мартИсп = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 4 Тогда
            Строка.Параметры.апрИсп = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 5 Тогда
            Строка.Параметры.майИсп = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 6 Тогда
            Строка.Параметры.июньИсп = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");    
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 7 Тогда
            Строка.Параметры.июльИсп = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");    
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 8 Тогда
            Строка.Параметры.авгИсп = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 9 Тогда
            Строка.Параметры.сентябрь = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");    
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 10 Тогда
            Строка.Параметры.октярь = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 11 Тогда
            Строка.Параметры.нобярь = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");
        КонецЕсли;

        Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 12 Тогда
            Строка.Параметры.декабрь = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");    
        КонецЕсли;

        //Строка.Параметры.ДатаПланирования = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy");
        //Строка.Параметры.ДатаИзвещения = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");
        ТабДок.Вывести(строка);
    КонецЦикла;
1 Wobland
 
27.08.13
14:28
я тебе ещё вчера сказал. делай две колонки про номенклатуру и месяц и присоединяй
2 Wobland
 
27.08.13
14:29
(1) в смысле две области
3 Валидатор
 
27.08.13
14:30
(2) а почему в одной области нельзя так?
4 Wobland
 
27.08.13
14:31
(3) в одной и нужно. а вот это явный г-код:
Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда
5 Валидатор
 
27.08.13
14:32
(4) втф? только что ты писал делать 2 области, я говорю можно ли в одной, ты говоришь в одной и нужно ? оО
6 Dimochka
 
27.08.13
14:34
(0) жесть, сделай одну область и присоединяй а цикле по месецам
7 Dimochka
 
27.08.13
14:35
месяцам*
8 Валидатор
 
27.08.13
14:36
убрать тогда в отдеьную область эти Даты косячные, и потом в цикле, где заполняю номенклатуру делать присоединение?
9 Dimochka
 
27.08.13
14:40
(8) Выведи вначале данные номенклатуры а потом в цикле присоедини по месяцам сумму количество и что там еще у тебя меняется
10 Валидатор
 
27.08.13
14:45
Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 1  И  НЕ ВыборкаДетальныеЗаписи.ДатаИзвещения = '00010101'Тогда
            Строка.Параметры.январь = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy");
        Иначе
            Строка.Параметры.январь = "";
        КонецЕсли;
вот так сделал для каждого месяца
11 Dimochka
 
27.08.13
16:41
(10) Сделай такую область (Шапка|Заголовок), (Шапка|Данные) (Подвал|Заголовок), (Подвал|Данные) и выводи в первом цикле в Подвал/Заголовок а во втором Присоединяй по периодам
    СписокЗначений = Новый СписокЗначений;
    СписокЗначений.Добавить("Январь");    
    СписокЗначений.Добавить("Февраль");    
    СписокЗначений.Добавить("Март");    
    СписокЗначений.Добавить("Апрель");    
    СписокЗначений.Добавить("Май");    
    СписокЗначений.Добавить("Июнь");    
    СписокЗначений.Добавить("Июль");    
    СписокЗначений.Добавить("Август");    
    СписокЗначений.Добавить("Сентябрь");    
    СписокЗначений.Добавить("Октябрь");    
    СписокЗначений.Добавить("Ноябрь");    
    СписокЗначений.Добавить("Декабрь");    
    
    Для м=1 по СписокЗначений.Количество() Цикл
        Значение = СписокЗначений.Получить(м);
    КонецЦикла;
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший