<?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='\
Отчеты позволяют посмотреть задолженность перед поставщиками и задолженность покупателей в удобной и привычной пользователям форме. Внесены изменения в макет «По периодам просрока», сделана горизонтальная группировка для «просроков», выделение цветами «жесткий», «средний», «допустимый» просрок.
Перейти к публикации
боян.
Классный отчет, спасибо … единственно, для полной красоты я бы заменил в запросе в одном месте «Обороты.Регистратор.Дата» на «Обороты.Период»…
to Pavel777777: спасибо, обновил отчеты, внес в текст запроса рекомендуемые изменения.
Извините, а как скачать данный отчет(ы)?
to alrosal: приношу извинения, при обновлении старый файл удалил, но не закачал новый. Теперь все в порядке, зарегистрируйтесь и скачивайте.
Спасибо все ок!
А как
1. в отчете по дебиторской задолженности
произвести групировки по менеджерам? Только индивидуальные на каждого в отдельности?
2. В отчете по кредиторской сортировать по валюте взаиморасчетов? (все идет в рублях и долларах без переводов)
С уважением
to alrosal: сейчас пока нет такой возможности, обновлю в ближайшее время.
Спасибо. Как раз искал такой отчет. Самому пока не хватает знаний 8-ки так написать.
Подскажите, как установить этот отчет?
to AAlex1983: не очень понятен вопрос.
Чтобы использовать отчеты, не изменяя конфигурацию, достаточно сохранить файлы на диске и открыть через меню Файл — Открыть или добавить в справочник «Внешние отчеты». Для этого через меню Сервис — Внешние отчеты и обработки — Внешние отчеты открыть форму добавления и добавить к внешним отчетам. После этого запускать через меню Сервис — Внешние отчеты и обработки — Внешние отчеты.
to alrosal: обновил отчеты, сделал возможность в «дебиторке» установить группировку «по менеджерам», в «кредиторке» добавил в запросе сортировку по валюте взаиморасчетов.
Огромное Спасибо .отборы по менеджерам пошли,(еще бы с отбором ответсвенных по заказам сделать). У нас в разрезе одного договора с покупателем может быть несколько менеджеров у каждого из которых свой заказ.
А вот с валютами по-прежнему туговато. Как в дебиторке так и в кредитовке.
И на этом еще раз огромное спасибо.
alrosal,
Пожалуйста.
Про остальные пожелания, хотелось бы уточнить, что вам все таки хочется. Есть три различных понятия отбор, группировка, сортировка.
1. Отбор это фильтр для ограничения записей — в этих отчетах сверху по центру в табличке (по организации, по контрагенту, по менеджеру)
2. Группировка это вывод строк таблицы — в этих отчетах сверху слева в виде переключателей (по срокам долга, по контрагентам, по менеджерам)
3. Сортировка, выбор в этих отчетах не предусмотрен.
Вот в этом контексте хочется спросить:
1. что хочется сделать с ответственным (группировку или отбор)
2. откуда брать ответственного из заказа или из реализации (в отчете используются реализации и поступления)
3. более точно описать задачи отображения по работе с валютами
А как добавить еще отбор по свойствам контрагентов?
Сейчас в отбор не добавить свойства из карточки покупателя, так как отборы жесто определены во вешней обработке. Возможно в ближайшее время модифицирую обработку.
Я сам доработал отчет и добавил отбор по свойству. Отчет классный и всем пользователям понятный. Единственное, что мне бросилось в глаза, что непогашенный долг за более ранние реализации может появляться напротив более свежих документов, по которым на самом деле была платежка. Это так задумано?
Ой…да посмотрите хотя бы мой отчет и мои статьи по дебиторке. Или описание платных вариантов. Если уж изобретать велосипед, то хотя бы лучше, чем было
Добрый день.Отчет хороший, то что искала, только вот проблема, у нас платежка вешается на заказ, а здесь, как я поняла должна вешаться на реализацию. Из за этого у меня нет возможности просмотреть задолженности, весит что всем должна:(. подскажите как исправить, Плизззз
Orlenok,
Отчет работает по документам из регистра «Взаиморасчеты с контрагентами». Документ «Заказ покупателя» для этого регистра в типовой конфигурации не является регистратором, соответственно этлт отчет не учитывет «Заказ покупателя».
не ну это я уже поняла. Просто во взаиморасчетах с конрагентами у меня нормально все(показывает нашу реальную задолженность). Но в твоем отчете пишет что мы всем должны. не одно поступление не оплачено. Хотя это не так. А мне как этот отчет очень нужен. Подскажи как исправить?
Orlenok,
я думал что у вас в договоре установлено ведение взаиморасчетов «по заказам». Проверил на демо базе при установленном ведении взаиморасчетов «по заказам» отчет тоже работает. Как у вас ведутся взаиморасчеты? В принципе все сделано достаточно универсально и если по отчету «Ведомость по взаиморасчетам» цифра идет то и по моему отчету цифра также должна идти.
А у меня почему-то непогашенный долг за более ранние реализации может появляться напротив более свежих документов, по которым на самом деле была платежка. Хотя общую задолженность показывает правильно. Взаиморасчеты ведутся по заказам. Где нужно что исправить?
поставли +, наконец появилось что-то юзабельное для анализа, как я называю, просрачки
thorben,
я думаю, что вам необходимо последовательно перепровести все заказы, реализации и соответственно оплаты. Также необходимо проверить, соответствует ли договор в заказе, реализации, договору указанному в документе оплаты. Отчет работает таким образом, что сначала выбраются документы и остаток по договору, причем документы отсортированы по убыванию, т.е. сначала идут самые поздние документы (26,25,24 ….). Далее происходит расчет и анализ оплаченных документов исходя из суммы остатка по взаиморасчетам. Расчет работает таким образом, что сначала анализируются поздние документы и так к самым старым, соответственно самые старые документы будут оплачены и не попадут в отчет.
Странно работает отчет кредиторская задолженность, некоторые контрагенты нормально отрабатываются, у некоторых не встают оплаты по одному поступлению, у других не встает не одна оплата, а отчет очень клевый и нужный без всего лишнего, для полного счастья нам не хватило бы доп колонки Номер входящего документа.
Может проблема не в отчете, а у нас? Хотелось бы прикрутить данный отчет, ибо родной не особенно удобен, но пока он работает «избирательно» работать с ним не получится у нас
Borodach, при просмотре КЗ на 21 число по оному контрагенту высвечивается долг по одной накладной, ставлю дату 28.03 и высвечиваются неоплаченными накладными все накладные, а должны только две последние.
Явно здесь какой-то глюк, у Orlenok, я подозреваю, именно такая же проблема.
Alex84777,
чтобы Вам помочь мне надо как то получить подобную ошибку, может быть вы сможете описать как ее получить на демо-базе 1С Торговля. Есть еще другие варианты: проверьте по отчету «Ведомость по взаиморасчетам» или через документ «Акт сверки» состояние взаиморасчетов на 21.03 и на 28.03 и сравните с отчетом. Так же можно выгрузить документы оплаты (приходники, платежки и документы реализации) через обработку «ВыгрузкаЗагрузкаДанныхXML.epf» из комплекта стандартных обработок и отправить мне на электронку. Ну или просто выгрузить базу и отправить ее мне, так я смогу посмотреть что за ошибка. Но все таки я думаю, что просто напросто надо проверить и перепровести документы реализации и оплаты и сделать тестирование и исправление базы.
Borodach
я мало чего поняла в последнем сообщении. Но я верю в вас!и надеюсь вы сможите мне помочь! Так как этот отчет то что надо!лично у меня показывает сто должна всем, кроме тех по ком еще не пришел срок оплаты. А в актах сверки и ведомомсти по взаиморасчет нормально отражает реальную задолженность :(.
Borodach,
В демо-базе такая или подобная ошибка тоже возникает, например для контрагента База «Продукты».
Надеюсь все получится :))) Если нужна будет от меня выгрузка, то с радостью предоставлю 🙂
Alex84777,
внес изменения в отчет «Кредиторская задолженность», поправил алгоритм, добавил отбор по договору контрагента. Проверил на демо-базе на различных контрагентах, включая «База «Продукты»» и «База «Электротовары»», отчет сходится с ведомостью по взаиморасчетам. Проверьте на вашей базе. Сообщите о результатах, пожалуйста.
Ага, сейчас протестируем, спасибо 🙂
хороший отчет, плюс… еще бы немного гибкости — было бы супер… мне всего четыре столбца нужно, а как убрать остальное — не нашла…
Пока нашел только следующее:
По одному контрагенту два договора:
Поступление прошло по одному договору, оплата — по другому, в итоге сумма долга по взаиморасчетам 0-00руб. а по отчету сумма Поступления, то есть по второму договору не смотрит оплату. (Договор в настройках не уточняем).
Может это и правильно 🙂 Так как если нет накладных оплаты по этому по договору не учитываются в этом отчете.
Очень полезная вещь, долго искал, пытался сам сделать, но что-то не выходило, рад что нашел данную обработку.
Спасибо автору за работу!
Очень удобно. Почему, кстати, не оставили отчет в СКД, а раздербанили на построитель ? Все ведь там можно реализовать…
(36) KOHUK,
Спасибо за комментарий, просто сделать на построителе на момент разработки отчета было быстрее.
Один из самых лучших отчетов!
СПАСИБО!!!
я бухгалтер и мне понятно.
{ВнешнийОтчет.rzh_ДебиторскаяЗадолженностьПоПериодамПросрока(112)}: Ошибка при вызове конструктора (ОписаниеТипов): Недопустимое значение параметра (параметр номер ‘1’) (ДокументСсылка.ВводНачальныхОстатковПоВзаиморасчетам)
по причине:
Недопустимое значение параметра (параметр номер ‘1’) (ДокументСсылка.ВводНачальныхОстатковПоВзаиморасчетам)
У меня вот такая красота. Не могу понять, откуда ошибка
(39) ivan4usa, ваша ошибка понятна: в вашей конфигурации нет документа «ВводНачальныхОстатковПоВзаиморасчетам» или он называется по другому. Напишите используемую конфигурацию, номер релиза, версию платформы 1С.
План по сбору задолженности! А если регистр сведений прикрутить, где для торгового агента проценты вычета из ЗП за просрок будут указаны…….
(41) Vadim37, добрый день, можно сделать и так, если вам нужна такая доработка, пишите обсудим и сделаем так как вам удобно. А здесь решение для типовой конфигурации, самостоятельное и не требующее внесения изменений в конфигурацию.
По поводу отчета для кредиторской задолженности 8.2: Для Комплексной автоматизации метод ПолучитьЗначениеПеременной сидит в другом модуле РаботаСОбщимиПеременными. Жаль, что форма и модуль с парольной защитой, форму я исправил, добавил новую. Теперь выходит ошибка в модуле отчета: {ВнешнийОтчет.rzh_КредиторскаяЗадолженность.МодульОбъекта(147)}: Преобразование значения к типу Число не может быть выполнено
Хотя, когда добавил в отбор организацию и указал папку Поставщики в отборе по контрагенту, то отчет сработал.
Понял, исправлю и обновлю 🙂
Здравствуйте,Borodach! Смотрю отчет. Вопрос у нас в системе стоит контроль задолженности в рабочих днях . отчет как-то это учитывает или какие дни считает отчет календарные или те который указаны в настройке системы. КА 1,1 — вылезает ошибка {Форма.Форма.Форма(261)}: Ошибка при установке значения атрибута контекстов ( ОриентацияСтраницы)
ТабДок. ОриентацияСтр = ориентация.Авто; По причине Несоотвествие типов. НО отчет все равно формирует Я скачала видимо демо версию. Если купить, можно будет менять настройки группировки. мне надо менеджера вывести на самый верх. В скаченом отчете строгая группировка по организациям?
Да и еще вопрос по алгоритму отчета — может быть много вопросов )) буду задавать с надеждой на ответы )) отчет обрабатывает только отгрузки или он берет и документы ввод начальных остатков тоже. И обрабатывает он все договора или только те , у которых ведение по документам взаиморасчетов. Возможно сама все увижу, но может вы быстрей ответите )) Заранее спасибо.
нет валюты у задолженности, и итога по задолженностям в этих валютах, а в платном отчете есть?.
Плюс поставила пусть и без валюты но все равно лучше чем стандартные отчеты и еще многих всяких бесплатных.
Ответил в личку, проверяйте.:)
Отлично, спасибо
Отчет действительно очень хороший. Спасибо за проделанную работу.
Есть 1 вопрос связанный с менеджерами, а именно — по ним задолженность не показывается.
В смысле, дебиторская задолженность показывается верно, но ни по одному менеджеру она не обнаруживается.
П.С. только начинаю вникать в 1С. Видимо что то упускаю.
Хороший отчет, тока в «Управление торговлей», редакция 10.3 (10.3.18.3) выходит ощибка:
{Форма.Форма.Форма(261)}: Ошибка при установке значения атрибута контекста (ОриентацияСтраницы)
ТабДок.ОриентацияСтраницы = Ориентация.Авто;
по причине:
Несоответствие типов
и еще
{ВнешнийОтчет.rzh_КредиторскаяЗадолженность.МодульОбъекта(147)}: Преобразование значения к типу Число не может быть выполнено
Внесу исправления и обновлю в ближайшие день-два.
+1. Отчет принес пользу, спасибо.
Спасибо. Большое спасибо.
(13)
подскажите, как здесь в итоге вы сделали? у нас просто менеджеры делают заказ, а реализацию — кладовщики. Будет ли работать отчет в разрезе менеджеров (узнать дебиторку по конкретному менеджеру)? Для справки: метод ведения взаиморасчетов у нас «по договору в целом»
Используется менеджер, указанный в карточке контрагента как основной менеджер покупателя! Если клиента ведет один менеджер ,то можно узнать «дебиторку» по конкретному менеджеру.
(59) спасибо за пояснение. У нас, увы, закрепленного менеджера нет, поэтому, видимо, не получится получить реальные данные по менеджерам…
Да, если не используется основной менеджер из карточки контрагента, то сформировать в разрезе менеджеров не получится. Доработать отчет чтобы, использовать менеджера (ответственного из накладной) не получится, так как оплата в данном отчете не связывается с накладной и соответственно реализации не будут закрываться платежами!
спасибо. Скачал несколько подобных отчетов. Пока разбираюсь какой будет удобней. Ваш понравился. Вроде не сложно разобраться. «+»
ошибка по странице , так и есть . А в целом очень хороший отчет.Спасибо автору
Скачал ваш отчет. в валюте я так понял он не работает. То есть кредиторская задолженность в колонке сумма долга и сумма руб, показывает одну и ту же сумму. И не уловил откуда берется отсрочка платежа. Заполнил в договоре допустимое число дней острочки не работает ((. А код закрыт паролем самому не докрутить и не разобраться
Аналогично 46 комментарию. База КА. Ошибка.
{Форма.Форма.Форма(261)}: Ошибка при установке значения атрибута контекста (ОриентацияСтраницы)
ТабДок.ОриентацияСтраницы = Ориентация.Авто;
по причине:
Несоответствие типов
Хотелось бы исправление.
Досадная ошибка «ТабДок.ОриентацияСтраницы = Ориентация.Авто;» исправлено. Спасибо за сообщения!
Тю… А что модуль паролем закрыт как будто это платная обработка. Хотел код посмотреть, может интересное решение попадётся, а тут такая подстава, вы хотя бы в описании предупредили, чтобы люди которым она нужна не для работы, её за зря не качали. Может в личку отпишите пароль к модулю???
В 82 {ВнешнийОтчет.rzh_КредиторскаяЗадолженность.МодульОбъекта(147)}: Преобразование значения к типу Число не может быть выполнено
Как сохранить настройку данного отчёта, чтобы при следующем использовании программа восстанавливала последний его вид, отборы и параметры?
Напишите пароль к обработке!!
«{ВнешнийОтчет.rzh_КредиторскаяЗадолженность.МодульОбъекта(147)}: Преобразование значения к типу Число не может быть выполнено» УТ 10.3
Можно хотябы в личку пароль. Хочу переделать обработку. Так крутая))
(23) CheBurator, «наконец появилось что-то юзабельное для анализа, как я называю, просрачки »
Чем это не юзабельное ?http://infostart.ru/public/117647/
(17) anig99, «Ой…да посмотрите хотя бы мой отчет и мои статьи по дебиторке.»
Сейчас на СКД посчитать нарастающий итог фактически штатная функция, поэтому действительно интересно было бы уже что то новое увидеть в этом направлении. А то число «изобретателей велосипедов» приблизилось к числу «велоспедистов» 🙂
(73) ZLENKO,
Это которая?
(74) AlexO, «Это которая? »
грусть-печаль-тоска, {ВнешнийОтчет.rzh_КредиторскаяЗадолженность.МодульОбъекта(147)}: Преобразование значения к типу Число не может быть выполнено , а код закрыт, даже и не поправить. УТ 10.3 платформа 8.3.
Внес изменения в отчеты: для отчета «Кредиторская задолженность» ошибка исправлена!
«{ВнешнийОтчет.rzh_КредиторскаяЗадолженность.МодульОбъекта(147)}: Преобразование значения к типу Число не может быть выполнено» УТ 10.3
Обработка легко декомпилируется
{ВнешнийОтчет.rzh_ДебиторскаяЗадолженностьПоПериодамПросрока.МодульОбъекта(114)}: Ошибка при вызове конструктора (ОписаниеТипов)
по причине:
Недопустимое значение параметра (параметр номер ‘1’) (ДокументСсылка.КорректировкаРеализации)
Напишите какой отчет и на какой конфигурации вы запускали — я исправлю.
Дело в том, что в вашей конфигурации УТ нет документов «Корректировка реализации» и «Корректировка поступления» — отчет для вас исправил и отправил вам.
Спасибо за помощь, все заработало!!!
У обработки код открыт?
Был закрыт.