пропадает информация из документа.

Тема в разделе "1C и всё что с ней связано", создана пользователем volya, 29 июл 2008.

  1. volya

    volya Гость

    Пропадаtт информация из многопользовательской базы, и только в одном документе. Документ состоит из двух закладок. Данные на закладке "Зарплата" соответствуют одной строке на закладке "Основная". Иформация пропадает на закладке зарплата. В большинстве но не всегда пропадает иформация, которая относится к первой строке на закладке "Основная".

    Процедуры ПриОткрытии(), ПриВыбореЗакладки() и ПриЗаписи() описаны ниже. ттт - это таблица.
    Процедура Табл() - ввод данных на закладку "Зарплата".

    данные_о_сотрудниках, данные_о_контролерах, данные_о_кол - тип: строка 500.

    Процедура ПриОткрытии()
    Форма.ИспользоватьЗакладки(1);
    Форма.Закладки.ДобавитьЗначение(1,"Основная");
    Форма.Закладки.ДобавитьЗначение(2,"Зарплата");
    Форма.ИспользоватьСлой("Общий, Основной",2);

    ттт.НоваяКолонка("сотр","Справочник.Рабочие",,,"Сотрудник",30);
    ттт.НоваяКолонка("контр","Справочник.Контролеры",,,"Контролер",30);
    ттт.НоваяКолонка("кол","строка",10,,"Кол-во",10);
    КонецПроцедуры

    Процедура Табл()
    если ттт.текущаястрока()=0 тогда
    возврат;
    конецесли;
    если ттт.текущаяколонка()="сотр" тогда
    в_сотр=ттт.сотр;
    если ВвестиЗначение(в_сотр,"Выберите сотрудника","Справочник.Рабочие")=1 тогда
    ттт.сотр=в_сотр;
    конецесли;
    конецесли;
    если ттт.текущаяколонка()="контр" тогда
    в_контр=ттт.контр;
    если ВвестиЗначение(в_контр,"Выберите контролера","Справочник.Контролеры")=1 тогда
    ттт.контр=в_контр;
    конецесли;
    конецесли;
    если ттт.текущаяколонка()="кол" тогда
    в_кол=число(ттт.кол);
    если ВвестиЗначение(в_кол,"Укажите кол-во","Число")=1 тогда
    ттт.кол=строка(в_кол);
    конецесли;
    конецесли;
    КонецПроцедуры

    Процедура ПриВыбореЗакладки(Ном,Значение)
    Если Значение=1 Тогда
    спис_сотр=создатьобъект("СписокЗначений");
    спис_контр=создатьобъект("СписокЗначений");
    спис_кол=создатьобъект("СписокЗначений");
    ттт.выбратьстроки();
    пока ттт.получитьстроку()=1 цикл
    спис_сотр.ДобавитьЗначение(ттт.сотр);
    спис_контр.ДобавитьЗначение(ттт.контр);
    спис_кол.ДобавитьЗначение(ттт.кол);
    конеццикла;
    данные_о_сотрудниках=ЗначениеВСтрокуВнутр(спис_сотр);
    данные_о_контролерах=ЗначениеВСтрокуВнутр(спис_контр);
    данные_о_кол=ЗначениеВСтрокуВнутр(спис_кол);
    Форма.ИспользоватьСлой("Общий, Основной",2);
    Иначе
    старзнач=номерстроки;
    ттт.удалитьстроки();
    если выбратьстроки()=1 тогда
    ПолучитьСтрокуПоНомеру(старзнач);
    если ((стрдлина(сокрлп(данные_о_сотрудниках))<>0) или (стрдлина(сокрлп(данные_о_контролерах))<>0)) тогда
    ррр1=создатьобъект("СписокЗначений");
    ррр2=создатьобъект("СписокЗначений");
    ррр4=создатьобъект("СписокЗначений");
    ррр1=ЗначениеИзСтрокиВнутр(данные_о_сотрудниках);
    ррр2=ЗначениеИзСтрокиВнутр(данные_о_контролерах);
    ррр4=ЗначениеИзСтрокиВнутр(данные_о_кол);
    для а=1 по ррр1.РазмерСписка() цикл
    ттт.новаястрока();
    ттт.сотр=ррр1.ПолучитьЗначение(а);
    ттт.контр=ррр2.ПолучитьЗначение(а);
    ттт.кол=ррр4.ПолучитьЗначение(а);
    конеццикла;
    конецесли;
    конецесли;
    Форма.ИспользоватьСлой("Общий, Сотр",2);
    КонецЕсли;
    КонецПроцедуры

    Процедура ПриЗаписи()
    спис_сотр=создатьобъект("СписокЗначений");
    спис_контр=создатьобъект("СписокЗначений");
    спис_кол=создатьобъект("СписокЗначений");
    ттт.выбратьстроки();
    пока ттт.получитьстроку()=1 цикл
    спис_сотр.ДобавитьЗначение(ттт.сотр);
    спис_контр.ДобавитьЗначение(ттт.контр);
    спис_кол.ДобавитьЗначение(ттт.кол);
    конеццикла;
    данные_о_сотрудниках=ЗначениеВСтрокуВнутр(спис_сотр);
    данные_о_контролерах=ЗначениеВСтрокуВнутр(спис_контр);
    данные_о_кол=ЗначениеВСтрокуВнутр(спис_кол);
    КонецПроцедуры
     
  2. Hryv

    Hryv Гость

    Попробуйте в отладчике в начале процедуры ПриОткрытии() посмотреть содержат ли реквизиты документа то, что должны
    Если содержат, значит некорректно работает Ваша процедура считывающая данные из документа в ттт
     
  3. volya

    volya Гость

    Дело в том что документов этого вида очень много, а пропадает информация за рабочий день в одном, двух документах в остальных все нормально.
     
  4. Hryv

    Hryv Гость

    Тогда надо использовать какие-то методы отладки-трассировки
    например
    - отобразите в журнале проблемные реквизиты и пусть юзеры визуально контролируют, что 100% сразу после записи все ОК
    - допишите трассировку проблемных реквизитов в файл при открытии, закрытии и обращении к ним

    так Вы хотябы найдете момент, когда происходит потеря
     
Загрузка...

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