Универсальный отчет "[П]: Дебиторка & Кредиторка" [УТ, УПП, КА]




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

98 Comments

  1. ZLENKO

    Версия для 1С 8.2 теперь бесплатно ! 😎

    Reply
  2. <Aleks>

    А на Бухгалтерия предприятия, редакция 2.0 (2.0.29.9) будет работать?

    Reply
  3. akril19811

    Подскажите пожалуйста какие параметры нужно вводит в основном договоре, для того что бы кол. во дней просрочки отображалось, я в этом новичек. Заранее спасибо

    Reply
  4. evgeniy.bilyk

    Спасибо

    Reply
  5. ZLENKO

    (3) В типовых конфигурациях надо немного пропатчить код формы договора чтобы количество дней отсрочки можно было устанавливать для договора с любой детализацией ведения взаиморасчетов:

    Справочники.ДоговорыКонтрагентов.Формы.ФормаЭлемента.МодульФормы

    В процедуре: Процедура УстановитьВидимость() добавить 2 строки перед комментарием «// Установка видимости реквизитов контроля дней»:

     …
    
    //{ ©Z
    ВидимостьКонтроляДней = Истина;
    ВидимостьПроцентаПредоплаты = Истина;
    //} Z: zlenko@gmail.com, ICQ: 114-117-833
    
    // Установка видимости реквизитов контроля дней
    ЭлементыФормы.КонтролироватьЧислоДнейЗадолженности.Видимость         = ВидимостьКонтроляДней;
    Если ВидимостьКонтроляДней Тогда
    ЭлементыФормы.ДопустимоеЧислоДнейЗадолженности.Видимость         = КонтролироватьЧислоДнейЗадолженности;
    Иначе
    ЭлементыФормы.ДопустимоеЧислоДнейЗадолженности.Видимость         = ВидимостьКонтроляДней;
    КонецЕсли;

    Показать

    Reply
  6. ZLENKO

    (2) Нет. На бухгалтерии работать не будет. Теоретически можно переписать часть запроса на получение не из регистра взаиморасчетов данных, а из регистра бухгалтерии. Но пока такой необходимости не было.

    Reply
  7. ZLENKO

    Недавно обнаружил что в выложеных файлах при конвертации в 8.2 «слетела» типизация настройки интервалов на формах отчетов. Не выбираются интервалы на форме отчета.

    Исправлю и выложу исправленные как будет время. Сейчас совсем нет времени 🙁

    Reply
  8. ZLENKO

    Все как то повода не было написать «статическое» распределение отгрузок и оплат, а тут вот клиент попался который хочет анализировать только оплаченные реализации. Сделал регистр и обработку распределения. Где то около 30 секунд генерит 100 тыс.записей соответствия что чем было оплачено.

    Reply
  9. ZLENKO

    (8) Теперь на основе этого регистра сведений соответствия отгрузок и оплат можно будет написать отчет по платежной дисциплине.

    Меня несколько раз про него спрашивали, но безвозмездно было лень писать 🙂

    Reply
  10. AB3012

    Хороший отчет. Спасибо автору!

    Reply
  11. volga1

    (8)

    «статическое» распределение отгрузок и оплат — можно подробнее, интересует ваш подход, т.е. долги просроченные но оплаченные будут видны?

    Reply
  12. ZLENKO

    (11) Именно так — будет видно что чем оплачено и когда. Я пошел еще дальше — сделал копию регистра продаж и его тоже заполняю исходя из того как разнеслись оплаты чтобы посчитать пономенклатурно оплаченную реализацию. Кто то скажет что это бред — соглашусь :-), но такова воля заказчика. Правда в регистр накопления продаж идет запись гораздо медленнее, чем в регистр сведений распределения оплат.

    В регистр сведений 100 тыс записей распределения документов отгрузок и оплат рассчитываются и пишутся секунд 30-40.

    Когда уже есть готовое распределение отгрузок и оплат, то можно посчитать много чего. Например, я написал отчет по сумме просроченной задолженности на каждый день месяца чтобы пеню начислять за просрочку. Можно анализировать с какими отсрочками были оплаты и т.д.

    Метод по сути прост — создаем регистр сведений и алгоритм, который его рассчитывает. Правда несмотря на кажущуюся простоту алгоритм у меня долго не получался (часов 10 писал:-(). Но может просто не нашел оптимальное решение. Главное что работает достаточно быстро. Я опасался что медленно будет на десятках тысяч документов работать (каждый раз перераспределяется все чтобы не заморачиваться с отслеживанием последовательности).

    Reply
  13. volga1

    (12)

    Метод по сути прост — создаем регистр сведений и алгоритм

    С увиличением документов увеличится расчет рег.сведений, так? если да то другой путь искать надо, хотя этот метод интересный.

    Reply
  14. ZLENKO

    (13) А ничего что каждый из этих документов пишет в десяток регистров накопления ? От этого база не пухнет ? 🙂

    Как вариант оптимизации — можно перерасчитывать только по тем контрагентам, по которым были изменения.

    В данном случае имеем порядка десяти тысяч отгрузок и десяти тысяч оплат в месяц. Данные в базе за год.

    30 секунд на перерасчет регистра — это быстрее чем отчет строится в котором по фифо распределяется.

    Но дело тут не в скорости, а в том что хотим видеть «платежную дисциплину клиента». При этом вручную распределять что чем оплачивается никто не будет.

    Reply
  15. volga1

    (14)

    метод индивидуальный, аналогов не видел, тем более «платежную дисциплину клиента» можно построить на нем.

    почерпнул идею для просрочки(отчета).

    Reply
  16. volga1

    (15) volga1,

    Делюсь идеей к просрочке(мож кому понадобиться).

    понадобилось

    1)Новый рег.сведений

    2)Отчет Валовая прибыль

    3)Обработка расчета

    В валовую прибыль в модуль прописал обработку, которая очищает и заполняет рег.сведений(только просроченными доками) отталкиваясь от настроек отчета + пеню считает за просрочку

    PS: обработка на основе публикации

    Reply
  17. SERJ_1CC

    Большое спасибо, работа действительно проделана хорошая, отчет понравился, избавил меня от гемора… Самое приятное, что бесплатный) а так бы самому пришлось делать… Вообщем однозначно плюс!!!

    Reply
  18. ZLENKO

    (18) Спасибо 🙂

    А то куча народу качает — ни плюсов ни комментариев.

    Отчет то реально хороший — я это точно знаю 🙂

    Правда я все же перешел на хранение взаимосвязей между документами в регистре.

    Скорость расчета регистра сравнима со скоростью построения этого отчета,

    зато потом можно и больше разных отчетов построить и строятся они быстро.

    Reply
  19. higs

    Отличный отчет! Пока обошелся без доработок, однако, все равно сильно пригодился!!

    Reply
  20. SERJ_1CC

    (19) Можно еще вопросик? У меня в вашем отчете попадают далеко не все документы (регистраторы). Т.е. сумма правильная а вот регистратор, как правило последний, может быть два.. Например обычная ведомость по взаиморасчетам показывает все документы, но если в договоре проставлена галочка «Вести по документам расчетов с контрагентами», у вас нет этой привязки, но и документы не показываются все…

    Если поняли о чем я, может подскажите в чем проблема, а то неохота разбирать весь ваш запрос…

    Заранние благодарен!

    Reply
  21. ZLENKO

    (21) В моих отчетах возникающая задолженность (документы реализации) погашается (документы оплаты) в порядке дат ее возникновения (по FIFO). Поэтому показывается несколько последних документов, которые не оплачены. В стандартных конфигурациях при использовании документов расчетов пользователь сам указывает (при помощи документов расчетов) что чем оплачивается и оплачиваться могут совсем не те документы, которые должны быть оплачены. Поэтому для правильного учета просроченной задолженности в компаниях с существенным документооборотом типовой механизм учета в разрезе документов расчетов применять проблематично.

    Reply
  22. SERJ_1CC

    Все ясно, большое спасибо за разъяснение и еще раз спасибо за отчет!

    Reply
  23. evgen1973

    Владимир как с Вами связаться? Мой номер 0677995025 (только в рабочее время).

    Reply
  24. ZLENKO

    (24) +38(095)592-92-55, zlenko@gmail.com

    Reply
  25. Sara_2011

    интервалы по прежнему не исправлены. И второй отчет (Отчет задолженности по интервалам) не открывается. Выдает ошибку

    Reply
  26. ZLENKO

    (26) К сожалению интервалы пока не исправил 🙁 Там на самом деле просто надо реквизиту отчета назначить тип, т.к. типизация «слетела» при конвертации на 8.2

    Какую ошибку выдает второй отчет ?

    Reply
  27. Harry_Joplin

    Отличная разработка

    но выдает ошибку отчет по интервалам

    {ВнешнийОтчет.ОтчетЗадолженностьПоИнтервалам_Z_v4_0.МодульОбъекта(1388)}: Ошибка при установке значения атрибута контекста (Текст)

    УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;

    по причине:

    {(41, 61)}: Поле не найдено «ВзаиморасчетыОстаткиИОбороты.Регистратор.ДатаДоставки»

    ИНАЧЕ ВзаиморасчетыОстаткиИОбороты.Регистратор.<<?>>ДатаДоставки

    подскажите куда копать?

    И еще вопрос: добавил кнопку из Листинга 2, отчет всегда выводит как по договору с покупателем, как на постоянной основе закрепить чтобы по нажатию кнопки выдавал отчет по всем видам договора?

    Reply
  28. AlexKoso

    (16) volga1, Делюсь идеей к просрочке(мож кому понадобиться).

    А сам алгоритм где-то мелькнул? может проглядел 🙂

    Как я понял из постов, автор данной публикации сам перешел на такую схему. А как дела у тебя, уважаемый volga1? вы каждый свой алгоритм писали?

    Reply
  29. ZLENKO

    (28) Там в запросе надо закомментировать часть кода и раскомментировать другую. Это я для кого то менял чтобы считалось от даты документа. Случайно попала сюда эта версия этого отчета, а не оригинальная. Вот тут:

     // #Изменено
    //
    |   НАЧАЛОПЕРИОДА(МИНИМУМ(
    |        ВЫБОР  КОГДА ВзаиморасчетыОстаткиИОбороты.Регистратор Ссылка Документ.ПоступлениеТоваровУслуг
    |          ТОГДА ВзаиморасчетыОстаткиИОбороты.Регистратор.Дата
    |          КОГДА ВзаиморасчетыОстаткиИОбороты.Регистратор Ссылка Документ.РеализацияТоваровУслуг
    |          ТОГДА  ВЫБОР
    |             КОГДА ВзаиморасчетыОстаткиИОбороты.Регистратор.ДатаДоставки = &ПустаяДата
    //             //не указана дата документа поставщика — считаем отсрочку от даты документа
    |             ТОГДА ВзаиморасчетыОстаткиИОбороты.Регистратор.Дата
    |             ИНАЧЕ ВзаиморасчетыОстаткиИОбороты.Регистратор.ДатаДоставки
    |            КОНЕЦ
    |          ИНАЧЕ ВзаиморасчетыОстаткиИОбороты.Регистратор.Дата
    |        КОНЕЦ), День) КАК Дата
    //
    //|   НАЧАЛОПЕРИОДА(МИНИМУМ(ВзаиморасчетыОстаткиИОбороты.Регистратор.Дата), День) КАК Дата
    //
    // #Изменено
    

    Показать

    Reply
  30. ZLENKO

    (29) С одной стороны меня и моих клиентов эти отчеты вполне устраивают. С другой стороны — конкретному клиенту потребовалось «статически» распределять взаиморасчеты и это оказалось более функциональным вариантом, но требующим гораздо большее вмешательство в конфигурацию. Так что оба способа имеют право на жизнь.

    Reply
  31. MAXXL

    Спасибо за отчеты, сэкономят немного времени.

    Reply
  32. MAXXL

    Подскажите, а какой тип нужно дать реквизиту Интервал? И еще вопрос — сейчас отчет по интервалам формируется в таком виде http://pix.am/kJ88/

    т.е. просрочен/не просрочен. А что нужно сделать чтобы выводилось именно по интервалам?

    Reply
  33. volga1

    (29) AlexKoso,

    да, сам писал, работает норм. автор темы помог решить вопрос.

    Reply
  34. AlexKoso

    Не подумайте что я искатель халявы. Жаль что раньше не попалась данная публикация на глаза. Я пошел по другому пути — автоматическое заполнение документов расчетов, т.е. обработка заполняла расчетные документы и перепроводила. Немало головняков схватил. За основу взял одну из публикаций с сайта, но допиливать так пришлось, что потом пожалел что сам с нуля не написал. Баги месяц отлавливал.

    Далее дало о себе знать постоянное перезаполнение документов, очень «задним» числом. Что само собой не по нраву партионке и последовательностям. Обошел, сделал чтоб перезаполнение затрагивало только нужный регистр.

    Ну и текущее неудобство, суть: заполнять каждый день взаиморасчеты по документам за весь период не комильфо — ибо долго. Делаю за последние несколько дней. Но тут проблема, если бухи меняют какие либо старые документы? До недавнего времени обходились топорно: они выписывали на листочек контрагентов и период, которые затронули. И по ним в индивидуальном порядке перезаполнял. Автоматизация конечно не ахти.

    Делать отдельную границу последовательности? какую то хитромудрую, в разрезе контрагентов? а как быть если у старого документам поменяли одного контрагента на другого? И тут в голову пришел простой до безумия алгоритм. Накидал в консоле запросов — всё верно. Щас реализую в обработке, и она сама сможет будет знать по какому контрагенту и с какого числа необходимо выравнять взаиморасчеты, без всяких самодельных последовательностей.

    Reply
  35. MAXXL

    (33) MAXXL, Нашел сам. У реквизита Интервал нужно выставить тип СправочникСсылка.НастройкаИнтервалов ; Далее создать в этом справочнике новый элемент , и в нем прописать нужные периоды. после этого отчет формируется именно в том виде что и был задуман автором

    Reply
  36. Harry_Joplin

    «У реквизита Интервал нужно выставить тип СправочникСсылка.НастройкаИнтервалов ; »

    Можно поподробней, что и ка выставлять, я в этом деле новичок

    Reply
  37. ded20ded

    У меня что-то ошибки лезут

    {ВнешнийОтчет.ОтчетЗадолженность_Z_v4_0.МодульОбъекта(1549)}: Преобразование значения к типу Число не может быть выполнено

    УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить(«ДатаДетализации», НачалоДня(УниверсальныйОтчет.ДатаКон — ДетализацияДней*24*60*60));

    Reply
  38. ded20ded

    {ВнешнийОтчет.ОтчетЗадолженностьПоИнтервалам_Z_v4_0.МодульОбъекта(1388)}: Ошибка при установке значения атрибута контекста (Текст)

    УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;

    по причине:

    {(41, 61)}: Поле не найдено «ВзаиморасчетыОстаткиИОбороты.Регистратор.ДатаДоставки»

    ИНАЧЕ ВзаиморасчетыОстаткиИОбороты.Регистратор.<<?>>ДатаДоставки

    Reply
  39. ded20ded

    В УТ

    «Управление торговлей», редакция 10.3 (10.3.18.5)

    Reply
  40. Sykoku

    (40) ded20ded,

    Аналогично в УТП 1.2.9.1

    (22)1с-программы.com,

    Есть замечания.

    1. Не все документы должны попадать в отчет. Например, корректировка долга.

    2. Кроме того, заданный интервал документов распространяется не на все документы. Например, на ту же корректировку.

    3. Не понятно назначение «интервал» — где менять, из чего выбирать.

    Reply
  41. ZLENKO

    (41) 1) Вы считаете что корректировка долга не должна корректировать долг ?

    2) Период отчета используется для отображения дополнительных полей оборотов за период. Чтобы иметь возможность сравнить задолженность с оборотом. Задолженность считается на конец периода отчета.

    3) У поля Интервал «слетела» типизация при конвертации на 8.2. Должен быть тип реквизита отчета Справочник Интервалы. Исправлю.

    (38) Вот это я не пойму почему у Вас ошибку выдает.

    (39) Случайно попала версия одного отчета адаптированная под одного из заказчиков. Там отсрочка считается от поля ДатаДоставки в реализации. Два других отчета (запрос там везде одинаковый) правильные.

    Reply
  42. Sykoku

    (42) 1с-программы.com,

    В «оригинальной» версии Отсрочка от чего пляшет? (если не от Дата Доставки)

    Про Корректировку долга. Если это ввод остатков на начало работы (а других, не нарушающих отчетность, применений этому документу я не вижу. За перенос долга с клиента на клиента таким методом или корректировки типа «покупали носки, вернем кроссовки» надо увольнять) — накой они в оборотах?

    Reply
  43. ZLENKO

    (42) В двух других отчетах отсрочка считается от даты документа реализации (часть запроса закомментировано чтобы можно было быстро переделать под нужное поле документа). Просто у разных компаний разные договора с клиентом — отсрочка считается либо от даты отгрузки (даты реализации) либо от даты доставки клиенту (дополнительное поле в реализации — его нет в стандартных конфигурациях, поэтому выдает ошибку третий отчет).

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

    Если это ввод начальных остатков — тем более они должны попадать в задолженность, т.к. реально эта задолженность возникла раньше чем дата ввода начальных остатков. Но как правило не заморачиваются с точным переносом начальных остатков по датам (хотя ничего не мешает сделать вводы начальных остатков нужными датами) и клиенты получают «бонус» в виде большей чем положено отсрочки (либо составляют план входящих платежей по старой системе и потом отслеживают по нему платежи за прошлый период, который в новой базе одной суммой).

    Вобщем однозначного рецепта для всех клиентов тут нет. Как я уже писал сейчас есть клиент, который отслеживает оплату «потоварно», а не по документам в целом. Хотя я лично не понимаю смысла в этом.

    Reply
  44. Sykoku

    (44) 1с-программы.com,

    Может быть важно для скоропортящегося товара в супермаркете. Если ты заплатил за молоко, а потом пытаешься его же вернуть, только в виде кефира …

    У меня есть знакомые канцтоварщики. Им возврат от просрочивших оплату (безнадежного долга) идет чем попало и необязательно тем, что бралось у них — абы вернули…

    Корректировка долг не есть операция движения ТМЦ/денег. А только их перевод из одного состояния в другое. Ядля себя уже фильтрами настроил список документов-участников.

    Reply
  45. zato1c

    Не катит рано +(((

    Reply
  46. ZLENKO

    (35) AlexKoso, Если документы расчетов писать не в регистр накопления а в регистр сведений, то перезаполняет весьма шустро. Ну а чтобы знать по какому клиенту пересчитывать (а не по всем) надо создать план обмена и в обработчики событий документов добавить регистрацию в плане обмена «старого» (до изменения) и «нового» (после изменения) контрагента в документе.

    Reply
  47. ZLENKO

    (46) zato1c, А что не устроило ?

    Reply
  48. AlexKoso

    (47) ZLENKO.PRO, Шикарная идея 🙂 но всё таки мне теперь это побоку. Перешел на отчет, аналогичный отчету из данной публикации. Кусок запроса из отчета прекрасно вписался контроль по дням просрочки в регистре взаиморасчетов. Теперь показывает все что нужно, в любое время, без всяких батников, обработок перезаполнения и проч. Регистр взаиморасчетов по документам расчетов очистил за ненадобностью и в договорах галки поснимал.

    Reply
  49. ZLENKO

    (49) К сожалению одним запросом не все задачи решаемы. Например, недавно попросили показать как менялась просроченная задолженность за последний месяц (т.е. фактически 30 отчетов таких надо построить). Или еще попросили показать в отчете о продажах только оплаченную реализацию (по документам расчетов не ведут). В таких случая заранее расчитанный регистр — как раз то что нужно.

    Reply
  50. olezhe

    Я бы 10 плюсов поставил, если б можно было.

    Reply
  51. volga1

    (49) AlexKoso, но всё таки мне теперь это побоку;-(

    Reply
  52. ZLENKO

    (52)Если нет необходимости более сложных вычислений чем просроченная задолженность на дату в разрезе документов, то отчета вполне достаточно. Если же надо, например, сделать отчет по оплаченным продажам или отчет по платежной дисциплине, то тут уже без заранее рассчитанного регистра не обойтись.

    Интересно есть ли потребность в подобном отчете для УТ 11 ?

    Reply
  53. victor-tm

    Выдает ошибку на обрабоке по интервалам

    1С:Предприятие 8.2 (8.2.18.61)

    «Управление торговлей», редакция 10.3 (10.3.21.1)

    Reply
  54. victor-tm

    Крупнее картинку кладу

    Reply
  55. ZLENKO

    (55) В этом варианте отчета ошибка в тексте запроса. Текст запроса должен быть одинаковый в отчетах.

    Reply
  56. AndrewVVS

    Спасибо за отчет, + поставил ). Интересно, почему в отчет не вывели (не сгруппировали) по Сделке (Заказу), очень часто бывает, что Договор с видом взаиморасчетов «по заказам» и есть заполненное поле «Сделка» во «Взаиморасчетах». Если сделать еще группировку по «Регистратор.Сделка», то в случае, если разрешено использование заказов в табличных частях данный реквизит будет не заполнен (документ может быть по нескольким заказам + «неправильно» считается сумма задолженности, так как если есть группировка по Сделке, то задолженность придется считать по методу FIFO, но с учетом указанных Сделок в документах.

    P.S. По аналогии уже можно и акт сверки формировать, добавив в него поле «Сделка»… Пока не нашел здесь Акта с разбивкой по договорам и по сделкам для Договоров с видом взаиморасчетов «по заказам»;

    Reply
  57. ZLENKO

    (57) Первоначальная версия отчета закрывала задолженность в разрезе сделок, но практика показала что если хотят видеть взаиморасчеты по сделке, то тогда указывают и документы расчетов и необходимости в распределении по FIFO не возникает — можно использовать штатный механизм расчетов по документам расчетов. Поэтому текущая версия закрывает взаиморасчеты по FIFO в пределах договора на основании плановых дат оплаты документов (рассчитываются на основании даты документа отгрузки и отсрочки по договору) и не требует указания сделки.

    Reply
  58. нинас

    Поставила +,проверить не могу, нет $m, вернусь когда накоплю

    Reply
  59. sergeybugulma

    Выходит ошибка — модуль объекта (1590,2): переменная не определена.

    Из-за чего это может быть?

    Reply
  60. _LEV_

    Отчет хороший..

    Reply
  61. ZLENKO

    (61) Если буду делать новую версию отчета на СКД, то уже под УТ 11.1

    Я пришел к выводу, что гораздо функциональнее использовать фоновое задание с алгоритмом расчета задолженности по документам и записи распределения оплат по отгрузкам в регистр сведений. Потом по этому регистру можно построить множество разнообразных отчетов 🙂 Поэтому развитие этого отчета не планируется. Тем более что в нем уже и так реализовано много всего 🙂

    Reply
  62. _LEV_

    Протестил отчет по интервалам.. сделал две реализации, одну из них потом закрыл Платежкой.

    Покупатель выпадает в должники, причем с полной суммой реализации..

    В архиве демо версии отчетов или рабочие варианты?

    На скриншотах третий релиз отчета, возможно его получить для проверки?

    На СКД для 10.3 удобнее поддерживать, на универсальном не так гибко настраивается..

    Reply
  63. ZLENKO

    Размещены рабочие версии отчетов. Исходный код открыт.

    Размещен последний актуальный релиз отчетов.

    Количество дней отсрочки в договоре установлено ?

    Reply
  64. _LEV_

    да, установлено.. может проще пообщаться по асе?

    Reply
  65. ZLENKO

    (65) Асей давно не пользуюсь. Есть Skype: ZLENKO.PRO и Google Hahgouts: zlenko@gmail.com или Viber: +380955929255

    Reply
  66. Jkey

    УПП (1.3.42.1)

    {ВнешнийОтчет.ОтчетЗадолженностьПоИнтервалам_Z_v4_0.МодульОбъекта(1388)}: Ошибка при установке значения атрибута контекста (Текст)

    УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;

    по причине:

    {(41, 61)}: Поле не найдено «ВзаиморасчетыОстаткиИОбороты.Регистратор.ДатаДоставки»

    ИНАЧЕ ВзаиморасчетыОстаткиИОбороты.Регистратор.<<?>>ДатаДоставки

    В УПП (1.3.42.1) РеализацияТоваровУслуг нет реквизита ДатаДоставки

    Reply
  67. script

    При открытии отчета в Управление торговым предприятием для Украины 1.2 поле Интервал принимает тип значения «Строка». соответственно в пользовательском режиме выбрать в это поле ничего не получается. После того как я принудительно назначил этому реквизиту тип «СправочникСсылка.НастройкиИнтервалов», в пользовательском режиме поле начало отрабатывать выбор, но при формировании отчета интервалы не появляются.

    В чем проблема?

    Кроме того даже без интервалов суммы долга отображаются не те что выводят родные отчеты.

    Reply
  68. kwl

    Хороший отчет и главное своевременный!!!

    Reply
  69. DJDUH

    Ты случайно его не для тарлева писал???

    Reply
  70. ZLENKO

    (70) DJDUH, «Ты случайно его не для тарлева писал???»

    Я его в 2007 году еще написал для одного из своих заказчиков.

    Потом в 2009 дорабатывал перед тем как выложить сюда.

    Кто такой Тарлев — не знаю…

    Reply
  71. ZLENKO

    (69) kwl, «Хороший отчет и главное своевременный!!!»

    После появления тут десятков «велосипедов» на эту тему интерес к развитию данного отчета пропал, но и в текущем виде он превосходит по функционалу все что я тут видел на эту тему 🙂

    Reply
  72. ZLENKO

    (68) script, «При открытии отчета в Управление торговым предприятием для Украины 1.2 поле Интервал принимает тип значения «Строка». соответственно в пользовательском режиме выбрать в это поле ничего не получается. После того как я принудительно назначил этому реквизиту тип «СправочникСсылка.НастройкиИнтервалов», в пользовательском режиме поле начало отрабатывать выбор, но при формировании отчета интервалы не появляются. »

    При конвертации на 8.2 тип данных «слетел» у реквизита.

    Reply
  73. 2casp

    Набор отчетов отличный. Однозначно +.

    Только почему то не совсем понятно почему отчет ОтчетЗадолженностьПоСрокам_Z_v4.0 не делает группировку строк по «Контрагент.Основной менеджер покупателя». Такое ощущение, что он совсем не видит это поле.

    Reply
  74. ZLENKO

    (76) 2casp, «»Контрагент.Основной менеджер покупателя». Такое ощущение, что он совсем не видит это поле»

    Если мне не изменяет память, то это поле там вынесено отдельно. Т.е. не в клиенте его выбирать, а в просто списке полей.

    Reply
  75. serg1974

    Добрый день!

    Во первых СПАСИБО! за отчет!!!!

    Мы стали использовать вашу предпоследнюю версию отчета (скачанную 30/01/13)

    и недавно в отчете «Отчет платежный календарь v.4.0» обнаружили проблему:

    в некоторых случаях ссылка на документ не верна именно на который «вешаются» остатки, но дата и сумма правильные.

    — это те случаи когда выбор долгов по документам контрагента без сортировки результатов запроса возвращают первой строчкой старый документ (2013 год например)

    Вы знаете об этой проблеме? в последней версии она исправлена?

    Reply
  76. ZLENKO

    (78) serg1974, «в некоторых случаях ссылка на документ не верна именно на который «вешаются» остатки, но дата и сумма правильные. — это те случаи когда выбор долгов по документам контрагента без сортировки результатов запроса возвращают первой строчкой старый документ (2013 год например)»

    Не сталкивался с подобной проблемой. Без базы на которой можно диагностировать проблему я не смогу ее устранить.

    Reply
  77. serg1974

    (79) ZLENKO.PRO, спасибо за ваш ответ — если я подготовлю тест базу и воспроизведу там ошибку, сможете посмотреть в чем дело? Нам очень это нужно.

    Reply
  78. ZLENKO

    (80) serg1974, «если я подготовлю тест базу и воспроизведу там ошибку»

    Присылайте на zlenko@gmail.com

    Reply
  79. morozsa

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

    Число допустимых дней задолженности в договорах проставлены.

    Reply
  80. ZLENKO

    (82) morozsa, «Неверно вычисляет прогнозируемую дату оплаты при включенной Считать отсрочку по банковским дням»

    Должен быть заполнен регламентированный производственный календарь в базе.

    Reply
  81. c_andrey

    Спасибо за отчет. Плюсую.

    Скажите, а если накладную часть оплатили…они исчезла из таблицы..

    почему не подскажите? И можно как то настроить чтоб отображалось сколько оплатили по накладной и дату(когда оплатили)(саму платежку).

    Reply
  82. fdautomech

    Добрый день! Я правильно понимаю, что отчёт «ЗадолженностьПоИнтервалам» работает некорректно, если по контрагенту были возвраты/поступления ?

    У меня возвраты минусуют колонку «непросроченно», и более поздние периоды не закрываются.

    Спасибо

    Reply
  83. ZLENKO

    (85) fdautomech, «Я правильно понимаю, что отчёт «ЗадолженностьПоИнтервалам» работает некорректно»

    Не понятно какое поведение отчета Вы считаете некорректным.

    Reply
  84. fdautomech

    (86) ZLENKO,

    например



    Однако, последние движения были следующие:

    Реализация товаров и услуг УТ000015763 от 06.10.2015 — 2 592,00руб.;

    Реализация товаров и услуг УТ000015764 от 06.10.2015 — 14 614,32руб.;

    Реализация товаров и услуг УТ000015913 от 08.10.2015 — 15 805,44руб.;

    Возврат товаров от покупателя УТ000002208 от 23.11.2015 — -5 662,15руб. (с минусом);

    + приходные кассовые ордера.

    В итоге: 1. почему-то реализация на сумму 15805,44 закрыта, хотя имеются более ранние реализации.

    2. приходный кассовый ордер попадает в колонку «непросрочено» отрицательной суммой -4 506,97руб. (сам приходный ордер на сумму 10 311,60).

    Reply
  85. titanium2008

    Скачал Отчет «Задолженность» , почему в нем не работают интервалы?

    Reply
  86. titanium2008

    разобрался, извиняюсь

    Reply
  87. Lapitskiy

    Отличный отчет

    Reply
  88. ZLENKO

    Современный подход к решению задачи описан здесь http://infostart.ru/public/262300/

    Reply
  89. Vit_Kherson

    Подскажите пожалуйста, у Вас выложено 4 обработки. Первая обработка включает в себя весь функционал или нужно приобретать все 4 для получения всего описанного функционала?

    Reply
  90. ZLENKO

    (92) Первый отчет содержит такой же запрос как и остальные 3 отчета. Отчеты отличаются стандартными настройками «зашитыми» в код.

    Reply
  91. Монту

    (93) День добрый хотел приобрести отчет для целей отслеживания кредиторки перед поставщиками, с днями просрочки. 3тья картинка соответствует отчету «Задолженность по срокам»? если формировать по виду документа с поставщиками, он вытряхнет туда «Поступления товаров»?

    Reply
  92. Монту

    (93) Скачал обработку по срокам долга, она смотрит весь регистр взаиморасчетов и плевать ей на дату начала?

    Reply
  93. alonzomozley

    Доброго времени суток!

    Скачал «ЗадолженностьПоИнтервалам».

    В описании номер версии 4.1, в названии файла — 4.0

    Тут точно нет никакой ошибки?

    Reply
  94. ZLENKO

    (94) Не совсем понял вопрос. Отчет выдает задолженности с точностью до документа, для поставщиков, соответственно это будут «Поступления товаров».

    Reply
  95. ZLENKO

    (95) Обрабатывается весь регистр, но для оптимизации производительности можно ограничивать период детализации с точностью до документа «глубиной» в днях.

    Reply
  96. ZLENKO

    (96) Забыл переименовать имя файла, версия файла выложена последняя.

    Reply
  97. 028

    (Отчет учитывает на какую реализацию ТМЗ был сделан возврат который был сделан на основании этой реализации?

    Reply
  98. ZLENKO

    (100) Нет, возврат аналогичен поступлению оплаты и закрывает самую старую реализацию.

    Reply

Leave a Comment

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