Имя: Пароль:
1C
1С v8
Ошибка создания каталога при входе в базу через администратора
0 pnamik
 
10.11.13
13:31
Есть пользователь со всеми администраторскими правами и ролями. При входе в базу выдает ошибку:

{Обработка.ВыгрузкаДанныхПодразделения(122)}: Ошибка при вызове метода контекста (СоздатьКаталог): Ошибка создания каталога
        СоздатьКаталог(СокрЛП(Константы.КаталогВнешнихМодулей.Получить())+"SHOP_OUTPUT");

Создаю другого пользователя с теми же правами (полные), но другим именем, проблема исчезает.
Если удалить проблемного пользователя, а потом создать с тем же именем, проблема остается.
Как решить проблему при сохранении имени пользователя?

Процедура в модуле объекта, где появляется ошибка:

Функция СоздатьПакетXML()
    //Проверим есть-ли подкаталог +"SHOP_INPUT\"
    Если ФайлСуществует(СокрЛП(Константы.КаталогВнешнихМодулей.Получить())+"SHOP_OUTPUT") = Ложь Тогда
        СоздатьКаталог(СокрЛП(Константы.КаталогВнешнихМодулей.Получить())+"SHOP_OUTPUT");
    КонецЕсли;    
    
    ИмяФайла = СокрЛП(Константы.ID_Магазина.Получить())+"_"+Строка(ГОД(ТекущаяДата())) + Строка(Месяц(ТекущаяДата())) +
                Строка(ДЕНЬ(ТекущаяДата())) + Строка(ЧАС(ТекущаяДата())) + Строка(МИНУТА(ТекущаяДата())) +
                Строка(СЕКУНДА(ТекущаяДата()))+".xml";
    
    ТекФайл = СокрЛП(Константы.КаталогВнешнихМодулей.Получить())+"SHOP_OUTPUT\" + ИмяФайла;
    
    Запись = Новый ЗаписьXML;
    Запись.ОткрытьФайл(ТекФайл);
    Запись.ЗаписатьОбъявлениеXML();
    
    Возврат Запись;
КонецФункции
1 DJ Anthon
 
10.11.13
13:33
вынеси СокрЛП(Константы.КаталогВнешнихМодулей.Получить())+"SHOP_OUTPUT" в отдельную переменную и посмотри, какое у нее значение. проверь создание этого каталога вручную. компилить твою функцию нам как-то не охота.
2 shuhard
 
10.11.13
13:34
(0) ну нет прав у виндового пользователя на этот каталог
3 DJ Anthon
 
10.11.13
13:34
константа поди пустая
4 pnamik
 
10.11.13
13:36
в базе есть три пользователя с одинаковыми полными правами, с двумя такая же проблема, с одним все нормально
5 pnamik
 
10.11.13
13:37
Константа КаталогВнешнихМодулей

Модуль менеджера значения пустая
6 pnamik
 
10.11.13
13:38
(2) речь о пользователях базы 1С, а не вин.
7 shuhard
 
10.11.13
13:41
(6) а файл создаётся на жёстком диске и под пользователем винды
8 pnamik
 
10.11.13
13:46
(7) в базе администраторы
Export
SQL_Admin
Server
Только с Server все нормально, так же как с вновь созданными полными правами, но другим именем пользователями

в вине
только один
Namik
9 DJ Anthon
 
10.11.13
13:51
каталог-то озвучишь?
10 pnamik
 
10.11.13
14:02
(9) Каталог, где находиться база файловая

Bases\Бал\1Cv8.1CD
11 hhhh
 
10.11.13
15:03
а что за функция ФайлСуществует?
12 pnamik
 
10.11.13
15:15
(11) Честно, без понятия. Если подскажете, где в конфигурации поискать, выложу нужную инфу
13 DJ Anthon
 
10.11.13
15:46
(10) нах нам твой каталог базы? какой каталог создать не можешь?
14 pnamik
 
10.11.13
15:57
(13) Я-то могу создать любой каталог, а вот 1с не может, по какой причине не знаю. Ошибку привел выше
15 hhhh
 
10.11.13
16:15
(14) наверно потому что он уже существует.
16 pnamik
 
10.11.13
16:31
Каталог не может существовать изначально потому, что ошибка появилась первый раз с новой базой на компе, где никогда эта база не запускалась. Если даже этот каталог существует, почему-то под пользователем server никаких ошибок не появляется. Может быть какая-то другая причина? Текст ошибки еще раз:

{Обработка.ВыгрузкаДанныхПодразделения(122)}: Ошибка при вызове метода контекста (СоздатьКаталог): Ошибка создания каталога
        СоздатьКаталог(СокрЛП(Константы.КаталогВнешнихМодулей.Получить())+"SHOP_OUTPUT");
по причине:
Ошибка создания каталога
по причине:
Ошибка при выполнении файловой операции  '\\SQL-SERVER'
17 hhhh
 
10.11.13
16:43
(16) значит нет прав у этого пользователя на создание каталога
18 DJ Anthon
 
10.11.13
16:47
(14) ну и парься сам дальше, если разговаривать не хочешь
19 pnamik
 
10.11.13
16:58
(18) а я что делаю? DJ Anthon задаешь вопросы, на которых не знаю как отвечать. Если знал бы какой каталог не может создавать программа 1С, зачем мне тут задавать вопросы? Если не можешь помочь, или, как и я, не понимаешь, так и скажи. чего грубить?!!!

(17) Ситуацию опишу другими словами:
Есть файловая база, которая не запускалась в компе (вход в вин под Namik) ни разу. первый же вход в базу под пользователем Export или SQL_Admin выдает вышеуказанную ошибку, которая ведет в конфигураторе в процедуру, указанную выше. Может быть, где в памяти самой программы осталась записи о создании этого каталога. Где и как лечить? потому и обращаюсь к знающим!
20 Rie
 
10.11.13
17:03
(19) Права на создание папок - это к Windows вопрос, а не к 1С. Спокойно смотришь - от какого пользователя Windows запущена 1С и какими правами этот пользователь Windows владеет. Однако при этом учитываешь, что "рабочий каталог" может зависеть от того, какой пользователь _1С_ зашёл в систему.
21 pnamik
 
10.11.13
17:10
(20) у меня такое ощущение, мы обсуждаем не ту проблему, которую описал изначально, а создание папок в среде вин.
1С запущена от пользователя Namik, который обладает всеми администраторскими правами. Под Namik запуск 1С не выдает ошибку под Server (администраторский пользователь базы 1С), а запуск 1С под Export или SQL_Admin (также администраторские пользователи базы 1С) выдает ошибку.

Более того, после свертки базы (в чем мне помог предыдущая ветка, в частности участник hhhh), это база под server запускается нормально, а под Export или SQL_Admin 1C запускается нормально, а потом сразу же закрывается (аварийно наверно). Может эта информация поможет в решении проблемы?
22 Rie
 
модератор
10.11.13
17:14
(21) У меня же - такое ощущение, что спрашивающий пытается найти телетяпов, вместо того, чтобы аккуратно разобраться с пользовательскими правами Windows и 1С в своей системе.
Если база под Export и SQL_Admin внезапно закрывается - то весьма вероятно, что у этих пользователей недостаточно _Windows_-прав на какие-то папки/файлы. И, заметим, именно эти пользователи испытывают проблемы и в описанном спрашивающем случае - но спрашивающий этого упорно не замечает.
23 Wobland
 
10.11.13
18:10
автора ещё не познакомили с Форматом()?
24 Wobland
 
10.11.13
18:13
а вообще специально против таких хотелок есть временный каталог
25 Rie
 
10.11.13
18:30
(24) И горе-админы, склонные к паранойе...
26 pnamik
 
10.11.13
19:02
Ошибка времени приложения:
Модуль приложения (1286) Ошибка при вызове конструктора  (COMОбъект). Недопустимая строка с указанием  класса в модуле  МодульПриложения, строка 1286

Телепаты, как и предполагал, не нашлись. Поэкспериментировал дальше по совету (22).
ОС Win8 – Пользователь Namik (администратор), и еще дефолтный Администратор, Гость (не активный), больше нет пользователей.
1С 8.0. Конфигурация Торговля (спец. Разработанная, не официальная). Пользователи Export, SQL_Admin, Server (у всех роли и права администраторские и одинаковые), Оператор (урезанные права).
Эксперимент в конфигураторе с аутентификацией Windows с пользователями Win8 Namik и Администратор, в сочетании с пользователями 1С  Export, SQL_Admin не привело к желаемому. С пользователями Server и Оператор без эксперимента было все в порядке.
Запускал базу в ноутбуке. Проблема теми же пользователями.
Дальше начал отладку (пользователи Export, SQL_Admin) с функцией останавливаться по ошибке. Выдалась следующая ошибка:

Ошибка времени приложения:
Модуль приложения (1286) Ошибка при вызове конструктора  (COMОбъект). Недопустимая строка с указанием  класса в модуле  МодульПриложения, строка 1286

Процедура, где появляется ошибка

// Подключим ПринтерЭтикеток
    ТекИнтерфейс = ПользователиИнформационнойБазы.ТекущийПользователь().ОсновнойИнтерфейс.Имя;
    Если (ТекИнтерфейс = "АРМКассира")ИЛИ((ТекИнтерфейс = "СтаршийКассир")) Тогда
        LabelPrinterOn = Ложь;
    Иначе    
        LabelPrinterOn = Истина;
        Попытка
            LabelPrinter   = Новый COMОбъект("LabelPrint.LabelImage");
            Если глПроверитьСостояниеОшибки() = Истина Тогда
                LabelPrinterOn = Ложь;
            Иначе
                LabelPrinterOn = Истина;
            КонецЕсли;    
        Исключение
            //Сообщить("Не удалось загрузить компоненту LabelPrint");
            Ошибка = Истина;
            LabelPrinterOn = Ложь;
        КонецПопытки;
        Если Ошибка = Ложь Тогда
            LabelPrinter.Port         = 1;
            LabelPrinter.Darkness     = 4;
            LabelPrinter.LabelGap     = 2;
            LabelPrinter.PrintSpeed   = 2;
            LabelPrinter.PrinterType  = 1;
            LabelPrinter.ForwardPaper = 0;
            LabelPrinter.BackupPaper  = 0;
        КонецЕсли;
    КонецЕсли;


Выполнение команды Regsvr32 «C:\Program Files\1cv8\bin\comcntr.dl, успешно зарегистрировал dll. Но проблема осталась. В общем, не понимаю, что конкретно с этими пользователями.
27 Wobland
 
11.11.13
04:24
не ту ддлку регистрировал
28 DJ Anthon
 
11.11.13
16:14
(19) а я тебе что в (1) написал? любой 1Сник сможет посмотреть, что хранится в переменной, ну уж извини, по тебе не видно, какой у тебя опыт работы с 1С, если его нет, так и напиши об этом, а то если ты привел код процедуры, я так и понял, что конфигурацию ты открывать умеешь, значит, и смотреть значения в отладчике можешь. ничего я тебе не грубил, а прямо спросил. если не знаешь, какой каталог она не может создать, то так и напиши. может, там элементарная орфографическая ошибка, может, сетевой доступ, может еще чего, надо по шагам проблему решать. ты вообще мало чего сказал, ни версии 1С (кто знает, может, у тебя там компоненты какие левые установлены), ни версии ОС, ни конфигурацию, ни уровень твоих знаний. так что ищи другой форум, попроще, если тебя этот не устраивает.
29 DJ Anthon
 
11.11.13
16:16
между прочим, даже с правами администратора винда может не дасть тебе создать каталог, пока не запустишь программу в режиме администратора. может, у тебя контроль учетных записей включен, откуда мы знаем?
30 DJ Anthon
 
11.11.13
16:20
дасть = дать
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn