|
Почему на этом коде зависает? | ☑ | ||
---|---|---|---|---|
0
Лиза777
19.07.13
✎
19:24
|
Здравствуйте.
У меня комплексная автоматизация. В общем модуле общего назначения есть процедура ПриУстановкеНовогоНомераДляДокументов(), у нас там было ДобавитьПрефиксУзла(Префикс); я поменяла на Попытка Если Источник.Организация = Справочники.Организации.НайтиПоКоду("00003") Тогда Если Источник.Подразделение = Справочники.Подразделения.НайтиПоКоду("00020 ") Тогда Префикс = "СцК"; ИначеЕсли Источник.Подразделение = Справочники.Подразделения.НайтиПоКоду("КС0000009") Тогда Префикс = "СцН"; ИначеЕсли Источник.Подразделение = Справочники.Подразделения.НайтиПоКоду("КС0000008") Тогда Префикс = "СцТ"; КонецЕсли; Иначе ДобавитьПрефиксУзла(Префикс); КонецЕсли; Исключение ДобавитьПрефиксУзла(Префикс); КонецПопытки; и после этого стало очень зависать проведение всех документов. С 20-й попытки только проводится, вываливается ошибка "конфликт блокировок при выполнении транзакции". а что не так-то? ну мне надо префикс менять в зависимости от подразделения |
|||
1
Defender aka LINN
19.07.13
✎
19:25
|
рукалицо...
|
|||
2
WhiteCat
19.07.13
✎
19:29
|
(0) О май гад...
|
|||
3
WhiteCat
19.07.13
✎
19:31
|
(0) Может прописать префикс в справочник "Подразделения"?
|
|||
4
WhiteCat
19.07.13
✎
19:35
|
+(3) И получать его запросом
|
|||
5
Fragster
гуру
19.07.13
✎
19:36
|
(3) прав
немного копроускорить можно так: Организация00003 = XMLЗначение(Тип("СправочникСсылка.Организации"), "ТутУидОрганизацииСКодом00003"); // тут комментарий о том, что это за организация ... // тут остальные те, что НайтиПоКоду Если Источник.Организация = Организация00003 Тогда ... |
|||
6
WhiteCat
19.07.13
✎
19:37
|
+(4) Или вообще "зашить" префикс в код подразделения (например, последние 3 символа, или первые три символа, или вообще код будет префиксом подразделения - он, префикс, все равно ведь уникальный).
|
|||
7
Defender aka LINN
19.07.13
✎
19:37
|
(5) КАК ЭТО РАЗВИДЕТЬ??!
|
|||
8
WhiteCat
19.07.13
✎
19:38
|
(7) "РАЗ" что?
|
|||
9
Fragster
гуру
19.07.13
✎
19:42
|
(7) что, ускорение и независимость от кода непредопределенных данных не затрагивающее конфу. по хорошему, конечно, допреквизит/атрибут к подразделению надо, о чем я прямо сразу и написал.
|
|||
10
WhiteCat
19.07.13
✎
19:44
|
(9) Нафиг доп реквизит. Зашить префикс в код и не париться - доступно и на сервере и на клиенте, получается из базы элементарно, прям со ссылкой в комплекте уже идет.
|
|||
11
Fragster
гуру
19.07.13
✎
19:45
|
(10) а вдруг там еще 100500 мест с "найтипокоду" и если код поменять - все развалится?
|
|||
12
Defender aka LINN
19.07.13
✎
19:47
|
(9) Натрибуквы тут XML?
Ну и куда побежишь, когда будет все то же самое, но в другой базе, где ВНЕЗАПНО другой идентификатор? |
|||
13
WhiteCat
19.07.13
✎
19:49
|
(11) Так то ты прав. Но ИМХО лучше найти глобально все эти "найтипокоду" и заменить на нормальные конструкции.
Для данного примера работать будет вот так: Префикс = Источник.Подразделение.Код Тормоза тут ИМХО идут как раз из-за строчек подобных Если Источник.Подразделение = Справочники.Подразделения.НайтиПоКоду("00020 ") |
|||
14
WhiteCat
19.07.13
✎
19:50
|
А вообще надо начать с расстрела кодера, который все это написал.
|
|||
15
Fragster
гуру
19.07.13
✎
19:50
|
(12) ну, оно работает сильно быстрее, чем найтипокоду. будет ОбъектНеНайден, да.
|
|||
16
vvp91
19.07.13
✎
19:55
|
> (13) Префикс = Источник.Подразделение.Код
Получение реквизита через точку - садись, два. |
|||
17
Defender aka LINN
19.07.13
✎
19:56
|
(15) И сильно быстрее, чем ПолучитьСсылку, да?
Хотя что то, что то - это лютый, леденящий душу, невыразимый пипец |
|||
18
WhiteCat
19.07.13
✎
19:57
|
(16) Ну запросом получай, кто мешает
|
|||
19
Fragster
гуру
19.07.13
✎
19:59
|
сделал замер
|
|||
20
WhiteCat
19.07.13
✎
20:00
|
(19) И как?
|
|||
21
Fragster
гуру
19.07.13
✎
20:00
|
(17) чем получитьссылку - сейчас добавлю в замер
|
|||
22
Fragster
гуру
19.07.13
✎
20:03
|
Запрос = Новый Запрос;
Запрос.Текст = " |ВЫБРАТЬ ПЕРВЫЕ 1 | Организации.Код, | Организации.Ссылка |ИЗ | Справочник.Организации КАК Организации |ГДЕ | НЕ Организации.ЭтоГруппа"; Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); Код = Выборка.Код; УИД = XMLСтрока(Выборка.Ссылка); Повторов = 10000; ТекДата = ТекущаяДата(); Пока ТекущаяДата() = ТекДата Цикл // ждем начала секунды, чтобы снизить погрешность; КонецЦикла; ТекДата = ТекущаяДата(); Для Сч = 1 По Повторов Цикл Орг = Справочники.Организации.НайтиПоКоду(Код); КонецЦикла; Сообщить("По коду: " + (ТекущаяДата()-ТекДата)); ТекДата = ТекущаяДата(); Пока ТекущаяДата() = ТекДата Цикл // ждем начала секунды, чтобы снизить погрешность; КонецЦикла; ТекДата = ТекущаяДата(); Для Сч = 1 По Повторов Цикл Орг = XMLЗначение(Тип("СправочникСсылка.Организации"), УИД); КонецЦикла; Сообщить("По уиду: " + (ТекущаяДата()-ТекДата)); ТекДата = ТекущаяДата(); Пока ТекущаяДата() = ТекДата Цикл // ждем начала секунды, чтобы снизить погрешность; КонецЦикла; ТекДата = ТекущаяДата(); Для Сч = 1 По Повторов Цикл Орг = Справочники.Организации.ПолучитьСсылку(Новый УникальныйИдентификатор(УИД)); КонецЦикла; Сообщить("ПолучитьСсылку: " + (ТекущаяДата()-ТекДата)); |
|||
23
Fragster
гуру
19.07.13
✎
20:03
|
По коду: 47
По уиду: 0 ПолучитьСсылку: 0 |
|||
24
Fragster
гуру
19.07.13
✎
20:04
|
убираем по коду, увеличиваем итерации в 100 раз:
По уиду: 21 ПолучитьСсылку: 27 |
|||
25
Fragster
гуру
19.07.13
✎
20:05
|
если вынести из цикла тип(), то
По уиду: 16 ПолучитьСсылку: 27 |
|||
26
vde69
19.07.13
✎
20:10
|
почему ни кто не посоветовал быдло ускорение?
Если Источник.Организация.Код = "00003" Тогда Если Источник.Подразделение.Код = "00020 " Тогда Префикс = "СцК"; |
|||
27
Defender aka LINN
19.07.13
✎
20:20
|
Defender aka LINN разрыдался и ушел в отшельники
|
|||
28
Fragster
гуру
19.07.13
✎
20:21
|
(26) это считывает объект, возможно не быстрее
|
|||
29
Grobik
19.07.13
✎
20:24
|
(27) Не вижу
http://www.forum.mista.ru/ban_list.php |
|||
30
EvgeniuXP
19.07.13
✎
20:37
|
(0) вас уволить нужно, за решение НайтиПоКоду... вы сколько времени учились? копейку в себя вложили? чтобы потом зарабатывать?
|
|||
31
Defender aka LINN
19.07.13
✎
20:45
|
(29) Так лучше?
|
|||
32
Grobik
19.07.13
✎
20:49
|
(31) Если бы я себя по пьяни баним, то многим людям бы не помог.
Нет — не лучше. |
|||
33
Defender aka LINN
19.07.13
✎
20:50
|
(32) Это печально ©
|
|||
34
Mitriy
19.07.13
✎
20:52
|
я плакаю...
|
|||
35
Grobik
19.07.13
✎
20:57
|
"Если жизнь печальна, она не заслуживает даже называться жизнью." Эразм Роттердамский.
"Никто из нас не говорит, живя без бед, что счастием своим судьбе обязан он; когда же к нам заботы и печаль придут, готовы мы сейчас во всем винить судьбу." Филет Косский "Печальна судьба человека, который смотрит на жизнь с высоты своих несчастий." Н.Голубов "Жизнь по преимуществу печальна. А сразу потом умираешь" Януш Леон Вишневский |
|||
36
wertyu
19.07.13
✎
21:01
|
(0) ещё никто не писал, что это ужасно?
|
|||
37
iHell
19.07.13
✎
21:03
|
Параметры сеанса еще не предлагали ?
|
|||
38
iHell
19.07.13
✎
21:04
|
+ И регистр сведений - что типа произвольных параметров.
|
|||
39
Grobik
19.07.13
✎
21:05
|
(36) гугл "Отрезал себе член и умер от потери крови"
|
|||
40
wertyu
19.07.13
✎
21:06
|
(39) это был риторический вопрос )
|
|||
41
Конфигуратор1с
19.07.13
✎
21:07
|
злые вы, девушку зря обижаете. Видно же что 7шница
|
|||
42
Grobik
19.07.13
✎
21:07
|
Надеюсь Лиза уже забыла про свой вопрос.
|
|||
43
wertyu
19.07.13
✎
21:09
|
(42) тем более, что даже переделывать ничего не надо было )
|
|||
44
МЮЛЛЕР
19.07.13
✎
21:12
|
о май гад!!!
|
|||
46
Grobik
19.07.13
✎
21:15
|
(44) oh my God было Помогите сделать конфигурацию тут. Человек выкинул от коллекторской конторы базу на 1300 человек по башкортостану на 173 с копейками миллиона.
|
|||
47
Жан Пердежон
19.07.13
✎
21:16
|
(28) тебя ждали
|
|||
48
wertyu
19.07.13
✎
21:18
|
(47) вы о чём спорите? в КА для префиксов точно всё сделано, как и в УПП, и в УСО
|
|||
50
МЮЛЛЕР
19.07.13
✎
21:19
|
(49) [email protected]
|
|||
51
Grobik
19.07.13
✎
21:19
|
(48) Если такой разносторонне образованный - пожалуйста ответь мне здесь v8: Документооборот КОРП для Украины
|
|||
52
Жан Пердежон
19.07.13
✎
21:20
|
+(47) промахнулся, это я (26)
|
|||
53
wertyu
19.07.13
✎
21:20
|
(46) видимо у них на собеседовании обязательное условие было - всё время быть обдолбанным )
|
|||
54
Grobik
19.07.13
✎
21:20
|
(50) Про меня все ясно, никогда не скрывался
|
|||
55
Fragster
гуру
19.07.13
✎
21:21
|
(47) кто ждал? где ждал?
|
|||
56
wertyu
19.07.13
✎
21:21
|
(51) я хз какой документооборот на Украине, посмотри в личку )
|
|||
57
wertyu
19.07.13
✎
21:22
|
(55) см (52) )
|
|||
58
Grobik
19.07.13
✎
21:22
|
Нафиг личку, если шариш пиши на емыл. Можно заработать.
|
|||
59
wertyu
19.07.13
✎
21:23
|
(58) хорошо, напишу тут: Самара, Россия )
|
|||
60
Лиза777
20.07.13
✎
19:22
|
(30)(36) что ж вы сразу "уволить", вы же тоже не сразу умным стали. Я вот потому и задала вопрос, что не знаю как такой код оптимизировать. Я вот не знала, что НайтиПоКоду это тормоз. Хотя стараюсь запросы использовать, так как это быстрее, но тут вот что-то не додумалась.
"Ужасно" наверное почти все сначала программировали, но потом научились. (13) надо же я вот так не догадалась, попробую так. Спасибо всем добрым людям, которые пытались помочь и подсказали! |
|||
61
NS
20.07.13
✎
20:05
|
(41) А что, в семерке так принято писать?
А пустые циклы от одного до миллиона - там вставлять не принято? |
|||
62
NS
20.07.13
✎
20:05
|
(60) Зачем что-то находить, если можно тупо в условии сравнить код?
|
|||
63
Лиза777
20.07.13
✎
20:45
|
(61) я на 7-ке не пишу давно. Я на 8-ке пишу
|
|||
64
zak555
20.07.13
✎
20:47
|
(63) ты сеййчас в какой краске ?
|
|||
65
Красный рассвет
20.07.13
✎
20:48
|
(63) Лучше на сап уйди...
|
|||
66
Красный рассвет
20.07.13
✎
20:50
|
+(65) или замуж
|
|||
67
Конфигуратор1с
20.07.13
✎
20:50
|
(61) не. в семерке не было предопределенных элементов. виде не раз когда служебные справочники так юзали через найти по коду.
|
|||
68
zak555
20.07.13
✎
20:51
|
(67) были,ввидеглабльных пермененных
|
|||
69
Конфигуратор1с
20.07.13
✎
20:52
|
(60) ""Ужасно" наверное почти все сначала программировали, но потом научились. " в 99% так и есть, только фиг кто признается)
а найти по коду - это тот же запрос, таким образом в (0) у тебя 4 маленьких запроса в каждом документе |
|||
70
Конфигуратор1с
20.07.13
✎
20:53
|
(68) тем не менее были. кстати не только как глобальные переменные)
|
|||
71
Красный рассвет
20.07.13
✎
20:54
|
(67) В семерке грамотные люди заводили отдельный справочник для подобных вещей.
Ну главное что не по наименованию... По коду еще ничего)) |
|||
72
Конфигуратор1с
20.07.13
✎
20:58
|
(71) ну так и искали по коду.
|
|||
73
Конфигуратор1с
20.07.13
✎
20:59
|
жаль не осталось ни одной семерочной базы - там такого было много
|
|||
74
zak555
20.07.13
✎
21:00
|
(73) выкладывать бдгазпрома ? =)
|
|||
75
Конфигуратор1с
20.07.13
✎
21:00
|
(74) давай
|
|||
76
Красный рассвет
20.07.13
✎
21:02
|
(74) Номенклатура "Газ", код "0001"?
|
|||
77
Конфигуратор1с
20.07.13
✎
21:08
|
(76) ну ту сподручнее в константу если газ один, правда если у них газы то печаль
|
|||
78
Красный рассвет
20.07.13
✎
21:11
|
ну вот, девачка просто помощи хотела, а тут все такие злобные и еще какими-то константами пугают. Стыдно должно быть
|
|||
79
zak555
20.07.13
✎
21:11
|
на старомхарде =)
|
|||
80
NS
20.07.13
✎
22:28
|
(67) там есть константы, и если и искали - то никак не в этом случае.
Зачем тут искать элемент? Тут реквизит в справочнике завести надо. А если без изменения - то просто сравнить код. |
|||
81
Конфигуратор1с
20.07.13
✎
23:04
|
(80) "там есть константы" - констант на все не хватит. Но я не о этом случае
|
|||
82
Lama12
21.07.13
✎
13:16
|
(0)Давай будем честными. Код в (0) вообще работает? Ну если не считать тормозов?
|
|||
83
Лиза777
21.07.13
✎
17:24
|
(82) работает, если не считать тормозов ))
|
|||
84
Лиза777
21.07.13
✎
17:29
|
(78) спасибо за поддержку!
|
|||
85
Torquader
21.07.13
✎
17:43
|
А не проще ли сляпать регистр сведений, где задать префиксы для подразделений ?
|
|||
86
1s_ivan
21.07.13
✎
17:46
|
Лиза777, когда нужно сделать связи между 2-мя справочниками, (спр-спр), или (спр-число) и прочие пользовательские соответствия, лучше всего подходят регистры сведений. При желании, можно сделать регистр сведений периодическими, и в нем будут вся история изменений.
Например для вашей задачи: 1. Создайте регистр сведений «ПрефиксыПодразделенийОрганизаций» : 2 измерения («Организация»{спр.организаций.ссылка}, {«Подразделение» спр.подразделений.ссылка}): 1 ресурс («Префикс»{строка} ) 2. Получаете значение префикса по организации и подразделению (Не нужно объяснят как?) 3. НО обязательно проверяйте, если в регистре нет такой комбинации, тогда выполняется стандартный ДобавитьПрефиксУзла(Префикс); |
|||
87
Лиза777
21.07.13
✎
17:49
|
(86) ну да мне ваш вариант понятен, пока сделаю как в (26), завтра посмотрю как будет программа работать под нагрузкой
|
|||
88
Lama12
21.07.13
✎
18:43
|
(83) А мне кажется либо не весь код приведен, либо в случае организации с кодом "00003" префикс узла не добавится, т.к. в этой ветке условия нет ДобавитьПрефиксУзла(Префикс);
|
|||
89
1s_ivan
21.07.13
✎
21:38
|
(88) думаю ошибки нет, ведь смысл в том, чтобы менять значение переменной "Префикс".
|
|||
90
unkairosed
22.07.13
✎
02:21
|
Про борщ уже кто-то писал?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |