Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 ноя 2024, 02:30

экспорт из access в 1c в подчиненный справочник

Автор Nipaaah, 15 дек 2011, 17:46

0 Пользователей и 1 гость просматривают эту тему.

Клюшкин

Поменяйте местами строки:
q1= НаборЗаписей.Fields("k_tbn").Value;     
Пока НаборЗаписей.EOF()=0 Цикл 

Nipaaah

Цитата: Клюшкин от 16 дек 2011, 16:02
Поменяйте местами строки:
q1= НаборЗаписей.Fields("k_tbn").Value;     
Пока НаборЗаписей.EOF()=0 Цикл 

большое вам спасибо
и кстати насчет скорости, если способ быстрей??

Клюшкин

Ну как минимум попробовать поменять местами циклы. Не записи из Access перебирать для каждого элемента справочника 1С, а перебирать элементы справочника Сотрудники для каждой записи таблицы Access. Не знаю. что быстрее, надо пробовать...
Еще можно попробовать в текущем варианте не запрашивать каждый раз данные заново из файла Access, а возвращаться в наборе к первой записи хранящегося в памяти множества, т.е. запросить записи только 1 раз - первый.
На мой взгляд, все равно придется перебирать все элементы одного множества для каждого элемента другого множества. Но, не исключено, что я могу ошибаться ).

Клюшкин

Еще можно вот так попробовать:

Спр = СоздатьОбъект("Справочник.Сотрудники");
СпрКонтр = СоздатьОбъект("Справочник.Контракты");
инициализация объектов адо и др.

начало перебора записей таблицы Access
     ql = ...
     Спр.НайтиПоКОду(ql);
     Если (Спр.Выбран() = 0) Тогда
   Сообщить("Сотрудника с ТН " + ql + " нет в справочнике");
   Продолжить();
     КонецЕсли;

     ...
     создаем контракт
     ...
конец перебора записей таблицы Access
     
Т.е. попробовать заменить перебор записей справочника 1С на поиск.

Клюшкин

В последнем коде будет не Спр.НайтиПоКОду(ql), а Спр.НайтиПоРеквизиту("ТабельныйНомер", ql). Соответственно, он должен быть уникальным.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск