Имя: Пароль:
1C
 
Изменения даты документа.
,
0 Олеся999
 
04.07.17
18:34
Подскажите пожалуйста как менять дату у всех документов,  не прибегая к циклу, так как очень много строк ?
1 Любопытная
 
04.07.17
18:35
Много строк где?
Объекты вроде пачкой не менялись до сих пор, только по одному
2 mexanik_96
 
04.07.17
18:39
(0) апдейт в субд
3 Олеся999
 
04.07.17
18:47
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
|    РасходнаяНакладная.Ссылка,
|    РасходнаяНакладная.Номер КАК Ном,
|    РасходнаяНакладная.Номенклатура КАК Наименование
|ИЗ
|    Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары"
|ГДЕ
|РасходнаяНакладнаяТовары.Номенклатура.Услуга = истина  ";
Результат=Запрос.Выполнить();    
Рез = Результат.Выбрать();
Пока рез.Следующий()Цикл
    ТекДок= выборка.ссылка.получитьОбъект();
    ТекДок.Дата= "тут пишим дату"
    ТекДок.Записать();
КонецЦикла;
4 Олеся999
 
04.07.17
18:48
Это можно делать не в цикле ?
5 lera01
 
04.07.17
18:50
Делайте запрос к таблице документа, а не к табличной части. Будет быстрее.
6 mexanik_96
 
04.07.17
18:51
(4) ну в (2) же там циклов не будет(как кажется)
7 Олеся999
 
04.07.17
18:58
(5) Маленько не поняла, как это будет выглядеть ?)
8 lera01
 
04.07.17
19:00
(5)Пардон, условия на номенклатуру не увидела. Тогда ваш запрос модифицируйте. Номенклатуру выбирать не надо, в запросе Выбрать Различные. Тогда выборка меньше будет. И в цикле меняйте. Вариант без цикла не предлагаю, но что есть ускорите.
9 Олеся999
 
04.07.17
19:04
(8)

"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    РасходнаяНакладная.Ссылка,
|    РасходнаяНакладная.Номер КАК Ном
|ИЗ
|Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары"
|ГДЕ
|РасходнаяНакладнаяТовары.Номенклатура.Услуга = истина  ";


Так вот будет быстрее?
А почему номенклатуру нужно убрать ?
10 Любопытная
 
04.07.17
19:07
Потому что нужен только объект, чтобы его поменять, вот и получайте только ссылку на него, зачем вам всё остальное?
11 lera01
 
04.07.17
19:08
Ну вот представьте, что у вас в накладной 10 услуг. Если номенклатуру не убрать, у вас выведется в результате запроса 10 разных строк: Накладная №8/Услуга1, Накладная №8/Услуга 2 и т.д. А если без номенклатуры - только список различных ссылок.
12 mexanik_96
 
04.07.17
19:08
(9) девушки такие девушки... дак а выборку то в цикле придется обходить что противоречит же (0) ну! да и запрос не оптимален долго будет все равно....
13 Олеся999
 
04.07.17
19:09
(10)


"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    РасходнаяНакладная.Ссылка,
|ИЗ
|Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары"
|ГДЕ
|РасходнаяНакладнаяТовары.Номенклатура.Услуга = истина";

Я так понимаю это самый оптимальный  вариант ?))
14 Олеся999
 
04.07.17
19:11
(12) Ну можно и циклом, мне бы просто самый оптимальный вариант )))
15 Любопытная
 
04.07.17
19:14
(12) вы считаете, что с такими вопросами ТС может в таблицу ручками залезть и даты поправить?) А если у нее база файловая?) (13) а по дате не надо ограничить? Только проведенные выбрать, помеченные на удаление отсеять?
16 Олеся999
 
04.07.17
19:19
(15) БД клиент серверная
17 PiotrLoginov
 
04.07.17
19:21
ТС, вопросы остались?
к советам в (15) прислушайтесь

апдей в СУБД действительно быстрее, но лучше не надо.
менять дату можно только по-одному, так что без цикла не обойтись.

для ускорения запись измененного объекта можно выполнять в режиме загрузки. Тогда она быстрее может происходить
18 PiotrLoginov
 
04.07.17
19:23
*апдей = апдейт
19 mexanik_96
 
04.07.17
19:24
(12) дак а почему не то? потому что типа драйвера нет обдц(подкл к базе извне?). вопрос был в (0) как без циклов, ответ был как без циклов.
20 mexanik_96
 
04.07.17
19:24
+(19) какой вопрос вопрос такой и ответ про фб слова не было вообще.
21 Любопытная
 
04.07.17
19:31
(17) а движения потом у документа кто править будет?
Задача просто даты у документов переставить или это всё-таки какие-то последствия для учёта должно принести?
22 Олеся999
 
04.07.17
19:34
(17)Дак можно поменять и групповым проведением воспользоваться.


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

Вот так вот оптимально ?)))
23 Любопытная
 
04.07.17
19:38
Если нужно за весь период, то да. Записать() завернуть в попытку, ибо в таком варианте они будут перепроверить счёт и мало ли что вылезет.
24 Любопытная
 
04.07.17
19:39
Перепроводиться документы будут. Автоподстановка рулит))
25 Ц_У
 
04.07.17
19:40
(22) с такой-то фоткой,конечно можно,да - это оптимально, делай.
26 PiotrLoginov
 
04.07.17
19:40
(22)
ТекДок= выборка.ссылка.получитьОбъект();
ТекДок.Дата= "тут пишем дату"
ТекДок.ОбменДанными.Загрузка = Истина;
ТекДок.Записать();


но могут быть пропущены важные проверки корректности новой даты. Это уж смотря какая конфа и какой документ
27 Олеся999
 
04.07.17
19:45
(25) Я Серьезно!
28 Ц_У
 
04.07.17
19:45
(27) я то же :))
29 Ёпрст
 
04.07.17
19:48
(27) тока вот не запишет же, ну и ладно..
30 Олеся999
 
04.07.17
19:53
Можно ли еще запрос оптимизировать ?))
31 Ц_У
 
04.07.17
19:53
(29) ну задача то поменять.... :)
32 Ц_У
 
04.07.17
19:54
Запрос.Текст ="ВЫБРАТЬ РАЗЛИЧНЫЕ
|    РасходнаяНакладная.Ссылка
|ИЗ
|    Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары"
|ГДЕ
|РасходнаяНакладнаяТовары.Номенклатура.Услуга
|РасходнаяНакладная.Проведен)";
33 Ц_У
 
04.07.17
19:54
булевские типы они такие
34 PiotrLoginov
 
04.07.17
19:56
(32)  Союз забыт

"... ГДЕ
|РасходнаяНакладнаяТовары.Номенклатура.Услуга
|И РасходнаяНакладная.Проведен)"

(22)  не выборка.ссылка , а рез.ссылка

и вызов Записать() без параметров даст только запись самого документа, без перепроведения
35 Любопытная
 
04.07.17
19:59
(34) чего это? Если документ проведен, то он перепроведется при записи. С каких пор это изменилось?
36 Олеся999
 
04.07.17
20:02
Запрос.Текст ="ВЫБРАТЬ РАЗЛИЧНЫЕ
|    РасходнаяНакладная.Ссылка
|ИЗ
|    Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары"
|ГДЕ
|РасходнаяНакладнаяТовары.Номенклатура.Услуга
|РасходнаяНакладная.Проведен)";
Результат=Запрос.Выполнить();    
Рез = Результат.Выбрать();
Пока рез.Следующий()Цикл
    ТекДок= выборка.ссылка.получитьОбъект();
    ТекДок.Дата= "тут пишим дату"
    ТекДок.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
37 Любопытная
 
04.07.17
20:07
(36) в запросе нет союза И в условиях, переменная выборка не определена...
И я бы всё-таки завернула запись документа в попытку. Хотя это конечно процесс слегка замедлит
38 Любопытная
 
04.07.17
20:08
Ой, там ещё кавычки лишние и скобка закрывающая есть, а открывающей нет. Вы запрос на листочке что ли пишете?
39 Олеся999
 
04.07.17
20:12
(38) Да я не в компиляторе


Запрос.Текст ="ВЫБРАТЬ РАЗЛИЧНЫЕ
|    РасходнаяНакладная.Ссылка
|ИЗ
|    Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары"
|ГДЕ
|РасходнаяНакладнаяТовары.Номенклатура.Услуга

|РасходнаяНакладная.Проведен";
Результат=Запрос.Выполнить();    
Рез = Результат.Выбрать();
Пока рез.Следующий()Цикл
    ТекДок= выборка.ссылка.получитьОбъект();
    ТекДок.Дата= "тут пишим дату"
    ТекДок.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
40 Олеся999
 
04.07.17
20:19
А это не нужно ?
|РасходнаяНакладнаяТовары.Номенклатура.Услуга = истина
41 Любопытная
 
04.07.17
20:19
Оно не будет работать)
42 Любопытная
 
04.07.17
20:20
(40) а вы сами как думаете?
43 Олеся999
 
04.07.17
20:28
(42) значит так ))
|РасходнаяНакладнаяТовары.Номенклатура.Услуга
44 PiotrLoginov
 
04.07.17
20:29
(35) специально провел тест.  я прав. но все равно Вы молодец - Вашему терпению можно поучиться
45 PiotrLoginov
 
04.07.17
20:30
(40) "РасходнаяНакладнаяТовары.Номенклатура.Услуга = истина"

Можно и так. Все равно сработает
46 PiotrLoginov
 
04.07.17
20:31
+ (45)

|ГДЕ
|РасходнаяНакладнаяТовары.Номенклатура.Услуга
47 mistеr
 
04.07.17
20:31
(0) Аллергия на циклы? Или есть веские причины?
48 PiotrLoginov
 
04.07.17
20:31
или

|ГДЕ
|РасходнаяНакладнаяТовары.Номенклатура.Услуга = Истина
49 Олеся999
 
04.07.17
20:33
спасибо
50 Любопытная
 
04.07.17
20:57
(44) Не верю. Всегда так было. Пойду сама проверять. Платформа какая?
51 Олеся999
 
04.07.17
20:58
(50) 8.3
52 Олеся999
 
04.07.17
20:59
Запрос.Текст ="ВЫБРАТЬ РАЗЛИЧНЫЕ
|    РасходнаяНакладная.Ссылка
|ИЗ
|    Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары"
|ГДЕ
|РасходнаяНакладнаяТовары.Номенклатура.Услуга
|РасходнаяНакладная.Проведен";
Результат=Запрос.Выполнить();    
Рез = Результат.Выбрать();
Пока Рез.Следующий()Цикл
    ТекДок= Рез.ссылка.получитьОбъект();
    ТекДок.Дата= "тут пишим дату"
    ТекДок.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
53 Любопытная
 
04.07.17
21:01
О! Знающие, вопрос к вам: разница есть между
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать()
и
Выборка = Запрос.Выполнить().Выбрать();
?
54 Мимохожий Однако
 
04.07.17
21:06
Если документы получены выборкой, то их надо поместить в массив, а потом, перебирая массив, получать объект и менять дату.
55 Олеся999
 
04.07.17
21:27
Мой код будет работать ?))
просто компилятора нет под рукой проверить
56 Serg_1960
 
04.07.17
21:42
(55) Тот, который в (52)? Нет, не будет работать. Осознай отличие от:

Запрос.Текст ="ВЫБРАТЬ РАЗЛИЧНЫЕ
|    РасходнаяНакладнаяТовары.Ссылка
|ИЗ...
57 Любопытная
 
04.07.17
22:34
(55) а смысл его писать, если исполнять его не на чем?
58 mistеr
 
05.07.17
13:13
(53) Разница примерно как мкжду "в лоб" и "по лбу".
59 Михаил Козлов
 
05.07.17
13:19
(55) Зачем код? Групповая обработка справочников и документов с ИТС.
60 Любопытная
 
05.07.17
13:21
(59) при наличии двух и более услуг в тч документа получим этот документ n раз в выборку, а это лишнее, хватит же одного.
61 Serg_1960
 
05.07.17
13:29
(53) Нуу.. если после этих строк идёт строка "Пока Выборка.Следующий() Цикл..." - то никакой разницы. Единственно что, при отладке, не посмотришь результат выполнения запроса.
62 Любопытная
 
05.07.17
13:30
(61) да это всё понятно. Интересно в плане производительности
63 Elatiell
 
05.07.17
13:54
(0) Вариант с многопоточностью рассматриваете?