Имя: Пароль:
1C
1С v8
По результату запроса создать документы
🠗 (Волшебник 20.06.2017 12:42)
,
0 AsadRoman
 
20.06.17
12:42
Есть запрос, приблизительно такой

ВЫБРАТЬ первые 100
    Адреса.Ссылка КАК АдресДоставки,
    Адреса.Владелец КАК Контрагент,
    Адреса.Договор.Организация КАК Организация,
ИЗ
    Справочник.АдресаДоставки КАК Адреса

Нужно по результату этого запроса создать документы одного вида и вывести созданные документы в таблицу на форме. Я делаю так:

Выборка = Запрос.Выполнить().Выбрать();
    
Пока Выборка.Следующий() Цикл
    Док = Документы.УниверсальныйДокумент.СоздатьДокумент();
    ЗаполнитьЗначенияСвойств(Док, Выборка);
    Док.Записать(РежимЗаписиДокумента.Проведение);
    ЗаписьТаблицы = Объект.Документы.Добавить();
    ЗаполнитьЗначенияСвойств(ЗаписьТаблицы, Док);
КонецЦикла;

Говорят: коряво.
Как можно иначе?
1 Волшебник
 
модератор
20.06.17
12:42
Спроси у тех, кто говорит "коряво"
2 piter3
 
20.06.17
12:43
Зачем в цикле вот это?
Док = Документы.УниверсальныйДокумент.СоздатьДокумент();
    ЗаполнитьЗначенияСвойств(Док, Выборка);
    Док.Записать(РежимЗаписиДокумента.Проведение);
3 AsadRoman
 
20.06.17
12:46
(2) как иначе? подскажи.
4 piter3
 
20.06.17
12:51
(3) Я не знаю задачи.Но во1 у тебя ТЧ не сохраняется.Во2 если не нужно делать док то создание дока вне цикла.Проведение в самом низу после цикла.И запрос непонятный
5 h-sp
 
20.06.17
12:55
(4) чего то вы запутываете. Всё нормально у него.
6 AsadRoman
 
20.06.17
12:56
(4) Ну вроде понятно написал: 1. Запросом выбираю адреса контрагентов (условия запроса не стал выкладывать). Нужно: а) по результатам запроса создать документы; б) отобразить созданные документы в таблицу на форме. Вопрос: как это сделать минуя цикл?
7 AsadRoman
 
20.06.17
13:18
(4) Ау, Питэр, Нарисуй свой вариант, плииз. Ну очень хочу увидеть изящный вариант.
8 decdmb
 
20.06.17
13:20
(6) Так может у тебя результат запроса можно сразу загрузить в тч документа и заполнить 1 раз реквизиты шапки документа? Структуру документа ты не привел.
9 piter3
 
20.06.17
13:20
(5) Скажи,а что у него будет в тч
10 Сильф
 
20.06.17
13:29
(0) Может, автор задачи имел в виду, что нужно результат запроса выгрузить в таблицу, а потом из неё сразу загрузить в Объект.Документы? Это и будет "минуя цикл". Или ещё короче:

Объект.Документы.Загрузить(Запрос.Выполнить().Выгрузить());
11 Сильф
 
20.06.17
13:30
(10) А, протупил. Документы же ещё нужно создать.
12 X Leshiy
 
20.06.17
13:31
(0) Забей.
13 AsadRoman
 
20.06.17
13:34
(8) (9) уточняю: каждая строка запроса - один документ. Табличная (ые) часть (и) документа к запросу не имеет (ют) отношения. Можете считать что ее (их), табличной (ых) части (ей) нет.
14 AsadRoman
 
20.06.17
13:34
(12) Хороший ответ
15 AsadRoman
 
20.06.17
13:34
(12) Я под столом
16 X Leshiy
 
20.06.17
13:36
(13) Тем более забей.

Работает, устраивает?

Забей.
17 AsadRoman
 
20.06.17
13:37
(16) Меня устраивает. Но шеф сказал: "позор для программиста". Задело, однако.
18 X Leshiy
 
20.06.17
13:38
(17) Сделай виноватое литцо и спроси проникновенно: "А как надо, научите?"
19 AsadRoman
 
20.06.17
13:39
(18) "Лицо подчиненное перед лицом начальствующим должно иметь вид лихой и придурковатый..." Боюсь показаться умнее начальника, потому здесь и спрашиваю. ;-)
20 X Leshiy
 
20.06.17
13:40
(17) Я уже хочу видеть "не позор для программиста", рецепты от Шефа.
21 AsadRoman
 
20.06.17
13:43
(20) Осмелился - спросил (по скайпу) жду ответа.
22 X Leshiy
 
20.06.17
13:47
(21) У меня где-то есть запрос в цикле, на тот момент было хорошее решение. Сейчас бы переписал, но лень, работает.
Совесть не мучает :)
23 AsadRoman
 
20.06.17
13:55
Тут можно материться?
24 AsadRoman
 
20.06.17
13:56
Оказывается просто не был просмотрен код в цикле. Т.е. все в норме.
25 AsadRoman
 
20.06.17
13:56
Вопрос закрыт.
26 AsadRoman
 
20.06.17
15:36
Как-то странно. Куда записи деваются? Короче: шеф не прочитал код, который в цикле. Он решил что я там проверяю условия. Я молодец. Всем спасибо. Тема закрыта.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший