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

Тема в разделе "1C и всё что с ней связано", создана пользователем KiR, 10 дек 2008.

  1. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Мне нужно отобрать за период операции (или хотя бы одну) в проводках которой присутствует определенный договор. Как это сделать? Если через черный запрос - то пожалуйста приведите пример текста подобного запроса. Заранее спасибо
     
  2. vitfil

    vitfil IT-интегратор

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

    KiR НЕ шибка опытный програмер)
    1C Team

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

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

    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; ""По Чеку"" ");
     
  5. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Народ, help. Подскажите плиз где я ошибся:
    Код (Text):
    Пока ТЗОбработка.ПолучитьСтроку()=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
     
  6. kaa

    kaa Гость

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

    KiR НЕ шибка опытный програмер)
    1C Team

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

    vitfil IT-интегратор

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

    KiR НЕ шибка опытный програмер)
    1C Team

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

    vitfil IT-интегратор

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
  11. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Блин. плохо. а как этого избежать?
    задание вот какое. у мя есть договор. нужно выбрать первую попавшуюся операцию за период в котором есть этот договор. а из операции нужно выбрать определенную проводку, но в этой проводке нет договора - он указан в другой проводке. как быть в таком случае?
     
Загрузка...

Поделиться этой страницей