Имя: Пароль:
1C
1С v8
Запустил такой код...
,
0 Прохожий
 
04.10.12
09:34
Процедура КнопкаСформироватьНажатие(Кнопка)
   Рег = РегистрыСведений.ОбъектыДоступаДокументов.СоздатьНаборЗаписей();
   Рег.Прочитать();
   К = 0;
   Т = 0;
   Для Каждого Стр Из Рег Цикл
       К = К + 1;
       Если Стр.ДокументСсылка.Дата > Дата(2011,12,31) Тогда
           Продолжить;
       КонецЕсли;
       Т = Т + 1;
   КонецЦикла;
   Сообщить("всего " + К + ", удаляем " + Т);
КонецПроцедуры
...
Крутит уже минут 20 и до конца не дошел. Вопроса два: это плохо? и сколько тогда будет идти обрезка?
1 Alex S D
 
04.10.12
09:36
и где там обрезка?
2 ZanderZ
 
04.10.12
09:37
запросом быстрее будет, тормозит скорее всего из-за тр.ДокументСсылка.Дата
3 mikecool
 
04.10.12
09:37
классный копрокод
4 aleks-id
 
04.10.12
09:39
рукалицо.жпг
5 Balabass
 
04.10.12
09:39
работает? нетрож!
6 Balabass
 
04.10.12
09:40
Ваз 2107 тоже машина.
И на спидометре у него 160 есть.
Колеса 4 и сиденья 4.
Че не так?
7 Lama12
 
04.10.12
09:41
(0) А сколько этот регистр занимает места в % отношении от размера базы?
8 Прохожий
 
04.10.12
09:45
(7) Я думаю как у всех. регистр-то типовой, растет пропорционально росту числа документов.
9 Heckfy
 
04.10.12
09:46
(0) По сабжу:
1: Плохо
2: (1)+1
(3) Не, для классности не хватает: НаборЗаписей выгрузить в тз. Посчтитать количество записей ТЗ. Вывести индикатор выполнения. :)
10 Прохожий
 
04.10.12
09:46
(3) Это прототип.
11 Прохожий
 
04.10.12
09:47
(9) До вечера посчитает.
12 dmpl
 
04.10.12
09:48
(10) Клющечника видно издалека :)
13 Мимохожий Однако
 
04.10.12
09:48
Вместо лисапеда можно взять типовую обработку документов из конфигурации.
14 katc
 
04.10.12
09:48
умение растянуть пятиминутную работу на 8 часов - главное качество программиста 1С
15 H A D G E H O G s
 
04.10.12
09:49
(0) Я тебя занес в амбарную книгу
16 katc
 
04.10.12
09:50
надо еще поставить галочку напротив фамилии и потом обвести кружочком ( т.е. открыжить и округлить)
17 Прохожий
 
04.10.12
09:51
(13) Для этого надо иметь ИТС. Или получить в подарок по почте. ибо инфостаровское бесплатное скачивание я уже сегодня нажимал. И больше оно не доится...
18 Ткачев
 
04.10.12
09:52
(14)Оплата то по времени, это как такси со счетчиком, там оплата за километраж.
19 1Страх
 
04.10.12
09:52
(6) врешь, сидений там 5
20 hhhh
 
04.10.12
09:52
(17) и поэтому ты решил зафигачить 20000 запросов в цикле?
21 dmpl
 
04.10.12
09:52
(19) Там 2 сиденья и 1 диван :)
22 Heckfy
 
04.10.12
09:53
(17) А что мешает перед
Рег = РегистрыСведений.ОбъектыДоступаДокументов.СоздатьНаборЗаписей();
   Рег.Прочитать();
Установить отбор на нужную дату
Потом Рег.Очистить();
РезЗаписать();
ЗЫ: Звиняйте, если где ошибся, 1С-ки по рукой нету СП глянуть.
23 Ткачев
 
04.10.12
09:53
(19)2 сиденья и диван.
24 Прохожий
 
04.10.12
09:53
Надо проверить способности сервера. Я думаю из больше 20000. В том и пичалька.
25 Прохожий
 
04.10.12
09:53
(24) для (20)
26 dmpl
 
04.10.12
09:55
(24) Хинт: а почему бы не выбрать количество 1 запросом?
27 katc
 
04.10.12
09:58
он не умеет, разве не ясно с первого поста?
28 Прохожий
 
04.10.12
09:59
(27) Вопрос не в этом. Ты не понял сабжа с первого поста.
29 katc
 
04.10.12
09:59
кому нить сейчас надоест этот вброс и он напишет запрос. И потом еще полдня будут оптимизировать запрос. Рабочий день прошел. все счастливы.
30 Прохожий
 
04.10.12
09:59
Всё ещё молотит. Запрос у меня есть.
31 katc
 
04.10.12
10:01
(30) не допускаю оскорблений на эотм форуме, но ты все же .у.а. !
32 Прохожий
 
04.10.12
10:03
Троллинг в тематической ветке
33 Cashtane
 
04.10.12
10:03
Да ладно вы. Забавно же.
(0) Через точку ходить конечно не гуд. Но подобный код у меня, даже с переходом через точку, с 13000 записей регистра, пролазит не более чем за минуту.
Ставь в цикле: ОбработкаПрерыванияПользователя(); и Сообщить(к); Хоть веселее будет.
34 hhhh
 
04.10.12
10:03
(30) вот это Стр.ДокументСсылка.Дата - это у тебя отдельный запрос к базе. Ты его выполняешь 20000 раз. Ну в общем если в 1 час уложишься, значит у тебя супер-компьютеры там.
35 rutony
 
04.10.12
10:05
Как минимум нельзя обращаться к реквизиту через 2 точки это очень сильно про сживает скорость обращения. Зачем в каждом витке получать дату? Получи ее заранее.
Опять же на кой 2 счетчика, по моему у набора же есть метод количество.

А самое главное такое проще сделать запросом или отбором... Даже та же выборка может отработать быстрее...
36 Прохожий
 
04.10.12
10:05
(34) Не 20000. там значительно больше.
37 UIV
 
04.10.12
10:05
А что плохого в этом коде? Он же разовый. Нафига его оптимизировать?
38 Прохожий
 
04.10.12
10:05
(37) правильно. Надо мыслить зачем а не как.
39 hhhh
 
04.10.12
10:05
(33) там еще ДокументСсылка составного типа у него. То есть ещё каждый раз по 256 таблиц дергаются.
40 ZanderZ
 
04.10.12
10:06
(37) "А что плохого в этом коде?" - "Крутит уже минут 20 и до конца не дошел"
41 hhhh
 
04.10.12
10:07
(38) ну тогда наливай кофе и сиди, пей. У тебя ведь почасовая оплата. Торопиться некуда.
42 Прохожий
 
04.10.12
10:07
(41) Мне некуда.
43 Прохожий
 
04.10.12
10:08
Программа работает, сисадмин загрузку процессора отслеживает, потом подтвердит.
44 Прохожий
 
04.10.12
10:13
Посчитал в другой копии всего 1 174 302. Та ещё молотит...
Вопроса два: это плохо? и сколько тогда будет идти обрезка?
45 Прохожий
 
04.10.12
10:13
Резать надо не меньше двух третей.
46 rs_trade
 
04.10.12
10:17
(43) два дибила. запустили копрокод и уставились на загрузку процессора. facepalm.jpg
47 forforumandspam
 
04.10.12
10:21
А зачем считать документы с датой '20111231000001' и до '20111231235959'?
48 Прохожий
 
04.10.12
10:22
(47) Их записи и надо порезать.
49 Simbad
 
04.10.12
10:22
Стоит определить набор удаляемцх записей запросом, а ты перебираеш весь регистр
50 forforumandspam
 
04.10.12
10:25
(48) Намекаю: в V8 есть секунды, минуты и час в типе ДАТА. Ты условие поставил Дата > Дата(2011,12,31), а не Дата > Дата(2011,12,31,23,59,59)
51 5 Элемент
 
04.10.12
10:25
>> Стр.ДокументСсылка.Дата
мда
52 Прохожий
 
04.10.12
10:28
(49) Скорее запросом определить набор документов.
53 regniws
 
04.10.12
10:28
вроде ж не пятница
54 Прохожий
 
04.10.12
10:29
(53) Так мы ещё и не режем...
55 forforumandspam
 
04.10.12
10:30
(54) А кого в пятницу зарежут?
56 Прохожий
 
04.10.12
10:31
(55) см (44)
57 dmpl
 
04.10.12
10:33
(37) Это клюшечный код. Восьмерочник никогда такой код не напишет, потому что запросом выбрать быстрее и удобнее.
58 Прохожий
 
04.10.12
10:34
(57) Ты ничего не понимаешь в зарабатывании денег.
59 UIV
 
04.10.12
10:36
(40) Ну и что? Его запустить раз в год нужно.

(57) Восьмерочник не работавший на семерке это не настояший 1сник. Он зашорен, кругозор его узок, к работе на серьезных задачах требующих нешаблонного подхода он не способен. Неоднократно уже с этим сталкивался.
60 dmpl
 
04.10.12
10:37
(58) Тогда ты забыл про


Состояние("Обработано " + К + ", удаляем " + Т);


вставить в цикл.
61 Прохожий
 
04.10.12
10:37
(60) промахнулся. исправлю в окончательном варианте.
62 dmpl
 
04.10.12
10:37
(59) Это не восьмерочник, а снеговик ;) Восьмерочник знает и то, и то.
63 Прохожий
 
04.10.12
10:38
(62) А шестерка?
64 rutony
 
04.10.12
10:38
(57) Я бы не сказал, многие даже если будут писать с такой логикой, попытаются все же максимально правильнее написать, так как это очень влияет на скорость, например:

Процедура КнопкаСформироватьНажатие(Кнопка)
   Рег = РегистрыСведений.ОбъектыДоступаДокументов.СоздатьНаборЗаписей();
   Рег.Прочитать();
   Т = 0;
   ДатаПо = КонецДня(Дата(2011,12,31));
   Для Каждого Стр Из Рег Цикл
       Если Стр.ДокументСсылка.Дата > ДатаПо Тогда
           Продолжить;
       КонецЕсли;
       Т = Т + 1;
   КонецЦикла;
   Сообщить("всего " + Рег.Количество() + ", удаляем " + Т);
КонецПроцедуры
65 rutony
 
04.10.12
10:39
(61) Лол?)
66 Прохожий
 
04.10.12
10:43
(65) Тебе не угодишь.
67 dmpl
 
04.10.12
10:48
(63) Это гуру уже.
68 Прохожий
 
04.10.12
10:49
Вот и обед...
69 dmpl
 
04.10.12
10:51
(68) Надо было еще предусмотреть возможность паузы. А то ты обедаешь, а программа работает бесплатно.
70 forforumandspam
 
04.10.12
10:51
(69) :)
71 UIV
 
04.10.12
10:53
(69) Спасибо за идею! Обязательно буду применять ее в своих новых нетленках.
72 Heckfy
 
04.10.12
10:53
(69) Ну это уже константу надо вводить, и в цикле
Если КонстантаЯОбедаю=Истина Тогда
Продолжить;
КОнецЕсли;
73 dmpl
 
04.10.12
10:57
(71) Хочешь стать незаменимым - вставь паузу в обработчики ПриЗаписи(), ОбработкаПроведения() и т.п. Лучше всего - подпиской на события, чтобы не нашли сразу.
74 forforumandspam
 
04.10.12
10:57
(72) Всему учить надо...  :)
Если Час(ТекущаяДата()) = 13 Тогда
  Продолжить;
КонецЕсли;
75 Heckfy
 
04.10.12
10:58
(74) Не, не пойдет. А если обед плавающий? :)
76 UIV
 
04.10.12
10:58
(72) Неоптимальный код! Константу надо непосредственно в теле цикла проверять.

Пока не КонстантаЯОбедаю цикл
КонецЦикла;
77 YF
 
04.10.12
10:58
кстати, уберешь сообщить - будет быстрее
78 dmpl
 
04.10.12
10:58
(72)(74) Надо не Если, а Пока использовать.
79 dmpl
 
04.10.12
11:00
И вообще, не Продолжить надо использовать, а


ВЫБРАТЬ
   *
ИЗ
   РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
80 forforumandspam
 
04.10.12
11:02
(79) Тогда есть шанс, что после обеда программа не вернётся в рабочее состояние.
81 forforumandspam
 
04.10.12
11:03
(78) +1
82 rutony
 
04.10.12
11:03
(75) Так это же разовый код, чего заморачиваться
(74) Гениально
83 Heckfy
 
04.10.12
11:04
(78) Ну да. А еще можно юзверя привлечь, что бы не сидел без дела, пока обработка работает. Типа
Если Сч%100=0 Тогда
Если Вопрос"Обработано"+Сч Продолжить Да/нет Да Тогда
продолжить
КонецЕсли;
ЗЫ: На синтаксис прошу не обращать внимания. :)
84 dmpl
 
04.10.12
11:05
(80) Ну, еще и за сверхурочные заплатят :) И главное админ подтвердит - сервер работал как папа Карло :)
85 forforumandspam
 
04.10.12
11:08
(83) Можно капчу выдавать, а то будет тупо щёлкать.
86 dmpl
 
04.10.12
11:09
(85) Интересно, а можно ли на 1С сделать убегающую кнопку?..
87 YF
 
04.10.12
11:11
(86) Нет, там нет события "накрывания" мышью
88 forforumandspam
 
04.10.12
11:13
(86) Можно на форму выдать 10 кнопок и рандомно одну делать активной, а остальные пассивные.
89 Прохожий
 
04.10.12
11:25
В час будет где-то 120 000 обрабатывать. За 10 часов закончит. Ночь. по 1 000 рос. рублей в час. 10 000 рос. рублей за обрезку. Дорого?
90 dmpl
 
04.10.12
11:33
(88) И повесить обработчик ожидания на 1/10 секунды, чтобы эта активность постоянно менялась :)
91 Heckfy
 
04.10.12
11:34
(89) Долго. Очень долго. Откровенная ИБД!!! После такого и складывается стереотип о программистах 1С.

ЗЫ: А по деньгам - это личное дело каждого, как договоришься.
92 dmpl
 
04.10.12
11:36
(87) А если на форму HTML документ вывести?
93 Heckfy
 
04.10.12
11:40
94 forforumandspam
 
04.10.12
11:45
(90) Это подразумевалось. ;)
95 Прохожий
 
04.10.12
15:16
Режем, режем... Скоро пятницо.
96 UIV
 
04.10.12
15:22
(95) Держи нас в курсе.
97 Прохожий
 
04.10.12
15:30
(96) Хорошо. Как наступит пятница я отпишусь.
98 Ахиллес
 
04.10.12
15:48
(86) Можно сделать чтоб по щелчку на кнопке "Да" она менялась местами с кнопкой "Нет". А на возмущения пользователей отвечать: Смотри куда мышкой тыкаешь, дятел!
99 dmpl
 
04.10.12
15:58
(98) А еще можно кнопки назвать:

"Да, остановить" и "Нет, не продолжать"
100 ptiz
 
04.10.12
16:02
(89) Ты сам заплатить должен за то, что так надругался над СУБД.
101 0xFFFFFF
 
04.10.12
16:04
(0) Пля, че правда запросы отменили?
102 Прохожий
 
05.10.12
07:47
(102) Только я. Присоединяйся?
103 Прохожий
 
05.10.12
07:48
(100) А чего плохого - кто-то перестанет видеть документы прошлых лет...
104 Прохожий
 
05.10.12
08:57
Кто там спрашивал Когда? Встречайте OFF: Пятница
105 Леха Дум
 
05.10.12
08:58
106 GANR
 
05.10.12
09:28
(0) "Конфигуратор \ Отладка \ Замер производительности" в помощь
Закон Брукера: Даже маленькая практика стоит большой теории.