gifts2017

Очередное восстановление последовательности документов

Опубликовал Альтаир (Altair777) в раздел Обработки - Обработка документов

Обработка  предназначена для восстановления последовательности документов.
Версия 1.6 от 22.10.2009

Из основных фич:
1) Возможность тайм-аута между проведениями документов. Нужна при запуске в рабочее время.
2) Возможность прекращения обработки в заданное время. Например, после окончания рабочего дня запустили, и что бы она часиков в 8 прекратила базу насиловать :-)
3) Изменение времени документов с возможность выбора вида в начало дня в заданном интервале.
4) Возможность выборочного протоколирования результатов файл.
5) Возможность перепроведения всех документов, а не только из последовательности.
6) Для SQL-баз, работающих под SQL-2000 и наличии ВК 1С++, можно использовать метод ReconnectNative(), что существенно ускоряет обработку. Огромное спасибо Артуру (artbear) за 1С++ (Удалено в версии 1.5)
7) Возможность автоматической обработки. Например, в Глобальном модуле:
   

	 Процедура ПриНачалеРаботыСистемы()
   Если ИмяПользователя()="SYSTEM" Тогда
      ОткрытьФормуМодально("Обработка.repair",1); 
   КонецЕсли;
КонецПроцедуры

   И обработка сама выставляет параметры (см. процедуру ПриОткрытии)


История версий

1.1 от 13.01.2009
Добавлено: проверка на существование документов, входящих в Последовательности, с автоматическим отсеиванием "пустых" последовательностей. Спасибо  Notka за найденную проблему.

1.2 от 28.01.2009
Исправлено: ошибка расчета общего времени проведения, если обработка работала больше 2 календарных суток. Спасибо Poppy за найденную проблему.

1.3 от 30.01.2009
Добавлено: возможность выбора нескольких видов документов, предварительно помещаемых в начало дня.

1.4 от 09.06.2009
Добавлено: возможность сортировки видов документов по видам, предварительно помещаемых в начало дня.

1.5 от 18.09.2009
Добавлено: возможность выборочного протоколирования результатов файл.
Добавлено: возможность перепроведения всех документов, а не только из последовательности.
Удалено (!):  использование метода ReconnectNative()

1.6 от 22.10.2009
Исправлено: обработка ситуации для режима "Перепроводить ВСЕ документы" в случае, когда граница последовательности стоит не на документе.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Версия 1.6 от 22.10.2009
.ert 213,00Kb
08.02.12
314
.ert 213,00Kb 314 Скачать
Версия 1.4 от 09.06.2009
.1230215086 182,50Kb
08.02.12
939
.1230215086 182,50Kb 939 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Альтаир (Altair777) 25.12.08 17:33
Новая моя программуленка. Т.е. она старая, просто не пулбиковалась.
Сильно не ругайте, лучше посоветуйте что нужно улучшить :-)
2. Notka Sp (notka) 12.01.09 14:05
У меня вот что пишет:
ДатаС=Что.ПолучитьДокумент().ТекущийДокумент().ДатаДок+1;
{C:\DOCUMENTS AND SETTINGS\PC_10\РАБОЧИЙ СТОЛ\ВОССТАНОВЛЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ.ERT(238)}: Значение не представляет агрегатный объект (ДатаДок)
3. Альтаир (Altair777) 12.01.09 14:14
(2) Последовательности есть в конфигурации? Хоть одна?
А граница у нее есть? Выставлена документом? Этот документ не удалили?
4. Poppy (poppy) 12.01.09 22:39
(3)
> Последовательности есть в конфигурации? Хоть одна?

Зачем это спрашивать у пользователя? Может проверить программно?
Кстати, ошибка будет другая:
Имя=Посл.ПолучитьЗначение(Посл.ТекущаяСтрока());
{С:\REPAIR.ERT(236)}: Индекс не входит в границы списка значений.
Что=Последовательность.ПолучитьАтрибут(Имя);
{С:\REPAIR.ERT(237)}: Неверное имя атрибута

> А граница у нее есть? Выставлена документом? Этот документ не удалили?

Для чего нужна эта обработка? Заявлено, чтобы ответы были "ДА" независимо от начальных условий. После работы обработки, но не до начала... ;)
5. Notka Sp (notka) 13.01.09 06:29
Я прошу прощения. Смотрела в конфигурации, где нет ни одного документа из последовательности. Проверила на другой все работает.
6. Альтаир (Altair777) 13.01.09 09:21
(4) ты права, сделаю проверку для блондинок :-)
Только не обижайтесь, милые дамы :-)
Лучше расскажите, чем вы там занимаетесь. Мы, мужчины, очень любим блондиночек. А я - ужос какой любопытный :-)
7. Альтаир (Altair777) 13.01.09 09:45
(6) хм... проверка нужна еще и в том случае, когда последовательности есть, но не все они имеют документы.
8. Альтаир (Altair777) 13.01.09 10:26
(5) Обновил версию. Спасибо!
9. Аркадий Кучер (Abadonna) 13.01.09 10:26
(6)>Мы, мужчины, очень любим блондиночек.
За всех не расписывайся! Я люблю зеленоглазых шатенок
10. Notka Sp (notka) 13.01.09 10:31
Вот за что я люблю мужчин-программистов, так это за их снисхождение к нам... блондиночкам, шатеночкам...
11. Альтаир (Altair777) 13.01.09 10:34
(9) прости, Аркадий! Я дико извиняюсь :-)
Вообще, внешность не главное. Главное - чтоб человек хороший был.
12. Альтаир (Altair777) 13.01.09 10:35
(10) и к брюнеточкам тоже :-)
13. Аркадий Кучер (Abadonna) 13.01.09 10:40
(11)>Вообще, внешность не главное.
ИЗВИНЯЙСЯ второй раз:))))))))))
- Карлсон, поверь, не в пирогах счастье!
- Ты что, с ума сошел? А в чем же еще?
;)
14. Альтаир (Altair777) 13.01.09 10:42
фик! не извинюсь! :-)
счастье - в начинке ;-)
15. Poppy (poppy) 13.01.09 22:02
Как-то не очень правильно считает время выполнения:

Общее время обработки 3615 сек.
Общее время проведения 90014 сек.
16. Альтаир (Altair777) 14.01.09 09:51
(15) ого! спасибо, я посмотрю
но у меня все было правильно :-)
17. Artem (kalleka) 22.01.09 15:57
Надо попробовать. Только вот, что метки присутствуют настораживает
18. Artem (kalleka) 22.01.09 15:57
ReconnectNative() сильно увеличивает скорость?
19. Альтаир (Altair777) 22.01.09 16:14
(18) для 2000 SQL в десятки раз :-)
20. Альтаир (Altair777) 22.01.09 16:15
+ (19) для 2005, как я понимаю - нет
В нем была исправлена ошибка
21. Magus (magus) 22.01.09 16:37
(16)
Запусти обработку на пару суток. Сразу увидишь неправиьлность.
22. Artem (kalleka) 22.01.09 16:53
у нас 2000)) в 10 раз по сравнению со стандартной?
23. Альтаир (Altair777) 22.01.09 17:14
(21) спасибо, я понял в чем суть
24. Альтаир (Altair777) 22.01.09 17:19
(22) был такой случай, это касается не этой обработки, а вообще метода.
Нужно было провести примерно 20 документов по 3'000-8'000 строк.
Первый провелся за 15 минут, 10 за 3 часа, 15 не провелся вообще (оборвали)
Началось в пятницу вечером, не закончилось в понедельниу утром.
Цифры примерные, просто для оценки количественной характеристики.
25. Artem (kalleka) 23.01.09 08:39
(25) Ну у нас вообще большой документооборот, в основном по 5-30 строк доки. Немного допишу твою, добавлю лог в частности и проверим. Спасибо в общем - мне вот влом что то выкладывать
26. Artem (kalleka) 23.01.09 09:00
+ я не помню как в типовой торговле, но у нас приходные накладные вводятся на основании заказа поставщику, а те в свою очередь по заказу покупателя(не всегда). Так что тупо перенести приходные на начало дня не получится - будут минусы в регистрах резервах, заявках и прочее. Но мысль хорошая
27. Александр (ПАО) 23.01.09 10:06
Ребята, а можете написать обработку для проверки все ли кассы отправили закрытие смены в общую базу, их 21 шт. отправляют (обмен авто по фтп серверу) чтобы можно было с утра нажать кнопочку и увидеть если не пришел хотя бы 1 отчет). ТиС 7.7..помогите..вы же "монстры"*))
28. Artem (kalleka) 23.01.09 10:13
А (27) может написать обработку "Автоматическое доведение вашей конфы до божественной" ))) Чтобы запустил и все отлично стало, при чем у всех сразу
29. Альтаир (Altair777) 23.01.09 13:32
(27) мы все можем.... но иногда нам лень :-)
30. Альтаир (Altair777) 25.01.09 12:12
Обновил, но не проверил. Надеюсь, хуже не стало :-)
На домашнем компе, оказывается, не установлен телепат.
Ацкие муки :-(
31. Денис (Hunta) 26.01.09 20:06
Спасибо! Прям что то как то быстро отработала, в отличии от стандартной =)
Большой и жирный плюс!!! "+"
32. Альтаир (Altair777) 26.01.09 23:12
(31) Спасибо за комментарий! Я очень рад, что пригодилось.
Лично я стандартным восстановлением последевательности последний раз пользовался еще в прошлом веке. :-)
Воспоминания очень неприятные.
33. Сhe Burashka (CheBurator) 27.01.09 00:20
Извините за нескромный вопрос: а зачем таймаут между документами в 10 сек, понятно что в рабочее время.. но и врабочее время есть моменты относительного "бездействия" системы - и зачем в это время ждать по 10 сек?
34. Альтаир (Altair777) 27.01.09 00:30
(33) Мне кажется трудно отследить, а тем более, спрогнозировать занятость системы.
Ситуация - работают 5-10 менеджеров, а нужно срочно восстанавливать последовательность (бухи требуют).
Если не делать паузы - ожидание захвата таблиц.
35. Сhe Burashka (CheBurator) 27.01.09 00:43
(34)
1. а если попробовать ромиксовый патч 100% загрузки проца?
2. делать 10 сек паузу там, где модно обойтись вообще без пауз - бяка, подход "в лоб"...
36. Альтаир (Altair777) 27.01.09 00:57
(35) а если не под терминалами?
37. Сhe Burashka (CheBurator) 27.01.09 01:00
38. Альтаир (Altair777) 27.01.09 01:04
(37) отож :-)
Поэтому, если нет другого варианта (установленный патч)- тогда паузы.
Пользователь сам может выбрать.
39. Владимир (hogik) 27.01.09 03:48
(35-38)
;-) Интересный разговор получился у вас.
Паузы между транзакциям не имеют никакого отношения к "ромиксовый патч 100% загрузки проца". А обмен мнениями по поводу терминального режима какое имеет отношение к паузам между транзакциями и "100% загрузки процессора"?
Пауза между транзакциями позволяет другой задаче вклиниться в сплошной поток транзакций, а разработка Романа позволяет не загружать систему уже в процессе выполнения транзакции опросом блокировок в ожидающей задаче. Т.е. надо делать и паузы между транзакциями, и использовать разработку Романа. И не только в терминальном режиме, а и в обычном сетевом режиме.
40. Альтаир (Altair777) 27.01.09 04:08
(39) не мог же я спорить с самим Че :-)

Насколько я помню, основной выигрыш патч Ромикса дает именно в терминальном варианте. Поэтому в сетевом режиме он не так актуален. Какая разница, будет ли процессор загружен на 100% на клиентской машине, если все равно пользователю сначала нужно провести документ.

А вообще, я согласен - паузы нужны в "дневном режиме".
Поэтому они и есть :-)



41. Альтаир (Altair777) 27.01.09 04:11
Кстати, мне кажется, пауз больше нет ни в одной аналогичной разработке на ИС.
42. Владимир (hogik) 27.01.09 04:40
(40)
;-) Совсем меня запутали.
Да, больший "выигрыш патч Ромикса дает" в терминальном режиме чем в сетевом. Хотя загрузка сети на 100% при опросе блокировок тоже не положительно влияет на производительность системы. Да и не совсем безразлично "будет ли процессор загружен на 100% на клиентской машине". Например на клиентской машине выполняется задача с "пакетным" проведением документов, а пользователь работает в текстовом редакторе. Вроде в последних версиях Windows-а уже можно запускать две задачи...
43. Владимир (hogik) 27.01.09 04:44
41)
"Кстати, мне кажется, пауз больше нет ни в одной аналогичной разработке на ИС."
Про ИС не скажу, а у меня во всех разработка такого рода есть окно диалога с количеством секунд ожидания между...
44. Альтаир (Altair777) 27.01.09 04:56
(42) под словом "клиентская" я понимал что это не сервер.
"Обычные" пользователи не запускают такие обработки, они накладные колбасят.
Их запускают Администраторы БД, а сами идут пить пиво :-)
Поэтому многозадачность Windows в данном случае не востребованна.

(43) У меня тоже много фич есть, но я удовольствие растягиваю :-)
45. Artem (kalleka) 27.01.09 11:24
Кстати еще одно пожелание. Иногда бывает необходимо, чтобы если док не проводится он не прерывал обработку, а продолжил ее, ведя при этом лог. Смысл в следующем: Приходишь с утра, заглядываешь в лог - смотришь доки, которые не провелись, исправляешь косяки и запускаешь восстановление последовательности
46. Альтаир (Altair777) 27.01.09 16:37
(45) ноу проблем
но я себе тогда не делал
Ситуация - партионный учет, не провелся док с 500 или 1000 позиций.
А остальные провелись. Как будто :-)

47. Artem (kalleka) 27.01.09 20:48
(46) у нас тоже партионный учет, но за пару дней может быть 2-3, а то и больше косячных документов - отделу закупок большие права дали, по перепроведению документов и их изменению, а там такая система взаимосвязанная с заявками. реализациями и прочее. Сам я себе уже добавил и лог и чтобы проводилось дальше. Мне кажется лог по крайней мере нужен - хотя бы инфа когда началось, когда кончилось, ну статистика по скорости. какие доки не провелись.. а то прихожу на работу последний в отделе - а там раз и сервак скульный перегрузили и не понятно без лога чем закончилось дело)))
48. Альтаир (Altair777) 27.01.09 21:16
(47) Лог у меня есть
в первоначальном варианте записывалось в текстовый файл.
После каждого дока он записывался, как раз на случай не предвиденных ситуаций.
49. Сhe Burashka (CheBurator) 28.01.09 00:55
- да я тоже не против пауз, напрягает только полная "тупизна" такой организации пауз...
- решение по восстановлению последовательности с паузами в рабочем режиме вроде есть на дисках ИТС (давно туда не заглядывал)
- (47) зарубите на! всякие манипуляции с задним числом в обычном режиме работы, приучите юзверя СРАЗУ РАБОТАТЬ КАЧЕСТВЕННО, а не по типу "нахренячу по-быстрому, а завтра поправлю если что..." - сразу будет БОООЛЬШОЕ облегчение...
- у мну регламентом восстанавливалась ГП штатным образом с отправкой сообщения смской мне на мобилу,Э а так как взад лазил только я и 1 доверенный более-менее грамотный человек - восстановление ГП в 90% случаев проходило без проблем.. если утром на мобиле смски нет - лез по терминалу и смотрел текстовый протокол.: протокл лучше напрямую каптчить из табло сообщенйи и больше ничем не заморачиваться - используя 1Spy.dll
51. Альтаир (Altair777) 28.01.09 01:22
(50) мда... а давайте все будем заходить в чужие аналогичные разработки и переманивать на свои.
52. Артур Аюханов (artbear) 28.01.09 06:26
(51) А почему бы этого не делать? Пользователи должны знать о различных вариантах и использовать лучшее.
53. Алексей Константинов (alexk-is) 28.01.09 07:55
(52) Я, например, думал, что для этого создан рубрикатор. Иначе у пользователя может создаться "неверное" (неполное) представление. Обработок подобной направленности на ИС не 2, а в десятки раз больше...
54. Artem (kalleka) 28.01.09 08:40
(52) Мне в этой обработке понравился ReconnectNative(), к тому же я скомпоновал с нашей предыдущей обработкой и все вроде устраивает пока
(49) Насчет ограничения Юзверей согласен. Но здесь работаю месяц всего, пока не время наводить свои порядки
Altair777; +1 Ответить
55. Artem (kalleka) 28.01.09 10:35
Блин, не понятно зачем в 182 строке ТекДок.Провести(,1) передан параметр 1? Для чего? У нас один документ использует этот параметр и он криво провелся. За 3 дня таких доков 100 наверное - из за кривого проведения вылезли минусы в остатках
56. Альтаир (Altair777) 28.01.09 10:48
(55) Я извиняюсь, уже убрал и перезалил
57. Альтаир (Altair777) 28.01.09 11:38
(55) Отослал сообщение о найденной проблеме всем плюсовавшим.
Почти всем :-)
58. Александр Гурьев (avgur777) 30.01.09 14:41
При установке галочки "Предварительно ПН - в начало дня" выдает сообщение об ошибке создания объекта "Документ.ПриходнаяНакладная"...и это правильно, потому что в Торговле 7.7 такого документа НЕТ! А есть "Документ.ПоступлениеТМЦ"....
59. Альтаир (Altair777) 30.01.09 15:04
(58) Я об этом уже думал, что бы сделать поле для выбора вида Приходного документа.

> потому что в Торговле 7.7 такого документа НЕТ
Не следует путать платформу и конфигурацию :-)
Вот, например, Комплекс: ПриходнаяНакладная, Т_ПриходнаяНакладная
60. Александр Гурьев (avgur777) 30.01.09 15:27
Что вижу, то и пою....В описании написано "Внешний отчет, обработка для 1С: Торговля и склад 7.7 "
ЗЫ: В Комплексной 7.7 тоже нет объекта "Документ.ПриходнаяНакладная"... или мы используем разные конфигурации??
61. Альтаир (Altair777) 30.01.09 15:38
(60) Конфигураций много :-)
Уже изменил, скоро выложу.
62. Альтаир (Altair777) 30.01.09 16:49
Обновил. Еще куча новых идей появилась :-)
63. Artem (kalleka) 03.02.09 14:41
Лог добавил? лучше если с настройкой "подробности" лога
64. Альтаир (Altair777) 06.02.09 10:24
65. gator (gator) 07.02.09 11:41
Не знаю, может у меня чего в ТиС не так, или руки там итп, но штатная у меня работает быстрее вдвое...
усомнился...
сделал копию базы, хотел устроить "соревнования" при прочих равных - некогда...
А пока не утруждал себя точной записью результатов, извините.
На вскидку получилось так:
по данным обработки среднее время проведения под 20 секунд...
это ~3 дока в минуту...
штатная нt считает среднее время, но по 7-10 обычных доков в минуту делает...
(инвентаризационные итп большие доки не берем)
Идеи reconnect, с таймером - понравились,
проводить последовательность онлайн, в рабочее время...
(в штатную засуну?)
делал через "Предупреждение" - да, глючит, тут много вокруг этого понаписано по объект таймер итп...
66. Аркадий Кучер (Abadonna) 07.02.09 11:53
>проводить последовательность онлайн, в рабочее время...
Не знаю как на других базах, а на моей манагеры просто работать не смогут, если ГП в рабочее время пойдет. Будет полный виснец

67. Альтаир (Altair777) 07.02.09 11:58
(65) соревнования надо проводить в нерабочее время, по очереди
(66) а ты попробуй :-)
68. david (dav405) 17.02.09 20:24
Мне бы очень понравилось, если бы
1) сообщения о проведенных доках можно было бы выводить пакетами по сколько-нибудь штук,либо вовсе не выводить
2) Если бы время шло все-таки в секундах.миллисекундах
3) если бы была возможность вызывать обработку снаружи, тогда, например,
добавим в глобальный модуль
Функция RunAny(Параметр,ИмяФайла) Экспорт
ОткрытьФорму("Отчет#", Параметр, ИмяФайла);
Return 1;
КонецФункции
И вызываем из штатного шедулера vbs скрипт
set v7 = CreateObject("V77.Application")
result = v7.Initialize(v7.RMTrade, "/DПутб\ /NСпецЮзер /PЕгоПароль","NO_SPLASH_SHOW")
if result then
LogFile.WriteLine " Ok connected "+FormatDateTime(Time)
V7.EvalExpr("RunAny(""СтрокаПараметра"",""\\ПутьКОбработке\repair.ert"")")
......
69. Альтаир (Altair777) 10.06.09 15:57
Версия обновлена до 1.4 от 09.06.2009 - добавлена возможность сортировки нескольких видов документов, предварительно помещаемых в начало дня.
70. Альтаир (Altair777) 18.09.09 19:02
По просьбам из комментариев

1.5 от 18.09.2009
Добавлено: возможность выборочного протоколирования результатов файл.
Добавлено: возможность перепроведения всех документов, а не только из последовательности.
Удалено (!): использование метода ReconnectNative()
71. Дмитрий Васильев (post84d) 21.09.09 08:35
Обработка -супер. Достоинство в том что при про проведении не засоряется Журнал регистрации, до этого я пользовался другой , там постоянно (при проведении каждого документа переносилась ТА), таким образом два -три дня в ЖР шум в 500-600 ненужных записей. Спасибо!!!!!
72. Альтаир (Altair777) 21.09.09 10:27
(71) Не за что :-)

P.S. А плюсовать лучше не комментрии, а саму разработку ;-)
73. Александр Зубцов (iov) 26.09.09 22:00
(0)вот честно здря реконнект убрал. Обработка жирный плюс... но мог бы оставить желающие и знающие бы использовали.
74. Альтаир (Altair777) 28.09.09 17:33
(73) Были нюансы... Но предыдущую версию я оставил.
Спасибо!

Кстати, забыл упомянуть о седьмой фичи :D
75. Александр Зубцов (iov) 28.09.09 17:51
(74) а можно подробнее с нюансами? Потому как планирую назад вставить реконнект (только с возможностью установить переодичность в документах).
76. Альтаир (Altair777) 28.09.09 18:38
(75) http://www.1cpp.ru/docum/html/ODBC.html#reconnectnative-reconnectnative

Описание: специальный метод для решения проблемы с MSSQL 2000 (Bug #: 472280) Выполняет отключение и подключение родного соединения программы с сервером. При этом не должно быть открытых форм списков, форм объектов, прочих объектов языка на основе курсора, подготовленных или перебираемых объектов ODBCRecordset (через родное соединение, разумеется). Не допускается вызывать этот метод в транзакции явной или неявной.

Насколько я помню, когда затачивал под ReconnectNative() пришлось отказаться от объявления Перем ДокиДляПроведения в модуле процедуры.
Сравните, как это делается в 4 версии. Там док для проведения каждый раз создается независимо из последовательности.
Но если очень надо, могу попробовать побороть.
Кстати, а почему бы Вам не поставить более свежий скуль?
77. Александр Зубцов (iov) 28.09.09 19:28
(76) Более свежий скуль для 7.7 даже с патчами не хочет стабильно работать у меня... Частые вылеты + непонятные блокировки и зависающие сессии. Очень сильно переписанная конфа. Просто нет возможности отловить все баги. Вообщем остается надежда на реконнект.
Тем более я как поборол эту бяку (открытые курсоры)... писал все в список значений (Это для того чтобы в одном месте была процедура) сохранял в Значениевстроку а после выполнения метода восстанавливал.
А если требовалось в обработке то просто это значениеВСтроку и после метода реконнект(). А по поводу скуля поновее есть ли пример (версия с какими патчами) корректно работает? Чем черт не шутит вдруг правда встанет (уже год переписываю все на прямые запросы и иные ускорители исправил кучу косяков, может помогло). а так респект за обработку очень нужная вещь. Если найду гдето был запрос на версию sql с чем работаем и активация реконнект по этому методу сильно облегчит жизнь..
78. Александр Зубцов (iov) 28.09.09 19:34
(62) кстати из новых идей. как бы оформить возможность предварительной обработки документов по виду? все просто предлагаю закладку для спецов в которой они по виду документа например перед обработкой что-то делали (например меняли поля или добавляли что-то к комментарию документа) соответственно как параметр- сам документ
например так
вид документа |обработка(путь)|Модально|
"Реализация" | каталогобработок\ОбработкаИзмененияКомментария.ert |1|


80. Альтаир (Altair777) 29.09.09 11:30
(77) > писал все в список значений (Это для того чтобы в одном месте была процедура) сохранял в Значениевстроку а после выполнения метода восстанавливал.

А зачем список значений? Хватило бы и переменной модуля обработки, в которой содержится ЗначениеВСтрокуВнутр последнего документа.

Кстати, через список значений у меня тоже есть в Функция ПНвНачало().
Это была отдельная грустная история.
В этой разработке объединенены несколько. И раньше была отдельная обработка, которая Приходные накладные перебрасывала в начало дня.
Как потом оказалось, она была коряво написана, хотя и работала. И даже на вид казалось правильной.
Док=СоздатьОбъект("Документ.Приходная");
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент() = 1 Цикл
	// Тут было изменение времени документа
КонецЦикла;
...Показать Скрыть


И работала она довольно шустро. А когда по инициативе руководства был осуществленный внезапный неподготовленный переход на скуль, то оказалось, что время ее работы выросло в десятки! раз.
Кстати, этот "левый" переход сделал его приходящий корефан, который считал и, наверно, до сих пор себя считает крутым программистом :-)
Дошло даже до того что в первый рабочий день только один человек мог зайти в базу.
На мой вопрос:
- А вы проверяли?
Был дан ответ:
- Да
- А на скольки компьютерах 1С запускали?
- На одном
- А почему только на одном?!
.... ответа не последовало.... кажется. Давно это было...

Вот так и получилось, что все преимущества файловой версии потерялись, а недостатки скульной приобрелись.
81. Альтаир (Altair777) 29.09.09 11:34
+(80) Код должен был выглядеть так:

Док=СоздатьОбъект("Документ.Приходная");
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент() = 1 Цикл
// Тут было изменение времени документа
КонецЦикла;
82. Александр Зубцов (iov) 29.09.09 14:39
(80) в список значений это когда маркеры есть в глобальном модуле или еще где-то вот чтобы каждый раз не вспоминать их и ввел функцию которая собирала все в список сохраняла в строку а после реконнект востанавливала.
А насчет файловой версии есть плюсы есть минусы... Мне как-то скуль больше ипанирует в плане функционала а файловая в том что без использования реконнект проводит шустрее...
Ну а по поводу перевода на скуль. профи знает что делается это не за раз. А порой приходится и переписывать много.
83. Альтаир (Altair777) 29.09.09 15:08
(82) > профи знает что делается это не за раз

В том-то и дело :-)
Эксперименты надо проводить не на "живой" базе и не на живых людях.
Представьте каково мне было, когдя я прихожу на работу, а менеджеры практически рыдают - cрочная отргузка, а таблицы залочены.
А этот "Кулибин" с сисадмином (тоже приходящим) где-то на другом конце города....
84. Александр Зубцов (iov) 29.09.09 16:42
(83) Я вот также прихожу в фирмы и говорю что быстро но без гарантий стоит столько + гарантии в3-10 раз дороже.(+ исправление неявных проблем). И договариваюсь при свидетелях. Обычно после раздумий отказываются завут "спеца" дешево и сердито а потом вновь меня починить то что он наделал. (ну или стыдно и не зовут). Причем я заранее описываю типичные ошибки которые "спец" совершит. Обидно с одной стороны потом слышать что не послушали - потом все сломалось и позвали СПЕЦИАЛИСТА и выясняется что случилось именно так как говорил..
И главная проблема всех что ПОЧТИ НИКТО не пишет документации (Особенно я максимум видео стправку накатаю как и что и куда.) А после моих автоматизаций все работает если не менять ничего ибо каменты к коду пишу только к передаваемым параметрам и основным функциям и прцедурам. которые хоть и универсальны но не терпят ошибок при обращении с ними. И как-то приспичило привлечь франчей... Так те обплевали мои некоторые наработки "типа не стандартно 1С" переписали через 2 недели все просто порвало.. и доказать что это их вина было очень тяжело... нет документациии, описание изменений и тд... И они сертифицированные специ а я? Самоучка с опытом в 10 лет и ни одной притензии от клиентов. все как часы + 24 часа поддержка.
P.S. Тема уж больно знакомая. Недавно фирма педдержки (софт- железо) сервак уронили бездействием а потом прислали спецов которые русского языка не понимают и слова домен и рейд их в панику вгоняют... похерили инфу и еще счет выставили.. вот как после этого к таким относится?
85. Альтаир (Altair777) 29.09.09 16:56
(84) Просто крик души какой-то получился :-)
86. Александр Зубцов (iov) 29.09.09 17:43
(85) Просто надоели торгаши... они нихрена не создают кроме инфляции.
А создавать что-то, хоть и ввиде программ или сервисов- это хоть что-то... Я уважаю людей которые работают на созидание... А не тупо купи-продай это же система пожирающая сама себя... Мне обидно за будующее, точнее за его отсутствие... Просто сегодня все хотят отчетов а когда задал вопрос о том что надо ручками поработать" вбить данные правильные по своим клиентам" попытались свалить на меня со словами "ты же можешь"... Блин я могу и стрелять и пилить и петь, но это для души а остальное надо как-то оценивать а не требовать.
87. Алексей (platinum) 08.10.09 11:50
Подскажи, вот у меня есть задача перенести все документы поступления начало дня и выровнять последовательность. Я на третьей закладке указал диапазон дат,поставил галку "предварительно документы в начало", выбрал документы "Поступление ТМЦ" и "Возврат от покупателя" в табл.части и обработка работала всю ночь,но выбранные документы так и не перенесла в начало дня. Может я не совсем понял предназначение данной обработки и она этого не делает или что-то мешает ей перенести эти доки в нач. дня.
88. Альтаир (Altair777) 08.10.09 11:57
(87) Проведенные переносит, а не проведенные - нет
89. Алексей (platinum) 08.10.09 12:26
(88) сори сам разобрался, не обратил на дату "Не обрабатывать начиная со времени". По-умолчанию стоит ну уж очень позднее время, оказалось,что документы по реализации были на 06:00 ч., а некоторые по-поступлению чуть позже,но не позднее 8:00. Поставил время 02:00 и новое время от 0:30 и все норм.
90. Альтаир (Altair777) 08.10.09 12:31
91. Алексей (platinum) 08.10.09 13:33
В некоторых случаях для ускорения процесса предварительного перемещения документов можно было сделать другой алгоритм, например:
1. сделать два списка: в одном будут документы поступления, в другом документы списания.
2.Делаем выборку по всем документам в базе за указанный период
3.Перебираем документы, и на даты, где есть документы, смотрим, есть ли документы поступления, на конкретную дату, которые стоят позже, чем первый документ списания, то помещаем их в отдельный список переносимых документов на начало дня.

На мой взгляд, процесс проведения документов, особенно если они большие, гораздо длительней, чем проверки описанные мной.
92. Альтаир (Altair777) 08.10.09 14:08
(91)
1) А если не 2 вида документов, а 15? То 15 списков? :-)
3) Так и делается

Лишние документы не перепроводятся!
93. Алексей (platinum) 08.10.09 14:27
Я сейчас говорю про обработку для предварительного переноса, у тебя сделано, как я понял, так, ты перемещаешь все выбранные для предварительного переноса документы,которые находятся позже времени "Не обрабатывать начиная со времени", не смотря, если в день этого документа документы списания.
А про списки почему 15? Не важно сколько там будет видов документов, чаще всего требуется именно, чтобы поступление шло раньше списания и мы можем все документы разделить на два списка.
94. Альтаир (Altair777) 08.10.09 14:36
(93) И я о ней говорю.
1) Ситуация, когда нет документов списания на порядок реже, чем наоборот.
2) Обычно менеджеры когда начинают списывать товар? в 9 утра. Склады могут и в 8. Для этого и служит параметр на форме "Не обрабатывать начиная с времени, ЧЧ:ММ".
И как универсальная обработка может знать, какой документ списывает товар?
Как по Вашему, док "Наряд-Заказ Гидравлика" списывает или приходует? Или и то, и то? ;-)
95. Алексей (platinum) 08.10.09 14:51
Согласен на счет документов,которые могут быть, как приходом и как списанием, их можно отнести к исключениям или пусть пользователь сам решит, чем будет этот документ. Я, например, сейчас зарядил твою обработку и она мне перепроводит все документы поступления,хотя большинство из них и трогать не нужно,т.к. доки по реализации стоят, в большей степени, стоят позже доков поступления. Если, конечно, не заморачиваться,то и так все норм, просто долго идет предварительная перестановка, а потом еще восстановление последовательности, так что закончит она у меня только к позднему вечеру или завтра. Конечно, документов списания гораздо больше, но и поступлений не мало у меня, уже пару часов переставляет, а еще целый год впереди,где поступлений еще больше. Я мог бы поставить более позднее время, после которого нужно проверять,но могу опять попасться на ситуацию,когда реализация будет очень ранней.
96. Альтаир (Altair777) 08.10.09 15:01
(95) Ясненько :-)
За целый год собрались одним махом все сделать?
Впервые эта оббработка работала в фарм.фирме с документами по 3-8 тыс. строк. Как приходными, так и расходными.
Перенос за один день шел порядка 10-15 минут. Если базу держать в актуальном состоянии, то будет попроще.
Кстати, общий совет... На надо переносить сразу за весь период, лучше частями, по месяцу или кварталу. И просматривайте логи.
97. Алексей (platinum) 08.10.09 15:16
Дело в том, что пришел к клиенту, у которого последовательность не восстанавливалась уже с 2007 года, у них такой там бардак, и они еще удивляются, что как-то криво строятся отчеты. Если делать по-частям, то я совсем заколебусь все года разбирать. Ладно посмотрю, что получится, если будет куча косяков,то сверну базу,откорректируют остатки и пусть в обязанности какого-нибудь сотрудника, хотя раз в неделю запускать эту обработку.
98. Альтаир (Altair777) 08.10.09 15:24
(97) Желаю Вам удачи в этом :)
Очень интересно узнать, чем это все закончилось.
99. Альтаир (Altair777) 22.10.09 11:54
Обновил :)

Версия 1.6 от 22.10.2009
Исправлено: обработка ситуации для режима "Перепроводить ВСЕ документы" в случае, когда граница последовательности стоит не на документе.
100. Евгений Стоянов (quick) 03.03.10 14:48
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа