7.7 Обороты между всевозможными счетами с учетом корреспонденции и субконто

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем Прохожий, 23 июн 2015.

  1. TopicStarter Overlay
    Прохожий
    Offline

    Прохожий

    Регистрация:
    23 июн 2015
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Добрый день, уважаемые.

    Возможно, что-то проглядел очевидное, но решение получается слишком уж громоздким..

    В двух словах, суть:

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

    Можно ли указать автоматическое включение всевозможных
    субконто и корсубконто, или мне надо явно перебирать все субконто текущего счета
    и вызывать:
    БухгалтерскиеИтоги.ИспользоватьСубконто(ВидСубконто);

    далее, как-то предварительно получить КорСчета,
    и для каждого КорСчета перебрать все его Субконто, вызывая:
    БухгалтерскиеИтоги.ИспользоватьКорСубконто(ВидСубконто);

    и это только в одну сторону (до вызова "БухгалтерскиеИтоги.ВыполнитьЗапрос") ?!
    Oo Щщ
    после нужно будет разворачивать в обратную..

    что-то типа:

    БухгалтерскиеИтоги.ВыбратьСубконто();
    Пока БухгалтерскиеИтоги.ПолучитьСубконто() = 1 Цикл
    БухгалтерскиеИтоги.ВыбратьКорСубконто();
    Пока БухгалтерскиеИтоги.ПолучитьКорсубконто(1) = 1 Цикл
    ... и т.п.

    Как-то нерационально получается.
    Может быть я что-то проглядел и есть способ проще?

    Или хитрее (что-то типа объекта "ПрямойЗапрос" для регистра оборотов) ?
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вы бы сначала конкретизировали... Какая задача стоит?
  3. TopicStarter Overlay
    Прохожий
    Offline

    Прохожий

    Регистрация:
    23 июн 2015
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    Собственно,
    получить на выходе текстовый файл с содержимым:

    Идентификатор1, СчетX
    Идентификатор1, СубконтоX1
    Идентификатор1, СубконтоX2
    Идентификатор1, СубконтоX3
    Идентификатор1, КорСчетY
    Идентификатор1, КорСубконтоY1
    Идентификатор1, КорСубконтоY2
    Идентификатор1, КорСубконтоY3
    Идентификатор1, ОборотыДебетСумма
    Идентификатор1, ОборотыДебетКоличество
    Идентификатор1, ОборотыКредитСумма
    Идентификатор1, ОборотыКредитКоличество
    ...
    ИдентификаторN, ...
    ..................................
    и так далее, по всем возможным счетам и корчетам в пределах заданного периода (а это может быть несколько лет),

    при этом идентификатор формируется по принципу уникально ключа:

    Идентификатор1 == СчетX + СубконтоX1 + СубконтоX2 + СубконтоX3 + КорСчетY + КорСубконтоY1 + КорСубконтоY2 + КорСубконтоY3

    Но это уже больше технические моменты.
    Суть указана в заголовке темы: "Обороты между всевозможными счетам и их корсчетами с учетом субконто и корсубконто".

    Как-то не нравится мне перспектива декартова произведения множеств счетов и куча вложенных циклов.
    В 1С 8 подобную задачу решаю с помощью вирт. таблицы ".Обороты(,&ТекущаяДата)"

    В 1С 7 что-то пока быстрого решения не нашел.
    Пожалуй, попробую через прямой запрос покрутить $БиОбороты для DBF..

    Если есть мысли, как сделать лучше, пишите )
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    БИ = СоздатьОбъект("БухгалтерскиеИтоги");
    ПС = СоздатьОбъект("Счет");
    ПС.ВыбратьСчета();
    Пока ПС.ПолучитьСчет()=1 Цикл
    Если ПС.ЭтоГруппа()=0 Тогда

    Для А=1 По ПС.КоличествоСубконто() Цикл
    БИ.ИспользоватьСубконто(ПС.ВидСубконто(А),,,0);
    КонецЦикла;

    БИ.ВыполнитьЗапрос(ДатаВыгрузки, ДатаВыгрузки, ПС );
    .....
    КонецЕсли;
    КонецЦикла;
  5. TopicStarter Overlay
    Прохожий
    Offline

    Прохожий

    Регистрация:
    23 июн 2015
    Сообщения:
    3
    Симпатии:
    0
    Баллы:
    1
    у меня подобная конструкция работает для получения _остатков_ по счету в разрезе субконто,
    практически идентичный код.

    вопрос в том, куда ставить конструкцию БИ.ИспользоватьКорСубконто ?
    также нужны обороты.

    получается, нужно предварительно выполнить запрос для оборотов
    ВыполнитьЗапрос(,,,,,2)

    получить корсчета для этого счета, по каждому корсчету пробежать в цикле
    Для B=1 По КорСчет.КоличествоСубконто() Цикл
    и выполнить
    БИ.ИспользоватьКорСубконто ?

    а после снова - ВыполнитьЗапрос ?

    или я чего-то не понимаю?
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Скорее всего так. Ибо изначально не известна корреспонденция и обороты

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