|
Отображение даты | ☑ | ||
---|---|---|---|---|
0
Валидатор
26.08.13
✎
13:48
|
Такой вопрос: есть печатная форма:
http://pikucha.ru/ibZ8t идут разделения по месяцам, 12 колонок: я - январь, ф - февраль и т.д., и когда закупка попадает в январь 2013 года, к примеру, то в колонку январь попадает год - 2013, и т.д., как это реализовать? для каждой колонки делать параметр, и потом проверять, в зависимости от попадания даты планирования выводить ее в соответствующую колонку? или как? |
|||
1
Wobland
26.08.13
✎
13:50
|
чо?
|
|||
2
Валидатор
26.08.13
✎
13:50
|
(1) картинку открыл?
|
|||
3
Starhan
26.08.13
✎
13:51
|
(0)>>и когда закупка попадает в январь 2013 года, к примеру, то в колонку январь попадает год - 2013
Что б те всю жись так задачи ставили. |
|||
4
Валидатор
26.08.13
✎
13:52
|
в документе, по которому печатается эта форма есть реквизит - Дата Извещения. На картинке видно, что в колонке с названием "я" стоит год 2013, то есть Дата извещения в документе для которого ПФ делается стоит: ДатаИзвещения - 01.01.2013, к примеру
|
|||
5
Валидатор
26.08.13
✎
13:53
|
начнем от обратного тогда) какйо формат задать, чтобы дата выводилась только годом? без месяца, числа и времени?
|
|||
6
Starhan
26.08.13
✎
13:53
|
YYYY
|
|||
7
Wobland
26.08.13
✎
13:54
|
(2) открыл. она вся белая
|
|||
8
Starhan
26.08.13
✎
13:56
|
(6) Точнее yyyy
|
|||
9
Валидатор
26.08.13
✎
13:58
|
(7) жаль, там суть в том, чтобы выводить на печатную форму год, в зависимости от месяца
|
|||
10
Wobland
26.08.13
✎
14:01
|
(9) то есть, в январе 13го - 2013, а в марте 13го - уже 2018?
|
|||
11
Валидатор
26.08.13
✎
14:04
|
Какое условие поставить для поиска попадает дата в указанный диапазон или нет?
мояДата = 15.01.2013 если МояДата > 01.01.2013 И 31.01.2013 < МояДата Тогда выполняется условие КонецЕсли; так? |
|||
12
Wobland
26.08.13
✎
14:04
|
нормальное условие. больше и меньше
|
|||
13
Wobland
26.08.13
✎
14:05
|
+(12) хотя, вероятно, имеется в виду нестрогое сравнение
|
|||
14
Валидатор
26.08.13
✎
14:05
|
01.01.2013 < Моя Дата И МояДата < 31.01.2013
во |
|||
15
Валидатор
26.08.13
✎
14:06
|
или задать в условии
01.01.2013 < МояДата < 31.01.2013 чтобы Моя дата попадала в этот заданный интервал |
|||
16
Wobland
26.08.13
✎
14:06
|
КонецДня не забудь
|
|||
17
Валидатор
26.08.13
✎
14:07
|
(16) где в этом условии он должен присутствовать?)
|
|||
18
hhhh
26.08.13
✎
14:12
|
(17) ну не первого января точно. Голову-то включи
|
|||
19
Валидатор
26.08.13
✎
14:12
|
Если 01.01.2013 < Строка.Параметры.ДатаПланирования < 31.01.2013 Тогда
КонецЕсли; не пропускает такое условие |
|||
20
Wobland
26.08.13
✎
14:13
|
(19) литерал даты заипсывается в апострофах
|
|||
21
Wobland
26.08.13
✎
14:13
|
(20) или то одинарная кавычка?
|
|||
22
Валидатор
26.08.13
✎
14:14
|
(21) c " вроде пропустило)
|
|||
23
Валидатор
26.08.13
✎
14:16
|
(18) я понимаю что конец дня в конце месяца, я спрашивал как в коде это указать, не скобками после кавычек же
|
|||
24
Wobland
26.08.13
✎
14:20
|
(23) можно прям 235959 сделать. но имхо ты городишь какую-то ерунду. не могут в нормальном решении использоваться литералы даты
|
|||
25
Валидатор
26.08.13
✎
14:25
|
(24) есть утвержденная форма, и вот под нее нужно подогнать Печатную форму. Делаю такое условие:
Если "01.01.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "31.01.2013" Тогда Строка.Параметры.я = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если "01.02.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "28.02.2013" Тогда Строка.Параметры.ф = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если "01.03.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "31.03.2013" Тогда Строка.Параметры.март = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если "01.04.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "30.04.2013" Тогда Строка.Параметры.апр = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если "01.05.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "31.05.2013" Тогда Строка.Параметры.май = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если "01.06.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "30.06.2013" Тогда Строка.Параметры.июнь = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если "01.07.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "31.07.2013" Тогда Строка.Параметры.июль = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если "01.08.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "31.08.2013" Тогда Строка.Параметры.авг = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если "01.09.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "30.09.2013" Тогда Строка.Параметры.с = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если "01.10.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "31.10.2013" Тогда Строка.Параметры.о = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если "01.11.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "30.11.2013" Тогда Строка.Параметры.н = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если "01.12.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "31.12.2013" Тогда Строка.Параметры.д = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; но вылетает ошибка, как тогда прописать условие? |
|||
26
Starhan
26.08.13
✎
14:26
|
А просто вот так написать
Строка.Параметры.ф = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); Без всяких если нельзя? |
|||
27
Starhan
26.08.13
✎
14:27
|
А...стоп понял. :(
|
|||
28
Wobland
26.08.13
✎
14:27
|
(25) говорил же: г-код
ставь формат у ячейки и выплюнь это |
|||
29
Starhan
26.08.13
✎
14:27
|
Текст ошибки в студию
|
|||
30
Wobland
26.08.13
✎
14:27
|
(27) переведи на русский, плз
|
|||
31
Wobland
26.08.13
✎
14:28
|
(29) строку с датой нельзя сравнивать. не знаю, как выглядит, никогда не встречал
|
|||
32
Starhan
26.08.13
✎
14:28
|
ну у него там буквы
я, ф, м и т.п. это параметры макета что ле. |
|||
33
Валидатор
26.08.13
✎
14:28
|
{ВнешняяОбработка.ПФКомплексныйПлан.МодульОбъекта(98)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)
Если "01.01.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "31.01.2013" Тогда Потому что строка с датой сравнивается, а как передать дату? Дата("01.01.2013); так? |
|||
34
Валидатор
26.08.13
✎
14:28
|
(32) да
|
|||
35
Starhan
26.08.13
✎
14:30
|
(31)ааа...
(25)Дату напиши '20130101' и '20130131235959' |
|||
36
Wobland
26.08.13
✎
14:30
|
(32) до меня всё равно не доходит необходимость (25)
|
|||
37
Starhan
26.08.13
✎
14:31
|
(36) та какая разница :)
Пускай пройдет грабленый путь. |
|||
38
Валидатор
26.08.13
✎
14:31
|
(36) заказчик говорит им форму гос-во утвердило, и надо в 1ски ее заиметь)
|
|||
39
Валидатор
26.08.13
✎
14:32
|
(35) сейчас попробую
|
|||
40
Wobland
26.08.13
✎
14:32
|
(38) формат непосредственно у ячейки тебя не спасёт?
|
|||
41
Starhan
26.08.13
✎
14:33
|
Хотя, я вот ща немного задумался над кодом в (25)
там можно вместо Строка.Параметры.н = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); написать Строка.Параметры.н = 2013 ничего не измениться XD |
|||
42
Валидатор
26.08.13
✎
14:34
|
(41), да только когда будет 2014 год, там все равно останется 2013)
|
|||
43
Wobland
26.08.13
✎
14:34
|
(42) после НГ собираешься переписывать код формирования ПФ?
|
|||
44
Starhan
26.08.13
✎
14:34
|
(40) спасет...
|
|||
45
Wobland
26.08.13
✎
14:34
|
вообще, ставлю на то, что нужна одна область с соответственно одним параметром
|
|||
46
Starhan
26.08.13
✎
14:35
|
(42) не будет у тебя 2014 года потомучто не попадет по условию
Если "01.11.2013" < ВыборкаДетальныеЗаписи.ДатаПланирования < "30.11.2013" Тогда |
|||
47
Валидатор
26.08.13
✎
14:35
|
(40) я там не нашел просто уууу )
|
|||
48
Валидатор
26.08.13
✎
14:35
|
(46) а точно, блин, а когда тогда делать униврсально для каждого года?
|
|||
49
Wobland
26.08.13
✎
14:35
|
(47) не стесняйся, напиши руками
|
|||
50
Операция 1Ы
26.08.13
✎
14:38
|
(25) уууууу, быдлокодер, а в следующем году что будешь делать?
|
|||
51
Starhan
26.08.13
✎
14:39
|
(48)XD
Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда ... |
|||
52
Валидатор
26.08.13
✎
14:42
|
(51) и для каждой области получается это условие?
|
|||
53
Starhan
26.08.13
✎
14:45
|
Трудно сказать не зная всех подробностей.
|
|||
54
Валидатор
26.08.13
✎
14:48
|
(53) Если ДатаПланирования - 01.02.2013 - то в колонку, где буква "Ф", то есть февраль, попадет просто число 2013, и т.д.
|
|||
55
Starhan
26.08.13
✎
14:49
|
(54) Я про другое. В твоем случае так должно прокатить.
А можно было бы и более оптимально отчет сделать. |
|||
56
Валидатор
26.08.13
✎
14:51
|
(55) делаю так:
Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда Строка.Параметры.я = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда Строка.Параметры.ф = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда Строка.Параметры.март = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда Строка.Параметры.апр = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда Строка.Параметры.май = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда Строка.Параметры.июнь = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда Строка.Параметры.июль = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда Строка.Параметры.авг = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда Строка.Параметры.с = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда Строка.Параметры.о = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда Строка.Параметры.н = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 Тогда Строка.Параметры.д = формат(ВыборкаДетальныеЗаписи.ДатаПланирования,"ДФ=yyyy"); КонецЕсли; но в итоге на макет не выводятся года( |
|||
57
Starhan
26.08.13
✎
14:52
|
(56) месяцев 12 XD
|
|||
58
Валидатор
26.08.13
✎
14:54
|
(57) даже если так, то везде бы был тогда год 2013, а данных никаких не вывелось(
|
|||
59
Starhan
26.08.13
✎
14:55
|
(58)О_о, брось ты 1С, не твое оно.
|
|||
60
Валидатор
26.08.13
✎
15:03
|
(59) странно, еще раз запустил, появились данные, только теперь еще один вопрос, дата может быть 01.01.0001, вот как ее тогда обозначить, чтобы она не учитывалась? добавить условие после Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1:
Месяц(ВыборкаДетальныеЗаписи.ДатаПланирования)= 1 И НЕ '0101001' Тогда так7 |
|||
61
Валидатор
26.08.13
✎
15:04
|
и сразу финальный вопрос: как сделать авторазмер колонки? не строки, а именно колонки, чтобы число туда помещалось само растягивая колонку?
|
|||
62
Операция 1Ы
26.08.13
✎
15:11
|
функция УстановитьФорматДаты(Дата, Строка, ДатаПланирования)
Если Месяц(Дата) = 1 Тогда Строка.Параметры.я = формат(ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(Дата) = 2 Тогда Строка.Параметры.ф = формат(ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(Дата) = 3 Тогда Строка.Параметры.март = формат(ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(Дата) = 4 Тогда Строка.Параметры.апр = формат(ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(Дата) = 5 Тогда Строка.Параметры.май = формат(ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(Дата) = 6 Тогда Строка.Параметры.июнь = формат(ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(Дата) = 7 Тогда Строка.Параметры.июль = формат(ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(Дата) = 8 Тогда Строка.Параметры.авг = формат(ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(Дата) = 9 Тогда Строка.Параметры.с = формат(ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(Дата) = 10 Тогда Строка.Параметры.о = формат(ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(Дата) = 11 Тогда Строка.Параметры.н = формат(ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Если Месяц(Дата) = 12 Тогда Строка.Параметры.д = формат(ДатаПланирования,"ДФ=yyyy"); КонецЕсли; Возврат Строка; КонецФункции держи, бедолага... |
|||
63
Операция 1Ы
26.08.13
✎
15:14
|
(59) пусть куячит xD
|
|||
64
Валидатор
26.08.13
✎
15:26
|
вернемся к авторазмеру колонок) функция выше тут не поможет)
|
|||
65
Валидатор
26.08.13
✎
15:27
|
не вернемся к этому вопросу никогда больше)
|
|||
66
Валидатор
26.08.13
✎
15:27
|
разобрался)
|
|||
67
Валидатор
26.08.13
✎
15:27
|
спс
|
|||
68
Валидатор
27.08.13
✎
13:27
|
сегодня возникла новая загвоздка, при коде:
Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 1 И НЕ ВыборкаДетальныеЗаписи.ДатаИзвещения = '00010101'Тогда Если ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.ДатаИзвещения) И НЕ ВыборкаДетальныеЗаписи.ДатаИзвещения = '00010101' Тогда Строка.Параметры.январь = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy"); Иначе Строка.Параметры.январь = " "; КонецЕсли; КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 2 Тогда Если ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.ДатаИзвещения) И НЕ ВыборкаДетальныеЗаписи.ДатаИзвещения = '00010101' Тогда Строка.Параметры.февраль = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy"); Иначе Строка.Параметры.февраль = " "; КонецЕсли; КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 3 Тогда Если ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.ДатаИзвещения) И НЕ ВыборкаДетальныеЗаписи.ДатаИзвещения = '00010101' Тогда Строка.Параметры.мартИсп = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy"); Иначе Строка.Параметры.мартИсп = " "; КонецЕсли; КонецЕсли; Если Месяц(ВыборкаДетальныеЗаписи.ДатаИзвещения)= 4 Тогда Если ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.ДатаИзвещения) И НЕ ВыборкаДетальныеЗаписи.ДатаИзвещения = '00010101' Тогда Строка.Параметры.апрИсп = формат(ВыборкаДетальныеЗаписи.ДатаИзвещения,"ДФ=yyyy"); Иначе Строка.Параметры.апрИсп = " "; КонецЕсли; КонецЕсли; происходит дублирование предыдущих позиций, то есть если у меня в январь попадает 2013 (так как в документе дата извещения у этой номенклатуры 01.01.13), то в следующей позиции в документе у номенклатуры, например февраль дата извещения, и на печатную форму выведется данные и в январь, и в февраль, а если даты извещения нет вообще в документе, то все равно выводится та дата, которая в табличной части в колонки извещение первой стоит |
|||
69
Валидатор
27.08.13
✎
13:27
|
как избавиться от этого дублирования дат?
|
|||
70
Валидатор
27.08.13
✎
13:35
|
тут скорее вопрос где выводить, если после цикла, то не все строки выводятся
|
|||
71
Валидатор
27.08.13
✎
13:45
|
Есть какой-нибудь метод для очистки данных параметров на макете?
|
|||
72
Валидатор
27.08.13
✎
13:53
|
Потому что в параметр сначала видимо пишется дата первой строки, и сохраняется, потом для второй строки берется опять таки эта первая дата, и добавляется вторая, а так не совсем правильно(
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |