|
Печатная форма с выводом моделей авто | ☑ | ||
---|---|---|---|---|
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; ТабДокумент.Вывести(ОбластьСтрока); ПредыдущаяМодель = СтрокаТаблицы.Модель; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |