7.7 Помогите советом

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем PerfectuM, 14 май 2007.

  1. TopicStarter Overlay
    PerfectuM
    Offline

    PerfectuM

    Регистрация:
    11 май 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Приветствую!

    Приступлю сразу к описанию проблемы ...

    Имеется справочник, так называемый НормыРасходов, в котором ведутся собсно Нормативы Расходов как конечной продукции, так и полуфабрикатов её же самой, которые состоят из материалов соответственно.

    Задача на самом деле простая ...

    Мне нужно выбрав в форме вид продукции (конечная или полуфабрикат) просканировать всё вложенное циклом.

    Использую принцип ИспользоватьВладельца, причем первый цикл удачно раскрывает полуфабрикат и выводит его содержимое, но так как в содержимом находятся не только материалы а опять же теже полуфабрикаты, то я пытаюсь текущий элемент, если он Вид продукции полуфабрикат, опять спозиционировать в нем выбрать элементы и этот ТекущийЭлемент опять раскрыть ...

    После чего мне пишется мол нельзя перепозиционировать, пытался просто использовать владельца для ТекущегоЭлемента, так Цикл второй, указывал владельца основную продукцию которую я указал при выборе.

    Получается что первый цикл когда используюВладельца раскрывает и переходит на уровень ниже вложения, а второй цикл используя владельца опять поднимается на уровень выше.

    Помогите советом, каким образом, а наверняка есть способ гораздо проще, циклом и наверняка одним, просканировать все дерево справочника и по условию если ТекЭлемент ВидПродукции Полуфабрикат опуститься до самого низа, пока в списке будут только материалы и полуфабрикаты соответственно будут все раскрыты :)

    Заранее спасибо.
  2. igrun
    Offline

    igrun

    Регистрация:
    14 май 2007
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    выложи программу, так воспринимать трудно
  3. TopicStarter Overlay
    PerfectuM
    Offline

    PerfectuM

    Регистрация:
    11 май 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Да тут писать то кот наплакал, мне просто принцип надо понять, а делаю просто ...

    ЗМ = СоздатьОбъект("Справочник.НормыРасходов");
    ЗМ.ИспользоватьВладельца(ВидПродукции); // Указывается в форме
    ЗМ.ВыбратьЭлементы(); // Собсно выбираем уже не из всего справочника, а только вложенные
    // элементы в выбранной продукции

    Пока ЗМ.ПолучитьЭлемент() = 1 Цикл

    ТЭ = Зм.ТекущийЭлемент();

    //Дальше идет условие, что если ТЭ Вид продукции Полуфабрикат, то нужно его опять раскрывать циклом (его элементы)
    я в ядро цикла вписываю использовать владельца для ТЭ, но тут уже нифига не идет.

    Вобщем как это сделать посоветуйте ...
  4. Aptem
    Offline

    Aptem

    Регистрация:
    15 май 2007
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1



    если ты уже используешь ЗМ.ИспользоватьВладельца(ВидПродукции); 2-й раз не получится,
    надо опять создавать объект.
    вообще, как у тебя там, ТЭ.ИспользоватьВладельца(ВидПродукции) или ЗМ.ИспользоватьВладельца(ТЭ) - не понятно
    если 1 то ТЭ у тебя это элемент справочника, а метод исп.влад.(выборка) только для справочника в целом...
    Если 2 то Присвой другой переменной такой же объект
    если не то и не другое тогда приведи весь код и опиши структуру справочников... Спр материалов у тебя это другой подчиненный справочник? или как? как сделаны ссылки у элемента готовой продукции к элементам-полуфабрикатам того же справочника или это разные справочники?
    КонецЕсли; :unsure:
  5. TopicStarter Overlay
    PerfectuM
    Offline

    PerfectuM

    Регистрация:
    11 май 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    На самом деле я перепробовал все способы даже тех которые ты не описал :unsure:

    А именно:

    У меня как самый возможный вариант был именно второй, когда я сначала использовал Владельца выбранного элемента, а когда те раскрывались то ниже будет получается с учетом твоих слов:

    Пока ЗМ.ПолучитьЭлемент() = 1 Цикл
    ТЭ = ЗМ.ТекущийЭлемент();

    Как только найден Элемент и если он Полуфабрикат, то я должен этот самый Полуфабрикат раскрывать ...

    Тоесть опять

    ЗМ2 = СоздатьОбъект("Справочник.НормыРасходов");
    ЗМ2.ИспользоватьВладельца(ТЭ);

    Так вот таким способом Цикл выводил не содержимое Полуфабриката а опять указывал на владельца что это та самая продукция указанная в начале...

    И получается алогичная ситуевина, что в первом случае метод Использовать владельца опускает на уровень ниже, на уровень вложенных элементов, а как только я повторно использую использовать владельца он поднимает меня на первоначальный уровень ...

    Так же при другом способе писал что невозможно перепозиционировать ...

    Завтра по новой напишу эту фихню и если она чудом не заработает ( а должна поидее ) я её копирну зюды.

    Спс :)
  6. TopicStarter Overlay
    PerfectuM
    Offline

    PerfectuM

    Регистрация:
    11 май 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Так ента лабуда заработала :unsure:

    Просто всего то надо было при указании владельца еще и уточнить ЗМ2.ИспользоватьВладельца(ТЭ.Элемент);

    Теперь Дамы и Господа начинается высшей степени гемор и так ....

    В левом углу мы видим Циклом прогнанную Конечную продукцию и развернутую наглым образом до материалов ... Весь изнеможденный но он еще стоит на ногах ...

    Но в правом углу нас поджидает второй не менее ужасный участник, СписокДокументов по прозвищу Гемороидал ... Весь полон сил и готов принять на себя тонны данных ...

    Бой ожидается не легкий, в список Документов то и будут лететь данные из цикла, а именно найденный материал, задача документа будет состоять в том, чтоб успеть отбить все эти материалы, но мало того - передать о них информацию! А именно о цене ... :D

    А если шутки в стороны, то как проще сделать так, что как только цикл найдет материал, то нужно будет это тматериал искать в документах, а так как там этого материала одного наименования завалом да еще и с разными ценами, то надо предварительно их вычислить ...

    Возможно ли отдельно просканить доки и упорядочить по наименованию, и сопоставить данные с уже удачно прогнанным циклом о продукции ...

    Как это лучше сделать помогите :D

    P.S. Не курите больше траву - курите 1с !!! B)
  7. Aptem
    Offline

    Aptem

    Регистрация:
    15 май 2007
    Сообщения:
    38
    Симпатии:
    0
    Баллы:
    1
    я бы использовал отфильтрованный по конкректному элементу регистр, например, у меня это Регистр.ПартииТовара, очень быстрый и содержит закупочные цены. тебе посоветую посмотреть как работает самый быстрый отчет в твоей базе с нужной инфой и частично передрать :) удачи в бою :unsure:
  8. TopicStarter Overlay
    PerfectuM
    Offline

    PerfectuM

    Регистрация:
    11 май 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Я с ним и начал работать с самого начала ... там черт ногу переломает. :unsure:

    Интерессно бы узнать что за регистр такой ))
  9. TopicStarter Overlay
    PerfectuM
    Offline

    PerfectuM

    Регистрация:
    11 май 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Еще вопрос ...

    Есть Справочник.НормыРасходов ...

    Хочу запросом получить нормы на выбранную продукцию, в форме создаю поле куда вставляется ента продукция ...

    Как запросу сказать, чтоб он использовал владельца выбранной продукции?

    Пасибы.

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