Как вывести день недели прописью #610423


#0 by amadeus2010
Доброе утро помогите разобраться с функцией вывода дня недели прописью. Загружаю из ексель в 1с документ файл.В нем день недели указан цифрой,а мне надо получить в документе 1с день недели прописью.Вот строка кода Пытался использовать функцию формат(ТекущаяДата,"ДФ=ддд").Трассировка показала что эта функция не сработала и день недели остался числом.
#1 by mikecool
насколько помню - нет в 8.2 такого, отменили
#2 by amadeus2010
у меня 8.1 УПП 1.2
#3 by Wobland
Пн что я не так делаю?
#4 by andrewks
нпихрена не понял. у тебя на входе что - строка, дата, число, или что?
#5 by Maxus43
СокрЛП(Лист.Cells(ПоСтрокам,4).Value) - дак это не дата по факту, вот и всё. строка
#6 by aleks-id
да число у него на входе. и надо функцию типа ДеньНеделиПрописью которая вернет Понедельник
#7 by amadeus2010
у меня строка ексель содержащая номер дня недели строка и получить я должен строку
#8 by Zhuri
за 10 минут что здесь спрашиваеш 8 строк кода условия бы уже раза 4 накрапал...
#9 by mikecool
#10 by aleks-id
#11 by Maxus43
28 апреля в високосный год - какой день?)
#12 by Maxus43
а, задача то простая, день недели указывается. неинтересно
#13 by aleks-id
не тупи. там цифры от 1 до 7
#14 by andrewks
читер!
#15 by andrewks
за 2 мин
#16 by vmv
я так полагаю это документ "Рейсы", я уже обрадовался думал не будет в понедельник амадеуса и проблем с рейсами)
#17 by Xapac
+100500 пока читал ветку, не понял ПРОБЛЕМ автора
#18 by qeos
представлениеПериода
#19 by vmv
это уже как утренний коффе - у него всегда одна и таже проблема, просто условное оформление разное
#20 by amadeus2010
потому что задачи разные
#21 by amadeus2010
большое спасибо добавил вашу функцию в строку кода Строка.ДеньПосещения =ДеньНеделиПрописью(СокрЛП(Лист.Cells(ПоСтрокам,4).Value)); заработало
#22 by vmv
уточняем задачу и избавляемся от г-кода Исходная: у господина амадеуса есть порядковые дни недели в эксель, т.е. ... Необходимо: по порядковому номеру дня недели выводить его символьное представление "понедельник"..."воскресенье " решение: находим недельный период дат в которых неделя начинается с 1-го числа, например   май 2006 начинался с понедельника, т.е. 1 мая 2006 понедельник ... 7 мая 2006 воскресение Собственно код для господина амадеуса без г-технологий во сути код в одну строку уложить можно
#23 by Serg_1960
#24 by Serg_1960
Что-то как-то никакой реакции на г-код :( А если так :) Сообщить(ТРег(Формат(Дата(СокрЛП(Лист.Cells(ПоСтрокам,4).Value) + ".10.2012 00:00:00"),"ДФ=дддд")));
#25 by amadeus2010
согласен что мой код не катит, поэтому  и спрашивал знатоков 1С как вывести день недели прописью
#26 by aleks-id
думаешь вызывать 2 функции оптимальнее моего копрокода?
#27 by Reset
Вариант Сред("пнвтсрчтптсбвс",НомерДняНедели-1,2)
#28 by Reset
пардон Сред("пнвтсрчтптсбвс",(НомерДняНедели-1)*2,2)
#29 by amadeus2010
В принципе я использовал код , а потом вызвал эту функцию в этой части кода Вывел дни недели так как они идут в ексель файле
#30 by vmv
во-первых, можно использовать только Формат без Дата см. я привел пример с Дата для наглядности, чтобы прочно осела мысль, что нам нужна дата, которая начинается с понедельника и потом ее в во-вторых, зачем писать функцию, если все есть в Формат для этой задачи. сомневаюсь, что она будет быстрее формат, но г добавит точно, при всем уважении
#31 by Reset
Опять, простите, поторопился. Два финальных варианта на выбор: [1c] Сред("пнвтсрчтптсбвс",(НомерДняНедели-1)*2+1,2) //или Сред("**пнвтсрчтптсбвс",НомерДняНедели*2+1,2) [*1c]
#33 by amadeus2010
т.е предлагаете использовать такой вариант Сообщить(ТРег(Формат(СокрЛП(Лист.Cells(ПоСтрокам,4).Value),"ДФ=дддд"""""));
#34 by vmv
по крайней мере это избавляет от создания массива и сокращает код до строчки, правда вычисление представления из строки будет с той же скростью, что по индексу массива, т.к. в обоих случаях это указатель на строку символов, согласно с++ на котором пашет платформа
#35 by Reset
Да, в том варианте мне не нравится постоянное пересоздание массива.
#36 by aleks-id
согласен, криво сделал. создание массива нужно вынести из функции. но мой код быстрее формата. на 100к итерациях 0.633138 против 0.872828
#37 by aleks-id
вариант самый быстрый. 0.365601
#38 by vmv
быстрее потому что указатель на строку создается без создания переменной массива
#39 by aleks-id
вот только если понадобится выводить день недели полностью то будет облом.
#40 by vmv
не-а, взять максимальное представление и в более коротких в конце добить пробелы, затем тот же принцип
#41 by aleks-id
мой последний код лишен этих недостатков ;)
#42 by vmv
СтрПолучитьСтроку я открыл для себя этот метод, он был всегда? хоть какая-то польза от господина амадеуса)
#43 by aleks-id
вроде давно уже 1с с многострочкой работает.
#44 by Zhuri
Линейку всем выдали?
#45 by amadeus2010
небольшое уточнение я преобразую день недели из числа в строку используя этот код Но у нас в конфигурации день недели должен также попасть в регистр сведений закрепление за клиентом.Добавит ли этот код день недели в регистр?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С