Имя: Пароль:
1C
1С v8
Как получить оборот по счету в целом?
0 mdv92
 
04.11.11
16:22
мНачДата    = НачалоГода(Дата);
   мКонДата    = КонецМесяца (Дата);
   мБухИтоги = Обработки.БухгалтерскиеИтоги.Создать();
   мБухИтоги.РассчитатьИтоги("Хозрасчетный", "ОборотКт", "Сумма", "Счет", мНачДата, мКонДата, ,"90.01.1", , , , , , );    
   СуммаВыручки = мБухИтоги.ПолучитьИтог("ОборотКт", "Счет", "90.01.1");  
Написала для 8!! помогите, кто чем может!
1 Живой Ископаемый
 
04.11.11
16:25
для в8 ответ один - запросом.
2 mdv92
 
04.11.11
16:26
Запрос86 = Новый Запрос;
   Запрос86.Текст =    
   "ВЫБРАТЬ
   |    ХозрасчетныйОбороты.Счет,
   |    ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаОборотКт
   |ИЗ
   |РегистрБухгалтерии.Хозрасчетный.Обороты(&НачГраница, &КонГраница, Период, Счет = &Счет, ,) КАК ХозрасчетныйОбороты
   |";
   Запрос86.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("86.02"));
   Запрос86.УстановитьПараметр("НачГраница",      НачДата);
   Запрос86.УстановитьПараметр("КонГраница",      КонДата);
   РезультатЗапроса = Запрос86.Выполнить().Выгрузить();
   СуммаПожертвований=РезультатЗапроса[0].СуммаОборотКт;
3 mdv92
 
04.11.11
16:26
Так правильно, или криво?
4 Живой Ископаемый
 
04.11.11
16:26
цитат из посоветованной книжки Габца:


i Как получить обороты по счету?
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|    ХозрасчетныйОбороты.СуммаОборотДт,
|    ХозрасчетныйОбороты.СуммаОборотКт
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, Период, Счет = &Счет, , , , ) КАК ХозрасчетныйОбороты";

Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонПериода);
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);

РезультатЗапроса = Запрос.Выполнить();
5 mdv92
 
04.11.11
16:27
А через обработку? Что я не так написала? Мне так больше нравится!
6 Живой Ископаемый
 
04.11.11
16:27
Правильно
7 mdv92
 
04.11.11
16:27
(4) Ну так я так и сделала!
8 GROOVY
 
04.11.11
16:28
Счет В ИЕРАРХИИ(&Счет)
9 Живой Ископаемый
 
04.11.11
16:28
2(5) всем плевать что вам больше нравится.. я например не знаю что эта обработка делает.. это в какоой-то типовой? во всех? все эту обработку знают и знаю как она работает?
10 Живой Ископаемый
 
04.11.11
16:31
Если хотите через обработку, то не поленитесь прочитать фунцию которая сделает то что вы хотите:


// Функция позволяет рассчитать и получить требуемый оборот в соответствии с указанными фильтрами.
// При этом не требуется каких-либо предварительных расчетов итогов.
//
// Параметры:
//
//  РегистрБухгалтерии - ОбъектМетаданных или Строка или Число - регистр, имя или индекс регистра
//                       бухгалтерии, для которого рассчитывается оборот.
//                       Если не указан, то используется первый из регистров бухгалтерии, (в порядке,
//                       как они указаны в метаданных).
//
//  ИмяРесурса         - Строка - имя ресурса регистра бухгалтерии, по которому надо получить оборот.
//
//  ДтКт               - Строка - какой оборот требуется получить.
//                       Возможные значения:
//                         Дт - будет рассчитан дебетовый оборот.
//                         Кт - будет рассчитан кредитовый оборот.
//                         Пустая строка - будет рассчитан дебетовый минус кредитовый оборот.
//
//  НачалоПериода      - Дата, МоментВремени, Граница - начало периода, за который рассчитывается оборот.
//                       Если параметр не задан, или передано пустое значение, оборот будет рассчитываться
//                       с самого первого движения.
//
//  КонецПериода       - Дата, МоментВремени, Граница - конец периода, за который рассчитывается оборот.
//                       Если параметр не задан, или передано пустое значение, оборот будет рассчитываться
//                       по самое последнее движение.
//
//  Счета              - Строка, ПланСчетовСсылка, Массив значений типа ПланСчетовСсылка - счета,
//                       по которым следует ограничить расчет итогов - могут быть переданы в функцию
//                       или в виде строки, в которой коды счетов перечислены через запятую, или ввиде
//                       ссылки на счет, или в виде массива ссылок. Если указан счет-группа - будут
//                       включены все иерархически подчиненные счета.
//
//  ВидыСубконто       - ПланВидовХарактеристикСсылка, Массив значений типа ПланВидовХарактеристикСсылка -
//                       задает субконто, по которым рассчитываются итоги.
//                       См. описание параметра "Субконто" таблиц запросов регистров бухгалтерии.
//
//  КорСчета           - Строка, ПланСчетовСсылка, Массив значений типа ПланСчетовСсылка - счета, по
//                       корреспонденции с которыми следует ограничить расчет оборотов - могут быть
//                       переданы в процедуруили в виде строки, в которой коды счетов перечислены через
//                       запятую, или ввидессылки на счет, или в виде массива ссылок. Если указан счет-
//                       группа - будут включены все иерархически подчиненные счета.
//
//  ВидыКорСубконто    - ПланВидовХарактеристикСсылка, Массив значений типа ПланВидовХарактеристикСсылка.
//                       задает субконто по корреспонденции с которыми следует ограничить расчет оборотов.
//                       См. описание параметра "Кор. субконто" таблицы запросов "Обороты" регистров бухгалтерии.
//
//  Фильтры            - допускается два варианта синтаксиса: Строка или Структура.
//                       Если передана Строка: она должна содержать список имен полей,
//                       разделенных запятыми. В этом случае значения полей должны быть
//                       указаны в параметрах Значение1, Значение2 и. т. д.
//                       Если передана Структура, она должна содержать элементы, в которых имя поля
//                       указано в качестве ключа, а значение поля - в качестве значения элемента.
//                       В качестве имен полей структуры можно указывать:
//                         <ИмяИзмерения> - имена измерений регистра, как они заданы в метаданных,
//                         Субконто1, Субконто2, и т.д., до макс. количества субконто.
//                       В качестве значений элементов структуры можно указывать конкретные значения
//                       измерений и субконто, а так же массивы или списки таких значений.
//                       При расчете итоги будут отфильтрованы по указанным значениям.
//                       Если в качестве значения указывается группа (справочника), отбираются все
//                       подчиненные элементы.
//
//  ЗначениеN          - Любого типа - значения фильтров.
//                       Параметры используются в случае, если фильтры переданы в функцию в
//                       параметре Фильтры в виде строки. Количество и порядок значений фильтров
//                       должны соответствовать количеству и порядку имен полей.
//
// Возвращаемое значение:
//
//  Число - величина требуемого бухгалтерского итога.
//
Функция Оборот (Знач РегистрБухгалтерии = 0, ИмяРесурса, ДтКт = "", НачалоПериода = Неопределено, КонецПериода = Неопределено, Знач Счета = Неопределено, ВидыСубконто = Неопределено, Знач КорСчета = Неопределено, ВидыКорСубконто = Неопределено, Знач Фильтры = Неопределено, Значение1 = Неопределено, Значение2 = Неопределено, Значение3 = Неопределено, Значение4 = Неопределено, Значение5 = Неопределено, Значение6 = Неопределено, Значение7 = Неопределено, Значение8 = Неопределено, Значение9 = Неопределено) Экспорт

   // Регистр бухгалтерии, для которго выполняется расчет.
   Если ТипЗнч(РегистрБухгалтерии) = Тип("ОбъектМетаданных") Тогда
       
       мРегистрБухгалтерии = РегистрБухгалтерии;
       
   Иначе    
   
       Для Каждого ОбъектМетаданных Из Метаданные.РегистрыБухгалтерии Цикл
           Если ТипЗнч(РегистрБухгалтерии) = Тип("РегистрБухгалтерииМенеджер." + ОбъектМетаданных.Имя) Тогда
               РегистрБухгалтерии = ОбъектМетаданных.Имя;
           КонецЕсли;
       КонецЦикла;
       
       мРегистрБухгалтерии = Метаданные.РегистрыБухгалтерии[РегистрБухгалтерии];
       
   КонецЕсли;

   // Параметр Фильтры преобразуется в структуру, если был передан в виде строки.
   Если ТипЗнч(Фильтры) <> Тип("Структура") Тогда
       Фильтры = Новый Структура(Фильтры, Значение1, Значение2, Значение3, Значение4, Значение5, Значение6, Значение7, Значение8, Значение9);
   КонецЕсли;

   // Прочие параметры расчета итогов.
   ИмяИтога = ИмяРесурса + "Оборот" + ДтКт;
   Счета    = РазобратьКодыСчетов(мРегистрБухгалтерии.ПланСчетов, Счета);
   КорСчета = РазобратьКодыСчетов(мРегистрБухгалтерии.ПланСчетов, КорСчета);

   Запрос = Новый Запрос();

   УсловиеПоСчету    = "";
   УсловиеПоКорСчету = "";
   УсловиеПоПолям    = "";

   // Формируются параметры условий таблицы - источника запроса.
   СформироватьУсловиеПоСчету(Запрос, УсловиеПоСчету,    Счета);
   СформироватьУсловиеПоСчету(Запрос, УсловиеПоКорСчету, КорСчета, "Кор");
   СформироватьУсловиеПоПолям(Запрос, УсловиеПоПолям,    Фильтры);

   ИсточникЗапроса = "РегистрБухгалтерии." + мРегистрБухгалтерии.Имя + ".Обороты(&НачалоПериода, &КонецПериода, , " + УсловиеПоСчету + ", &ВидыСубконто, " + УсловиеПоПолям + ", " + УсловиеПоКорСчету + ", &ВидыКорСубконто)";

   Запрос.УстановитьПараметр("НачалоПериода",   НачалоПериода);
   Запрос.УстановитьПараметр("КонецПериода",    КонецПериода);
   Запрос.УстановитьПараметр("ВидыСубконто",    ВидыСубконто);
   Запрос.УстановитьПараметр("ВидыКорСубконто", ВидыКорСубконто);

   // Собирается полный текст запроса.
   Запрос.Текст =
   "ВЫБРАТЬ
   |    СУММА(" + ИмяИтога + ") КАК " + ИмяИтога + "
   |ИЗ
   |    " + ИсточникЗапроса;

   // Выполняется запрос, выборка позиционируется на единственную строку.
   Выборка = Запрос.Выполнить().Выбрать();

   // Если выборка спозиционирована, возвращается итог.
   Если Выборка.Следующий() И Выборка[ИмяИтога] <> Null Тогда
       Возврат Выборка[ИмяИтога];
   Иначе
       Возврат 0;
   КонецЕсли;

КонецФункции
11 mdv92
 
04.11.11
16:34
(8) Чем это лучше?
(10) Да я там уже час лазила с отладчиком!
12 Живой Ископаемый
 
04.11.11
16:38
2(11) тогда продолжайте ею и дальше пользоваться раз она такая удобная и вам нравиться.. зачем тогда терзать форум?
13 mdv92
 
04.11.11
16:40
(12) Так она у меня не работает! Какой-то реквизит не так задала!
14 GROOVY
 
04.11.11
16:40
(11) То есть Вы разницы не видите вообще?! Тогда обработка Ваша Вам подойдет 100%!
15 Живой Ископаемый
 
04.11.11
16:41
2(13) тогда плохой - обработка или вы?
16 Живой Ископаемый
 
04.11.11
16:44
2(14) самое смешное что обработка строит точно такой же запрос, если судить по коментарию:
//  Счета              - Строка, ПланСчетовСсылка, Массив значений типа ПланСчетовСсылка - счета,

//                       по которым следует ограничить расчет итогов - могут быть переданы в функцию

//                       или в виде строки, в которой коды счетов перечислены через запятую, или ввиде

//                       ссылки на счет, или в виде массива ссылок. Если указан счет-группа - будут

//                       включены все иерархически подчиненные счета.
17 mdv92
 
04.11.11
16:48
Счет В ИЕРАРХИИ(&Счет) или Счет &Счет - не понимаю, в ем разница, если мне нужен результат по конкретному счету.
18 МишельЛагранж
 
04.11.11
17:02
(0) всегда помните, что 7-шная логичность переделана в 8-ке "а я так хочу! - сказал 1с"
19 mdv92
 
04.11.11
18:30
Повторю свой вопрос в (17)!
20 МишельЛагранж
 
04.11.11
18:37
(19) иерархияпоявилась тоько в 8-ке - это значит, что подцепятся все субсчета данного счета (или все подчиненные элементы, если это справочник).
21 mdv92
 
04.11.11
18:52
(20) А зачем мне все, если нужен один?