|
Заполнение табличной части документа через цикл | ☑ | ||
---|---|---|---|---|
0
victor-o555
29.06.15
✎
01:21
|
РезультатЗапроса1 содержит номенклатуру с положительными и отрицательными остатками. Как заполнить табличную часть поступления со всеми отрицательными остатками из запроса?
Как я написал - создаются новые документы с одним наименованием номенклатуры. Пока РезультатЗапроса1.Следующий() Цикл Наименование1 = РезультатЗапроса1.Субконто1; Организация1 = РезультатЗапроса1.Организация1; Количество1 = РезультатЗапроса1.КоличествоДт; Если Количество1<0 Тогда НовоеПоступление = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); НовоеПоступление.Дата = ТекущаяДата(); НовоеПоступление.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары; НовоеПоступление.Организация = Организация1; ТабличнаяЧасть = НовоеПоступление.Товары.Добавить(); ТабличнаяЧасть.Номенклатура = Наименование1; ТабличнаяЧасть.Количество = -Количество1; НовоеПоступление.Записать(); КонецЦикла; |
|||
1
France
29.06.15
✎
01:24
|
Выгружай в тз. Зачем мучать циклы.
|
|||
2
victor-o555
29.06.15
✎
01:30
|
я бухгалтер, изучаю 1С. можно в двух словах как нужно это реализовать?
|
|||
3
France
29.06.15
✎
01:39
|
Тз = запрос.выполнить().выгрузить().
Или, если уж цикл, то использовать ЗаполнитьЗначеняСвойств() |
|||
4
Mirnin
29.06.15
✎
02:30
|
У тебя документ внутри цикла создается. Лучше сперва провести проверку создавать/не создавать, а затем циклом заполнять табличную часть.
Ну, либо переменную ввести, а-ля ДокументСоздан, определив её перед циклом и сменив после создания документа. Если НЕ ДокументСоздан Тогда НовоеПоступление = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); ДокументСОздан = Истина; КонецЕсли; |
|||
5
Jokero
29.06.15
✎
07:39
|
Зачем документ в цикле то создаешь, сделай это перед циклом и после цикла запишешь, если ТабЧасть не пустая.
Если ТабличнаяЧасть.Количество() > 0 тогда НовоеПоступление.Записать(); КонецЕсли; |
|||
6
ЧеловекДуши
29.06.15
✎
07:41
|
(0) Попробуйте нанять Программиста.
Либо начать работу с Франчайзи. Либо работать с фрилансером. ... Бухгалтер - "Программист", конечно хорошо, но как то лучше быть кем то одним :) ... А так, в коде в (0): НовоеПоступление = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); НовоеПоступление.Дата = ТекущаяДата(); НовоеПоступление.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары; НовоеПоступление.Организация = Организация1; Пока РезультатЗапроса1.Следующий() Цикл Наименование1 = РезультатЗапроса1.Субконто1; Организация1 = РезультатЗапроса1.Организация1; Количество1 = РезультатЗапроса1.КоличествоДт; Если Количество1<0 Тогда ТабличнаяЧасть = НовоеПоступление.Товары.Добавить(); ТабличнаяЧасть.Номенклатура = Наименование1; ТабличнаяЧасть.Количество = -Количество1; КонецЦикла; НовоеПоступление.Записать(); |
|||
7
ЧеловекДуши
29.06.15
✎
07:43
|
+(6) Перед: КонецЦикла; , поставить КонецЕсли;
Так же дописать проверку, как в (5), перед записью документа, что бы не было пустых документов :) |
|||
8
ЧеловекДуши
29.06.15
✎
07:45
|
+(6) Табличная часть документа ограничена "99999" строк.
|
|||
9
SansyGl
29.06.15
✎
07:56
|
Да и в запросе можно сразу ограничить на только отрицательные количества. Будет как минимум на порядок быстрее работать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |