Подсчет количества документов за период с разбивкой по типам

Полезно для бухгалтерских структур. Обычные формы.

Бухгалтерская компания назначает цену за обслуживание своим клиентам в зависимости от количества обработанных документов.
Помочь им посчитать призвана эта обработка.

Почему не отчет? — как правило, первичную статистику надо слегка допилить до товарного вида, т.к. часть документов создается автоматически и неприлично их считать в оплату, у кого-то часть документов обрабатывает сам заказчик, например, выписыват счета, кто-то считает пару Накладная/счет-фактура за 1 документ, а кто-то — за 2.
Поэтому выводим список в табличный документ (наступить правой мышой на табличную часть и сказать «Вывести список»), копируем и вставляем в Ексель, или в меню Файл сохраняем копию.

Предупреждение: если включена разбивка по месяцам, то обработка тупо и старательно сканирует весь период неоптимальным способом, поэтому осторожно, не задавайте от рождества Христова до скончания века — долго ждать и серевер перегружает. Просто создавалось не для бэта-тестеров, а для реальной задачи. И обычных форм.

Да, кстати: двойной щелчок пытается открыть журнал этого документа с фильтром по периоду.

4 Comments

  1. dim3740

    Здравствуйте. Вопрос к автору: скачал, заплатил… однако оказалось что под 8.3 не работает, хотя это не было указано. Прошу дать ссылку на работающую версию под клиент-серверную 1С. Спасибо.

    Reply
  2. user726855

    Добрый день.

    Просто откройте обработку в конфигураторе 8.3 и сохраните.

    Так конвертируются все обработки из 8.2 в 8.3.

    Reply
  3. dim3740

    спасибо, попробую.

    Reply
  4. Lapitskiy

    Всё просто, даже не стоит 2 SM.

    Простой код процедуры:

    Для каждого ЭлМД Из Метаданные.Документы Цикл
    
    ИмяДок = ЭлМД.Имя;
    
    Запрос = Новый Запрос;
    Запрос.Текст = »
    |ВЫБРАТЬ
    | Количество(Ссылка) КАК Количество
    |ИЗ
    | Документ.»+ИмяДок+» КАК Док
    |ГДЕ Дата>=ДАТАВРЕМЯ(2019,1,1) И НЕ ПометкаУдаления
    |»;
    
    РезЗапроса = Запрос.Выполнить();
    Выборка = РезЗапроса.Выбрать();
    
    Если Выборка.Следующий() Тогда
    Если Выборка.Количество>0 Тогда
    Сообщить(ИмяДок+» =»+СокрЛП(Выборка.Количество),СтатусСообщения.Внимание);
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    
    Сообщить(«Готово»);
    

    Показать

    Reply

Leave a Comment

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