7.7 Получение даты

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Time dont wait, 30 июл 2010.

  1. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Написал простую функцию для получения начала месяца ну и конца, но возврат - пустое значение
    мес - перечисление, год - справочник.Пробывал переводить в строку, и так сравнивать - пустое зн.
    Код:
    функция ОпределитьНачПериод(мес,год)	экспорт
    Если мес=Перечисление.месяцы.січень тогда
    Возврат дата("01.01."+год+"")	
    ...
    
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Возврат дата(Число(год),1,1);
  3. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    безрезультатно, возможно каким-нибудь другим образом
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Какое значение имеет месяц? Год пишете в наименование или коде?
    тогда Дата(Число(Месяц.Наименование),1,1)
  5. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    год это наименование. Месяц - перечисление.
    Пробую
    Код:
    Возврат дата(Число(год.наименование),1,1)
    
    
    не помогает. Сравнение перечислений по идентификатору
  6. dedalx7
    Offline

    dedalx7 Опытный в 1С

    Регистрация:
    20 май 2009
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Эм... Простите, я не понимаю цели данной функции. Стандартные НачМесяца() и КонМесяца() вполне справляются с этой задачей.

    Чего вы пытаетесь добиться?

  7. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Для облегчения выбора периода пользователю. + ведется своеобразный учет сред.чисельности за месяц(идет запись в справочник)+кол.раб.дней +кол.дней(по больничному)+... По этим данным создается отчет, анализ по листам неработоспособности - за месяц, потому суммарный за год, и сравнение по годам.
  8. TopicStarter Overlay
    Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    При создании отчета идет цикл - заносятся значения перечисления Месяцы. На форме определяется год.Из этого определяется период месяц+год, и нужно получить начпериода,конпериода чтоб сделать выборку данных
  9. dedalx7
    Offline

    dedalx7 Опытный в 1С

    Регистрация:
    20 май 2009
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Код:
    Функция глОпределитьЧастьПериода(Мес, Год, ЧастьПериода = "Нач")    Экспорт
    
    СписМесяцев = СоздатьОбъект("СписокЗначений");
    СписМесяцев.ДобавитьЗначение("01","СІЧЕНЬ");
    СписМесяцев.ДобавитьЗначение("02","ЛЮТИЙ");
    СписМесяцев.ДобавитьЗначение("03","БЕРЕЗЕНЬ");
    СписМесяцев.ДобавитьЗначение("04","КВІТЕНЬ");
    СписМесяцев.ДобавитьЗначение("05","ТРАВЕНЬ");
    СписМесяцев.ДобавитьЗначение("06","ЧЕРВЕНЬ");
    СписМесяцев.ДобавитьЗначение("07","ЛИПЕНЬ");
    СписМесяцев.ДобавитьЗначение("08","СЕРПЕНЬ");
    СписМесяцев.ДобавитьЗначение("09","ВЕРЕСЕНЬ");
    СписМесяцев.ДобавитьЗначение("10","ЖОВТЕНЬ");
    СписМесяцев.ДобавитьЗначение("11","ЛИСТОПАД");
    СписМесяцев.ДобавитьЗначение("12","ГРУДЕНЬ");
    
    ПолученнаяДата = Дата("01." + СписМесяцев.Получить(СокрЛП(ВРег(Мес.Идентификатор()))) +
    "." + СокрЛП(Строка(Год.наименование)));
    
    Если ЧастьПериода = "Кон" Тогда
    ПолученнаяДата = КонМесяца(ПолученнаяДата);
    КонецЕсли;
    
    Возврат ПолученнаяДата;
    
    КонецФункции;
    
    
    Примерно так бы я сделал определение периода в вашем случае.

    Пустое значение в результате работы функции Дата() у меня чаще всего встречалось из-за неверного представления года. Должны присутствовать четыре символа - например "2010", но не "10" и не " 2010".

    P.S> На самом деле, я так и не понял зачем вам эта морока. Делал расчет среднесписочной и табеля. Стандартными функциями можно обойтись.
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    С идентификатором СЗ можно и не заморачиваться...Месяц равен текущей строке... Т.е.

    Код:
    Дата("01." + СписМесяцев.ТекущаяСтрока() +"." + СокрЛП(Строка(Год.наименование)));
    
    

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