Формирование движений циклом

1. user1542877 01.03.21 18:17 Сейчас в теме
Добрый вечер, как примерно должен выглядеть цикл, по которому происходят движения в регистре накопления и регистре сведений после проведения документа через запрос? Как нужно брать данные с результата запроса?

Процедура ОбработкаПроведения(Отказ, Режим)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |	ПриходныйОрдерТовары.Ссылка.Склад,
               |	ПриходныйОрдерТовары.Номенклатура,
               |	ПриходныйОрдерТовары.Количество,
               |	ПриходныйОрдерТовары.Цена,
               |	ПриходныйОрдерТовары.Сумма,
               |	ПриходныйОрдерТовары.НаценкаВРознице
               |ИЗ
               |	Документ.ПриходныйОрдер.Товары КАК ПриходныйОрдерТовары"
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. danjer74 3 01.03.21 19:37 Сейчас в теме
(1)Это к задаче на спеца? :)
2. SlavaKron 01.03.21 18:40 Сейчас в теме
Данные документа-регистратора не нужно брать через запрос - они уже в оперативной памяти в прикладном объекте. Все реквизиты и табличные части документа доступны в контексте процедуры ОбработкаПроведения.
Попробуйте для начала воспользоваться конструктором движений и посмотрите какой будет сформирован код для понимания.
user1542877; danjer74; +2 Ответить
3. user1542877 01.03.21 18:50 Сейчас в теме
(2) именно нужно получить реквизиты документа и его ТЧ через запрос и по результату запроса формировать движения
4. danjer74 3 01.03.21 19:36 Сейчас в теме
(3)Сделайте через конструктор, чтобы понять суть. Потом просто запросом с параметром Ссылка, только еще хорошо представления полей в запросе сделать как в регистре и для РН и движения заполнить через ЗаполнитьЗначенияСвойств.
6. user1542877 01.03.21 19:58 Сейчас в теме
(4)
Процедура ОбработкаПроведения(Отказ, Режим)
Запрос = Новый Запрос;
Запрос.Текст =
	"ВЫБРАТЬ
	|	ПриходныйОрдерТовары.Ссылка.Склад,
	|	ПриходныйОрдерТовары.Номенклатура,
	|	ПриходныйОрдерТовары.Количество,
	|	ПриходныйОрдерТовары.Цена,
	|	ПриходныйОрдерТовары.Сумма,
	|	ПриходныйОрдерТовары.НаценкаВРознице
	|ИЗ
	|	Документ.ПриходныйОрдер.Товары КАК ПриходныйОрдерТовары";
ЗаполнитьЗначенияСвойств(СебестоимостьТовара, ПриходныйОрдер, "Склад, Номенклатура, Цена, Количество");	
	
	Движения.СебестоимотьТовара.Записывать = Истина;
	Для Каждого ТекСтрокаТовары Из Товары Цикл
		Движение = Движения.СебестоимотьТовара.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
		Движение.Период = Дата;
		Движение.Склад = Склад;
		Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
		Движение.Количество = ТекСтрокаТовары.Количество;
		Движение.Себестоимость = ТекСтрокаТовары.Цена * 100 / ТекСтрокаТовары.НаценкаВРознице;
	КонецЦикла;
Показать


как это должно выглядеть?
7. danjer74 3 01.03.21 20:05 Сейчас в теме
(6)Тут все категорически неверно. Вам нужно почитать про заполнение регистров и о самих регистрах. ЗаполнитьЗначенияСвойств тоже. Я смогу сделать и объяснить, но понимания у Вас, к сожалению, не будет. Поэтому сначала прочитайте как следует матчасть. Сразу ошибку укажу - не указан параметр Ссылка - у Вас будет заполнение по всем документам.
succub1_5; +1 Ответить
8. starjevschik 02.03.21 09:33 Сейчас в теме
(2) а 1С не согласна. Во всех стандартных документах для обработки проведения собирается кучей запросов огромный набор структур с данными в том числе и из документа-регистратора...
9. FatPanzer 02.03.21 09:40 Сейчас в теме
(8) На самом деле там собирается один большой запрос из кучи пакетов, и выполняется одной транзакцией чтения. А уже потом пакеты - в структуру, циклом по структуре - в регистры... И только запрос к самому документу обычно стоит особняком, чтобы потом все го реквизиты засунуть в качестве параметров в общий запрос-монстр...
Оставьте свое сообщение

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