Найти элемент справочника по дополнительному реквизиту

   smolik

03.01.17 — 15:33

Для номенклатуры был создан дополнительный реквизит «СтарыйКод» с типом число.

Теперь необходимо найти номенклатуру по числу, которое храниться в доп реквизите. Пытаюсь найти с помощью метода НайтиПоРеквизиту.

РеквСтарыйКод = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(«СтарыйКод»);

ЧтоНашли = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту(РеквСтарыйКод, Число(Код));

Постоянно ругается что не правильно указан Реквизит. Подскажите каким образом можно найти ссылку на справочник по полю дополнительного реквизита(какие еще есть варианты)?

  

Партнерская программа EFSOL Oblako

   НаборДанных

1 — 03.01.17 — 15:49

(0)Точно не в ПВХ, в РС смотри.

   smolik

2 — 03.01.17 — 16:10

Высмотрел что для номенклатуры все доп реквизиты хранятся в ТЧ ДополнительныеРеквизиты с колонками Свойство(ПВХ), Значение(Характеристика), ТекстоваяСтрока

Может кто подскажет как сделать поиск по ТЧ номенклатуры.

   H A D G E H O G s

3 — 03.01.17 — 16:29

(2) запросом

   Cool_Profi

4 — 03.01.17 — 16:33

зн = ном.ДополнительныеРеквизиты.Найти(РеквСтарыйКод,»Свойство»).Значение;

   smolik

5 — 03.01.17 — 17:44

(3) Наковырял все таки консолью запрос:

    Запрос = Новый Запрос;

    Запрос.Текст =

        «ВЫБРАТЬ

        |    Номенклатура.Наименование,

        |    Номенклатура.ДополнительныеРеквизиты.(

        |        Свойство,

        |        Значение

        |    ),

        |    Номенклатура.Ссылка КАК СтарыйКод

        |ИЗ

        |    Справочник.Номенклатура КАК Номенклатура

        |ГДЕ

        |    Номенклатура.ЭтоГруппа = ЛОЖЬ

        |    И Номенклатура.ДополнительныеРеквизиты.Значение = &Значение

        |    И Номенклатура.ДополнительныеРеквизиты.Свойство = &Свойство»;

    Запрос.УстановитьПараметр(«Значение», Число(Код));

    Запрос.УстановитьПараметр(«Свойство», ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(«СтарыйКод»));

   Cool_Profi

6 — 03.01.17 — 18:54

«ВЫБРАТЬ

        |    Номенклатура.Наименование,

        |    Номенклатура.ДополнительныеРеквизиты.(

        |        Свойство,

        |        Значение

        |    ),

За такое сразу расстреливать.

   smolik

7 — 03.01.17 — 22:57

Расскажи за что, не понимаю.

   dachnik

8 — 04.01.17 — 08:56

(7) Крайне не рекомендуется смешивать данные из реквизитов самого объекта и из его табличных частей. Наименование номенклатуры ты можешь получить из ссылки в табличной части. Т.е. нужно заменить таблицу в запросе с Номенклатура на ТЧ номенклатуры «Доп.реквизиты». Доклад закончил. СНГ!

   palpetrovich

9 — 04.01.17 — 09:03

хз, я так примерно ищу:

ВЫБРАТЬ

|    ЗначенияСвойствОбъектов.Объект

|ИЗ

|    РегистрСведений.ЗначенияСвойствОбъектов

|ГДЕ

|    ЗначенияСвойствОбъектов.Свойство = &Свойство

|    И ЗначенияСвойствОбъектов.Значение = &Значение

   Cool_Profi

10 — 04.01.17 — 09:05

(9) Допреквизит, Карл!!!

   smolik

11 — 04.01.17 — 13:39

Оставим для истории:

ВЫБРАТЬ

    Номенклатура.ДополнительныеРеквизиты.(

        Ссылка КАК НашелТебя,

        Свойство,

        Значение

    )

ИЗ

    Справочник.Номенклатура КАК Номенклатура

ГДЕ

    Номенклатура.ДополнительныеРеквизиты.Свойство = &Свойство

    И Номенклатура.ДополнительныеРеквизиты.Значение = &Значение

   Cool_Profi

12 — 04.01.17 — 13:43

ВЫБРАТЬ

    Номенклатура.ДополнительныеРеквизиты.(

        Ссылка КАК НашелТебя,

        Свойство,

        Значение

    )

Рецидив. 15 лет строго расстрела с конфискацией, без права переписки.

   smolik

13 — 04.01.17 — 13:59

:) за что

   mehfk

14 — 04.01.17 — 14:04

За копрокод.

  

smolik

15 — 04.01.17 — 14:06

это да, увидел, так как из консоли поторопился взять, хотел подредактировать, но понял что это навечно. В след раз внимательней буду.

Нередко у пользователей есть потребность искать номенклатуру не только по основным реквизитам (наименование, код и артикул), но и по дополнительным (которые пользователи создали самостоятельно). Типовые возможности конфигураций не предполагают такой опции. Расширение предоставляет такую возможность.

К примеру создадим дополнительный реквизит и заполним его для нескольких номенклатурных карточек.

дополнительный реквизит в списке номенклатуры в 1сЗатем попробуем отфильтровать список по значению дополнительного реквизита, при этом в качестве поискового запроса можно указать как часть значения доп. реквизита, так и полное значение.

поиск номенклатуры по доп. реквизиту в 1с

Видим, что поиск отработал как нужно.

Обязательное условие — дополнительный реквизит должен быть строкового типа.

доп. реквизит строкового типа в 1с

Для корректной работы расширения необходимо отключить Безопасный режим.

отключение безопасного режима расширения


Дмитрий Медведков

Дмитрий Медведков

Программист, консультант 1С

Начал работать с 1С в 2012-м, специализируюсь на УТ 11

Для номенклатуры был создан дополнительный реквизит «СтарыйКод» с типом число. Теперь необходимо найти номенклатуру по числу, которое храниться в доп реквизите. Пытаюсь найти с помощью метода НайтиПоРеквизиту. Постоянно ругается что не правильно указан Реквизит. Подскажите каким образом можно найти ссылку на справочник по полю дополнительного реквизита(какие еще есть варианты)?

Точно не в ПВХ, в РС смотри.

Высмотрел что для номенклатуры все доп реквизиты хранятся в ТЧ ДополнительныеРеквизиты с колонками Свойство(ПВХ), Значение(Характеристика), ТекстоваяСтрока Может кто подскажет как сделать поиск по ТЧ номенклатуры.

зн = ном.ДополнительныеРеквизиты.Найти(РеквСтарыйКод,»Свойство»).Значение;

Наковырял все таки консолью запрос:

За такое сразу расстреливать.

Расскажи за что, не понимаю.

Крайне не рекомендуется смешивать данные из реквизитов самого объекта и из его табличных частей. Наименование номенклатуры ты можешь получить из ссылки в табличной части. Т.е. нужно заменить таблицу в запросе с Номенклатура на ТЧ номенклатуры «Доп.реквизиты». Доклад закончил. СНГ!

Оставим для истории:         Значение     ) ИЗ     Справочник.Номенклатура КАК Номенклатура

ВЫБРАТЬ         Значение     ) Рецидив. 15 лет строго расстрела с конфискацией, без права переписки.

это да, увидел, так как из консоли поторопился взять, хотел подредактировать, но понял что это навечно. В след раз внимательней буду.

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Юлия78

Дата регистрации: 16.05.2011
Сообщений: 63

Создали в пользовательском режиме (не в конфигураторе) дополнительный реквизит для справочника «номенклатура», он отображается в отдельной графе в форме списка справочника «номенклатура».
Но поиск по этой графе почему-то не работает!
Мы что-то недонастроили или поиск возможен только по артикулу и наименованию товара?
Заранее спасибо за подсказки.

ОльгаН

Дата регистрации: 18.02.2009
Сообщений: 985

У меня получилось.
Открываете справочник Номенклатура. Встаете курсором на любую строчку. Нажимаете «Ещё» — «Изменить форму». Там уже курсор находится в нужном месте. Вам надо ниже найти чуть ниже в этой же группе строчку «Ссылка», встать на неё курсором и нажать на панеле «Добавить поля». В выпадающем списке найти нужный реквизит. Поставить галочку. Применить. Проверить результат. Должна появится колонка с новым реквизитом и значения.
Делать сначала лучше в копии базы.
Если ничего не появилось, то попробуйте ещё раз, только следите, чтобы перед тем, как идти в «Ещё» курсор был на любой строчке в списке, а не где-нибудь ещё ( в шапке или поиске). Это потому что, в настройках много разных похожих по наименованию групп. Но если Вы будете стоять курсором на наименовании или артикле или коде любой номенклатуры, то откроется сразу нужная группа.
На самой «Ссылка» ставить галочку не надо, только на новом реквизите.

Prikum

активный пользователь

офлайн

Дата регистрации: 18.02.2002
Сообщений: 20842

ОльгаН, вопрос вроде как в другом, как сделать поиск по графе доп.реквизита.

Юлия78

Дата регистрации: 16.05.2011
Сообщений: 63

Да, вопрос был именно о поиске.
Доп. реквизит мы добавили, он виден отдельной графой в справочнике номенклатуры, но поиск по этой графе не работает.

Prikum

активный пользователь

офлайн

Дата регистрации: 18.02.2002
Сообщений: 20842

Юлия78, а если нажать Alt+F или Ctrl+F, то тогда все равно не ищет?

Юлия78

Дата регистрации: 16.05.2011
Сообщений: 63

Prikum, нет, по этим комбинациям тоже не ищет.
По ним не ищет даже в поле «наименование», где работает стандартный поиск.

Показывать по
10
20
40
сообщений

Функция позволяет найти ссылку на объект любого типа в конфигурации ERP2.0 (либо любой другой построенной на БСП).
Поиск может выполняться по реквизитам основной таблицы, значениям дополнительных реквизитов по табличной части «Дополнительные реквизиты», значениям доп. сведений (регистр сведений «ДополнительныеСведения»).

Используется объектная модель работы с запросом (СхемаЗапроса). Поддерживается в версиях платформы: 8.3.5 и выше.
Параметры:

Имя параметра Тип Описание
ИмяТаблицы Строка Имя таблицы, по которой осуществляется поиск. Пример: «Справочник.Номенклатура»
СтруктураРеквизитов Структура В качестве ключа передается имя реквизита основной таблицы, в качестве значения — значение реквизита
СоответствиеДопРеквизитов Соответствие В качестве ключа передается ссылка на доп. реквизит — элемент плана вида характеристик «ДополнительныеРеквизитыИСведения», в качестве значения — значение реквизита
СоответствиеДопСведений Соответствие В качестве ключа передается ссылка на доп. сведение — элемент плана вида характеристик «ДополнительныеРеквизитыИСведения», в качестве значения — значение доп. сведения

Имя параметра Тип Описание
ИмяТаблицы Строка Имя таблицы, по которой осуществляется поиск. Пример: «Справочник.Номенклатура»
СтруктураРеквизитов Структура В качестве ключа передается имя реквизита основной таблицы, в качестве значения — значение реквизита
СоответствиеДопРеквизитов Соответствие В качестве ключа передается ссылка на доп. реквизит — элемент плана вида характеристик «ДополнительныеРеквизитыИСведения», в качестве значения — значение реквизита
СоответствиеДопСведений Соответствие В качестве ключа передается ссылка на доп. сведение — элемент плана вида характеристик «ДополнительныеРеквизитыИСведения», в качестве значения — значение доп. сведения
Функция СсылкаНаОбъектПоРеквизитам(ИмяТаблицы, СтруктураРеквизитов = Неопределено, СоответствиеДопРеквизитов = Неопределено, СоответствиеДопСведений = Неопределено)
 
    ИмяТаблицыВЗапросе = СтрЗаменить(ИмяТаблицы, ".", "");
 
    СхемаЗапроса = Новый СхемаЗапроса;
 
    ЗапросПакета    = СхемаЗапроса.ПакетЗапросов[0];
    ОператорВыбора    = ЗапросПакета.Операторы[0];
 
    Если СтруктураРеквизитов <> Неопределено Тогда
 
        ИсточникСправочник    = ОператорВыбора.Источники.Добавить(ИмяТаблицы, ИмяТаблицыВЗапросе);
 
        ОператорВыбора.ВыбираемыеПоля.Добавить(ИмяТаблицыВЗапросе + ".Ссылка");
 
        Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
            ОператорВыбора.Отбор.Добавить(ИмяТаблицыВЗапросе + "." + КлючИЗначение.Ключ + " = &" + КлючИЗначение.Ключ);
        КонецЦикла;
 
        Если СоответствиеДопРеквизитов <> Неопределено
            ИЛИ СоответствиеДопСведений <> Неопределено Тогда
 
            ЗапросПакета.ТаблицаДляПомещения = "ОсновнаяТаблица";
 
            ЗапросПакета    = СхемаЗапроса.ПакетЗапросов.Добавить(Тип("ЗапросВыбораСхемыЗапроса"));
            ОператорВыбора    = ЗапросПакета.Операторы[0];
 
        КонецЕсли;
 
    КонецЕсли;
 
    Если СоответствиеДопРеквизитов <> Неопределено Тогда
 
        Для Сч = 0 По СоответствиеДопРеквизитов.Количество()-1 Цикл
 
            ИсточникСправочник    = ОператорВыбора.Источники.Добавить(ИмяТаблицы + ".ДополнительныеРеквизиты", ИмяТаблицыВЗапросе + "ДополнительныеРеквизиты");
 
            ОператорВыбора.ВыбираемыеПоля.Добавить(ИмяТаблицыВЗапросе + "ДополнительныеРеквизиты.Ссылка");
 
            ОператорВыбора.Отбор.Добавить(ИмяТаблицыВЗапросе + "ДополнительныеРеквизиты.Свойство = &Свойство" + Формат(Сч+1, "ЧГ=0"));
            ОператорВыбора.Отбор.Добавить(ИмяТаблицыВЗапросе + "ДополнительныеРеквизиты.Значение = &Значение" + Формат(Сч+1, "ЧГ=0"));
 
            Если СтруктураРеквизитов <> Неопределено Тогда
 
                ИсточникОсновнаяТаблица = ОператорВыбора.Источники.Добавить("ОсновнаяТаблица", "ОсновнаяТаблица");
 
                Соединение = ИсточникОсновнаяТаблица.Соединения.Добавить(ИсточникСправочник);
                ИсточникОсновнаяТаблица.Соединения[0].ТипСоединения = ТипСоединенияСхемыЗапроса.Внутреннее;
 
            КонецЕсли;
 
            Если СоответствиеДопРеквизитов.Количество()> 1
                ИЛИ СоответствиеДопСведений <> Неопределено Тогда
 
                ЗапросПакета.ТаблицаДляПомещения = "ДопРеквизит" + Формат(Сч+1, "ЧГ=0");
 
                ЗапросПакета    = СхемаЗапроса.ПакетЗапросов.Добавить(Тип("ЗапросВыбораСхемыЗапроса"));
                ОператорВыбора    = ЗапросПакета.Операторы[0];
 
            КонецЕсли;
 
        КонецЦикла;
 
    КонецЕсли;
 
    Если СоответствиеДопСведений <> Неопределено Тогда
 
        Для Сч = 0 По СоответствиеДопСведений.Количество()-1 Цикл
 
            ИсточникРегистр    = ОператорВыбора.Источники.Добавить("РегистрСведений.ДополнительныеСведения", "ДополнительныеСведения");
 
            ОператорВыбора.ВыбираемыеПоля.Добавить("ДополнительныеСведения.Объект");
            ЗапросПакета.Колонки[0].Псевдоним = "Ссылка";
 
            ОператорВыбора.Отбор.Добавить("ДополнительныеСведения.Свойство = &Сведение" + Формат(Сч+1, "ЧГ=0"));
            ОператорВыбора.Отбор.Добавить("ДополнительныеСведения.Значение = &ЗначениеСведения" + Формат(Сч+1, "ЧГ=0"));
 
            Если СтруктураРеквизитов <> Неопределено Тогда
 
                ИсточникОсновнаяТаблица = ОператорВыбора.Источники.Добавить("ОсновнаяТаблица", "ОсновнаяТаблица");
 
                Соединение = ИсточникОсновнаяТаблица.Соединения.Добавить(ИсточникРегистр, "ОсновнаяТаблица.Ссылка = ДополнительныеСведения.Объект");
                ИсточникОсновнаяТаблица.Соединения[0].ТипСоединения = ТипСоединенияСхемыЗапроса.Внутреннее;
 
            КонецЕсли;
 
            Если СоответствиеДопСведений.Количество()> 1
                ИЛИ СоответствиеДопРеквизитов <> Неопределено Тогда
 
                ЗапросПакета.ТаблицаДляПомещения = "ДопСведение" + Формат(Сч+1, "ЧГ=0");
 
                ЗапросПакета    = СхемаЗапроса.ПакетЗапросов.Добавить(Тип("ЗапросВыбораСхемыЗапроса"));
                ОператорВыбора    = ЗапросПакета.Операторы[0];
 
            КонецЕсли;
 
        КонецЦикла;
 
    КонецЕсли;
 
    Если СоответствиеДопРеквизитов <> Неопределено
        И (СоответствиеДопРеквизитов.Количество() <> 1 ИЛИ СоответствиеДопСведений <> Неопределено) Тогда
 
        ИсточникВТ1 = ОператорВыбора.Источники.Добавить("ДопРеквизит1", "ДопРеквизит1");
 
        ОператорВыбора.ВыбираемыеПоля.Добавить("ДопРеквизит1.Ссылка");
 
        Для Сч = 1 По СоответствиеДопРеквизитов.Количество()-1 Цикл
 
            СчСтрока = Формат(Сч+1, "ЧГ=0");
 
            ИсточникВТ = ОператорВыбора.Источники.Добавить("ДопРеквизит" + СчСтрока, "ДопРеквизит" + СчСтрока);
            Соединение = ИсточникВТ1.Соединения.Добавить(ИсточникВТ, "ДопРеквизит1.Ссылка = ДопРеквизит" + СчСтрока + ".Ссылка");
            ИсточникВТ1.Соединения[ИсточникВТ1.Соединения.Количество()-1].ТипСоединения = ТипСоединенияСхемыЗапроса.Внутреннее;
 
        КонецЦикла;
 
    КонецЕсли;
 
    Если СоответствиеДопСведений <> Неопределено
        И (СоответствиеДопСведений.Количество()> 1 ИЛИ СоответствиеДопРеквизитов <> Неопределено) Тогда
 
        Если СоответствиеДопРеквизитов = Неопределено Тогда
 
            ИсточникВТ1 = ОператорВыбора.Источники.Добавить("ДопСведение1", "ДопСведение1");
 
            ОператорВыбора.ВыбираемыеПоля.Добавить("ДопСведение1.Ссылка");
 
            СтартовыйИндекс        = 1;
            ИмяПервойТаблицы    = "ДопСведение1";
 
        Иначе
 
            СтартовыйИндекс        = 0;
            ИмяПервойТаблицы    = "ДопРеквизит1";
 
        КонецЕсли;
 
        Для Сч = СтартовыйИндекс По СоответствиеДопСведений.Количество()-1 Цикл
 
            СчСтрока = Формат(Сч+1, "ЧГ=0");
 
            ИсточникВТ = ОператорВыбора.Источники.Добавить("ДопСведение" + СчСтрока, "ДопСведение" + СчСтрока);
            Соединение = ИсточникВТ1.Соединения.Добавить(ИсточникВТ, ИмяПервойТаблицы + ".Ссылка = ДопСведение" + СчСтрока + ".Ссылка");
            ИсточникВТ1.Соединения[ИсточникВТ1.Соединения.Количество()-1].ТипСоединения = ТипСоединенияСхемыЗапроса.Внутреннее;
 
        КонецЦикла;
 
    КонецЕсли;
 
    Запрос = Новый Запрос;
 
    Запрос.Текст = СхемаЗапроса.ПолучитьТекстЗапроса();
 
    Если СтруктураРеквизитов <> Неопределено Тогда
 
        Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл
            Запрос.УстановитьПараметр(КлючИЗначение.Ключ, КлючИЗначение.Значение);
        КонецЦикла;
 
    КонецЕсли;
 
    Если СоответствиеДопРеквизитов <> Неопределено Тогда
 
        Сч = 1;
 
        Для Каждого КлючИЗначение Из СоответствиеДопРеквизитов Цикл
 
            СчСтрока = Формат(Сч, "ЧГ=0");
 
            Запрос.УстановитьПараметр("Свойство" + СчСтрока, КлючИЗначение.Ключ);
            Запрос.УстановитьПараметр("Значение" + СчСтрока, КлючИЗначение.Значение);
 
            Сч = Сч + 1;
 
        КонецЦикла;
 
    КонецЕсли;
 
    Если СоответствиеДопСведений <> Неопределено Тогда
 
        Сч = 1;
 
        Для Каждого КлючИЗначение Из СоответствиеДопСведений Цикл
 
            СчСтрока = Формат(Сч, "ЧГ=0");
 
            Запрос.УстановитьПараметр("Сведение" + СчСтрока, КлючИЗначение.Ключ);
            Запрос.УстановитьПараметр("ЗначениеСведения" + СчСтрока, КлючИЗначение.Значение);
 
            Сч = Сч + 1;
 
        КонецЦикла;
 
    КонецЕсли;
 
    РезультатЗапроса = Запрос.Выполнить();
 
    Если РезультатЗапроса.Пустой() Тогда
        Возврат Неопределено;
    КонецЕсли;
 
    Выборка = РезультатЗапроса.Выбрать(); Выборка.Следующий();
 
    Возврат Выборка.Ссылка;
 
КонецФункции

Понравилась статья? Поделить с друзьями:
  • Найти элемент справочника по реквизиту табличной части
  • Накладная на внутреннее перемещение основные реквизиты
  • Наличие налогового щита появляется у компании в случае
  • Налог ру официальный сайт реквизиты для оплаты налогов
  • Налоговая в реутове на ашхабадской часы работы сегодня