7.7 программный поиск элементов справочника при не уникальности кодов

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Leisan, 21 май 2013.

  1. TopicStarter Overlay
    Leisan
    Offline

    Leisan

    Регистрация:
    4 апр 2012
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте ! Помогите пожалуйста разобраться!!!
    Как программно найти элемент в справочнике по наименованию, если коды уникальны в пределах группы, а поиск надо совершить в нескольких группах, и если элемента нет то создать новый элемент в группе. у искомого элемента могут быть остатки. например выгрузка в 1С Бухгалтерия (тип.вер) 7,7 в документ "Перемещение материалов" материал " а-шина 235/75 d 14". в выгрузку могу передать только наименование. поиск во всем справочнике приведет к нахождению нескольких одинаковых (справочник засорен до жути, и есть остатки), можно попробовать обратится к бухитогам, но может как то без них обойтись-слишком долго? я наверно ещё не все перепробовала заранее спасибо
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    1) ИспользоватьРодителия и НайтиПоНаименованию
    2) ИспользоватьРодителия и перебором элементов
  3. TopicStarter Overlay
    Leisan
    Offline

    Leisan

    Регистрация:
    4 апр 2012
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    именно так и делаю использовать родителя и найти по наименованию,но так не до конца получается верно-если надо искать в нескольких папках , как задать условие что если в этой папке нет тогда искать в другой?
  4. TopicStarter Overlay
    Leisan
    Offline

    Leisan

    Регистрация:
    4 апр 2012
    Сообщения:
    35
    Симпатии:
    0
    Баллы:
    1
    Код:
    если  БухМат.найтипокоду("ЦТ45027",0)=1  тогда
    бухмат1=БухМат.текущийэлемент();
    БухМат.ИспользоватьРодителя(бухмат1);
    
    если  БухМат.НайтиПоНаименованию(СокрЛП(текстрока.Номенклатура),1)=1 тогда
    ВыбДок.Материал= БухМат.ТекущийЭлемент();
    
    иначе
    если  БухМат.найтипокоду("ЦТ45028",0)=1  тогда
    бухмат1=БухМат.текущийэлемент();
    БухМат.ИспользоватьРодителя(бухмат1);
    если  БухМат.НайтиПоНаименованию(СокрЛП(текстрока.Номенклатура),1)=1 тогда
    ВыбДок.Материал= БухМат.ТекущийЭлемент();
    конецесли;
    конецесли;
    конецесли;
    конецесли;
    
    абракадабра же какая то, а если папок не 2 а 5, я себе это вообще не представляю
  5. Бухгалтерский угодник
    Offline

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

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

    Код:
    СписКод=СоздатьОбъект("СписокЗначений");
    СписКод.ДобавитьЗначение("ЦТ45027");
    СписКод.ДобавитьЗначение("ЦТ45028");
    //ну и т.д.
    
    СчастьЕсть=0;
    Для к=1 По СписКод.РазмерСписка() Цикл
    если  БухМат.найтипокоду(СписКол.ПолучитьЗначение(к),0)=1  тогда
    бухмат1=БухМат.текущийэлемент();
    БухМат.ИспользоватьРодителя(бухмат1);
    если  БухМат.НайтиПоНаименованию(СокрЛП(текстрока.Номенклатура),1)=1 тогда
    ВыбДок.Материал= БухМат.ТекущийЭлемент();
    СчастьЕсть=1;
    Прервать; 
    конецесли;
    конецесли;
    КонецЦикла;
    Если СчастьЕсть=1 Тогда
    Предупреждение("УРА! Нашли");
    КонецЕсли;
    

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