Имя: Пароль:
1C
1С v8
Дата и Время
,
0 Riko669
 
07.12.16
15:48
Добрый день всем!
Прошу помощи у более опытных людей, чем я.
У меня есть табличная часть "ТабПриемов". В этой тч есть реквизит Время1 (Тип Дата, Состав Дата и Время, Формат ДЛФ=T). И естественно РС, в котором отображаются данные тч.
При заполнении расписания учитываются четные и нечетные дни, также чтобы в ручную на каждый день не вводить время, сделаны процедуры копировать, вставить по четным и нечетным дням.
Ситуация такая. Когда ввожу время, а затем его копирую и вставляю либо по четным дням, либо по нечетным, это время копируется вместе с датой и естественно тогда в рс отображается то, что я скопировала и вставила, т.е. в рс вместо ср 07, чт 08, пт 09 и т.д. отображается ср 07,ср 07, ср 07, но если вводить все в ручную, то тогда все нормально.
Теперь вопрос сам. Можно ли как-то отделить дату от времени? Чтобы копировалось только время, а дата соответствовала своему дню недели.
1 Cyberhawk
 
07.12.16
15:59
Я не против
2 Riko669
 
07.12.16
16:03
(1) по поводу чего?
3 DrShad
 
07.12.16
16:13
я тоже не возражаю
4 DrShad
 
07.12.16
16:14
по сути что есть у тебя время? это количество секунд от начала дня - отсюда и пляши, т.е. к каждой дате прибавляй необходимое количество секунд и будет одинаковое время на все твои даты
5 Fish
 
07.12.16
16:14
(0) "Можно ли как-то отделить дату от времени?" - Нельзя.
"Чтобы копировалось только время, а дата соответствовала своему дню недели" - А вот это можно.
6 Riko669
 
07.12.16
16:15
Втф!? :D
7 Fish
 
07.12.16
16:16
(6) Показывай код своих процедур копирования и вставки по четным и нечётным дням.
8 Riko669
 
07.12.16
16:18
&НаКлиенте
Процедура ВставитьПоЧетнымДням(Команда)
    Для Каждого СтрТабПриемов из Объект.ТабПриемов Цикл
        ПравСимв=Прав(Строка(День(СтрТабПриемов.ДатаПриема)),1);
        Если Найти("02468",ПравСимв)>0 Тогда
            СтрТабПриемов.Время2=Врем2;
            СтрТабПриемов.Кабинет=Каб;
            СтрТабПриемов.Время1=Врем1;
        КонецЕсли;
    КонецЦикла;    
    
КонецПроцедуры

&НаКлиенте
Процедура ВставитьПоНеЧетнымДням(Команда)
    Для Каждого СтрТабПриемов из Объект.ТабПриемов Цикл
        ПравСимв=Прав(Строка(День(СтрТабПриемов.ДатаПриема)),1);
        Если Найти("13579",ПравСимв)>0 Тогда
            СтрТабПриемов.Время2=Врем2;
            СтрТабПриемов.Кабинет=Каб;
            СтрТабПриемов.Время1=Врем1;
        КонецЕсли;
    КонецЦикла;    
    
КонецПроцедуры
9 Riko669
 
07.12.16
16:19
Для копирования

&НаКлиенте
Процедура Копировать(Команда)
    Попытка
        Записать();
        Врем1=Объект.ТабПриемов.Получить(Элементы.ТабПриемов.ТекущаяСтрока).Время1;
        Врем2=Объект.ТабПриемов.Получить(Элементы.ТабПриемов.ТекущаяСтрока).Время2;
        Каб=Объект.ТабПриемов.Получить(Элементы.ТабПриемов.ТекущаяСтрока).Кабинет;
    Исключение
        
        Врем1=Объект.ТабПриемов.Получить(Элементы.ТабПриемов.ТекущаяСтрока-Объект.ТабПриемов.Количество()).Время1;
        Врем2=Объект.ТабПриемов.Получить(Элементы.ТабПриемов.ТекущаяСтрока-Объект.ТабПриемов.Количество()).Время2;
        Каб=Объект.ТабПриемов.Получить(Элементы.ТабПриемов.ТекущаяСтрока-Объект.ТабПриемов.Количество()).Кабинет;
        
        
    КонецПопытки;
КонецПроцедуры
10 NafNaf2000
 
07.12.16
16:20
Если Найти("02468",ПравСимв)>0 Тогда

это теперь так модно четность определять?
11 DrShad
 
07.12.16
16:20
гребанный стыд
срочно сделайте мне это все развидеть
12 Riko669
 
07.12.16
16:21
Ну как есть
13 Fish
 
07.12.16
16:28
(12) Вместо СтрТабПриемов.Время2=Врем2 и

Напиши что-нибудь вроде:

СтрТабПриемов.Время2 = НачалоДня(СтрТабПриемов.ДатаПриема) + (Врем2 - НачалоДня(Врем2))

Для время1 аналогично.
14 Riko669
 
07.12.16
16:29
(7) может хоть вы более адекватно отреагируете) как можно реализовать копирование только времени?
15 Riko669
 
07.12.16
16:30
извиняюсь, с опозданием идут сообщения.
хорошо, попробую
16 Riko669
 
07.12.16
16:34
(13) отлично все работает!! Безмерно благодарна, спасибо огромное)
17 Fish
 
07.12.16
16:36
(16) Да не за что, но по хорошему коллеги правы: неплохо бы переписать весь код заново, хотя, опять же, если работает - не трожь :)
18 Riko669
 
07.12.16
16:39
Пока работает, так и поступлю, пока не буду трогать :) спасибо еще раз)
19 azernot
 
07.12.16
16:54
На будущее, простая проверка на чётность - это отсутствие остатка от деления на 2.

В данном конкретном случае

Если День(СтрТабПриемов.ДатаПриема)%2 = 0 Тогда
//Чётное


Если НЕ День(СтрТабПриемов.ДатаПриема)%2 = 0 Тогда
  //Нечетное
20 DrShad
 
07.12.16
16:56
и не нужно при каждом копировании пытаться записывать объект
21 Cyberhawk
 
07.12.16
18:28
(2) По поводу "Теперь вопрос сам. Можно ли как-то отделить дату от времени?" из (0)
22 mistеr
 
07.12.16
19:55
(19) Интересно, какой процент мистян слова "оотсутствие остатка от деления" пугают больше, чем "Найти("02468",ПравСимв)"?
23 Riko669
 
08.12.16
11:46
Мм, хорошо, поняла, займусь тогда переделываем кода по четному и нечетному)
24 Riko669
 
08.12.16
11:56
(19) спасибо, совет учту и запомню)
25 catena
 
08.12.16
12:09
Ну а так-то у типа даты есть три возможных состава: Дата и Время, Дата, Время. Возможно, отдельно время будет смотреться информативнее в данном случае.
26 Riko669
 
08.12.16
13:47
(25) В принцепи можно, но у меня указан просто формат отображения время и вроде как всех устраивает, кто со мной тут сидит)