7.7 Запрос к бухгалтерским итогам. Почему задваиваются строки?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Tolikv, 10 окт 2006.

  1. TopicStarter Overlay
    Tolikv
    Offline

    Tolikv

    Регистрация:
    4 июл 2006
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Есть такой запрос:
    БИ.ВыполнитьЗапрос(Дата1,Дата2,ТабСчетЗакуп.ПоЗакупкам,,,, "Проводка");
    БИ.ВыбратьСубконто(1);
    БИ.ПолучитьСубконто(1);
    БИ.ВыбратьПериоды(-1,0,1,0);
    Пока БИ.ПолучитьПериод(1) = 1 Цикл
    Док = БИ.Операция.Документ;
    Док.ВыбратьСтроки();
    Пока Док.ПолучитьСтроку() = 1 Цикл
    ИмяКомп = БИ.Субконто(1);
    Документ = Док;
    Попытка
    Товар = Док.Материал;
    Сумма = Док.Сумма;
    Количество = Док.Количество;
    Исключение
    КонецПопытки;
    КонецЦикла;
    ТабЗакуп.ВывестиСекцию("Строка");
    КонецЦикла;

    При выводе в отчет строки задваиваются (как-будто задваивается период). Почему так?
  2. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    А не может в документе быть больше одной проводки?
  3. TopicStarter Overlay
    Tolikv
    Offline

    Tolikv

    Регистрация:
    4 июл 2006
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Может. Просто мне не понятно зачем в одном документе делать 2 одинаковые проводки, и как мне избавиться от этого задвоения?
  4. zbv
    Offline

    zbv

    Регистрация:
    10 окт 2006
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Переделать бухгалтерский запрос, а то ерунда полная
  5. TopicStarter Overlay
    Tolikv
    Offline

    Tolikv

    Регистрация:
    4 июл 2006
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Да я знаю там много лишнего но суть то остаётся такая же.
    Кстати как из запроса вытянуть наименование Субконто (при формировании запроса Субконто я не выбираю) БИ.Счет.Субконто1 - так не получается.
  6. zbv
    Offline

    zbv

    Регистрация:
    10 окт 2006
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Суть, как раз меняется.

    СубконтоДебет = БИ.Операция.Дебет.<Субконто>;
    СубконтоКредит = БИ.Операция.Кредит.<Субконто>;

    <Субконто> - название cубконто счета дебета/кредита, как оно задано в конфигураторе.
  7. TAHk
    Offline

    TAHk Опытный в 1С

    Регистрация:
    31 авг 2006
    Сообщения:
    100
    Симпатии:
    0
    Баллы:
    26
    Проверь в свойствах документа атрибут "Авотматическое удаление движений" (или что-то типа того)
  8. TopicStarter Overlay
    Tolikv
    Offline

    Tolikv

    Регистрация:
    4 июл 2006
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    То есть как я понял задваивается потому что одна проводка идёт по кредиту а другая по дебету, так?
  9. zbv
    Offline

    zbv

    Регистрация:
    10 окт 2006
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Нет.
  10. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Обычно количество проводок кратно количеству строк в документе (за исключением каких-нибудь общих проводок). И если у тебя в документе 2 строки, то у тебя получается 2 проводки, и запрос честно перебрав обе эти проводки два раза сошлется тебе на этот документ. А если строк будет 10? Правильно, сошлется он 10 раз
  11. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    А вообще у тебя запрос написан неправильно:

    Тебе вроде как нужны конкретные проводки, однако
    Здесь ты явно работаешь с документом, а не проводками. А зачем в цикле перебора строк получать Субконто1?
    К тому же у тебя выберется только первое попавшееся субконто1, т.к. у тебя нет цикла
    или у тебя просто впереди еще указан метод ИспользоватьСубконто();? Тогда и выборка не нужна

    Переменные Товар, Сумма, Количество - они возьмутся по последней строке документа
    Или тебе именно последнюю строку надо?
  12. TopicStarter Overlay
    Tolikv
    Offline

    Tolikv

    Регистрация:
    4 июл 2006
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Я уже выше писал, что там много лишнего, правильнее будет вот так:
    Код:
    БИ.ВыбратьПериоды();
    Пока БИ.ПолучитьПериод() = 1 Цикл
    Док = БИ.Операция.Документ;
    Док.ВыбратьСтроки();
    Пока Док.ПолучитьСтроку() = 1 Цикл
    Попытка
    Товар = Док.Материал;
    Сумма = Док.Сумма;
    Количество = Док.Количество;
    Исключение
    КонецПопытки;
    ТабЗакуп.ВывестиСекцию("Строка");
    Товар = "";
    Сумма = "";
    Количество = "";
    КонецЦикла;
    КонецЦикла;
    
    
    Тут товар сумму и количество я получаю с каждой строки документа, но эти строки задваиваются, причем столько раз сколько строк в документе...
  13. zbv
    Offline

    zbv

    Регистрация:
    10 окт 2006
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Что ты хочешь получить в результате запроса (какие данные)?

    поподробнее если можно
  14. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Короче, чтобы не задваивал - пиши БИ.ВыполнитьЗапрос(Дата1,Дата2,ТабСчетЗакуп.ПоЗакупкам,,,, "Операция");
  15. zbv
    Offline

    zbv

    Регистрация:
    10 окт 2006
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    флуд:
    Amishechka! Поздравляем!!! С днем рождения! :unsure:
  16. TopicStarter Overlay
    Tolikv
    Offline

    Tolikv

    Регистрация:
    4 июл 2006
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Присоединяюсь. И спасибо за советы.
  17. TopicStarter Overlay
    Tolikv
    Offline

    Tolikv

    Регистрация:
    4 июл 2006
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    А вот ещё вопрос: Как разбить эти итоги по месяцам? То есть Месяц - Товар, Количество, Сумма;
    Месяц - Товар, Количество, Сумма; и т.д.
  18. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Тогда вместо "Операция" в функции выполнить запрос укажи "Месяц". Это периодичность выборки итогов
  19. TopicStarter Overlay
    Tolikv
    Offline

    Tolikv

    Регистрация:
    4 июл 2006
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Если я с тавлю месяц то у меня не выполняется этот цикл:

    БИ.ВыбратьПериоды();
    Пока БИ.ПолучитьПериод() = 1 Цикл
    Док = БИ.Операция.Документ;
    Док.ВыбратьСтроки();
    Пока Док.ПолучитьСтроку() = 1 Цикл
    Попытка
    Товар = Док.Материал;
    Сумма = Док.Сумма;
    Количество = Док.Количество;

    Или вобще запрос не выполняется, точно не знаю. Может что-то ещё нужно добавлять?
  20. TopicStarter Overlay
    Tolikv
    Offline

    Tolikv

    Регистрация:
    4 июл 2006
    Сообщения:
    25
    Симпатии:
    0
    Баллы:
    1
    Вобще отчет у меня должен заполняться так:
    Колонка с наименованием, затем несколько колонок с месяцами (взависимости от выбранного периода) и в каждой колонки с месяцом должна идти информация о количестве и сумме за этот месяц. И самое нехорошее то, что это нужно выводить не строками а именно столбцами, т.е. таблица расширяется вправо взависимости от кол-ва месяцев... Вобщем я вобще в растерянности низнаю что делать. Вид таблицы мне нельзя менять.
    Для наглядности, если надо могу выложить этот отчет.

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