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

Тема в разделе "1C и всё что с ней связано", создана пользователем Roman, 28 авг 2010.

  1. Roman

    Roman Гость

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

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


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

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Вопрос - а при чем тут 1с? особенно если учесть слова про скулевый запрос, который 1с официально запретила (в восьмерке)? Среды разработки нет, типа скуля нет. и вообще тема скорее идет в http://codeby.net/forum104.html
     
  3. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Если не можешь сделать сам, то какой же ты программист (хотя и стажер) ?
    Ну, помогут тебе (здесь или в другом месте), а потом-то самому придется. :lovecodeby:
     
  4. Roman

    Roman Гость

    Уж какой есть. :lovecodeby: И потом именно стажер, а не помощник, а это на мой взгляд разные вещи.

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




    Добавлено:
    Последнее задание может и не причем, но остальное я думаю можно и через 1с реализовать, разве нет?
     
  5. Roman

    Roman Гость

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

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

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

    ИмяФайла="Анкета.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) Тогда
    Спис.ДобавитьЗначение(ТЗ.ФИО);
    КонецЕсли;    
    КонецЦикла;      
    КонецПроцедуры
    Да, и сама обработина, внешняя и запускается с глоб.модуля
    Код ( (Unknown Language)):
    ПриНачалеРаботыСистемы()
    Как реализовать выбор из списка значений?
    Таблица "ТЗ" выкинута на форму и скрыта.
     
  6. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Можно примерно так :
    Код ( (Unknown Language)):
    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:
     
  7. User1C

    User1C Гость

    Можно и так

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

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

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

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

    КонецПроцедуры
     
  8. Roman

    Roman Гость

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

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

    Вложения:

    • ______.txt
      Размер файла:
      8,5 КБ
      Просмотров:
      29
  9. User1C

    User1C Гость

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

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