Имя: Пароль:
1C
 
Дата в периодических реквизитов
0 Новичок
 
18.03.09
22:29
Здрасте. Помогите плиз решить вот такую задачу:
Есть в справочнике Адреса периодический реквизит Трубка. в него вбиты данные, например,
дата                          значение
01.01.04                      да
01.01.06                      нет
01.01.08                      да

В процедуре выполняется следующее

Период=01.01.05
Знач=Адрес.Трубка.Получить(Период);//получаем значение т.е. ДА

Вопрос: как получить точную дату, т.е. нужно чтобы некому идентификатору ДАТ присвоилось в этом примере значение 01.01.04.
Если период был бы например 01.01.07, то ДАТ=01.01.06.
Возможно ли это сделать вообще??
1 Привратник
 
18.03.09
22:31
объект периодический
выбратьзначения
получитьзначение
2 Guk
 
18.03.09
22:31
Возможно. Я правда не совсем понял чего ты хочешь, но возможно...
3 Новичок
 
18.03.09
22:33
Значение выбирается, а вот возможно ли выбрать точную дату этого знчения??
4 Новичок
 
18.03.09
22:34
Если да, то как это реализовать??
5 ДенисЧ
 
18.03.09
22:35
(4) читай (1), медитируй, вникай...
6 Привратник
 
18.03.09
22:35
Перебираешь все значения с начала. Находишь первое, которое больше заданного. Смотришь на одно значение назад. Получаешь искомое.
7 Новичок
 
18.03.09
22:38
(6) У меня не стоит проблема нахождения значения, главная проблема с датами. Мне нужна точная дата, когда было установлена это значение....
8 Guk
 
18.03.09
22:40
(7) разве (1) это не разрешает? правда в твоем примере, зная значение ты получишь список дат. короче, чего тебе надо?...
9 ДенисЧ
 
18.03.09
22:40
(7) Не... У тебя другая проблема...
10 Новичок
 
18.03.09
22:41
Всё вник... К концу дня уже тупею.... Тема закрыта. Спасибо (1)
11 Новичок
 
19.03.09
01:05
Вот такой вот вопрос:

ПроектИст=СоздатьОбъект("Периодический");
ПроектИст.ИспоьзоватьОбъект("ПроектИстория",СпрК.ТекущийЭлемент());
Пр=ПроектИст.ЗначениеНаДату(период);//здесь все ок Пр=да
Пр=ПроектИст.Значение;// а вот здесь почему-то ничего не присваивается, хотя //должно тоже самое, что и в предыдущем или я ошибаюсь?
ДатаУст=ПроектИст.ДатаЗнач;//и здесь ничего не берет
12 КонецЦикла
 
19.03.09
01:10
Пер.ИспользоватьОбъект("ДатаСертификата",СпрТек);
           Пер.ДатаЗнач=НаДату;
           Пер.Значение=ДатаСертификата;
           Пер.Записать();
13 Новичок
 
19.03.09
01:18
мне наоюорот надо из периодического реквизита, взять значение и дату по текущему периоду. Пр=ПроектИст.Значение;ДатаУст=ПроектИст.ДатаЗнач; - эти функции не помогают, они ничего не берут :(
14 Новичок
 
19.03.09
01:41
Ну и почему удалили мои сообщения??
15 GROOVY
 
модератор
19.03.09
01:44
(14) Извините, это ошибка технического порядка. Посты восстановятся как только будет такая возможность.
16 КонецЦикла
 
19.03.09
01:55
(13) Аналогично, может пора щелкнуть на дядьку в кепке?
17 Новичок
 
19.03.09
10:10
(16) Не понял.... Какая дядька??
18 Ёпрст
 
гуру
19.03.09
10:11
(17) открой пофигуратор и посмотри на панель меню - там есть мужик в кепке.. все ответы он знает.
19 Новичок
 
19.03.09
10:15
Да я смотрел уже Синтак-Помощник. Все делаю так, как там сказано.... Я никак не могу понять почему ДатаЗнач и Значение у меня не берут данные, которые прописаны в реквизите. Он просто не видит его, указывает что там ничего нет...
20 Новичок
 
19.03.09
10:18
Если использовать функцию ВыбратьЗначения, и пустить цикл

Пока ПроектИст.ПолучитьЗначение()=1 Цикл
Пр=ПроектИст.Значение;
Датаус=ПроектИст.ДатаЗнач;
КонецЦикла

когда смотрюб в отладчике, он зависает на этом цикле, и также ничего не присваивает.............
21 Ёпрст
 
гуру
19.03.09
10:21
(20) ПроектИст.ИспользоватьОбъект есть в коде?
22 Новичок
 
19.03.09
10:24
(21)
Конечно... в самом начале

ПроектИст.ИспользоватьОбъект("Проект",Спр.ТекущийЭлемент());

В отладчике смотрел, всё ок, присваивается 1
23 Жан Пердежон
 
19.03.09
10:24
ПроектИст=СоздатьОбъект("Периодический");
ПроектИст.ИспоьзоватьОбъект("ПроектИстория",СпрК.ТекущийЭлемент());
ПроектИст.ОбратныйПорядок();
ПроектИст.ВыбратьЗначения(НачДата, период);
Если ПроектИст.ПолучитьЗначение()=1 тогда
   Знач = ПроектИст.Значение;
   Дат  = ПроектИст.ДатаЗнач;
КонецЕсли;
24 Новичок
 
19.03.09
10:28
(23)

Делал так.
Знач = ПроектИст.Значение;//здесь ничего не присваивается, в отладчике смотрел знач="         "
Дат  = ПроектИст.ДатаЗнач;//здесь Дату присваивается следующее " . . "
25 Новичок
 
19.03.09
10:33
(23)
И еще часто ругается что перед ПолучитьЗначение нужон ИспользоватьОбъект, хотя эта функцмя уже есть...
26 Жан Пердежон
 
19.03.09
10:33
(24) а НачДата наверно сделали = период?
27 Новичок
 
19.03.09
10:35
(26)
НачДата у меня ничего не стоит, а период="01.01.09"
В период.реквизите есть данная с датой 01.01.06 и со значением ДА
28 Новичок
 
19.03.09
10:37
(26)
Единственная функция которая работает это Пр=ПроектИст.ЗначениеНаДату(период);
Но мне надо узнать и дату этого значения, а не только само значение, поэтому эту функцию я использовать не могу...
29 Shaman100M
 
19.03.09
10:38
Тут видимо, дословно надо.

ПроектИст=СоздатьОбъект("Периодический");
ПроектИст.ИспоьзоватьОбъект("Трубка",Адрес.ТекущийЭлемент());
ПроектИст.ОбратныйПорядок(1);
ПроектИст.ВыбратьЗначения(, период);
Если ПроектИст.ПолучитьЗначение()=1 тогда
   Сообщить("" +ПроектИст.Значение);
   Сообщить("" +ПроектИст.ДатаЗнач);
КонецЕсли;
30 Новичок
 
19.03.09
10:42
(29) Зачем мне сообщать то?? Мне же дальше эти данные в работе программы понадобиться.... Поэтому мне надо именно присваивовать к каким-нибудь переменным.
31 Жан Пердежон
 
19.03.09
10:43
(30) ну не сообщай - используй дальше, в чем проблема-то???
32 Новичок
 
19.03.09
10:45
(31) Посмотри (23). Как их использовать, если к ним ничего не присваивается??!! Смотрел в отладчике, никак ничего не хочет присваивать(
33 Новичок
 
19.03.09
10:46
(31) т.е. (24) посмотри
34 Жан Пердежон
 
19.03.09
10:48
и что там смотреть?
откуда я знаю, что у тебя в БД?
откуда я знаю, какой у тебя код до и после?
предлагаешь протелепатировать и найти у тебя там ошибку?
Вот полностью рабочий код на справочнике "Валюты", ошибку ищи у себя:

Процедура Сформировать()
   ПроектИст = СоздатьОбъект("Периодический");
   ПроектИст.ИспользоватьОбъект("Курс",ВыбВалюты.ТекущийЭлемент());
   ПроектИст.ОбратныйПорядок();
   ПроектИст.ВыбратьЗначения(, ВыбДата);
   Если ПроектИст.ПолучитьЗначение()=1 тогда
       нЗнач = ПроектИст.Значение;
       нДата  = ПроектИст.ДатаЗнач;
   КонецЕсли;
   Сообщить(""+нЗнач+" "+нДата);
КонецПроцедуры
35 Новичок
 
19.03.09
10:54
(34)
"и что там смотреть? "
Ну я там писал уже в чем главная проблема
"откуда я знаю, что у тебя в БД? "
в БД у меня вбито что-то наподобие (0)
"откуда я знаю, какой у тебя код до и после? "
Код ДО и ПОСЛЕ не имеют значения, так как главная проблема в присваении
"предлагаешь протелепатировать и найти у тебя там ошибку?"
Вот это редко кто в наше время может сделать)
"Вот полностью рабочий код на справочнике "Валюты", ошибку ищи у себя:"
По этому рабочему коду я и делал, но проблема все равно выходит. Если б не было проблем таких (мб какая-нить не точность мешает, к-ую я никак не могу заметить) я б сюда не писал.
Всё равно СПАСИБО за помощь.
36 Ёпрст
 
гуру
19.03.09
11:16
Знач = ПроектИст.Значение;//здесь ничего не присваивается, в отладчике смотрел знач="         "

Еще бы... нефик юзать зарезервированные ключевые слова.
37 Новичок
 
19.03.09
13:21
Дат  = ПроектИст.ДатаЗнач;//здесь Дату присваивается следующее " . . "
а про это что скажете?? здесь тоже ничего не присваивается...
38 Ёпрст
 
гуру
19.03.09
13:23
(37) Больше кода.
39 Новичок
 
19.03.09
13:54
(38) В (24) написано
40 Ёпрст
 
гуру
19.03.09
14:00
(39) весь код показывай. начиная с СоздатьОбъект("Периодический") ...
41 Ёпрст
 
гуру
19.03.09
14:00
+40 телепаты в отпуске.