Имя: Пароль:
1C
1С v8
Перебрать строки в документе
0 Artyom20
 
20.10.14
13:19
Добрый день, есть задача - выбрать документы реализации за определенный период, в которых только одна строка (тч.товары) и записать в этот товар значение из документа.

Начал писать запрос и застопорился, помогите пожалуйста - как написать такой чудокод.

Запрос = Новый запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    РеализацияТоваровУслуг.Ссылка,
|    РеализацияТоваровУслуг.Дата,
|    РеализацияТоваровУслуг.Товары.(
|        Ссылка,
|        НомерСтроки,
|        Количество,
|        Номенклатура,
|        ИбэйАйди
|    )
|ИЗ
|    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг"
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
1 Maxus43
 
20.10.14
13:20
|ИЗ
|    Документ.РеализацияТоваровУслуг.Товары
2 КтоКакБог
 
20.10.14
13:20
(0) если одноразовая операция сделай простой выборкой
3 Ник второй
 
20.10.14
13:21
(2) Дурачек?
4 Maxus43
 
20.10.14
13:21
>>и записать в этот товар значение из документа
http://fishki.net/upload/users/412503/201406/24/17976ebd64bd6919a516e4fc9eac89f6.jpg
5 Maxus43
 
20.10.14
13:22
для подсчета кол-ва строк в ТЧ используй группировку по ссылке и ИМЕЮЩИЕ на поле ТЧ
6 butterbean
 
20.10.14
13:24
ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка
ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
  ЛЕВОЕ СОЕДИНЕНИЕ (
         ВЫБРАТЬ Ссылка ИЗ РеализацияТоваровУслуг.Товары
         ГДЕ НомерСтроки = 2) КАК ВложЗапрос
   По ВложЗапрос.Ссылка = РеализацияТоваровУслуг.Ссылка
ГДЕ
  ВложЗапрос.Ссылка ЕСТЬ NULL
7 Ник второй
 
20.10.14
13:26
(6) Естественно вложенный запрос следовало во временную таблицу запихнуть.
8 Artyom20
 
20.10.14
13:28
(4)  у меня в документе есть реквизит "Вес", в который записывается значение из весов, когда собирается товар) - я хочу значение этого реквизита запихнуть в номенклатуру.
9 Maxus43
 
20.10.14
13:28
(7) нафига бесполезная ВТ с 100500 документов?
я б ИМЕЮЩИЕ использовал, без таких извращений
10 Maxus43
 
20.10.14
13:29
(8) для каждой номенклатуры вес всегда один? и в номенклатуре есть такой реквизит?
11 Artyom20
 
20.10.14
13:30
блин, я чето совсем не понимаю этих левых соединеный и временных таблиц, я так понимаю, что этот запрос (6) - выбирает доки где 1 строка в тч.товары ?
12 Ник второй
 
20.10.14
13:30
(9) Что бы тормозило меньше, учи мат часть.
13 ObjectRelation Model
 
20.10.14
13:32
ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Ссылка
ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
СГРУППИРОВАТЬ ПО РеализацияТоваровУслугТовары.Ссылка
ИМЕЮЩИЕ КОЛИЧЕСТВО(*)=1
14 Artyom20
 
20.10.14
13:33
(10) я добавил реквизит в номенклатуру, и да;) - вес будет один. если что я могу просто этой обработкой его перезаписывать.
15 Maxus43
 
20.10.14
13:35
(12) именно, учи матчасть.
Затраты на создание и индесацию (если есть) могут быть больше, чем выполнение вложенного запроса.
Я нифига не сторонник вложенных, риск неправильного плана запроса в скуле создают они, но огульно лупить всё во временные таблицы не есть гуд
16 Ник второй
 
20.10.14
13:35
(15) В данном случае есть гуд, так как предсказуемость важна.
17 Ник второй
 
20.10.14
13:36
(14) Влохое решение в документ писать данные из элемента справочника при каждом изменении этого справочника.

Для чего тебе в РТиУ вес?
18 Maxus43
 
20.10.14
13:37
(16) в данном случае - ни вложенный, ни ВТ не нужны впринципе, см (13)
19 Artyom20
 
20.10.14
13:38
(17) фирма работает с почтовыми службами, "общий вес документа" - то есть вес заказа отправляется курьерам и они нам высылают сумму и т.д., вот как то так )
20 Artyom20
 
20.10.14
13:42
(18)
спасибо, помогите пожалуйста сделать запись из дока в товар:

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
    
КАК ОТКРЫТЬ ТОВАР И ЗАПИСАТЬ В НЕГО ЗНАЧЕНИЕ?

КонецЦикла;