Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 3
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Перебор одноименных элементов справочника          
miha74 Подменю пользователя
сообщение 24.06.21, 21:14
Сообщение #1

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 148
Спасибо сказали: 74 раз
Рейтинг: 36.4

Ситуация такая. В Справочнике есть элементы с одинаковым Наименованием, но отличаются реквизитом "Комментарий" тип Строка. Есть ли какой-то способ быстрого поиска нужного элемента, кроме полного перебора всего Справочника с проверкой по отличающемуся реквизиту.
Типа ищем по Наименованию, проверяем реквизит. Если не тот - переходим на следующий одноименный элемент и т.д.

volodya1122 Подменю пользователя
сообщение 25.06.21, 9:19
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 311
Из: Тернопіль
Спасибо сказали: 117 раз
Рейтинг: 119.4

miha74 @ Вчера, 22:14 * ,

Похожая ситуация обсуждалась. Можете попробовать применить данный метод себе
Вот тут

Или например так
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Контрагенти.Наименование,
    |    1 КАК Повторов
    |ИЗ
    |    Справочник.Контрагенти КАК Контрагенти
    |ГДЕ
    |    Контрагенти.ЭтоГруппа = ЛОЖЬ";
    
    ТаблЗнач = Запрос.Выполнить().Выгрузить();
    ТаблЗнач.Свернуть("Наименование","Повторов");
    ТаблЗнач.Сортировать("Повторов Убыв");
    ТекСтрокаТаблицы=ТаблЗнач.Получить(0);
    МаксПовторов=ТекСтрокаТаблицы[1];
    Если МаксПовторов=1 тогда
        Сообщить("Немає повторов");
    Иначе
        Для Каждого Стр Из ТаблЗнач Цикл
            Если Стр.Повторов=1 тогда
                Прервать;
            КонецЕсли;    
            Сообщить("Повторы= "+Стр.Наименование);
        КонецЦикла;

    КонецЕсли;


Сообщение отредактировал volodya1122 - 25.06.21, 9:37

miha74 Подменю пользователя
сообщение 25.06.21, 9:31
Сообщение #3

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 148
Спасибо сказали: 74 раз
Рейтинг: 36.4

Спасибо за ответ.
Цитата(volodya1122 @ 25.06.21, 10:19) *
Или например так

На 7.7 так не получится.
В теме по ссылке тоже перебор всех значений. Хотелось бы поиском.

Сообщение отредактировал miha74 - 25.06.21, 9:40

volodya1122 Подменю пользователя
сообщение 25.06.21, 9:39
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 311
Из: Тернопіль
Спасибо сказали: 117 раз
Рейтинг: 119.4

miha74 @ Сегодня, 10:31 * ,

Сорри, не заметил что 7.7

Можно переделать легко на 7,7

miha74 Подменю пользователя
сообщение 25.06.21, 9:49
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 148
Спасибо сказали: 74 раз
Рейтинг: 36.4

volodya1122 @ Сегодня, 10:39 * ,
Если не трудно пожалуйста.
У меня пока примерно такой код:
// -----------------------------------------------------------------------------------------
    СпрВидыКатегорий = СоздатьОбъект("Справочник.ВидыКатегорий");
    
    // елемент "Торти";"дільниця"
    плНаименование = "Торти";
    плКомментарий  = "дільниця";
    // в Довіднику є ще елемент "торти";"сайт"
    
    
    флЕстьЭлемент=0;
    
    СпрВидыКатегорий.ВыбратьЭлементы(0);
    Пока СпрВидыКатегорий.ПолучитьЭлемент() = 1 Цикл
        Если (СпрВидыКатегорий.Наименование=плНаименование) И (СпрВидыКатегорий.Комментарий=плКомментарий) Тогда
            флЕстьЭлемент=1;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Если флЕстьЭлемент=1 Тогда
        //есть нужный элемент справочника
        Сообщить(СпрВидыКатегорий.Наименование+"      "+СпрВидыКатегорий.Комментарий);
    Иначе
        //нет элемента
        Сообщить("Не найдено!");
    КонецЕсли;


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

Сообщение отредактировал miha74 - 25.06.21, 9:53

volodya1122 Подменю пользователя
сообщение 25.06.21, 10:09
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 311
Из: Тернопіль
Спасибо сказали: 117 раз
Рейтинг: 119.4

miha74 @ Сегодня, 10:49 * ,

Так тут вы ищите только совпадение с конкретным значением Наименования. В таком случае можно использовать другую выборку
 //СпрВидыКатегорий.ВыбратьЭлементы(0);
СпрВидыКатегорий.ВыбратьЭлементыПоРеквизиту("Наименование",плНаименование,0);
   Пока СпрВидыКатегорий.ПолучитьЭлемент() = 1 Цикл
        Если СпрВидыКатегорий.Комментарий=плКомментарий Тогда

miha74 Подменю пользователя
сообщение 25.06.21, 10:11
Сообщение #7

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 148
Спасибо сказали: 74 раз
Рейтинг: 36.4

Не-а. Ошибку выдает, неверный реквизит или как-то так. Я так пробовал.
Я так понимаю, что Наименование это обязательный атрибут и не может выступать реквизитом.

Сообщение отредактировал miha74 - 25.06.21, 10:21

sava1 Подменю пользователя
сообщение 25.06.21, 10:14
Сообщение #8

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2478
Из: Проскуров
Спасибо сказали: 604 раз
Рейтинг: 586

поставьте 1срр+ (или 1sqlite) и нормальным запросом через LIKE сразу полУчите результат

miha74 Подменю пользователя
сообщение 25.06.21, 10:18
Сообщение #9

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 148
Спасибо сказали: 74 раз
Рейтинг: 36.4

sava1 @ Сегодня, 11:14 * ,
Тоесть, штатными средствами это решить нельзя. Так?
А то я думал что я туплю, а все элементарно.

29a Подменю пользователя
сообщение 14.07.21, 13:25
Сообщение #10

Говорящий
***
Группа: Пользователи
Сообщений: 75
Спасибо сказали: 20 раз
Рейтинг: 20.8

miha74 @ 24.06.21, 22:14 * ,
ИМХО добавить реквизит "НаименованиеКомментарий" (на форму можно не выводить), программно его заполнить, при записи элемента перезаполнять его, установить пизнак "Сортировка", поиск производить методом НайтиПоРеквизиту("НаименованиеКомментарий", ЗначениеДляПоиска)

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.07.21, 6:48
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!