Имя: Пароль:
1C
1С v8
Работа с ТЗ
,
0 Black Dragon
 
12.12.13
17:58
Доброго дня!

есть некая ТЗ, нужно исключить строку с номером 0

ТЗ = Новый ТаблицаЗначений;
....
Для Каждого Стр ИЗ ТЗ Цикл
Если ТЗ.Индекс(Стр) = 0 Тогда
......

Другие варианты имеются?
1 ДенисЧ
 
12.12.13
17:59
тз.Удалить(тз[0])
2 kvikster
 
12.12.13
18:00
счетный цикл от 1 до количества
3 МихаилМ
 
12.12.13
18:00
ТЗ.Удалить(0);
4 Black Dragon
 
12.12.13
18:01
нельзя удалить, там специфические данные хранятся
5 Wobland
 
12.12.13
18:01
а чем она провинилась?
6 Wobland
 
12.12.13
18:01
(4) этоги штоль?
7 Black Dragon
 
12.12.13
18:02
нет, некое подобие заголовков колонок
колонки могут менять свои наименования, для этого
8 Wobland
 
12.12.13
18:03
так и знал, что фигню изобрёл
9 Black Dragon
 
12.12.13
18:04
ну а как же без этого? :)
10 Рэйв
 
12.12.13
18:12
делай запрос без итогов. Чего опять через экватор на северный полюс то?6-)
11 Classic
 
12.12.13
18:24
(8)
Не помню где, но иногда заголовки не переносятся
12 Black Dragon
 
13.12.13
09:55
(10) а запрос и так без итогов!

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
        |    ХозрасчетныйОстатки.Счет КАК Счет,
        |    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
        |    ХозрасчетныйОстатки.Организация КАК Организация,
        |    ХозрасчетныйОстатки.КоличествоОстаток КАК Количество
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОстатков, Счет В ИЕРАРХИИ (&Счета), , ) КАК ХозрасчетныйОстатки
        |ГДЕ
        |    ХозрасчетныйОстатки.Субконто1 В(&Номенклатура)";
        
    СписокСчетов = Новый Массив;
    СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("10"));
    СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("41"));
    СписокСчетов.Добавить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("43"));
    
    СписокТоваров = Новый Массив;
    
    Для Каждого Стр Из Объект.Товары Цикл
        СписокТоваров.Добавить(Стр.Номенклатура);
    КонецЦикла;
    
    Запрос.УстановитьПараметр("ДатаОстатков",Объект.Дата);
    Запрос.УстановитьПараметр("Счета",СписокСчетов);
    Запрос.УстановитьПараметр("Номенклатура",СписокТоваров);
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    РезультатЗапроса.Сортировать("Счет,Номенклатура,Организация");
    
    // сформируем результирующую таблицу
    
    ТабИтогов = Новый ТаблицаЗначений;
    ТабИтогов.Колонки.Добавить("Номенклатура");
    ТабИтогов.Колонки.Добавить("Фирма");
    
    СписокСчетов = Новый Массив;
    
    Для Каждого Стр Из РезультатЗапроса Цикл
        Если ТабИтогов.Количество() = 0 Тогда // нет строк
            ТекСтрока = ТабИтогов.Добавить();
        КонецЕсли;
        ИскЗнч = ТабИтогов.Найти(Стр.Счет);
        Если искЗнч = Неопределено Тогда
            НоваяКолонка = ТабИтогов.Колонки.Добавить();
            ИндексКолонки = ТабИтогов.Колонки.Индекс(НоваяКолонка);
            ТекСтрока[ИндексКолонки] = Стр.Счет;
            СписокСчетов.Вставить(ИндексКолонки,Стр.Счет);
        КонецЕсли;
    КонецЦикла;
    
    РезультатЗапроса.Сортировать("Номенклатура,Организация");
    
    Для Каждого Стр Из РезультатЗапроса Цикл
        ТекСтрока = ТабИтогов.Добавить();
        ТекСтрока.Номенклатура = Стр.Номенклатура;
        ТекСтрока.Фирма = Стр.Организация;
        Инд = СписокСчетов.Найти(Стр.Счет);
        Если НЕ Инд = Неопределено Тогда
            ТекСтрока[Инд] = Стр.Количество;
        КонецЕсли;
    КонецЦикла;
    
    ТабИтогов.ВыбратьСтроку();
    
    // выведем результат в табличный документ
    
    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    СекцияШапка = Макет.ПолучитьОбласть("Шапка");
    СекцияШапкаТаблицыНоменклатура = Макет.ПолучитьОбласть("загТабл|Номенклатура");
    СекцияШапкаТаблицыСчета = Макет.ПолучитьОбласть("ЗагТабл|Счет");
    
    СекцияШапка.Параметры.печДатаОстатков = Объект.Дата;
    СекцияШапка.Параметры.печНомерДок = Объект.Номер;
    СекцияШапка.Параметры.печДатаДок = Объект.Дата;
    ТабДок.Вывести(СекцияШапка);
    
    ТабДок.Вывести(СекцияШапкаТаблицыНоменклатура);
    Для Инд = 2 По СписокСчетов.Количество()-1 Цикл
        СекцияШапкаТаблицыСчета.Параметры.ПечСчет = СписокСчетов[Инд];
        ТабДок.Присоединить(СекцияШапкаТаблицыСчета);
    КонецЦикла;
    
    СекцияСтрокаНоменклатура = Макет.ПолучитьОбласть("СтрокаНоменклатура|Номенклатура");
    СекцияСтрокаОстатки = Макет.ПолучитьОбласть("СтрокаНоменклатура|Счет");
    
    ТекТовар = Неопределено;
    
    Для Каждого Стр Из ТабИтогов Цикл
        Если НЕ ТабИтогов.Индекс(Стр) = 0 Тогда
            Если Стр.Номенклатура = ТекТовар Тогда // фирма
                СекцияФирма = Макет.ПолучитьОбласть("СтрокаФирма|Номенклатура");
                СекцияФирма.Параметры.ПечФирма = Стр.Фирма;
                ТабДок.Вывести(СекцияФирма);
                СекцияФирмаКол = Макет.ПолучитьОбласть("СтрокаФирма|Счет");
                СекцияФирмаКол.Параметры.ПечОст = Стр.Количество;
                ТабДок.Присоединить(СекцияФирмаКол);
            Иначе // номенклатура
                СекцияНоменклатура = Макет.ПолучитьОбласть("СтрокаНоменклатура|Номенклатура");
                СекцияНоменклатура.Параметры.ПечНоменклатура = Стр.Номенклатура;
                ТабДок.Вывести(СекцияНоменклатура);
                СекцияНоменклатураКол = Макет.ПолучитьОбласть("СтрокаНоменклатура|Счет");
                СекцияНоменклатураКол.Параметры.печКол = "";
                ТабДок.Присоединить(СекцияНоменклатураКол);
                ТекТовар = Стр.Номенклатура;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.Показать();