• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Как выловить предупреждение?

  • Автор темы abbatik
  • Дата начала
A

abbatik

Добрый день, коллеги.

Сразу оговорюсь, что код не мой, так что хаять, что так не делают не надо, ибо сам это знаю :(

Есть форма документа, в которой содержится около 20 подформ, куча различных вычисляемых полей с 20-40 строчными собаками... В двух словах ужас полный ;)
Проблема такова, что у удаленных пользователей возникает предупреждение "Поле слишком велико (32 КБайт) или слишком велики формулы для значений в столбцах и отбора". Причем, когда я открываю этот документ от себя, такой ошибки не получаю, из чего сделал вывод, что проблема либо при обращении к справочнику, либо где-то имя какое-то некорректное у них... Ошибка очевидно вылетает либо при сохранении документа, либо на uidoc.RefreshHideFormulas. Ограничений на UpdateBy и Revisions стоят.

Но вопрос в другом. Как можно выловить при вычислении какого поля выскакивает ошибка?
 
A

Akupaka

Сразу оговорюсь, что код не мой
та ладно, не отмазывайся ;)

Как можно выловить при вычислении какого поля выскакивает ошибка?
а в самом сообщении нету имени поля?.. тогда только методом вырезания/возвращения полей...

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

Ошибка очевидно вылетает либо при сохранении документа, либо на uidoc.RefreshHideFormulas
что тут очевидно-то, если есть варианты? ;) ты сядь там с юзером и пусть он тебе наклацает ошибку...

зы: а что за продукт? массовый или самопал? интересно :(
 
M

morpheus

abbatik
What is the maximum size of text fields? 32KB (storage); 32KB displayed in a view's column


и ненужным полям руками проставлять IsSummary = false
 
A

abbatik

а в самом сообщении нету имени поля?.. тогда только методом вырезания/возвращения полей...

Нет, предупреждение лотусовое родное.

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

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

что тут очевидно-то, если есть варианты? ;) ты сядь там с юзером и пусть он тебе наклацает ошибку...

Ну если учесть, что юзер у заказчика и очень далеко, то это не вариант.

зы: а что за продукт? массовый или самопал? интересно :(

Лет 10 назад это был БОСС-Референт ;) Сейчас это мутант-гибрид ;)


Morpheus сказал(а):
abbatik
What is the maximum size of text fields? 32KB (storage); 32KB displayed in a view's column


и ненужным полям руками проставлять IsSummary = false

Спасибо за совет, но проблема в том, что желательно точно знать какое поле/я выдают это предупреждение.
 
A

Akupaka

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

желательно точно знать какое поле/я выдают это предупреждение
Морфеюс, ты просто обязан сказать человеку в каких полях эта ошибка! :(
 
A

abbatik

ну, если заказчик уведомляет об ошибке, значит он подписал договор на поддержку, если есть договор на поддержку, значит ошибка должна быть описана заказчиком вплоть до действий, которые он выполняет...
что делает заказчик? на какой базе ошибка? какое (предполагаемое) действие предшествует ошибке?

Ошибка возникает при сохранении документа, либо после нажатия кнопки, в которой присутствует функция Call uidoc.RefreshHideFormulas

Морфеюс, ты просто обязан сказать человеку в каких полях эта ошибка! ;)

Я понимаю, что у вас хорошее настроение, но если сказать по существу нечего, то прошу не флудить, ибо это мешает отслеживанию ответов :(
Спасибо.
 
A

Akupaka

Ошибка возникает при сохранении документа, либо после нажатия кнопки, в которой присутствует функция Call uidoc.RefreshHideFormulas
ты не обижайся, но это не описание того, что делает пользователь и так тебе не поможет никто!
в Боссе ну просто дофига действий, которые сохраняют документ, остальные его рефрешат :(
если ты хочешь помощи, а не флуда, то потрудись выяснить что предшествует ошибке! я попросил хотя бы название базы, что юзер тыкает, а ты даже этого не хочешь сказать! ну как тут не пофлудить ;)

вот тебе навскидку, в Боссе много проблем связанных с действиеми работающими с ознакомлением с документом. там заполняется туча полей именами и унидами.
 
O

Omh

Ну а если экспортнуть документ, видно, какое поле потенциально может переполниться (т.е. содержит много данных)?
 
A

Akupaka

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

abbatik

ты не обижайся, но это не описание того, что делает пользователь и так тебе не поможет никто!
в Боссе ну просто дофига действий, которые сохраняют документ, остальные его рефрешат ;)
если ты хочешь помощи, а не флуда, то потрудись выяснить что предшествует ошибке! я попросил хотя бы название базы, что юзер тыкает, а ты даже этого не хочешь сказать! ну как тут не пофлудить ;)

вот тебе навскидку, в Боссе много проблем связанных с действиеми работающими с ознакомлением с документом. там заполняется туча полей именами и унидами.

Да я не обижаюсь :) Я вообще не обидчевый :)
А по поводу действий, я же не спрашивал где искать, а спросил возможно ли вычислить поле, из-за которого эта ошибка возникает. Ошибка Лотусовая и я думаю всем более-менее понимащим разработчикам понятно, почему она возникает :)
Проблема явно в формуле либо вычисляемого поля, либо диалог бокса..



Ну а если экспортнуть документ, видно, какое поле потенциально может переполниться (т.е. содержит много данных)?

Нет, не видно... Если было бы все так просто...

я могу погадать по этой гуще, но ничего не обещаю ))
хотя не факт, поля могут заполняться уже после открытия, а сохранить с переполнением не даст...

Сохранять в какой-то момент дает...

Кстати лотусня по идеи должна резать поле (думал так и вычислить где данные явно прерванные), но тут как-то все очень странно...
Люди до меня тут работающие, вообще рассказывают страшные истории про то, что документ даже с переполненным полем сохранялся и потом его невозможно было открыть, но я это не видел...
 
A

Akupaka

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

если прорабатывать второй вариант, то тебе нужно около 6-7 тестеров на полторы-две недели, и это будет только поверхностно, и врядли получите ошибку переполенения, т.к. нужно забить кучу данных в систему, чтобы съимитировать переполнение...

если первый, то обойдется где-то одним открытием того же документа тем же сотрудником :)

зы: я уже говорил, обрати внимание на поля, что сожержат инфу о пользователях, особенно связанные с ознакомлением!
зы2: я не понял, вам хоть какую-то инфу от заказчика дали?!
зы3: в какой компании ты работаешь?

Ошибка Лотусовая и я думаю всем более-менее понимащим разработчикам понятно, почему она возникает smile.gif
Проблема явно в формуле либо вычисляемого поля, либо диалог бокса..
думаю, что заказчика такой ответ не удовлетворит :)

Люди до меня тут работающие, вообще рассказывают страшные истории про то, что документ даже с переполненным полем сохранялся и потом его невозможно было открыть, но я это не видел...
бредово звучит, при мне разработчик получал ошибку при вызове nd.Save(), при переполнении...
 
L

lionk

если нужно найти поле на которое ругается что оно слишком большое то почемубы не зделать агента который переберает все поля и смотрит их размер notesItem.ValueLength и если он больше 32кв то выводит меседжбокс или ещё чтото.
на худой конец можно в форму вмаунтить шоб док из UI выдернуть без напрягав.
 
X

Xalet

Вопрос из книжки со сказками... На удаленном рабочем месте в непонятной базе что-то не работает...

Если у тебя база таже а домина другая, то может все легко работать. Скажем у клиента стоит 5ка, а ты тестишь на семерке... Конкретнее надо.

Самый простой способ это чтобы клиент показал, что и где и как у него ломается... Если он далеко и есть договор на поддержку, просто обязаны быть настроены средства для удаленного администрирования.
 
K

Krjemilek

Эта ошибка обычно возникает при попытке сохранения текстового мультивалуе поля. По дизайну отлавливаем такие поля, там может быть что-нить похожее на слив из DBColumn.
Как вариант проверки, ихо, на боевой базе построить вид с такими найденными полями с выводом их размера. Если статистика большая то можно вычислить потенциальное опасное поле.
ЗЫ: Тут другое эта беда довольно хреново лечится.
 
A

Akupaka

Вопрос из книжки со сказками...
собсно, совет тоже ))

Самый простой способ это чтобы клиент показал, что и где и как у него ломается...
"мы поедем, мы помчимся, на оленях..."

Если он далеко и есть договор на поддержку, просто обязаны быть настроены средства для удаленного администрирования.
мечтатель... в лучшем случае пользователь может сказать, что он нажал! :)

Эта ошибка обычно возникает при попытке сохранения текстового мультивалуе поля
случаи при которых возникает ошибка были описаны самим автором, одно из простых и логичных решений подсказал Морфеюс.
вопрос не "почему ошибка?", а "какое поле переполнилось?"... но, спасибо за участие :)

Как вариант проверки, ихо, на боевой базе построить вид
нет доступа к боевой базе...

abbatik, смари какую я тебе отмазку нашел :)


есть новости по ошибке?
 
A

abbatik

Угу.. ссылку на кадастр видел, поржал :)

Проблема пока не решилась.. я пока ограничил список потенциальных полей, в которых из-за большого количества лукапов возможно это переполнение.

Проблема осложняется, что у заказчика огромная распределенная сеть, причем не только в России и ошибка возникает только в одном из регионов, доступа к которому у меня соответсвенно нет.
 
K

Krjemilek

Как вариант сделать в полях проверку размера полученных списков и если более 32 то слать письмо разработчику письмо типа "Беда в поле XXX". Это если дадут боевой шаблон на время подправить.
 
A

Akupaka

я вам еще одну умную вещь скажу...
abbatik, тебе это пригодится в контексте текущей ошибки, когда будете исправлять, то задумайтесь над этим тоже...
так вот... объем информации в summary-полях всего документа не может превышать 64КБ (в реале может колебаться в районе 58-62, т.е. часть тратится на служебные данные), соотв. сохранить документ в котором есть поля с большим кол-вом инфы, не превышающем 32КБ в каждом, но в сумме превышающим 64КБ, тоже НЕ получится


слать письмо разработчику
как дети малые :) а смс не надо слать, что было отправлено письмо? ;)
что за фантазии? а потом получить иск потому что продукт занимается почтовой рассылкой ;)

если подобное делать, то уже не так, а цивильно, как остальные делают - сбор данных, в княпкой, которая формирует отчет в службу поддержки...
 
K

Krjemilek

как дети малые :) а смс не надо слать, что было отправлено письмо? ;)
что за фантазии? а потом получить иск потому что продукт занимается почтовой рассылкой ;)
Я имел ввиду экстренное нахождение ошибки из серии "бухгалтерия стоит, начальник IT-отдела мылит веревку" - тут не до реверансов. Еще более действенно сделать звонок клиенту пусть под Вашим чутким руководством при возникновении ошибки посмотрит размеры проблемных айтемов в свойствах документа (до сохранения разумеется ну и если не документ нью), накрайняк нарисовать пошаговый гомикс "Ваши действия при возниконовении ошибки >32".

To Akupaka: Спасибо за ликбез про 64К. Проверил. Really.
 
A

abbatik

Как вариант сделать в полях проверку размера полученных списков и если более 32 то слать письмо разработчику письмо типа "Беда в поле XXX". Это если дадут боевой шаблон на время подправить.

Во-первых вряд ли дадут, во вторых куда прописывать проверку? Если поля вычисляеиые особенно :)

я вам еще одну умную вещь скажу...
abbatik, тебе это пригодится в контексте текущей ошибки, когда будете исправлять, то задумайтесь над этим тоже...
так вот... объем информации в summary-полях всего документа не может превышать 64КБ (в реале может колебаться в районе 58-62, т.е. часть тратится на служебные данные), соотв. сохранить документ в котором есть поля с большим кол-вом инфы, не превышающем 32КБ в каждом, но в сумме превышающим 64КБ, тоже НЕ получится



как дети малые ;) а смс не надо слать, что было отправлено письмо? ;)
что за фантазии? а потом получить иск потому что продукт занимается почтовой рассылкой ;)

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

Все верно, только все не так страшно ;)
Проблема еще возможна с полями типа диалог бокс, где просто переполняется кол-во справочной информации. Это вовсе не значит, что она вся будет храниться в одном из полей.

Я имел ввиду экстренное нахождение ошибки из серии "бухгалтерия стоит, начальник IT-отдела мылит веревку" - тут не до реверансов. Еще более действенно сделать звонок клиенту пусть под Вашим чутким руководством при возникновении ошибки посмотрит размеры проблемных айтемов в свойствах документа (до сохранения разумеется ну и если не документ нью), накрайняк нарисовать пошаговый гомикс "Ваши действия при возниконовении ошибки >32".

To Akupaka: Спасибо за ликбез про 64К. Проверил. Really.

Я тебя понял, спасибо.

Да я вроде сузил круг полей и терзаю тамошнего админа вопросами, а точнее написал агент, который проверяет интересующие меня виды на кол-во информации (в байтах) в интересующих меня столбцах. Так что, надеюсь, решение не за горами.

Всем спасибо!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!