Имя: Пароль:
1C
1C 7.7
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
Там получается, что один и тот же объект используется для поиска проводок и операций, а дальше, что мы следующее хотим получить, ту функцию и вызываем.
Причём, через проводки честно выбирало две одинаковых проводки в одной операции.