helpf.pro
Регистрация

v8: Проверить на наличие значение

Ermak
08.12.2015 21:43Прочитано: 4594

Подскажите как можно проверить если ли значение или нет. Например есть список значение

Код 1C v 8.х
 СписокЗн = Новый Массив;
СписокЗн.Добавить("01");
СписокЗн.Добавить("02");
СписокЗн.Добавить("03");

//нужно проверить если эти значение в перемой СтрокаТЗ.ЛС

СтрокаТЗ = ТЗ.Добавить();
РазделТЗ = СтрЗаменить(Стр, ";",Символы.ПС);
СтрокаТЗ.ЛС = СтрПолучитьСтроку(РазделТЗ, 3);

//если значения нет из списка выше то выводим сообщение "НЕТ значения"
Yandex
Возможно, вас также заинтересует
Реклама на портале
Ermak
08.12.2015 22:10Ответ № 1

Написал код, но выводит все значение, а должен был вывести "03"

Данные в фале 

ГОЛУБЕВА ЛЮДМИЛА НИКОЛАЕВНА;101000014/01

ГОЛУБЕВА ЛЮДМИЛА НИКОЛАЕВНА;101000014/01

ГОЛУБЕВА ЛЮДМИЛА НИКОЛАЕВНА;101000014/02

ГОЛУБЕВА ЛЮДМИЛА НИКОЛАЕВНА;101000014/02

Вот сам код

Код 1C v 8.х
 Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика.
СписокКод = Новый Массив;
СписокКод.Добавить("01");
СписокКод.Добавить("02");
СписокКод.Добавить("03");

Для каждого КодСбер Из СписокКод Цикл
ИмяФайла = "D:\Реестр.txt";
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("ЛС",,"ЛС");
ТЗ.Колонки.Добавить("ФИО",,"ФИО");
ТЗ.Колонки.Добавить("КодС",,"КодС");
Текст1 = Новый ТекстовыйДокумент;
Текст1.Прочитать(ИмяФайла);
Для х = 5 По Текст1.КоличествоСтрок() Цикл
Стр = Текст1.ПолучитьСтроку(х);
Если Стр = Неопределено Тогда
Прервать;
КонецЕсли;
Если х >= 5 Тогда 
СтрокаТЗ = ТЗ.Добавить();
РазделТЗ = СтрЗаменить(Стр, ";",Символы.ПС);
СтрокаТЗ.ФИО = СтрПолучитьСтроку(РазделТЗ, 1);
СтрокаТЗ.ЛС = СтрПолучитьСтроку(РазделТЗ, 2);
РазделЛС=СтрЗаменить(СтрокаТЗ.ЛС, "/",Символы.ПС);
СтрокаТЗ.КодС=СтрПолучитьСтроку(РазделЛС, 2);
КонецЕсли;
КонецЦикла;
Для каждого Стр Из ТЗ Цикл
Если Стр.КодС <> КодСбер Тогда
Сообщить("Не найден "+КодСбер);
Иначе
Продолжить;
КонецЕсли;
КонецЦикла;
КонецЦикла;

КонецПроцедуры

Выводит ответ

Не найден 01

Не найден 01

Не найден 02

Не найден 02

Не найден 03

Не найден 03

Не найден 03

Не найден 03

Подскажите что не так?

Надо чтобы вывели Не найдено 03

IBReiter
09.12.2015 11:40Ответ № 2

Возможно должно быть КодСбер.Значение?

IBReiter
09.12.2015 11:42Ответ № 3

Вот здесь: Если Стр.КодС <> КодСбер Тогда

IBReiter
09.12.2015 11:45Ответ № 4

Условие Если х >= 5 Тогда убирайте вообще, оно всегда = Истина

Создание таблицы - один раз перед циклом, в теле цикла просто ее очищаете, когда переходите на следующий виток

Файл читаете также за циклом

Ermak
09.12.2015 13:09Ответ № 5

Решил

Код 1C v 8.х
 СписокКод = Новый Массив;
    СписокКод.Добавить("01");
    СписокКод.Добавить("02");
    СписокКод.Добавить("03");
    
    ИмяФайла = "D:\Реестр.txt";
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("ЛС",,"ЛС");
    ТЗ.Колонки.Добавить("ФИО",,"ФИО");
    ТЗ.Колонки.Добавить("КодС",,"КодС");
    Текст1 = Новый ТекстовыйДокумент;
    Текст1.Прочитать(ИмяФайла);
    Для х = 5 По Текст1.КоличествоСтрок() Цикл
        Стр = Текст1.ПолучитьСтроку(х);
        Если Стр = Неопределено Тогда
            Прервать;
        КонецЕсли;
        СтрокаТЗ = ТЗ.Добавить();
        РазделТЗ = СтрЗаменить(Стр, ";",Символы.ПС);                
        СтрокаТЗ.ФИО = СтрПолучитьСтроку(РазделТЗ, 1);
        СтрокаТЗ.ЛС = СтрПолучитьСтроку(РазделТЗ, 2);
        РазделЛС=СтрЗаменить(СтрокаТЗ.ЛС, "/",Символы.ПС);
        СтрокаТЗ.КодС=СтрПолучитьСтроку(РазделЛС, 2);
    КонецЦикла;
    Для каждого КодС Из СписокКод Цикл
        if ТЗ.Найти(КодС,"КодС")=Неопределено then
            Сообщить("Не найден "+КодС);
        КонецЕсли;
    КонецЦикла;
Ermak
09.12.2015 13:09Ответ № 6
Вопрос закрыт!
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.