комментариев 5 на “Базовый курс. Занятие №3”

  1. Перем КоличествоЛет, ИсходнаяДата,ДатаАктуальности;

    Процедура ВычислениеРабочихДней(ИсходнаяДата,кол)  
        доб=12*кол;
        ДатаАктуальности=НачалоГода(ДобавитьМесяц(ИсходнаяДата,доб));    
        //пройти 1 января
        ДатаАктуальности=КонецДня(датаАктуальности)+1;
       
        Конеч= КонецГода(ДатаАктуальности);  
       
        сколько=0;  
        Пока ДатаАктуальности <= Конеч Цикл       
            ск= ДеньНедели(ДатаАктуальности)/6;
            Если Цел(ск)=1  Тогда                    
                ДатаАктуальности=КонецДня(ДатаАктуальности)+1;  
                Продолжить;
            КонецЕсли;
           
            Если  ((Месяц(ДатаАктуальности) =2)  И  (День(ДатаАктуальности)=23))  ИЛИ     
                ((Месяц(ДатаАктуальности) =3)  И  (День(ДатаАктуальности)=8)) Тогда         
                ДатаАктуальности=КонецДня(ДатаАктуальности)+1;  
                Продолжить;      
            КонецЕсли;        
                   
            сколько=сколько+1;          
            ДатаАктуальности=КонецДня(ДатаАктуальности)+1;  
        КонецЦикла;  
        Год= Год(Конеч);
        Сообщить(Строка(Год)+" год  -   "+строка(сколько)+" рабочих дней");  
    КонецПроцедуры    

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
        //Вставить содержимое обработчика
        ИсходнаяДата = "20100202";  
       
        КоличествоЛет=8;
       
        Для т=0 По КоличествоЛет Цикл  
           
            ВычислениеРабочихДней(ИсходнаяДата,т);  
           
        КонецЦикла;
    КонецПроцедуры

    1. Новое: градация по видам клиентов 8-ки. Приёмы программирования.

    2. Пришлось повозиться с переменными типа «Дата». Знаю 7-ку. Там переход на следующую дату – это добавление 1 к предыдущей дате. Здесь же надо оперировать с функциями КонецДня и т.д.

    3. Для новичка всё очень детально и подробно изложено. У меня нет доступа к описанию лекции по web – программированию (выложена раньше 19 ноября), поэтому хотелось бы чтобы это поподробнее изложили в основном курсе или бы выложили в бонусах нашего потока.

  2. Денис Маликов 02.12.2012 в 20:12

    1. Что нового я узнал в нулевом блоке или в чем поменялись взгляды после изучения материала?
    Узнал:
    1) О существовании инструмента “Закладки” Alt+F2, перемещение по F2.
    2) Закрытие окна сообщения происходит по Ctrl+Shift+Z
    3) Узанал о коварстве неявного преобразования типов.

    2. Затруднений не было, уже более 8 лет работаю с 1С, но образование по книжкам и справочникам – лоскутное, потому решил пройти все с нуля от начала до конца, вдруг что-то не знаю.

    3. Какую тему, имеющую отношение к текущему блоку, вы бы хотели подробнее раскрыть в мастер-группе?
    Честно, пока никакую.
    Единственный вопрос:
    Почему фигурная скобка закрывающаюся и открывающаяся для перемещения по условию или циклу с зажатым Ctrl – не работает. Версия платформы 1С:Предприятие 8.2 (8.2.16.368).

    • Андрей Шнитов 03.12.2012 в 07:53

      > Почему фигурная скобка закрывающаюся и открывающаяся для перемещения по условию или циклу с зажатым Ctrl – не работает. Версия платформы 1С:Предприятие 8.2 (8.2.16.368).
      Проверил, работает. Убедитесь, что курсор установлен на начале цикла (условия).

  3. Денис Маликов 02.12.2012 в 20:01
    &НаКлиенте
    Процедура РассчитатьКоличествоДней(Команда)
        ЧислоГод=Год(Год);
        ГодЧерез10Лет=ЧислоГод+10;
        ЧислоРабочихДнейЗа10Лет=0;
        Для СчетчикПоГодам = ЧислоГод По  ГодЧерез10Лет Цикл
            ЧислоРабочихДнейЗа10Лет=ЧислоРабочихДнейЗа10Лет+РассчетКоличестваРабочихДнейВГоду(СчетчикПоГодам);
        КонецЦикла;
        Сообщить("Количество рабочих дней за 10 лет: "+ЧислоРабочихДнейЗа10Лет);
    КонецПроцедуры

    &НаКлиенте
    Процедура ГодПриИзменении(Элемент)
        Год=НачалоГода(Год);
    КонецПроцедуры

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
        Год=НачалоГода(ТекущаяДата());
    КонецПроцедуры

    &НаКлиенте
    Функция РассчетКоличестваРабочихДнейВГоду(ГодЧислом)
        ПеременнаяДата=Дата(ГодЧислом,1,1);
        СчетчикДней=?(ДеньНедели(Дата(ГодЧислом,1,1))<6,-1,0)
        +?(ДеньНедели(Дата(ГодЧислом,2,23))<6,-1,0)
        +?(ДеньНедели(Дата(ГодЧислом,3,8))<6,-1,0);
        Пока ГодЧислом=Год(ПеременнаяДата) цикл
            СчетчикДней=СчетчикДней+?(ДеньНедели(ПеременнаяДата)<6,1,0);
            ПеременнаяДата=ПеременнаяДата+24*60*60;
        конецЦикла;
        Сообщить("Количество рабочих дней в "+ГодЧислом+" году: "+СчетчикДней);
        Возврат СчетчикДней;
    КонецФункции // РассчетКоличестваРабочихДнейВГоду()
  4. Юров Александр 29.11.2012 в 00:18

    После прохождения нулевого блока:
    1. Что нового я узнал в нулевом блоке или в чем поменялись взгляды после изучения материала?

    Для меня новое – практически всё, кроме разве что базовых понятий, таких как переменные, функции, процедуры, операторы и их применение. Что же касается 1С как объектной среды разработки – знакомлюсь, очень интересно, спасибо.

    2. В какой теме были наибольшие затруднения, и что помогло их преодолеть?

    Некоторые затруднения по нулевому блоку возникли в булевских операциях.

    3. Какую тему, имеющую отношение к текущему блоку, вы бы хотели подробнее раскрыть в мастер-группе?

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