World 1C

Блог для программистов и пользователей платформы 1С:Предприятие

Отчёт “Обороты счёта”. Вывод дополнительных данных

Проблема с отчетом “Обороты счёта”, о которой пойдёт речь далее, воспроизводится на конфигурации 1С:Бухгалтерия 8 КОРП 2.0.44.13, версия платформы 8.2.17.153. Судя по всему та же проблема будет возникать и в других конфигурациях 1С:Бухгалтерии (например, в ПРОФ или Базовой). Будем рассматривать отчёт “Обороты счёта” на примере счёта 01.01 “Основные средства в организации”. При выборе данного счёта в настройках появляется возможность выбора дополнительных данных, таких как “Инвентарный номер”, “Местонахождение”, “МОЛ” и т.п.

Установим флаг напротив одного из таких полей (пусть это будет “Инвентарный номер”), выберем небольшой период и сформируем отчёт.

Не трудно заметить, что в результатах отчёта инвентарный номер (как и любые другие дополнительные данные) выводится только для тех основных средств по которым за выбранный период есть обороты, что является ошибкой. Мне удалось найти обсуждение данной проблемы на форуме 1С-разработчиков, начатое ещё в 2010 году. Однако, ошибка до сих пор не устранена и найти готовое решение мне тоже не удалось.

Попробуем самостоятельно разобраться в чём же дело. Откроем отчёт “Обороты счёта” в конфигураторе. В разделе “Макеты” откроем схему компоновки данных “ОсновнаяСхемаКомпоновкиДанных”. Как мы видим, на закладке “Наборы данных” присутствует несколько наборов данных. Основные данные отчёта (остатки и обороты по счетам) выбираются наборами данных “ОсновнойНаборДанных” и “Обороты”. Дополнительные данные выбираются наборами “ДанныеОС”, “ДанныеФизлица” и “ДанныеНМА”. За вывод инвентарных номеров основных средств отвечает набор данных “ДанныеОС”. Если рассматривать каждый из эти наборов данных в отдельности, то никакой ошибки мы не обнаружим. Ошибка допущена при установке связей между наборами данных на закладке “Связи наборов данных”. Как мы видим, “ОсновнойНаборДанных” связывается с набором данных “Обороты”, он же связывается с набором “ДанныеОС”. Но далее мы видим связывание наборов данных “Обороты” и “ДанныеОС” (каждый из которых уже учавствует в связях в качестве приемника), что и приводит к возникновению описанной проблемы. Интересно, что при попытке связать подобным образом три таблицы в конструкторе запросов, возникает ошибка “Противоричивая связь”. Похоже, что при разработке платформы возможность возникновения данной ситуации при связывании наборов данных не была учтена. В результате чего противоречивая связь набора “ОсновнойНаборДанных” с “ДанныеОС” (и другие подобные) системой просто игнорируются. Таким образом, при формировании отчёта “Обороты счёта” фактически выполняется только связь набора “ОсновнойНаборДанных” с набором данных “Обороты”, а набор данных “Обороты” в свою очередь связывается с “ДанныеОС” (аналогично для “ДанныеФизЛица”, “ДанныеНМА”), что и приводит к тому, что в результатах отчёта мы видим дополнительные данных только по тем основным средствам (физлицам, нематериальным активам) для которых за выбранный период есть обороты.

Теперь давайте подумаем как решить данную проблему. Если открыть набор данных “ОсновнойНаборДанных”, то мы увидим, что данные в него выбираются из таблицы “ХозрасчетныйОстаткиИОбороты”, а в набор данных “Обороты” – из таблицы “ХозрасчетныйОбороты”. Таким образом “ОсновнойНаборДанных” включает в себя данные, выбираемые набором “Обороты”, а следовательно достаточно связи наборов “ОсновнойНаборДанных” и “ДанныеОС”. Связь набора “Обороты” с набором “ДанныеОС” является лишней, её можно убрать не опасаясь того, что при формировании отчёта какая-то часть данных может быть потеряна. Ситуация, когда в наборе “Обороты” данные будут присутствовать, а в “ОсновнойНаборДанных” – нет, исключена. Аналогичным образом можно поступить с наборами “ДанныеФизЛица” и “ДанныеНМА”. После такого преобразования дополнительные данные будут выводиться в отчёт независимо от того есть ли по ним обороты за выбранный период.

Поделиться
  • Twitter
  • Добавить ВКонтакте заметку об этой странице
  • Facebook
  • Одноклассники
  • LiveJournal
  • Мой Мир
  • В закладки Google
  • FriendFeed
  • Блог Я.ру

, ,

10 комментария(ев) к “Отчёт “Обороты счёта”. Вывод дополнительных данных
  • Dr_Brown:

    Чувак, спасибо как раз сидел с этой проблемой. Без твоей помощи ковырял бы все гораздо дольше)

  • Tyler:

    Здравствуйте! Вот, набрел на ваш блог и очень обрадовался, когда увидел, что вы пишете об отчете “Обороты счета”, потому что, он кривой как турецкая сабля, и бухгалтера терзают меня ежедневно по его поводу. Столкнулись мы с еще более неприятной проблемой: в отчете пропадают колонки с оборотами по корсчету, если общий оборот по этому корсчету (не учитывая оборотов в разрезе аналитики) равен нулю.
    Я делаю вот такие проводки (количество в проводках опущу):

    СчетДт СубконтоДт СчетКт СубконтоКт Сумма

    1310 Бензин Аи-96 3310 АО “НЛП” 95 000
    Центр. склад

    1310 Бензин Аи-96 000 -9 500
    Центр. склад

    1310 Бензин Аи-96 000 9 500
    АТО

    затем формирую обороты счета 1310 в разрезе аналитики Номенклатура и Склад за период, охватывающий указанные проводки. И вот что, получаю:

    Счет
    Склады Оборот Дт 3310
    ________________________________________________
    1310 95 000 95 000
    АТО 9 500
    Центр. склад 85 500 95 000

    То есть, колонка с оборотами по счету “000″ исчезла, и оборот Дт не совпадает с суммой оборотов по корсчетам. Эту ошибку я видел как в российских, так и Казахстанских (в моем случае) конфигурациях.

  • Tyler:

    Вот так лучше понятно.
    Проводки:

    СчетДт………..СубконтоДт…………СчетКт……….СубконтоКт……Сумма
    ——————————————————————————————–
    1310……………Бензин Аи-96……..3310……………АО “НЛП”……….95 000
    ……………………Центр. склад

    1310…………..Бензин Аи-96……….000……………………………………..- 9 500
    …………………..Центр. склад

    1310…………..Бензин Аи-96……….000………………………………………9 500
    ……………………АТО

    Обороты счета 1310

    Счет
    Склады……………………….Оборот Дт………………..3310
    —————————————————————————
    1310…………………………….95 000………………………95 000
    …..АТО………………………….9 500
    …..Центр. склад…………..85 500………………………95 000

  • Tyler:

    Автор, вы где? Блог заброшен?

    • admin:

      Блог не заброшен. Просто пока нет времени писать новые статьи. С вашим вопросом я пытался разобраться, но не имея доступа к вашей базе сложно понять в чём проблема. На демо-базе мне не удалось воспроизвести ситуацию.

  • Tyler:

    Воспроизвести ситуацию легко: сделайте 2 проводки, типа:

    1) СчетДт: Ден.средства в кассе, СубконтоДт1: Основная касса, СчетКт: Вспомогательный, Сумма: +1000

    1) СчетДт: Ден.средства в кассе, СубконтоДт1: Касса магазина, СчетКт: Вспомогательный, Сумма: -1000

    сформируйте Обороты счета “Ден.средства в кассе” в разрезе СубконтоДт1, и посмотрите, что в колонке ОборотДт и в колонках с корсчетами.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>