8.х Как установить отбор на регистр сведений

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Ivan2014, 16 мар 2015.

  1. TopicStarter Overlay
    Ivan2014
    Offline

    Ivan2014 Опытный в 1С

    Регистрация:
    10 апр 2014
    Сообщения:
    384
    Симпатии:
    2
    Баллы:
    29
    Здравствуйте. Как установить отбор на регистр сведений Контактная информация.
    Следующий код
    Код:
    Отбор=Новый Структура;
    Отбор.Вставить("Объект", Элемент.Сотрудник);  ЗначениеРесурсов=РегистрыСведений.КонтактнаяИнформация.ПолучитьПоследнее(ТекущаяДата(),Отбор);
    
    возвращает значение не определено.
    В чем причина. Спасибо.
  2. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    У вас РС "Контактная информация" периодический?
    --- Объединение сообщений, 16 мар 2015 ---
    90%, что нет.
    Если не периодической, то надо писать
    Код:
    Отбор=Новый Структура;
    Отбор.Вставить("Объект", Элемент.Сотрудник);  ЗначениеРесурсов=РегистрыСведений.КонтактнаяИнформация.Получить(Отбор);
    Ivan2014 нравится это.
  3. TopicStarter Overlay
    Ivan2014
    Offline

    Ivan2014 Опытный в 1С

    Регистрация:
    10 апр 2014
    Сообщения:
    384
    Симпатии:
    2
    Баллы:
    29
    Да, все верно.
    Но ругается
    Недопустимое значение параметра (параметр номер '1')
    --- Объединение сообщений, 16 мар 2015 ---
    Нужно все измерению в структуре указать оказывается, еще тип и вид. Вопрос решен)))
  4. TopicStarter Overlay
    Ivan2014
    Offline

    Ivan2014 Опытный в 1С

    Регистрация:
    10 апр 2014
    Сообщения:
    384
    Симпатии:
    2
    Баллы:
    29
    Не могу перезаписать значение
    Код:
    Отбор=Новый Структура;
        Отбор.Вставить("Объект", Сотрудник);
        Отбор.Вставить("Тип", Перечисления.ТипыКонтактнойИнформации.Адрес);
        Отбор.Вставить("Вид", Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица);
        ЗначениеРесурсов=РегистрыСведений.КонтактнаяИнформация.Получить(Отбор);
    Полученное значение имеет значение структура. Оно не доступно для перезаписи.
  5. TopicStarter Overlay
    Ivan2014
    Offline

    Ivan2014 Опытный в 1С

    Регистрация:
    10 апр 2014
    Сообщения:
    384
    Симпатии:
    2
    Баллы:
    29
    Написал, но уж очень длинный код получился:
    Код:
    Запрос=Новый Запрос;
        Запрос.Текст=
        "ВЫБРАТЬ
        |    КонтактнаяИнформация.Объект,
        |    КонтактнаяИнформация.Тип,
        |    КонтактнаяИнформация.Вид,
        |    КонтактнаяИнформация.Представление,
        |    КонтактнаяИнформация.Поле1,
        |    КонтактнаяИнформация.Поле2,
        |    КонтактнаяИнформация.Поле3,
        |    КонтактнаяИнформация.Поле4,
        |    КонтактнаяИнформация.Поле5,
        |    КонтактнаяИнформация.Поле6,
        |    КонтактнаяИнформация.Поле7,
        |    КонтактнаяИнформация.Поле8,
        |    КонтактнаяИнформация.Поле9,
        |    КонтактнаяИнформация.Поле10,
        |    КонтактнаяИнформация.Комментарий,
        |    КонтактнаяИнформация.ЗначениеПоУмолчанию,
        |    КонтактнаяИнформация.ТипДома,
        |    КонтактнаяИнформация.ТипКорпуса,
        |    КонтактнаяИнформация.ТипКвартиры
        |ИЗ
        |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        |ГДЕ
        |    КонтактнаяИнформация.Объект = &Объект
        |    И КонтактнаяИнформация.Тип = &Тип
        |    И КонтактнаяИнформация.Вид = &Вид";
        Запрос.УстановитьПараметр("Объект",Сотрудник);
        Запрос.УстановитьПараметр("Тип",Перечисления.ТипыКонтактнойИнформации.Адрес);
        Запрос.УстановитьПараметр("Вид",Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица);
        ТЗ=Запрос.Выполнить().Выгрузить();
        Если ТЗ.Количество()=1 Тогда
            Запись=РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
            Запись.Объект=ТЗ[0].Объект;
            Запись.Тип=ТЗ[0].Тип;
            Запись.Вид=ТЗ[0].Вид;
            Запись.Представление=ТЗ[0].Представление;
            Запись.Поле1=ТЗ[0].Поле1;
            Запись.Поле2=ТЗ[0].Поле2;
            Запись.Поле3=ТЗ[0].Поле3;
            Запись.Поле4=ТЗ[0].Поле4;
            Запись.Поле5=ТЗ[0].Поле5;
            Запись.Поле6=ТЗ[0].Поле6;
            Запись.Поле7=ТЗ[0].Поле7;
            Запись.Поле8=ТЗ[0].Поле8;
            Запись.Поле9=ТЗ[0].Поле9;
            Запись.Поле10=ТЗ[0].Поле10;
            Запись.Комментарий=ТЗ[0].Комментарий;
            Запись.ЗначениеПоУмолчанию=ТЗ[0].ЗначениеПоУмолчанию;
            Запись.ТипДома=ТЗ[0].ТипДома;
            Запись.ТипКорпуса=ТЗ[0].ТипКорпуса;
            Запись.ТипКвартиры=ТЗ[0].ТипКвартиры;
            Запись.Активность=Истина;
            Запись.Записать();
        КонецЕсли;
    Как можно укоротить код. Через набор записей так и не удалось решить данную задачу.
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Код:
    Запись=РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
    Запись.Объект = Сотрудник;
    Запись.Тип=Перечисления.ТипыКонтактнойИнформации.Адрес;
    Запись.Вид=Справочники.ВидыКонтактнойИнформации.ЮрАдресФизЛица;
    Запись.Прочитать();
    Если Запись.Выбрана() Тогда
    Запись.Записать();
    КонецЕсли;
    только я не совсем понимаю, с какой целью выполняется перезапись существующей информации в БД.....
    Ivan2014 нравится это.
  7. TopicStarter Overlay
    Ivan2014
    Offline

    Ivan2014 Опытный в 1С

    Регистрация:
    10 апр 2014
    Сообщения:
    384
    Симпатии:
    2
    Баллы:
    29
    Спасибо!!!
    Это я в примере перезапись показывал, а на деле есть массив информации в Excel - нужно у части физлиц перезаполнить информацию.
  8. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    копию базы сделать не забудьте
    Ivan2014 нравится это.

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