|
Загрузка из ДБФ! | ☑ | ||
---|---|---|---|---|
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) кстати, из дбф запросом можно выдернуть только те записи, которые есть в базе, и работать только с ними без всяких проверок.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |