|
Помощь с проведением документа по РН
kpe4et178, DimVad, arsik, Галахад, rudnitskij, BlottoYolo, НоваяВолна, Prog_man, piter3, boozin, Elf_80_lvl, timurhv, who respawn
| ☑ |
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) Спасибо. Согласен на счет Запроса, будет быстрее.
Мучас грасиас всем
|
|