Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по Группировке и выводу секций.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Flexy
Привет. ТИС 7.7.
Пишу обработку печати ценников.
И столкнулся с проблемой.

Необходимо видеть ценник в таком виде:



Что-то у меня не получается присоединить 4 экземпляра ценника и так далее на каждой строке.Сейчас они у меня выводятся линейно, вниз.:

Вот так:



Я уже и присоединять секции пробовал, но что-то не выходит ни как.

Код:

Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Обрабатывать НеПомеченныеНаУдаление;
    |Бренд = Регистр.ОстаткиТоваров.Товар.Бренд;
    |ПодБренд = Регистр.ОстаткиТоваров.Товар.ПодБренд;
    |Товар = Регистр.ОстаткиТоваров.Товар;
    |ОстатокТовара = Регистр.ОстаткиТоваров.ОстатокТовара;
    |Склад = Регистр.ОстаткиТоваров.Склад;
    |Фирма = Регистр.ОстаткиТоваров.Фирма;
    |Функция ОстатокТовараКонОст = КонОст(ОстатокТовара);
    |Группировка Склад;
    |Группировка Бренд без групп;
    |Группировка ПодБренд без групп;
    |Группировка Товар без групп;
    
    |Условие(Товар в ВыбТовар);
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
      
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Ценники");
    
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);

    Пока Запрос.Группировка(1) = 1 Цикл     //Склад
    Пока Запрос.Группировка(2) = 1 Цикл     //Бренд
    Пока Запрос.Группировка(3) = 1 Цикл     //ПодБренд    
              
            Таб.ВывестиСекцию("Бренд");
            Таб.ВывестиСекцию("Подбренд");
            
            Пока Запрос.Группировка(4) = 1 Цикл     //Товар
            Таб.ВывестиСекцию("Товар");
          
        КонецЦикла;
    КонецЦикла;
КонецЦикла;
КонецЦикла;





Заранее спасибо.
Vofka
Пока Запрос.Группировка(1) = 1 Цикл     //Склад
  Пока Запрос.Группировка(2) = 1 Цикл     //Бренд
    Пока Запрос.Группировка(3) = 1 Цикл     //ПодБренд    
            Пока Запрос.Группировка(4) = 1 Цикл     //Товар
                Таб.ВывестиСекцию("Бренд");
                Таб.ВывестиСекцию("Подбренд");
                Таб.ВывестиСекцию("Товар");
            КонецЦикла;
    КонецЦикла;
  КонецЦикла;
КонецЦикла;
Flexy
Цитата(Vofka @ 27.06.12, 13:14) необходимо зарегистрироваться для просмотра ссылки
Пока Запрос.Группировка(1) = 1 Цикл     //Склад
  Пока Запрос.Группировка(2) = 1 Цикл     //Бренд
    Пока Запрос.Группировка(3) = 1 Цикл     //ПодБренд    
            Пока Запрос.Группировка(4) = 1 Цикл     //Товар
                Таб.ВывестиСекцию("Бренд");
                Таб.ВывестиСекцию("Подбренд");
                Таб.ВывестиСекцию("Товар");
            КонецЦикла;
    КонецЦикла;
  КонецЦикла;
КонецЦикла;

Так не покатит.Нужно видеть товар сгруппированный по Бренду и ПодБренду.
Vofka
А можно картинку "как надо"?
mister-x
а так
Пока Запрос.Группировка(1) = 1 Цикл     //Склад
  Пока Запрос.Группировка(2) = 1 Цикл     //Бренд
      Таб.ВывестиСекцию("Бренд");
    Пока Запрос.Группировка(3) = 1 Цикл     //ПодБренд
          Таб.ВывестиСекцию("Подбренд");    
             Пока Запрос.Группировка(4) = 1 Цикл     //Товар
                Таб.ВывестиСекцию("Товар");
            КонецЦикла;
    КонецЦикла;
  КонецЦикла;
КонецЦикла;
Flexy
Цитата(Vofka @ 27.06.12, 13:38) необходимо зарегистрироваться для просмотра ссылки
А можно картинку "как надо"?


endru
А не пробовали

ПрисоединитьСекцию(<ИмяСекции>)
Flexy
Цитата(endru @ 27.06.12, 13:59) необходимо зарегистрироваться для просмотра ссылки
А не пробовали

ПрисоединитьСекцию(<ИмяСекции>)

Пробовал.Но получается черти что.Может что-то не правильно делал, хз...
endru
Присоединение работает по горизонтали
то есть "Вывестисекцию" потом 3 раза "присоединитьсекцию"
получится первая строка

потом опять "вывестисекцию" и тд.

само собой если какието поля пустые то их также нужно выводить
возможно в запросе нужно указать ВсеВошедшиеВзапрос чтобы и пустые поля в группировке были
mister-x
А якщо підбрендів у бренда буде декілька, тоді картинка ця необходимо зарегистрироваться для просмотра ссылки буде іншою. Чи можливо таке?
Помилився - тією ж, колонки С і D про це говорять.
і ВывестиСекцию(<ИмяСекции>) і ПрисоединитьСекцию(<ИмяСекции>) і додаткові змінні для перевірки потрібні (для того щоб знати чи ПрисоединитьСекцию чи ВывестиСекцию)
Flexy
Цитата(mister-x @ 27.06.12, 14:11) необходимо зарегистрироваться для просмотра ссылки
А якщо підбрендів у бренда буде декілька, тоді картинка ця необходимо зарегистрироваться для просмотра ссылки буде іншою. Чи можливо таке?
Помилився - тією ж, колонки С і D про це говорять.

Картинка будет такая же.ПодБрендов у бренда может быть много.


З.Ы.Все равно не получается.Пробую через вывести а потом присоединить.Выходит все разбросанное беспорядочно.
endru
А в запросе воткнули "Все ВошедшиеВзапрос"?
Flexy
Цитата(endru @ 27.06.12, 14:22) необходимо зарегистрироваться для просмотра ссылки
А в запросе воткнули "Все ВошедшиеВзапрос"?

Думаю дело не в этом.Пустых полей быть не должно.Т.к. выводятся товары только те по которым есть остаток.
endru
Цитата(Flexy @ 27.06.12, 15:24) необходимо зарегистрироваться для просмотра ссылки
Думаю дело не в этом.Пустых полей быть не должно.Т.к. выводятся товары только те по которым есть остаток.


У вас на картинке они есть. Когда несколько подбрендов у товара.
Вернее несколько товаров.

|Группировка Товар без групп Все ВошедшиеВЗапрос;


Flexy
Цитата(endru @ 27.06.12, 14:27) необходимо зарегистрироваться для просмотра ссылки
У вас на картинке они есть. Когда несколько подбрендов у товара.
Вернее несколько товаров.

|Группировка Товар без групп Все ВошедшиеВЗапрос;

Добавил.Программа зависает полностью 47046430.gif
alex040269
Цитата(Flexy @ 27.06.12, 15:18) необходимо зарегистрироваться для просмотра ссылки
Картинка будет такая же.ПодБрендов у бренда может быть много.


З.Ы.Все равно не получается.Пробую через вывести а потом присоединить.Выходит все разбросанное беспорядочно.

Присоединять нужно секцию "Строка|Колонка"
endru
А так
|Группировка Товар без групп Все;

ну и отлаживать такие вещи лучше не на всей номенклатуре, а на небольшой группе
а уж потом выбирать все остатки
Flexy
Фигня какая-то!!Когда я присоединяю секцию товар, то перестают присоединятся секции бренд и под бренд с права.
И опять начинают выводиться линейно вниз.






Код

Пока Запрос.Группировка(1) = 1 Цикл     //Склад
             я =0;
        Пока Запрос.Группировка(2) = 1 Цикл     //Бренд
            
        
            
            
             Пока Запрос.Группировка(3) = 1 Цикл     //ПодБренд    
              
            Столбик=?(Столбик=0,1,0);
             
            Ряд=?(Столбик=0,Ряд+1,Ряд);
            
             Если Ряд>5 Тогда
                
                Таб.НоваяСтраница();
                
                Ряд=1;
            
            КонецЕсли;
             
            Если Столбик=0 Тогда
                
                 Таб.ВывестиСекцию("Тело|Ценник");
                П = 0;
            Иначе
                Таб.ПрисоединитьСекцию("Тело|Ценник");
                 П = 1;
            КонецЕсли;        
        
                
                Пока Запрос.Группировка(4) = 1 Цикл     //Товар
            
                    
                         Если П = 0 Тогда
                         Таб.ВывестиСекцию("Товар|Тов");
                     Иначе
                         Таб.Присоединитьсекцию("Товар|Тов");
                        КонецЕсли;
                КонецЦикла;
    КонецЦикла;
КонецЦикла;

КонецЦикла;


Научите кто нибудь с этими таблицами работать за пиво tongue.gif .А то вечно проблемы у меня с ними возникают.
mister-x
розбивати звіт по сторінках також потрібно?
Flexy
Цитата(mister-x @ 27.06.12, 15:19) необходимо зарегистрироваться для просмотра ссылки
розбивати звіт по сторінках також потрібно?

Это не отчет.Это ценники для товара.Разбивать не обязательно.
igmig65
Соберите все позиции ценника в выборке (3,4 группировка)в список занчений(бренд, подбренд, товары), сразу невыводите, потом после 4 группировки выведите 1 раз этот список ч-з ВывестиСекцию(), потом в цикле сколько нужно ПрисоединитьСекцию()
Flexy
Цитата(igmig65 @ 27.06.12, 20:04) необходимо зарегистрироваться для просмотра ссылки
Соберите все позиции ценника в выборке (3,4 группировка)в список занчений(бренд, подбренд, товары), сразу невыводите, потом после 4 группировки выведите 1 раз этот список ч-з ВывестиСекцию(), потом в цикле сколько нужно ПрисоединитьСекцию()

Спасибо.Отличный вариант.Вот только как быть с оформлением? У брендов один шрифт у под бренда другой и т.д.?
mister-x
Цитата(Flexy @ 28.06.12, 13:13) необходимо зарегистрироваться для просмотра ссылки
У брендов один шрифт у под бренда другой и т.д.?

у свій час із цим напарився:

1.
секция = Таб.ПолучитьСекцию(<ИмяСекции>);


2.
секция.<ИмяОбласти>
або
секция.Область(<Адрес>)
чи
секция.Область(<R1>,<C1>,<R2>,<C2>)
див. синтакс-помічник, тут ИмяОбласти, Адрес - область в межах необхідної секції задається в конфігураторі;

3. і далі використовуємо атрибути і методи області секції: шрифт, розмір шрифту...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.