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