С большой долей вероятности - Вы пытаетесь изменять данные в базе данных через объект типа “СправочникСсылка”, а Объекты данного типа позволяют обращаться к реквизитам и табличным частям в режиме “только чтение”. Чтобы изменить данные в базе данных, нужно получить специальный объект для записи – СправочникОбъект. Это возможно с помощью метода “ПолучитьОбъект()”. Именно через объект типа “СправочникОбъект” (а также ДокументОбъект, ПланСчетовОбъект и аналогичных) возможно изменение данных в базе данных.
Данная задача может быть решена как с использованием вложенных запросов, так и с помощью. временных таблиц. Попробуем решить задачу, используя временные таблицы. Сначала приведем весь текст запроса, а потом кратко разберем по частям принцип его работы.
Текст запроса:
Данный пакетный запрос содержит три подзапроса. Рассмотрим их подробнее.
Первый запрос пакета группирует данные по периоду, контрагенту и номенклатуре и помещает их во временную таблицу втБезЦены. Далее мы будем соединять эту таблицу с таблицей цен номенклатуры и получим небольшой выигрыш в том, что соединять будем уже сгруппированные данные.
Во втором подзапросе мы соединяем временную таблицу с регистром сведений «ЦеныНоменклатуры» при этом из регистра сведений мы выбираем МАКСИМАЛЬНУЮ дату из меньших или равных дат. Результат этого подзапроса также помещаем во временную таблицу (втМаксПериод). Посмотрим, какие данные попадают в эту таблицу:
Рис. 8 Временная таблица втМаксПериод
В последнем запросе пакета, мы еще раз соединяем временную таблицу с таблицей цен номенклатуры. На этот мы соединяем таблице по номенклатуре и периоду.