ППП, не хочется вдаваться в детали алгоритма, но к сожалению во временных переменных хранить не получится. Я уже думала об этом варианте.
Slin, модуль большой, но кусок, где идёт работа с регистрами следующий:
// освобождение наименее заполненных полок
Для каждого ТекСтрока Из ПодходящиеПолки Цикл
ТекПолка = ТекСтрока.НомерПолки;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасположенияТоваровОстатки.НомерПолки,
| РасположенияТоваровОстатки.КоличествоОстаток Как Количество,
| РасположенияТоваровОстатки.Наименование,
| РасположенияТоваровОстатки.Артикул
|ИЗ
| РегистрНакопления.РасположенияТоваров.Остатки КАК РасположенияТоваровОстатки
|ГДЕ
| РасположенияТоваровОстатки.НомерПолки = &НомерПолки";
Запрос.УстановитьПараметр("НомерПолки", ТекПолка);
Результат = Запрос.Выполнить().Выгрузить();
Для каждого Строка Из Результат Цикл
ТекАртикул = Строка.Артикул;
Количество = Строка.Количество;
// функция из глобального модуля, где тоже нужны данные, которые записываю в регистр.
Размещение = МодульФункцийРазмещения.РазмещениеОборачивоемость(ТекАртикул,Количество);
// Совершаем необходимые для расчётов проводки документов.
// регистр РасположенияТоваров Приход, добавляем товары на новые полки
Для Каждого ТекСтрокаРазмещение Из Размещение Цикл
Движение = Движения.РасположенияТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.НомерПолки = ТекСтрокаРазмещение.НомерПолки;
Движение.Наименование = ТекНаименование;
Движение.Артикул = ТекАртикул;
Движение.Количество = ТекСтрокаРазмещение.Количество;
КонецЦикла;
//Движения.РасположенияТоваров.Записать();
// регистр ЗаполненностьПолок Приход
// используются данные, записанные в предыдущий регистр
Для Каждого ТекСтрокаРазмещение Из Размещение Цикл
Движение = Движения.ЗаполненностьПолок.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.НомерПолки = ТекСтрокаРазмещение.НомерПолки;
Регистр = РегистрыНакопления.РасположенияТоваров;
ВыборкаИзРег = Регистр.Выбрать();
ЗанятВес = 0;
ЗанятОбъём = 0;
Пока ВыборкаИзРег.Следующий() Цикл
Если ТекСтрокаРазмещение.НомерПолки = ВыборкаИзРег.НомерПолки Тогда
ТекАртикул = ВыборкаИзРег.Артикул;
ТекКол = выборкаИзРег.Количество;
ТекВес = Справочники.СписокТоваров.НайтиПоРеквизиту("АртикулТовара",ТекАртикул).Вес;
ТекОбъём = Справочники.СписокТоваров.НайтиПоРеквизиту("АртикулТовара",ТекАртикул).Объём;
ЗанятВес = ТекКол*ТекВес;
ЗанятОбъём = ТекКол*ТекОбъём;
КонецЕсли;
КонецЦикла;
Движение.Вес = ЗанятВес;
Движение.Объём = ЗанятОбъём;
КонецЦикла;
Ошибки:
1. если оставить текст, как сейчас, то ошибку никакую не выдаёт, но в регистр и не записывает, в ВыборкаИзРег нет соответствующей строки;
2. если добавить строку
Движения.РасположенияТоваров.Записать();
после проводки по соответствующему регистру, то ошибка:
{Документ.ДокументНаПеремещение.Форма.ФормаДокумента(253)}: Ошибка при вызове метода контекста (Записать): Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Расположения товаров).