Имя: Пароль:
1C
1С v8
Как бы сделать такое проведение, чтобы после него документ записывался
,
0 jsmith82
 
28.03.12
09:09
В общем тема такая
Есть развивающаяся самописка
Хочу забубенить в неё такое гипер-свойство, чтобы от результатов проведения в документе менялись некоторые реквизиты типа Булево
ну типа "Проведен по разделу учета НДС", "Отгрузка произошла до упора" и т.д. для быстрого отбора родимых в журналах, запросах и прочих хозяйственных визуализациях
Думал, подавать документ в общий модуль, проводить и проставлять реквизиты в режиме Загрузка. А транзакцию целесообразно ставить в этом случае, или есть какие другие варианты
1 mikecool
 
28.03.12
09:10
делай это в ПередЗаписью
2 Ненавижу 1С
 
гуру
28.03.12
09:10
(0) храни супер-гипер-нано-свойства в РС
3 jsmith82
 
28.03.12
09:10
(1) а если обработка проведения не сработает, события процедуры ПередЗаписью откатятся?
4 jsmith82
 
28.03.12
09:11
(2) это утяжелит запросы в динамических списках
5 mikecool
 
28.03.12
09:12
(3) проверь )
6 ANikV
 
28.03.12
09:12
(4) Ага, а перезаписывать документ - это конечно нормально...
7 jsmith82
 
28.03.12
09:14
(6) когда проводишь документ, любые тормоза кажутся логичными, важными и нужными
а когда открываешь журнал и делаешь отборы, тормоза выглядят кощунственными
8 jsmith82
 
28.03.12
09:16
(5) проверил. действительно откатывается
9 Ненавижу 1С
 
гуру
28.03.12
09:16
(4) не приниципиально
10 jsmith82
 
28.03.12
09:17
а я и не знал
11 Ненавижу 1С
 
гуру
28.03.12
09:17
я так проблема в том, что логика проведения тяжеловесна и узнать, что свойство надо установить можно только ПОСЛЕ проведения, вот это интересная задача
12 jsmith82
 
28.03.12
09:17
(9) да просто реквизит документа он логичней, проще и естественней
а вот чтобы узнать кое-чё родное, делать левое соединение к регистру с параметрами..
13 jsmith82
 
28.03.12
09:18
(11) ну а чо. вот например, статус отрузки заказа
я щас в динамическом списке делаю соедениние с регистром
а куда как проще проставлять реквизит "СтатусОтгрузки"
14 Maxus43
 
28.03.12
09:19
(11) что там интересного? подписка на проведение... все движения при проведении доступны в рамках данной транзакции. ставь там свойство своё
15 Maxus43
 
28.03.12
09:20
(13) лентяй чтоль? соединение ему лень делать)
16 Ненавижу 1С
 
гуру
28.03.12
09:22
(14) угу и потом будет вызываться обработка ПередЗаписью и ПриЗаписью опять (если конечно хранить в таблице документа)
17 jsmith82
 
28.03.12
09:22
(14) гениально
18 jsmith82
 
28.03.12
09:22
(16) обрабатывать в условии как щас делается если загрузка, то гуляйте, вася
19 jsmith82
 
28.03.12
09:23
(16) а вообще можно не в таблице документа
20 Ненавижу 1С
 
гуру
28.03.12
09:23
(18) это неверная затычка, скажем так костыль для устранения ошибок архитектуры
21 jsmith82
 
28.03.12
09:23
(20) согласен в принципе
22 Ненавижу 1С
 
гуру
28.03.12
09:23
(19) то есть все таки (2)? я победил ))
23 Maxus43
 
28.03.12
09:25
(16) этот случай вобще не по метолологии 1с, есно хранить в регистре)
З.ы. эт ещё фигня, франчи тут внедряют, дак в обработке проведения такой код набыдлокодили:
ЭтотОбъект.Записать();
Вот что гениально
24 jsmith82
 
28.03.12
09:25
(22) да дело не в победе, а в результатах
просто реально влом делать соединения
я не думаю, что это нарушает концепцию мироздания
для состояния регистров существуют какие-то базовые взаимные отношения, которые могут иметь интерфейс быстрого доступа
надо просто верно в платформе обработчики подобрать
25 jsmith82
 
28.03.12
09:26
(23) ну так сама 1с так делает! замечал много раз, как звёздочка в заголовке документа мерцает
26 Maxus43
 
28.03.12
09:27
(25) нет, 1с так не делает. моргание звёздочки тут не причем
27 jsmith82
 
28.03.12
09:28
по идее нужно так
1. запись редактируемых реквизитов документа
2. обработка проведения (в это же транзакции запись нередактируемых реквизитов документа)
3. профит
28 jsmith82
 
28.03.12
09:28
(26) моргание звёздочки это прямое указание на запись документа, насколько я понимаю
29 jsmith82
 
28.03.12
09:29
(28) вернее, на изменение записанного
30 Maxus43
 
28.03.12
09:30
(27) платформа так не может, всмысле придётся быдлокодить как в (23), не есть гуд.
(28) нет... хз почему маргает, но точно не из-за записи. в типовых нет Записать() ни при проведении, нигде короче. Перед записью часто меняются, но никак не уже записанные
31 jsmith82
 
28.03.12
09:31
(30) извини, ты не прав. в ЗУПе такое точно есть
32 jsmith82
 
28.03.12
09:31
там вообще идёт циклическое проведение документа
33 jsmith82
 
28.03.12
09:32
я просто к тому, что быдлокод свойствен и 1су
34 Maxus43
 
28.03.12
09:32
(31) возможно, но 1 случай - не показатель того что так и надо. в УПП я не видел нигде такого (подсистему ЗУПа не смотрел правда), сути это не меняет - это не по феншую
35 Maxus43
 
28.03.12
09:33
в некоторых случаях быдлокод оправдан, в твоём - нет) храни в регистре да не ленись соединения ставить
36 jsmith82
 
28.03.12
09:33
(34) да, феншуй тут жестко сосет
37 jsmith82
 
28.03.12
09:34
(35) можно поспорить. обработка проведения вообще как бы не связана напрямую с записью документа, иначе бы не было двух режимов записи
38 jsmith82
 
28.03.12
09:35
тогда вообще надо сделать так
в документе оставить все реквизиты движений
а всё остальное, включая комментарий, сведения о грузоотправителе, номер входящего документа и т.д.  врегистр сведений
39 Maxus43
 
28.03.12
09:37
(37) ну как, есть запись, а есть проведение. проведение без записи не возможно. как не связаны?
40 jsmith82
 
28.03.12
09:39
(39) ну как-раз таки реквизит типа булево Проведен хранится в документа, хотя обработка проведения не изменяет самого документа
ладно, не суть важно
41 Maxus43
 
28.03.12
09:39
(38) да, так и делается. В реквизиты обязательно добавлять то что влияет на логику проведения
42 jsmith82
 
28.03.12
09:39
буду воевать с платформой
43 jsmith82
 
28.03.12
09:39
(41) кто так делает, я таких не знаю )
44 Maxus43
 
28.03.12
09:41
(43) это методология ЕМНИП
45 Maxus43
 
28.03.12
09:42
всмысле что коментарий и т.д в регистр - маразм конечно, а то что надо менять - логично
46 PiVa123
 
28.03.12
09:43
Довелось тут такое же делать, оказалось в ОбработкеПроведения просто пишешь
ОбменДанными.Загрузка=Истина;
Записать();
ОбменДанными.Загрузка=Ложь;

Все нормально пашет. Хотя если бы эту фигню делал я - сделал бы по другому. Всю подготовку сделал бы перед запись, данные запихал в ДополнительныеСвойства и в ОбработкеПроведения использовал бы их.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс