|   |   | 
| 
 | Загрузка из ДБФ! | ☑ | ||
|---|---|---|---|---|
| 0
    
        Aleksei_Pro 02.10.11✎ 17:48 | 
        Если НЕ ЗначениеЗаполнено(ЭлементыФормы.ИмяФайла.Значение) Тогда
  Предупреждение("Не указан файл выгруженных данных."); Возврат; Иначе Файл = новый XBase; Файл.ОткрытьФайл(ЭлементыФормы.ИмяФайла.Значение,,Ложь); Пока Файл.ВКонце() = 0 Цикл Запрос = новый Запрос; Запрос.УстановитьПараметр("Код1",Справочники.Контрагенты.НайтиПоКоду(СокрЛП(Файл.KodVlad))); Запрос.УстановитьПараметр("Код2",Справочники.Организации.НайтиПоКоду(СокрЛП(Файл.KodOrg))); Запрос.УстановитьПараметр("ВидДоговора",Перечисления.ВидыДоговоровКонтрагентов.СПокупателем); Запрос.Текст = "ВЫБРАТЬ | ДоговорыКонтрагентов.Владелец, | ДоговорыКонтрагентов.Организация, | ДоговорыКонтрагентов.ВидДоговора, | ДоговорыКонтрагентов.Ссылка |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Владелец = &Код1 | И ДоговорыКонтрагентов.Организация = &Код2 | И ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора"; Если Запрос.Выполнить().Пустой() Тогда Продолжить; Сообщить("не найден договор"); КонецЕсли; Рез = запрос.Выполнить().Выбрать(); пока рез.Следующий() цикл догов = Рез.Ссылка.ПолучитьОбъект(); догов.Код = СокрЛП(Файл.NomenDog); догов.наименование = СокрЛП(Файл.NaimDo); догов.Записать(); Прервать; КонецЦикла; Сообщить("Записан договор: "); Файл.Следующая(); КонецЦикла; Файл.ЗакрытьФайл(); КонецЕсли; Вот обработка по загрузке из дбф, почему 1 запись находит, а потом не находи больше ни чего, хотя по кодам все есть! | |||
| 1
    
        MaxS 02.10.11✎ 17:52 | 
        Ого. Четыре запроса в цикле.
  Было бы лучше загрузить дбв в таблицу значений, которую загрузить в запрос и одним запросом всё выбрать. | |||
| 2
    
        Aleksei_Pro 02.10.11✎ 17:53 | 
        (1) эт тоже можно, но тут то в чем косяк?     | |||
| 3
    
        zladenuw 02.10.11✎ 17:54 | 
        Если Запрос.Выполнить().Пустой() Тогда 
  Продолжить; Сообщить("не найден договор"); КонецЕсли;. вот тут у тебя продолжить, попадаем в начало цикла, а Файл.Следующая(); не сделал | |||
| 4
    
        zladenuw 02.10.11✎ 17:54 | 
        Продолжить
  Немедленно передает управление в начало цикла, где производится вычисление и проверка условий выполнения цикла. Операторы, следующие в теле цикла за ним, на данной итерации обхода не выполняются. | |||
| 5
    
        Aleksei_Pro 02.10.11✎ 17:56 | 
        ох точно спасибо)     | |||
| 6
    
        aleks-id 02.10.11✎ 18:36 | 
        (1) а слабо сразу запрос к дбф сделать? что за бред - грузить сначала в ТЗ а потом запросом оттуда дергать?     | |||
| 7
    
        MaxS 02.10.11✎ 18:42 | 
        (6) левое соединение объектов 1С к внешнему файлу dbf?
  пока не возникало необходимости. Не знаю как это делается ;) | |||
| 8
    
        zladenuw 02.10.11✎ 18:46 | 
        а еще лучше использовать 8.2.14 и туда добавить такую таблицу :)     | |||
| 9
    
        aleks-id 02.10.11✎ 18:48 | 
        (7) я имел ввиду, что использование XBase - моветон ;)     | |||
| 10
    
        Reaper_1c 02.10.11✎ 18:51 | 
        А использовать универсальную загрузку данных из табличного документа с ИТС слабо?     | |||
| 11
    
        aleks-id 02.10.11✎ 18:53 | 
        +(9) кстати, из дбф запросом можно выдернуть только те записи, которые есть в базе, и работать только с ними без всяких проверок.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |