Имя: Пароль:
1C
1С v8
Перестал работать код после обновления
0 dexxxqqq
 
03.09.15
16:37
До обновления была УТ 11.1.1.11 (платформа 8.2.19.121)
При обработке проведения заказа сборка-разборка воткнута процедура, которая перезаполняет ТЧ заказа на сборку-разборку. После обновления процедура работать перестала (обновлено до 11.1.10.145, платформа 8.3.5.1625).
Код упрощаю, проще некуда.

ЗаказОбъект = ЗаказНаСборку.ПолучитьОбъект();
ЗаказОбъект.Товары.Очистить();
ЗаказОбъект.Записать();

Отладчиком в код попадаю. Ошибок нет. Но в документе заказа ничего не меняется. В чем может быть проблема? Подскажите, пожалуйста.
1 dexxxqqq
 
03.09.15
16:38
(0) При обработке проведения *документа сборка-разборка
2 Господин ПЖ
 
03.09.15
16:39
кэш продуй
3 dexxxqqq
 
03.09.15
16:42
(2) Пробовал. Не помогло.
Если код вынести в отдельную внешнюю обработку, то работает на ура.
4 Domovoi
 
03.09.15
16:46
(0)В код попал а значения какие там? После твоего кода нужный ли результат? и прогнать пошагово до конца и убедиться что результат всех переменных нужный и отмен записи нету.
5 hhhh
 
03.09.15
16:58
(3) зачем получитьОбъект(), при проведении уже ведь есть объект. Зачем другой объект? И потом сравниваешь эти 2 объекта?
6 Serg_1960
 
03.09.15
16:58
При проведении документа-объекта, ты по его ссылке получаешь объект из базы? Это разные объекты. Удивительно как оно раньше работало :)

или я ничего не понял, или ты ты что-то недоговариваешь...
7 Serg_1960
 
03.09.15
16:59
(5) и (6) - дуплет :)
8 Nuobu
 
03.09.15
17:04
(0) В том, что документ заказ открыт.
Нужно сделать Форма.Прочитать(), тогда поменяетс.
9 NewNick
 
03.09.15
17:09
(5)(6)
но ведь раньше работало)
наверно это разные документобъекты)
10 NewNick
 
03.09.15
17:13
(8) удивительные вещи вы говорите. чувствуется большой опыт в манипуляции с граблями.
11 Nuobu
 
03.09.15
17:14
(10) ооо, еще какой.))
12 dexxxqqq
 
03.09.15
17:26
(5) Получить объект - это заказ. А я провожу сборку (в 0 опирался насчёт заказа).
13 dexxxqqq
 
03.09.15
17:28
Сорри за сумбур. Ещё раз. Провожу сборку, при проведении открываю заказ и очищаю ТЧ, записываю. Может быть реально заказ уже открыт? Как проверить?
14 NewNick
 
03.09.15
17:29
(12) на первый взгляд проблема может быть только в том что в ЗаказНаСборку лежит какая то лажа а не нужная ссылка)
если про обработку в (3) не обманул
15 dexxxqqq
 
03.09.15
17:30
(14) Точно не лажа. Проверено обработкой и отладчиком.
16 NewNick
 
03.09.15
17:32
ЗаказОбъект.Товары.Количество() посмотри до очистки и сразу после
17 NewNick
 
03.09.15
17:33
ну и если все норм. то и после записи
18 dexxxqqq
 
03.09.15
17:49
(16) (17) Очищает. После записи остается чистым...
19 Nuobu
 
03.09.15
17:54
(18) Ты ведь писал
Отладчиком в код попадаю. Ошибок нет. Но в документе заказа ничего не меняется. В чем может быть проблема?
Так что не меняется?
20 NewNick
 
03.09.15
17:54
(18) ну тут я вижу два варианта.
или какой то пользователь, которому очень дорог этот заказ, тут же с матами быстро набивает обратно табличную часть каждый раз.
или табличную часть набивает какое то событие - например перед открытием формы объекта.
21 dexxxqqq
 
03.09.15
17:54
(17) Ну я понял, что мой код отрабатывает. Буду штатный код отладчиком ковырять. Отпишусь. Спасибо.
22 Nuobu
 
03.09.15
17:55
(21) Форма Заказа открыта при проведении другого документа?
23 dexxxqqq
 
03.09.15
17:55
(20) Да. Именно второй вариант. Вдох выдох и найду падлу.
24 NewNick
 
03.09.15
17:57
(23) ты зря недооцениваешь пользователей. я бы проверил вначале первый вариант по журналу регистраций.
25 dexxxqqq
 
03.09.15
17:57
(22) Есть подозрение, что штатно сборка тоже открывает заказ до меня. Как проверить "открытость" формы отладчиком?
26 dexxxqqq
 
03.09.15
17:58
(24) Я на изолированной базе
27 dexxxqqq
 
03.09.15
17:58
(24) на копии то есть
28 NewNick
 
03.09.15
18:11
(25) тут понимаешь в чем дело. 1с не полные лохи писали.
поэтому даже если была открыта форма с этим документом. то после твоих фокусов с табличной частью его записать не смогли бы ни через форму, ни программно(типо открыть еще одну копию объекта заранее и записать попозже). вместо этого получили бы ласковое сообщение мол "Операция не может быть выполнена из-за несоответствия версии или бла бла бла бла бла бла."
29 dexxxqqq
 
03.09.15
21:19
(28) Спасибо, насчет лохов посмеялся)))
Что-то лыжи не едут или я совсем уже. Не врубаюсь никак...
30 NewNick
 
03.09.15
21:39
(29) ну описанная тобой ситуация, по большому счету, из разряда не может быть.
смотри у тебя есть объект. ты там тч очистил. объект записал. реально проверил что тч пустая.
потом как то видишь(подозреваю открывая док) что тч не пустая.
ну для очистки совести в обработке из (3) до открытия глянь тч пустая или как? (ну или групповой обработкой справочников и документов глянь) не суть важно.
если пустая и вдруг что то там появляется когда ты ее открываешь значит что то при открытии ее заполняет.
если не пустая значит ты что то перепутал намного раньше.

только я слабо представляю "обновление" после которого события формы начинают заполнять ТЧ документа. это выглядит чуток диковато.
31 dexxxqqq
 
03.09.15
22:04
(30) В обработке из (3) : ТЧ заказа не пустая, после проведения сборки ТЧ заказа очищается.

Парни, простите, я вас дезинформировал по части отсутствия ошибок. Сейчас на свежую голову опишу подробнее.

Цель была изначально такая, чтобы ТЧ заказа перезаполнялась при проведении сборки. И все было ок. ТЧ заказа перезаполнялась.
После обновления: при проведении сборки стали валиться ошибки об отличии количества в ТЧ заказа (в (0) я имел ввиду, что ошибок не возникает при выполнении моего кода). И я решил, что мой код не выполняется, что явно не так. Код выполняется, но изменения не применяются. Как-то так.
32 NewNick
 
03.09.15
22:14
(31)
>>Код выполняется, но изменения не применяются. Как-то так.
так все же код в (0) работает и ТЧ очищается и никак потом сама не заполняется или как?
33 RomanYS
 
03.09.15
22:26
(31) если проведение заканчивается отказом, то вся транзакция откатывается. А твой код попадает в эту самую транзакцию
34 NewNick
 
03.09.15
22:30
(33) о телепат бот пришел. логично)
35 dexxxqqq
 
03.09.15
22:40
(33) Спасибо. Да, именно это и хотел сказать. Просто какого, извините, хера. Мне, короче, зафиксировать транзакцию или что-то типа того надо.
36 NewNick
 
03.09.15
22:53
(35) зачем тебе надо ее зафиксировать? у тебя ошибка при проведение возникла и все. вся деятельность проведения вернулась на исходную.
если тебе надо как то заполнять некий связанный документ не особо заботясь о контроле то значит заполняй его не в проведении а в событии объекта призаписи.
если же надо провести то проводи его в проведении документа.
37 dexxxqqq
 
03.09.15
23:00
(36) Нужно при проведении. А если через подписку сделать, разница будет? Может не работает именно из-за того, что я в модуле объекта пишу?
38 dexxxqqq
 
03.09.15
23:04
(37) В подписке то же самое. Уже успевает проверить заказ и говорит, что он отличается.
39 NewNick
 
03.09.15
23:05
(37) смотри (28)
1с не лохи писали.
поэтому хоть через подписку хоть через..... не подписку но транзакция откатит все обратно.
ты не правильно ставишь задачу просто.
40 dexxxqqq
 
03.09.15
23:07
(39) Да. Спасибо. Завтра продолжу, мозг закипел на ровном месте.
41 NewNick
 
03.09.15
23:09
(40) ну подумай сам.
зачем тебе заполнение связанного дока если проведение не прошло?
если уж оно тебе так надо то ничего тебе не мешает или
а) засунуть в событие при записи.
б) засунуть в отдельную кнопку.
42 dexxxqqq
 
03.09.15
23:09
(39) Не, ну даже ПриЗаписи такая же фигня. Просто непонятно, что такого с транзакциями изменилось после обновления
43 dexxxqqq
 
03.09.15
23:10
(41) Тут все правильно. Просто до обновления получилось корректно обмануть систему, перезаполнив ТЧ заказа.
44 NewNick
 
03.09.15
23:11
(42) ничего не изменилось с транзакциями.
судя по твоим сообщениям -
изменился некий контроль на запись или проведения документа заказ. контроль не проходит ты получаешь ошибку и все вертается на круги своя.
45 dexxxqqq
 
03.09.15
23:13
(44) Хорошо. Ну, в принципе, понятно. Надо менять логику своей задумки.
46 NewNick
 
03.09.15
23:14
возможно в документе заказ появилась некая связанная ТЧ(а возможно была) с ТЧ товары. и твои свободные манипуляции с ТЧ товары раньше как бы заказу были пофиг. а теперь проверка бьет по ручкам.
47 dexxxqqq
 
03.09.15
23:17
(46) Ну пока вычислил, что закомментив

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

все проводится. А дальше копать завтра буду.
До обновления эта же процедура выполняла проверку ТЧ заказа, поэтому свою процедуру вставил именно до нее. А сейчас и это не помогает.
48 NewNick
 
03.09.15
23:18
(31)
>> стали валиться ошибки об отличии количества в ТЧ заказа
что то оно проверяет и что то ему не нравится. не нравится количество в ТЧ заказа. сюды и копай.
49 Fram
 
04.09.15
01:26
(13) если приходиться во время проведения одного документа чистить ТЧ другого документа, тут на лицо ошибка проектирования
50 Fram
 
04.09.15
01:26
*приходится
51 NewNick
 
04.09.15
02:05
(49) не правда ваша)
это то вполне нормально.
52 Domovoi
 
04.09.15
09:39
(51)Во-первых, изменение реквизитов или тч не должно быть в модуле объекта при проведении. Во-вторых, автоматическое создание или изменение одного дока из другого это очень плохой подход, который при накручивании базы механизмами приводит к косякам и часто к переделкам.
53 dexxxqqq
 
04.09.15
23:48
Шли вторые сутки... Локализовал проблему. При проведении сборки вываливается ошибка "По товару ... в количестве ... уже есть Распоряжение на отгрузку - серии указывать не нужно". В модуле ПроведениеСервер происходит контроль остатков по регистру РезервыСерийТоваров. Если запрос контроля закомментить, то все ок. Стал копать, до обновления все это было. НО до обновления была другая политика учета серий, поэтому на этот контроль я и нарвался. Так что виноват мой быдлокод...
54 Fram
 
07.09.15
14:23
(51) в идеале модули объектов документов не должны взаимодействовать друг с другом, только с регистрами. для этого регистры и были придуманы.