Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 фев 2025, 17:37

Ошибка значения

Автор sali, 20 янв 2025, 11:34

0 Пользователей и 1 гость просматривают эту тему.

sali

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

РезультатЗапроса = Запрос.Выполнить();

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

    Возврат  Результат;
КонецФункции

пытаюсь получить последнюю запись. допустим выбираешь любой документ спецификации, нажимаешь на кнопку Изменить , код выше должен брать последнюю запись из рс с той деталью что в документе прописана , к примеру системный блок №1, он ищет по нему запись и потом считает сколько времени прошло с создания спецификации этого блока. если прошла неделя то он разрешает изменить или внести новую спецификацию.
проблема в том что этот код просматривает все записи и выдает самую большую дату, в итоге я получаю на все документы один и тот же запрет, осталось 6 дней 15 часов и т д  секунд. Как исправить?

antoneus

Что вы 1С говорите делать - то она и делает. Сказали просматривать все записи - она просматривает. Как исправить? Добавить условие в запрос.

sali

antoneus, какое еще условие? точнее на что?

antoneus

На системный блок же.

sali

antoneus, а это. извините, забыл что старый код скинул. я добавил после
|ИЗ
| РегистрСведений.Спецификация.СрезПоследних(&Дата, СистемныйБлок = &СистемныйБлок) КАК СпецификацияСрезПоследних

он не заходит в цикл даже, не получает дату

antoneus

И что в параметр запроса СистемныйБлок кладете? И в дату заодно.

sali

antoneus, вот это
&НаСервере
Функция ПолучитьПоследнююДатуЗаписи(Дата, СистемныйБлок) 

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| СпецификацияСрезПоследних.ДатаСпецификации КАК Дата
|ИЗ
| РегистрСведений.Спецификация.СрезПоследних(&Дата, ) КАК СпецификацияСрезПоследних
|ГДЕ
| СпецификацияСрезПоследних.СистемныйБлок = &СистемныйБлок
|
|УПОРЯДОЧИТЬ ПО
| Дата УБЫВ";

Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Запрос.УстановитьПараметр("СистемныйБлок", СистемныйБлок);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

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

Возврат Дата;

КонецФункции

antoneus

А так?

Запрос.Текст =
        "ВЫБРАТЬ
        |    СпецификацияСрезПоследних.ДатаСпецификации КАК Дата
        |ИЗ
        |    РегистрСведений.Спецификация.СрезПоследних(&Дата, СистемныйБлок = &СистемныйБлок) КАК СпецификацияСрезПоследних";

Регистр с подчинением регистратору? Периодичность по позиции регистратора?

sali


sali


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск