Имя: Пароль:
1C
1C 7.7
v7: Изменение даты периодического реквизита
0 __Se24
 
15.05.12
11:31
Добрый день , уважаемые гуру !
столкнулся с такой проблемой , никак не могу понять ,почему так происходит :
В таблицу ТЗ предварительно загружаются все значения реквизита, при клике на колонку с датой вызывается этот обработчик :

дт=ТЗ.Дт;
рв=ВвестиДату(дт,"Введите новую дату",40);
Если рв=1 Тогда
  ПерЗн=СоздатьОбъект("Периодический");
  ПерЗн.ИспользоватьОбъект(Рекв,ТекущийЭлемент());
  Если ПерЗн.НайтиЗначение(ТЗ.Дт,0)=1 Тогда
     ПерЗн.ДатаЗнач=дт;
     ПерЗн.Записать();
     ЗаполнитьТЗ(ТЗ,Рекв);
  КонецЕсли;
КонецЕсли;

в результате , обработчик делает копию значения в введенной дате , вместо изменения существующего значения ...
Подскажите , что я не так делаю ?
1 miki
 
15.05.12
11:34
потому что
>>дт=ТЗ.Дт
2 __Se24
 
15.05.12
11:48
Ну так это же инициализация переменной . При вводе в нового значения она заменится на дату , которую пользователь хочет переназначить
3 miki
 
15.05.12
12:12
(2)
Ну не знаю. Новую дату точно меняют на другую?
Как вариант, присваивай и .Значение. Получишь дубль, старый .Удалить().
4 __Se24
 
15.05.12
12:48
почему при аналогичном изменении значения этого реквизита все работает правильно ?
В помощнике 1С ничего не сказано насчет того , что при изменении даты , происходит дублирование значения ...
5 miki
 
15.05.12
13:49
(4)ХЗ. Возможно, из-за особенностей хранения периодики в 77.
6 __Se24
 
15.05.12
16:08
мда , вопрос решился так :

дт=ТЗ.Дт;
рв=ВвестиДату(дт,"Введите новую дату",40);
Если рв=1 Тогда
  ПерЗн=СоздатьОбъект("Периодический");
  ПерЗн.ИспользоватьОбъект(Рекв,ТекущийЭлемент());
  Если ПерЗн.НайтиЗначение(ТЗ.Дт,0)=1 Тогда
     ПерЗн.Удалить();  //!! предварительно удаление ...
     ПерЗн.ДатаЗнач=дт;
     ПерЗн.Значение=ТЗ.Знч;
     ПерЗн.Записать();
     ЗаполнитьТЗ(ТЗ,Рекв);
  КонецЕсли;
КонецЕсли;
7 Азат
 
15.05.12
16:11
(6) ток КонецЕсли надо на 4 строки вверх поднять... если в этот день нет значения, то ничего в итоге ты не получишь
8 __Se24
 
15.05.12
16:13
(7) Проверка символическая , ибо в таблицу предварительно выгружаются все значения по датам , так что там 100% =1
(5) miki , спасибо за помощь :-)