<?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='\
Приблуда Ромикса позволяет обойти ограничение на размер файла выгрузки
Будем знать (на досуге поищу «приблуду Ромикса» или кинь ссылку))
Только все же лучше не затягивать базу до таких размеров, т.к. «2GB» — это будет просто уже камень на могилку
+1 Отличное решение, вот только эта операция похожа на танец шамана с бубном. напрашивается автоматизация
)) точно, бубен местами присутствует :-)) но работы ведутся: пишу разбор файла обмена и автоформирование «обратных» файлов обмена.
Плагин romix-a
http://infostart.ru/projects/1512/
> Если тема интересна — выложу кусок конфиги с документом «Архив».
Интересна. Как раз сейчас бьюсь с 9Гб базой..
Кинь на мыло, пжалста: b-a (собака) mail.ru
Тема интересна. А если без УРБДН? export. import подойдет?Имеется 1 регистр остальной бух итоги. Документы текущего периода надо будет перепровести? Не хотелось бы.
Наверное если в конфиге основа ТиС то для распределения номенклатуры по партиям(создание партий как при поступлении товара) в ваш «Архив» еще что то надо дописывать?
(8) Ничего не надо дописывать. Архив перенесет по регистру «Партии наличие» остатки в разрезе Партий, т.е. ссылки на Спр.Партии сохранятся
(7) >export. import подойдет?
Только для простых маленьких баз.
И вообще — «без УРИБ» здесь не осуждаем.
А перепроведение оставшихся доков — необходимый этап для окончательной проверки. Идет гладко, если сделали хорошо.
Dolly_EV, выкладывание куска очень желательно.
Сочтешь возможным — давай!
(10) >Сочтешь возможным — давай!
объясните ламеру — как этот кусок выложить?))) это надо статью в рубрику «Программы» переместить, или можно как-то здесь?
или заказывйте на мыло — вышлю
А перепроведение доков текущего периода — вовсе не обязательно. Если в точке «обрезки» с остатками все Ок — перепроводить не надо, т.к. доки в текущем периоде с Обменом приедут из старой базы со всеми своими движениями, а «Архив» притащит как раз ссылки на эти движения.
Вот:http://infostart.ru/projects/1538/
положил конфигу
(13) Спасибо, взял, сделал рабочую базу.
На одном ПК симулировать распределенку возможно?
Тут объяснять не обязательно, но если есть ссылки
на инфу — не скрывайте.
(14) Пока нашел вот
http://faq1c.gorbunov.ru/docs-files/index.htm
(14) на одном ПК — конечно можно распределенку сделать
http://oksla.narod.ru/urib.htm
вот еще полезная ссылка
В остальном — спрашивайте конкретно, что не понятно
(14) «УРБД в 1С77 (пошаговая инструкция)»
http://kb.mista.ru/article.php?id=3
Кстати, на примере 1 ПК
У наших : Центр и 11-ть периферийных … База Аспект (типа ТиСа) чуть-чуть переписанный. Штатная свёртка выдаёт : ладПереноса.Записать();
{Обработка.ЗавершениеПериода.Форма.Модуль(404)}: Номер не уникальный!
Как сворачивать — х.з. … 🙁
2 sc25 (18): Вообще с вопросом — немножко оффтопик, но решается просто:
не знаю что есть ладПереноса, если справочник, то так:
Показать полностью
Если документ — то ПрисвоитьНовыйНомер()
А вообще — если в тему — то возьми "Архив" и попробуй свернуть базу по данной метОде ))
(18) Пригласите специалиста или почитайте про уникальность номеров
Решение в (19) или по этим докам временно отключить уникальность …
Зачет.
Один «-» в справочниках тоже могут быть ссылки на документы (те же партии) про них автор «забыл».
На счет автоматизации — операция разовая, зачем ее автоматизировать? Это все равно что создавать спец. документ под какую нибудь хитрож.ую операцию совершаемую один раз … иногда бухгалтера требуют 🙁
да, про «Спр.Партии» из ТиСа забыл, ибо сам его не юзаю))
… но исправляется «на раз»: 3 строки в обработке
автоматизировать «перенос» архива и ссылок стоит, если решить проблему «дубляжа» ID объектов при одновременной работе в старой и новой базе, и в дальнейшем «переформировании» Архива в старой и «перезагрузке» его в новую базу с новыми остатками и ссылками. Вот как раз у меня щас остро стоит эта проблема ((( Точнее решение то есть — работать в старой базе не в Центре, а в периферийке, в аналоге которой в новой базе НИКТО НИЧЕГО не создает…Но у меня поезд ушел … документы и справочники насоздавались и там и сям в Центре…
Уважаемы автор, вы пишите:
просто убиваем перед проведением «Архива» 1SUPDTS.DBF и CDX,
из этого я сдела вывод, что Ваша «старая» база была DBF-ной?
К SQL-базе есть смысл применять такой алгоритм?
(25) в СКЛьной базе убиваем соответствующие таблицы (называются они так же, только «_» перед именем)
Ок, все попробовала, эксперимент прошел успешно. Большое спасибо за идею.
Я рад!
Способ многократно ускорить удаление всей кучи документов за период — вернуть взад бухгалтерские итоги (или ТА — для ТИС).
После их удаления, пересчет итогов, соответственно, тоже пойдет быстро, т.к. самих документов нету уже 🙂
На SQL все так же работает на ура — проверено 20.04.08- разрезал базу размером почти 20Гб с 7-мью периферийками, на все-про-все ушло 7 часов.
Еще момент: если режем центральную с периферийными — чтобы потом быстро выгрузить новые периф. базы, достаточно в таблице _1SDBSET значение «C» поля «DBSTATUS» сменить на «N»,
чтобы осуществить первичную выгрузку в периферийные с ТЕМИ ЖЕ идентификаторами. Старые идентификаторы позволят подгрузить уже в новую базу обмены с перифериек, если,
например, нет возможностью заменить базы «разом» во всех подразделениях.
ничо себе в кратце :))
А как тебе след. вариант: Если у тебя уже есть документ с остатками, то посредством ОЛЕ перенести этот документ с синхронизацией справочников (в пустую базу) из оригинала.
Как на меня, то быстрее выйдет.;)
to 31
так это надо ПИСАТЬ ПЕРНОС OLE для этого документа! к тому же в моем варианте документ может ПРОВОДИТЬСЯ ТОЛЬКО в Рабочей (где есть остатки) базе
Как ты «посредством ОЛЕ» перенесешь ДВИЖЕНИЯ РЕГИТРОВ И ПРОВОДКИ документа?!?!
to 30
а не могли бы вы поделиться как на SQL очистить таблицы ( DH, DT, RA, RG, 1Cxx,1CUPDTS ). может есть кусок кода, а то унаследовала базу SQL огромных размеров с 10 распределенками, срочно надо ее резать, на dbf умею а на sql не пробовала
на SQL — точно так же, УДАЛЯЕМ (не чистим!) полностью нужные таблицы. Именуются таблицы так же, как и файлы в dbf, только в начале знак «_»
«_1SDBSET » и т.д.
Найти таблицы можно в след. месте:
для SQL 2000: «SQL Server Enterprise Manager» — «Databases» — ветка с нашей базой — «Tables»
для SQL 2005: «SQL Server Management Studio» — дальше так же
Евгений, Вы могли могли бы связаться со мной по адресу Regmenow2006@yandex.ru есть вопрос по ПУБ
Уважаемый Dolly_ev, подскажите начинающему программисту 1с, подойдет ли ваш метод свертки базы через УРБД для самописной конфы на базе упрощенки?
Респект за смекалку и знание УРБД!
+за идею, возможно пригодится где нибудь
Получилось, спасибо!
(39) «Регистр «продажи»… » — он скорее всего оборотный 😉
Сначала — БОЛЬШОЕ спасибо автору! Идея хороша!
Решил воспользоваться. Дело дошло до изменения файла выгрузки из «старой центральной» в «новую центральную». Тут всё нормально — файл выгрузки сделал файлом загрузки для центральной, но при загрузке его в «новую центральную» пишет следующее:
«ПланСчетов.Основной Нарушены правила уникальности кодов справочника ’00’ Код загруженного счета изменен на ‘_00′»
и такое на каждый бух счёт, который был затронут в документе Архив
Подскажите, как быть?
Заранее спасибо!
(41) почему-то (не знаю почему ,не разбирался, принял как данность 😉 ) если присутствует компонента «Бух.учет», при выгрузке из Центра в Периферию ВСЕГДА ВЫГРУЖАЕТСЯ ПланСчетов (в файле *.dat блок «{«Accounts»,») ,даже если счета не менялись ни в режиме «Предприятие» ни в режиме «Конфигуратор». А в ответе из Периферии в Центр этот блок («{«Accounts»},») ПУСТОЙ!
Поэтому, если меняем «направление» файлика — про этот момент не забываем — иначе при загрузке измененного файла якобы периферийной базы в Центр все счета «задвоятся». Проблема кстати решается заменой «испорченного» (с задвоенными счетами) файла 1SACCSEL.DBF на старую копию (это чтобы по-новой не копировать базы и т.д.)
СПАСИБО!!! загрузка прошла отлично.
Большую распределённую базу так обрезать не получится.
http://infostart.ru/public/59937/ обрезалась большая распределённая база. Без подпольных ходов.
Вот этой обработкой
что значит УРБД?
(45) компонента «Управление Распределенными Базами Данных» — файл DistrDB.dll в каталоге установки 1С
http://www.asd-dnepr.com/urbd/index1.html можно почитать
вот здесь, например
Большое спасибо, буду знать :))))
Вот:
положил конфигу
Большое спасибо, за инструкцию! Сейчас опробую данный метод, о результатах отпишусь.
Нашел ошибку в документе «Архив»
Для ц=1 по Метаданные.Регистр(й).Измерение() Цикл
ТипРег = Метаданные.Регистр(й).Измерение(ц).Тип;
ЗнчРег = Рег.ПолучитьАтрибут(Метаданные.Регистр(й).Измерение(ц).Идентификатор);
Если флПроверятьМоксель = 1 Тогда
Если ТЗОбъектов.НайтиСтроку(«индЗначение»,ЗнчРег) <> 0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Если (фДок=1) и (ТипРег=»Документ») Тогда
ТЗДок.НоваяСтрока();
ТЗДок.Док = ЗнчРег;
ИначеЕсли (фСпр=1) и (ТипРег=»Справочник») Тогда
ТЗСпр.НоваяСтрока();
ТЗСпр.Спр = ЗнчРег;
КонецЕсли;
КонецЦикла;
//Зачем по реквизитам ссылки?? по ним НЕТ ОСТАТКОВ!
Для у=1 по Метаданные.Регистр(й).Реквизит() Цикл
ТипРег = Метаданные.Регистр(й).Измерение(у).Тип;
ЗнчРег = Рег.ПолучитьАтрибут(Метаданные.Регистр(й).Измерение(у).Идентификатор);
Если флПроверятьМоксель = 1 Тогда
Если ТЗОбъектов.НайтиСтроку(«индЗначение»,ЗнчРег) <> 0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Если (фДок=1) и (ТипРег=»Документ») Тогда
ТЗДок.НоваяСтрока();
ТЗДок.Док = ЗнчРег;
ИначеЕсли (фСпр=1) и (ТипРег=»Справочник») Тогда
ТЗСпр.НоваяСтрока();
ТЗСпр.Спр = ЗнчРег;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Показать
(49) у меня этот кусок заремлен, ибо «//Зачем по реквизитам ссылки?? по ним НЕТ ОСТАТКОВ!» )))
Еще обнаружил ошибку, теперь при формировании бухгалтерских проводок.
Если субконто у счета 3, то в условии нет кода который формирует данные по 2 субконто и пытается сформировать проводки вот так —
Передается Субк2 который всегда равен ПУСТО, а вместо субконто 3 передается Субк2, который еще раз повторюсь всегда равен ПУСТО, т.к. не прописан (при условии что у счета 3 субконто).
(51) Вообще, весь модуль касательно переноса остатков по БУ надо переписать, некрасивый он.
Еще один нюанс, пока не придумал как победить.
Счет 21, Количество субконто = 2, Кол.=+
1 Субконто = Номенклатура (учет по количеству, учет по сумме)
2 Субконто = МестаХранения (учет по количеству)
При таком раскладе сумма не учитывается
Например —
П1 = 6512
П2 = 111747.75
П3 = 0
П4 = 0
БИ.Субконто(1) = Заготовка 1
ОбСч.Код = «21»
П1 = 3367
П2 = 0
П3 = 0
П4 = 0
БИ.Субконто(1) = Заготовка 1
БИ.Субконто(2) = Склад сырья №1
ОбСч.Код = «21»
П1 = 3145
П2 = 0
П3 = 0
П4 = 0
БИ.Субконто(1) = Заготовка 1
БИ.Субконто(2) = Склад сырья №2
Показать
В итоге будут сформированы две проводки с количеством, а сумма не будет учитываться.
Не знаю насколько корректно — можно сделать еще одну проводку только с первым субконто и суммой
(54) Сорри, сейчас этой темой совсем некогда заниматься!
Но! в предыдущем посте (52) я положил длинный кусок кода из модуля Архива, который сам правил по ЭТОЙ ЖЕ ПРОБЛЕМЕ весной текущего года:
Счет 10, Количество субконто = 2, Кол.=+
1 Субконто = Материалы (учет по количеству, учет по сумме)
2 Субконто = МестаХранения (учет по количеству)
В итоге у меня все перенеслось корректно, даже при некорректных остатках на счете! (это когда, например, по Субк1 есть сумма, но по Субк 2 — нет количества, или наоборот)
А по-хорошему, надо все это в ТЗ собирать как-то хитро, или дописывать и проверять мою «простыню» на предмет всех возможных «грабель» сочетаний свойств счета и субконто: «Количественный», «Суммовой», «ТолькоОбороты». Предпочтительнее конечно собрать в ТЗ
(55) Ой извиняюсь, ступил, я ведь весь код из (52) поста проанализировал, просто не заметил строчку среди комментариев, так как делал анализ через «Сравнить файлы», а там все было в одном цвете.
//БЕЗ Количества!
СформПроводки(тзПров.Субк1,,,0,тзПров.СНДс,0,тзПров.СНКс);
//и для проводки по Субк2 — ставим ТОЛЬКО Количество
Большое спасибо за направление.
Еще проблему откопал, счет с единственным субконто и с галочкой «Только обороты»
Причем это счет 50.1, уж не знаю зачем ему грамотеи поставили галочку «Только обороты»
(57) Это не «грамотеи» поставили))) Просто по правилам Бухучета не может быть аналитики с остатками по счету 50 ))) Т.е. Касса — она одна касса, и Кассовая книга печататься должна со сквозной нумерацией по всем денежным документам. У меня в комментариях по этому поводу есть замечание
Просто в моей конфиге у счета 50 есть Субконто 2 «Кассы организации», по которому ЕСТЬ остатки (но по методологии БухУчета ТАК ДЕЛАТЬ НЕЛЬЗЯ!!)))
Поэтому в типовом случае (сч. 50.1, Субконто 1 (об.)Дв. ден. средств)
после комментария
для ветки
придется дописать еще вилку (скопировать из чуть ниже):
Показать
(58) Большое спасибо за оперативный и раскрытый ответ, очень ценю.
У меня еще оказались счета по которым все три субконто «только обороты», сейчас сделаю по аналогии с первым.
Когда начал разбирать субконто3, обнаружил что в коде присутствует вечный переход, хотя сам в него не попадал.
Показать
Я пока сделал так
(59) Да вроде нет там «вечного» перехода…
Заходим в ЕСЛИ по ИЛИ, и дальше Если левая половина=ЛОЖЬ, ДЕЛАЕМ правую половину=ЛОЖЬ, и перенаправляем на ЭТО ЖЕ ЕСЛИ, которое уже заведомо не сработает и попадем на ИНАЧЕ (вообще, цель здесь была — попасть на ИНАЧЕ этой ветки вот таким извращенным способом)))
Вот раз ты в теме сейчас — сделал бы доброе дело!)))
ПЕРЕПИШИ весь модуль, кривой он! Лучше перед обходом субконто проанализировать свойства счета и субконто и уже на этом этапе решить чего делать дальше, имхо. А править эту портянку — дело неблагодарное
(60)Уф.. сейчас вроде все переноситься нормально.
я тоже подумал по поводу — заняться оптимизацией данного документа (уже начал потихоньку), если после НГ буду в состоянии то возможно сделаю красивее код.
В любом случае ОГРОМНОЕ спасибо и за тот код который сейчас выложен, так как он отражает основную идею.
И большое спасибо за поддержку данной статьи.
По поводу вечного перехода
Получается если у нас есть Субконто3, но нет по нему остатков, он переходит сюда «~ЕслиНетСубк3;»
Там у нас условие
Так как стоит оператор «или», а количество субконто у нас 3 (КолСубк=3) и остатков на нем нет, то мы снова попадаем в —
Угу. тогда поставить другую метку на «пониже» (ИНАЧЕ для 2-го субконто) и переходить на нее
А если документы изменяют периодические реквизиты справочников, как в случаем с амортизацией ОС, то теряется история… Пришлось это самому изменять.
(65) ага, есть такое дело. У меня товарищ в свое время тоже дописывал этот кусок, но как-то громоздко получилось, а у самого так руки и не доходят
Следующий глюк связан с регистрами…
Если Метаданные.Регистр(й).ТипРегистра <> «Остатки» Тогда Продолжить; КонецЕсли;
Показать
РасчРег[й].ВыбратьИтоги();
В первом цикле допустим й=5 — регистр оборотов, тогда продолжить и РасчРег[5] — не существует…
Во втором цикле й=5 имеет место быть и «РасчРег[5].ВыбратьИтоги();» какие, извиняюсь, там итоги…
(67) Ну да, список тогда собрать в первом цикле, только участвующих. И второй цикл — по списку пустить, а не по Метаданным.
А на регистры оборотов просто забить ))
(69) Ну хочешь — перенеси «остатки» по регистрам оборотов :-))) Расскажешь потом, что получилось)
(69) Вобщем, вставил в Форму, в «ПриОткрытии()», где собирается список регистров на форму, проверку:
Теперь в модуле проведения можно не проверять на «Остатки» и «й» всегда совпадет
(71) И это правильно ))
PS… кстати попробовал перенести «остатки» по регистру оборотов… не поверишь — переносит(!) обороты за период (указанный в конфе по этому регистру)… вот они, не документированные возможности ))))
(72) всмысле? Чем ты попробовал перенести «остатки»? метод ВыбратьИтоги для регистра оборотов вернет 0.
(73) я тоже так думал… для прикола решил проверить… нифига, регистр «продажи» оборотный, за последний месяц (такая периодичность указана в конфе) по всем ресурсам выдал движуху по регистру… сверил несколько позиций с отчетом по продажам за последний месяц — ровно )) я ж говорю не документированные возможности ))
Сейчас разбираюсь по проводкам бухгалтерским… не идет что-то… ошибка вылетает…
(74) Хм.. ну я-то тоже проверил, правда типовой нет под рукой, в своей — один регистр оборотный — РасчРег[й].ВыбратьИтоги() = 0.
солидарен с хм….
Не совсем понял п.8 про документы текущего периода:
«8). документы за текущий период так же переносим в «новую» базу через обмен УРБД, проинициализировав (Записать()) документы за нужный период. «.
Как именно их переносить?
(77) Документы надо какой-либо обработкой перезаписать. Примерно так:
Дальше — выгрузка / загрузка через УРБД
(78) Спасибо за быстрый ответ, я уже сам разобрался 🙂
У меня тоже небольшое примечание, вроде на него никто не указывал. В первой строке модуля проведения указано:
Так вот, нужно предварительно проверить, чтобы размер массива РасчРег[30] был больше общего числа регистров в конфигурации. У меня, как назло, их оказалось 31 🙂
(79) Мда.. 31 регистр — это жестоко :-))
Еще одно примечание. Во многих типовых конфигурациях в глобальном модуле при начале работы системы предусмотрено первоначальное заполнение информационной базы (заполняет план счетов и т.д.). Поскольку мы удаляем все, кроме справочников, то конфигурация будет пустой и при первом открытии захочет «самозаполниться», что может внести путаницу в новую базу. В моем случае (Комплексная «Бухгалтерия + Торговля и склад + Зарплата и кадры») — заполнение произошло и загрузка отказалась загружаться. Поэтому перед сверткой рекомендую закомментировать этот участок кода.
Кстати, не разбирались со структурой файла .dat в выгрузке? Как пометить (распровести) переносимые документы в утробе этого файла?
(82) Бросил это гиблое дело.. Но чтобы НЕ проведенным документ был — надо чтобы его ДВИЖЕНИЯ в DAT были пустые
(82) Выгрузи один и тот же ПРОВЕДЕННЫЙ и НЕПРОВЕДЕННЫЙ док (чтобы ТОЛЬКО он один в выгрузку попал). и сравни
Делал по этой методике срезку 3 разных баз… Если DBF, то можно с помощью копирования файлов, резко убыстрять процесс срезки (удалить регистры — получили док-ты без движения -> файл переноса гораздо меньше и быстрее грузит их). Какие встретил затыки:
1. у 1С есть ограничения по объему файла загрузки — где-то 2 Гига,
2. есть ограничения по кол-ву движения в 1 документе, поэтому приходится делить их.
3. перенос период. реквизитов, изменяемых докуменов приходится обрабатывать отдельно — делать их срезку док-том «Архив».
4. если регистр очень «грязный» — обычно в Партиях товара много минусов и нулевых остатков, то приходится все это как-то чистить…
(85) AlexBugs,
А если SQL, то какие проблемы точно также поступить с одноименными таблицами в базе??
1. у 1С есть ограничения по объему файла загрузки — где-то 2 Гига,
Ссылка на плагин Romix’a, позволяющий выгружать dat без упаковки в zip, имеет место быть и в статье и в комментариях в начале
?? Нет ограничений по количеству движений, есть ограничение на >9999 строк в табличной части документа, и то оно связано только с привязкой номера строки к движению регистра (строки с номером > 9999 имеют номер=0).
в данной метОде документ «Архив» НЕ ИМЕЕТ табличной части
— есть такой грех, Периодику так и не дописал… к вопросу вернусь видимо только через год, пока живем на SQL, растем в размерах, оптимизируем все, что возможно, прямыми запросами, резать базу не собираюсь
К сабжу это не относится — или вы предлагаете, чтобы «Архив» еще и автоматом чистил «грязный регистр»?:-)))
http://infostart.ru/public/18708/
По этому поводу есть очень удобный (в смысле реализации) документ:
Сам им пользуюсь с небольшими допилами. Как раз для «чистки» очень удобен.
нужно уметь переносить таблицы из базы в базу, а при DBF копируешь Totall Commanderom и не паришься…
пробовал, но счастья не ощутил…
Пытался перенести цены у 8000 товаров — не удалось, виснет и все… разделил на 2 части и все пошло.
Относится, но универсального решения этой проблемы нет, поэтому я и предупреждаю, чтобы люди сами допиливали…
Вот здесь уже решили все проблемы с периодикой 🙂
http://infostart.ru/public/15219/
А в чем проблемы с периодикой? Разве они не перенесутся вместо со справочниками?
(89) Периодические реквизиты, установленные документами (например, документ «Ввод в эксплуатацию ОС» пишет за собой периодику по этим ОС), при удалении этих документов (а они в текущей реализации удалятся, т.к. кроме периодики никаких остатков за собой не оставляют) тоже удалятся.
(89) Тоже самое, например со справочником «Цены», где цены были установлены документом «Переоценка» — при удалении документа потрутся и установленные им значения Спр.Цены.Цена. Поэтому стоит обработкой цены установить «вручную», взяв значение на дату обрезки и установив на ту же дату
У нас такого нет. Цены в основном интересуют. Т е периодические реквизиты вводимые вручную. Не с помощью документов.
(91) с введенными вручную, не документом — все в порядке. Таблица констант переедет вся в новую базу.
Еще вот такой вопрос. То что остатки вбиваются всегда приходом с + или -. Притом что реальный остаток расход к примеру. Это как то может влиять на работу базы с этими остатками?
(94) «Притом что реальный остаток расход к примеру. » — это так имеется ввиду отрицательный остаток?))
Да не важно + или -. Если был отриц. остаток — он так же с «минусом» и перенесется.
(94) Это никак не может «влиять на работу базы с этими остатками»… Остаток — он и в африке остаток… Если его ввести не Приходом, а Расходом с обратным знаком — тоже ничего не изменится
Знак остатка переносится корректно. Но в 1с есть 2 вида движения приход и расход. некоторые отчеты это учитывают. и вот был допустим расход 10 единиц. а стал приход -10 единиц. там есть 2 метода движениеприходвыполнить и движениерасходвыполнить
(96) да пожалуй вы правы приход или расход важен обычно в оборотах. для начального остатка который в любом случае интегрирует и приходы и расходы разницы нет видимо. а в случае разных знаков ресурсов и не реализовать даже такое.
Все сделал вроде нормально все. Единственное что удивило свежевыгруженная периферийка из обрезанной базы в 2 раза меньше самой обрезанной.. все же выгружается туда. а файл регистра партии наличие например меньше в 2 раза
Разобрался. Я базу резал заранее на копии. Из копии выгружал док архив(чтоб не удваивать реальные остаки в базе(проводится и распроводится он у нас часов 8)) и документы до 1.09.13. Они уже не редактировались. В базе люди продолжали работать(набивать доки и тд). А на новый год я планировал прогрузить документы с 1.09.13 по 31.12.13. Вроде идея хорошая была меньше заморочек на праздники заранее прогрузить остатки и большую часть доков. В итоге архив затерся, у них там оказывается сквозная нумерация внутренняя для распределенки не зависящая от типа документа. И первый же новый док в базе затер мой архив. Хорошо бэкапил все этапы. Поковырял файлы выгрузки поигрался с id починил. Большое спасибо за обработку очень полезная вещь.
(100) Большое пожалуйста )) Но «проводится и распроводится он у нас часов 8» как-то настораживает… Скорее всего «сильно не закрытые» регистры?