<?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='\
Скачало 25 — плюс 1 (спасибо VladimirS). Кроликоферма плачет.
У меня сделано такhttp://infostart.ru/public/65099/
правда из БП с УТ 😀
(2) — это прямо какое-то дежавю. Даже разница в один день.
а с УТ — БП 2.0 будет работать?
Завтра посмотрю.
(5) В своей тестовой базе, для двух обработок выдает:
Не удалось подключиться к базе данных бухгалтерии
(6) Нажми кнопку «Настройки» для сверки контрагентов или Склады/настройкиподключения для сверки товарных остатков. Там есть закладка Подключение. Проверь настройки. Там можно указывать также Windows-авторизацию.
(4) С БП 2.0 работает.
(8) С БП 2.0 под платформу 8.2, верно?
буду тогда разбираться, в чем у меня опять проблема(
(9) Я проверял на 8.1 БП2.0. Там работает. А вот на 8.2 нет — у меня она не установлена. В обработке код открыт, можно посмотреть. Возможно там COM-соединение иначе описывается. Если это так, то это буквально пару строк поправить Посмотрю, если у кого-нибудь стоит 8.2 проверю.
(10) да, чуть иначе:
в модуле изменить:
V81 на V82
(11) Спасибо, добавлю возможность выбора платформы.
Спасибо за обработку очень пригодилась!!
(13) Спасибо за поддержку 🙂
Да, обработка супир!!! еще бы забабахать расшифровку до документов. Но это я уж наверное сам.
а по номенклатуре возможно сделать такое сравнение?
И куда мы смотрим? На основной странице обработки = «Сравнение товарных остатков УТ с БП»
а по номенклатуре возможно сделать такое сравнение?
(16) Как 17 замечает, вот сравнение номенклатурыhttp://infostart.ru/public/60016/
Спасибо за обработку очень пригодилась!!еще бы расшифровку по документам…и по номенклатуре сделать сравнение…и можно продавать…
Плохо что нет отбора к примеру по организации.
(20) Согласен, это не делал. У нас одна организация — одна база.
Очень полезная обработка, пользуюсь и сейчас, переделал под другие базы. Автору спасибо.
Спасибо за разработку. А то когда постоянно бухгалтер портачит, уже никаких сил не остается.
Спасибо, очень помогает в работе!
Для ут 11 такую бы обработинку.Может есть у кого?
А если в УПП два раза запустить, то получится сравнение?
(26) Если подразумеваешь сравнить две УПП, то скорее всего сработает.
Но с особенностью:
1. в УПП должен быть регистр партии товаров такой же как и в УТ. Говорю должен быть, потому что нет УПП проверить.
Если он есть, отчет заработает.
2. в запускаемой УПП будет выборка по регистру остатков, в подключаемой по регистрам бухгалтерии.
(27)
Не сработала.
(28)А на чем упала?
При выборке из внешней базы или из той в которой запускалась?
(29)
Она не падала. Она молча отработала.
Никаких сообщений и никаких результатов.
Хотя расхождения между БУ и УУ точно есть.
Подскажите пожалуйста, а если УТ 8.1, а БП 8.2, обработка будет работать? И если нет то, подскажите, что прописать в модуле. Пробовал первую загрузку СверкаКонтрагентов.zip она не сработала. Пишет не удалось подколючиться к базе
(31) Открой обработку. Найди там строку с подключением в процедуре ПодключитьсяКБухгалтерии()
Для 81 нужно там где V82.ComConnector заменить на V81.ComConnector
Если пароль, логин, путь для подключения верные, должно подключиться.
Спасибо, что ответили. Открыл конфигуратор 81, сделал там так:
Всё равно, выдаёт «Ошибка подключения».
Паролей никаких нет, единственное что смущает, что путь к БД, он ищет .CD, а у меня база .1CD
(33)Если бухгалтерия на платформе 81 то должно быть так «V81.COMConnector»
Имя файла неважно. Главное каталог правильный выбрать, если это файловая база.
Бухгалтерия у меня 8.2, а Управление Торговлей 8.1
(35) Должно работать. Сколько сталкивался с такой ошибкой: либо неправильно указан логин, пароль, путь,
права. Кстати вспомнил. Еще была ошибка. Не зарегистрирован ComConnector
Попробуй зарегистрировать его: regsvr32.exe …. comcntr.dll
привет, скачала, сконвертировала, открыла, настроила пути подключения, база файловая и вот: ошибка «Не удалось подключиться к базе данных бухгалтерии»
что с ней делать, как быть, очень нужно что бы работало, с файловой вообще кто пробовал?
платформа 8.2
(37) работает с файловыми и серверными базами.
-Проверь правильность пути.
-почитай по поводу comcntr в пункты 36,33 возможно поможет.
-посмотри комментарии по обработке по товарным остаткам, там их много. Возможно один из случаев твой.
(37) …скачала, сконвертировала… Вот тут похоже ошибка.
Скачать нужно версию для 82. Это вторая. Либо если не хочешь второй раз скачивать сделай как описано в (33)
(39) да, действительно, не ту скачали мне, спс, сразу не увидела.
(39) отредактировала согласно (33) и вуаля, все работает, спасибо огромное.
Спасибо большое) Как раз вовремя. Немного доработали под свою древнюю УТ и добавили отбор по организации, а так же сравнение контрагентов по коду, так как наименование волшебным образом волшебными руками меняется, а код остается неизменным.
Мучали обработку целый день). Не закрывает соединение в Бухгалтерии и все тут. Базы sql обе.
(43) Там если код правили, то обратили внимание на то что соединение не закрывается после формирования отчета. Сделал так специально — в том случае, если нужно построить несколько отчетов, не нужно снова открывать соединение.
Если такой вариант не подходит, то можете закрывать сессию. Соединение устанавливаете в Неопределено.
Или пришлите — поправлю.
Да, соединение закрыли в Неопределено, а так же все переменные, которые соединение используют. Те же массивы для сбора данных из Бухгалтерии. Спасибо за обработку еще раз). Пользователи как увидели обработку, еще пару своих пожеланий озвучили. Отбор по организации, по подразделениям (как реквизит Договора).
Отчет не правильно выводить ссылку на контрагента когда к примеру есть одинаковые наименования, но разные ИНН
В отчете включен режим поиска «ИНН и КПП» данные правильно, а вот ссылку выдает на другого контрагента с тем же наименование, но разным ИНН
Причина в функции ПолучитьОбъектДляРасшифровки() она ищет ссылку на объект контрагента по наименованию, а при «ИНН и КПП» нужно искать по ИНН
Переделал так и все работает как нужно
Показать
(46) Re:аниматор, спасибо. Добавлю в обработку.
Столкнулся с такой проблемой:
Есть 2 сервера приложения. На одном SRV-1 установлена УТ платформа 8.3.4 на другом SRV-2 БП 3.0 платформа 8.3.5 (платформа 8.3.4 тоже установлена на SRV-2).
При формировании отчета из УТ (Платформа 8.3.4) с соединением с базой БП 3.0 (Платформа 8.3.5) выходит ошибка:
{ВнешняяОбработка.СверкаОстатковКонтрагентов.МодульОбъекта(41)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Версия компоненты ‘comcntr’ (8.3.5.1119) отличается от версии корневого модуля ‘core83’ (8.3.4.496)
Есть способ победить?
(48) Re:аниматор, Ты соединяешься соm-соединением 8.3.4 с сервером 8.3.5
Решений несколько:
-Установить везде один сервер, например 8.3.5
-установить на компьютере, где запускается обработка кроме клиента 8.3.4 еще и клиента 8.3.5
-подменить на компьютере, где запускается обработка, файл comcntr.dll версии 8.3.4 на 8.3.5 скопировав его с компьютера где развернут клиент 8.3.5. Может потребуется его зарегистрировать.
Во втором и третьем случае нужно понимать, что если com-соединения используются где-то еще, кроме данной обработки, они могут перестать работать.
(49) в том и дело, что
это исключено. Разделение из за глючности 8.3.5, УТ на 8.3.4 (на 8.3.5 зависает) БП 3.0 на 8.3.5
ГЛЮЧНАЯ Платформа 8.3.5
так тоже не работает
Рискованно …
Походу придется писать другой вариант этой обработки. Из УТ выгружать данные в файл, в БП 3.0 отчет формировать по бух. регистрам с загрузкой данных из файла и сверять. как то так видать придется сделать тогда
(50) Re:аниматор, «….так тоже не работает …» Второй вариант у тебя не работает скорее всего из-за того что comcntr.dll от 8.3.5 не зарегистрировался. Обычно при установке он регистрируется автоматически. Можно его зарегистрировать вручную.
Побывал регистрировать в ручную версию 8.3.5 и 8.3.4 всё равно НЕ работает …
(52) Re:аниматор, немного не так. У клиента может работать только один comcntr. Т.е. регистрировать нужно только одну библиотеку — ту которая будет использоваться.
(53) так вот я регистрировал, проверял, регистрировал проверял. выдает ошибку…
Бухгалтерам обработка очень понравилась, а теперь плачут, что взаиморасчеты не могут сверить 🙂 уже всё перепробовал.
установить везде 8.3.5 пока нельзя, зависает УТ на 8.3.5 …
regsvr32 C:Program Files1cv828.3.4.496incomcntr.dll
ИЛИ
regsvr32 C:Program Files1cv828.3.5.1119incomcntr.dll
Ошибка всегда одинаковая
(54) Re:аниматор, да ошибка явно в нестыковке версий платформы. Как вариант — а в конфигурации в 8.3.5 какой режим совместимости? Этим не пробовал поиграться?
(55) Бухгалтерия 3.0 в режиме поддержки 8.3.4 (этот режим установлен разработчиками 1С)
можно конечно для БП установить и 8.3.4 (рекомендуется 8.3.5), но скоро поддержка на 8.3.4 в БП 3.0 будет отключена и мин. версия платформы будет 8.3.5 там под 8.3.4 100% не зайти
Я вот думаю, сделать сверку через внешний файл, ну к примеру с УТ выгружать в файл, а в БП 3.0 загружать файл, формировать данные и сверять.
По видимому так и придется сделать …
(57) Re:аниматор, это конечно хлопотно, тебе прийдется дописывать, но радует что это все временно. Когда перейдете полностью на 8,3,5 с этим проблем не будет.
(58) временно?
ну не знаю на сколько это временно… Подготавливаем грозное письмо франчи, по нашей проблеме.
т.к. по багтрекеру все что касается наших проблем 0.
Сделал через выгрузку в файл. С БП 3.0 выгружаю файл в формате xml с данными и параметрами отчета (период, организация и т.д.). В УТ 10.3 в форму загружаю файл xml, автоматически по параметрам заполняются данные и сверяются с данными файла. Выводится протокол сверки. Получилось просто для пользования и быстро. Для себя решил проблему подключения между версиями одной платформы по ole.
(60) Re:аниматор, хорошее решение.
С Бухгалтерией 3.0 и УТ 10.3 будет работать?
(62) Asenka, будет. Обработка запускается в Торговле. Общая структура хранения данных БП20 и БП30 одинакова.
(63) aspirator23, Обработка работает отлично. Но если подключается из УТ к базе Бухгалтерии 3.0 пользователь с правами НЕ Администратор (в Бухгалтерии), то подключение не проходит. Как решить проблему?
(64) Asenka, Это объяснимо. При подключении используется com-соедниение. Скорее всего в бухгалтерии у это пользователя нет прав на внешнее соединение.
Нужно его добавить.
А для УТ 11 что нибудь подобное есть?
(66)Можно написать
Спасибо! Немного изменил и переписал как внешнюю печатную форму. Удобно вызывать из любого документа и сразу иметь данные по контрагенту/договору. Если автор не против, могу выложить свой модифицированный вариант…
А для УТ 10.1 и БП 3.0 будет работать?
(69) УТ 10.1 нужно посмотреть регистры. Конфигурацию выложите?