|
v7: Найти документ... | ☑ | ||
---|---|---|---|---|
0
DES
31.01.14
✎
21:30
|
Как мне найти последний платежный документ по контрагенту, если известно что на бухсчете ХХХ.Y по субконто этого контрагента есть положительное СКК() ?
|
|||
1
SnarkHunter
31.01.14
✎
21:37
|
Какая связь между поиском документа и наличием сальдо на тайном счете?
|
|||
2
NikVars
31.01.14
✎
21:52
|
(0) Ты про платежку?! Так платежка не проводится. Тебе нужно смотреть документ Выписка. А в выписке как может быть ссылка на документ Платежное поручение (у аккуратных бухов), так и может отсутствовать (у всех остальных бухов).
|
|||
3
DES
31.01.14
✎
22:23
|
я в курсе про выписку
я запутался в методах выполнитьЗапрос... |
|||
4
DES
31.01.14
✎
22:25
|
можно же получить проводки до какай-то даты по счету и контрагенту
и перебирая проводки найти по какому документы они выполнены Не получается. Операция пустая выдается. |
|||
5
NikVars
31.01.14
✎
22:29
|
(3) Та-а-а-а-к... Вот и слова про запрос всплыли...
А может к 100 посту и сам текст запроса появится, а может и не появится... Если тебе его лень писать, то и мне лень. Тогда дай поговорим об этом. (4) В запросе можно получить, если умеешь, и отвечаю, если спрашивешь. |
|||
6
Voronve
31.01.14
✎
22:35
|
(4) Ты не мудри... ты запрос покажи
|
|||
7
DES
31.01.14
✎
22:59
|
БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьСубконто("Контрагенты",Контрагент,2); БИ.ВыполнитьЗапрос(,ДатаДок, КорСчет,,,,,1); |
|||
8
DES
01.02.14
✎
16:33
|
ну подскажите или как ?
|
|||
9
2S
01.02.14
✎
16:42
|
Платежный документ это что? он проводки формирует?
|
|||
10
DES
01.02.14
✎
16:53
|
конечно
Да и не важно какой документ. как выйти да последний документ сделавший проводку по счету ? |
|||
11
Джордж1
01.02.14
✎
16:55
|
БИ.ВыполнитьЗапрос(,ДатаДок, КорСчет,,,,,1); - сделай тут группировку по операциям и укажи конкретный счет (счета)
|
|||
12
2S
01.02.14
✎
16:57
|
(10) последний, хм
запрос с периодичностью "Операция", потом выборка по операции, все в тз, сортировать по дате. |
|||
13
Джордж1
01.02.14
✎
16:58
|
(12)я уже не помню, разве нельзя перебрать периоды в обратном порядке?
|
|||
14
DES
01.02.14
✎
16:59
|
покажите как дальше после ВыполнитьЗапрос, у меня циклы пустые получаются
|
|||
15
Джордж1
01.02.14
✎
16:59
|
(14)Ну почитай справку что-ли
|
|||
16
2S
01.02.14
✎
17:00
|
(13) нет
|
|||
17
DES
01.02.14
✎
17:01
|
да блин, какой ты умный
|
|||
18
2S
01.02.14
✎
17:02
|
у тебя писюн больше моего, 9 лет с гаком. Чем ты занимался это время?
|
|||
19
DES
01.02.14
✎
17:02
|
какой тебе дело ?
|
|||
20
2S
01.02.14
✎
17:03
|
Молдавии привет
|
|||
21
DES
01.02.14
✎
17:03
|
почему вы как бабы базарные, обо всем трандите, только не по делу...
|
|||
22
DES
01.02.14
✎
17:04
|
если не знаете, то не вылазьте.
|
|||
23
Torquader
01.02.14
✎
19:56
|
Кстати, на счету может что-то появиться, если мы или на него переводим положительную сумму или с него (тогда он коррсчёт) переводим отрицательную сумму.
Потом, тип итогов нужно ставить в 2 (обороты между счетами). И потом, мне кажется, что проще использовать "ВыбратьОперацииСПроводками", так как там проще получить то, что нужно. |
|||
24
DES
01.02.14
✎
21:46
|
(23) спс
|
|||
25
DES
02.02.14
✎
20:44
|
есть проводка кредит - дебет сч.200 - сч.300.
по счету 300 есть субконто. подскажите как отобрать проводки по определенному субконто ? |
|||
26
Torquader
02.02.14
✎
21:23
|
Опер=СоздатьОбъект("Операция");
Опер.ИспользоватьСубконто("ИмяСубконто",ЗначениеСубконто); Опер.ВыбратьОперацииСПроводками(НачалоПериода,КонецПериода,СчетПоКоду("200"),СчетПоКоду("300"),3); Пока Опер.ПолучитьОперацию()=1 Цикл // здесь мы получаем операции, которые подходят под условие Если Опер.ВыбратьПроводки()=1 Тогда Пока Опер.ПолучитьПроводку()=1 Цикл Если Опер.Дебет.Счет<>СчетПоКоду("200")Тогда Продолжить; КонецЕсли; // здесь мы выбираем проводки операции для проверки КонецЦикла; КонецЕсли; КонецЦикла; |
|||
27
DES
03.02.14
✎
16:15
|
а зачем вот это
Если Опер.Дебет.Счет<>СчетПоКоду("200")Тогда |
|||
28
DES
03.02.14
✎
16:54
|
так у меня и было сделано, но не выбирает.
1.Пока Операция.ПолучитьОперацию()=1 Цикл 2.Если Операция.ВыбратьПроводки()=1 Тогда 3.Пока Операция.ПолучитьПроводку()=1 Цикл под отладчиком смотрю: на 1 строке дебет и кредит - то что нужно на 2 строке тоже на 3 - неопределено. |
|||
29
DES
03.02.14
✎
16:55
|
и в последний цикл не заходит
|
|||
30
NikVars
03.02.14
✎
16:57
|
(28) Покажи целиком запрос, как у тебя сделано.
Ты в этой ветке не можешь понять, что никто кроме тебя твой экран не видит. |
|||
31
DES
03.02.14
✎
17:03
|
как в (26) сделано
|
|||
32
NikVars
03.02.14
✎
17:05
|
(31) Ясно. Возись сам.
|
|||
33
DES
03.02.14
✎
17:08
|
(32) что тебе ясно?
говорю же 1 в 1 сделано при выполнении строки Пока Опер.ПолучитьПроводку()=1 Цикл в Отладчике Операция.Дебет.Счет = Ошибка в выражении! Операция.Кредит.Счет = Ошибка в выражении! Операция.Содержание = " " |
|||
34
DES
03.02.14
✎
17:24
|
я так понял что
Пока Опер.ПолучитьОперацию()=1 Цикл лишнее ? |
|||
35
пипец
03.02.14
✎
17:34
|
СКК это результат выполнения разных операций и найти документ может быть не тривиально - так как это может быть частичные оплаты / документы движения
|
|||
36
DES
03.02.14
✎
17:36
|
ерунда какая то
пролетает мимо первой проводки. |
|||
37
DES
03.02.14
✎
17:39
|
работает как описано в (28)
почему так ? |
|||
38
DES
03.02.14
✎
17:46
|
до строки
Пока Операция.ПолучитьПроводку()=1 Цикл в переменных Операция.Дебет.Счет Операция.Кредит.Счет Операция.Документ то что нужно, т.е. первый документ из выборки. после выполнения строки Пока Операция.ПолучитьПроводку()=1 Цикл второй документ выборки, а первый теряется. |
|||
39
DES
03.02.14
✎
17:50
|
первый документ - это выписка по банку, приход на счет контрагента
последующие это расходы со счета по контрагенту. может от этого зависить ? |
|||
40
Torquader
03.02.14
✎
20:52
|
(39) Ты так сильно не переживай, но первый цикл находит операции, которые подходят под условие.
Второй цикл я написал по памяти, так как был уверен, что операция содержит проводки и не факт, что будет спозиционирована на той, которая нужна. Видимо, второй цикл не нужен. Просто у меня выбирались все операции и все проводки по ним - было два цикла, а с отбором я никогда не работал, так подробно. |
|||
41
Torquader
03.02.14
✎
20:54
|
+
Просто я написал алгоритм, прогнал его на тесте и посмотрел, что он находит нужную проводку и пропускает остальные - дальше не копал. Между прочим, у кого-то полоска опыта больше, так что вопросов должно быть меньше. |
|||
42
Torquader
03.02.14
✎
20:58
|
+
Просто попытка сделать через БухгалтерскиеИтоги явно напорется на камни, так как итоги они по своей сути содержат только итоговые. |
|||
43
Torquader
03.02.14
✎
21:06
|
Так что попробуй без второго цикла вообще и расскажешь, что там получилось.
Выборка, то, по идее, будет идти по журналу проводок - мне только интересно, если у одной операции две проводки попадают под нужные характеристики - она два раза попадёт или как - сегодня на тестовой проверю. P.S. просто, проводки созданы не только для того, чтобы бухи пялились в окно проводок и чувствовали себя как дома. |
|||
44
Torquader
04.02.14
✎
01:03
|
В общем так.
Если хочется выбирать операции, то мы выполняем цикл по операциям (через получить операцию), но тогда мы не видим несколько проводок в одной операции. Если же мы хотим видеть только проводки, то выполняем цикл через ПолучитьПроводку() причём не вложенный, а один. Тогда мы получаем все проводки, удовлетворяющие нашему запросу, даже если их несколько в одной операции. Опер=СоздатьОбъект("Операция"); лспр1=СоздатьОбъект("Справочник.Спр1"); лспр1.НайтиПоКоду(1); Опер.ИспользоватьСубконто("Спр1",лспр1.ТекущийЭлемент()); Опер.ВыбратьОперацииСПроводками('01.01.14',ТекущаяДата(),СчетПоКоду("111"),СчетПоКоду("222"),3); //Пока Опер.ПолучитьОперацию()=1 Цикл //Сообщить("Вот что нашли:"+Строка(Опер.Документ)); Пока Опер.ПолучитьПроводку()=1 Цикл Сообщить("Проводка:"+Строка(Опер.Кредит.Счет)+"=>"+Строка(Опер.Дебет.Счет)+" Документ:"+Строка(Опер.Документ)+" Операция:"+Строка(Опер.ДатаОперации)); КонецЦикла; //КонецЦикла; Вот так прекрасно работает. Удачи. |
|||
45
DES
04.02.14
✎
21:06
|
спс, щас попробую
|
|||
46
DES
04.02.14
✎
23:24
|
да, похоже что так то что нужно.
|
|||
47
Torquader
04.02.14
✎
23:44
|
Там получается, что один и тот же объект используется для поиска проводок и операций, а дальше, что мы следующее хотим получить, ту функцию и вызываем.
Причём, через проводки честно выбирало две одинаковых проводки в одной операции. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |