Имя: Пароль:
1C
1С v8
Заполнение табличной части запросом
0 JuixyJes
 
18.04.19
14:49
Есть код заполняющий табличную часть документа, но проблема в том, что один реквизит берется из другого документа, и он выводится после заполнения, второй строчкой

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

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    
        НовСтрока = ТЧЗП.Добавить();
        НовСтрока.Наряд = ВыборкаДетальныеЗаписи.Наряд;
        НовСтрока.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
        НовСтрока.Продукция = ВыборкаДетальныеЗаписи.Продукция;
        НовСтрока.Технология = ВыборкаДетальныеЗаписи.Технология;
        НовСтрока.Сумма = ВыборкаДетальныеЗаписи.Сумма;
        НовСтрока.Косяк = ВыборкаДетальныеЗаписи.Косяк;
        НовСтрока.СуммаКосяка = ВыборкаДетальныеЗаписи.СуммаК;
        НовСтрока.КТУ = "1.0";
        
    КонецЦикла;
1 piter3
 
18.04.19
14:51
Весельчаки)
2 igork1966
 
18.04.19
14:52
(0) бредовый запрос, по которому логика непонятна


"НарядТехнологии.Ссылка.Заявка"
За это нужно бить канделябром
3 user-ok
 
18.04.19
14:52
Я бы сказал "планокуры"
ТС открой для себя конструкцию

ТЧЗП.Загрузить(Запрос.Выполнить.Выгрузить);
к делу не относится, но писать меньше и читать проще
4 user-ok
 
18.04.19
14:53
а вообще-то тебе вместо объединения, наверное, нужно левое соединеие
5 НЕА123
 
18.04.19
14:53
Объеденить нельзя, Соединить.(с) казнить нельзя помиловать.
6 1Сергей
 
18.04.19
14:59
"ВЫБРАТЬ
    |    КосякСотрудника.Наряд КАК Наряд,
    |    КосякСотрудника.Сотрудник КАК Сотрудник,
    |    КосякСотрудника.Ссылка КАК Косяк,
    |    КосякСотрудника.СуммаК КАК СуммаК,
    |    КосякСотрудника.Продукция КАК Продукция,
    |    КосякСотрудника.Технология КАК Технология,
    |    КосякСотрудника.Наряд.Сумма КАК Сумма
    |ИЗ
    |    Документ.КосякСотрудника КАК КосякСотрудника
    |ГДЕ
    |    КосякСотрудника.Наряд.Заявка = &Заявка ";
7 lodger
 
18.04.19
15:06
(3) имхо... конструкция вида "ТЧЗП.Загрузить(Запрос.Выполнить.Выгрузить())" произведет 2 цикла с промежуточным помещением в память (может быть большой) таблицей. это помимо того, что в теле запроса и так существует эта же таблица. методологи 1ц рекомендуют использовать нативную конструкцию с выборкой, которая обежит таблицу, которая существует в теле запроса, не создавая промежуточную ТЗ. в ходе цикла выборки же и добавлять новые строки в ТЧ. если очень лениво писать то можно вызывать микроцикл с конструкцией вида ЗаполнитьЗначенияСвойств().
8 user-ok
 
18.04.19
15:08
(7) Не знал. Спасибо
9 Darych
 
18.04.19
15:10
(7) ток иногда так быстрее, когда грузишь потом сразу в тч... замерял
10 1Сергей
 
18.04.19
15:15
Какой-то быдлокодинг. В чью, необременённую голову интеллектом, пришла гениальная мысль так назвать документ?
11 Sysanin_1ц
 
18.04.19
15:18
(7) Вообще то никто не мешает 1с оптимизировать работу с таблицами значений. А так да, быстрее будет выполняться на ассемблере
12 Sysanin_1ц
 
18.04.19
15:19
(10) Особенно понравилось КосякСотрудника.Ссылка ))
13 hhhh
 
18.04.19
15:26
(12) по идее должно быть КосякСотрудников
14 Sayan_mi
 
18.04.19
15:31
А кто мешает ТЧЗП = РезультатЗапроса.Выгрузить, Предварительно добавив в запрос поле КТУ = "1.0";
15 piter3
 
18.04.19
15:39
А почему кту строка?
16 Sayan_mi
 
18.04.19
15:43
(15) не знаю почему в (0) КТУ строка.
17 piter3
 
18.04.19
15:44
(16)Так я к автору,забыл номер указать
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший