![]() |
|
Копирование документа по порядку строк | ☑ | ||
---|---|---|---|---|
0
lirt82
23.11.17
✎
11:44
|
Пишу обработку, алгоритм такой получаю документ и нужно скопировать столько раз сколько количество строк в таб. части, при чем в каждом новом оставлять в таб. части строку по порядковому номеру из документа первоисточника. Например есть док Возврат, у него в таб. части 3 строки, первая Ботинки, вторая Сапоги, третья Тапки. Обработка должна скопировать 3 раза док Возврата (по количеству строк в таб. части) причем в первом скопированном документе в его таб. части должны быть только Ботинки, во втором доке Сапоги и в третьем Тапки. Не получается строки в цикле при копировании проконтролировать. Подскажите
Для каждого Стр Из СписокВозвратов Цикл Если НЕ Стр.Пометка Тогда Продолжить; Иначе Д = Стр.Док.ПолучитьОбъект(); А = Д.Товары.Количество(); Пока А >= 1 Цикл НовыйД = Д.Скопировать(); НовыйД.Дата = ТекущаяДата(); Для каждого ТекущаяСтрока Из НовыйД.Товары Цикл ОставляемСтроку = ТекущаяСтрока.НомерСтроки; ??? тут оставлять только нужную строку КонецЦикла; НовыйД.Записать(); |
|||
1
vicof
23.11.17
✎
12:55
|
Стр=Новыйдок.тч.Добавить()
Заполнитьзначениясвойств(стр, Стараястр) |
|||
2
FIXXXL
23.11.17
✎
13:19
|
Д.Товары[ТекСтрока.НомерСтроки-1]
а цикл делай Для каждого ТекСтрока ИЗ Д.Товары |
|||
3
FIXXXL
23.11.17
✎
13:22
|
(2) + ТЧ нового дока Очистить(), добавить строку и (1)
|
|||
4
Пес Барбос
23.11.17
✎
13:32
|
Я бы сделал цикл по кол-ву строк в ТЧ и
при каждой итерации создавал бы документ через .Скопировать() и в нем удалял все строки ТЧ <> индексу итерации |
|||
5
lirt82
23.11.17
✎
13:37
|
(1) (2) спасибо вот так закодил:)
Для каждого Стр Из СписокВозвратов Цикл Если НЕ Стр.Пометка Тогда Продолжить; Иначе Д = Стр.Док.ПолучитьОбъект(); А = Д.Товары.Количество(); Ин = 0; Пока А >= 1 Цикл СтрокаДляКопирования = Д.Товары[Ин]; НовыйД = Д.Скопировать(); НовыйД.Товары.Очистить(); НовыйД.Дата = ТекущаяДата(); НоваяСтрока = НовыйД.Товары.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаДляКопирования); НовыйД.вз_ДокИсточник = СтрокаДляКопирования.ДокументПартии.Ссылка; НовыйД.Записать(); А = А - 1; Ин = Ин + 1; КонецЦикла; КонецЕсли; КонецЦикла; |
|||
6
lirt82
23.11.17
✎
13:46
|
Парни, а как программно сделать так чтоб документ нельзя было изменить?
Д = Стр.Док.ПолучитьОбъект(); тут действие после которого ничего нельзя сделать с документом |
|||
7
lirt82
23.11.17
✎
13:49
|
т.е. ни провести, ни перепровести, все реквизиты недоступны для изменения, только просмотр
|
|||
8
lirt82
23.11.17
✎
13:50
|
все нашел, в Синтаксисе - Заблокировать()
|
|||
9
FIXXXL
24.11.17
✎
11:05
|
(5) зачем тебе целых два счетчика, лишних к тому же?
Для Каждого ТекСтрока Из Д.Товары Цикл СтрокаДляКопирования = ТекСтрока ; НовыйД = Д.Скопировать(); НовыйД.Товары.Очистить(); НовыйД.Дата = ТекущаяДата(); НоваяСтрока = НовыйД.Товары.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаДляКопирования); НовыйД.вз_ДокИсточник = СтрокаДляКопирования.ДокументПартии.Ссылка; НовыйД.Записать(); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |