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

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

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

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

15.12.2016, 22:59. Просмотров 298. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2016, 22:59     1C 8.x Поиск по табличной части совпадение с каким-то наименованием и вывод совпадения
Посмотрите здесь:

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

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

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

Вывод табличной части документа в форму списка журнала документов - 1С
Всем доброго времени суток! Имеется журнал документов, который регистрирует 3 типа документов : Поступление, перемещение, списание. В...

Вывод столбца табличной части элемента справочника в форму списка - 1С
Добрый день! Имеется справочник номенклатура с таб. частью "Материалы соответствия" (Реквизиты: Наименование системы, код соответствия )....

Очистка табличной части справочника - 1С
Как производить очистку записей табл части раз в месяц? ТекущаяСтрока=Элементы.Штрафы.ТекущиеДанные; Если День(ТекущаяДата())=29...

1C 8.x Отчёт с данными из табличной части - 1С
Хочу построить отчёт для документа, часть данных берётся из полей формы, а часть из табличной части этого же документа. Вот код...

Выбор данных из табличной части - 1С
Добрый день! Имеется Справочник "Типовые элементы", который содержит 2 табличные части: "Виды Работ" и "Материалы". В ТЧ "Виды работ"...

1C 8.x Уменьшение количества в табличной части - 1С
Здраствуйте! Имеются 2 документа РегистрацияТовара и ОтгрузкаТовара. В РегистрацииТовара в табличной части имеем реквизит Количество. В...

Наименование табличной части в отчете - 1С
Здравствуйте, самостоятельно изучаю 1С. Как в отчёте «Дневник ЦМК» вывести наименование табличной части перед таблицами?

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

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Joker_vad
Эксперт 1С
455 / 396 / 49
Регистрация: 26.09.2012
Сообщений: 1,722
16.12.2016, 10:41     1C 8.x Поиск по табличной части совпадение с каким-то наименованием и вывод совпадения #2
А в табличной части реквизит дисциплина, какого типа?
Knogg
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 17
16.12.2016, 14:25  [ТС]     1C 8.x Поиск по табличной части совпадение с каким-то наименованием и вывод совпадения #3
СправочникСсылка.Дисциплины где там она уже строка 25 симв
Joker_vad
Эксперт 1С
455 / 396 / 49
Регистрация: 26.09.2012
Сообщений: 1,722
16.12.2016, 14:29     1C 8.x Поиск по табличной части совпадение с каким-то наименованием и вывод совпадения #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");
        КонецЕсли;
        
    КонецЦикла;
КонецПроцедуры
Попробуй так, если нет кидай конфу посмотрим.
renat_dmitriev
93 / 93 / 26
Регистрация: 26.08.2016
Сообщений: 308
18.12.2016, 20:44     1C 8.x Поиск по табличной части совпадение с каким-то наименованием и вывод совпадения #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 минуты
В качестве тренировки работы с выборкой такой код подойдет, но выполняются такие вещи долго, быстрее будет запросом
Yandex
Объявления
18.12.2016, 20:44     1C 8.x Поиск по табличной части совпадение с каким-то наименованием и вывод совпадения
Ответ Создать тему
Опции темы

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