<?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='\
Новая моя программуленка. Т.е. она старая, просто не пулбиковалась.
Сильно не ругайте, лучше посоветуйте что нужно улучшить 🙂
У меня вот что пишет:
ДатаС=Что.ПолучитьДокумент().ТекущийДокумент().ДатаДок+1;
{C:DOCUMENTS AND SETTINGSPC_10РАБОЧИЙ СТОЛВОССТАНОВЛЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ.ERT(238)}: Значение не представляет агрегатный объект (ДатаДок)
(2) Последовательности есть в конфигурации? Хоть одна?
А граница у нее есть? Выставлена документом? Этот документ не удалили?
(3)
> Последовательности есть в конфигурации? Хоть одна?
Зачем это спрашивать у пользователя? Может проверить программно?
Кстати, ошибка будет другая:
Имя=Посл.ПолучитьЗначение(Посл.ТекущаяСтрока());
{С:REPAIR.ERT(236)}: Индекс не входит в границы списка значений.
Что=Последовательность.ПолучитьАтрибут(Имя);
{С:REPAIR.ERT(237)}: Неверное имя атрибута
> А граница у нее есть? Выставлена документом? Этот документ не удалили?
Для чего нужна эта обработка? Заявлено, чтобы ответы были «ДА» независимо от начальных условий. После работы обработки, но не до начала… 😉
Я прошу прощения. Смотрела в конфигурации, где нет ни одного документа из последовательности. Проверила на другой все работает.
(4) ты права, сделаю проверку для блондинок 🙂
Только не обижайтесь, милые дамы 🙂
Лучше расскажите, чем вы там занимаетесь. Мы, мужчины, очень любим блондиночек. А я — ужос какой любопытный 🙂
(6) хм… проверка нужна еще и в том случае, когда последовательности есть, но не все они имеют документы.
(6)>Мы, мужчины, очень любим блондиночек.
За всех не расписывайся! Я люблю зеленоглазых шатенок
(5) Обновил версию. Спасибо!
Вот за что я люблю мужчин-программистов, так это за их снисхождение к нам… блондиночкам, шатеночкам…
(9) прости, Аркадий! Я дико извиняюсь 🙂
Вообще, внешность не главное. Главное — чтоб человек хороший был.
(10) и к брюнеточкам тоже 🙂
(11)>Вообще, внешность не главное.
ИЗВИНЯЙСЯ второй раз:))))))))))
— Карлсон, поверь, не в пирогах счастье!
— Ты что, с ума сошел? А в чем же еще?
😉
фик! не извинюсь! 🙂
счастье — в начинке 😉
Как-то не очень правильно считает время выполнения:
Общее время обработки 3615 сек.
Общее время проведения 90014 сек.
(15) ого! спасибо, я посмотрю
но у меня все было правильно 🙂
Надо попробовать. Только вот, что метки присутствуют настораживает
ReconnectNative() сильно увеличивает скорость?
(18) для 2000 SQL в десятки раз 🙂
+ (19) для 2005, как я понимаю — нет
В нем была исправлена ошибка
(16)
Запусти обработку на пару суток. Сразу увидишь неправиьлность.
у нас 2000)) в 10 раз по сравнению со стандартной?
(21) спасибо, я понял в чем суть
(22) был такой случай, это касается не этой обработки, а вообще метода.
Нужно было провести примерно 20 документов по 3’000-8’000 строк.
Первый провелся за 15 минут, 10 за 3 часа, 15 не провелся вообще (оборвали)
Началось в пятницу вечером, не закончилось в понедельниу утром.
Цифры примерные, просто для оценки количественной характеристики.
(25) Ну у нас вообще большой документооборот, в основном по 5-30 строк доки. Немного допишу твою, добавлю лог в частности и проверим. Спасибо в общем — мне вот влом что то выкладывать
+ я не помню как в типовой торговле, но у нас приходные накладные вводятся на основании заказа поставщику, а те в свою очередь по заказу покупателя(не всегда). Так что тупо перенести приходные на начало дня не получится — будут минусы в регистрах резервах
Ребята, а можете написать обработку для проверки все ли кассы отправили закрытие смены в общую базу, их 21 шт. отправляют (обмен авто по фтп серверу) чтобы можно было с утра нажать кнопочку и увидеть если не пришел хотя бы 1 отчет). ТиС 7.7..помогите..вы же «монстры»*))
А (27) может написать обработку «Автоматическое доведение вашей конфы до божественной» ))) Чтобы запустил и все отлично стало, при чем у всех сразу
(27) мы все можем…. но иногда нам лень 🙂
Обновил, но не проверил. Надеюсь, хуже не стало 🙂
На домашнем компе, оказывается, не установлен телепат.
Ацкие муки 🙁
Спасибо! Прям что то как то быстро отработала, в отличии от стандартной =)
Большой и жирный плюс!!! «+»
(31) Спасибо за комментарий! Я очень рад, что пригодилось.
Лично я стандартным восстановлением последевательности последний раз пользовался еще в прошлом веке. 🙂
Воспоминания очень неприятные.
Извините за нескромный вопрос: а зачем таймаут между документами в 10 сек, понятно что в рабочее время.. но и врабочее время есть моменты относительного «бездействия» системы — и зачем в это время ждать по 10 сек?
(33) Мне кажется трудно отследить, а тем более, спрогнозировать занятость системы.
Ситуация — работают 5-10 менеджеров, а нужно срочно восстанавливать последовательность (бухи требуют).
Если не делать паузы — ожидание захвата таблиц.
(34)
1. а если попробовать ромиксовый патч 100% загрузки проца?
2. делать 10 сек паузу там, где модно обойтись вообще без пауз — бяка, подход «в лоб»…
(35) а если не под терминалами?
(36) тогда — вешаться… 😉
(37) отож 🙂
Поэтому, если нет другого варианта (установленный патч)- тогда паузы.
Пользователь сам может выбрать.
(35-38)
😉 Интересный разговор получился у вас.
Паузы между транзакциям не имеют никакого отношения к «ромиксовый патч 100% загрузки проца». А обмен мнениями по поводу терминального режима какое имеет отношение к паузам между транзакциями и «100% загрузки процессора»?
Пауза между транзакциями позволяет другой задаче вклиниться в сплошной поток транзакций, а разработка Романа позволяет не загружать систему уже в процессе выполнения транзакции опросом блокировок в ожидающей задаче. Т.е. надо делать и паузы между транзакциями, и использовать разработку Романа. И не только в терминальном режиме, а и в обычном сетевом режиме.
(39) не мог же я спорить с самим Че 🙂
Насколько я помню, основной выигрыш патч Ромикса дает именно в терминальном варианте. Поэтому в сетевом режиме он не так актуален. Какая разница, будет ли процессор загружен на 100% на клиентской машине, если все равно пользователю сначала нужно провести документ.
А вообще, я согласен — паузы нужны в «дневном режиме».
Поэтому они и есть 🙂
Кстати, мне кажется, пауз больше нет ни в одной аналогичной разработке на ИС.
(40)
😉 Совсем меня запутали.
Да, больший «выигрыш патч Ромикса дает» в терминальном режиме чем в сетевом. Хотя загрузка сети на 100% при опросе блокировок тоже не положительно влияет на производительность системы. Да и не совсем безразлично «будет ли процессор загружен на 100% на клиентской машине». Например на клиентской машине выполняется задача с «пакетным» проведением документов, а пользователь работает в текстовом редакторе. Вроде в последних версиях Windows-а уже можно запускать две задачи…
41)
«Кстати, мне кажется, пауз больше нет ни в одной аналогичной разработке на ИС.»
Про ИС не скажу, а у меня во всех разработка такого рода есть окно диалога с количеством секунд ожидания между…
(42) под словом «клиентская» я понимал что это не сервер.
«Обычные» пользователи не запускают такие обработки, они накладные колбасят.
Их запускают Администраторы БД, а сами идут пить пиво 🙂
Поэтому многозадачность Windows в данном случае не востребованна.
(43) У меня тоже много фич есть, но я удовольствие растягиваю 🙂
Кстати еще одно пожелание. Иногда бывает необходимо, чтобы если док не проводится он не прерывал обработку, а продолжил ее, ведя при этом лог. Смысл в следующем: Приходишь с утра, заглядываешь в лог — смотришь доки, которые не провелись, исправляешь косяки и запускаешь восстановление последовательности
(45) ноу проблем
но я себе тогда не делал
Ситуация — партионный учет, не провелся док с 500 или 1000 позиций.
А остальные провелись. Как будто 🙂
(46) у нас тоже партионный учет, но за пару дней может быть 2-3, а то и больше косячных документов — отделу закупок большие права дали, по перепроведению документов и их изменению, а там такая система взаимосвязанная с заявками. реализациями и прочее. Сам я себе уже добавил и лог и чтобы проводилось дальше. Мне кажется лог по крайней мере нужен — хотя бы инфа когда началось, когда кончилось, ну статистика по скорости. какие доки не провелись.. а то прихожу на работу последний в отделе — а там раз и сервак скульный перегрузили и не понятно без лога чем закончилось дело)))
(47) Лог у меня есть
в первоначальном варианте записывалось в текстовый файл.
После каждого дока он записывался, как раз на случай не предвиденных ситуаций.
— да я тоже не против пауз, напрягает только полная «тупизна» такой организации пауз…
— решение по восстановлению последовательности с паузами в рабочем режиме вроде есть на дисках ИТС (давно туда не заглядывал)
— (47) зарубите на! вся
(47) kalleka, тебе сюдаhttp://infostart.ru/projects/887/
(50) мда… а давайте все будем заходить в чужие аналогичные разработки и переманивать на свои.
(51) А почему бы этого не делать? Пользователи должны знать о различных вариантах и использовать лучшее.
(52) Я, например, думал, что для этого создан рубрикатор. Иначе у пользователя может создаться «неверное» (неполное) представление. Обработок подобной направленности на ИС не 2, а в десятки раз больше…
(52) Мне в этой обработке понравился ReconnectNative(), к тому же я скомпоновал с нашей предыдущей обработкой и все вроде устраивает пока
(49) Насчет ограничения Юзверей согласен. Но здесь работаю месяц всего, пока не время наводить свои порядки
Блин, не понятно зачем в 182 строке ТекДок.Провести(,1) передан параметр 1? Для чего? У нас один документ использует этот параметр и он криво провелся. За 3 дня таких доков 100 наверное — из за кривого проведения вылезли минусы в остатках
(55) Я извиняюсь, уже убрал и перезалил
(55) Отослал сообщение о найденной проблеме всем плюсовавшим.
Почти всем 🙂
При установке галочки «Предварительно ПН — в начало дня» выдает сообщение об ошибке создания объекта «Документ.ПриходнаяНакладная»…и это правильно, потому что в Торговле 7.7 такого документа НЕТ! А есть «Документ.ПоступлениеТМЦ»….
(58) Я об этом уже думал, что бы сделать поле для выбора вида Приходного документа.
> потому что в Торговле 7.7 такого документа НЕТ
Не следует путать платформу и конфигурацию 🙂
Вот, например, Комплекс: ПриходнаяНакладная, Т_ПриходнаяНакладная
Что вижу, то и пою….В описании написано «Внешний отчет, обработка для 1С: Торговля и склад 7.7 »
ЗЫ: В Комплексной 7.7 тоже нет объекта «Документ.ПриходнаяНакладная»… или мы используем разные конфигурации??
(60) Конфигураций много 🙂
Уже изменил, скоро выложу.
Обновил. Еще куча новых идей появилась 🙂
Лог добавил? лучше если с настройкой «подробности» лога
(63) еще нет. Работа….. 🙁
Не знаю, может у меня чего в ТиС не так, или руки там итп, но штатная у меня работает быстрее вдвое…
усомнился…
сделал копию базы, хотел устроить «соревнования» при прочих равных — некогда…
А пока не утруждал себя точной записью результатов, извините.
На вскидку получилось так:
по данным обработки среднее время проведения под 20 секунд…
это ~3 дока в минуту…
штатная нt считает среднее время, но по 7-10 обычных доков в минуту делает…
(инвентаризационные итп большие доки не берем)
Идеи reconnect, с таймером — понравились,
проводить последовательность онлайн, в рабочее время…
(в штатную засуну?)
делал через «Предупреждение» — да, глючит, тут много вокруг этого понаписано по объект таймер итп…
>проводить последовательность онлайн, в рабочее время…
Не знаю как на других базах, а на моей манагеры просто работать не смогут, если ГП в рабочее время пойдет. Будет полный виснец
(65) соревнования надо проводить в нерабочее время, по очереди
(66) а ты попробуй 🙂
Мне бы очень понравилось, если бы
1) сообщения о проведенных доках можно было бы выводить пакетами по сколько-нибудь штук,либо вовсе не выводить
2) Если бы время шло все-таки в секундах.миллисекундах
3) если бы была возможность вызывать обработку снаружи, тогда, например,
добавим в глобальный модуль
Функция RunAny(Параметр,ИмяФайла) Экспорт
ОткрытьФорму(«Отчет#», Параметр, ИмяФайла);
Return 1;
КонецФункции
И вызываем из штатного шедулера vbs скрипт
set v7 = CreateObject(«V77.Application»)
result = v7.Initialize(v7.RMTrade, «/DПутб /NСпецЮзер /PЕгоПароль»,»NO_SPLASH_SHOW»)
if result then
LogFile.WriteLine » Ok connected «+FormatDateTime(Time)
V7.EvalExpr(«RunAny(«»СтрокаПараметра»»,»»\ПутьКОбработке
epair.ert»»)»)
……
Версия обновлена до 1.4 от 09.06.2009 — добавлена возможность сортировки нескольких видов документов, предварительно помещаемых в начало дня.
По просьбам из комментариев
1.5 от 18.09.2009
Добавлено: возможность выборочного протоколирования результатов файл.
Добавлено: возможность перепроведения всех документов, а не только из последовательности.
Удалено (!): использование метода ReconnectNative()
Обработка -супер. Достоинство в том что при про проведении не засоряется Журнал регистрации, до этого я пользовался другой , там постоянно (при проведении каждого документа переносилась ТА), таким образом два -три дня в ЖР шум в 500-600 ненужных записей. Спасибо!!!!!
(71) Не за что 🙂
P.S. А плюсовать лучше не комментрии, а саму разработку 😉
(0)вот честно здря реконнект убрал. Обработка жирный плюс… но мог бы оставить желающие и знающие бы использовали.
(73) Были нюансы… Но предыдущую версию я оставил.
Спасибо!
Кстати, забыл упомянуть о седьмой фичи 😀
(74) а можно подробнее с нюансами? Потому как планирую назад вставить реконнект (только с возможностью установить переодичность в документах).
(75)http://www.1cpp.ru/docum/html/ODBC.html#reconnectnative-reconnectnative
Описание: специальный метод для решения проблемы с MSSQL 2000 (Bug #: 472280) Выполняет отключение и подключение родного соединения программы с сервером. При этом не должно быть открытых форм списков, форм объектов, прочих объектов языка на основе курсора, подготовленных или перебираемых объектов ODBCRecordset (через родное соединение, разумеется). Не допускается вызывать этот метод в транзакции явной или неявной.
Насколько я помню, когда затачивал под ReconnectNative() пришлось отказаться от объявления Перем ДокиДляПроведения в модуле процедуры.
Сравните, как это делается в 4 версии. Там док для проведения каждый раз создается независимо из последовательности.
Но если очень надо, могу попробовать побороть.
Кстати, а почему бы Вам не поставить более свежий скуль?
(76) Более свежий скуль для 7.7 даже с патчами не хочет стабильно работать у меня… Частые вылеты + непонятные блокировки и зависающие сессии. Очень сильно переписанная конфа. Просто нет возможности отловить все баги. Вообщем остается надежда на реконнект.
Тем более я как поборол эту бяку (открытые курсоры)… писал все в список значений (Это для того чтобы в одном месте была процедура) сохранял в Значениевстроку а после выполнения метода восстанавливал.
А если требовалось в обработке то просто это значениеВСтроку и после метода реконнект(). А по поводу скуля поновее есть ли пример (версия с какими патчами) корректно работает? Чем черт не шутит вдруг правда встанет (уже год переписываю все на прямые запросы и иные ускорители исправил кучу косяков, может помогло). а так респект за обработку очень нужная вещь. Если найду гдето был запрос на версию sql с чем работаем и активация реконнект по этому методу сильно облегчит жизнь..
(62) кстати из новых идей. как бы оформить возможность предварительной обработки документов по виду? все просто предлагаю закладку для спецов в которой они по виду документа например перед обработкой что-то делали (например меняли поля или добавляли что-то к комментарию документа) соответственно как параметр- сам документ
например так
вид документа |обработка(путь)|Модально|
«Реализация» | каталогобработокОбработкаИзмененияКомментария.ert |1|
(77) > писал все в список значений (Это для того чтобы в одном месте была процедура) сохранял в Значениевстроку а после выполнения метода восстанавливал.
А зачем список значений? Хватило бы и переменной модуля обработки, в которой содержится ЗначениеВСтрокуВнутр последнего документа.
Кстати, через список значений у меня тоже есть в Функция ПНвНачало().
Это была отдельная грустная история.
В этой разработке объединенены несколько. И раньше была отдельная обработка, которая Приходные накладные перебрасывала в начало дня.
Как потом оказалось, она была коряво написана, хотя и работала. И даже на вид казалось правильной.
И работала она довольно шустро. А когда по инициативе руководства был осуществленный внезапный неподготовленный переход на скуль, то оказалось, что время ее работы выросло в десятки! раз.
Кстати, этот «левый» переход сделал его приходящий корефан, который считал и, наверно, до сих пор себя считает крутым программистом 🙂
Дошло даже до того что в первый рабочий день только один человек мог зайти в базу.
На мой вопрос:
— А вы проверяли?
Был дан ответ:
— Да
— А на скольки компьютерах 1С запускали?
— На одном
— А почему только на одном?!
…. ответа не последовало…. кажется. Давно это было…
Вот так и получилось, что все преимущества файловой версии потерялись, а недостатки скульной приобрелись.
+(80) Код должен был выглядеть так:
Док=СоздатьОбъект(«Документ.Приходная»);
Док.ВыбратьДокументы();
Пока Док.ПолучитьДокумент() = 1 Цикл
// Тут было изменение времени документа
КонецЦикла;
(80) в список значений это когда маркеры есть в глобальном модуле или еще где-то вот чтобы каждый раз не вспоминать их и ввел функцию которая собирала все в список сохраняла в строку а после реконнект востанавливала.
А насчет файловой версии есть плюсы есть минусы… Мне как-то скуль больше ипанирует в плане функционала а файловая в том что без использования реконнект проводит шустрее…
Ну а по поводу перевода на скуль. профи знает что делается это не за раз. А порой приходится и переписывать много.
(82) > профи знает что делается это не за раз
В том-то и дело 🙂
Эксперименты надо проводить не на «живой» базе и не на живых людях.
Представьте каково мне было, когдя я прихожу на работу, а менеджеры практически рыдают — cрочная отргузка, а таблицы залочены.
А этот «Кулибин» с сисадмином (тоже приходящим) где-то на другом конце города….
(83) Я вот также прихожу в фирмы и говорю что быстро но без гарантий стоит столько + гарантии в3-10 раз дороже.(+ исправление неявных проблем). И договариваюсь при свидетелях. Обычно после раздумий отказываются завут «спеца» дешево и сердито а потом вновь меня починить то что он наделал. (ну или стыдно и не зовут). Причем я заранее описываю типичные ошибки которые «спец» совершит. Обидно с одной стороны потом слышать что не послушали — потом все сломалось и позвали СПЕЦИАЛИСТА и выясняется что случилось именно так как говорил..
И главная проблема всех что ПОЧТИ НИКТО не пишет документации (Особенно я максимум видео стправку накатаю как и что и куда.) А после моих автоматизаций все работает если не менять ничего ибо каменты к коду пишу только к передаваемым параметрам и основным функциям и прцедурам. которые хоть и универсальны но не терпят ошибок при обращении с ними. И как-то приспичило привлечь франчей… Так те обплевали мои некоторые наработки «типа не стандартно 1С» переписали через 2 недели все просто порвало.. и доказать что это их вина было очень тяжело… нет документациии, описание изменений и тд… И они сертифицированные специ а я? Самоучка с опытом в 10 лет и ни одной притензии от клиентов. все как часы + 24 часа поддержка.
P.S. Тема уж больно знакомая. Недавно фирма педдержки (софт- железо) сервак уронили бездействием а потом прислали спецов которые русского языка не понимают и слова домен и рейд их в панику вгоняют… похерили инфу и еще счет выставили.. вот как после этого к таким относится?
(84) Просто крик души какой-то получился 🙂
(85) Просто надоели торгаши… они нихрена не создают кроме инфляции.
А создавать что-то, хоть и ввиде программ или сервисов- это хоть что-то… Я уважаю людей которые работают на созидание… А не тупо купи-продай это же система пожирающая сама себя… Мне обидно за будующее, точнее за его отсутствие… Просто сегодня все хотят отчетов а когда задал вопрос о том что надо ручками поработать» вбить данные правильные по своим клиентам» попытались свалить на меня со словами «ты же можешь»… Блин я могу и стрелять и пилить и петь, но это для души а остальное надо как-то оценивать а не требовать.
Подскажи, вот у меня есть задача перенести все документы поступления начало дня и выровнять последовательность. Я на третьей закладке указал диапазон дат,поставил галку «предварительно документы в начало», выбрал документы «Поступление ТМЦ» и «Возврат от покупателя» в табл.части и обработка работала всю ночь,но выбранные документы так и не перенесла в начало дня. Может я не совсем понял предназначение данной обработки и она этого не делает или что-то мешает ей перенести эти доки в нач. дня.
(87) Проведенные переносит, а не проведенные — нет
(88) сори сам разобрался, не обратил на дату «Не обрабатывать начиная со времени». По-умолчанию стоит ну уж очень позднее время, оказалось,что документы по реализации были на 06:00 ч., а некоторые по-поступлению чуть позже,но не позднее 8:00. Поставил время 02:00 и новое время от 0:30 и все норм.
(89) Я рад 🙂
В некоторых случаях для ускорения процесса предварительного перемещения документов можно было сделать другой алгоритм, например:
1. сделать два списка: в одном будут документы поступления, в другом документы списания.
2.Делаем выборку по всем документам в базе за указанный период
3.Перебираем документы, и на даты, где есть документы, смотрим, есть ли документы поступления, на конкретную дату, которые стоят позже, чем первый документ списания, то помещаем их в отдельный список переносимых документов на начало дня.
На мой взгляд, процесс проведения документов, особенно если они большие, гораздо длительней, чем проверки описанные мной.
(91)
1) А если не 2 вида документов, а 15? То 15 списков? 🙂
3) Так и делается
Лишние документы не перепроводятся!
Я сейчас говорю про обработку для предварительного переноса, у тебя сделано, как я понял, так, ты перемещаешь все выбранные для предварительного переноса документы,которые находятся позже времени «Не обрабатывать начиная со времени», не смотря, если в день этого документа документы списания.
А про списки почему 15? Не важно сколько там будет видов документов, чаще всего требуется именно, чтобы поступление шло раньше списания и мы можем все документы разделить на два списка.
(93) И я о ней говорю.
1) Ситуация, когда нет документов списания на порядок реже, чем наоборот.
2) Обычно менеджеры когда начинают списывать товар? в 9 утра. Склады могут и в 8. Для этого и служит параметр на форме «Не обрабатывать начиная с времени, ЧЧ:ММ».
И как универсальная обработка может знать, какой документ списывает товар?
Как по Вашему, док «Наряд-Заказ Гидравлика» списывает или приходует? Или и то, и то? 😉
Согласен на счет документов,которые могут быть, как приходом и как списанием, их можно отнести к исключениям или пусть пользователь сам решит, чем будет этот документ. Я, например, сейчас зарядил твою обработку и она мне перепроводит все документы поступления,хотя большинство из них и трогать не нужно,т.к. доки по реализации стоят, в большей степени, стоят позже доков поступления. Если, конечно, не заморачиваться,то и так все норм, просто долго идет предварительная перестановка, а потом еще восстановление последовательности, так что закончит она у меня только к позднему вечеру или завтра. Конечно, документов списания гораздо больше, но и поступлений не мало у меня, уже пару часов переставляет, а еще целый год впереди,где поступлений еще больше. Я мог бы поставить более позднее время, после которого нужно проверять,но могу опять попасться на ситуацию,когда реализация будет очень ранней.
(95) Ясненько 🙂
За целый год собрались одним махом все сделать?
Впервые эта оббработка работала в фарм.фирме с документами по 3-8 тыс. строк. Как приходными, так и расходными.
Перенос за один день шел порядка 10-15 минут. Если базу держать в актуальном состоянии, то будет попроще.
Кстати, общий совет… На надо переносить сразу за весь период, лучше частями, по месяцу или кварталу. И просматривайте логи.
Дело в том, что пришел к клиенту, у которого последовательность не восстанавливалась уже с 2007 года, у них такой там бардак, и они еще удивляются, что как-то криво строятся отчеты. Если делать по-частям, то я совсем заколебусь все года разбирать. Ладно посмотрю, что получится, если будет куча косяков,то сверну базу,откорректируют остатки и пусть в обязанности какого-нибудь сотрудника, хотя раз в неделю запускать эту обработку.
(97) Желаю Вам удачи в этом 🙂
Очень интересно узнать, чем это все закончилось.
Обновил 🙂
Версия 1.6 от 22.10.2009
Исправлено: обработка ситуации для режима «Перепроводить ВСЕ документы» в случае, когда граница последовательности стоит не на документе.
Спасибо! То что надо!