Создание нового документа с определенным количеством строк в табличной части

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. nagaitseff 173 11.01.18 07:44 Сейчас в теме
Добрый день!

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

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

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

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

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

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

Спасибо заранее за помощь и подсказки.
По теме из базы знаний
Найденные решения
4. dandykry 10 11.01.18 08:08 Сейчас в теме
Процедура СоздатьДокумент (ТЗ)

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

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

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

КонецПроцедуры
Показать


Как-то так думаю.
nagaitseff; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. M.Flint 11.01.18 07:51 Сейчас в теме
В цикле обработки строк ТЗ подсчитываете кол-во строк, занесенный в документ. Как дошли до 60 текущий документ записываете и создаете новый, в который продолжаете писать строки из ТЗ.
3. nagaitseff 173 11.01.18 07:58 Сейчас в теме
(2) У меня документ создается до цикла обхода ТЗ.
Получается в цикле обхода ТЗ надо если строк больше 60 тогда создать новый документ и как продолжить заполнять из этой же ТЗ?

Есть пример? Спасибо.
4. dandykry 10 11.01.18 08:08 Сейчас в теме
Процедура СоздатьДокумент (ТЗ)

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

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

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

КонецПроцедуры
Показать


Как-то так думаю.
nagaitseff; +1 Ответить
7. nagaitseff 173 11.01.18 08:41 Сейчас в теме
(4)
ЗаполнитьСтрокуВДокумент(док ,СтрокаТЧ );


Это что?

ТЧ ж вроде надо в этом же цикле заполнить? Или это отдельная процедура?
8. dandykry 10 11.01.18 08:44 Сейчас в теме
(7) Предполагается, что там вы заполните строку в документе. Я то не знаю как они у вас там называются и какие поля присутствуют

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

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

КонецПроцедуры;
5. protexprotex 115 11.01.18 08:17 Сейчас в теме
Лучше вместо Если СтрокаТЧ.НомерСтроки%60=0 Тогда нужно Если (Док.ВашаТЧ.Количество() = 60) Тогда. Я бы так сделал - более прозрачный код.
nagaitseff; +1 Ответить
6. dandykry 10 11.01.18 08:27 Сейчас в теме
(5) Тоже вариант. Хотел смысл мысли передать. А как условие наложить это не проблема.
9. protexprotex 115 11.01.18 08:45 Сейчас в теме
10. nagaitseff 173 11.01.18 10:43 Сейчас в теме
Спасибо всем огромное за помощь!

Тема закрыта.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот