|
Изменения даты документа. | ☑ | ||
---|---|---|---|---|
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) Вариант с многопоточностью рассматриваете?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |