Имя: Пароль:
1C
1С v8
как двигаться по ячейкам области шапка в макете?
0 avz07
 
19.06.13
18:00
вот мой код:
Аналітик=Справочники.СписокТА.НайтиПоКоду("977");
ТабДок=Новый ТабличныйДокумент;
Макет = ЭтотОбъект.ПолучитьМакет("Макет");
ОблШапка=Макет.ПолучитьОбласть("Шапка|Клиенты");    
ОблШапка.Параметры.ТА=Аналітик;
ТабДок.Очистить();
ТабДок.Вывести(ОблШапка);
   
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
|КлиентыТАСрезПоследних.ДеньНедели КАК ДеньНедели
|ИЗ
|РегистрСведений.КлиентыТА.СрезПоследних(&наДату, ТА.Ссылка = &Аналітик) КАК КлиентыТАСрезПоследних
|ГДЕ
|КлиентыТАСрезПоследних.Активный
|
|СГРУППИРОВАТЬ ПО
|КлиентыТАСрезПоследних.ДеньНедели
|
|УПОРЯДОЧИТЬ ПО
|КлиентыТАСрезПоследних.ДеньНедели.Порядок";
Запрос.УстановитьПараметр("Аналітик", Аналітик);
Запрос.УстановитьПараметр("наДату", ТекущаяДата());
   
Массив=Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ДеньНедели");
Для Каждого ЭлементМассива ИЗ Массив Цикл
   ОблШапка=Макет.ПолучитьОбласть("Шапка|Дни");
   ОблШапка.Параметры.ДеньНедели=ЭлементМассива;
   ТабДок.Присоединить(ОблШапка);
   КонецЦикла;
1 avz07
 
19.06.13
18:14
мне нужно двигаться ячейками из полученными названиями дней Области ("Шапка | Дни")и тогда сравнивать их со значениями выборки, в которой есть перечень дней.так я хочу сделать сортировку, т.е. установить соответствие заголовков таблицы с содержанием ячеек. Продолжение кода:                  Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
|КлиентыТАСрезПоследних.Клиенты.Наименование КАК КлиентыНаименование,
|КлиентыТАСрезПоследних.ДеньНедели КАК ДеньНедели
|ИЗ
|РегистрСведений.КлиентыТА.СрезПоследних(&наДату, ТА.Ссылка = &Аналітик) КАК КлиентыТАСрезПоследних
|ГДЕ
|КлиентыТАСрезПоследних.Активный
|
|СГРУППИРОВАТЬ ПО
|КлиентыТАСрезПоследних.Клиенты,
|КлиентыТАСрезПоследних.ДеньНедели,
|КлиентыТАСрезПоследних.Клиенты.Наименование
|
|УПОРЯДОЧИТЬ ПО
|КлиентыТАСрезПоследних.ДеньНедели.Порядок
|ИТОГИ ПО
|КлиентыНаименование";
Запрос.УстановитьПараметр("Аналітик", Аналітик);
Запрос.УстановитьПараметр("наДату", ТекущаяДата());    
   
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Выборка.Следующий()Цикл
ОблДетали=Макет.ПолучитьОбласть("Детали|Клиенты");
ОблДетали.Параметры.Наименование=Выборка.КлиентыНаименование;    
ТабДок.Вывести(ОблДетали);
   
Выб=Выборка.Выбрать();
Пока Выб.Следующий()Цикл
ОблДетали=Макет.ПолучитьОбласть("Детали|Дни");
ОблДетали.Параметры.ДеньНедели=Выб.ДеньНедели;
ТабДок.Присоединить(ОблДетали);
 КонецЦикла;
КонецЦикла;                            
ТабДок.Показать();    
Помогите пожалуйста
2 Ювелир
 
19.06.13
18:21
(1)(0)"мне нужно двигаться ячейками из полученными названиями дней" мая твая панимай, но у тебя же массива однако есть? Зачим двигаться ячейками, кады мона двигать массивами? )))
3 avz07
 
19.06.13
18:36
я пишу из Украины, поэтому простите меня за мой русский (могу на украинском писать без ошибок, но поймет меня народ на форуме, не знаю?)
4 avz07
 
19.06.13
18:40
массивами я сделал и пахало, но от меня мой шеф захотел чтобы я сделал иначе. обращаюсь сюда потому, что самому не выходит.мало опыта ((
5 Ювелир
 
19.06.13
18:46
(3) извиняю, (4) нафига это шефу? Ежли работает - чего же боле?
6 avz07
 
19.06.13
18:51
хз ..
я сейчас заканчиваю стажировку, предпоследний день. все было хорошо, а сегодня дал такое задание (говорит для проверки умений и улучшение опыта) и мне не получается сделать ...
7 avz07
 
19.06.13
18:58
Для Каждого ЭлементМассива ИЗ Массив Цикл
Выб=Выборка.Выбрать();
Пока Выб.Следующий()Цикл
ОблДетали=Макет.ПолучитьОбласть("Детали|Дни");                Если Выб.ДеньНедели=ЭлементМассива Тогда                    ОблДетали.Параметры.ДеньНедели=Выб.ДеньНедели;                         Прервать;
иначе
ОблДетали.Параметры.ДеньНедели="-------";                   КонецЕсли;    
КонецЦикла;
ТабДок.Присоединить(ОблДетали);
КонецЦикла;
КонецЦикла;  
вот так было сделано.
я так понимаю, эту часть надо перешаманиты. но как??
8 avz07
 
19.06.13
19:01
Помогите, мне ну очень надо ..!
9 Ювелир
 
19.06.13
19:06
(8) Берешь запоминаешь ячейки в которые осуществил вывод в массив потом читаешь из этих ячеек, криво конечно. Или область поименовать. Вот описание, обрати внимание на возвращаемое значение - Тип: ОбластьЯчеекТабличногоДокумента.
Область, в которую был осуществлен вывод.

Присоединить (Join)
Синтаксис:

Присоединить(<Таблица>, <Уровень>, <ИмяГруппы>, <Открыта>)
Параметры:

<Таблица> (обязательный)

Тип: ТабличныйДокумент; ПолеТабличногоДокумента.
Выводимая таблица.
<Уровень> (необязательный)

Тип: Число.
Уровень используется для автоматической группировки колонок табличного документа. Соседние колонки с одинаковым уровнем будут отнесены к одной группе. Строки с минимальным уровнем в группу не объединяются.
<ИмяГруппы> (необязательный)

Тип: Строка.
Название группы, к которой относятся выводимые колонки.
<Открыта> (необязательный)

Тип: Булево.
Истина - выведенная группа будет открыта,
Ложь - группа будет выведена в свернутом виде.
Возвращаемое значение:

Тип: ОбластьЯчеекТабличногоДокумента.
Область, в которую был осуществлен вывод.
10 avz07
 
19.06.13
19:16
Как считать все ячейки (их будет 7, соответственно как дней в неделе), чтобы их потом записать в массив. Каким методом?
11 Ювелир
 
19.06.13
19:33
Ты используешь метод присоединить когда выводишь дни недели он и возвращает требуемое.
12 kosts
 
19.06.13
19:50
(0) Такие таблицы, в которых заранее неизвестно количество колонок называются кросс-таблица, смотри материал по этой теме. Выводится с помощью единственного запроса. Если разобраться, то совсем просто.

Вот пример
http://1cexpo.ru/obuchenie-1s-predpriyatie/23-prakticheskoe-ispolzovanie-zaprosov-v-1s-8/50-kross-otchyoty.html
13 avz07
 
19.06.13
19:58
Большое спасибо!!