<?php // Полная загрузка сервисных книжек, создан 2025-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='\
Шевченко Павел знает об этом?
pavelshev@svitonline.com
Не удалось связаться, если кто поможет — буду рад.
К тому же А.Геринг поучаствовал, не оставив адреса.
И бета как-никак..
цитата из ридми
© Шевченко Павел, pavelshev@svitonline..com, Киев, 2000-2004
Последнюю версию обработки всегда можно найти в разделе репозитария на сайте http://www.itland.ru
Стоимость полной версии 10$, способ оплаты http://www.webmoney.ru,
мой ящик № 627369820689
мой кошелёк № Z847190207956
Полная версия отличается от демо только возможностью сохранения правил
настроки. Поэтому перед покупкой убедитесь что демо версия
Вас полностью устраивает.
по поводу переноса операций и проводок — я имел в виду нормально ли переносит ручные операции? в т.ч. с проводками, где субконото в пофигураторе определены как «общего» вида (т.е. типа «Справочник» или «Неопределенный»)..???
Заметил только одно отличие отhttp://infostart.ru/projects/3429/
это добавленную в Universal.ert строку:
Если колОбъектовВтранзакции=0 Тогда колОбъектовВтранзакции=1 КонецЕсли;//+Altez-
Других отличий нет. Здорово было бы это написать в описании, т.к. нифига не ясно почему надо брать ту или эту.
И зачем в архив вложен лог вашей конвертации и настройки от непонятно какой конфигурации?
Аве Шевченко, сменил тип скт «СтавкаНДС» на «Справочник», операция перенеслось в обе стороны безупречно.
Че, а где тебе встретилось «Неопределено» в качестве типа субконто?
(4) при апдейте недостерилизовал, поправим.
Брать любую, только 3459 без транзакции в критеррор не вылетает.
1. Есть возможность переносить документы с новыми номерами?
Т.е. если в приемнике уже есть документ с таким номером — создавать новый документ и переносить данные в него.
2. Есть ли возможность синхронизировать в справочниках только пометки на удаление?
3. Не переносится история периодических реквизитов справочника, это бага или я настройку какую-то не заметил?
(7)1,2,3 Не делал,
Автор грит: Доп.настройки работают не все, надо тестить
реквизит-ключ синхронизации (красный квадрат) для реквизитов спр. и доков выбирается, работает,
1)по 2клику на строку колонки «Соответствие» для доков есть возможность Создавать новые и перезаписывать существующие вроде.
* спр. и доков — только спр.
доки по периоду и номеру синхронизуются
Но! обработка не различает документов, которые лежат в одном дне с одинаковыми номерами… Например: имея в одном дне две счф с одинаковыми номерами — при переносе «сливает» в одну — и имеем последнюю… понятно, что это скорее «бага» базы-источника…
Для чего нужно создание нового документа (пример реальной сегодняшней ситуации):
Оператор , видимо недостаточно проснувшись, утром открыл копию базы для с ночной выгрузкой для отчетов, и пол дня колотил туда документы, параллельно с ним остальные более сознательные работали в основной базе. Номера там и там получались по порядку одни и теже. Когда это вскрылось встал вопрос: «Что делать?». Я решил все же помочь человеку и не заставлять вручную повторять работу, а перенести этой обработкой и наткнулся на то, что документы не переносятся, т.к. с таким номером за эту дату в приемнике уже есть. Пришлось сначала перенумеровать документы в источнике, после этого все прошло замечательно. но идея, что такой функционал был бы полезен — появилась.
Еще не хватает следующего: указывать какие документы тянуть за собой по ссылкам, а какие нет. Сейчас можно ограничить только период.
Чтобы не перезаписывать документы, патчим строки
4157
Показать полностью
на
Показать полностью
и
4182
Показать полностью
на
Показать полностью
Будет время допишу окно с выбором конкретных доков и спр. для переноса.
*
Показать полностью
мдя
Показать полностью
(15) Обнаружил глюк, не пойму, у меня или у обработки проблемы…
Перенесся документ в приемник. Открываю, счет указан, виды субконто перенеслись, а сами субконто нет. Лечится перевыбром счета и повторной переброской с галочкой «перезаписывать». Но это ж не дело. Наверное, что-то не настроил? Подскажи, плиз…
254452090
jabber: vlechu4uu@gmail.com
не коректно переносит рекв. типа «Вид расчетов» — 2-е одинаковые базы 7.7 (скуль и дбф): перенос из скуль в дбф
сами выди расчетов сопоставленны коректно
т.е. может ввобще не перенести или перенести частично
PS вообще не переносит
PS вообще не переносит реквизита типа «Виды расчетов»
строки 4012 — 4027 (в bugfixed):
ИначеЕсли Типок=13 Тогда
ТипЗначОЛЕ=»Календарь»;
Возврат ПолучитьКалендарь(Рекв);
ИначеЕсли Типок=14 Тогда
ТипЗначОЛЕ=»ВидРасчета»;
Возврат ПолучитьВидРасчета(Рекв);
ИначеЕсли Типок=15 Тогда
ТипЗначОЛЕ=»Счет»;
Возврат ПолучитьСчет(Рекв);
ИначеЕсли Типок=16 Тогда
ТипЗначОЛЕ=»ВидСубконто»;
Возврат ПолучитьВидСубконто(Рекв);
ИначеЕсли Типок=17 Тогда
ТипЗначОЛЕ=»ПланСчетов»;
Возврат ПолучитьПланСчетов(Рекв);
КонецЕсли;
добавить «Возврат»и все ОК
за это спасибо ©Ёпрст
Не переносит реквизиты документов неопределенного типа 🙁
о-па, пример плз
>о-па, пример плз
из ЗИК в ЗИК — документ НачисленияУдержанияСотрудника — реквизит «Расчет»
я так понимаю его и не реализуешь в данной обработке 🙁
(25) по (24) — я же говорил…
(26),(27) в ЗиК ещё не пригождалась, к тому же актуальность разработки под 7.7 падает, как и смысл тюнить шедевр, теперь в музей
(27)перезалил с учетом (22) и
(29) Спасибо!!!
.
а насчет 7.7 теряет актуальность — конечно не в первых рядах.. но очень долго будет еще жива…
добавьте в обработку возможность переносить остатки за определенный период (между одинаковыми конфигурациями) через ОЛЕ. Спасиб
так «остатки» надо свернуть в операцию (в документ)
обработкой типа rap.ert c инфостарта или wrap.ert c ИТС
а потом го перенос
А кто скажет — толком разъяснит — Универсал и Универсам — это что? какая из них правильнее???
(33) они одинаковые
(33) форки разных афторофф. Убрал -сам и -сал, оставил 2.7i как более свежий.
(35) а не скинуть ли тебе вариант которым я пользовался — там тоже был ряд багов устранен — сравнить тексты и пополнить текущую версию???
(36) с радостью, как найти/опознать этот вариант?
(37) кинь на e.meil@mail.ru свое мыло
отправлю вечером из дома
заголовок разработки поправь: «..- унивеРсальный»
Даже не удается запустить ❓
Если База.Метаданные.Перечисление()=0 Тогда
{D:UNIVERSAL 2.7UNIVERSAL.ERT(2168)}: Значение не представляет агрегатный объект (Метаданные)
Пожалуйста, вышлете мне полную обработку Универсал 2.7 на andnik78@mail.ru
(41)Неужто не скачивается? И мыло спамерам скормил..
если тип реквизита документа не определен и в нем число, то не учитывает размерность и преобразует все числа в целое с 5 знаками.
для исправления кому надо везде по тексту где найдете функцию «НазначитьТип» сделайте подобные правки:
было:
ПериодПерПри.НазначитьТип(глТипЗначенияОЛЕ);
стало:
Если глТипЗначенияОЛЕ=»Число» Тогда
ПериодПерПри.НазначитьТип(глТипЗначенияОЛЕ,15,5);
Иначе
ПериодПерПри.НазначитьТип(глТипЗначенияОЛЕ);
КонецЕсли;
Спасибо
Спасибо вам за обработку
спасибо автору, автор пищи еще.
Автору большое спасибо, обработка лучшая из всех, которыми доводилось пользоваться при переносе.(конечно не без недостатков, как было писано выше)
Что-то, как-то тюнинг застоялся. Пора-бы уже и доп. настройки доделать:)
(48)8ка не пускает. а что за настройки?
по синхронизации…
ПС или это Павел планировал?
ПСПС А вопрос снимается сам нашел цитату
Автор грит: Доп.настройки работают не все, надо тестить
Все работает!
Использовал несколько раз на разных базах. Где-то прокатывало, где-то нет. Так что есть и плюсы и минусы.
Не пойму как открыть базу источник. При открытии внизу справа базы источника обработка пытается открыть файл с расширением UNI.
А как указать базу откуда копировать?
А есть ли где нибудь документация по пользованию этой обработкой. По ReadMe понять как работать довольно сложно. Потратил кучу времени пока выяснил, что база источник это база откуда запускается обработка. Есть ли где-то в природе описание работы с этим мощным инструментом или как всегда нужно осваивать «методом тыка»?
Как я могу купить данную обработку, чтобы она сохраняла настройки? По е-майл, указанному в обработке, связаться с Шевченко Павлом не удается
(55) Arico, у меня сохраняла, что из настроек не сохранилось?
(54) вникал нажимая кнопки слева направо сверху вниз, в тяжелых случаях открывал отладчик,
мы ж не в ЦУПе, а какой случай по-вашему нужно задокументировать или экранизировать?
Попробую перенести справочники из Бух Бух, как получится постараюсь отписаться.
Как перенести документы из ТиС в ТиС, справочник единицы не синхронизируется т.к. код и наименование нулевой длины? Ошибка: Для справочника Единицы не установлен ключ синхронизации!
(59) nkorkin, изв. уже не помню как синхронилось, буду рад, если кто недавно переносил решение обубликует
Спасибо за обработку, очень выручила при переходе с самописной базы данных
Это то, что надо! Отличная вещь, давно искал, спасибо! Спасибо автору!
(16) Паланик,
Вместо
Если ТабДокТЛок.ТипСоот=»Неопределенный» Тогда
БазаДок.НазначитьТип(ТабДокТЛок.РеквСоот,глТипЗначенияОЛЕ);
КонецЕсли;
попробуйте
Попытка
БазаДок.НазначитьТип(ТабДокТЛок.РеквСоот,глТипЗначенияОЛЕ);
Исключение
КонецПопытки;
и вместо
Если (ТабДокШоЛок.ТипСоот=»Неопределенный») Тогда
БазаДок.НазначитьТип(ТабДокШоЛок.РеквСоот,глТипЗначенияОЛЕ);
КонецЕсли;
вот это
Попытка
БазаДок.НазначитьТип(ТабДокШоЛок.РеквСоот,глТипЗначенияОЛЕ);
Исключение
КонецПопытки;
Кто нибудь может подсказать как с помощью этой обработки переписать только календари? При нажатии на «Ок» высвечиваются только справочники, документы и константы.
(59) nkorkin,
ты решил проблему? у меня даже если поставить синхронизацию по ОКЕИ то все равно фигня какаято получается, типа невозможно сохранить…. бла бла бла…
Ругается — переносит. в с базовых единицах пусто.
как перенести справочник только номенклатуры? ну со всеми единицами и штрих-кодами конечно.
если даже не с этой обработкой, то какие есть еще варианты?
вопрос есть: при переносе документа его реквизит-справочник, существующий в базе приемнике и источнике с одним кодом, но разным содержимым перезаписывается или пропускается?
Подскажите, как с помощью Universal синхронизировать справочники номенклатуры в Бухгалтерии и ТиС? Если наименование товара совпадает — перезаписать с заменой кода, если нет — создать новый в подходящей для этого группы (группы заведомо названы одинаково). Минут 40 уже бьюсь — номенклатура тупо дублируется вне зависимости от настроек.
(59) То же никак… Правда база приемник очень сильно переписана, но и между двумя «стандартными» ТиС с ошибками. : (
(59) nkorkin, Добрый день. Подскажите — вы решили проблему или нет? у меня сейчас такая же ошибка не дает перенести еденицу измерения в номенклатуре, а справочник насчитывает порядка 16000 едениц
(69)к сож. обработка давно не поддерживается (хотя возможность перенести вышеупомянутые справочники в ней есть, ибо переносил), конвертация данных в помощь
А еще как бороться с такой ошибкой:
Метод ОсновнойЖурналРасчетов не может быть доступен так как компонента Расчет не загружена!
Конфигурация ТиС 9.2 (7.70.963)
(70)нужно просто закомментировать строчку кода, вызывающую исключение
(69) Нет не решил. Юзал Рокет.
По поводу единиц…не вдавался подробно…нет времени на это. Но если модифицировать код вот так. То по быстрому получится синхронизировать справочники, если не создаются в приемнике элементы и они там уже есть.
Искать по //Синхронизация
Показать
Некоторые проблемы с переносом реквизитов неопределенного типа решает добавление кода в строке номер 2277
Показать