8.х Как получить элементы справочника?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Гелий, 12 янв 2015.

  1. TopicStarter Overlay
    Гелий
    Offline

    Гелий

    Регистрация:
    1 апр 2013
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте. Пишу обработку к документу "Комплектация номенклатуры". Обработка должна тиражировать определенную номенклатуру. То есть, поступил, например, комплект из 5 стульев, имеется одна номенклатура "стул". Обработка должна в справочнике "Номенклатура" создать 5 одинаковых номенклатур "стул", которые будут различаться только кодом, соответственно. Тут всё просто, вроде. Берем, создаём. Далее она должна созданными номенклатурами заполнить табличную часть "Комплектующие" документа "Комплектация номенклатуры" - с этим и возникает проблема.
    Было бы неплохо сразу, при создании нового элемента справочника "Номенклатура", получить ссылку. Но как - без понятия.
    Можно после создания элементов выполнить запрос, вывести все записи справочника "Номенклатура", упорядочив по коду, в порядке убывания и взять нужное количество последних. Вроде, всё быстро должно выполниться, а где гарантия, что в эту долю секунды туда ещё кто-то не умудрится записать элемент? Маловероятно, но когда-нибудь может и случиться.
    Можно попробовать в цикле, который создаёт элементы справочника "Номенклатура", после записи элемента выполнить запрос типа:
    Код:
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |    Номенклатура.Ссылка,
    |    Номенклатура.Наименование
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |
    |УПОРЯДОЧИТЬ ПО
    |    Номенклатура.Код УБЫВ"
    ?
    Но за запрос в цикле можно и по рукам получить...

    Может, какие-то ещё варианты есть? Подскажите пожалуйста.
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Используйте управляемые блокировки - они как раз для этого случая
  3. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ну и создавайте сразу свои 5 стульев и например в массив ссылки положите, вот и все. Ссылку после записи элемента можно получить свободно, не вижу проблем. Типа такого
    Код:
    мас = Новый Массив;
    Для сч=1 По КолвоНоменклатуры Цикл
    элем = Справочники.Номенклатура.СоздатьЭлемент();
    элем.Наименование = НаимНоменклатуры;
    элем.Записать();
    мас.Добавить(элем);
    Конеццикла;
  4. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    С этим нет никаких проблем )
    Код:
    НоваяКомплектующая = Справочники.Номенклатура.СоздатьЭлемент();
    ...
    НоваяКомплектующая.Записать();
    
    //Ссылку в строку табличной части документа подставляете так:
    СтрокаТабличнойЧасти.Номенклатура = НоваяКомплектующая.Ссылка;
    Т.е. элемент номенклатуры создавайте в процессе добавления строк в табличную часть: добавили строку, создали элемент номенклатуры, записали ссылку в строку...следующая строка и т.д.
  5. TopicStarter Overlay
    Гелий
    Offline

    Гелий

    Регистрация:
    1 апр 2013
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Спасибо. Теперь буду знать.
    Ответы-то только сейчас прочитал. Сделал не очень хорошо, наверное. Вывел все записи из справочника "Номенклатура" с нужным мне наименованием номенклатуры и взял необходимое количество последних по коду.
    Есть, конечно, вероятность, что когда-нибудь оно криво сработает, но она составляет 0,01% на их базе, пожалуй. Да и ручками поправить - секунда. Косяк видно будет. Больше вероятность, что пользователи нажмут кнопочку, элементы справочника создадутся, табличная часть заполнится, а документ по какой-то причине не будет записан. Потом зайдут снова, выполнят то же действие, не подумав, что элементы справочника уже созданы... и "загадят" справочник "Номенклатура".
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    так организовать поиск по наименованию и вывод 5 последних элементов с упорядочиванием по коду......

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