Добрый день!

Нужна срочно Ваша помощь!

Есть ограничение задачи: есть одна ТаблицаЗначений (ТЗ) с данными, по другому получить данные нельзя, специфика задачи.

Создается новый документ и заполняются программно его реквизиты, в документе есть ТЧ.

Эту ТЧ надо заполнить из ТЗ, но есть условие. Если в ТЗ количество строк больше 60, то создаем новый документ и т.д.

Как это сделать понять не могу? Разделить ТЗ на количества строк? Как?

Получается надо каким то образом создать документ с первыми 60тью строками из ТЗ, затем другой документ и строки уже с 61 по 120 и т.д.

Спасибо заранее за помощь и подсказки.
---
```1c
    Процедура СоздатьДокумент (ТЗ)

    док = документы.док.Создать(); //Первый надо создать
    ЗаполнитьРеквизитыШапки (Док); //Какие там нужно заполнить, тут заполняются

    Для Каждого СтрокаТЧ Из ТЗ Цикл
    Если СтрокаТЧ.НомерСтроки%60=0 Тогда //Может не номерСтрогки а индекс, отладкой нужно посмотреть
    ЗаполнитьСтрокуВДокумент(док ,СтрокаТЧ );
    Док.Записать(); //если кратно 60 то записать, создать новый, заполнить шапку и текущую строку в него
    док = документы.док.Создать();
    ЗаполнитьРеквизитыШапки (Док);
    Иначе
    ЗаполнитьСтрокуВДокумент(док ,СтрокаТЧ );
    КонецЕсли;
    КонецЦикла;

    Если Док.ЭтоНовый() Тогда //Если последняя строка не кратна 60
    Док.Записать();
    КонецЕсли;

    КонецПроцедуры
```

Как-то так думаю.
---
В цикле обработки строк ТЗ подсчитываете кол-во строк, занесенный в документ. Как дошли до 60 текущий документ записываете и создаете новый, в который продолжаете писать строки из ТЗ.
---
У меня документ создается до цикла обхода ТЗ.
Получается в цикле обхода ТЗ надо если строк больше 60 тогда создать новый документ и как продолжить заполнять из этой же ТЗ?

Есть пример? Спасибо.
---
```1c
    Процедура СоздатьДокумент (ТЗ)

    док = документы.док.Создать(); //Первый надо создать
    ЗаполнитьРеквизитыШапки (Док); //Какие там нужно заполнить, тут заполняются

    Для Каждого СтрокаТЧ Из ТЗ Цикл
    Если СтрокаТЧ.НомерСтроки%60=0 Тогда //Может не номерСтрогки а индекс, отладкой нужно посмотреть
    ЗаполнитьСтрокуВДокумент(док ,СтрокаТЧ );
    Док.Записать(); //если кратно 60 то записать, создать новый, заполнить шапку и текущую строку в него
    док = документы.док.Создать();
    ЗаполнитьРеквизитыШапки (Док);
    Иначе
    ЗаполнитьСтрокуВДокумент(док ,СтрокаТЧ );
    КонецЕсли;
    КонецЦикла;

    Если Док.ЭтоНовый() Тогда //Если последняя строка не кратна 60
    Док.Записать();
    КонецЕсли;

    КонецПроцедуры
```

Как-то так думаю.
---
ЗаполнитьСтрокуВДокумент(док ,СтрокаТЧ );

Это что?

ТЧ ж вроде надо в этом же цикле заполнить? Или это отдельная процедура?
---
Предполагается, что там вы заполните строку в документе. Я то не знаю как они у вас там называются и какие поля присутствуют

```1c
    Процедура ЗаполнитьСтрокуВДокумент (док ,СтрокаТЧ)

    НоваяСтрокаДокумента = Док.ИмяТабличнойЧасти.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрокаДокумента ,СтрокаТЧ);

    КонецПроцедуры;
```
---
Лучше вместо Если СтрокаТЧ.НомерСтроки%60=0 Тогда нужно Если (Док.ВашаТЧ.Количество() = 60) Тогда. Я бы так сделал - более прозрачный код.
---
Тоже вариант. Хотел смысл мысли передать. А как условие наложить это не проблема.
---
Согласен
---
Спасибо всем огромное за помощь!

Тема закрыта.