Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Хочу все знать (http://forum.oszone.net/forumdisplay.php?f=23)
-   -   Возможно ли создать невидимый локальный диск? (http://forum.oszone.net/showthread.php?t=342182)

Avatar-Lion 13-09-2019 23:14 2887846

Возможно ли создать невидимый локальный диск?
 
Есть старый ПК, на нём 1С 7.7. Перенёс программу и базу на новый ПК. 1С запускается и открывает базу, но при запуске подтупливает и каждый раз вываливается ошибка:
Код:

Текст.Записать("D:\1sbases\1Cv77\1SBDB\Архивы\РезАрхБухКажДень.txt");
{Глобальный модуль(6068)}: Неверное имя файла!

Я не спец по 1С, но, по всей видимости, база была как-то вручную отредактирована (такое вообще возможно?) с целью создания резервной копии при каждом запуске 1С. В принципе, учитывая хреновое состояние старого ПК, в этом действительно был смысл. Однако на новом ПК нет диска D:, только диск С:, ибо не вижу смысла разбивать SSD на два раздела. ОС на новом компьютере Windows 10 Pro (64-bit).

Понятно, что можно отщипнуть кусочек с хвоста диска С и создать диск D, но он со временем забьётся, а как убрать эту идиотскую команду из базы - я не знаю. Что можно сделать в такой ситуации? Есть ли возможность создать какой-нибудь виртуальный диск D, который не был бы виден и пропадал после выключения компа?

Iska 13-09-2019 23:40 2887852

Цитата:

Цитата Avatar-Lion
а как убрать эту идиотскую команду из базы - я не знаю. »

В смысле? Запустить Конфигуратор, открыть конфигурацию, открыть глобальный модуль, перейти на строку 6068 (если я правильно понимаю), сменить путь на потребный, сохранить конфигурацию. Или у Вас Базовая версия 1С:Предприятия?

Цитата:

Цитата Avatar-Lion
Есть ли возможность создать какой-нибудь виртуальный диск D, который не был бы виден и пропадал после выключения компа? »

Код:

subst /?
например:
Код:

subst.exe d: "%temp%"
как я понимаю. Чтобы смапированный диск был виден — 1С:Предприятие должно исполняться в том же сеансе консоли, что и данная команда. Можно ещё с реестром поиграться, но тут можно и «огрести».

Avatar-Lion 13-09-2019 23:54 2887855

Цитата:

Цитата Iska
открыть конфигурацию »

Требует пароль. Странно... При запуске базы ничего не требует, ни имени, ни пароля - сразу запускается.

---
Нашел какой-то "USP патч", теперь всё ОК, пускает в конфигурацию с пустым паролем, но там нет никаких глобальных модулей: http://imagestun.com/hosting/kartinki/avaava.png

Iska 14-09-2019 00:15 2887858

Цитата:

Цитата Avatar-Lion
Требует пароль. »

1. Искать разработчика, который установил этот пароль на конфигурацию.

Цитата:

Цитата Avatar-Lion
Странно... При запуске базы ничего не требует, ни имени, ни пароля - сразу запускается. »

Это разные пароли.

Цитата:

Цитата Avatar-Lion
пускает в конфигурацию с пустым паролем, но там нет никаких глобальных модулей: http://imagestun.com/hosting/kartinki/avaava.png »

Вариант 1
Вариант 2
Меню \Действия\Глобальный модуль.

Avatar-Lion 14-09-2019 00:24 2887859

О, теперь нашел, да. :) И кусок этот нашёл. Удалил всё нахрен, что касалось резервного копирования. Теперь пишет при запуске базы "Ошибка компиляции глобального модуля".

Заново восстановил базу из выгрузки. Вот этот кусок:
Скрытый текст
// ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ
//

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриНачалеРаботыСистемы()

Текст=СоздатьОбъект("Текст");
Текст.ДобавитьСтроку("[General]
|Output=""D:\1sbases\1Cv77\1SBDB\Архивы\ОтчСохрАрх.txt""
|SaveData=1
|Quit=1
|[SaveData]");
Текст.Шаблон(1);
Текст.ДобавитьСтроку("SaveToFile=""D:\1sbases\1Cv77\1SBDB\АрхивыКаждыйДень\РезАрхБухОт[Формат(ТекущаяДата(),""Д ГГГГММДД"")].zip""");
Если ФС.СуществуетФайл("\\Glavbuh\1Cv77\1SBDB\Архивы\РезАрхБухКажДень.txt")=1 Тогда
Текст.Записать("\\Glavbuh\1Cv77\1SBDB\Архивы\РезАрхБухКажДень.txt");
Иначе
Текст.Записать("D:\1sbases\1Cv77\1SBDB\Архивы\РезАрхБухКажДень.txt");
КонецЕсли;
Текст.ЗаменитьСтроку(2,"Output=""D:\1sbases\PRBasic\Архивы\ОтчСохрАрхЗарПл.txt""");
Текст.ЗаменитьСтроку(6,"SaveToFile=""D:\1sbases\PRBasic\АрхКаждДень\РезАрхЗарПлОт[Формат(ТекущаяДата(),""Д ГГГГММДД"")].zip""");
Если ФС.СуществуетФайл("\\Buhzarpl\PRBasic\Архивы\РезАрхЗарПлКажДень.txt")=1 Тогда
Текст.Записать("\\Buhzarpl\PRBasic\Архивы\РезАрхЗарПлКажДень.txt");
КонецЕсли;

//Если (ФС.СуществуетФайл("C:\1sBases\2005\ЭтоНеКаталогСервера.txt")=1) Тогда //м_№ D:\1sbases\1Cv77\ССМУ-24\1sbdb

Если (ФС.СуществуетФайл("\\Glavbuh\1Cv77\1SBDB\АрхивыКаждыйДень\РезАрхБухОт*")=1) Тогда //м_№
СписАрхивов=СоздатьОбъект("СписокЗначений"); //м_№
ПервАрх =""; //м_№
ПервАрх = ФС.НайтиПервыйФайл("\\Glavbuh\1Cv77\1SBDB\АрхивыКаждыйДень\РезАрхБухОт*"); //м_№
СписАрхивов.ДобавитьЗначение(ПервАрх,ПервАрх); //м_№
СледАрх = "1"; //м_№
Пока (ПервАрх <> СледАрх) Цикл //м_№
СледАрх = ФС.НайтиСледующийФайл(); //м_№
Если СписАрхивов.НайтиЗначение(СледАрх)=0 Тогда //м_№
Если (СледАрх = "") Тогда
Прервать //м_№
КонецЕсли; //м_№
СписАрхивов.ДобавитьЗначение(СледАрх,СледАрх); //м_№
КонецЕсли; //м_№
КонецЦикла; //м_№
Пока СписАрхивов.РазмерСписка()>90 Цикл //м_№
СписАрхивов.Сортировать(,); //м_№
Если СписАрхивов.РазмерСписка()>90 Тогда //м_№
ПервАрх = ФС.НайтиПервыйФайл("\\Glavbuh\1Cv77\1SBDB\АрхивыКаждыйДень\"+СписАрхивов.ПолучитьЗначение(1,)); //м_№
ФС.УдалитьФайл(Строка("\\Glavbuh\1Cv77\1SBDB\АрхивыКаждыйДень\"+ПервАрх)); //м_№
СписАрхивов.УдалитьЗначение(1); //м_№
КонецЕсли; //м_№
КонецЦикла; //м_№
Если (ФС.СуществуетФайл("\\BuhZarpl\Не_Стирать\РезАрхБухОт*")=1) Тогда //м_№
// Если (ФС.СвободноеМестоНаДиске("E:")>15000000) Тогда //м_№
СписАрхивов.Сортировать(1,); //м_№
ПервАрх = ФС.НайтиПервыйФайл("\\Glavbuh\1Cv77\1SBDB\АрхивыКаждыйДень\"+СписАрхивов.ПолучитьЗначение(1,)); //м_№
ФС.КопироватьФайл(Строка("\\Glavbuh\1Cv77\1SBDB\АрхивыКаждыйДень\"+ПервАрх),Строка("\\BuhZarpl\Не_Ст ирать\"+ПервАрх),0); //м_№
// КонецЕсли; //м_№
КонецЕсли; //м_№
КонецЕсли; //м_№

Если (ФС.СуществуетФайл("\\BuhZarpl\Не_Стирать\ItIsReserv.txt")=1) Тогда //м_№
Если (ФС.СуществуетФайл("\\BuhZarpl\Не_Стирать\РезАрхБухОт*")=1) Тогда //м_№
СписАрхивов=СоздатьОбъект("СписокЗначений"); //м_№
ПервАрх =""; //м_№
ПервАрх = ФС.НайтиПервыйФайл("\\BuhZarpl\Не_Стирать\РезАрхБухОт*"); //м_№
СписАрхивов.ДобавитьЗначение(ПервАрх,ПервАрх); //м_№
СледАрх = "1"; //м_№
Пока (ПервАрх <> СледАрх) Цикл //м_№
СледАрх = ФС.НайтиСледующийФайл(); //м_№
Если СписАрхивов.НайтиЗначение(СледАрх)=0 Тогда //м_№
Если (СледАрх = "") Тогда
Прервать //м_№
КонецЕсли; //м_№
СписАрхивов.ДобавитьЗначение(СледАрх,СледАрх); //м_№
КонецЕсли; //м_№
КонецЦикла; //м_№
Пока СписАрхивов.РазмерСписка()>10 Цикл //м_№
СписАрхивов.Сортировать(,); //м_№
Если СписАрхивов.РазмерСписка()>10 Тогда //м_№
ПервАрх = ФС.НайтиПервыйФайл("\\BuhZarpl\Не_Стирать\"+СписАрхивов.ПолучитьЗначение(1,)); //м_№
ФС.УдалитьФайл(Строка("\\BuhZarpl\Не_Стирать\"+ПервАрх)); //м_№
СписАрхивов.УдалитьЗначение(1); //м_№
КонецЕсли; //м_№
КонецЦикла; //м_№
КонецЕсли; //м_№
КонецЕсли; //м_№

//КонецЕсли; //м_№


Как его корректно удалить?

P.S. Оказывается, чтобы русские символы копировались нормально в буфер обмена, надо раскладку на русскую сменить. Жесть... Эту 1С какие-то больные люди писали.

Iska 14-09-2019 01:22 2887861

Цитата:

Цитата Avatar-Lion
Вот этот кусок: »

А что ниже?

Цитата:

Цитата Avatar-Lion
Удалил всё нахрен, что касалось резервного копирования. »

Видимо, удалили лишнее, либо удалили недостаточно.

Цитата:

Цитата Avatar-Lion
Как его корректно удалить? »

Оставьте саму предопределённую процедуру:
Код:

Процедура ПриНачалеРаботыСистемы()

КонецПроцедуры

Но внутри неё может быть и ещё что-то, окромя хардкорной нашлёпки архивирования. Не захватите лишку.

Цитата:

Цитата Avatar-Lion
P.S. Оказывается, чтобы русские символы копировались нормально в буфер обмена, надо раскладку на русскую сменить. Жесть... Эту 1С какие-то больные люди писали. »

Да нет, это достаточно распространённая проблема была. В до-Vista'вские времена сие, как правило, «лечилось» подменой nls и substitution'ами шрифтов в реестре (что, в свою очередь, создавало проблемы с некоторыми другими приложениями [например, Adobe]).

А вот 16-разрядный установщик — это воистину «жесть».

Busla 14-09-2019 10:59 2887889

Цитата:

Цитата Iska
А вот 16-разрядный установщик — это воистину «жесть» »

так, блин, 7ая версия появилась в 98 году

Iska 14-09-2019 11:43 2887897

Busla, ну, а я про что. Релизы-то новые выходили (когда там появился последний, 27-й?), продажи-то продолжались, так? А на принципиальную невозможность инсталляции на x64-платформах просто «забили».

Avatar-Lion 14-09-2019 12:43 2887905

Цитата:

Цитата Iska
А что ниже? »

Ниже вот это (захватил на всякий случай последнюю строчку из предыдущего спойлера).
Скрытый текст
//КонецЕсли; //м_№

ЭтоПервыйЗапуск = 0;
Если ПустоеЗначение(Константа.НомерРелиза) = 1 Тогда
ЭтоПервыйЗапуск = 1;
Док = СоздатьОбъект("Документ");
Если Док.ВыбратьДокументы() = 1 Тогда
ЭтоПервыйЗапуск = 0;
КонецЕсли;
Если ЭтоПервыйЗапуск = 1 Тогда
ПоставляемыеСправочники = ",КлассификаторЕН,";
Индекс = 1;
КоличествоСправочников = Метаданные.Справочник();
Пока (ЭтоПервыйЗапуск = 1) и (Индекс <= КоличествоСправочников) Цикл
ВидСпр = Метаданные.Справочник(Индекс).Идентификатор;
Если Найти(ПоставляемыеСправочники, ","+ВидСпр+",") = 0 Тогда
Спр = СоздатьОбъект("Справочник."+ВидСпр);
Если Спр.ВыбратьЭлементы(0) = 1 Тогда
ЭтоПервыйЗапуск = 0;
КонецЕсли;
КонецЕсли;
Индекс = Индекс+1;
КонецЦикла;
КонецЕсли;

Если ЭтоПервыйЗапуск = 1 Тогда
Константа.НомерРелиза = Лев(Метаданные.Комментарий, 8);
ОткрытьФормуМодально("Обработка.ПервыйЗапуск", 1);
Иначе
Константа.НомерРелиза = "7.70.001";
КонецЕсли;
КонецЕсли;

// Если ПроверитьЛегальностьПолученияОбновления() = 0 Тогда //м_№(было)
Если 1 = 0 Тогда //м_№(стало)
Возврат;
КонецЕсли;

ПервыйЗапускНаРабочемМесте = ВосстановитьЗначение("ПервыйЗапускНаРабочемМесте");


Цитата:

Цитата Iska
Оставьте саму предопределённую процедуру: »

Попробовал. Та же шляпа.

Короче ладно... Попробую все пути поменять. Процессор Pentium G5400, SSD хороший, работает по NVMe-протоколу, ёмкость 240Гб. По идее, создание копий не должно будет сильно сказываться на скорости запуска программы.

Iska 14-09-2019 14:39 2887923

Цитата:

Цитата Avatar-Lion
Ниже вот это (захватил на всякий случай последнюю строчку из предыдущего спойлера). »

Всё ещё не вижу строки с:
Код:

КонецПроцедуры
Или приведённое — как раз все внутренности внутри процедуры ПриНачалеРаботыСистемы()?

Цитата:

Цитата Avatar-Lion
Попробовал. Та же шляпа. »

Хмм… Не должно такого быть.

Цитата:

Цитата Avatar-Lion
Короче ладно... Попробую все пути поменять. »

Ну, или так :).

Avatar-Lion 14-09-2019 14:55 2887927

Да, точно. Помучал скроллинг на мышке и домотал-таки до "КонецПроцедуры // ПриНачалеРаботыСистемы()". Блин... А нельзя как-то создать новую базу без всякого лишнего дерьма и перекинуть в нее данные из нынешней?

Iska 14-09-2019 15:24 2887931

Avatar-Lion, если Вы уверены, что ничего ценного для дальнейшей работы конфигурации внутри вышеназванной процедуры нет, Вы можете просто оставить от неё две строки:
Код:

Процедура ПриНачалеРаботыСистемы()

КонецПроцедуры

Цитата:

Цитата Avatar-Lion
А нельзя как-то создать новую базу без всякого лишнего дерьма и перекинуть в нее данные из нынешней? »

Можно. Но разбираться, что есть лишнее, что не лишнее — всё равно придётся. Кто знает, что там нахардкодено было программистами под Вашу конкретную контору поверх какой-либо стандартной конфигурации?!


Время: 11:58.

Время: 11:58.
© OSzone.net 2001-