База знаний/Печать конвертов!/Помощь сообщества

Ответ получен

У нас адресов больше 30 тысяч

Kdesys
опубликовано Октябрь 21, 2011 15:39

Программа постоянно падает.

Появляются разного рода ошибки:

Что делать? 

 

Комментарии

User photo
Kdesys

Пишет:

В приложении возникла ошибка:

21.10.2011 15:46:22
NHibernate.Exceptions.GenericADOException: could not update: [PEP.NHiber.Letter#4622122d-d25c-419e-aa4f-afe8ce5eca6f][SQL: UPDATE Letter SET FrmEconomicMember = ?, ToEconomicMember = ?, NameTo = ?, NameFrm = ?, LetterNote = ?, LetterEmail = ?, isEmail = ?, NeedNotification = ?, LetterNumber = ?, PostRegisterNumber = ?, DateCreated = ?, DatePublication = ?, DatePrinted = ?, DateDispatched = ?, DateConfirmation = ?, DateCanceled = ?, DateLastEdit = ?, AddressTo = ?, AddressFrom = ?, AddressNotify = ?, PostRegisterId = ?, DistributionId = ?, DeliveryIsCanceled = ? WHERE LetterId = ?] ---> System.Data.OleDb.OleDbException: Размер поля недостаточен, чтобы принять добавляемые данные. Попробуйте вставить меньшее количество данных.
в System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
в System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
в System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
в System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
в System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
в System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
в NHibernate.JetDriver.JetDbCommand.ExecuteNonQuery()
в NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand cmd)
в NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(IExpectation expectation)
в NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object id, Object[] fields, Object[] oldFields, Object rowId, Boolean[] includeProperty, Int32 j, Object oldVersion, Object obj, SqlCommandInfo sql, ISessionImplementor session)
--- Конец трассировки внутреннего стека исключений ---
в PEP.E.B(Boolean )
в PEP.E.a(Object , EventArgs )
в System.Windows.Forms.Control.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnClick(EventArgs e)
в System.Windows.Forms.Button.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
App: Печать конвертов! 2.4.0.5
OS: Microsoft Windows NT 6.1.7601 Service Pack 1
CLR: 2.0.50727.5448 

Октябрь 21, 2011 15:47
User photo
Виктор Вагин
РИТ

У нас тестовая база разработчиков на 13000 - постоянно не падает

клиенты с десятками тысяч адресов у нас есть, но жалоб что "все время падает" от них - нет, нужно разбираться с вашим конкретным случаем

нужно предметно смотреть/разговаривать - в случае возникновения ошибок нам пишут отчёты по ошибке (снимок экрана, журнал работы программы и т.п.), мы оперативно разбираемся и исправляем. в общем больше информации нужно

ну и вообще говоря с такими большими базами возможно организационно стоит работать иначе

например отдельные базы создавать для разных задач или разных групп пользователей

экспорт/импорт между базами мы сделали

сколько кстати пользователей работают у вас одновременно с базой?

Октябрь 21, 2011 15:52
User photo
Виктор Вагин
РИТ

опп. не успел второе сообщение прочитать, читаю

Октябрь 21, 2011 15:52
User photo
Kdesys

С базой работает один пользователь, делить базу возможности нет.

Возможно какое-то из полей слишком длинное и не помещается в список рассылки? Тогда сообщите максимальные размеры полей. 

Помогите пожалуйста. 

Октябрь 21, 2011 15:55
User photo
Виктор Вагин
РИТ

Всё понятно, воспроизвёл вашу ошибку на своём компьютере

У какого то их добавляемых вами контрагентов какое то из полей "слишком длинное" для текущего варианта нашей программы

сегодня выложу исправленную версию, в которой ошибки не будет

Октябрь 21, 2011 16:03
User photo
Kdesys

Вы лучше сейчас скажите какая длина максимальная для текущей версии?

Октябрь 21, 2011 16:12
User photo
Виктор Вагин
РИТ

Вот я сейчас анализирую

вы же никакими другими средствами кроме программы с базой данных не работали?

если нет, то остаётся такой вариант, что

в письме наименование получателя - 250 символов

но оно у вас наверно где то сложилось из

"Наименование юр лица" (до 250 символов) + "Кому:" (до 250 символов)

либо

"Короткое наименование юр лица" (до 200 символов) + "Кому:" (до 250 символов)

В общем несколько вариантов может быть

Октябрь 21, 2011 16:29
User photo
Виктор Вагин
РИТ

Собрал вариант программы, который обрезает поле до 250 символов

и пишет в примечание "Поле "Кому" обрезано до 250 (максимально допустимой длины)"

так что настроив соответствующим образом пользовательский фильтр, все письма с такой проблемой можно будет найти и поправить поле Кому руками

Пробуйте (только перед обновлением не забудьте сделать резервную копию базы данных).

если всё будет нормально, на следующей неделе обновим программу на сайте

Октябрь 21, 2011 17:09
User photo
Kdesys

пока просто нашли длинное наименование и сократили его руками.

Сейчас возникла новая ошибка.

При добавлении контрагентов в список рассылки:

22.10.2011 12:38:04
NHibernate.Exceptions.GenericADOException: could not update: [PEP.NHiber.Letter#444c2b6f-588e-4dba-99bf-4d3bf5149ba5][SQL: UPDATE Letter SET FrmEconomicMember = ?, ToEconomicMember = ?, NameTo = ?, NameFrm = ?, LetterNote = ?, LetterEmail = ?, isEmail = ?, NeedNotification = ?, LetterNumber = ?, PostRegisterNumber = ?, DateCreated = ?, DatePublication = ?, DatePrinted = ?, DateDispatched = ?, DateConfirmation = ?, DateCanceled = ?, DateLastEdit = ?, AddressTo = ?, AddressFrom = ?, AddressNotify = ?, PostRegisterId = ?, DistributionId = ?, DeliveryIsCanceled = ? WHERE LetterId = ?] ---> System.Data.OleDb.OleDbException: Превышено число блокировок файлов общего доступа. Увеличьте значение параметра реестра MaxLocksPerFile.
в System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
в System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
в System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
в System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
в System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
в System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
в NHibernate.JetDriver.JetDbCommand.ExecuteNonQuery()
в NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery(IDbCommand cmd)
в NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(IExpectation expectation)
в NHibernate.Persister.Entity.AbstractEntityPersister.Update(Object id, Object[] fields, Object[] oldFields, Object rowId, Boolean[] includeProperty, Int32 j, Object oldVersion, Object obj, SqlCommandInfo sql, ISessionImplementor session)
--- Конец трассировки внутреннего стека исключений ---
в PEP.E.B(Boolean )
в PEP.E.a(Object , EventArgs )
в System.Windows.Forms.Control.OnClick(EventArgs e)
в System.Windows.Forms.Button.OnClick(EventArgs e)
в System.Windows.Forms.Button.WndProc(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
App: Печать конвертов! 2.4.0.5
OS: Microsoft Windows NT 6.1.7601 Service Pack 1
CLR: 2.0.50727.5448

 

Я у вас прям бета-тестер...

Октябрь 22, 2011 12:41
User photo
Виктор Вагин
РИТ

Какие то косяки системных компонентов уже пошли

на вскидку - вы что, все 30000 контрагентов разом в рассылку пихаете?

или какими порциями?

Октябрь 22, 2011 12:54
User photo
Kdesys

Сначала пытался запихнуть 35 тысяч, вылезла ошибка.

Затем залил первые 20 тысяч - нормально. Вторые 15 тысяч не залились - та же ошибка.

Так как первые 20 тысяч уже залиты, попытался залить 10 тысяч. Получилось. Затем залил оставшиеся 5 тысяч. Всё получилось.

 

Пожалуйста оптимизируйте каким-либо образом программу. Ооочеееньь медленно работают следующие функции:

  • импорт из файла;
  • выбор (пометка) контрагентов;
  • добавление в список рассылки.
Октябрь 22, 2011 13:23
User photo
Виктор Вагин
РИТ

ok, озадачился

в последний раз меня так предметно спрашивали про выдачу на печать 400 конвертов разом: http://forum.russianit.ru/post5732.html

мы стараемся делать то что нас просят, ну вы конечно всех превзошли..

на таких объёмах просто уже в системные ограничения можно упереться.

но проверю/посмотрю/разберусь всё равно

Октябрь 22, 2011 13:33
User photo
Kdesys

да? всего 400? :-)

Нажал на рассылку и нажал кнопку "Печатать конверт". Сижу жду уже пол часа :-)

Наверное оставлю, вечером отпишусь. 

Октябрь 22, 2011 13:47
User photo
Kdesys

Все контрагенты нормально добавились в рассылку. Не знаю сколько времени это заняло, но ошибок не было.

Для справки, система: Intel i5 2410M, 4Gb RAM

Октябрь 22, 2011 22:33
User photo
Kdesys

Нашли две ошибки: 

1. В рассылке неправильно делается сортировка по номеру.

Если нажать на столбец с номером, записи сортируются следующим образом:

1

10

100

1000 и т.д. 

 

2. На шаблоне конверта C5 наименования контрагентов прописываются не полностью (теряются слова).

Сделайте что-бы помещалось всё - это очень важно.

Можно даже с переносом по буквам.

Например, 

Кому: СУПЕРДЛИННОЕНАЗВАНИЕОРГАН

ИЗАЦИИ

 

3. Можно ли редактировать шаблоны конвертов? 

Например, мы бы хотели перенести логотип в правый верхний угол и убрать надпись "место марки".

Октябрь 27, 2011 09:43
User photo
Виктор Вагин
РИТ

1. по поводу сортировки - не очень понимаю как вы хотите чтобы они сортировались. на мой взгляд тот порядок что вы написали - правильный. возможно вы имели ввиду что номера сортируются как строки и 10 получается раньше чем 2. это действительно так.

2. в стандартных бланках сделано всё просто - буквы должны быть не меньше чем буквы надписей штампа (Куда..) т.е. уменьшать их до бесконечности неправильно. место куда вбивать - тоже ограничено. т.е. мы стараемся укладываться в естественные рамки, если вас они не устраивают - действительно можно завести пользовательские бланки конвертов (ниже). касаемо переноса букв - такая возможность есть. откройте пункт меню "Сервис | Настройки" и на первой же вкладке вы найдёте перенос по словам или по символам.

3. Для того чтобы завести свой "пользовательский" конверт - перейдите в раздел "Шаблоны" и импортируйте какой нибудь стандартный бланк (они поставляются вместе с программой c расширениtv lbk) и исправьте его. Логотип можно менять прямо на "фоновом рисунке" шаблона, либо уже в окне печати конверта по клавише "конверт". Но помните что пользовательские конверты отъедают больше памяти при массовой печати! (приходится печатать меньшими порциями)

Октябрь 27, 2011 10:05
User photo
Kdesys

1. Именно это я и имел ввиду, поправьте пожалуйста и выложите ссылку на исправленную версию здесь.

2 и 3 спасибо, будем пробовать. 

Октябрь 27, 2011 12:00
User photo
Виктор Вагин
РИТ

первое не так просто сделать, не обещаю быстро исправить (подумаю как быть на этой неделе)

Октябрь 27, 2011 12:14
User photo
Kdesys

Не очень понимаю сложности (в плане программирования).

Надеюсь, что исправите как можно скорее.

Очень неудобно работать с большими объемами данных.

Или хотя бы добавьте колонку индекс получателя, чтобы можно было сортировать по нему. 

Спасибо. 

Октябрь 27, 2011 21:09
User photo
Kdesys

есть новости?

Октябрь 31, 2011 09:36
User photo
Виктор Вагин
РИТ

Пока никакого прогресса

дело в том что в версии 2.4 мы добавили сложноустроенную нумерацию сообщений

и очевидно что для "правильной" сортировки изменения нужно вносить в том числе в неё

конкретно в вашем случае "простых номеров" помогло бы заполнение номера нулями (или пробелами) слева до определённой длинны

Но это нужно менять для существующей уже базы скриптом обновления очевидно (могу скрипт написать)

Кроме того, неочевидно как нумерация вяжется вообще с рассылками и должна ли учитываться в общей последовательности входящих/исходящих номеров

Ноябрь 01, 2011 10:20
User photo
Kdesys

как продвигается оптимизация по скорости работы программы и нумерации?

Ноябрь 19, 2011 20:06
User photo
Виктор Вагин
РИТ

работаем над новой версией, на этой неделе хотим выпустить

Ноябрь 21, 2011 09:45