Имя: Пароль:
1C
1С v8
v8: Помогите разобраться с ошибкой
0 demous
 
17.01.12
15:23
упп 8.1
Ошибка
{Обработка.П_Декларация6.Форма.Форма(535)}: Ошибка при вызове метода контекста (Первая): Перед выполнением операции нужно открыть базу
   ФайлПр.Первая();
по причине:
Перед выполнением операции нужно открыть базу


вот эта процедурка


Процедура Проц(ФайлПр)
       
ЗапросТабл = Новый Запрос;
Текст =
"ВЫБРАТЬ
|    Номенклатура.Наименование,
|    Номенклатура.К_КодПродукции.Наименование,
|    Номенклатура.К_КодПродукции.КодПродукции
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|    Номенклатура.Ссылка В(&СпПрод)";
             
   ЗапросТабл.Текст = Текст;
   ЗапросТабл.УстановитьПараметр("СпПрод",СпПрод);
   
   Результат = ЗапросТабл.Выполнить();
   //ТЗ = Результат.Выгрузить();
   //ТЗ.Свернуть("Наименование,Группа,НаименованиеРег,СтранаПроисхождения,ГосРегДата,ГосРегКод");
   //
   Сп=Новый СписокЗначений;
   ФайлПр.Первая();
   Пока не ФайлПр.ВКонце() Цикл
       Сп.Добавить(СокрЛП(ФайлПр.PROD_NAME));
       ФайлПр.Следующая();
   КонецЦикла;
   
   Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.Прямой);
   Пока Выборка.Следующий() Цикл
       
       Если не Сп.НайтиПоЗначению(СокрЛП(Выборка.Наименование))=Неопределено тогда
            Продолжить;
       КонецЕсли;    
       
   //Для Каждого Выборка Из ТЗ Цикл        
   //    Если Выборка.Наименование <> "" тогда
           ФайлПр.Добавить();
           ФайлПр.PROD_NAME = Выборка.Наименование;
           ФайлПр.GOST =    "#";
           ФайлПр.PROD_KOD = Выборка.К_КодПродукцииКодПродукции;
           ФайлПр.PROD_GROUP   = Выборка.К_КодПродукцииНаименование;
           ФайлПр.REG_UDOST = "";
           ФайлПр.PROISHOZHD = "КРД";
           ФайлПр.REG_DATE = "";
           ФайлПр.REG_NOM  = "";
           ФайлПр.Записать();        
   //    КонецЕсли;
       
   КонецЦикла;
   
   ФайлПр.ЗакрытьФайл();

КонецПроцедуры // Проц()
1 Rie
 
17.01.12
15:25
(0) В сообщении об ошибке всё и написано: перед тем, как обращаться к методу Первая, нужно Открыть() базу ФайлПр.
В тексте процедуры эту базу никто не открывает. Видимо, и перед вызовом процедуры её никто не открыл.
2 demous
 
17.01.12
15:27
программа с базой данной находится в открытом состоянии(((
3 Adilgeriy
 
17.01.12
15:27
платформа какая?
4 demous
 
17.01.12
15:31
1С Предприятие 8.1 (8.1.15.14)
УПП 8.1 (1.2.36.1)
5 Rie
 
17.01.12
15:38
(2) C _какой_ базой? Насколько я понял, ФайлПр - это объект XBase.
6 demous
 
17.01.12
15:38
ни кто не знает?
могу обработку полностью скинуть, помогите пожалуйста...(((
7 Rie
 
17.01.12
15:39
(6) Покажи то место, откуда _вызывается_ эта процедура Проц.
8 demous
 
17.01.12
15:39
есть такая программа - Декларирование производства и оборота алкогольной продукции, в ней хранятся dbf файлы в которые и происходит выгрузка
9 demous
 
17.01.12
15:42
Функция Загрузить(ФайлБТ, ФайлПР)
   
       ФайлБТ = Новый XBase;
       ОткрытьФайлБТ(ФайлБТ);
       Если ОчиститьБД тогда
           Очистить(ФайлБТ);
       КонецЕсли;
       ЗаписатьВФайлБТ(ФайлБТ, ФайлПр);
       ФайлБТ.ЗакрытьФайл();
       
       ФайлПр = Новый XBase;
       ОткрытьФайлПр(ФайлПр);
       Если ОчиститьПродукция тогда
           ОчиститьПр(ФайлПр);
       КонецЕсли;
       Проц(ФайлПр);
       //ТаблицаЗначений(ФайлБТ, ФайлПр);
       ФайлПр.ЗакрытьФайл();    
       //
       ФайлКонтр = Новый XBase;
       ОткрытьФайлКонтр(ФайлКонтр);
       Если ОчиститьКонтр тогда
           ОчиститьФайлКонтр(ФайлКонтр);
       КонецЕсли;
       Проц2(ФайлКонтр);
       ФайлКонтр.ЗакрытьФайл();    
       
   КонецФункции // Загрузить()
10 demous
 
17.01.12
15:42
вот в середине
11 MatrosoV AleXXXand_R
 
17.01.12
15:44
Закрыть базу данных
12 demous
 
17.01.12
15:47
При закрытой программе вылетает ошибка которая описанна вначале темы
13 demous
 
17.01.12
15:52
????
14 demous
 
17.01.12
15:57
Весь день сижу разобраться не могу(((
15 1398
 
17.01.12
16:06
уже в (1) все же подробно написали... прежде, чем будет работать "ФайлПр.Первая();" где-то ранее должен отработать "ФайлПр.ОткрытьФайл(ИмяФайла);" где ИмяФайла - это путь к файлу
видимо в ОткрытьФайлБТ(...) - этого не происходит по каким-то причинам
16 1398
 
17.01.12
16:07
(0) если не секрет, а где в УПП эта выгрузка в программу учета алкоголя?
17 demous
 
17.01.12
16:10
это ВПФ, писалась не знаю кем(
18 demous
 
17.01.12
16:10
но еще в октябре когда делали за 3 квартал отчетность, все работало...
19 БалбесВ1с
 
17.01.12
16:12
(18)Может пути сменились к файлам?
20 demous
 
17.01.12
16:13
Функция ОткрытьФайлПр(ФайлПр)
ФайлПр.Кодировка = КодировкаXBase.OEM;
   ИмяФайлаБазы2 = ""+Путь+"\PRODUCTS.DBF";
ФайлПр.ОткрытьФайл(ИмяФайлаБазы2);    

КонецФункции // ОткрытьФайлПр()
21 demous
 
17.01.12
16:14
я как бы прописываю в путь, не конкретно файл, а каталог содержащий файлы, строка путь пуста, для того чтобы за каждый квартал создавать новые каталоги
22 Rie
 
17.01.12
16:16
(20) После
ФайлПр.ОткрытьФайл(ИмяФайлаБазы2);
проверь, что база - действительно открылась, то есть ФайлПр.Открыта() имеет значение Истина.
(это можно посмотреть даже Отладчиком).

(21) Новый квартал - новый каталог? Он создан? В нём есть нужные файлы?
23 demous
 
17.01.12
16:18
тогда происходит выгрузка, но файлы остаются пустыми... ( дата изменения файла показует что файл был задействован)
когда конкретно к файлу путь указываю, тогда ошибка которая в начале
24 demous
 
17.01.12
16:19
Новый каталог создан, в нем есть все файлы с нужной структурой, к нему прописан путь
как мне отладчиком посмотреть значение процедуры?
25 БалбесВ1с
 
17.01.12
16:20
(0)Ещё возможен вариант нет прав на создание или изменение файла в данном каталоге.Также учти что нельзя (по умолчанию) создать на 2008 сервере файл в корне диска.
26 1398
 
17.01.12
16:21
имхо - (18) прав, скорее всего. Посмотри в отладчике значение переменной Путь (может, диск какой-то отвалился).

Теоретически, может ещё быть, что файл открыть не получается из-за того, что осталось висеть соединение с ним (например - был открыт при предыдущем запуске и п каким-то причинам не был закрыт). Из всем доступных средств тут помогает перезагрузка того компа, на котором расположена база той программы для алкоголиков.
27 demous
 
17.01.12
16:22
Права Полные
каталог создан не в корне, а на сервере
28 demous
 
17.01.12
16:24
база той программы для алкоголиков. - это сервер) программа тоже на сервере, точнее сказать папка с программой и является каталогом, в ней и хранятся эти файлы бд
29 Rie
 
17.01.12
16:24
(24) Запустить 1С в отладочном режиме.
F9 - поставить точку останова.
Shift-F9 - вычислить выражение.

(27) Не права 1С, а права пользователя Windows на файл.
30 БалбесВ1с
 
17.01.12
16:24
Вот так я узнал что у меня нет прав )
 
Если Не ФайлБТ.Открыта() Тогда
       Сообщить ("Нет доступа к серверу !");
       Отказ=Истина;
КонецЕсли;
31 demous
 
17.01.12
16:34
http://rghost.ru/35952021 вот сама обработка....
права имеются(
32 1398
 
17.01.12
16:36
(31) Сколько готов заплатить?
33 demous
 
17.01.12
16:37
а на добровольной основе помощь тут не оказывают( просто три месяца как учу 1с только(((
34 alxxsssar
 
17.01.12
16:38
прав нет сто пудов на файл или папку какую-то. смотри текущего пользователя в системе
35 alxxsssar
 
17.01.12
16:39
+(34) или в прописанной папке файл удалили/переименовали, или папку удалили. пути проверь
36 demous
 
17.01.12
16:40
папка есть, файл есть, сто раз переписывал путь, права тоже имеются и в 1с и в системе(((
37 Rie
 
17.01.12
16:41
(33) Бесплатная помощь уже оказана в этой ветке.

(Но дело, скорее всего, не в обработке. Проверяй наличие файлов/каталогов и прав на них (проверяй, а не просто "права есть")).
38 Rie
 
17.01.12
16:41
(36) Как проверял наличие прав?
39 Rie
 
17.01.12
16:42
+(38) (имеются в виду права на файлы).
40 demous
 
17.01.12
16:43
сначала все делалось с моего компа, под моими данными, потом все делалось с компа и под пользователем того человека который делал это все с 2007 года, потом под админом системы
41 demous
 
17.01.12
16:43
я благодарен что уделяете время помощи мне!
42 Rie
 
17.01.12
16:44
(40) _Посмотри_ права на файлы. На сервере - правой кнопкой мыши по файлу/папке и вкладки "Доступ" и "Безопасность".
43 Rie
 
17.01.12
16:45
+(42) Или просто попробуй открыть (например, Excel'ем) тот файл.
44 hhhh
 
17.01.12
16:45
(36) еще бывает прикол, стоит галочка в верхней папке "Распространять на все дочерние папки". Смотришь, вроде права есть, но если на родительскую папку прав нет, то ничего не получается.
45 demous
 
17.01.12
16:47
полный доступ- изменение - чтение - файлы открываются на папки тоже доступ есть
46 CrazyBear
 
17.01.12
16:51
Если ОчиститьПродукция тогда
           ОчиститьПр(ФайлПр);
       КонецЕсли;

А что у тебя в процедуре "ОчиститьПр" делается? может ты его просто убиваешь там?
47 demous
 
17.01.12
16:54
поставил галочку на очистку



{Обработка.П_Декларация6.Форма.Форма(511)}: Ошибка при вызове метода контекста (ОчиститьФайл): Перед выполнением операции нужно открыть базу
   ФайлПр.ОчиститьФайл();
48 Rie
 
17.01.12
16:59
(47) У тебя НЕ открыт XBase-файл. Стало быть, задача - выяснить, почему он не открыт.
Варианты: он НЕ открывается при ФайлПр.Открыть() - чтобы проверить это, надо поставить точку останова на ФайлПр.Открыть() и посмотреть _после_ выполнения этого оператора значение ФайлПр.Открыта(). Если это значение равно Ложь - стало быть, либо путь к файлу не тот, либо файл корявый, либо прав нет. Но обработка тут ни при чём, ковырять надо в системе.
Второй вариант - ФайлПр.Открыта() имеет значение Истина. Тогда пошагово идёшь дальше и смотришь - а не закрывает ли кто этот файл?
49 CrazyBear
 
17.01.12
16:59
А может другая программа держит этот файл?