Для приема на работу

  • Автор темы Roman
  • Дата начала
R

Roman

Гость
#1
Всем привет, для приема на работу в должности "Программист-стажер" необходимо сделать задание которое они дают:

"База данных содержит таблицы Анкета и Места Работы. Таблица Анкета хранит анкетные данные людей - Ф.И.О., дата и место рождения, паспортные данные, личные качества и характеристики, дату занесения. Таблица Места Работы содержит данные о послужном списке людей из таблицы Анкета и содержит информацию о дате поступления на работу, дате увольнения, месте работы и причине увольнения.
Программа должна автоматически подключиться к базе данных и загрузить в закладки первые буквы фамилий из таблицы Анкета(только тех, которые существуют в таблице, а не весь алфавит). При выборе закладки загружать фамилии с инициалами в какой-нибудь элемент (на Ваше усмотрение, лист, всплывающее меню или что-нибудь ещё). при выборе же фамилии загружать послужной список этого человека. Реализовать возможности добавления, редактирования, удаления данных.
Разработать отчет о сотрудниках. В отчет должны выводиться сведения о сотрудниках и их местах работы с группировкой по сотруднику. В отчете должны быть предусмотрены фильтры по сотруднику( то есть что бы можно было выбрать или всех кандидатов или кого-то конкретного) и по диапазону даты занесения. В отчет данные должны попадать, используя запрос SQL."


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

puh14

Well-Known Member
11.07.2008
1 412
0
#2
Вопрос - а при чем тут 1с? особенно если учесть слова про скулевый запрос, который 1с официально запретила (в восьмерке)? Среды разработки нет, типа скуля нет. и вообще тема скорее идет в http://codeby.net/forum104.html
 

vbs

Well-Known Member
18.02.2007
1 708
3
#3
для приема на работу в должности "Программист-стажер" необходимо сделать задание которое они дают:
Если не можешь сделать сам, то какой же ты программист (хотя и стажер) ?
Ну, помогут тебе (здесь или в другом месте), а потом-то самому придется. :lovecodeby:
 
R

Roman

Гость
#4
Если не можешь сделать сам, то какой же ты программист (хотя и стажер) ?
Уж какой есть. :lovecodeby: И потом именно стажер, а не помощник, а это на мой взгляд разные вещи.

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




Добавлено:
Вопрос - а при чем тут 1с? особенно если учесть слова про скулевый запрос, который 1с официально запретила (в восьмерке)? Среды разработки нет, типа скуля нет. и вообще тема скорее идет в http://codeby.net/forum104.html
Последнее задание может и не причем, но остальное я думаю можно и через 1с реализовать, разве нет?
 
R

Roman

Гость
#5
Хотя бы так может кто помочь?
Я реализовал идею так( может и коряво и длинно но ввиду отсутствия опыта думаю мне простительно)

Код:
Процедура ПриОткрытии()

ТЗ = СоздатьОбъект("ТаблицаЗначений");

ИмяФайла="Анкета.xls";
ИмяПути="c:\newbisness\";

//Если ФС.ВыбратьФайл(0,ИмяФайла,ИмяПути,,"*.xls",,2)=0 Тогда
//	Возврат
//КонецЕсли;
ПутьФ=ИмяПути+ИмяФайла;
ЭкселФ = СоздатьОбъект("Excel.Application"); //создаем объект
НашФайл = ЭкселФ.Workbooks.Open(СокрЛП(ПутьФ)); //Открываем файл
НашЛист = НашФайл.Sheets(1); //Устанавливаем нужный лист

КонечнаяСтрока=2;
Пока ПустоеЗначение(НашЛист.Cells(КонечнаяСтрока,1).Value)=0 Цикл
КонечнаяСтрока=КонечнаяСтрока+1;
КонецЦикла;

ТЗ.НоваяКолонка("ДатаСоздания");
ТЗ.НоваяКолонка("ФИО");
ТЗ.НоваяКолонка("ДатаРождения");
ТЗ.НоваяКолонка("МестоРождения");
ТЗ.НоваяКолонка("Паспорт");
ТЗ.НоваяКолонка("Характеристика");

Для i = 1 По КонечнаяСтрока-1 Цикл
Тз.ДатаСоздания =НашЛист.Cells(i,1).Value; 
ТЗ.ФИО = НашЛист.Cells(i,2).Value;
ТЗ.ДатаРождения = НашЛист.Cells(i,3).Value;
ТЗ.МестоРождения = НашЛист.Cells(i,4).Value;
ТЗ.Паспорт = НашЛист.Cells(i,5).Value;
ТЗ.Характеристика =НашЛист.Cells(i,6).Value;
ТЗ.НоваяСтрока();
КонецЦикла;

ТЗ.Сортировать("+ ФИО");
Форма.ИспользоватьЗакладки(1);

ТЗСорт = СоздатьОбъект("ТаблицаЗначений");
ТЗСорт.НоваяКолонка("ФИО"); 
ТЗ.ВыбратьСтроки();

Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Если ТЗ.ФИО <> "" Тогда
ТЗСорт.ФИО = Лев(ТЗ.ФИО,1);
ТЗСорт.НоваяСтрока();
КонецЕсли;
КонецЦикла;

ТЗСорт.Свернуть("ФИО",);

Форма.ИспользоватьЗакладки(1);
ТЗСорт.ВыбратьСтроки();

Пока ТЗСорт.ПолучитьСтроку() = 1 Цикл
Если ТЗСорт <> "" Тогда
Форма.Закладки.ДобавитьЗначение(ТЗСорт.ФИО);
КонецЕсли;
КонецЦикла;
КонецПроцедуры

Процедура ПриВыбореЗакладки(НомерЗакладки,ЗначениеЗакладки);
Спис.УдалитьВсе();
Тз.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Если ЗначениеЗакладки = Лев(ТЗ.ФИО,1) Тогда
Спис.ДобавитьЗначение(ТЗ.ФИО);
КонецЕсли;		
КонецЦикла;		
КонецПроцедуры
Да, и сама обработина, внешняя и запускается с глоб.модуля
Код:
ПриНачалеРаботыСистемы()
Как реализовать выбор из списка значений?
Таблица "ТЗ" выкинута на форму и скрыта.
 

vbs

Well-Known Member
18.02.2007
1 708
3
#6
Все работает. Но теперь не могу сообразить как при выборе закладки реализвть то что в задании необходимо т.е. чтобы согласно букве закладки выводились фамилии согласно этой букве(выбранной закладке). Знаю есть предопределенная процедура ПриВыбореЗакладки(НомерЗакладки,ЗначениеЗакладки)
Можно примерно так :
Код:
T3.Unload(T31); T31.Clear(); // создаем новую T3 той же структуры 
Procedure ПриВыбореЗакладки(НомерЗакладки,ЗначениеЗакладки)
FirstLetter = ЗначениеЗакладки;
T3.SelectLines();
N = 0; k = 0;
While T3.GetLine() = 1 do
N = N + 1;
if Left(T3.ФИО,1) <> FirstLetter then
Continue
endif;
for i = 1 to T3.ColumnCount() do
k = k + 1;
T31.NewLine();
T31.SetValue(k,i,T3.GetValue(N,i)) // выводим значения реквизитов T3 в T31
enddo;
enddo;
// теперь в T31 будет алфавитный срез T3 в зависимости от нужной буквы
// если нужно показывать только фамилии, сделай в новой T31 остальные колонки невидимыми и напиши обработку для этой T31,
// которая будет обрабатывать клик по таблице для разворота всех данных
EndProcedure
PS. Прости, что по-английски - привычка :rolleyes:
 
U

User1C

Гость
#7
Можно и так

Код:
Процедура ПриВыбореЗакладки(НомерЗакладки,ЗначениеЗакладки);

ТЗФам.УдалитьСтроки(); // ТЗ- таблица значений на форме
ТЗФам.НоваяКолонка("ФИО"); 

Позиция = НомерЗакладки;
Буква = Форма.Закладки.ПолучитьЗначение(Позиция,);

ТЗ.ВыбратьСтроки();	
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
Если ТЗ.ФИО <> "" Тогда
Если Найти(СокрЛП(Лев(ТЗ.ФИО,1)),Буква) >0 Тогда
ТЗФам.НоваяСтрока();
ТЗФам.ФИО = ТЗ.ФИО;
КонецЕсли;
КонецЕсли;
КонецЦикла;

КонецПроцедуры
 
R

Roman

Гость
#8
Уже почти всё реализовал. В прикрепленном файле всё есть надо только расширение поменять на ert
Вот у меня теперь такой вопрос есть возможность в 1с версии 7.7 при изменении таблицы сделать так чтобы данные обратно в екселевский файл(из которого брал данные) записывались отредактированные( в этой таблице), причем именно так если это полностью новая строка то дописывалась новая строка в текущие данные(т.е добавлялась новая строка в текущие данные) и если это строка есть то если я ее изменил то в файл переносились измененные данные не меняя(удаляя) остальных? Или может мне вообще как-то по другому всё сделать?

Добавлено:
// если нужно показывать только фамилии, сделай в новой T31 остальные колонки невидимыми и напиши обработку для этой T31,
// которая будет обрабатывать клик по таблице для разворота всех данных
Идея конечно неплохая но мне нужно не только разворот данных , мне же ещё нужна возможность редактирования данных с последующим сохранением.
 

Вложения

U

User1C

Гость
#9
Добавь в таблицу ТЗ еще одну калонку "Область" Cells(i,j).Value Когда тебе нужно будет добавлять или изменять данные в Excel, то если таблица содержит адрес ячейки -> найти и отредактировать ячейку. Если пусто -> добавить в конец списка новую строку.