7.7 Выгрузка данных из 7.7 в 8.2

Тема в разделе "Обмен данными в "1С:Предприятие 7.7"", создана пользователем Ученик1c, 25 мар 2011.

  1. TopicStarter Overlay
    Ученик1c
    Offline

    Ученик1c

    Регистрация:
    3 дек 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток!
    Выгружаю данные через OLE.
    Соединяюсь с 7.7 базой. Цепляю Контрагента, у него есть подчиненый справочник НоменклатураКонтрагента. В ней хранятся номенклатуры и цены для данного контрагента. Собственно проблема не могу перебрать эту номенклатуру.

    Код:
    СпрК = V7.CreateObject("Справочник.Контрагенты");
    СпрК.ВыбратьЭлементы();
    Пока СпрК.ПолучитьЭлемент()=1 Цикл
    Если СпрК.ИспользоватьСпецификацию = 1 Тогда 
    Сообщить(СпрК.Наименование);
    
    СпрНК = V7.CreateObject("Справочник.НоменклатураКонтрагентов");
    СпрНК.ИспользоватьВладельца(СпрК);
    СпрНК.ВыбратьЭлементы();
    
    
    
    Если СпрНК.ПолучитьЭлемент() = 1  Тогда
    Сообщить(СпрНК.Номенклатура.Наименование);
    Сообщить(СпрНК.Номенклатура.Код);
    ......
    
    
    
    
    Вот если так - то получаю, только первую номенклатуру в списке, а надо всю. В 7.7 не силен - решил посмотреть как это примерно реализовано в 7.7:
    Код:
    Спр = СоздатьОбъект("Справочник.НоменклатураКонтрагентов");
    Спр.ИспользоватьВладельца(Контрагент);
    Спр.ВыбратьЭлементы();
    Если Спр.ПолучитьЭлемент() = 1  Тогда
    [b]ВыбратьСтроки()[/b];
    Пока [b]ПолучитьСтроку() = 1[/b] Цикл
    Если Спр.НайтиПоРеквизиту("Номенклатура",Номенклатура,0) = 1 Тогда
    
    
    
    
    Если я вставляю в 8.2 ВыбратьСтроки - система выдает ошибку. Мб, я не туда копаю или окончательно запутался. :angry:
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    думаю в этом проблема
    Код:
    СпрНК = V7.CreateObject("Справочник.НоменклатураКонтрагентов");          
    СпрНК.ИспользоватьВладельца(СпрК);          
    СпрНК.ВыбратьЭлементы();                              
    //тут нужен цикл для получения всех подчиненных элементов
    Пока СпрНК.ПолучитьЭлемент() = 1  Цикл
    ...
    
    
    
    
  3. TopicStarter Overlay
    Ученик1c
    Offline

    Ученик1c

    Регистрация:
    3 дек 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    А что, тогда делает?
    Код:
    Пока СпрНК.ПолучитьЭлемент() = 1  Цикл
    
    
    Судя по примерам - это цикл как раз перебирает справочник.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Именно

    ПолучитьЭлемент(<Режим>)
    Назначение:
    Получить из выборки следующий элемент справочника.
    Возвращает: 1 - если элемент выбран, 0 - если элемент не выбран.
    Параметры:
    <Режим> - что выбирать:
    1 - включать в выборку подчиненные элементы,
    0 - не включать в выборку подчиненные элементы (необязателен, по умолчанию - 1).
  5. TopicStarter Overlay
    Ученик1c
    Offline

    Ученик1c

    Регистрация:
    3 дек 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Вот так сделал - заработало, вижу всю номенклатуру. Спасибо :)
    Код:
    СпрНК = V7.CreateObject("Справочник.НоменклатураКонтрагентов");
    СпрНК.ИспользоватьВладельца(СпрК);
    СпрНК.ВыбратьЭлементы();
    Пока СпрНК.ПолучитьЭлемент() = 1 Цикл
    Сообщить(СпрНК.Номенклатура.Наименование);  
    КонецЦикла;
    
    
    
    Возник след. вопрос: Это переброска будет постоянно гонять всю номенклатуру. Все говорят нужен регистр сведений, а что и как там - тишина. Нужен пример или хотя бы на пальцах объяснить методологию сие процесса - желательно по-подробнее.
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ну начнем с того что "гоняется" не вся номеклатура, а только подчиненные элементы справочника... Чтобы не "гонять" нужно просто проверить на существование элемента в базе/приемнике
  7. TopicStarter Overlay
    Ученик1c
    Offline

    Ученик1c

    Регистрация:
    3 дек 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Ситуация такая: Если, стоит галочка у контра - выгружаем подчиненную номенклатуру, если не стоит - выгружаем всю номенклатуру которая есть на складе.
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Мне кажется в любом случае номенклатуда д.б. выгружена полностью.. Но только 1 раз. По поводу алгоритма если я правильно уловил мысль делайте так
    Код:
    Если СпрНК.ВыбратьЭлементы()=1 Тогда
    Пока СпрНК.ПолучитьЭлемент() = 1 Цикл 
    Сообщить(СпрНК.Номенклатура.Наименование);   
    КонецЦикла;
    КонецЕсли;
    
    
  9. TopicStarter Overlay
    Ученик1c
    Offline

    Ученик1c

    Регистрация:
    3 дек 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Да так, но еще надо учитывать группы - сейчас этим занимаюсь.
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если выгружать ВЕСЬ справочник до выгрузки ссылок (справочник.номенклатураКонтрагентов) до и заморачиваться не с чем. При выборке элементов 1с сама сначала выбирает родитеря (группу) а потом уже вложенные элементы. Если же "гемороиться" с выгрузкой по владельцу.... только тогда придется учитывать иерархию
  11. TopicStarter Overlay
    Ученик1c
    Offline

    Ученик1c

    Регистрация:
    3 дек 2010
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Но мне надо не весь справочник, а номенклатуру которая есть на остатке. Если прокатит, то хотелось бы пример, а то я нашел выгрузку, которая выгружает отдельно группы, потом группы раскидывает по группам, а потом уже элементы по граппам. Если процесс можно упросить, надо упрощать :)

Поделиться этой страницей