... находит тока первую запись, а не по ключу.
----Кусочек программки----- ФайлБД.Ключ.Mes=2; ФайлБД.Ключ.TN=ФайлТН.TN; Если ФайлБД.НайтиПоКлючу(0)=1 Тогда ------------------------------------ |
Bkmzzzz
А индекс добавил? _________________ Скажи мне чей Крым, и я скажу кто ты. |
да |
а ТекущийИндекс() чего возвращает? _________________ Скажи мне чей Крым, и я скажу кто ты. |
строчка выше моей программки
ФайлБД.ТекущийИндекс("IDXTN"); |
Bkmzzzz
а этот- Mes? и ФайлТН.TN чему равно? _________________ Скажи мне чей Крым, и я скажу кто ты. |
поясняю, может поможет
ФайлТН.TN берет из базы ФайлТН табельный номер. ищет его в ФайлБД (их там много, точнее не больше 12) а MES это месяц ,в данном случае 2 взал чтоб попробывать... вот что мне надо.. может я че делаю не так... |
имхо
ФайлБД.Ключ.TN=ФайлТН.TN - некорректно. _________________ Скажи мне чей Крым, и я скажу кто ты. |
почему? |
Bkmzzzz
а какую именно запись возвращает ФайлТН.TN. Или у тебя там перебор идет выше? Ты бы выложил листинг побольше. А то из этого нефига не понятно. _________________ Скажи мне чей Крым, и я скажу кто ты. |
Процедура Сформировать()
Файл="zarab_06.dbf"; КонФайл="itog.dbf"; инд="Tn.cdx"; Файл1 = КонФайл; Каталог1 = ФС.ТекКаталог(); ФС.ВыбратьФайл (0, Файл1, Каталог1, "Открыть ДБФ", "*.dbf", "dbf", ); Т2=Каталог1+Файл1 ; ФайлТН = создатьОбъект("XBASE"); ФайлТН.ОткрытьФайл(Т2); ФайлТН.КодоваяСтраница(1); Если ФайлТН.Открыта()=0 Тогда Сообщить("Не удалось открыть файл!"); КонецЕсли; ФайлТН.Первая(); Пока ФайлТН.ВКонце()=0 Цикл Начисленно=0; МатПом=0; Налог=0; Необлаг=0; Лгот=0; Иждив= 0; Мес=0; Для пер=1 По 5 Цикл Если пер=1 Тогда Путь1=Каталог1+"bd\" КонецЕсли; Если пер=2 Тогда Путь1=Каталог1+"DNEV\" КонецЕсли; Если пер=3 Тогда Путь1=Каталог1+"PLATN\" КонецЕсли; Если пер=4 Тогда Путь1=Каталог1+"SMP\" КонецЕсли; Если пер=5 Тогда Путь1=Каталог1+"strah\" КонецЕсли; ФайлБД = создатьОбъект("XBASE"); ФайлБД.ОткрытьФайл(Путь1+Файл,Путь1+инд); ФайлБД.КодоваяСтраница(1); Если ФайлБД.Открыта()=0 Тогда Сообщить("Не удалось открыть файл!"); КонецЕсли; ФайлБД.ТекущийИндекс("IDXTN"); ФайлБД.Ключ.Mes=2; ФайлБД.Ключ.TN=ФайлТН.TN; Если ФайлБД.НайтиПоКлючу(0)=1 Тогда Если ФайлБД.MATPOM=0 Тогда Начисленно=Начисленно+ФайлБД.NACH; Налог=Налог+ФайлБД.NALOG; Лгота=ФайлБД.LGOTA; Необлаг=ФайлБД.NEOBL; Лгот=ФайлБД.LGOT; Иждив= ФайлБД.IGDIV; Мес=ФайлБД.MES; Иначе МатПом=МатПом+ФайлБД.MATPOM; КонецЕсли; КонецЕсли; ФайлБД.ЗакрытьФайл(); КонецЦикла; ФайлТН.УстановитьЗначениеПоля("NACH",Начисленно); ФайлТН.УстановитьЗначениеПоля("MATPOM",МатПом); ФайлТН.УстановитьЗначениеПоля("NALOG",Налог); ФайлТН.УстановитьЗначениеПоля("LGOTA",Лгота); Если Начисленно =0 Тогда ФайлТН.УстановитьЗначениеПоля("NEOBL",0); ФайлТН.УстановитьЗначениеПоля("LGOT",0); ФайлТН.УстановитьЗначениеПоля("IGDIV",0); ФайлТН.УстановитьЗначениеПоля("MES",Мес); Иначе ФайлТН.УстановитьЗначениеПоля("NEOBL",Необлаг); ФайлТН.УстановитьЗначениеПоля("LGOT",Лгот); ФайлТН.УстановитьЗначениеПоля("IGDIV",Иждив); ФайлТН.УстановитьЗначениеПоля("MES",Мес); КонецЕсли; ФайлТН.Записать(); ФайлТН.Следующая(); КонецЦикла; ФайлТН.ЗакрытьФайл(); КонецПроцедуры |
а эта строка что у тебя делает?
Добавлено спустя 2 минуты 3 секунды: и есть индекс IDXMes ? _________________ Скажи мне чей Крым, и я скажу кто ты. |
Leon писал(а): эта строка что у тебя делаетИМХО аналог Set order to фоксового. (в сторону) млин, для кого-то If then while и else несколько больше чем просто операторы 8(. _________________ Йа - водоросль. |
устанавливает индекс, без ее ругаестя
говорит что нужно установить индекс |
Bkmzzzz
на поле Mes тоже индекс нужен/ Раз ты по нему ключ делаешь/ _________________ Скажи мне чей Крым, и я скажу кто ты. |
пробыват таже х.... получается...
Добавлено спустя 2 минуты 21 секунду: Dio писал(а): [ млин, для кого-то If then while и else несколько больше чем просто операторы 8(.полностью согласен.... |
Bkmzzzz
Попробуй индех IDXMesTN. По двум полям. _________________ Скажи мне чей Крым, и я скажу кто ты. |
Выдает полную...... |
вот так я, пока, вывернулся.... может кому пригодится...
----- ФайлБД.ДобавитьИндекс("IDXTN", "TN+MES", 0, 0, "MES=2"); ----- при создании индекса поставил фильтр .... и для надежности.... (так сказать контрольный в голову... ) ----- Если ФайлБД.НайтиПоКлючу(0)=1 Тогда Если ФайлБД.MES=Месяц Тогда ----- |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы |