Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: оборот между счетами в разрезе
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Пользователю 1С 7.7 > 1С Бухгалтерия 7.7 для Украины
Pepe
Как програмно получит оборот между счетами в разрезе затраты? Например, надо получить оборот между 92 и 31 счетами в разрезе вида затраты.
Acid
почему не хочешь использовать конструктор отчетов? религия? smile.gif
Zaval
Отчет "Анализ субконто" - может достаточно будет только настроить и сохранить настройки)
Fynjy
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьСубконто(ВыбВидСубконто1, ВыбСубконто1, 1);
Ит.ИспользоватьКорСубконто(ВыбКорВидСубконто1, ВыбКорСубконто1, 1);
Ит.ВыполнитьЗапрос(ВыбНачПериода, ВыбКонПериода, ВыбСчет, ВыбКорСчет,, 2,, "С"); //2 важный параметр!!!

Пока Ит.ПолучитьСубконто(ВыбВидСубконто1) = 1 Цикл
КонецЦикла;

Как то так ...
Pepe
Спасибо всем отзывчивым.
Zaval, Кузьмич, отчет сложный, с разной аналитикой, более 40 строк, много разных оборотов по разным счетам. Конструктор, встроенные отчеты не катят.
Fynjy идея хороша, но много проверок и соответственно, если много разных счетов и субконто, думал придумать функцию типа стандартной ОБ("счет1","Счет2",Субконто,Значение субконто). Думаю как реализовать и получится ли такое.
Acid
а вот ты попробуй настроить из конструктора "Шахматку", будешь удивлен.)
Pepe
Цитата(Кузьмич @ 18.03.10, 18:29) необходимо зарегистрироваться для просмотра ссылки
а вот ты попробуй настроить из конструктора "Шахматку", будешь удивлен.)

Не спорю, но вот получится ли получить результат в конструкторе по такой формуле:
БИ.ОБ("92","63")+(БИ.ОБ("92","68")+БИ.ОБ("949","63")+(БИ.ОБ("949","68")+(БИ.ОБ("23","91") для конкретного вида затрат?
Вообще-то мне непонятна работа функции ОБ(), сам механизм.
Acid
нет. не так. Вот эта твоя конструкция ( ОБ("92","68") )в разрезе субконто не отработает.

сначала обходятся субконто, потом счета.
при обходе каждого счета, обходятся корреспондирующие счета (можно сразу указать, а можно и по всем).
А потом проверяешь:
 Если Ит.КорСчет=СчетПоКоду("631") Тогда
   НашДО=Ит.КорДО();
КонецЕсли;

*шахматка как раз и может хороший запрос сделать. немного подправить конечно нужно будет.
Fynjy
На 8 еще не перешли, а 7.7 уже забыли ...
ЗЫ: ответ мой полностью соответствует вопросы ... Нужно точнее давать вопрос ... Что как и где ... Можно без запроса получить обороты, если заранее известно субконто с помощью - ДО() и КО() ...
Pepe
Цитата(Кузьмич)
, спс. Вот эта твоя конструкция ( ОБ("92","68") )в разрезе субконто не отработает

+1
Цитата(Fynjy)
Можно без запроса получить обороты, если заранее известно субконто с помощью - ДО() и КО() ...

Извени, что плохо обьясняю. Мне выдали задание (ГБух). С меня плохой бухгалтер, вот я и пытаюсь узнать механизм функции ОБ(), можно ли его реализовать через функции ДО() и КО(), чтоб в конечном итоге получить конструкцию из оборотов в разрезе конкретного субконто. Подскажи плз. как реализовать ОБ() через ДО() и КО().
Pepe
Цитата(Кузьмич @ 19.03.10, 10:37) необходимо зарегистрироваться для просмотра ссылки

Создал функцию для расчета оборотов между счетами в разрезе субконто
Функция Рассчитать(Счет1,Счет2,ВидЗатрат)
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Спр=СоздатьОбъект("Справочник.ВидыЗатрат");
    Спр.НайтиПоКоду(ВидЗатрат);
    ВидЗатрат=Спр.Наименование;
    Ит.ИспользоватьСубконто(ВидыСубконто.ВидыЗатрат,ВидЗатрат,2);
    Ит.ВыполнитьЗапрос(Дата1,Дата2,Счет1,Счет2,,2,,"С");
    Оборот = Ит.КорДО();
    Возврат Оборот;
КонецФункции

Работает только пошагово в отладчике. Если вызываю без останова - пишет нули КорДО().
Fynjy
ВидЗатрат=Спр.Наименование; - не правильно
ВидЗатрат=Спр.ТекущийЭлемент(); - правильно ...
Pepe
Цитата(Fynjy @ 22.03.10, 18:29) необходимо зарегистрироваться для просмотра ссылки
ВидЗатрат=Спр.ТекущийЭлемент(); - правильно ...

+1, спс., видно к вечеру мозги...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.