Имя: Пароль:
1C
1С v8
Печатная форма с выводом моделей авто
,
0 denis_solyanko
 
05.11.14
07:40
задача: в документе есть тч товары которая заполняется автомобилями, сделать печ форму на которой будет выводится заявка, но чтобы модели объединялись и писалось количество штук данной модели, а внизу списков вин кодов этих моделей, данные одной модели  должны быть на одном листе,
я сделал две таблицы в одной я получаю список моделей и их количество в свернутом виде, во второй список моделей просто упорядочил по алфавиту, теперь нужно перебрать таким образом чтобы пока модель из одной таблицы равно другой выводить винкод, то есть у нас есть 2 лады калины и 3 приоры список из 5 записей получаем на одном листе лада калина в кол-ве 2 шт и внизу список винкодов, не могу сообразить с перебором
1 denis_solyanko
 
05.11.14
07:40
(0) таблицаавто = новый ТаблицаЗначений;
таблицаавто.колонки.добавить("Количество");
таблицаавто.колонки.добавить("Модель");
//таблицаавто.колонки.добавить("вин");
//Количество = 0;
таблицамоделей = новый ТаблицаЗначений;
таблицамоделей.колонки.добавить("Модель");
таблицамоделей.колонки.добавить("Вин");
для каждого строка из Товары цикл
ЕСЛИ ТипЗнч(Строка.НаименованиеТовара) = тип("СправочникСсылка.Автомобили") тогда
    новаястрока = таблицаавто.добавить();
    новаястрока.Модель = Строка.НаименованиеТовара.Модель;
    новаястрока.Количество = Строка.Количество;
        КонецЕсли;
    КонецЦикла;
    таблицаавто.Сортировать("Модель");
таблицаавто.Свернуть("Модель","Количество");

для каждого строкам из Товары цикл
ЕСЛИ ТипЗнч(Строка.НаименованиеТовара) = тип("СправочникСсылка.Автомобили") тогда
    новаястрокам = таблицамоделей.Добавить();
    новаястрокам.Модель = строкам.НаименованиеТовара.Модель;
    новаястрокам.Вин = строкам.НаименованиеТовара.VIN
КонецЕсли;
КонецЦикла;
таблицамоделей.Свернуть("Модель,Вин");
таблицамоделей.Сортировать("Модель");
2 Мимохожий Однако
 
05.11.14
07:41
И в чём проблема?
3 denis_solyanko
 
05.11.14
07:54
(2) не соображу как перебрать теперь
4 denis_solyanko
 
05.11.14
07:57
(3) чтобы выводил вин только модели на этом листе
5 denis_solyanko
 
05.11.14
07:57
этих же 2 калин к примеру
6 RomaH
 
naïve
05.11.14
08:46
для начала код приведи в порядок - в этом бардаке естественно ничего не увидеть

ТипЗнч(Строка.НаименованиеТовара) = тип("СправочникСсылка.Автомобили")

тут у мозга возникает когнитивный диссонанс на уровне подсознания

для каждого строка из Товары цикл

для каждого строкам из Товары цикл


развивайте фантазию


для каждого строкам из Товары цикл
ЕСЛИ ТипЗнч(Строка.НаименованиеТовара) = тип("СправочникСсылка.Автомобили") тогда

это писали три разных человека?
7 Cube
 
05.11.14
08:51
(1) Выкинь этот быдлокод))
Если я правильно тебя понял, то:

ВременнаяТаблица = Товары.Выгрузить();
ВременнаяТаблица.Колонки.Добавить("Модель");
ВременнаяТаблица.Колонки.Добавить("VIN");
Для Каждого СтрокаТаблицы Из ВременнаяТаблица Цикл
    СтрокаТаблицы.Модель = СтрокаТаблицы.НаименованиеТовара.Модель;
    СтрокаТаблицы.VIN = СтрокаТаблицы.НаименованиеТовара.VIN;
КонецЦикла;
ВременнаяТаблица.Сотрировать("Модель, VIN");

ПредыдущаяМодель = Неопределено;
Для Каждого СтрокаТаблицы Из ВременнаяТаблица Цикл
    Если ПредыдущаяМодель = Неопределено ИЛИ ПредыдущаяМодель <> СтрокаТаблицы.Модель Тогда
        НайденныеСтроки = ВременнаяТаблица.НайтиСтроки(Новый Структура("Модель", СтрокаТаблицы.Модель));
        Сообщить(СтрокаТаблицы.Модель + " (" + НайденныеСтроки.Количество() + ")");
    КонецЕсли;
    Сообщить(СтрокаТаблицы.VIN);
    ПредыдущаяМодель = СтрокаТаблицы.Модель;
КонецЦикла;
8 Godofsin
 
05.11.14
08:59
Теперь понятно, почему русские тазы не продаются =)
9 Cube
 
05.11.14
09:14
(8) Вообще-то, отечественные авто самые продаваемые... :)
Просто иномарок много, поэтому на одного конкретного импортного производителя приходится меньший процент продаж, чем на АвтоТаз :)))
10 denis_solyanko
 
05.11.14
09:16
(7) спасибо, помог теперь переделываю чтобы не в сообщение выводило а на печ форму
11 Cube
 
05.11.14
09:20
(10) Этот код я прямо тут набрал, в форме ответа))))

Ты, когда код пишешь, пиши его красиво. Соблюдай ВерблюжийРегистр, и называй переменные грамотно (а не новаястрокам).
12 denis_solyanko
 
05.11.14
09:27
(9) хорошо, учту, что то не пойму теперь чтобы на печ форму вывести, сообщить подставить свои параметры
Для Каждого СтрокаТаблицы Из ВременнаяТаблица Цикл
Если ПредыдущаяМодель = Неопределено ИЛИ ПредыдущаяМодель <> СтрокаТаблицы.Модель Тогда
НайденныеСтроки = ВременнаяТаблица.НайтиСтроки(Новый Структура("Модель", СтрокаТаблицы.Модель));                ОбластьМакета.Параметры.НаименованиеТовара=СтрокаТаблицы.Модель;
ОбластьМакета.Параметры.Количество=НайденныеСтроки.Количество();
ОбластьМакета.Параметры.ВинКод = СтрокаТаблицы.VIN;
КонецЕсли;
ПредыдущаяМодель = СтрокаТаблицы.Модель;
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;
13 denis_solyanko
 
05.11.14
09:28
(9) выводит 7 листов))
14 Cube
 
05.11.14
09:41
(12) "Пилите, Шура, пилите! Она золотая!" =)))

Макет = ПолучитьМакет("МойМакет");
ОбластьМодель = Макет.ПолучитьОбласть("Модель");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");

ПредыдущаяМодель = Неопределено;
Для Каждого СтрокаТаблицы Из ВременнаяТаблица Цикл
    Если ПредыдущаяМодель = Неопределено ИЛИ ПредыдущаяМодель <> СтрокаТаблицы.Модель Тогда
        НайденныеСтроки = ВременнаяТаблица.НайтиСтроки(Новый Структура("Модель", СтрокаТаблицы.Модель));
        ОбластьМодель.Параметры.НаименованиеТовара = СтрокаТаблицы.Модель;
        ОбластьМодель.Параметры.Количество = НайденныеСтроки.Количество();
        ТабДокумент.Вывести(ОбластьМодель);
    КонецЕсли;
    ОбластьСтрока.Параметры.ВинКод = СтрокаТаблицы.VIN;
    ТабДокумент.Вывести(ОбластьСтрока);
    ПредыдущаяМодель = СтрокаТаблицы.Модель;
КонецЦикла;