8.х Записи определенной даты

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

  1. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Если интересуют записи только сегодняшние из регистра сведений, то это как будет выглядеть?
  2. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Вам какой вариант ? С запросом или так?

    РегистрСведенийМенеджер.<Имя регистра сведений> (InformationRegisterManager.<Имя регистра сведений>)
    Выбрать (Select)
    Вариант синтаксиса: Для периодического регистра
    Синтаксис:
    Выбрать(<Начало интервала>, <Конец интервала>, <Отбор>, <Порядок>)
    Параметры:
    <Начало интервала> (необязательный)
    Тип: Дата, МоментВремени, Граница. Начало интервала, за который будут выдаваться записи периодического регистра сведений. Если не указан, то будут выдаваться записи с самого ранней включительно. Может задаваться значениями типа Дата, МоментВремени или Граница.
    <Конец интервала> (необязательный)
    Тип: Дата, МоментВремени, Граница. Конец интервала, за который будут выдаваться записи периодического регистра сведений. Если не указан, то будут выдаваться записи до самой поздней включительно. Может задаваться значениями типа Дата, МоментВремени или Граница.
    <Отбор> (необязательный)
    Тип: Структура. Задает поле и значение отбора открываемой выборки. Ключ структуры описывает имя поля, а значение структуры - значение отбора по этому полю. В качестве полей для отбора могут задаваться измерения или реквизиты, для которых в конфигураторе признак индексирования установлен в значение "Индексировать" или установлен признак "Ведущее". Вид сравнения может быть только Равно.
    Важно! Структура может содержать только один элемент.
    Если параметр не указан, то отбор не используется.
    <Порядок> (необязательный)
    Тип: Строка. Может содержать слово "Возр" или "Убыв", тогда стандартный порядок будет использоваться с указанным направлением.
    Может содержать имя поля (реквизита или измерения, для которых указано индексирование) и слово "Возр" или "Убыв", тогда упорядочивание будет производится по указанному полю в указанном порядке.
    Значение по умолчанию: "Возр"


    Курсы = РегистрыСведений.КурсыВалют;
    ОтборВалют = Новый Структура("Валюта");
    ОтборВалют.Валюта = ВыбВалюта;
    ВыборкаКурсовВалют = Курсы.Выбрать(НачПериода,КонПериода,ОтборВалют);

    А если в запросе то на период накладываете условие Между и все
  3. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    В запросе, это будет выглядеть так?

    "ВЫБРАТЬ
    | СоставБригады.Транспорт
    |ИЗ
    | РегистрСведений.СоставБригады КАК СоставБригады
    |ГДЕ
    | СоставБригады.Период = &Период"
    ;

    Запрос.УстановитьПараметр("Период",РабочаяДата);
  4. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    НУ если просто за период без учета там повторений и т.д
    То лучше написать так

    ГДЕ
    | СоставБригады.Период Между &НачПериод и &КонПериод

    т.к вруг у него переодичность по регистратору
  5. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Есть документ "ФормированиеБригады" формирующий состав бригады(состоящей из водителя и двух грузчиков). Регистр сведений "СоставБригады" с подчинением регистратору, периодичный. Для отслеживания состояния бригад. В документе "Заявка" при выборе транспортного средства, к которому привязана бригада документом "ФормированиеБригады" из регистра сведений "СоставБригады" нужно чтобы брались то сегодняшние записи. Если сегодня не сформировывались бригады, то сброс значения. Как в соответствии с этим должен выглядеть запрос в документе заявка?
  6. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Периодичность Регистра сведений у вас какая?
    и структуру его покажите
  7. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Если возможна ситуация что бригады могут работать по пол дня то тогда определенно надо брать еще и Срез последних потому как набо выбрать только одно состояние по ключевым полям (бригаде) за период.

    Вам за перид вообще не нужно вам необходимо знать что свободна бригада на данный момент ил нет.
    Регистр делайте по позиции регистратора и в запроде делайте срез последних на ту дату когда вам необходимо проверить свободна бригада или нет.
  8. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    рег сведений СоставБригады
    Измерения - транспорт
    Ресурсы - водитель, грузчик1, грузчик2
    Подчинение регистратору, по позиции регистратора
  9. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    теперь при проведении документа ФормированиеБригады он ругается: "Запись не верна. Период не может быть пустым...."
  10. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Ну вы когда делаете движения порегистру
    НаборЗаписейРегистра.Период=Док.Дата или что то типа этого делаете?
  11. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    в модуле формы документа "Заявка":

    Процедура ТранспортноеСредствоПриИзменении(Элемент)

    Запрос= Новый Запрос;
    ТекстЗапроса=
    "ВЫБРАТЬ
    | СоставБригадыСрезПоследних.Транспорт,
    | СоставБригадыСрезПоследних.Водитель,
    | СоставБригадыСрезПоследних.Грузчик1,
    | СоставБригадыСрезПоследних.Грузчик2
    |ИЗ
    | РегистрСведений.СоставБригады.СрезПоследних КАК СоставБригадыСрезПоследних
    |ГДЕ
    | СоставБригадыСрезПоследних.Транспорт = &Транспорт";

    Запрос.УстановитьПараметр("Транспорт", ТранспортноеСредство);
    Запрос.Текст=ТекстЗапроса;
    РезультатЗапроса=Запрос.Выполнить();

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

    В регистре сведений "СоставБригады" одна запись с транспортом№1, а он мне дает в документе выбирать любой транспорт. Как сделать чтобы он смотрел по записям из регистра?
  12. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Ну а отбор вы накладываете на поле, в которм выбирается транспорт ваш?
    И все же мне кажется надо передавать дату документ в параметры виртуальной таблицы, иначе при оформлении документа задним числом будет ерунда показана.
  13. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1

    Нет, а как это сделать?
  14. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Ну у вас в результате запроса получился список вашего транспорта. Выгрузите его например в массив и при открытии формы выбора программно наложите отбор.
  15. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Вы получаете срез последних На какую дату? там даты нет? Это грубейшая ошибка.
    Хотя бы так напишите
    РегистрСведений.СоставБригады.СрезПоследних(&ДатаCреза) КАК СоставБригадыСрезПоследних

    Вот тут и стоит вопрос Даты. какую передавать ил документа или реквизит. Вруг вы оформляете как сказал x_under задним числом.
  16. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Бригады на транспорт формируются ежедневно, так что даты документа будет достаточно, я думаю. Сделал так:

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

    [warn=Используйте тэг CODE]Для оформления участков кода есть специальный тэг[/warn]
  17. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    А почему вы думаете что у Вас отбор не отрабатывает? запрос вообще не возврашает ничего. Покажите вашу запись в регистре сведений?
    "P.S. А вот как наложить отбор (по выбранному транспорту) не знаю("

    У вас вот же отбор
    ГДЕ
    | СоставБригадыСрезПоследних.Транспорт = &Транспорт
  18. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    на это я ответил, что не знаю как сделать.

    думаю что не отрабатывает потому как в документе "Заявка" при выборе транспорта №1 или №2 один и тот же результат, он дает выбрать, а не ругается что данной записи нет в регистре.

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      48,2 КБ
      Просмотров:
      36
  19. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Насчет отбора в форме выбора ищите на сайте не раз обсуждалось
    вот пример

    Код:
    Процедура ПервичныйБольничныйЛистНачалоВыбора(Элемент, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    ФормаВыбораПервичногоБольничногоЛиста = Документы.НачислениеПоБольничномуЛисту.ПолучитьФормуВыбора("ФормаВыбораПервичногоЛисткаНетрудоспособности", ЭтаФорма, "ВыборПервичногоБЛДляНачисленияПоБЛ № " + Номер);
    Если ЗначениеЗаполнено(Сотрудник) Тогда
    ФормаВыбораПервичногоБольничногоЛиста.Отбор.Сотрудник.Установить(Сотрудник);
    КонецЕсли;
    Если ЗначениеЗаполнено(Организация) Тогда
    ФормаВыбораПервичногоБольничногоЛиста.Отбор.Организация.Установить(Организация);
    КонецЕсли;
    ФормаВыбораПервичногоБольничногоЛиста.Отбор.ЯвляетсяПродолжениемБолезни.Установить(Ложь);
    ФормаВыбораПервичногоБольничногоЛиста.НачальноеЗначениеВыбора = ПервичныйБольничныйЛист;
    ФормаВыбораПервичногоБольничногоЛиста.Порядок.Установить("Дата Убыв");
    ФормаВыбораПервичногоБольничногоЛиста.Открыть();
    
    КонецПроцедуры // ПервичныйБольничныйЛистНачалоВыбора()
    
    У вас я там периода не вижу. Что возвращает запрос, если выгрузить его в ТЗ. или ничего не возвращает?
  20. TopicStarter Overlay
    vidok
    Offline

    vidok

    Регистрация:
    26 мар 2010
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Запрос выложен полностью
Похожие темы
  1. ivanafanasiev
    Ответов:
    12
    Просмотров:
    1.822
  2. Snickbw
    Ответов:
    1
    Просмотров:
    776
  3. vovakent
    Ответов:
    7
    Просмотров:
    3.081
  4. Konstatine
    Ответов:
    7
    Просмотров:
    433
  5. Вселенная
    Ответов:
    4
    Просмотров:
    313
Загрузка...

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