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