|
Помощь с проведением документа по РН | ☑ | ||
|---|---|---|---|---|
|
0
kpe4et178
20.02.25
✎
15:41
|
Всем привет.
Еще не пятница, но мозг ушел погулять. Есть справочник Номенклатуры, с реквизитом ТипНоменклатуры. ТипНоменклатуры - перчисления Товар, Услуга. Есть документ прихода товаров с ТЧ Товары, туда подбираются и услуги и товары. Как правильно сдлеать обработку проведения, чтобы отразить приход только товаров по регистру ОстаткиТоваров? Как-то в цикле проверять тип номенклатуры - не айс мне кажется. |
|||
|
1
Галахад
гуру
20.02.25
✎
15:43
|
Подготовить нужную табличку.
Закинуть табличку в РН. Профит. П.С. Цикл это норм. |
|||
|
2
DimVad
20.02.25
✎
15:45
|
ТЧ выгружаете во временную таблицу запроса, делаете отбор по типу в запросе, выгружаете для проведения.
|
|||
|
3
Elf_80_lvl
20.02.25
✎
15:46
|
(0) Можно выгрузить табличку с отбором, можно циклом.
|
|||
|
4
kpe4et178
20.02.25
✎
15:47
|
Движения.ОстаткиТоваров.Записывать = Истина;
// Обходим строки документа Для Каждого СтрокаТЧ Из Товары Цикл // Проверяем, что тип номенклатуры - "Товар" Если СтрокаТЧ.Номенклатура.ТипНоменклатуры = Перечисления.ТипНоменклатуры.Товар Тогда // Формируем запись в регистр ОстаткиТоваров Движение = Движения.Остатки.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Склад = Склад; Движение.Номенклатура = СтрокаТЧ.Номенклатура; Движение.Количество = СтрокаТЧ.Количество; КонецЕсли; КонецЦикла; |
|||
|
5
kpe4et178
20.02.25
✎
15:48
|
(1) вот я тоже думаю, что будет быстрее Цикл или Выгрузка с отбором?
|
|||
|
6
DimVad
20.02.25
✎
15:54
|
(4) СтрокаТЧ.Номенклатура.ТипНоменклатуры - в этот момент система будет загружать весь объект номенклатуры в память (если раньше был загружен - возьмёт из кеша).
Я имел в виду что-то типа : Запрос = Новый Запрос( "ВЫБРАТЬ | ВЫРАЗИТЬ(Товары.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура, | Товары.Количество КАК Количество |ПОМЕСТИТЬ втТовары |ИЗ | &тзТовары КАК Товары |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | втТовары.Номенклатура, | втТовары.Количество |ИЗ | втТовары КАК втТовары |ГДЕ | втТовары.Номенклатура.ТипНоменклатуры = Значение(Перечисление.ТипНоменклатуры.Товар)"); Запрос.УстановитьПараметр("тзТовары", Док_.Товары.Выгрузить(,"Номенклатура, Количество")); |
|||
|
7
arsik
гуру
20.02.25
✎
15:55
|
(2) Зачем временную? Можно сразу из базы читать. В момент проведения все данные документа уже в базе.
|
|||
|
8
DimVad
20.02.25
✎
15:57
|
(7) Можно. Привычка :-)
|
|||
|
9
kpe4et178
20.02.25
✎
16:07
|
(6) Спасибо. Согласен на счет Запроса, будет быстрее.
Мучас грасиас всем |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |