[РЕШЕНО] Запрос к бухгалтерским итогам по месяцам

Тема в разделе "Установка платформы "1С:Предприятие 7.7"", создана пользователем id3337668, 25 июл 2016.

  1. TopicStarter Overlay
    id3337668
    Offline

    id3337668

    Регистрация:
    25 фев 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Привет Всем Столкнулся с такой задачей, нужно было составить запрос к бухгалтерским итогам по Сотрудникам, вот код:

    • Налог = глПолучитьНалог(“ПФизЗП”); Таб = СоздатьОбъект(“Таблица”); Таб.ИсходнаяТаблица(“Таблица”); Таб.ВывестиСекцию(“Шапка”); Би = СоздатьОбъект(“БухгалтерскиеИтоги”);

      Би.ИспользоватьСубконто(ВидыСубконто.Сотрудники); Би.ВыполнитьЗапрос(НачДата,КонДата,Налог.Счет,глПолучитьНалог(“ПФизЗП”).Счет,,3,7); Би.ВыбратьСубконто(); Номер = 0; ИтогПлат = 0; ИтогДоход = 0;

      Пока Би.ПолучитьСубконто() = 1 Цикл Фамилия = “”; Имя = “”; Отчество = “”;

      ФИО(Би.Субконто(),Фамилия,Имя,Отчество);

      Номер = Номер+1;

      ДобрПлат = Би.КО();

      Таб.ВывестиСекцию("Строка");

      ИтогПлат = ИтогПлат+Би.КО();

      ИтогДоход = ИтогДоход+Доход;

      КонецЦикла;

      Таб.ВывестиСекцию(“Подвал”); Таб.ПовторятьПриПечатиСтроки(8,8); Таб.Опции(0,0,0,0); Таб.Показать(“Реестр ИНПС”); КонецПроцедуры
    все работает как надо и в таблице в колонке с формулой ДобрПлат выгружаются суммированные итоги по месяцам, возникла необходимость выгружать в соседнюю колонку этиже данные только за один текущий месяц, как это можно реализовать подскажите пожалуйста с Уважением Дамир
  2. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    412
    Симпатии:
    72
    Баллы:
    54
    У Вас все для этого есть. Нужно только сделать внутри цикла еще один по периодам.
    Примерно так:
    Код:
     Пока Би.ПолучитьСубконто() = 1 Цикл
         Фамилия = “”;
         Имя = “”;
         Отчество = “”;
    
    ФИО(Би.Субконто(),Фамилия,Имя,Отчество);
    
    Номер = Номер+1;
    
    ДобрПлат = Би.КО();
    
    Таб.ВывестиСекцию("Строка");
    
    ИтогПлат = ИтогПлат+Би.КО();
    
    ИтогДоход = ИтогДоход+Доход;
    Би.ВыбратьПериоды();
    Пока Би.ПолучитьПериод() = 1 Цикл
         ДобрПлат = Би.КО();
         Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    
    КонецЦикла;
    
    Я не знаю, что у Вас в секции Строка. Возможно придется сделать новую секцию для месячных сумм.
    id3337668 нравится это.
  3. TopicStarter Overlay
    id3337668
    Offline

    id3337668

    Регистрация:
    25 фев 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте Ваш совет в принципе помог только он стал выводить одного сотрудника несколько раз а в колонке для месячных сум он порезал итог по месяцам а не за текущий месяц , я добавил новую секцию вот код:
    Пока Би.ПолучитьПериод() = 1 Цикл
    взнос = Би.КО();
    Таб.ВывестиСекцию("Строка2");
    КонецЦикла;
    я пока не так силен в программировании помогите мне пожалуйста,
  4. TopicStarter Overlay
    id3337668
    Offline

    id3337668

    Регистрация:
    25 фев 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Кат
    Катюфка я разобрался я неправильно поставил секцию надо было сделать её вертикальной , сейчас выводит строки по одному сотруднику но к сожалению так как этот цикл выполняется после основного цикла ПолучитьСубконто колонка для месячных сум смещяется на одну ячейку вниз , можно это как то это исправить?
    С Уважением Дамир
  5. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    412
    Симпатии:
    72
    Баллы:
    54
    Конечно можно! Используйте метод ПрисоединитьСекцию().
    id3337668 нравится это.
  6. TopicStarter Overlay
    id3337668
    Offline

    id3337668

    Регистрация:
    25 фев 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте Катюфка , я использовал метод ПрисоединитьСекцию() вот код:
    Пока Би.ПолучитьСубконто() = 1 Цикл
    Номер = Номер+1;

    ДобрПлат = Би.КО();

    Таб.ВывестиСекцию("Строка");

    Би.ВыбратьПериоды();
    Пока Би.ПолучитьПериод() = 1 Цикл

    взнос = Би.КО();
    Таб.ПрисоединитьСекцию("Строка|Строка2");
    КонецЦикла;

    ВсегоДобрПлат = ВсегоДобрПлат+ДобрПлат;

    КонецЦикла;
    он стал мне вставлять пустые строки между строками с данными (Строка - это горизонтальная секция в первой колонке Выражение <Номер> во второй <Би.Субконто.ИНН> в третьей <Би.Субконто()> в четвертой <ДобрПлат>, а Строка2 это вертикальная секция то есть пятая колонка с формулой <взнос> , где я опять ошибся?
    С Уважением Дамир
  7. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    412
    Симпатии:
    72
    Баллы:
    54
    Вам нужно знать, сколько всего будет присоединено дополнительных секций, т.е. количество месяцев в периоде. Зная это, делайте цикл и последовательно заполняйте нужные ячейки. Например, за год только в мае есть сумма, заполняете 5 колонку, а остальные присоединяете пустыми. Не забудьте и про шапку таблицы. Там тоже надо сделать присоединение, чтобы таблица получилась цельной.
  8. TopicStarter Overlay
    id3337668
    Offline

    id3337668

    Регистрация:
    25 фев 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Не получается Катюфка , как я не крутил , мне кажется не выйдет потому что первым циклом пятую колонку он заполнит нулем потому что формула <взнос> в пятой колонке будет выполнятся вторым циклом соответственно в первом цикле там будет пусто и все ячейки в пятой колонке будут смещены вниз
  9. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    412
    Симпатии:
    72
    Баллы:
    54
    Посмотрите в интернете примеры использования ПрисоединитьСекцию(). Не нужно выводить сразу секцию Строка, а потом пересечение Строка|Строка2. Сделайте вертикальную секцию например, Основное. Тогда сначала нужно будет вывести Строка|Основное, а потом присоединить Строка|Строка2. Никаких смещений вниз не будет.
  10. TopicStarter Overlay
    id3337668
    Offline

    id3337668

    Регистрация:
    25 фев 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Ок я понял а Строка2 надо Горизонтально или Вертикально разместить? как правильнее?
  11. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    412
    Симпатии:
    72
    Баллы:
    54
    В моем представлении - вертикально.
  12. TopicStarter Overlay
    id3337668
    Offline

    id3337668

    Регистрация:
    25 фев 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    [​IMG] Отчет.jpg
    --- Объединение сообщений, 26 июл 2016 ---
    посмотрите скрееншот
  13. TopicStarter Overlay
    id3337668
    Offline

    id3337668

    Регистрация:
    25 фев 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    вот правильный с вертикальной секцией Отчет.jpg
  14. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    412
    Симпатии:
    72
    Баллы:
    54
    Нет. Основное должно быть до 4-ой колонки.
  15. TopicStarter Overlay
    id3337668
    Offline

    id3337668

    Регистрация:
    25 фев 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    я все исправил, сейчас вниз смещения нету только вот он стал добавлять в бок новые столбцы с итогами по месяцам сколько месяцев в периоде я выбираю столько столбцов он и наяривает, в принципе все правильно но мне нужен только один столбец остальные лишние, нельзя их как нибудь свернуть? вот мой переделанный код:
    Пока Би.ПолучитьСубконто() = 1 Цикл

    ДобрПлат = Би.КО();

    Если ДобрПлат<=0 Тогда
    Продолжить
    КонецЕсли;

    Номер = Номер+1;

    Би.ВыбратьПериоды(ДатаОтчета);
    Таб.ВывестиСекцию("Строка|Основное");
    Пока Би.ПолучитьПериод() = 1 Цикл

    взнос = Би.КО();

    Таб.ПрисоединитьСекцию("Строка|Строка2");
    КонецЦикла;

    ВсегоДобрПлат = ВсегоДобрПлат+ДобрПлат;

    КонецЦикла;

    Таб.ВывестиСекцию("Подвал");
    Таб.ПовторятьПриПечатиСтроки(8,8);
    Таб.Опции(0,0,0,0);
    Таб.Показать("Реестр ИНПС");
    КонецПроцедуры
  16. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    412
    Симпатии:
    72
    Баллы:
    54
    Ой! Теперь понимаю, что было нужно. Не все месяцы периода, а только текущий? Тогда один раз присоединить секцию, и все.
    --- Объединение сообщений, 26 июл 2016 ---
    Код:
    Пока Би.ПолучитьПериод() = 1 Цикл
    Если ДатаМесяц(Би.НачДата) = ДатаМесяц(ТекущаяДата()) Тогда
    
    взнос = Би.КО();
    
    Таб.ПрисоединитьСекцию("Строка|Строка2");
    КонецЕсли;
    КонецЦикла;
    Вообще можно отказаться от присоединения секций.
    --- Объединение сообщений, 26 июл 2016 ---
    Код:
    Пока Би.ПолучитьСубконто() = 1 Цикл
    
    ДобрПлат = Би.КО();
    
    Если ДобрПлат<=0 Тогда
    Продолжить
    КонецЕсли;
    
    Номер = Номер+1;
    
    Би.ВыбратьПериоды(ДатаОтчета);
    
    Пока Би.ПолучитьПериод() = 1 Цикл
       Если ДатаМесяц(Би.НачДата) = ДатаМесяц(ТекущаяДата()) Тогда
    
    взнос = Би.КО();
    
    Таб.ВывестиСекцию("Строка");
    КонецЕсли;
    КонецЦикла;
    
    ВсегоДобрПлат = ВсегоДобрПлат+ДобрПлат;
    
    КонецЦикла;
    
    Таб.ВывестиСекцию("Подвал");
    Таб.ПовторятьПриПечатиСтроки(8,8);
    Таб.Опции(0,0,0,0);
    Таб.Показать("Реестр ИНПС");
    КонецПроцедуры
    Последнее редактирование: 26 июл 2016
  17. TopicStarter Overlay
    id3337668
    Offline

    id3337668

    Регистрация:
    25 фев 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Катюфка Вы просто умничка !!! все заработало как надо , вы на меня столько времени потратили Спасибо Вам огромное , талантище, я многое успел освоить в переписке с Вами,
    Можно мне будет к Вам иногда обращаться за советом?
    С Уважением Дамир
  18. Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    412
    Симпатии:
    72
    Баллы:
    54
    Не за что. Обращайтесь. :)

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