Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 20:57

Рассчитать значения в таблице "подвала"

Автор Тари, 16 июн 2020, 15:36

0 Пользователей и 1 гость просматривают эту тему.

Тари

Добрый вечер.
Подскажите, при расчете стажа выводятся следующие данные в подвале (картинка). Как можно сделать, чтоб там выводились данные указанные на картинке черным.
Код по-которому производились расчеты.
&НаКлиенте
Процедура РасчетПриИзменении (Элемент,Дата1,Дата2, Лет = 0, Месяцев = 0, Дней = 0)

    ТД = Элементы.Расчет.ТекущиеДанные;
// Запоминаем даты начала и окончания текущей строки
    Дата1 = ТД.ДатаОкончания;
  Дата2 = ТД.ДатаНачала;

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

LexaK

хм, так не надо отдельно складывать Года, месяца, дни!!!
у вас есть интервалы стажа! разность дат!! Разность дат - это целое количество секунд!!
просто просуммируйте все интервалы, получите общее количество секунд, общего стажа!!!
и уже из общего количества секунд, получаете года, месяца, дни!!!   
если помогло нажмите: Спасибо!

Тари

Подскажите, как сделать чтобы сумма результата выводилась не в таблице, а в строке надписи (картинка)

    ТД = Элементы.Расчет.ТекущиеДанные;
// Запоминаем даты начала и окончания текущей строки
    Дата1 = ТД.ДатаОкончания;
  Дата2 = ТД.ДатаНачала;
  РазницаСекунд = Дата1-Дата2;
  ОбщееКоличество =  РазницаСекунд / (24*3600);
      ТД.Сумма = ОбщееКоличество;
          Элементы.РасчетСумма.ТекстПодвала = Расчет.Итог("Сумма");


Добавлено: 17 июн 2020, 09:03


Форма для ввода

LexaK

вот какой-то пример
примечание, в 1С есть функция позволяющая просклонять год, года, лет, месяц, месяцев и т.д.
если помогло нажмите: Спасибо!

Тари

Спасибо большое, очень помогли)
Добавлено: 17 июн 2020, 16:02


Цитата: LexaK от 17 июн 2020, 11:12
вот какой-то пример
примечание, в 1С есть функция позволяющая просклонять год, года, лет, месяц, месяцев и т.д.

Такой вопрос: строки кода мЧасти = СтрРазделить(лкСтаж,"-");
лкСтаж = ""
+ ?(Число(мЧасти[0])=0,"","" + Число(мЧасти[0])+" год/лет ")
+ (Число(мЧасти[1])-1) +" мес " //компенсация месяца!!!
+ мЧасти[2] +" дней";

1с выдает ошибки:  Процедура или функция с указанным именем не определена (СтрРазделить)
   мЧасти = <<?>>СтрРазделить(лкСтаж,"-"); (Проверка: Тонкий клиент)
  Я заменила СтрРазделить - на "Найти" получилось следующее мЧасти = Найти(лкСтаж,"-");   
Затем выходит такая ошибка при запуске обработки: {Обработка.ВнешняяОбработкаСтаж.Форма.Форма.Форма(23)}: Получение элемента по индексу для значения не определено лкСтаж = ""   
Подскажите, как это можно исправить.
Просто хочу посмотреть как рассчитывает стаж данный пример

LexaK

Тари, у вас какая версия платформы?
функция СтрРазделить доступна с версии 8,3,6

если больше, проверьте значение в Режим совместимости

если у вас совсем древняя платформа, я пришлю другой пример
если помогло нажмите: Спасибо!

Тари

Цитата: LexaK от 17 июн 2020, 16:31
Тари, у вас какая версия платформы?
функция СтрРазделить доступна с версии 8,3,6

если больше, проверьте значение в Режим совместимости

если у вас совсем древняя платформа, я пришлю другой пример
Версия: 1С:Предприятие 8.3 (8.3.14.1976)
Если пришлёте другой пример, буду очень благодарна)

LexaK

так и не ответили какой режим совместимости, ну да ладно

вот второй вариант, правда он со склонениями, а они доступны с версии 8,3,10
если помогло нажмите: Спасибо!

Тари

Цитата: LexaK от 17 июн 2020, 16:42
так и не ответили какой режим совместимости, ну да ладно

вот второй вариант, правда он со склонениями, а они доступны с версии 8,3,10
Прошу прощения, не туда посмотрела: Режим совместимости стоит Версия 8.2.13

LexaK

так вам именно для 8,2,13 надо?  или сможете у себя отключить/изменить на последнюю версию?
если помогло нажмите: Спасибо!

Теги:  

Похожие темы (5)

Рейтинг@Mail.ru

Поиск