Бухгалтерский запрос

Тема в разделе "1C и всё что с ней связано", создана пользователем Programmer_Hard, 18 сен 2009.

Статус темы:
Закрыта.
  1. Programmer_Hard

    Programmer_Hard Гость

    Мне нужно узнать все субконто(номенклатура) проводок счета 41.2 за период.
    Те нужны все проводки где в д*цензура*е или кредите фигурирует счет 41.2
    Код (Text):
    би=СоздатьОбъект("БухгалтерскиеИтоги");
    би.ИспользоватьСубконто(ВидыСубконто.Номенклатура);                    
    би.ВыполнитьЗапрос(ДатаН,ДатаК,"41.2",,,2,,"СК");
    би.ВыбратьСубконто(1);
    Пока би.ПолучитьСубконто(1)=1 Цикл
    Сообщить(би.Субконто(1));
    КонецЦикла;
    но я получаю только номенклатуру из проводок 41.2 : **
    проводки **:41.2 получается не попадают в результат бухзапроса, или может я что-то напутал.

    Перечитал еще раз о бухгалтерских итогах/запросах не нашел ответа как сделать. Получается надо выполнить еще 1 бухзапрос би.ВыполнитьЗапрос(ДатаН,ДатаК,,"41.2",,2,,"СК"); ?? Чото я сомневаюсь что так... Смотрю как в карточке счета реализовано, но пока не понимаю как )

    И еще как сделать чтобы не учитывать(или наоборот учитавать) проводки 41.2:41.2

    Заранее примного благодарен, тк с этими вопросами постоянно путаюсь..., пробел в знаниях(
     
  2. Hryv

    Hryv Гость

    Для начала можно в цикле проверять ДО() и КО() и выводить разные сообщения

    И я бы делал би.ВыполнитьЗапрос(ДатаН,ДатаК,"41.2",,,1,,"СК");

    Правда тогда полезут еще остатки, но их можно отбросить в теле цикла

    Можно еще попробовать разворачивать не по субконто, а по периоду "проводка"

    Не совсем просто понятно для какой цели, поэтому трудно дать конкретный совет
     
  3. Programmer_Hard

    Programmer_Hard Гость

    Цель: получить список всех товаров которые участвовали в розничной торговле(участвовали в проводках со счетом 41.2) за определенный период (в моем случае с начала текущего года). Те по сути мне нужно тоже, что показывает карточка счета 41.2 с "показывать обороты за период"
     
  4. KiR

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

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

    Programmer_Hard Гость

    Код (Text):
        би=СоздатьОбъект("БухгалтерскиеИтоги");
    би.ИспользоватьСубконто(ВидыСубконто.Номенклатура);                    
    би.ВыполнитьЗапрос("01.01.09","02.01.09","41.2",,,1,,"СК");
    би.ВыбратьСубконто(1);
    Пока би.ПолучитьСубконто(1)=1 Цикл
    ИспользуемыеТовары.ДобавитьЗначение(би.Субконто(1),би.Субконто(1));
    Сообщить (би.Субконто(1));  // показывает нужную мне номенклатуру
    КонецЦикла;
    в этом случае он расчитывает все остатки по счету, а это куча номенклатуры используемой еще до 01.01.09.
    и мне выводится весь список номенклату, а не тот что участвует в период "01.01.09","02.01.09".

    ПС: запрос би.ВыполнитьЗапрос("01.01.09","02.01.09","41.2",,,2,,"СК"); выполняется как надо, но только наполовину, он берет проводки 41.2:xx за указанный период и не берет xx:41.2.
     
  6. KiR

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

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    смотри
    если ты устанавливаешь 2 - то он и выдает тебе операции между считами. так как счет ты указал, а коррСчет - нет - вот он и выдал тебе "половину" Если и там и там укажешь "41.2" - соотвественно выдаст только обороты по ДТ41.2-КТ41.2
    Соотвественно тебе либо нужно выполнить 2 запроса и результаты слить куда-нить в табличку, либо же не указывать счета и написать условия типа
    если (би.счет.код = 41.2) или (би.коррсчет.код = 41.2) тогда
    ИспользуемыеТовары.ДобавитьЗначение(би.Субконто(1),би.Субконто(1));
    Сообщить (би.Субконто(1)); // показывает нужную мне номенклатуру
    конецЕсли;
     
  7. Hryv

    Hryv Гость

    Я же про это писал
    Остатки нужно отфильтровать
    Например перед ИспользуемыеТовары.ДобавитьЗначение написать:
    Код (Text):
    Если (би.ДО("С")=0) и (би.КО("С")=0) и (би.ДО("К")=0) и (би.КО("К")=0) Тогда
    Продолжить;
    КонецЕсли;
     
  8. Programmer_Hard

    Programmer_Hard Гость

    Я чтото запутался....
    Код (Text):
        би=СоздатьОбъект("БухгалтерскиеИтоги");
    би.ИспользоватьСубконто(ВидыСубконто.Номенклатура);                    
    би.ВыполнитьЗапрос("01.01.09","05.01.09",,,,2,,"СК");  //
    би.ВыбратьСубконто(1);        
    Пока би.ПолучитьСубконто(1)=1 Цикл   
    Сообщить (строка(би.счет.код) + " _ " + строка(би.корсчет.код));
    Если (би.счет.код = 41.2) или (би.корсчет.код = 41.2) Тогда       
    ИспользуемыеТовары.ДобавитьЗначение(би.Субконто(1),би.Субконто(1));
    Сообщить (би.Субконто(1));
    КонецЕсли 
    КонецЦикла;
    Чтото нето, выводит строки "41 _ ",
     
  9. KiR

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

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    а попробуй так: вместо Сообщить (строка(би.счет.код) + " _ " + строка(би.корсчет.код));
    Код (Text):
    Стр = строка(би.счет.код) + " _ " + строка(би.коРРсчет.код);
    Сообщить(Стр);
     
  10. kaa

    kaa Гость

    если честно читал читал, ни чего не понял:
    би=СоздатьОбъект("БухгалтерскиеИтоги");
    би.ИспользоватьСубконто(ВидыСубконто.Номенклатура);
    би.ВыполнитьЗапрос("01.01.09","02.01.09","41.2");
    би.ВыбратьСубконто(1);
    Пока би.ПолучитьСубконто(1)=1 Цикл

    Сообщить (би.Субконто(1)+" Д*цензура*:"+би.ДО("С")+" Кредит:"+би.КО("С"));
    КонецЦикла;

    И все должно работать. Это с суммами. Аналогично с количеством если ведется количественный учет на счете по субконто
     
  11. vitfil

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

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Можно еще и так. Если не требуются начальные и конечные сальдо, а также сворачивание по субконто, будет работать быстрее бухитогов.

    Код (Text):
    Опер = СоздатьОбъект("Операция");
    Опер.ВыбратьОперацииСПроводками(НачДата,КонДата,"41.2");
    Пока Опер.ПолучитьПроводку() = 1 Цикл
    ...
    КонецЦикла;
     
  12. Hryv

    Hryv Гость

    Отличный вариант предложил vitfil
    Тем более внутри цикла можно заполнить ТЗ и потом сортировать/сворачивать ее как угодно

    Единственный минус - нет остатков, но они в этом случае похоже и не нужны
     
  13. vitfil

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

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Ну так а я что сказал:
     
  14. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Более того, в таком варианте можно выбрать проводки только по д*цензура*у или кредиту
     
  15. vitfil

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

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Ну, задача как раз стояла, чтобы выбрать и те, и другие...
    А еще, конечно же, можно прямым запросом из таблицы проводок это дело вытянуть. Будет еще быстрее.
     
  16. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Да, невнимательно я прочитал, что-то взбрело в голову, что ему нужны только д*цензура*овые
     
  17. Programmer_Hard

    Programmer_Hard Гость

    Спасибо всем! вывели таки на путь истинный )
    Итоговый скрипт который дает мне то, что надо:
    Код (Text):
        Опер = СоздатьОбъект("Операция");
    Опер.ВыбратьОперацииСПроводками("01.01.09","01.09.09","41.2");
    Пока Опер.ПолучитьПроводку() = 1 Цикл  
    Если Опер.Кредит.Счет=счетпокоду("41.2") Тогда
    Если ПустоеЗначение(Опер.Кредит.Номенклатура)=1 тогда продолжить; КонецЕсли;
    ИспользуемыеТовары.ДобавитьЗначение(Опер.Кредит.Номенклатура,Опер.Кредит.Номенклатура);
    Иначе
    Если ПустоеЗначение(Опер.Д*цензура*.Номенклатура)=1 тогда продолжить; КонецЕсли;           
    ИспользуемыеТовары.ДобавитьЗначение(Опер.Д*цензура*.Номенклатура,Опер.Д*цензура*.Номенклатура);
    КонецЕсли;
    КонецЦикла;
     
  18. vitfil

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

    Регистрация:
    2 апр 2004
    Сообщения:
    2.070
    Симпатии:
    0
    Programmer_Hard, замечательственно!
     
Загрузка...
Похожие Темы - Бухгалтерский запрос
  1. olga13
    Ответов:
    10
    Просмотров:
    4.610
  2. olga13
    Ответов:
    3
    Просмотров:
    3.092
  3. mrtg
    Ответов:
    14
    Просмотров:
    210
  4. erdi
    Ответов:
    1
    Просмотров:
    112
  5. lmike
    Ответов:
    23
    Просмотров:
    735
Статус темы:
Закрыта.

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