• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы KiR
  • Дата начала
K

KiR

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

vitfil

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

KiR

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

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

ania

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

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

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

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

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

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

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

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

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

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

Пример:

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

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

KiR

Народ, 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

kaa

ВыбратьОперацииСПроводками(Дата(ДатаДог),КонМесяца(ДатаСверки),
Сдесь обязательное указание счета и коррсчета, и проводки будут выбиратся по этим параметрам
сделай проще
Опер.ВыбратьОперации(НачДата,КонДата);
Пока Опер.ПолучитьОперацию()=1 Цикл
Опер.ВыбратьПроводки();
и т.д.
 
K

KiR

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

vitfil

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

KiR

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

KiR

Блин. плохо. а как этого избежать?
задание вот какое. у мя есть договор. нужно выбрать первую попавшуюся операцию за период в котором есть этот договор. а из операции нужно выбрать определенную проводку, но в этой проводке нет договора - он указан в другой проводке. как быть в таком случае?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!