Имя: Пароль:
1C
1C 7.7
v7: Периодические реквизиты
,
0 Amig0_0
 
09.04.13
11:02
Доброе утро!
Не подскажите в чем может быть ошибка?
Суть проста. Если элементов в справочнике нет, тогда создать новый. Если есть, то найти нужный по "ПоискМойРеквизит" и добавить в его периодические реквизиты нужные данные.
Новый создается без проблем. Так же без проблем в отладчике программа проходит цикл по добавлению данных в периодические реквизиты, но в итоге они не добавляются...
Заранее спасибо!

Если СпрСессии.ВыбратьЭлементы() = 0 Тогда
 СпрСессии.Новый();

    ***

 СпрСессии.МойРеквизит = Строка(Строка(СпрСессии.ДатаС) + "-" + Строка(СпрСессии.ДатаС) );
 СпрСессии.Записать();

 СпрСессии.Оценка.Установить(ДатаДок,Оценка);
 СпрСессии.Дисциплина.Установить(ДатаДок,Дисциплина);
 СпрСессии.Преподователь.Установить(ДатаДок,Преподаватель);
                       
Иначе

ПоискМойРеквизит = Строка(Строка(ТекЭлем.УчГруппа.СессияС) + "-" + Строка(ТекЭлем.УчГруппа.СессияПО) );
                           
 Если СпрСессии.НайтиПоРеквизиту("МойРеквизит",ПоискМойРеквизит,1) = 1 Тогда

   ДопПеремДляЦикла = 0;
   СтатусВозврата(0);
   Прервать;                                    

 Иначе
   СпрСессии.Оценка.Установить(ДатаДок,Оценка);
   СпрСессии.Дисциплина.Установить(ДатаДок,Дисциплина);
   СпрСессии.Преподователь.Установить(ДатаДок,Преподаватель);
   СпрСессии.Записать();
                                   
 КонецЕсли;                            КонецЕсли;
1 Amig0_0
 
09.04.13
11:03
блин только этого у меня нет) это я для отладки добавлял...

 Если СпрСессии.НайтиПоРеквизиту("МойРеквизит",ПоискМойРеквизит,1) = 1 Тогда

   ДопПеремДляЦикла = 0;
   СтатусВозврата(0);
   Прервать;                                    

 Иначе
2 vladko
 
09.04.13
11:05
в верхнем условии не хватает после установки периодических
СпрСессии.Записать()
3 Ёпрст
 
09.04.13
11:13
(0) выкини установить и делай
СпрСессии.ИспользоватьДату(ДатаДок)
4 Amig0_0
 
09.04.13
11:20
(2) не помогло((
(3) как с помощью "ИспользоватьДату" мне занести новые значения ?
5 пипец
 
09.04.13
11:28
СпрСессии.ИспользоватьДату
СпрСессии.Преподователь=Преподаватель;
   СпрСессии.Записать();
6 palpetrovich
 
09.04.13
11:32
а что, если создать элемент справочника с таким ключем:
СпрСессии.МойРеквизит = Строка(Строка(СпрСессии.ДатаС) + "-" + Строка(СпрСессии.ДатаС) );
то потом по такому ключу:
ПоискМойРеквизит = Строка(Строка(ТекЭлем.УчГруппа.СессияС) + "-" + Строка(ТекЭлем.УчГруппа.СессияПО));
находит?
... ДатаС == СессияС == СессияПО ?
7 floody
 
09.04.13
11:33
ПрепоВдУватель
8 Amig0_0
 
09.04.13
11:44
(6) это моя невнимательность. спасибо . когда долго сижу над одним, попросту не замечаю помарок от которых может ничего не работать.

решение проблемы:
1) сроки С и по С !!
2) СпрСессии.НайтиПоРеквизиту("МойРеквизит",ПоискМойРеквизит, 0 а не 1)
9 Cthulhu
 
09.04.13
11:49
перечитать синтаксис метода "Установить" срочно и внимательно.
10 Amig0_0
 
09.04.13
11:54
(9) Установить(<Дата>,<Значение>)

вроде бы ничего сверхъестественного...
11 Amig0_0
 
09.04.13
12:34
Все таки работает она не до конца правильно( Перед тем как добавить новые данные к периодическим реквизитам нужна проверка. Не было ли ранее данных на такую дату...
Пробовал так:

СпрСессии.ИспользоватьДату
СпрСессии.Преподователь=Преподаватель;
   СпрСессии.Записать();...

В таком случае нельзя использовать метод Получить, который мне нужен для проверки
12 antoneus
 
09.04.13
13:11
(11) Открой для себя объект "Периодический".
13 пипец
 
09.04.13
13:33
ПерВал = СоздатьОбъект("Периодический");
           
           ПерВал.ИспользоватьОбъект("мойреквизит",Контр);
           
           ПерВал.ОбратныйПорядок(1);
           
           ПерВал.ВыбратьЗначения();
           
           Пока ПерВал.ПолучитьЗначение() = 1 Цикл
               
               Запр = ПерВал.Значение;
               
               ДатаЗапр = ПерВал.ДатаЗнач;
               
           
               
           КонецЦикла;
14 пипец
 
09.04.13
13:35
хмм к слову а чо при ипользовать дату  без получить не канает ?