Вход | Регистрация

1С:Предприятие ::

Метки:

Изучаем 8-ку... :((

Я
   mihalna
 
16.05.05 - 13:15
Есть Док, в котором таб\часть надо заполнить записями внешнего .dbf-файла.
Вот кусок кода, **** отмечены неверные строки. Что я делаю не так? ПЛИЗ, кто хочет помочь?
------------------------------------------------
//Модуль формы документа ВводСделки

//--------------------------------------------------

Процедура ВыборФайлаНажатие(Элемент)
    Режим = РежимДиалогаВыбораФайла.Открытие;
    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
    ДиалогОткрытияФайла.ПолноеИмяФайла = "";
    Фильтр = "Текст(*.dbf)|*.dbf";
    ДиалогОткрытияФайла.Фильтр = Фильтр;
    ДиалогОткрытияФайла.Заголовок = "Выберите файл";
    Если ДиалогОткрытияФайла.Выбрать() Тогда
********ЗагрИз = Новый Файл(ДиалогОткрытияФайла.ВыбранныйФайл);
        Сообщить(ЗагрИз);
    КонецЕсли;
КонецПроцедуры


Процедура ЗагрузитьНажатие(Элемент)
    Xb = Новый Xbase;
    Xb.ОткрытьФайл(ЗагрИз);
    Если Xb.Открыта() Тогда
        Сообщить("База успешно открыта");
    иначе
        Сообщить("Не смогли открыть базу");
        return;
    КонецЕсли;
    Вс=Xb.КоличествоЗаписей();
    Если Вс = 0 Тогда
        Сообщить("Файл пуст!");
    КонецЕсли;
    Xb.Первая();
    
**********    Док = Документы.ВводСделки.СоздатьДокумент();
    Пока Не Xb.ВКонце() Цикл
            
*********            НоваяСтрока = Док.Добавить();
                НоваяСтрока.ТабНом=Xb.TBN;
                НоваяСтрока.ВидРасчета=Xb.KDVD;
                НоваяСтрока.Результат=Xb.Summ;
                Признак=0;
            Если Число(Xb.DYS) <> 0 Тогда
                НоваяСтрока.ОтработаноДней = Xb.DYS;
            Иначе
                НоваяСтрока.ОтработаноДней = Xb.HRS;                        КонецЕсли;
    
                Xb.Следующая();
    КонецЦикла;
    
КонецПроцедуры
 
 
   miki
 
1 - 16.05.05 - 13:22
В чем трабла-то? Док не записывается?
   mihalna
 
2 - 16.05.05 - 13:24
Отрабатывает втихую и записывается БЕЗ табл\части.
Строки в таб\части не появляются.. :((
   mihalna
 
3 - 16.05.05 - 13:27
(2)+ и исчо перем ЗагрИз НЕ присваивает ВыбранныйФайл (чё-то видно нет такого метода).
   Rovan
 
4 - 16.05.05 - 13:28
(0) Тема не отражает суть сабжа !
   2q
 
5 - 16.05.05 - 13:46
НоваяСтрока = Док.Добавить();
это что?
Где ссылка на табл часть?
например
ТовСостав = Док.Товары 
НовСтрТовСостав = ТовСостав.Добавить();
НовСтрТовСостав.количество = 10;

где Док.Записать();?
   2q
 
6 - 16.05.05 - 13:53
ДБФш = Новый xBase;
        ИмяФ = "D:\1c8\Trade\OPT\D_SH_1i0.DBF";
    ДБФш.ОткрытьФайл(ИмяФ,,Истина);
    ДБФш.Кодировка = КодировкаXBASE.OEM;        
    Если НЕ ДБФш.Открыта() Тогда
        Сообщить("Ошибка открытия '" + ИмяФ + "'");
        Возврат 0;
    КонецЕсли;
    
    ДБФш.Первая();    
    Пока НЕ ДБФш.ВКонце() Цикл
              //обработка строки файла

        ДБФш.Следующая();
    КонецЦикла;
   mihalna
 
7 - 16.05.05 - 14:17
(5)Правильно ругаешь.
Ссылку на таб\часть добавила.
Выбор файла заработал.
Пасиб, ковыряю дальше
   mihalna
 
8 - 16.05.05 - 14:39
(5)РаботАет!!!
Но создает 2 дока: тот в которм я нахожусь и новый (с таб\частью), т.к.стоит же явно:  Док = Документы.ВводСделки.СоздатьДокумент();
А как бы мне в текущем доке загрузить таб\часть?
что-то вроде этого (как в 7-ке):
 Док = Документы.ТекущийДокумент(); (а не создавать новый)
есть что-то наподобие?
заранее - спасибо
   2q
 
9 - 16.05.05 - 14:57
Да вроде достаточно
ТекДокОбъект = ТекДокСсылка.ПолучитьОбъект();
Где ТекДокСсылка - ссылка на документ, в котором ты находишься
   2q
 
10 - 16.05.05 - 15:04
не создает новый документ?
так работает:

ДокВозПок    = Документы.ВозвратТоваровОтПокупателя;
НовДокВозПок    = ДокВозПок.СоздатьДокумент();
// заполняем реквизиты шапки, табличные части

НовДокВозПок.Записать();
 
 
   mihalna
 
11 - 16.05.05 - 16:04
(10)извини, достала наверное тебя.. :((
Мне НЕ надо НОВЫЙ док, мне надо в текущем доке заполнить таб\часть.
.
Если ДокСсылка - то ошибка при конф-ии: переменная ДокСсылка не определена, а если Док.Ссылка - то ошибка при выполнении: поле объекта Ссылка не обнаружено
.
как же ещё присвоить переменной - текущий док?
   zaba
 
12 - 16.05.05 - 17:13
Свойство <Ссылка> Т.е. в модуле формы/объекта:
ТекДок = Ссылка;
   француз
 
13 - 16.05.05 - 21:24
Док = Документы.ВозвратТоваровОтПокупателя.Выбрать();
    Пока Док.Следующий() Цикл
        ТекДок = Док.ПолучитьОбъект();
        Сообщить(ТекДок);
    КонецЦикла
   mihalna
 
14 - 17.05.05 - 09:20
(12)Видимо теперь я и впрямь в тек.доке - спасибо.
Теперь при попытке ввести новую строку в таб\часть - ошибка "объект недоступен для изменения".. :((
пожалуйста, кому я не очень надоела - подскажте, почему и что поправить?
   mihalna
 
15 - 17.05.05 - 09:42
Если кому интересно - помогло:
Док = ЭтотОбъект;
(а Ссылка - ссылается видимо только для чтения)
ЗЫ:Всем спасибо за терпение, и всем удачи и успехов!
   vasinok
 
16 - 17.05.05 - 09:52
(14,15)Все правильно, объект "ДокументСсылка", а в выражении "ТекДок = Ссылка" вы получаете именно его, позволяет обращаться к документу в режиме "только чтение", для получения записи необходимо получить объект "ДокументОбъект" с помощью метода "ПолучитьОбъект":
ТекДокОбъект = ТекДок.ПолучитьОбъект(); см. (13)
или обратиться к свойству ЭтотОбъект, как это сделали вы.
   mihalna
 
17 - 17.05.05 - 10:16
(16)при использовании ...ПолучитьОбъект() выдавалась ошибка - что-то про значение не является объектным типом.
Помогло только (15).


Список тем форума
 
Основная теорема систематики: Новые системы плодят новые проблемы.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует