Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

1С: Собственные программы

Войти
Регистрация
Восстановить пароль
 
Knogg
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 17
#1

1C 8.x Поиск по табличной части совпадение с каким-то наименованием и вывод совпадения - 1С

15.12.2016, 22:59. Просмотров 371. Ответов 4
Метки нет (Все метки)

Имеется справочник, в нем есть реквизиты, также табличные части, в которых также есть реквизиты.

Я создал кнопку которая должна выдать где есть совпадения с конкретным значением. (вывести наименования всех кафедр, у которых есть дисциплина с наименованием «Базы данных») Но не работает, неправильно возможно выполняю функцию поиска.

Ниже прикладываю код кнопки обработки

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
&НаКлиенте
Процедура Поиск(Команда)
    ПоискС();
КонецПроцедуры
 
Процедура ПоискС()
    СпрНовКаф = Справочники.НовыеКафедры;
    ТаблСд = Справочники.НовыеКафедры.Выбрать();
    рррр = Справочники.Дисциплины; // Справочник со всеми дисциплинами
    ииии = рррр.НайтиПоНаименованию("Базы Данных"); //То что я ищу в табличной части, дисциплину "базы данных"
    Пока ТаблСд.Следующий() = 1 Цикл
    Сообщить(ТаблСд.НаименованиеКафедры); //какая кафедра сейчас проходит   
        Тч=ТаблСд.СписокДисциплин; //Табличная часть
        Стр=Тч.Найти(ииии.Наименование, "Дисциплина");
            //Стр=Тч.Получить(0); получаю структуру а не результат
        Сообщить(Стр); //постоянно неопределенный результат
        Если Стр = Неопределено Тогда
            Сообщить(ииии.Наименование); //Выводит то что я ищу.
            Сообщить("Неопределено"); 
        КонецЕсли;
        
        Если Стр = (ииии.Наименование) Тогда
            Сообщить("Имеется1");
        КонецЕсли;
        
    КонецЦикла;
КонецПроцедуры
Добавлено через 45 секунд
Пожалуйста помогите, я новичок в 1c
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2016, 22:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос 1C 8.x Поиск по табличной части совпадение с каким-то наименованием и вывод совпадения (1С):

Запрос. Условие: строка из первой табличной части равна любой строке из другой табличной части - 1С
Есть документ "РаспределениеМатериаловНаВыпуск". У этого документа имеется "Форма документа". На этой форме есть элементы формы:...

Значение строки табличной части получить в табличной части другого документа - 1С
Есть документ ПриходнаяНакладная (товар приходит от поставщика по его цене), с табличной частью Материалы (реквизиты таб.части: Материал,...

Вывод на печать табличной части - 1С
Здравствуйте! В документе Док есть табл. часть Работник, которая содержит поля Фамилия, Возраст. Есть общий макет. Как из ТЧ вывести...

1C 8.x Вывод в сообщение табличной части - 1С
Здравствуйте. В момент создания накладной на основании счета, у меня есть такой запрос (вместо звездочек еще куча всего, привожу...

Поиск в справочнике, по содержимому в табличной части - 1С
Привет! Начал изучать 1С 8.2 Управляемые Формы. Решил написать такое простенькое приложение. Есть справочник с наименованием компаний. В...

1C 8.x 1с 8.3 Вывод картинок в табличной части документа - 1С
Имеется документ с табличной частью, с реквизитом Номенклатура (тип СправочникСсылка.Номенклатура ). Нужно при изменении Номенклатуры...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Joker_vad
Эксперт 1С
455 / 396 / 49
Регистрация: 26.09.2012
Сообщений: 1,724
16.12.2016, 10:41 #2
А в табличной части реквизит дисциплина, какого типа?
0
Knogg
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 17
16.12.2016, 14:25  [ТС] #3
СправочникСсылка.Дисциплины где там она уже строка 25 симв
0
Joker_vad
Эксперт 1С
455 / 396 / 49
Регистрация: 26.09.2012
Сообщений: 1,724
16.12.2016, 14:29 #4
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
&НаКлиенте
Процедура Поиск(Команда)
    ПоискС();
КонецПроцедуры
 
Процедура ПоискС()
    СпрНовКаф = Справочники.НовыеКафедры;
    ТаблСд = Справочники.НовыеКафедры.Выбрать();
    рррр = Справочники.Дисциплины; // Справочник со всеми дисциплинами
    ииии = рррр.НайтиПоНаименованию("Базы Данных"); //То что я ищу в табличной части, дисциплину "базы данных"
    Пока ТаблСд.Следующий() = 1 Цикл
    Сообщить(ТаблСд.НаименованиеКафедры); //какая кафедра сейчас проходит   
        Тч=ТаблСд.СписокДисциплин; //Табличная часть
        Стр=Тч.Найти(ииии, "Дисциплина");
            //Стр=Тч.Получить(0); получаю структуру а не результат
        Сообщить(Стр); //постоянно неопределенный результат
        Если Стр = Неопределено Тогда
            Сообщить(ииии.Наименование); //Выводит то что я ищу.
            Сообщить("Неопределено"); 
        КонецЕсли;
        
        Если Стр = (ииии.Наименование) Тогда
            Сообщить("Имеется1");
        КонецЕсли;
        
    КонецЦикла;
КонецПроцедуры
Попробуй так, если нет кидай конфу посмотрим.
0
renat_dmitriev
93 / 93 / 26
Регистрация: 26.08.2016
Сообщений: 308
18.12.2016, 20:44 #5
Цитата Сообщение от Knogg Посмотреть сообщение
1C
1
2
СпрНовКаф = Справочники.НовыеКафедры;
ТаблСд = Справочники.НовыеКафедры.Выбрать();
К чему первая строка? Если переменную СпрНовКаф вы все равно не используете

Цитата Сообщение от Joker_vad Посмотреть сообщение
1C
1
2
рррр = Справочники.Дисциплины; // Справочник со всеми дисциплинами
ииии = рррр.НайтиПоНаименованию("Базы Данных");
Во первых нет смысла в рррр, если в дальнейшем вы все равно эту переменную не используете, почему не написать сразу

1C
1
ииии = Справочники.Дисциплины.НайтиПоНаименованию("Базы Данных");
И я бы рекомендовал давать переменным осмысленные имена, ем меньше бардака в коде, тем меньше бардака в голове, если вы начинающий это особенно важно.

1C
1
ЭлементБазыДанных = Справочники.Дисциплины.НайтиПоНаименованию("Базы Данных");
Цитата Сообщение от Knogg Посмотреть сообщение
1C
1
Пока ТаблСд.Следующий() = 1 Цикл
метод Следующий( имеет тип Булево. Не знаю, может с единицей и сработает, не проверял, но в любом случае выглядит не очень правильно. Просто напишите
1C
1
Пока ТаблСд.Следующий() Цикл
Цитата Сообщение от Knogg Посмотреть сообщение
1C
1
Стр=Тч.Найти(ииии.Наименование, "Дисциплина");
Если Дисциплина - ссылка на справочник, то зачем вы ищете по наименованию? Правильно будет как выше уже подметили

1C
1
Стр=Тч.Найти(ииии, "Дисциплина");
Цитата Сообщение от Knogg Посмотреть сообщение
1C
1
Сообщить(Стр);
Малоинформативное и как мне кажется лишнее сообщение. Стр - это просто ссылка на найденную строку, если дальше вы все равно проверяете на неопределено, то можно эту строку опустить.

Цитата Сообщение от Knogg Посмотреть сообщение
1C
1
2
3
Если Стр = (ииии.Наименование) Тогда
            Сообщить("Имеется1");
        КонецЕсли;
Этот код никогда и ни при каких обстоятельствах не будет выведен, потому что Стр не может быть равно строке. Само условие абсолютно бессмысленно. Таким образом правильный код будет
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Процедура ПоискС()
 
    КафедрыВыборка = Справочники.НовыеКафедры.Выбрать();
    ЭлементБазыДанных = Справочники.Дисциплины.НайтиПоНаименованию("Базы Данных"); 
 
    Пока КафедрыВыборка.Следующий() Цикл
        Сообщить(КафедрыВыборка.НаименованиеКафедры); //какая кафедра сейчас проходит   
        
        СтрокаДисциплины = КафедрыВыборка.СписокДисциплин.Найти(ЭлементБазыДанных, "Дисциплина");
            
        Если СтрокаДисциплины = Неопределено Тогда
            Сообщить("" + ЭлементБазыДанных.Наименование + " не найден"); 
        Иначе
            Сообщить("Имеется");
        КонецЕсли;
        
    КонецЦикла;
 
КонецПроцедуры
Добавлено через 2 минуты
В качестве тренировки работы с выборкой такой код подойдет, но выполняются такие вещи долго, быстрее будет запросом
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2016, 20:44
Привет! Вот еще темы с ответами:

Вывод на печать табличной части справочника. - 1С
Имеется ФормаСписка справочника Выплаты_сотрудникам, и мне нужно вывести на печать вот эти данные которые находятся в табличке. ...

Поиск в табличной части документа из формы списка - 1С
Версия 8.1. В 1С я только начинаю, путевой литературы мало, так-что вопрос скорее всего вам покажется легким. Итак, конфигурация...

Подсчет ОбщейСуммы в табличной части и его вывод - 1С
Здравствуйте. Создаю документ в конфигурации Бухгалтерия предприятия, редакция 2.0 (2.0.43.6) на платформе 1С:Предприятие 8.2...

Вывод данных из справочника при изменении табличной части - 1С
Добрый день форумчане! В 1с недавно, многого не понимаю. Нужно написать запрос при изменение табличной части "электроприемник" в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.12.2016, 20:44
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru