У номенклатуры есть поставщик у каждого поставщика свой артикул, нужно чтобы на печатной форме колонка артикул выводилась в соответствии с тем, сколько поставщиков с артикулом есть у номенклатуры.

```1c
    Для каждого Строка ИЗ ВыборкаСтрокТовары.Номенклатура.МТД_Поставщики Цикл
    Если ЗначениеЗаполнено(Строка.Артикул) Тогда
    //ОбластьАртикул.Параметры.НомерСтроки = Строка.НомерСтроки;
    ОбластьАртикул.Параметры.Артикул = Строка.Артикул;
    //ОбластьСтроки.Параметры["Артикул"+Строка.НомерСтроки] = Строка.Артикул;
    Иначе

    ОбластьАртикул.Параметры.Артикул = ";

    //ОбластьСтроки.Параметры["Артикул"+Строка.НомерСтроки] = ";
    КонецЕсли;
    ТабДокумент.Вывести(ОбластьАртикул);
    КонецЦикла;
```

при выводе область артикула выводится очень много раз, а мне нужно чтобы новая область появлялась только если у номенклатуры больше поставщиков, чем у предыдущей.

Например:

Номенклатура | АртикулПоставщика | --Есть только 1 поставщик
Номенклатура | АртикулПоставщика | АртикулПоставщика--Есть 2 поставщика

Если я печатаю документ и там 2 номенклатуры, как в схеме выше, у одной 1 поставщик, у другой 2 поставщика. У меня же в коде выведет 4 раза колонку с артикулом, а нужно чтобы только 2 раза и если у следующей 3-ей номенклатуры было больше поставщиков, чем у второй, тогда должно появиться больше полей с артикулами, а если меньше, то не появляться вообще
---
Вам нужно переделать алгоритм
У вас получается что если А=3 например а вот тут ВыборкаСтрокТовары.Номенклатура.МТД_Поставщики меньше строк например 2 то вы и выводите меньше строк.

Нужно Что-то типа

```1c
    Для к=1 по А цикл
    Если к>ВыборкаСтрокТовары.Номенклатура.МТД_Поставщики.Количество() тогда
    ТекАртикул=";
    иначе
    ТекАртикул=ВыборкаСтрокТовары.Номенклатура.МТД_Поставщики[к-1].Артикул;
    КонецЕсли;
    ОбластьАртикул2.Параметры.Артикул = ТекАртикул;
    ТабДокумент.Присоединить(ОбластьАртикул2);
    КонецЦикла
```
---
если вам нужны колонки, то надо использовать "Присоединить" для каждой следующей колонки. "Вывести" добавляет новую строку.

Не понятно, есть ли у вас шапка в печатной форме.
---
Не понятно, есть ли у вас шапка в печатной форме.
Есть, и она не расширяется как табличная часть
---
```1c
    Присоеденить = Ложь;

    Для каждого Строка ИЗ ВыборкаСтрокТовары.Номенклатура.МТД_Поставщики Цикл
    Если ЗначениеЗаполнено(Строка.Артикул) Тогда
    ОбластьАртикул.Параметры.Артикул = Строка.Артикул;
    Если Присоеденить Тогда
    ТабДокумент.Присоеденить(ОбластьАртикул);
    иначе
    ТабДокумент.Вывести(ОбластьАртикул);
    Присоеденить = Истина;
    КонецЕсли;
    КонецЕсли;

    КонецЦикла;
```
---
Все равно криво получается(((

```1c
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок | Общая");
    ОбластьМакета2 = Макет.ПолучитьОбласть("Заголовок | ОбластьАртикул");
    ОбластьМакета3 = Макет.ПолучитьОбласть("Заголовок | Область2");
    ОбластьМакета.Параметры.ТекстЗаголовка = ОбщегоНазначения.СформироватьЗаголовокДокумента(Шапка, "Заказ поставщику");
    ТабДокумент.Вывести(ОбластьМакета);
    ТабДокумент.Присоединить(ОбластьМакета2);
    ТабДокумент.Присоединить(ОбластьМакета2);
    ТабДокумент.Присоединить(ОбластьМакета2);
    ТабДокумент.Присоединить(ОбластьМакета2);
    ТабДокумент.Присоединить(ОбластьМакета3);

    ОбластьМакета = Макет.ПолучитьОбласть("Поставщик | Общая");

    ОбластьМакета.Параметры.Заполнить(Шапка);
    ОбластьМакета.Параметры.ТекстПоставщик = "Поставщик:";
    ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата), "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
    ТабДокумент.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("Покупатель | Общая");
    ОбластьМакета.Параметры.ТекстПокупатель = "Покупатель:";
    ОбластьМакета.Параметры.ПредставлениеПолучателя = ФормированиеПечатныхФорм.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата), "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");;
    ОбластьМакета.Параметры.Получатель = Шапка.Организация;
    ТабДокумент.Вывести(ОбластьМакета);

    //Вывести табличную часть
    Если ВыводитьКоды Тогда
    //ОбластьШапки.Параметры.Колонка = Колонка;
    Область1.Параметры.Колонка = Колонка;
    КонецЕсли;

    //ТабДокумент.Вывести(ОбластьШапки);

    Сумма = 0;
    СуммаНДС = 0;

    ТабДокумент.Вывести(Область1);
    ТабДокумент.Присоединить(ОбластьАртикул1);
    ТабДокумент.Присоединить(ОбластьАртикул1);
    ТабДокумент.Присоединить(Область2);

    Для каждого ВыборкаСтрокТовары Из ЗапросТовары Цикл
    //
    //
    //
    Область22.Параметры.Заполнить(ВыборкаСтрокТовары);
    Область11.Параметры.НомерСтроки = ЗапросТовары.Индекс(ВыборкаСтрокТовары) + 1;
    Область11.Параметры.Товар = СокрЛП(ВыборкаСтрокТовары.Товар) + ФормированиеПечатныхФорм.ПредставлениеСерий(ВыборкаСтрокТовары)
    + ?(ВыборкаСтрокТовары.НомерТЧ = 4, " (возвратная тара)", ")+ " " +ВыборкаСтрокТовары.Номенклатура.ИА_Фасовка;

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

    Если ВыводитьКоды Тогда
    Если Тип = "ЗаказПоДаннымПоставщика" Тогда
    Область11.Параметры.КодАртикул = ВыборкаСтрокТовары.АртикулКонтрагента;
    Иначе
    Область11.Параметры.КодАртикул = ВыборкаСтрокТовары.КодАртикул;
    КонецЕсли;
    КонецЕсли;
    //МТД_Лукин++
    ТабДокумент.Вывести(Область11);

    Присоеденить = Ложь;

    Для каждого Строка ИЗ ВыборкаСтрокТовары.Номенклатура.МТД_Поставщики Цикл
    Если ЗначениеЗаполнено(Строка.Артикул) Тогда
    ОбластьАртикул2.Параметры.Артикул = Строка.Артикул;
    Если Присоеденить Тогда
    ТабДокумент.Присоединить(ОбластьАртикул2);
    иначе
    ТабДокумент.Вывести(ОбластьАртикул2);
    Присоеденить = Истина;
    КонецЕсли;
    КонецЕсли;

    КонецЦикла;
    //ТабДокумент.Присоединить(ОбластьАртикул2);
    //ТабДокумент.Присоединить(ОбластьАртикул2);
    //ТабДокумент.Присоединить(ОбластьАртикул2);

    //ТабДокумент.Присоединить(ОбластьАртикул2);

    ////ТабДокумент.Присоединить(Область22);

    //ТабДокумент.Вывести(ОбластьСтроки);
    //МТД_Лукин--

    Сумма = Сумма + ВыборкаСтрокТовары.Сумма;
    СуммаНДС = СуммаНДС + ВыборкаСтрокТовары.СуммаНДС;

    КонецЦикла;

    // Вывести Итого
    ОбластьМакета = Макет.ПолучитьОбласть("Итого");
    ОбластьМакета.Параметры.Всего = ОбщегоНазначения.ФорматСумм(Сумма);
    ТабДокумент.Вывести(ОбластьМакета);

    // Вывести ИтогоНДС
    Если Шапка.УчитыватьНДС Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
    ОбластьМакета.Параметры.ВсегоНДС = ОбщегоНазначения.ФорматСумм(ЗапросТовары.Итог("СуммаНДС"));
    ОбластьМакета.Параметры.НДС = ?(Шапка.СуммаВключаетНДС, "В том числе НДС:", "Сумма НДС:");
    ТабДокумент.Вывести(ОбластьМакета);
    КонецЕсли;

    // Вывести Сумму прописью
    ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
    СуммаКПрописи = Сумма + ?(Шапка.СуммаВключаетНДС, 0, СуммаНДС);
    ОбластьМакета.Параметры.ИтоговаяСтрока = "Всего наименований " + ЗапросТовары.Количество()
    + ", на сумму " + ОбщегоНазначения.ФорматСумм(СуммаКПрописи, Шапка.ВалютаДокумента);
    ОбластьМакета.Параметры.СуммаПрописью = ОбщегоНазначения.СформироватьСуммуПрописью(СуммаКПрописи, Шапка.ВалютаДокумента);
    ТабДокумент.Вывести(ОбластьМакета);

    // Вывести подписи
    ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
    ОбластьМакета.Параметры.Отпустил = "/"+ Руководитель + "/";
    ОбластьМакета.Параметры.Получил = "/"+ Бухгалтер + "/";
    ТабДокумент.Вывести(ОбластьМакета);

    Возврат ТабДокумент;
```
---
а так

```1c
    Артикул = ";
    Для каждого Строка ИЗ ВыборкаСтрокТовары.Номенклатура.МТД_Поставщики Цикл
    Если ЗначениеЗаполнено(Строка.Артикул) Тогда
    Артикул = Артикул + Строка.Артикул + символы.пс;
    КонецЕсли;
    КонецЦикла;

    ОбластьАртикул2.Параметры.Артикул = Артикул ;
    ТабДокумент.Вывести(ОбластьАртикул2);
```

в одной колонке получится, но друг под другом
---
Артикул = "";
Для каждого Строка ИЗ ВыборкаСтрокТовары.Номенклатура.МТД_Поставщики Цикл
     Если ЗначениеЗаполнено(Строка.Артикул) Тогда
           Артикул = Артикул + Строка.Артикул + символы.пс;
     КонецЕсли;
КонецЦикла;

ОбластьАртикул2.Параметры.Артикул = Артикул ;
 ТабДокумент.Вывести(ОбластьАртикул2);

Не, вообще бред, надо чтобы по столбикам
---
```1c
    Присоеденить = Ложь;

    Для каждого Строка ИЗ ВыборкаСтрокТовары.Номенклатура.МТД_Поставщики Цикл
    Если ЗначениеЗаполнено(Строка.Артикул) Тогда
    ОбластьАртикул2.Параметры.Артикул = Строка.Артикул;
    Иначе
    ОбластьАртикул2.Параметры.Артикул = ";
    КонецЕсли;
    ТабДокумент.Присоединить(ОбластьАртикул2);

    КонецЦикла;
```

Вот так почти что-то нормальное получается
---
Перед выводом вычислите сколько максимум артикулов в номенклатуре документа.
Ну и дальше уже спокойно выведите шапку (с количеством колонок "Артикул" равное максимальному)
Ну и по каждой строке выводите столько же раз область с артикулом.
А после неё уже остальное "количество", "цена" и т.д.
---
(9) Ну и по каждой строке выводите столько же раз область с артикулом.

```1c
    ТабДокумент.Вывести(Область11);

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

    Продолжить;
    КонецЕсли;
    А=А+1;
    КонецЦикла;

    ТабДокумент.Присоединить(Область22);
```

делаю, как сказали, шапку вывел, почему-то на середине валиться все, не могу найти ошибку(
---
Вам нужно переделать алгоритм
У вас получается что если А=3 например а вот тут ВыборкаСтрокТовары.Номенклатура.МТД_Поставщики меньше строк например 2 то вы и выводите меньше строк.

Нужно Что-то типа

```1c
    Для к=1 по А цикл
    Если к>ВыборкаСтрокТовары.Номенклатура.МТД_Поставщики.Количество() тогда
    ТекАртикул=";
    иначе
    ТекАртикул=ВыборкаСтрокТовары.Номенклатура.МТД_Поставщики[к-1].Артикул;
    КонецЕсли;
    ОбластьАртикул2.Параметры.Артикул = ТекАртикул;
    ТабДокумент.Присоединить(ОбластьАртикул2);
    КонецЦикла
```