Имя: Пароль:
1C
1С v8
Запрос. Как отобрать в выборке по текущей строке?
,
0 Boudybuilder
 
23.03.12
04:03
Доброй ночки!
Ситуация такова.
Есть табличное поле.
В одну колонку выгружаю строки с прайса номенклатуру контрагента , рядом   колонка соответствующая моей номенклатуре пока пустая. Создал запрос и вытягиваю из регистра НоменклатураКонтрагентов , но она конечно добавляется хаотично , так как я чтото недогоню как мне выборку отфильтровать по текущей строке. Чтоб всталяло значения которые соответсвуют значениям в регистре , если таковы имеются.

Что тут дописать? :


Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|    НоменклатураКонтрагентов.Контрагент,
|    НоменклатураКонтрагентов.Номенклатура,
|    НоменклатураКонтрагентов.ХарактеристикаНоменклатуры,
|    НоменклатураКонтрагентов.КодНоменклатурыКонтрагента,
|    НоменклатураКонтрагентов.АртикулНоменклатурыКонтрагента,
|    НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента,
|    НоменклатураКонтрагентов.ШтрихКодНоменклатурыКонтрагента,
|    НоменклатураКонтрагентов.ЕдиницаНоменклатурыКонтрагента
|ИЗ
|    РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
|ГДЕ
|    НоменклатураКонтрагентов.Контрагент = &Контрагент
|    И НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОДОБНО &НаименованиеНоменклатурыКонтрагента";
Запрос.УстановитьПараметр("Контрагент",Контрагент);
РезЗап = Запрос.Выполнить();
Если РезЗап.Пустой() Тогда
       Сообщить("Нет данных для заполнения!",СтатусСообщения.Информация);
       Возврат;
   Иначе
   Выб = РезЗап.Выбрать();
   Пока Выб.Следующий() Цикл
       НС = СписокНоменклатуры.Добавить();
       НС.Номенклатура = Выб.Номенклатура;
       НС.ХарактеристикаНоменклатуры = Выб.ХарактеристикаНоменклатуры;
       КонецЦикла;        
   КонецЕсли;
1 golden-pack
 
23.03.12
04:09
При выводе строки - Оформление строки
2 Boudybuilder
 
23.03.12
04:13
?
3 Boudybuilder
 
23.03.12
04:14
Это как?
4 Boudybuilder
 
23.03.12
04:14
НС = СписокНоменклатуры.Добавить();
Это наверное неправильно будет , так как поле уже заполнено , и добавлять нечего , надо только повставлять в пустые ячейки .
5 golden-pack
 
23.03.12
04:27
Табличное поле - процедура ПриВыводеСтроки()
6 Boudybuilder
 
23.03.12
04:30
Для Каждого ТС Из СписокНоменклатуры Цикл
   
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
              |    НоменклатураКонтрагентов.Контрагент,
              |    НоменклатураКонтрагентов.Номенклатура,
              |    НоменклатураКонтрагентов.ХарактеристикаНоменклатуры,
              |    НоменклатураКонтрагентов.КодНоменклатурыКонтрагента,
              |    НоменклатураКонтрагентов.АртикулНоменклатурыКонтрагента,
              |    НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента,
              |    НоменклатураКонтрагентов.ШтрихКодНоменклатурыКонтрагента,
              |    НоменклатураКонтрагентов.ЕдиницаНоменклатурыКонтрагента
              |ИЗ
              |    РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
              |ГДЕ
              |    НоменклатураКонтрагентов.Контрагент = &Контрагент
              |    И НоменклатураКонтрагентов.НаименованиеНоменклатурыКонтрагента ПОДОБНО &НаименованиеНоменклатурыКонтрагента";
Запрос.УстановитьПараметр("Контрагент",Контрагент);
Запрос.УстановитьПараметр("НаименованиеНоменклатурыКонтрагента" , ТС.НаименованиеНоменклатурыКонтрагента);
РезЗап = Запрос.Выполнить();
Если РезЗап.Пустой() Тогда
       Сообщить("Нет данных для заполнения!",СтатусСообщения.Информация);
       Возврат;
   Иначе
   Выб = РезЗап.Выбрать();
   Пока Выб.Следующий() Цикл
   ТС.Номенклатура = Выб.Номенклатура;
   ТС.ХарактеристикаНоменклатуры = Выб.ХарактеристикаНоменклатуры;
КонецЦикла;
КонецЕсли;
КонецЦикла;

Сделал так...
Но за запрос в цыкле меня когдато тут повесить хотели.
Как то же самое сделать , но грамотнее?
7 FIXXXL
 
23.03.12
05:34
(0) вот ты путало...
8 badboychik
 
23.03.12
06:29
непонятно че ты хочешь.
Ты хочешь выделять номенклатуру мышой в одном списке и чтоб для нее заполнялся другой список?
9 Boudybuilder
 
23.03.12
10:04
Нет.
Я в одну таблицу вытягиваю прайс. Потом устанавливаю где какие колонки (КодПоставщика , АртикулПоставщика . НоменклатураПоставщика) , после єтого нажимаю "ПЕРЕНЕСТИ" и вся номенклатурапоставщика переносится в другую таблицу. Там надо выставлять соответсвия уже номенклатуре в 1С. Тоесть заполняются 3 колонки , а две пустые остаются ( Номенклатура  ,ХарактеристикаНоменклатуры) , которые я ручками уже выставляю. Но перед тем я сделал это запрос , чтоб мне вернуло все уже заполненное , что есть в регистре НоменклатураПоставщика. И если по заполненным соответствия правильны , то я эти строки удаляю , и продолжаю устанавливать пустые. Во как ;)
10 Boudybuilder
 
23.03.12
11:32
Как мне програмно в Табличном Поле удалить каждую строку где нет заполненого поля Номенклатура ?
11 Boudybuilder
 
23.03.12
11:33
Для Каждого ТС Из СписокНоменклатуры Цикл
       Если ТС.Номенклатура.Пустая() Тогда
           СписокНоменклатуры.Удалить(ТС);
       КонецЕсли;
       КонецЦикла;

Написал это но оно не то... :(