Имя: Пароль:
1C
1C 7.7
v7: Небольшое замешательство с бухгалтерскими итогами
,
0 Jokerman
 
27.11.12
10:21
Здравствуйте всем. Проблема не сказать что проблема, просто интересно стало. Есть некий кусок кода:

   БИ=СоздатьОбъект("БухгалтерскиеИтоги");        
   БИ.ИспользоватьСубконто(ВидыСубконто.МестаХранения,ВыбСклад,2);
   БИ.ИспользоватьСубконто(ВидыСубконто.Материалы);
   БИ.ВключатьСубсчета(-1);
   БИ.ВыполнитьЗапрос(НачДата,КонДата,"10",,,,"День");
Если после выполнить Би.ВыбратьПериоды(), то возвращает 1, но если до это отрывка поставить цикл, где я отменяю проведение документов, которые  делаю движения по 10 счету. То Би.ВыбратьПериоды()=0 становится. Что можно сделать, чтобы отрабатывало всегда?
1 Ёпрст
 
27.11.12
10:23
Ты хочешь получать потом то, что до этого удалил ?
Грибной сезон вроде кончился ужо.
2 viktor_vv
 
27.11.12
10:26
Поменять местами куски кода, не ?
3 Jokerman
 
27.11.12
13:22
(1) остатки то есть, я отменяю расход, а остатки от прихода должны быть.
(2) Нельзя мне надо остатки за минусом движений этих доков.
4 Jokerman
 
27.11.12
13:30
ап
5 zak555
 
27.11.12
13:32
> где я отменяю проведение документов, которые  делаю движения по 10 счету

код покажи
6 zak555
 
27.11.12
13:33
+ это ты в модуле дока выполняешь запрос ?
почему тогда на дату документа, а не на его позицию ?
7 Jokerman
 
27.11.12
13:47
(5)
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с НачДата по КонДата;
   |ОбрабатыватьДокументы все;
   |Обрабатывать НеПомеченныеНаУдаление;
   |Док = Документ.СписаниеМатериаловПоНормам.ТекущийДокумент;
   |Номенклатура = Документ.СписаниеМатериаловПоНормам.Номенклатура;
   |Авто = Документ.ПриходныйАктИмпорт3.Авто;
   |Группировка День;
   |Группировка Номенклатура;
   |Условие(Авто=1);
   |"//}}ЗАПРОС
   ;
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Сообщить("Не удалось выполнить запрос по документам!","!");
       Возврат;
   КонецЕсли;            
   
   ДокСписания = СоздатьОбъект("Документ.СписаниеМатериаловПоНормам");
   Пока Запрос.Группировка(1)=1 Цикл
       Пока Запрос.Группировка(2)=1 Цикл
           ДокСписания.НайтиДокумент(Запрос.Док);
           ДокСписания.СделатьНеПроведенным();
       КонецЦикла;
   КонецЦикла;
8 Jokerman
 
27.11.12
13:47
(7) нет это в обработке
9 zak555
 
27.11.12
13:47
ты логику своих действий поясни
10 Jokerman
 
27.11.12
13:52
(9) запрос по би выполняется по дням в каждом дне я создаю док или переписываю его ТЧ. Мне нужно знать остатки по дням без учета движений доков СписаниеМатериаловПоНормам в это день.
11 zak555
 
27.11.12
13:56
(10) остатки чего ?
12 Jokerman
 
27.11.12
14:00
остатки по материалам по заданному складу, сумма и количество
13 zak555
 
27.11.12
14:01
тогда когда ты создаёшь док или переписываешь ТЧ ?
14 Jokerman
 
27.11.12
14:01
я обошел тем что беру не СКД, а СНД, но если в какой то день другие доки по расходу или приходу были он их не учтет
15 Jokerman
 
27.11.12
14:02
(13) Разницы нет в любом случае либо создаю док, либо если есть в этот день очищаю ТЧ и по новой
16 zak555
 
27.11.12
14:02
(14) рано пока говорить о том : обошёл ты это или нет
логику распиши дальше
17 zak555
 
27.11.12
14:03
(15) при каких условиях идёт очистка/создание
18 Jokerman
 
27.11.12
14:05
(17) не понимаю зачем это, все прекрасно работает если убрать цикл по отмене проведения ..
19 Jokerman
 
27.11.12
14:07
Запрос.ВНачалоВыборки();
Если Запрос.Получить(ВремТаблица.День,ВремТаблица.Номенклатура)=1
               ДокСписания.НайтиДокумент(Запрос.Док);
               ДокСписания.УдалитьСтроки();
Тогда
Иначе //дока нет создаем
20 Jokerman
 
27.11.12
14:07
криво вставил:
           Запрос.ВНачалоВыборки();
           Если Запрос.Получить(ВремТаблица.День,ВремТаблица.Номенклатура)=1 Тогда
               ДокСписания.НайтиДокумент(Запрос.Док);
               ДокСписания.УдалитьСтроки();
21 dedmoroz777
 
27.11.12
14:08
кто-нибудь что-нибудь понял?
22 zak555
 
27.11.12
14:08
(21) я не понимаю зачем ему что-то создавать / перезаписывать
23 zak555
 
27.11.12
14:09
но при это рассчитать итоги без всех движений
24 Jokerman
 
27.11.12
14:10
(23) нет, я отменяю проведение за определенный период доков одного вида, а ведь есть другие доки, которые делают движения
25 dedmoroz777
 
27.11.12
14:11
(20) если не хочешь учитывать движение дока, суммируй приход\расход по циклу по проводкам не плюсуя движения этого документа. зачем отменять проведение? каждая отмена проведения сбивает бух итоги
26 Jokerman
 
27.11.12
14:15
Пример: Материал - Gear Box редуктор. Приход был 22.08.12 в кол-ве 2 штук по 20 рублей, остаток сумовой 40 руб. Расход был 25.08.12 в кол-ве 2 штук,  спивается по полной. Если я повторно загружаю, то остаток конец дня 25.08.12 - 0. И ничего не считается. Поэтому отменяю проведение.
27 Jokerman
 
27.11.12
14:15
*списывается, извините
28 Jokerman
 
27.11.12
14:16
(25) вот так не хочется, время обработки увеличится ..
29 zak555
 
27.11.12
14:17
(26) повторно загружаешь ?? это как ?
30 Jokerman
 
27.11.12
14:17
Какой то ручной пересчет есть в 7-ке?
31 Jokerman
 
27.11.12
14:19
Обшая идея: сделать обработку по переносу данных из Excel в 1с. Пользователь может загрузить данные за определенный период, а потом вдруг окажется, что где-то ошибся. Тогда он может перезагрузить неправильный период заново
32 zak555
 
27.11.12
14:20
(31) так бы сразу и сказал
33 Jokerman
 
27.11.12
14:22
(37) не думал, что этом поможет лучше понять почему система себя так ведет, хотя я наверное тоже бы так докапывался
34 Jokerman
 
27.11.12
14:28
Это правда (25)? "каждая отмена проведения сбивает бух итоги". Тогда как?
35 Jokerman
 
27.11.12
14:53
Эх
36 dedmoroz777
 
27.11.12
15:13
(26) был приход 2 шт, был расход 2 шт. Остаток 0. А что должно быть по-твоему?
(28) каждый раз пересчитывать итоги будет дольше
37 Jokerman
 
27.11.12
15:23
(36) 2, ведь не надо учитывать, расход самого дока
38 Jokerman
 
27.11.12
15:46
Тогда переделаю так, процедуру расчетов остатков вынесу в модуль дока
39 Jokerman
 
27.11.12
15:54
Почему хорошие мысли приходят когда рассуждаешь сам с собой!
40 zak555
 
27.11.12
15:55
(38) ты хочешь проверку, чтобы не уйти в минус ?
41 Jokerman
 
27.11.12
16:28
(40) да + среднюю цену высчитываю
42 zak555
 
27.11.12
16:30
для ввода документа задним числом проверка на минус делается иначе
43 Jokerman
 
27.11.12
16:30
Запрос на позицию дока?
44 Jokerman
 
27.11.12
16:31
Да ладно я уже решил, в модуле документа прекрасно отрабатывает
45 Jokerman
 
27.11.12
16:32
Просто хотелось, чтобы запрос по проверке общий был, а потом посмотрел там все равно есть проверка на остаток, ну и добавил чтобы по средней сумму рассчитывала и делов ..
46 zak555
 
27.11.12
16:32
(43) в конце ветки смотри Списание "задним" числом
47 zak555
 
27.11.12
16:32
(44) как ?
48 Jokerman
 
27.11.12
16:37
Там Запрос делаю на ТекущийДокумент() и снд()
49 Jokerman
 
27.11.12
16:40
(46) Это сложные случаи у меня все проще, 1 пользователь грузит максимум раз в день движения за день. Одновременно вряд ли получится списывание
50 Jokerman
 
27.11.12
16:41
Это больше под силу 8-ой версии
51 zak555
 
27.11.12
16:43
(49) ну вот

01.01 нач остаток 0
01.01 приход1 100
01.01 расход1 100
01.01 приход2 50
01.01 расход1 45
01.01 остаток 5

и как ты будешь отрабатывать ?
52 Jokerman
 
27.11.12
16:47
Смотря где позиция моего расходного дока. Ты знаешь что если сделать запрос на ТекущийДокумент(),ТекущийДокумент() то СНД() вернет остатки до то того как текущий док отработал, а СКД() после, нас устраивает СНД().
53 Jokerman
 
27.11.12
16:49
Остаток будет если после всех манипуляций в (51) будет 105, если после Приход 250, то 250
54 zak555
 
27.11.12
16:49
я к тому, что ты приход1 меньше 100 сделать не сможешь
приход2 меньше 45
55 Jokerman
 
27.11.12
16:52
А понял, идею не так сложно нам не надо у них максимум 1 приход и максимум расход. А такие вещи пусть сами контролят, они не готовы на такие затраты, если честно еле как согласились на ту сумму которую уже поставил. Спасибо может в будущем пригодится.
56 Jokerman
 
27.11.12
16:54
(53) мыслю чуть большими цифрами подумал 1 100, 250, у нас просто другие цены, чем у вас. :)
57 zak555
 
27.11.12
16:56
(55) если конроль нужен в пределах днях -- реализация проста

в модуле дока СтатусВозврата ( глПроверкаДока(Конт) )
58 Jokerman
 
27.11.12
16:58
(57) ага пока этого хватит
59 Jokerman
 
27.11.12
17:08
Спасибо всем!!!
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.