Новости для бухгалтера, бухучет, налогообложение, отчетность, ФСБУ, прослеживаемость и маркировка, 1С:Бухгалтерия

Вход или Регистрация

Показывать по 10 20 40 сообщений
Новая тема Ответить
Письмо в техподдержку 1С
[Что такое основные средства]

Функция работа с датами

Константин
читатель
офлайн
Дата регистрации: 19.10.2014
Сообщений: 5
Пост №1
 
19.10.2014 21:07

1С 7.7 фактическое использования основного средства
Помогите составить функцию
Дата2 = ДатаВвода;
            Если ДатаСписания = 0 Тогда
             Дата1 = ДатаСписания;
            Иначе Дата1 = ТекДата;
             КонецЕсли;
             Фактсрокиспользования = Дата1;
             Пока Дата2 < Дата1 Цикл
                   Дата2 = Дата2 + 1



Срочно прошу

Ответили: пост №2
Prikum
активный пользователь
офлайн
Дата регистрации: 18.02.2002
Сообщений: 20953
Пост №2
 
20.10.2014 01:06
Ответ на пост №1

Константин, вопрос в чем?

Ответили: пост №3
Константин
читатель
офлайн
Дата регистрации: 19.10.2014
Сообщений: 5
Пост №3
 
21.10.2014 01:06
Ответ на пост №2

Prikum,

Есть две даты, ДатаВводавЭксплуатацию и ДатаСписанияОсновногоСредства
Необходимо вычислить количество месяцев между датами. ФактическийСрокИспользования
Попробовал Циклом, не получилось чтоб увеличивался на один месяц

Константин
читатель
офлайн
Дата регистрации: 19.10.2014
Сообщений: 5
Пост №4
 
21.10.2014 01:07

Подскажите пожалуйста

Константин
читатель
офлайн
Дата регистрации: 19.10.2014
Сообщений: 5
Пост №5
 
21.10.2014 01:18

Не получается связать с условием, если основное средство не списано то второй датой берем текущую дату

Thorvardr
читатель
офлайн
Дата регистрации: 25.02.2005
Сообщений: 3082
Пост №6
 
21.10.2014 09:51

Ну... если я верно понял...
Функцию мы честно стырим из Зарплаты и кадров:

//******************************************************************************
//      глРазобратьРазностьДат(Дата1,Дата2,Лет,Месяцев,Дней)
//
//      Параметры:
//            Дата1      - первая дата (более поздняя, часто текущая, стаж определяется по состоянию на эту дату)
//            Дата2      - вторая дата (ранняя дата, с нее начинается "течение" стажа)
//            Лет            - в этот параметр будет записано кол-во лет между двумя датами (Дата1-Дата2)
//            Месяцев      - в этот параметр будет записано кол-во месяцев между двумя датами (Дата1-Дата2)
//            Дней      - в этот параметр будет записано кол-во дней между двумя датами (Дата1-Дата2)
//
//      Описание:
//            Процедура разбирает две даты и возвращает в параметрах кол-во лет, месяцев и дней
//            между двумя датами (Дата1-Дата2)
//
Процедура глРазобратьРазностьДат(Знач Дата1,Знач Дата2,Лет=0,Месяцев=0,Дней=0) Экспорт

      Лет = 0; Месяцев = 0; Дней = 0;
      Если Дата1>Дата2 Тогда
            
            ВременнаяДата = Дата1;
            Если ДатаЧисло(ВременнаяДата)<ДатаЧисло(Дата2) Тогда
                  Дней = ВременнаяДата-ДобавитьМесяц(ВременнаяДата,-1);
                  ВременнаяДата = ДобавитьМесяц(ВременнаяДата,-1);
            КонецЕсли;
            Если ДатаМесяц(ВременнаяДата)<ДатаМесяц(Дата2) Тогда
                  ВременнаяДата = ДобавитьМесяц(ВременнаяДата,-12);
                  Месяцев = 12;
            КонецЕсли;
            Лет            = Макс(                   ДатаГод (ВременнаяДата)-ДатаГод (Дата2),0);
            Месяцев      = Макс(Месяцев      +ДатаМесяц(ВременнаяДата)-ДатаМесяц(Дата2),0);
            Дней      = Макс(Дней            +ДатаЧисло(ВременнаяДата)-ДатаЧисло(Дата2),0);
      
            // скорректируем отображаемое значение, если "вмешалось" разное количество дней в месяцах
            Если Дата2 <> (ДобавитьМесяц(Дата1,-Лет*12-Месяцев)-Дней) Тогда
                  Дней = Дней + (КонМесяца(Дата2)-НачМесяца(Дата2)) - (КонМесяца(ДобавитьМесяц(Дата1,-1))-НачМесяца(ДобавитьМесяц(Дата1,-1)));
            КонецЕсли;
      КонецЕсли;

КонецПроцедуры      // глРазобратьРазностьДат

Ну и пользоваться будем так:
Процедура Тест()
Лет = 0; Месяцев = 0; Дней = 0;
глРазобратьРазностьДат(?(ДатаСписанияОсновногоСредства=Дата(0),ТекущаяДата(),ДатаСписанияОсновногоСредства),ДатаВводаВЭксплуатацию,Лет,Месяцев,Дней);
Сообщить("Количество месяцев эксплуатации: "+Строка(Лет*12+Месяцев));
//или так
Сообщить("Срок эксплуатации: "+Строка(Лет)+" лет, "+Строка(Месяцев)+" месяцев, "+Строка(Дней)+" дней");

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

Константин
читатель
офлайн
Дата регистрации: 19.10.2014
Сообщений: 5
Пост №7
 
22.10.2014 09:39

Большое спасибо, получилось!!

Показывать по 10 20 40 сообщений

Читают тему:

Быстрый переход
Для технических специалистов
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Новый порядок применения ККТ (онлайн кассы с передачей сведений в ФНС)
  • Интернет-конференция: Оформление командировок по новым правилам
  • МАРКИРОВКА
  • ЕГАИС
  • Учет, налогообложение, автоматизация