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

Тема в разделе "Lotus - Программирование", создана пользователем abbatik, 6 апр 2009.

  1. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Добрый день, коллеги.

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

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

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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    та ладно, не отмазывайся ;)

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

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

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

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    abbatik
    What is the maximum size of text fields? 32KB (storage); 32KB displayed in a view's column


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

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Нет, предупреждение лотусовое родное.

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

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

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


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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ну, если заказчик уведомляет об ошибке, значит он подписал договор на поддержку, если есть договор на поддержку, значит ошибка должна быть описана заказчиком вплоть до действий, которые он выполняет...
    что делает заказчик? на какой базе ошибка? какое (предполагаемое) действие предшествует ошибке?

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

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Ошибка возникает при сохранении документа, либо после нажатия кнопки, в которой присутствует функция Call uidoc.RefreshHideFormulas

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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ты не обижайся, но это не описание того, что делает пользователь и так тебе не поможет никто!
    в Боссе ну просто дофига действий, которые сохраняют документ, остальные его рефрешат :(
    если ты хочешь помощи, а не флуда, то потрудись выяснить что предшествует ошибке! я попросил хотя бы название базы, что юзер тыкает, а ты даже этого не хочешь сказать! ну как тут не пофлудить ;)

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

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну а если экспортнуть документ, видно, какое поле потенциально может переполниться (т.е. содержит много данных)?
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    я могу погадать по этой гуще, но ничего не обещаю ))
    хотя не факт, поля могут заполняться уже после открытия, а сохранить с переполнением не даст...
     
  10. abbatik

    abbatik Lotus team
    Lotus team

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



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

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

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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    возможно, если:
    - выяснить у заказчика, что он сделал, как добился ошибки
    - самому протестировать весь функционал

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

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

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

    думаю, что заказчика такой ответ не удовлетворит :)

    бредово звучит, при мне разработчик получал ошибку при вызове nd.Save(), при переполнении...
     
  12. lionk

    lionk Well-Known Member

    Регистрация:
    5 апр 2007
    Сообщения:
    308
    Симпатии:
    3
    если нужно найти поле на которое ругается что оно слишком большое то почемубы не зделать агента который переберает все поля и смотрит их размер notesItem.ValueLength и если он больше 32кв то выводит меседжбокс или ещё чтото.
    на худой конец можно в форму вмаунтить шоб док из UI выдернуть без напрягав.
     
  13. Xalet

    Xalet Well-Known Member

    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Вопрос из книжки со сказками... На удаленном рабочем месте в непонятной базе что-то не работает...

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

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

    Krjemilek Гость

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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    собсно, совет тоже ))

    "мы поедем, мы помчимся, на оленях..."

    мечтатель... в лучшем случае пользователь может сказать, что он нажал! :)

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

    нет доступа к боевой базе...

    abbatik, смари какую я тебе отмазку нашел :)
    http://www.kadastr.ru/sed/forum_sed/jeneral/363608/

    есть новости по ошибке?
     
  16. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Угу.. ссылку на кадастр видел, поржал :)

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

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

    Krjemilek Гость

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

    Akupaka А че я?.. О.о

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


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

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

    Krjemilek Гость

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

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

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Во-первых вряд ли дадут, во вторых куда прописывать проверку? Если поля вычисляеиые особенно :)

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

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

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

    Всем спасибо!
     
Загрузка...

Поделиться этой страницей