7.7 выбрать по реквизиту

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Dmitrij, 5 авг 2011.

  1. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    есть у справочников метод ВыбратьЭлементыПоРеквизиту
    я делаю
    ФизЛица=СоздатьОбъект("Справочник.икФизическиеЛица");
    ФизЛица.ВыбратьЭлементыПоРеквизиту("ДатаРождения",ДатаРож);
    у меня почему то выходит ошибка
    Неверное имя реквизита!
    почему не понятно, все копированием делал, думал где то в символах ошибся

    Вложения:

  2. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    А на закладке Дополнительные птичку на "Отбор по реквизиту" не забыли поставить?
  3. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    а этот метод работает только по тем реквизитам у которых стоит галочка
    я так то внешнию обработку делаю
  4. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Галочка нужно, только оказывается другая, запамятовал. :angry:

    Запросом отбирайте.
  5. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    подскажите код запроса
    проблема есть между ФИО в базе может быть по 2 пробела
    я ищю фио удаляю все пробелы и сравниваю и сравниваю дату рождения
  6. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    А зачем сравнивать даты рождений? Отбирайте запросом элементы справочника и изменяйте ФИО.
    Код:
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "
    |ТекущийЭлемент = Справочник.икФизическиеЛица.ТекущийЭлемент;
    |Группировка ТекущийЭлемент без групп;
    |";
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
    КонецЕсли;
    
    ТекЭлемент = СоздатьОбъект("Справочник.икФизическиеЛица");
    Пока Запрос.Группировка(1) = 1 Цикл
    ТекЭлемент.НайтиЭлемент(Запрос.ТекущийЭлемент);
    Если ТекЭлемент.Выбран() = 1 Тогда
    // ...
    ТекЭлемент.Записать();
    КонецЕсли;
    КонецЦикла;
    
  7. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    чтоб убедится что именно то физ лицо
  8. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Все равно не понял.
    Задача какая? Удалить лишние пробелы в ФИО?
  9. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    есть дбф файл в него нужно добавить данные по физ лицам
    вытаскиваю из дбф фио и дату рождения и хочу сравнить, но вот проблема в базе могут завести данные с двумя пробелами, и сейчас обнаружел фамилия в файле забита через е а в базе через ё
  10. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Теперь понятно. В запрос добавить условие и будет вам отбирать физ. лиц по датам рождения:
    Код:
    ТекстЗапроса = 
    "
    |ТекущийЭлемент = Справочник.икФизическиеЛица.ТекущийЭлемент;
    |ДатаРождения = Справочник.икФизическиеЛица.ДатаРождения;
    |Группировка ТекущийЭлемент без групп;
    |Условие (ДатаРождения = ЗначениеДатыРождения);
    |";
    
    
    P.S. Для сравнения строк лучше, наверное, убирать все пробелы, знаки препинания, ё менять на е и приводить две строки к одному регистру (верхнему или нижнему).
  11. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    почему то ТекЭлемент.Наименование из запроса всегда пустой
    и ТекЭлемент тоже пустой
  12. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Т.е. запрос отбирает, цикл с группировкой выполняется, а условие ТекЭлемент.Выбран() = 1 нет?
    Что в Запрос.ТекущийЭлемент?

    Попробуйте так:
    Код:
    Пока Запрос.Группировка(1) = 1 Цикл
    ТекЭлемент = Запрос.ТекущийЭлемент;
    // ...
    КонецЦикла;
    
  13. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    В цикл не заходит
    Пока Запрос.Группировка(1) = 1 Цикл
  14. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Есть ли сотрудники с такой датой рождения? И как даты сравниваете?
  15. TopicStarter Overlay
    Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Все с этим разобрался.
  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вот функция которая уберет лишние пробелы...

    Код:
    Функция УбратьПробелы(Имя)
    Стр=СокрЛП(Имя);
    Пока Найти(Стр,"  ")>0 Тогда
    Стр=СтрЗаменить(Стр,"  "," ");
    КонецЕсли;
    Возврат Стр;
    КонецФункции
    
    

Поделиться этой страницей