Имя: Пароль:
1C
1С v8
Не создаются строки с записями в табличной части документа по резальтатам запроса
,
0 alpha78
 
21.07.22
11:24
Добрый день, ставится задача обновить строки табличной части документа - мы получаем данные из табличной части исходного документа
Что сделал - удалил существующие строки, затем выполнил запрос из табличной части конкретного документа, и данные запроса нужно записать в табличную часть документа
Вот код - при выполнении - пустая табоичная часть , хотя в исходном документе данные есть!

Маршруты.Очистить();
    
    
    Запрос = Новый Запрос ;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ТаблицаВодителиВодители.Ссылка,
                   |    ТаблицаВодителиВодители.Ссылка.Дата,
                   |    ТаблицаВодителиВодители.Маршрут КАК Маршрут,
                   |    ТаблицаВодителиВодители.Автомобиль КАК Автомобиль,
                   |    ТаблицаВодителиВодители.Водитель КАК Водитель,
                   |    ЕСТЬNULL(ТаблицаВодителиВодители.ПробегЗаДень, 0) КАК КМ,
                   |    ТаблицаВодителиВодители.ТемператураВХолодильнике КАК Температура,
                   |    ЕСТЬNULL(ТаблицаВодителиВодители.ТопливоГрн, 0) КАК Топливо,
                   |    ЕСТЬNULL(ТаблицаВодителиВодители.СкоростьГрн, 0) КАК Скорость,
                   |    ЕСТЬNULL(ТаблицаВодителиВодители.Штраф, """") КАК Штраф
                   |ИЗ
                   |    Документ.ТаблицаВодители.Водители КАК ТаблицаВодителиВодители
                   |ГДЕ
                   |    ТаблицаВодителиВодители.Ссылка = &СсылкаТВ" ;
                  
    Запрос.УстановитьПараметр("СсылкаТВ", СсылкаТВ);
    
    Выборка = Запрос.Выполнить().Выбрать() ;
    Пока Выборка.Следующий() Цикл
            Стр = Маршруты.Добавить() ;
            Стр.Маршрут = Выборка.Маршрут ;
            Стр.Автомобиль = Выборка.Автомобиль ;
            Стр.Водитель = Выборка.Водитель;  
            Стр.Километры = Выборка.КМ ;
            Стр.Топливо = Выборка.Топливо ;
            Стр.Скорость = Выборка.Скорость ;
            Стр.Температура = Выборка.Температура ;
            Стр.Штраф = Выборка.Штраф ;
            Стр.Стоимость = Стр.ЗарплатаВодителю + Стр.ЗарплатаГрузчику + Стр.Скорость + Стр.Топливо ;
    КонецЦикла ;
1 1Сергей
 
21.07.22
11:25
Отладчик поможет
2 Kigo_Kigo
 
21.07.22
11:26
а отладчике посмотрели, запрос то не пустой?
3 Kigo_Kigo
 
21.07.22
11:27
ВыборкаТЗ = Запрос.Выполнить().Выгрузить();
Сообщить(ВыборкаТЗ.Количество()); что скажет?
4 vicof
 
21.07.22
11:27
Запрос к таблице водителей, а данные пишем в таблицу маршрутов. Л - Логика.
5 Kigo_Kigo
 
21.07.22
11:28
(4) А что ту не логично?
6 rsv
 
21.07.22
11:29
(0)Тч.загрузить( реззапрос.выгрузить())

Реззапрос значит пустой
7 vicof
 
21.07.22
11:31
(5) "ставится задача обновить строки табличной части документа"
8 Kigo_Kigo
 
21.07.22
11:34
(7) У него ветьвато написано, но как я понял, обновляем строки в документе маршруты из документа - цитирую " из табличной части конкретного документа"
9 Kassern
 
21.07.22
11:34
(0) А исходный документ записан в базу?
И еще, вот эту портянку:

            Стр.Маршрут = Выборка.Маршрут ;
            Стр.Автомобиль = Выборка.Автомобиль ;
            Стр.Водитель = Выборка.Водитель;  
            Стр.Километры = Выборка.КМ ;
            Стр.Топливо = Выборка.Топливо ;
            Стр.Скорость = Выборка.Скорость ;
            Стр.Температура = Выборка.Температура ;
            Стр.Штраф = Выборка.Штраф ;
Замените на:
ЗаполнитьЗначенияСвойств(Стр,Выборка);
10 vicof
 
21.07.22
11:35
(8) Какая постановка задачи, такое и решение)
11 Kigo_Kigo
 
21.07.22
11:35
(9) А какая разница? Кода поменьше? ему все равно дописывать  
Стр.Стоимость = Стр.ЗарплатаВодителю + Стр.ЗарплатаГрузчику + Стр.Скорость + Стр.Топливо ;
12 Kassern
 
21.07.22
11:37
(11) Могу ошибаться, но вроде раньше проверял в одном проекте, где было огромное количество строк и реквизитов, то ЗаполнитьЗначенияСвойств отрабатывало гораздо быстрее. Ну и когда меньше и динамически добавяться новые данные из запроса, если ключ совпадает
13 Kassern
 
21.07.22
11:37
*ну и кода меньше
14 Kigo_Kigo
 
21.07.22
11:39
(12) (13) Это са не решает порблему, ТС молчит, значит выборка пустая
ТС СсылкаТВ - точно заполнена? И зачем тебе   |    ТаблицаВодителиВодители.Ссылка.Дата, в этом запросе?
15 Kassern
 
21.07.22
11:40
(14) По проблеме ТСа я написал выше "А исходный документ записан в базу? "
16 Kassern
 
21.07.22
11:40
Если он делает этот запрос в форме документа, который еще не записан в базу, то не удивительно, что у него пустой запрос приходит
17 Kigo_Kigo
 
21.07.22
11:47
(16) Ты читать умеешь, он делает запрос к ДРУГОМУ документу, а тут не важно записан ЭТОТ документ или нет
18 Kassern
 
21.07.22
11:52
(17) тут тяжело читать, так как автор не может нормально сформировать вопрос.
"мы получаем данные из табличной части исходного документа" -  как это связано с "запрос к ДРУГОМУ документу"?
"затем выполнил запрос из табличной части конкретного документа" - конкретный документ может быть и исходный, а не ДРУГОЙ. В общем пока ТС норм не сформулирует, мы можем только гадать, что и как у него.
19 alpha78
 
21.07.22
12:12
запрос нормально выгружается в таблицу значений, а вот в табличную часть нихрена не записывается
20 Kassern
 
21.07.22
12:14
(19) Таблица значений не пустая? В выборку в отладке попадаете?
21 Мультук
 
гуру
21.07.22
12:17
(19)

1) Нихрена не записывается <> не отображается на форме документа (это как пример)
2) Где выполняется этот чудный код
3) После окончания цикла в отладчике в таб.части записи появились ?
22 Мультук
 
гуру
21.07.22
12:18
Тут все говорят о некой таблице значений, хотя в (0) никаой тз - нет.
23 Kigo_Kigo
 
21.07.22
12:21
А может у тебя на форме ТЗ лежит а не Таб часть дока?
24 vicof
 
21.07.22
12:33
Короче, очередная рекомендация автору почитать книжки.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.