обработка данных из двух дбф файлов
27.06.2012
10:58
#15
"Пишет не найден ID...я вообще не правильно делаю? или все же в том направлении?
ДБФ = Новый XBase;
ДБФС = Новый XBase;
ДБФ.ОткрытьФайл(ВыбФайлНакл,,Истина);
ДБФС.ОткрытьФайл(ВыбФайлСостав, , Истина);
СтарНомер = """";
ПервыйРаз = 1;
Записать = Ложь;
Для НК = 1 По ДБФС.КоличествоЗаписей() Цикл
ДБФС.Перейти(НК);
Сообщить("Обрабатываем НК");
ДБФ.ТекущийИндекс = ДБФ.индексы.ID;
ДБФ.ключ.ID = ДБФС.NI_ID;
ЗаписьНайдена = ДБФ.НайтиПоКлючу("=");
Сообщить(ЗаписьНайдена);
Кол = ДБФ.ID;
Если Кол = ДБФС.NI_ID Тогда
Сообщить(ДБФС.AMOUNT + " нашли!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
Иначе
Сообщить(ДБФС.NI_ID);
КонецЕсли;"
ДБФ = Новый XBase;
ДБФС = Новый XBase;
ДБФ.ОткрытьФайл(ВыбФайлНакл,,Истина);
ДБФС.ОткрытьФайл(ВыбФайлСостав, , Истина);
СтарНомер = """";
ПервыйРаз = 1;
Записать = Ложь;
Для НК = 1 По ДБФС.КоличествоЗаписей() Цикл
ДБФС.Перейти(НК);
Сообщить("Обрабатываем НК");
ДБФ.ТекущийИндекс = ДБФ.индексы.ID;
ДБФ.ключ.ID = ДБФС.NI_ID;
ЗаписьНайдена = ДБФ.НайтиПоКлючу("=");
Сообщить(ЗаписьНайдена);
Кол = ДБФ.ID;
Если Кол = ДБФС.NI_ID Тогда
Сообщить(ДБФС.AMOUNT + " нашли!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
Иначе
Сообщить(ДБФС.NI_ID);
КонецЕсли;"
27.06.2012
11:16
#17
Да все правильно ты сказал, просто еще есть метод, все поместить во временные и сделать запрос с группировкой по строке одной таблицы и выводом строк другой. Про множественность строк во второй таблицы я не учел.
27.06.2012
11:19
#18
"ДБФ = Новый XBase;
ДБФС = Новый XBase;
ДБФ.ОткрытьФайл(ВыбФайлНакл,,Истина);
ДБФС.ОткрытьФайл(ВыбФайлСостав, , Истина);
ДБФС.ДобавитьИндекс("NI_ID","NI_ID",0,0,"""");
ДБФС.СоздатьИндексныйФайл("NI_ID.CDX");
ДБФС.ТекущийИндекс("NI_ID");
ДБФ.Первая();
Пока ДБФ.ВКонце()=0 Цикл
ДБФ_ID = ДБФ.ID;
ДБФС.Найти(ДБФ_ID,1);
Пока (ДБФС.NI_ID = ДБФ_ID) Цикл
Сообщить(ДБФС.AMOUNT + " нашли!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
ДБФС.Следующая();
КонецЦикла;
ДБФ.Следующая();
КонецЦикла;"
ДБФС = Новый XBase;
ДБФ.ОткрытьФайл(ВыбФайлНакл,,Истина);
ДБФС.ОткрытьФайл(ВыбФайлСостав, , Истина);
ДБФС.ДобавитьИндекс("NI_ID","NI_ID",0,0,"""");
ДБФС.СоздатьИндексныйФайл("NI_ID.CDX");
ДБФС.ТекущийИндекс("NI_ID");
ДБФ.Первая();
Пока ДБФ.ВКонце()=0 Цикл
ДБФ_ID = ДБФ.ID;
ДБФС.Найти(ДБФ_ID,1);
Пока (ДБФС.NI_ID = ДБФ_ID) Цикл
Сообщить(ДБФС.AMOUNT + " нашли!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
ДБФС.Следующая();
КонецЦикла;
ДБФ.Следующая();
КонецЦикла;"
27.06.2012
11:24
#19
"Выдает ошибку.
{Форма.Форма1.Форма(291)}: Поле объекта не обнаружено (AMOUNT)
НС.Количество = Формат(ДБФС.AMOUNT, "ЧГ=0");
ДБФС = Новый XBase;
ДБФС.Кодировка = КодировкаXBase.OEM;
ТЗНакл = Новый ТаблицаЗначений;
ТЗНакл.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число"));
ТЗНакл.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
ТЗНакл.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
ТЗНакл.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
ТЗНакл.Колонки.Добавить("Договор", Новый ОписаниеТипов("Строка"));
ТЗНакл.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
ДБФС.ОткрытьФайл(ВыбФайлНакл, ,Истина);
НК = ДБФС.КоличествоЗаписей();
Для НК = 1 По 5 Цикл
ДБФС.Перейти(НК);
НС = ТЗНакл.Добавить();
НС.НомерСтроки = НК;
НС.Количество = Формат(ДБФС.AMOUNT, "ЧГ=0");
НС.Сумма = Формат(ДБФС.SUMMA, "ЧГ=0");
НС.Цена = Формат(ДБФС.PRICE, "ЧГ=0");
НС.Договор = Формат(ДБФС.NI_ID, "ЧГ=0");
ДБФС.ТекущийИндекс = ДБФС.индексы.NI_ID;
Индексы я правильно сделала?"
{Форма.Форма1.Форма(291)}: Поле объекта не обнаружено (AMOUNT)
НС.Количество = Формат(ДБФС.AMOUNT, "ЧГ=0");
ДБФС = Новый XBase;
ДБФС.Кодировка = КодировкаXBase.OEM;
ТЗНакл = Новый ТаблицаЗначений;
ТЗНакл.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число"));
ТЗНакл.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
ТЗНакл.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
ТЗНакл.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
ТЗНакл.Колонки.Добавить("Договор", Новый ОписаниеТипов("Строка"));
ТЗНакл.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
ДБФС.ОткрытьФайл(ВыбФайлНакл, ,Истина);
НК = ДБФС.КоличествоЗаписей();
Для НК = 1 По 5 Цикл
ДБФС.Перейти(НК);
НС = ТЗНакл.Добавить();
НС.НомерСтроки = НК;
НС.Количество = Формат(ДБФС.AMOUNT, "ЧГ=0");
НС.Сумма = Формат(ДБФС.SUMMA, "ЧГ=0");
НС.Цена = Формат(ДБФС.PRICE, "ЧГ=0");
НС.Договор = Формат(ДБФС.NI_ID, "ЧГ=0");
ДБФС.ТекущийИндекс = ДБФС.индексы.NI_ID;
Индексы я правильно сделала?"
Читают тему
(гостей: 1)