| 
			| 
					
						| Gunslinger 
								Постоялец    Offline | 
								|  | «  : 04-06-2010 09:46 »  |  | 
 
 Есть код:
 Процедура КнопкаСформироватьНажатие(Кнопка)
 Файл = Новый XBase;
 
 //определяем структуру файла
 //Синтаксис: ДобавитьПоле(<Название>,<Тип>,<Длина>,<Точность>)
 
 Файл.Поля.Добавить("INN","S",50,0);
 Файл.Поля.Добавить("DATE","D",10);
 Файл.Поля.Добавить("IDENT","S",50);
 Файл.СоздатьФайл("catalog.dbf"); //создаем файл физически
 
 Файл.Индексы.Добавить("IDXCODE", "IDENT");
 ФлИБД = Файл.СоздатьИндексныйФайл("index.cdx");
 Файл.АвтоСохранение = Истина;
 
 Номенклатура = Справочники.Контрагенты.Выбрать();
 Пока Номенклатура.Следующий() Цикл
 Файл.Добавить();
 Файл.INN = Номенклатура.ИНН;
 Файл.DATE = ТекущаяДата();
 Файл.IDENT = Новый УникальныйИдентификатор;
 Файл.Записать();
 КонецЦикла;
 
 Файл.ЗакрытьФайл(); //не забывайте пожалуйста
 КонецПроцедуры
 
 Процедура ПриОткрытии()
 Файл = Новый XBase;
 Файл.ОткрытьФайл("C:\catalog.dbf", "С:\index.cdx");
 !   Файл.ТекущийИндекс = Файл.индексы.IDXCODE;
 Пока Файл.Следующий() Цикл
 ЭлементыФормы.ТабличноеПоле1.ТекущиеДанные = Файл.INN;
 КонецЦикла;
 Файл.ЗакрытьФайл();
 КонецПроцедуры
 
 На строке с "!" выползает ошибка : поле объекта не обнаружено (IDXCODE). Кто-нибудь сталкивался с таким?
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Gunslinger 
								Постоялец    Offline | 
								|  | « Ответ #1 : 04-06-2010 10:36 »  |  | 
 
 Уже сам понял... вот исправленный код 
 Процедура КнопкаСформироватьНажатие(Кнопка)
 Файл = Новый XBase;
 
 //определяем структуру файла
 //Синтаксис: ДобавитьПоле(<Название>,<Тип>,<Длина>,<Точность>)
 
 Файл.Поля.Добавить("INN","S",50,0);
 Файл.Поля.Добавить("DATE","D",10);
 Файл.Поля.Добавить("IDENT","S",50);
 Файл.СоздатьФайл("C:\catalog.dbf"); //создаем файл физически
 
 Файл.Индексы.Добавить("IDXCODE", "IDENT");
 ФлИБД = Файл.СоздатьИндексныйФайл("C:\catalog.cdx");
 Файл.АвтоСохранение = Истина;
 
 Номенклатура = Справочники.Контрагенты.Выбрать();
 Пока Номенклатура.Следующий() Цикл
 Файл.Добавить();
 Файл.INN = Номенклатура.ИНН;
 Файл.DATE = ТекущаяДата();
 Файл.IDENT = Новый УникальныйИдентификатор;
 Файл.Записать();
 КонецЦикла;
 
 Файл.ЗакрытьФайл(); //не забывайте пожалуйста
 КонецПроцедуры
 
 Процедура ПриОткрытии()
 //Возврат;
 Файл = Новый XBase;
 Файл.ОткрытьФайл("C:\catalog.dbf", "C:\catalog.cdx");
 Файл.ТекущийИндекс = Файл.Индексы.IDXCODE;
 Пока Файл.Следующая() Цикл
 Сообщить(Файл.INN);
 //   ЭлементыФормы.ТабличнаяЧасть1.ТекущиеДанные.ИНН = Файл.INN;
 КонецЦикла;
 Файл.ЗакрытьФайл();
 КонецПроцедуры
 Он почему-то ничего не возвращает- ни одного сообщения, хотя должно быть 120, файлы оба создаются и не пустые... Есть идеи?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #2 : 04-06-2010 19:09 »  |  | 
 
 Попробуй перед циклом что-то типа ВНачало() |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Gunslinger 
								Постоялец    Offline | 
								|  | « Ответ #3 : 07-06-2010 04:38 »  |  | 
 
 Попробовал - эффекта нет... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Gunslinger 
								Постоялец    Offline | 
								|  | « Ответ #4 : 07-06-2010 07:24 »  |  | 
 
 Процедура ПриОткрытии()//Возврат;
 Файл = Новый XBase;
 Файл.ОткрытьФайл("C:\catalog.dbf", "C:\catalog.cdx");
 //Файл.ТекущийИндекс = Файл.Индексы.IDXCODE;
 Файл.Первая();
 Пока Не Файл.Последняя() Цикл
 Сообщить(Файл.INN + Файл.DATE);
 //ЭлементыФормы.ТабличнаяЧасть1.ТекущиеДанные.ИНН = Файл.INN;
 Файл.Следующая();
 КонецЦикла;
 Файл.ЗакрытьФайл();
 КонецПроцедуры
 Такой способ организации цикла тоже нифига не дал...
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #5 : 07-06-2010 18:04 »  |  | 
 
 А без индекса пробовал? Файл.ОткрытьФайл("C:\catalog.dbf"); |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Gunslinger 
								Постоялец    Offline | 
								|  | « Ответ #6 : 08-06-2010 04:41 »  |  | 
 
 Тот же эффект.. Я думал может из-за того что записей в документе много записей, из другой конфигурации его создавать, где контрагетов всего 3... Но не выводится сообщение... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Gunslinger 
								Постоялец    Offline | 
								|  | « Ответ #7 :  08-06-2010 05:10 »   |  | 
 
 Все нашел.. Проблема была в том что не вызывалась сама функция ПриОткрытии(). Перенес код в ПередОткрытием() все нормально стало |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #8 : 08-06-2010 15:45 »  |  | 
 
 Скорее всего у тебя функция ПриОткрытии не привязана к соотвтствующему событию формы. Для 8.Х недостаточно просто назвать функцию - ее нужно указать как обработчик события |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Gunslinger 
								Постоялец    Offline | 
								|  | « Ответ #9 : 18-06-2010 06:36 »  |  | 
 
 Мне нужно теперь в документ Xbase вносить данные из другой формы - пробую такПроцедура Кнопка1Нажатие(Элемент)
 Файл = Новый XBase;
 Файл.ОткрытьФайл("C:\catalog.dbf", "C:\catalog.cdx");
 Файл.ТекущийИндекс = Файл.Индексы.IDXCODE;
 Файл.INN = ЭлементыФормы.ПолеВвода29;
 Файл.OTIFNS = ЭлементыФормы.ПолеВвода1;
 Файл.ЗакрытьФайл();
 КонецПроцедуры
 Код выполняется но в документе записей не добавляется..
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Kivals | 
								|  | « Ответ #10 : 22-06-2010 17:09 »  |  | 
 
 ЭлементыФормы.ПолеВвода29 - это интерфейсный объект.Нужно:
 ЭлементыФормы.ПолеВвода29.Значение
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |