Консультация № 140885
28.07.2008, 14:28
0.00 руб.
0 3 2
Здравствуйте, коллеги!

Работаю с платформой 7.7. Возникла необходимость в справочнике МестаХранения реквизиту МОЛ (справочника Сотрудники) установить признак Периодический.

Но вот незадача - теперь не хочет работать запрос, который ссылается на этот реквизит (в Приложении). Как можно в запросе получить значение МОЛ'а на определенную дату? А прочитать значения в диапазоне дат?

Спасибо.

Обсуждение

Неизвестный
28.07.2008, 15:37
общий
это ответ
По-моему в 7.7 в запросе нельзя использовать периодический, перепишите алгоритм без запроса.
Неизвестный
28.07.2008, 15:59
общий
это ответ
Здравствуйте, Владимир Лазурко!
Запрос возвращает последнее значение периодического реквизита.
Попробуйте использовать "Период с НачДата по КонДата".
Тогда запрос будет выдавать МОЛ на дату КонДата.
В диапазоне дат наверно можно исхитриться взяв результаты 2 запросов и обработать через Таблицу Значений. Но тогда будут МОЛ на 1 конечную дату и на 2 конечную дату. А вот между датами, если МОЛ менялись ... увы. Но можно несколько запросов - допустим 12 за год, каждый с периодом 1 месяц. Затем обработать в ТЗ и получить всех МОЛ с дискретностью месяц.
Пример Кода запроса в приложении.
На форме разместил стандартный диалог выбора периода.

Приложение:
Процедура Сформировать()
Таб=СоздатьОбъект("ТаблицаЗначений");
ПустойСклад=ПолучитьПустоеЗначение("Справочник.МестаХранения");

ТекстЗапроса="
|Период с НачДата По КонДата;
|МестаХранения = Справочник.МестаХранения.ТекущийЭлемент;
|МОЛ = Справочник.МестаХранения.МОЛ;
|Группировка МестаХранения упорядочить по МестаХранения.Наименование без групп;
|Группировка МОЛ;
//|Условие(МОЛ В Сотрудник);
//|Условие(МестаХранения <> ПустойСклад);
|";

Запрос=СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Возврат;
КонецЕсли;
Запрос.Выгрузить(Таб);
Таб.ВыбратьСтроку();
КонецПроцедуры
//_____________________________________________________________________________
Процедура ПриОткрытии()
НачДата=НачалоПериодаБИ();
КонДата=КонецПериодаБИ();
КонецПроцедуры //ПриОткрытии
Неизвестный
28.07.2008, 16:31
общий
Я как-то сомневался насчет таблицы значений, но Вы рассеяли мои сомнения. Теперь осталось только прочитать историю изменений МОЛ'а, и по нужным периодам сделать новые запросы... Сложновато, но выполнимо . Еще раз спасибо!
Форма ответа