Имя: Пароль:
1C
1C 7.7
v7: Удаление значений периодических реквизитов
0 Nat_o_O
 
18.05.12
08:14
HELP! Необходимо удалить/изменить значение периодического реквизита, установленного документом, но загвоздка в том, что документа, который установил это значения уже нет (после обрезки базы) и перепровести его невозможно. Какими средствами это можно сделать? Вариант с созданием нового реквизита с ручным изменением и копированием в него значений не предлагать) База SQL.
1 andrewks
 
18.05.12
08:18
ну очисти вручную в табличке поле дока
2 Nat_o_O
 
18.05.12
08:22
Так документа нет, мне надо значение реквизита изменить, установленное несуществующим документом.
3 andrewks
 
18.05.12
08:23
вся периодика в таблице 1sconst
4 K-5
 
18.05.12
08:24
Используй объект Периодический
5 Voronve
 
18.05.12
08:26
(0) Для доступа к полноценной версии техподдержки, Вам необходимо добавить фото в личную карточку.
6 ЧеловекДуши
 
18.05.12
08:27
Удаляй, я разрешаю, все делается средствами самой 1С, без прямых запросов :)
7 ЧеловекДуши
 
18.05.12
08:28
+ Без фото не взлетит :)
Традиция...
8 ЧеловекДуши
 
18.05.12
08:29
>> Вариант с созданием нового реквизита с ручным изменением и копированием в него значений не предлагать) База SQL.

А вариант, написать увольнительную и нанять нового программиста, предлагать?
9 andrewks
 
18.05.12
08:29
(4) для документов движение не удаляется. правда, не проверял для случая битой ссылки
10 ЧеловекДуши
 
18.05.12
08:31
+ >>> но загвоздка в том, что документа, который установил это значения уже нет

Как вариант, запускаешь ТиИ, создастся док или удалится, как выставишь параметры.

После удалишь и своЁ... Так же оторви себе руки после такой свертки :)
11 andrewks
 
18.05.12
08:32
ТиИ может длится очень долго
12 andrewks
 
18.05.12
08:33
как быстрое решение: а почему нельзя создать новый документ той же датой, и записать им новое значение периодики?
13 Mikeware
 
18.05.12
08:38
"Вариант с созданием нового реквизита с ручным изменением и копированием в него значений" - это ж надо иметь такое воспаленное воображение....
зы. очистить прямым запросом и не париться....
14 artpi
 
18.05.12
08:40
(11) ТиИ запускали с очисткой ссылок, после этого документов там и не стало, а значение не дает удалить.
(13) а можно по подробней, как?
15 Тихий омут
 
18.05.12
08:48
(0) z c`lyz lj,hsq? yfnt
   СообщитьЛОк("Начало очистки периодических реквизитов");
   
   ТАГод=ДатаГод(ДатаКонцаПериода);
   ТАМесяц=ДатаМесяц(ДатаКонцаПериода);
   ТАДень=ДатаЧисло(ДатаКонцаПериода);
   
   СтрДата=Прав("20"+СокрЛП(ТАГод),4)+"-"+Прав("00"+СокрЛП(ТАМесяц),2)+"-"+Прав("00"+СокрЛП(ТАДень),2);//ФОрмат(Дата(ТАГод,ТАМесяц,ТАДень),"ДФ=yyyy-MM-dd");  

   
   Для Сч2=1 По Метаданные.Справочник() Цикл
       
       СпрМД=Метаданные.Справочник(Сч2);
       ИдСпр=СпрМД.Идентификатор;
       
       Если (ИдСпр="Клиенты") Тогда
           Продолжить;
       КонецЕсли; //[ИдСпр="Клиенты"]
       
       ИдСпрБД=МДВ.ИмяТаблицыСправочника(ИдСпр);
       
       СтрСписПР="";
       СтрСписПР2="";

       ФлЕП=0;
       
       Для Сч=1 По СпрМД.Реквизит() Цикл
           РеквМД=СпрМД.Реквизит(Сч);
           Если (РеквМД.Периодический=0) Тогда
               Продолжить;
           КонецЕсли; //[РеквМД.Периодический=0]
           
           ФлЕП=1;
           
           ИдРекв=РеквМД.Идентификатор;
           
           ИдРеквБД=МДВ.ИдРеквизитаСправочника(ИдСпр,ИдРекв);
           
           СтрСПисПР=СтрСПисПР+ИдРеквБД+",";
           СтрСПисПР2=СтрСПисПР2+ИдРекв+",";
       КонецЦикла; //[Сч=1 По СпрМД.Реквизит()]
       
       Если (ФлЕП=0) Тогда
           Продолжить;
       КонецЕсли; //[ФлЕП=0]
       
       СтрСписПР="("+Лев(СтрСписПР,СтрДлина(СтрСписПР)-1)+")";
       СтрСписПР2="("+Лев(СтрСписПР2,СтрДлина(СтрСписПР2)-1)+")";
       
       СообщитьЛОк("    Очистка периодических реквизитов справочника "+ИдСпр+", реквизиты "+СтрСписПР2);
       
       ТекстЗапроса="DELETE FROM _1SCONST WHERE OBJID IN (SELECT ID FROM "+ИдСпрБД+") AND ID IN "+СтрСписПР+" AND DATE<=CONVERT(DATETIME,'"+СтрДата+"',121)";
       РС.ВыполнитьИнструкцию(ТекстЗапроса);                
       
   КонецЦикла; //[Сч2=1 По Метаданные.Справочник)]    

   СообщитьЛОк("Окончание очистки периодических реквизитов");
16 Nat_o_O
 
19.05.12
08:17
(15) Спасибо!
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.