Имя: Пароль:
1C
 
Как записать периодический реквизит справочника, если он должен измен. документом?
0 redbull
 
21.05.10
16:23
Нужно поменять реквизит справочника, у которого стоит "Изменяется документом".
1 Sj
 
21.05.10
16:26
УстановитьРеквизитСправочника
2 redbull
 
21.05.10
16:29
(1) это метод документа,
а у меня обработка, которая 1000 элементов должна изменить.
или создать какой -нить документ?
Док = СоздатьОбъект("Документ");
Док.УстановитьРеквизитСправочника(МойСпр, МойРеквизит, значение, Дата)

а потом не делать Док.Записать()?
3 Ёпрст
 
гуру
21.05.10
16:31
(2) да уж..
Периодический реквизит, установленный документом изменяется только  самим этим документом в момент его проведения в ОбработкаПроведения, соответственно нужно либо перепровести документ с нужным значением, либо удалить документ (чтоб периодики не было)

Либо поправить табличку с периодикой "руками",либо прямым запросом, либо использовать способ от Пита.
4 borozavr
 
21.05.10
16:31
Не взлетит,тем более должно быть док.провести() а не Док.Записать()
5 redbull
 
21.05.10
16:36
(3) где эту периодику найти?
6 ДенисЧ
 
21.05.10
16:40
(5) _1sconst
Только, похоже, не стоит тебе туда лезть...
7 Ёпрст
 
гуру
21.05.10
16:43
+6 это точно, при перепроведении, вся твоя периодика вернётся взад..
Тут нужно что-то менять в консерватории.
8 redbull
 
21.05.10
16:46
(6) Есть обработка, называется "РедакторРеквизитов". там я мог попавить такой реквизит.

(7) Документы старые, из никто, я надеюсь трогать не будет.

А новые, за этот год, я перепроведу.
9 ДенисЧ
 
21.05.10
16:47
(8) Именно такой? Или тот, который и руками и документами?
10 NikVars
 
21.05.10
16:51
(8) Проверь на копии!!!
11 redbull
 
21.05.10
16:55
(9) Ёлки, только документом.
Может просто флажек поставить "РучноеИзменение" и не париться?
12 YF
 
21.05.10
16:57
(11) Если логика прикладного решения позволяет - то почему бы и нет
13 ДенисЧ
 
21.05.10
16:57
(11) Поставь, если знаешь, в чём разница и какие будут последствия
14 redbull
 
21.05.10
17:01
(11) не знаю. Поэтому и возникла мысь поставить флажек в свойставах реквизита
15 Ёпрст
 
гуру
21.05.10
17:03
(8) врешь. Периодику никак не изменишь - только перепроведением дока, и никакая обработке не может изменить это значение без перепроведения дока.
+ Есть поделки, использующие "псевдо изменение" регистров и периодики, установленных документов - это просто перепроведение с параметром + отключенная галка "автоматическое удаление движений" у документов. Там просто считываются все движения в ТЗ и пишется в регистр/периодический реквизит новое значение и всё.
16 Ёпрст
 
гуру
21.05.10
17:04
+15 но для этого, нужно как минимум изменение модулей проведения документов.
17 Ёпрст
 
гуру
21.05.10
17:04
+16 Такой механизм, например, встроен в МОД.
18 redbull
 
21.05.10
17:09
Всем спасибо,
Что-нить другое придумаю
19 Ёпрст
 
гуру
21.05.10
17:15
(18) посмотри для 1-го реквизита историю за 1 день, установленную документом(ами) и руками.. подумай что возвращает метод Получить() - и может быть, к тебе придёт озарение (способ от Пита) и ты познаешь таинство будды..
20 Shaman100M
 
22.05.10
16:11
(15) создал периодический реквизит, галку "Изменяется документами" - поставил, "Ручное изменение" - снял. Дальше написал простенький код, который сработал.

   Пер    = СоздатьОбъект("Периодический");
   Пер.ИспользоватьОбъект("ПерРеквизит",ТекЭлементСпр);
   Пер.ДатаЗнач    = ТекущаяДата();
   Пер.Значение    = 123;
   Пер.Записать();


Далее открыл историю "ПерРеквизит", где строкой на текущую дату стоит ручное изменение 123. Понятно, что редактировать его система не дает. Но оно есть.
21 Ёпрст
 
гуру
24.05.10
08:32
(20) и толку от твоей ручной периодики  ? Любой метод, окромя перебора вернёт то, что документом (последним) присвоено.
22 Shaman100M
 
24.05.10
09:09
(21) Автор меняет значения в прошлом периоде, - если одним днем можно пренебречь, - записать в следующем, - то подойдет.
23 Ёпрст
 
гуру
24.05.10
09:11
(22) гы.. ты лучше (19) почитай, на досуге.
24 Shaman100M
 
24.05.10
09:25
давно известный факт, что в пределах одного дня значение "на дату" стоит всегда раньше значения "записанного документом". и нечего гыкать.
25 Ёпрст
 
гуру
24.05.10
09:27
(24) п..ц
26 Ёпрст
 
гуру
24.05.10
09:27
+25 и всё же почитай (19) и посмотри, что возвращает метод Получить()
27 Shaman100M
 
24.05.10
09:58
Получить(УказаннаяДата) работает корректно. Получить() без параметра, - всегда возвращает значение,  установленное последним документом в общей истории значений, независимо от того, есть ручные изменения после документа или нет,есть галка "ручные изменения" или нет.
(((

Только вот без параметра метод Получить() для периодики (хоть и заявлено), обычно не применяют. По крайней мере, в типовых не встречал.
28 Ёпрст
 
гуру
24.05.10
10:02
(27) >>работает корректно. Это как ?
ВСЕГДА возвращает  установленное последним документом, если что, равно как и использоватьДату.
29 Shaman100M
 
24.05.10
10:15
(28) Если в указанной дате есть значения, записанные и "документом" и "руками" - Получить(УказаннаяДата) возвращает последнее из сделанных "документом" в указанной дате, нет сделанных "документом" - возвращает "ручное" в указанной дате. = (24)

Если в текущем числе есть ручное изменение, то Получить() вернет не его, а ...
последнее значение, измененное документом, хоть оно и м.б. сделано неделю назад.
30 Ёпрст
 
гуру
24.05.10
10:17
(29)
>>>Если в текущем числе есть ручное изменение, то Получить() вернет не его, а ...
>>>последнее значение, измененное документом, хоть оно и м.б. сделано неделю назад.

Это как ????
31 ДенисЧ
 
24.05.10
10:17
(30) Это не как, это пук :-)
32 Shaman100M
 
24.05.10
10:18
не писал, если бы не попробовал на примере
33 Shaman100M
 
24.05.10
10:18
рел. 25-й.
34 Shaman100M
 
24.05.10
10:23
(31) ну, почти.... ))) . Для Получить() без параметров в оперучете берется ТА, и если она < даты последнего ручного изменения, то получается именно так.
35 Ёпрст
 
гуру
24.05.10
10:27
(34) хню какую то несешь..
Для периодики в пределах одного дня ВСЕГДА возвращается значение, установленное документом, если его нет - ручное и привет..
36 Shaman100M
 
24.05.10
10:29
(34) именно так.

Получить(<?>)
Синтаксис:
Получить(<Дата>)
Назначение:
Получить значение периодического реквизита справочника на дату или документ.
Возвращает - значение периодического реквизита справочника на заданную дату или документ.
Параметры:
<Дата> - необязательный параметр. Выражение типа дата или значение типа документ или позиция документа. Этот параметр задает момент времени, на который требуется получить значение периодического реквизита. Значение по умолчанию: ТА - если используется компонента ''Оперативный учет'', Рабочая дата - если компонента ''Оперативный учет'' не используется.
37 Ёпрст
 
гуру
24.05.10
10:29
+35

т.е  для 09.01.2010 всегда вернёт 300

09.01.2010  руками 100
09.01.2010  док1   200
09.01.2010  док2   300
38 Shaman100M
 
24.05.10
10:34
(37) с этим не спорю. В истории - руками стоит всегда РАНЬШЕ, вернет всегда позже. = (24)

я в (34) про то, если ТА = 08.01.2010 и на 08-е стоит значение 400, - Получить() вернет его
39 Ёпрст
 
гуру
24.05.10
10:36
(38) да уж..
читай теперь (20) и (21)..
40 Shaman100M
 
24.05.10
10:38
общаемся на разных языках. читай (22)
41 Ёпрст
 
гуру
24.05.10
10:42
(40) значения, как правило, всегда получают на дату.. так что, твой способ - в топку.
42 Shaman100M
 
24.05.10
10:59
точно на разных. Это не способ, - а просто демонстрация возможности записать ручное изменение для реквизитов без галки "ручное изменение".
43 Ёпрст
 
гуру
24.05.10
11:03
(42) тему то хоть раз перечитай - нужно "поправить" значение, установленное документом.
Самый простой способ - установить новое значение, своим документом в конец дня.
Всё.
Ибо получение всей периодики в типовых конфах получают либо запросом, либо на дату(Полуычить, ИспользоватьДату () ), но никогда не пользуют Объект периодический и перебор значений.