Консультация № 161628
28.02.2009, 18:21
0.00 руб.
0 4 1
Хотелось бы модифицировать этот код без лишней Таблице значений НоваяСтрока, не знаю как это сделать лишь через одно ТабличноеПоле1, подскажите как это можно сделать.

Процедура КнопкаВыполнитьНажатие(Кнопка)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПриходнаяТовары.НомерСтроки,
| ПриходнаяТовары.Количество
|ИЗ
| Документ.Приходная.Товары КАК ПриходнаяТовары";

Запрос = Запрос.Выполнить();
Выборка = Запрос.Выбрать();

ТабличноеПоле1.Колонки.Добавить("НомерСтроки");
ТабличноеПоле1.Колонки.Добавить("Количество");

Пока Выборка.Следующий() Цикл
Если Выборка.Количество > 5 Тогда
НоваяСтрока = ТабличноеПоле1.Добавить();
НоваяСтрока.НомерСтроки = Выборка.НомерСтроки;
НоваяСтрока.Количество = Выборка.Количество;
КонецЕсли;
КонецЦикла;
ЭлементыФормы.ТабличноеПоле1.Значение = ТабличноеПоле1;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
КонецПроцедуры



Приложение:
http://irc1c.ru/458/

Обсуждение

Неизвестный
28.02.2009, 20:26
общий
это ответ
Здравствуйте, Djolejek!

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПриходнаяТовары.НомерСтроки,
| ПриходнаяТовары.Количество
|ИЗ
| Документ.Приходная.Товары КАК ПриходнаяТовары
|ГДЕ
| ПриходнаяТовары.Количество > 5";

Запрос = Запрос.Выполнить();
ТабЗнач = Запрос.Выгрузить();

ЭлементыФормы.ТабличноеПоле1.Значение = ТабЗнач ;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
Неизвестный
28.02.2009, 20:35
общий
Олег Руденко, спасибо большое за ваш ответ, но Ваш вариант не подходит, так как, отбор нужно произвести в цикле, а не в запросе.
Неизвестный
01.03.2009, 09:13
общий
Здравствуйте, Djolejek!
Тогда, где-то так:

Код:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПриходнаяТовары.НомерСтроки,
| ПриходнаяТовары.Количество
|ИЗ
| Документ.Приходная.Товары КАК ПриходнаяТовары";
Результат = Запрос.Выполнить();
ТабЗнач = Результат.Выгрузить();

ЭлементыФормы.ТабличноеПоле1.Значение = ТабЗнач.СкопироватьКолонки();
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

Для Каждого ТекСтрока Из ТабЗнач Цикл
Если ТекСтрока.Количество > 5 Тогда
ЭлементыФормы.ТабличноеПоле1.ДобавитьСтроку();

ТекСтрокаТабПоля = ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные;
ТекСтрокаТабПоля.НомерСтроки = ТекСтрока.НомерСтроки;
ТекСтрокаТабПоля.Количество = ТекСтрока.Количество;
КонецЕсли;
КонецЦикла;
Неизвестный
01.03.2009, 15:12
общий
Спасибо за ваши советы, и так тоже не подходит, работать всё таки нужно через реквизиты формы а не через элементы формы. Я пришёл к выводу что без ещё одной Таблице значений не получается добавить строку, даже в Синт.Помощнике такой же пример дан, как у меня. ну и ладно, так значит так... Спасибо.

Ваш вариант я бы модифицировал более правильно, только он практически не будет отличатся от моего 1-го:

Код:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПриходнаяТовары.НомерСтроки,
| ПриходнаяТовары.Количество
|ИЗ
| Документ.Приходная.Товары КАК ПриходнаяТовары";
Результат = Запрос.Выполнить();
ТабЗнач = Результат.Выгрузить();

ЭлементыФормы.ТабличноеПоле1.Значение = ТабЗнач.СкопироватьКолонки();

//Заполняем через реквизит Табличного поля
ТабличноеПоле1 = ТабЗнач.СкопироватьКолонки();
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();

Для Каждого ТекСтрока Из ТабЗнач Цикл
Если ТекСтрока.Количество > 5 Тогда
ЭлементыФормы.ТабличноеПоле1.ДобавитьСтроку();
ТекСтрокаТабПоля = ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные;
ТекСтрокаТабПоля = ТабличноеПоле1.Добавить();
ТекСтрокаТабПоля.НомерСтроки = ТекСтрока.НомерСтроки;
ТекСтрокаТабПоля.Количество = ТекСтрока.Количество;
КонецЕсли;
КонецЦикла;



Вот так будет более правильней... Спасибо, всё что хотел я выяснил. )
Форма ответа