Имя: Пароль:
1C
 
База sql. Можно ли прямо в скуле удалить некоторые проводки у операции доков
0 Обработка
 
03.03.10
12:18
Прямо в скуле менял счета в проводках. Менял описания в таблицах а вот не приходилось удалять проводки. Вот думаю возможно ли это? Ведь есть же несколько таблиц итогов остатков....

зЫ цель перевести некоторые движение с бухитогов в регистры. Хочу в режиме допроведение провести по регистрам а из ореперации тупо по фильтру удалить ненужные проводки...
1 Ёпрст
 
03.03.10
12:20
запросто
2 Обработка
 
03.03.10
12:22
(1) А как быть с итогами и отборами? Просто после скулевского  удлаения пересчитать итоги?
3 Ёпрст
 
03.03.10
12:30
(2) ну да.
4 Обработка
 
03.03.10
13:40
(3) спасибо попробую.
5 Обработка
 
05.03.10
08:48
Народ, кому не в лом помогите кто может. Дайте примерчик удаления. Думаю кто это проделывал напшут код за 5 минут. А то я что то пытаюсь делать не могу ...

Нужно удалить из таблицы проводки со счетами дебета или кредита равным ХХХ.Х и чтоб документ котрый проводил имеет вид "ZZZZZZZ"
6 Mikeware
 
05.03.10
08:52
1сQA есть?
7 Обработка
 
05.03.10
08:59
да я уже там делал кой что ну допустим год назад вто что делал
Declare @Kod1 char(9), @Kod2 char(9)
select @Kod1=ID from _1SACCS
where SCHKOD ='90.0.'
select @Kod2=ID from _1SACCS
where SCHKOD ='81.1.'

update _1Sentry
set ACCDTID = @Kod2
where accdtid = @Kod1
8 skunk
 
05.03.10
09:17
(5)поставь ты себе 1С++ ... там все по-настоящему ... одноэсовскому ...

(6)он есть ... вот только пользоваться им надо уметь
9 Mikeware
 
05.03.10
09:25
(8) А чего там уметь-то?
10 skunk
 
05.03.10
09:27
(9)тот же язык запросов знать ... что и откуда выбирать
11 Ёпрст
 
05.03.10
09:38
Ну.. тип того:
стр="
|DELETE
|FROM _1SENTRY
|WHERE (DOCID IN(SELECT Жур.iddoc FROM 1sjourn as Жур Where Жур.iddocdef=$ВидДокумента.ПоступлениеТМЦ ))
|and ((ACCDTID = :СчетДебета)OR(ACCKTID =:СчетКредита))";

RS.УстановитьТекстовыйПараметр("СчетДебета",СчетПоКоду("62.1"));
RS.УстановитьТекстовыйПараметр("СчетКредита",СчетПоКоду("90.1"));
12 МихаилМ
 
05.03.10
10:00
(11)
а корректировка таблиц итогов где?
13 Ёпрст
 
05.03.10
10:04
(12) в  (2) ..
14 Ёпрст
 
05.03.10
10:06
+13 вот блин заняться нечем, как самому толкать руками еще 2 таблички итогов, когда они и так быстро сами рассчитываются потом...
Тем более. это , на сколько я понял, разовая залипуха.
15 Обработка
 
05.03.10
11:16
(10) Верно гвришь надо знать но 1c++ надо ставить потом изучать тоже все равно в квери аналайзере хотя и не умею думаю достаточно подсказки чтоб понять конструкцию.

Ёпрст3, спасибо не раз выручал. БУду пробовать..
16 МихаилМ
 
05.03.10
11:27
если разовая операция - почему просто проводки нельзя удалить штатно.
17 mikecool
 
05.03.10
11:30
не раз делал, если док в глубоко закрытом периоде, а проводки косили
18 Ёпрст
 
05.03.10
11:30
(16) Это к автору вопрос... может долго слишком.
19 Обработка
 
05.03.10
11:34
(18) точно вся беда в том что база хотя за год и 2 месяца проводок 3 млн. ДУмаю штатно удалять будет очень долго. А у меня база работает почти круглые сутки могут дать время токок доя бекапа 20 -30 мину. ну Вечерком могу выбить пару часов . А удалять штатно  думаю придется по 3-4 часа.
20 Обработка
 
05.03.10
11:35
пишу

Select NUMBER, DOCID
FROM _1SENTRY
WHERE (DOCID IN(SELECT жур.iddoc FROM 1sjourn as жур Where жур.iddocdef='ВидДокумента.РеализацияТовара' ))
and ((ACCDTID = '132')OR(ACCKTID ='132'))

а в ответ

Server: Msg 170, Level 15, State 1, Line 3
Line 3: Incorrect syntax near '1'.
21 mikecool
 
05.03.10
11:37
(19) нда... пару часов, говоришь? :)
помню резал базу с 35 до 5 гиг - ушло пол дня только на скрипты, а потом еще выравнивание косяков, если будут
22 mikecool
 
05.03.10
11:38
_1sjourn
23 Ёпрст
 
05.03.10
11:40
А вот это шо за бред ?
Where жур.iddocdef='ВидДокумента.РеализацияТовара' )
24 Обработка
 
05.03.10
11:41
(23) Пыталсязадать вид дока

(22) сенкс исправил теперь пишет

Server: Msg 245, Level 16, State 1, Line 1
Syntax error converting the varchar value 'ВидДокумента.РеализацияТовара' to a column of data type int.
25 Ёпрст
 
05.03.10
11:42
(24) ну ё.. скопируй его из таблички _1sjourn
26 mikecool
 
05.03.10
11:43
(24) может лучше ну его, не надо?
27 Обработка
 
05.03.10
11:45
(26) Да нееет не боисья на копии все проверю и засеку. Если отлажу скрипт удаление и пересчет итогов займет ну более пол часа. В итоге в боевой базе за час уложусь думаю.
28 Обработка
 
05.03.10
11:45
(25) Не совсем понял мысль куда как скопировать?
29 mikecool
 
05.03.10
11:46
(27) оптимист
30 Обработка
 
05.03.10
11:49
Недавно штатно итоги пересчитывал заняло час даже меньше а скирпт удалит за 5 минут ну пусть за 10 что я не так оценил?
31 Ёпрст
 
05.03.10
11:49
(28) открой табличку _1sjourn в EM и скопиряй значение поля iddocdef для нужного вида документа..
Потом воткни в свой запрос.. типа '  1B'
32 mikecool
 
05.03.10
11:50
(30) если у тебя скулевый скрипт отрабатывает за 10 минут, то нафик такую маленькую базу резать?
33 Обработка
 
05.03.10
11:50
(31) ооо примерно так и думал...
34 mikecool
 
05.03.10
11:50
+32 ибо не трункаешь же таблицы?
35 Sadovnikov
 
05.03.10
11:51
(31) "типа '  1B'" - это ж скуль... Так что  - "Типа 2569"
36 Ёпрст
 
05.03.10
11:51
аналогично получи ACCDTID и ACCKTID из таблички _1SACCS ..зная код дебета и кредита..
37 Ёпрст
 
05.03.10
11:52
(35) :) Ага.. мне лень на скуль сервак лезть..
38 Обработка
 
05.03.10
11:56
(32) Если че я базу не режу а перевожу из бухитогов в регистры некторые движение чтоб облегчить базу...
39 Ёпрст
 
05.03.10
11:56
(38) Зачем ?..
40 Ёпрст
 
05.03.10
11:56
Конфа какая изначально?
41 Обработка
 
05.03.10
12:00
иначально база была типова бухия. прикрутил туды производсво. Но выпуск перемещение и продажа ГП занимает очень много движение и порведения очень сложно сделать. Потом регисры и так буду прикручивать для упраленческих отчетов. так что доки так и так уже проводят в регистру. Удалив все движение ГП из бухитогов а туда всо лишь буду проводки сммарные за месц таким образом у меня база будет облегчена и будет возмодность гибкого проведение по регистрам итп
42 Обработка
 
05.03.10
12:01
(36) Знчит придется черезпеременные как то связать?
43 Обработка
 
05.03.10
12:06
а как же по номеру или по iddocdef,iddoc узанть что к чему? к какому виду? Туплю братцы извините
44 Ёпрст
 
05.03.10
12:08
(42) чо ? тебе просто нужно узнать 1SACCS.ID , зная код SCHKOD
45 Обработка
 
05.03.10
12:09
Получается лезу в DDS там по описанию дока лезу в таблицу в скуле узнаю ай ди этого дока в скуле подтавляю чтоль?
46 Ёпрст
 
05.03.10
12:09
(45) нет.
47 Обработка
 
05.03.10
12:13
(44) Мысль уловил. Но пока не пережувал по счета.  по виду дока?
48 Ёпрст
 
05.03.10
12:13
В ЕМ открой _1sjourn и посмотри , какие там есть поля и какие значения в них..

Тебе нужно просто узнать вид документа из поля iddocdef
49 Ёпрст
 
05.03.10
12:15
(47) Тебе из таблички плана счетов нужно просто узнать id счета..
50 Обработка
 
05.03.10
12:15
ну задал SELECT iddocdef,iddoc  FROM _1sjourn  в квери а оно мне выдало

кучу цифр в две колонки ну допустим

1396       39L  
и че сним делать то? Где вид дока узнаю???
51 Обработка
 
05.03.10
12:44
(49) Вобщем идею понял что из связанных таблиц нахожу их айди. Спасибо буду думать своей 1сниковой головой. блин вот же стал кодером интерпретатора...
52 Ёпрст
 
05.03.10
12:47
(50) ну блин.. по -старинке найди id вида, коли в табличке не видишь:

Док = СоздатьОбъект("Документ.РеализацияТовара");
стр = ЗначениеВСтрокуВнутр(Док);
стр = Сред(стр,2,СтрДлина(стр)-2);
СЗ=СоздатьОбъект("СписокЗначений");    
СЗ.ИзСтрокиСРазделителями(стр);  
Сообщить("Ид "+Док.Вид()+" = '"+_IdToStr(СЗ.ПолучитьЗначение(4))+"'");
53 Обработка
 
05.03.10
13:09
(52) Про такое не знал хотя код в стр = ЗначениеВСтрокуВнутр(Док) можно действительно ухнать код.

Вот сдедал:
Select NUMBER, DOCID
FROM _1SENTRY
WHERE (DOCID IN(SELECT жур.iddoc FROM 1sjourn as жур Where жур.iddocdef='   152'))
and ((ACCDTID = '       12')OR(ACCKTID ='       12'))

все равно ошибка

Server: Msg 170, Level 15, State 1, Line 3
Line 3: Incorrect syntax near '1'.
54 ДенисЧ
 
05.03.10
13:10
(53) _1sjourn
55 Обработка
 
05.03.10
13:11
(54) Вот же туплюю копи-пастер...
56 Обработка
 
05.03.10
13:15
Ошибок нет но и ничего не выбрал :(
57 ДенисЧ
 
05.03.10
13:16
iddocdef - числовое поле
58 Обработка
 
05.03.10
13:22
а как число вводить то?
Пишу  Where жур.iddocdef=152).....

нет рез-та
59 ДенисЧ
 
05.03.10
13:27
SELECT жур.iddoc FROM 1sjourn as жур Where жур.iddocdef=152

Даёт что-то?
60 Обработка
 
05.03.10
13:29
:( не а ничего
61 ДенисЧ
 
05.03.10
13:29
дык... Нету таких докУментов, видать...
А почему 152, а не 42?
62 Обработка
 
05.03.10
13:34
Код в (52) выдало мне  Ид РеализацияТоваров = '   152'

а вот сам  стр1 = ЗначениеВСтрокуВнутр(Док)  выдал

{"O","0","0","1478","0","0","         0   "}

и в итоге SELECT жур.iddoc FROM 1sjourn as жур Where жур.iddocdef=1478

выдал список

Значит все-таки код 1478 дока РеализацияТоваров ?
63 ДенисЧ
 
05.03.10
13:38
(62) Открой dds и поищи по слову РеализацияТоваров. Сам увидишь
64 Ёпрст
 
05.03.10
13:39
(62) да.. просто в скуле число, в дбф- строка..
Нет щас скуля под рукой, чтоб проверить.
65 Обработка
 
05.03.10
13:40
Всем спаисбо буду пробовать удалять. Еси будут ступроры :) дам знать

(63) ну так и хотел но Ёпрст3 меня отдернул выше так и я не стао лезть. подумал там таблица и код ид это не оно и тоже.
66 ДенисЧ
 
05.03.10
13:48
А Ёпрст сегодня, похоже, ужо нетревз :-)
67 Ёпрст
 
05.03.10
13:55
(66) занят просто..
да и .. скуль-дбф.. смешались в кучу люди кони..
:)