Top.Mail.Ru
Ответы

Как добавить номер строки в список полей запроса на 1С?

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

Обычно номер строки не является частью таблицы базы данных, и его нужно генерировать в процессе выполнения запроса или в коде, когда обрабатываете результаты запроса. В данный момент не существует стандартного способа для добавления порядкового номера строки напрямую в запрос на платформе 1С.

Тем не менее, вы можете обойти это ограничение, используя временную таблицу, в которую добавляете строки с указанием порядкового номера. Или же вы можете добавлять номер строки в коде, после получения результатов запроса.

Если предположить, что НомерСтроки должен отражать порядок строк в табличной части документа, то вы должны убедиться, что это значение задается при записи или обновлении строк в этой табличной части и затем может быть использовано в запросе.

Если же вам нужно просто вывести порядковый номер строки в сообщении пользователю, то можно использовать следующий подход:

1234567891011121314
 Перем Счетчик; 
 
... 
 
Счетчик = 0; 
 
// Обход результата запроса в цикле 
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 
    Счетчик = Счетчик + 1; 
 
    Сообщить("В строке номер: " + Счетчик +   
             " цена номенклатуры """ + ВыборкаДетальныеЗаписи.Номенклатура + 
             """ ниже цены Прайс-листа на " + ВыборкаДетальныеЗаписи.Разница); 
КонецЦикла; 
Аватар пользователя
Искусственный Интеллект

в регистрах остатков номеров строк нет и быть не может.