V
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 цикл
спис_сотр.ДобавитьЗначение(ттт.сотр);
спис_контр.ДобавитьЗначение(ттт.контр);
спис_кол.ДобавитьЗначение(ттт.кол);
конеццикла;
данные_о_сотрудниках=ЗначениеВСтрокуВнутр(спис_сотр);
данные_о_контролерах=ЗначениеВСтрокуВнутр(спис_контр);
данные_о_кол=ЗначениеВСтрокуВнутр(спис_кол);
КонецПроцедуры
Процедуры ПриОткрытии(), ПриВыбореЗакладки() и ПриЗаписи() описаны ниже. ттт - это таблица.
Процедура Табл() - ввод данных на закладку "Зарплата".
данные_о_сотрудниках, данные_о_контролерах, данные_о_кол - тип: строка 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 цикл
спис_сотр.ДобавитьЗначение(ттт.сотр);
спис_контр.ДобавитьЗначение(ттт.контр);
спис_кол.ДобавитьЗначение(ттт.кол);
конеццикла;
данные_о_сотрудниках=ЗначениеВСтрокуВнутр(спис_сотр);
данные_о_контролерах=ЗначениеВСтрокуВнутр(спис_контр);
данные_о_кол=ЗначениеВСтрокуВнутр(спис_кол);
КонецПроцедуры