8.х Отбор по периоду в непериодичексокм РС?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем abc_asup4, 24 окт 2014.

  1. TopicStarter Overlay
    abc_asup4
    Offline

    abc_asup4 Опытный в 1С

    Регистрация:
    14 фев 2010
    Сообщения:
    292
    Симпатии:
    1
    Баллы:
    29
    В не периодическом РС задаю такой отбор

    НаборЗаписей = РегистрыСведений.ИмяРегистраСведение.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Дата.Установить(НачалоПериода);
    НаборЗаписей.Прочитать();

    Работает нормально

    Подскажите а как отобрать записи в регистре так что бы они были между
    датами НачалоПериода и КонецПериода?
  2. alexburn
    Online

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.755
    Симпатии:
    509
    Баллы:
    204
    Запросом. Накладывайте условие на нужное поле.
  3. TopicStarter Overlay
    abc_asup4
    Offline

    abc_asup4 Опытный в 1С

    Регистрация:
    14 фев 2010
    Сообщения:
    292
    Симпатии:
    1
    Баллы:
    29
    А можете на примере показать если наложить условие в запросе

    потом как обратиться к элементу регистра в выборке?
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Если нужно именно объектным методом, то:

    НаборЗаписей = РегистрыСведений.ИмяРегистраСведение.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Дата.Использование = Истина;
    НаборЗаписей.Отбор.Дата.ВидСравнения = ВидСравнения.ИнтервалВключаяГраницы;
    НаборЗаписей.Отбор.Дата.ЗначениеС = НачалоПериода;
    НаборЗаписей.Отбор.Дата.ЗначениеПО = КонецПериода;
    НаборЗаписей.Прочитать();
    Последнее редактирование: 24 окт 2014
  5. shurikvz
    Online

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    nomad_irk да ладно.. :) Так работает что-ли? :)
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    не, ну мож есть какие ограничения платформы на отбор в наборе записей регистра сведений, но период в отборе задается именно так :)
  7. shurikvz
    Online

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    abc_asup4 запись регистра сведений - это не объектный тип данных. Уникальность записи обеспечивается уникальностью данных в наборе измерений регистра.
    Либо перебирайте все записи регистра в цикле проверяя значение Даты, либо получите уникальный набор измерений в запросе (сделав нужный отбор там), и изменяйте записи при помощи менеджера записи.
    --- Объединение сообщений, 24 окт 2014 ---
    nomad_irk - отбор только на равенство.
  8. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Ага, все логично.
  9. TopicStarter Overlay
    abc_asup4
    Offline

    abc_asup4 Опытный в 1С

    Регистрация:
    14 фев 2010
    Сообщения:
    292
    Симпатии:
    1
    Баллы:
    29
    А как это сделать через запрос
    я так пишу

    Запрос = Новый Запрос;
    Запрос.Текст =

    Выбираю данные регистра

    Затем в выборке пишу

    Пока Выборка.Следующий() Цикл
    Выборка.ПолучитьМенеджерЗаписи();
    КонецЦикла;

    Выдает ошибку?
  10. shurikvz
    Online

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Потому что у Выборки из результата запроса нет метода ПолучитьМенеджерЗаписи().

    В цикле:
    Код:
    МЗ = РегистрыСведений.ИмяРегистраСведений.СоздатьМенеджерЗаписи();
    МЗ.ИзмерениеТакое-то = Выборка.ПолеТакое-то;
    и т.д.
    
    Это если в записях менять что-то надо. Если просто просмотреть-сравнить значения, то менеджер записи вообще не нужен.
  11. TopicStarter Overlay
    abc_asup4
    Offline

    abc_asup4 Опытный в 1С

    Регистрация:
    14 фев 2010
    Сообщения:
    292
    Симпатии:
    1
    Баллы:
    29
    Пишу так

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | ИмяРегистраСведений.Дата,
    | ИмяРегистраСведений.Ресурс1
    |ИЗ
    | РегистрСведений.ИмяРегистраСведений КАК ИмяРегистраСведений
    |ГДЕ
    | ИмяРегистраСведений.Дата МЕЖДУ &НачалоПериода И &КонецПериода";
    Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
    Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
    РС_ = РегистрыСведений.ИмяРегистраСведений.СоздатьМенеджерЗаписи();
    РС_.Дата = Выборка.Дата;
    РС_.Ресурс1 = НовоеЗначениеРесурса1;
    РС_.Записать();
    КонецЦикла;

    При работе в РС_ создаються новые записи?
  12. shurikvz
    Online

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    1) Суть вопроса не понял
    2) У вас в РС одно измерение "Дата"? Где остальные?
  13. TopicStarter Overlay
    abc_asup4
    Offline

    abc_asup4 Опытный в 1С

    Регистрация:
    14 фев 2010
    Сообщения:
    292
    Симпатии:
    1
    Баллы:
    29
    Нужно изменить значение записей регистра сведений
    В запросе отбираю нужные записи

    Затем в выборке в цикле мне нужно перечислить значение всех Измерений
    а ресурсу присвоить новое значение??
  14. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Именно так. Значение ресурса запросом можно не получать воообще.
  15. TopicStarter Overlay
    abc_asup4
    Offline

    abc_asup4 Опытный в 1С

    Регистрация:
    14 фев 2010
    Сообщения:
    292
    Симпатии:
    1
    Баллы:
    29
    а как сделать отбор по определенным значениям записей
    ведь метод СоздатьМенеджерЗаписи() создает новую запись
    а нужно изменить запись регистра?
  16. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    СоздатьМенеджерЗаписи() ничего не создает до применения метода Записать().
    В чем отличие РС от других регистров, знаете?
    Запись будет перезаписана, если для комбинации измерений уже таковая имеется.
    Однако, можно попытаться добавить запись, но при этом вывалится ошибка о том, что запись с такими ключевыми полями уже существует.
  17. TopicStarter Overlay
    abc_asup4
    Offline

    abc_asup4 Опытный в 1С

    Регистрация:
    14 фев 2010
    Сообщения:
    292
    Симпатии:
    1
    Баллы:
    29
    А можете показать пример как изменяются записи не периодического регистра сведений
    таким методом?
  18. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Дык просто все:

    Код:
    Выборка  = РезультатЗапроса.Выбрать();
    
    Пока Выборка.Следующий() Цикл
    
    МенеджерЗаписи = РегистрыСведений.<ИмяРегистра>.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.<Измерение1> = Выборка.ЗначениеИзмерения1;
    .........
    МенеджерЗаписи.<ИзмерениеN> = Выборка.ЗначениеИзмеренияN;
    МенеджерЗаписи.Ресурс1 = Значение1;
    .........
    МенеджерЗаписи.РесурсN = ЗначениеN;
    
    МенеджерЗаписи.Записать().
    
    КонецЦикла;
    Существующие записи по комбинациям значений измерений будут перезаписаны, не существующие - добавлены.
    abc_asup4 нравится это.
  19. TopicStarter Overlay
    abc_asup4
    Offline

    abc_asup4 Опытный в 1С

    Регистрация:
    14 фев 2010
    Сообщения:
    292
    Симпатии:
    1
    Баллы:
    29
    Да так получается

    А если например нужно удалить записи регистра как тогда?.
  20. alexburn
    Online

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.755
    Симпатии:
    509
    Баллы:
    204
    Создается пустой набор записи.

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