1c7 отбор операции, в проводках которой содержиться определенный догов

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#1
Мне нужно отобрать за период операции (или хотя бы одну) в проводках которой присутствует определенный договор. Как это сделать? Если через черный запрос - то пожалуйста приведите пример текста подобного запроса. Заранее спасибо
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#2
Код:
Опер = СоздатьОбъект("Операция");
Опер.ИспользоватьСубконто(...); //Указываем отбор по нужному договору
Опер.ВыбратьОперацииСПроводками(...); //Выборка операций
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#3
Спасибо.
Подскажи плиз еще как мне отобрать проводки, а то что-то не разобался с синтакс помощьником.
ВыбратьОперацииСПроводками(<?>,,,,,)
Синтаксис:
ВыбратьОперацииСПроводками(<НачалоПериода>,<КонецПериода>,<Фильтр>,<Валюта>,<ПланСчетов>,<РазделительУчета>)
<Фильтр> - условие отбора проводок. Необязательный параметр. Здесь задаются критерии отбора проводок для включения в выборку. Если параметр не заполнен, в выборку включаются все проводки. В качестве значения данного параметра можно передавать строку, в которой могут находиться одна или несколько корреспонденций счетов или символьных строк, разделяемых точкой с запятой '';''.

вообщем мне нужны такие проводки 76.5-76.5, 51-76.5 и 76.5-90.1.1
 
A

ania

#4
как мне отобрать проводки
Примеры:

50
— все проводки со счетом 50;

50, *
— все проводки в д*цензура* 50 счета;

* , 51
— все проводки с кредита 51 счета;

50, 51
— все проводки в д*цензура* 50 счета с кредита 51;

51; 52
— все проводки со счетом 51 или счетом 52;

46, 68.2
— все проводки в д*цензура* 46 счета с кредита 68.2;

"бумага"
— все проводки, содержащие в содержании операции или в суб­конто или в реквизитах слово «бумага»;

"бумага"; "картон"
— все проводки, содержащие в содержании операции или в субконто или в реквизитах слово «бумага» или слово «картон»;

*, 46; "бумага"
— все проводки по кредиту 46 счета, содержащие в содер­жании операции или в субконто или в реквизитах слово «бумага»;

Пример:

Опер = СоздатьОбъект("Операция");

Опер.ВыбратьОперацииСПроводками(ДатаНач, ДатаКон, "50, 51; ""По Чеку"" ");
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#5
Народ, help. Подскажите плиз где я ошибся:
Код:
Пока ТЗОбработка.ПолучитьСтроку()=1 Цикл
ДатаДог = Лев(ТЗОбработка.Договор.Наименование,2)+"."+Сред(ТЗОбработка.Договор.Наименование,3,2)+"."+Сред(ТЗОбработка.Договор.Наименование,5,2);
Опер = СоздатьОбъект("Операция");
Опер.ИспользоватьСубконто(ВидыСубконто.Договоры,ТЗОбработка.Договор); 
Если Опер.ВыбратьОперацииСПроводками(Дата(ДатаДог),КонМесяца(ДатаСверки), ) = 1 Тогда; 			
Если Опер.ПолучитьОперацию()=1 Тогда
Опер.ВыбратьПроводки(); 
Пока Опер.ПолучитьПроводку() = 1 Цикл 
Если Лев(ТЗОбработка.Номенклатура,3) = "Пок" Тогда
Если (Опер.Д*цензура*.Счет.Код = "51") И (Опер.Кредит.Счет.Код = "76.5") Тогда 	
Если ТЗ.НайтиЗначение(Опер.Д*цензура*.Контрагенты,СТЗ,"Контрагент") = 1 Тогда
ТЗ.ПолучитьСтрокуПоНомеру(СТЗ);
ТЗ.Покупатели = ТЗОбработка.Остаток*(-1)+ТЗ.Покупатели; 
КонецЕсли;	
ИначеЕсли (Опер.Д*цензура*.Счет.Код = "76.5") И (Опер.Кредит.Счет.Код = "90.1.1") Тогда
Если ТЗ.НайтиЗначение(Опер.Д*цензура*.Контрагенты,СТЗ,"Контрагент") = 1 Тогда
ТЗ.ПолучитьСтрокуПоНомеру(СТЗ);
ТЗ.Покупатели = ТЗОбработка.Остаток*(-1)+ТЗ.Покупатели; 
КонецЕсли;
ИначеЕсли (Опер.Д*цензура*.Счет.Код = "76.5") И (Опер.Кредит.Счет.Код = "76.5") Тогда
Если Опер.Кредит.Контрагенты <> Опер.Д*цензура*.Контрагенты Тогда
Если ТЗ.НайтиЗначение(Опер.Кредит.Контрагенты,СТЗ,"Контрагент") = 1 Тогда
ТЗ.ПолучитьСтрокуПоНомеру(СТЗ);
ТЗ.Покупатели = ТЗОбработка.Остаток+ТЗ.Покупатели; 
КонецЕсли;
КонецЕсли;
КонецЕсли;	
Иначе
Если (Опер.Д*цензура*.Счет.Код = "76.5") И (Опер.Кредит.Счет.Код = "51") Тогда 
Если ТЗ.НайтиЗначение(Опер.Кредит.Контрагенты,СТЗ,"Контрагент") = 1 Тогда
ТЗ.ПолучитьСтрокуПоНомеру(СТЗ);
ТЗ.Продавцы = ТЗОбработка.Остаток+ТЗ.Продавцы; 
КонецЕсли;
ИначеЕсли (Опер.Д*цензура*.Счет.Код = "76.5") И (Опер.Кредит.Счет.Код = "90.1.1") Тогда 
Если ТЗ.НайтиЗначение(Опер.Д*цензура*.Контрагенты,СТЗ,"Контрагент") = 1 Тогда
ТЗ.ПолучитьСтрокуПоНомеру(СТЗ);
ТЗ.Продавцы = ТЗОбработка.Остаток+ТЗ.Продавцы; 
КонецЕсли;
ИначеЕсли (Опер.Д*цензура*.Счет.Код = "76.5") И (Опер.Кредит.Счет.Код = "76.5") Тогда 
Если Опер.Кредит.Контрагенты <> Опер.Д*цензура*.Контрагенты Тогда
Если ТЗ.НайтиЗначение(Опер.Д*цензура*.Контрагенты,СТЗ,"Контрагент") = 1 Тогда
ТЗ.ПолучитьСтрокуПоНомеру(СТЗ);
ТЗ.Продавцы = ТЗОбработка.Остаток*(-1)+ТЗ.Продавцы; 
КонецЕсли;	
КонецЕсли;	
КонецЕсли;
КонецЕсли;	
КонецЦикла;
КонецЕсли;	
КонецЕсли; 
КонецЦикла;
Проблема заключается в том что когда делаешь Опер.ВыбратьПроводки(); ваще непонятно как выбирает, а если закоментить то Пока Опер.ПолучитьПроводку() = 1 Цикл будет находить всего одну проводку. Если глазками смотреть - их в конкретной операции 4
 
K
#6
ВыбратьОперацииСПроводками(Дата(ДатаДог),КонМесяца(ДатаСверки),
Сдесь обязательное указание счета и коррсчета, и проводки будут выбиратся по этим параметрам
сделай проще
Опер.ВыбратьОперации(НачДата,КонДата);
Пока Опер.ПолучитьОперацию()=1 Цикл
Опер.ВыбратьПроводки();
и т.д.
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#7
kaa, погоди. во первых мне нужно чтобы отобрались только те оперкции, в проводках которой есть документ. А при Опер.ВыбратьОперации(НачДата,КонДата); не работает Опер.ИспользоватьСубконто(ВидыСубконто.Договоры,ТЗОбработка.Договор); не работает Или ты предлагаешь отбирать все операции, а потом перелапачивать их сначала на наличие договора, а уже потом на те данные которые мне нужны?
и во-вторых:
ВыбратьОперацииСПроводками(<?>,,,,,)
Синтаксис:
ВыбратьОперацииСПроводками(<НачалоПериода>,<КонецПериода>,<Счет>,<КорСчет>,<Флаг>,<Валюта>,<ПланСчетов>,<РазделительУчета>)
Назначение:
Открывает выборку операций с проводками за указанный период. В данном варианте основные условия отбора задаются указанием счета и корреспондирующего счета.
 

vitfil

IT-интегратор
02.04.2004
2 062
0
#8
Код:
Опер = СоздатьОбъект("Операция");
Пока ТЗОбработка.ПолучитьСтроку()=1 Цикл
Опер.ИспользоватьСубконто(ВидыСубконто.Договоры,ТЗОбработка.Договор);
Опер.ВыбратьОперацииСПроводками(ДатаДог,КонМесяца(ДатаСвертки)); //Кстати, в вашем примере вы какую-то лабуду пишите в ДатаДог
Опер.ВыбратьПроводки();
Пока Опер.ПолучитьПроводку() = 1 Цикл
//Тут делаете, что хотите с проводками
КонецЦикла;
КонецЦикла;
Прошу обратить внимание, что ВыбратьОперации() и ПолучитьОперацию() НЕ ТРЕБУЕТСЯ!
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#9
vitfil ясненько. скажи тогда, пожауйста, еще такую вещь - Опер.КоличествоПроводок()=4, а Цикл Пока Опер.ПолучитьПроводку() = 1 проходит всего один раз. Опер.ИспользоватьСубконто(ВидыСубконто.Договоры,ТЗОбработка.Договор); - сразу чтоли отсекает все остальные проводки в оперкции, в которых нет такого договора?
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#11
Блин. плохо. а как этого избежать?
задание вот какое. у мя есть договор. нужно выбрать первую попавшуюся операцию за период в котором есть этот договор. а из операции нужно выбрать определенную проводку, но в этой проводке нет договора - он указан в другой проводке. как быть в таком случае?