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

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

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

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

antoneus

На какую строку ругается?

Если в запрос передаете текущую дату, то запрос вообще такой проканает:

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

sali

antoneus, на строку СледующаяДата = ДатаИзмененияСостава + (7*24*3600); //плюс неделя
вот полностью
&НаКлиенте
Процедура Изменить(Команда, Дата, СистемныйБлок)  Экспорт

ДатаИзмененияСостава = ПолучитьПоследнююДатуЗаписи(Дата, СистемныйБлок); // переменная для помещения последней записи в регистр
СледующаяДата = ДатаИзмененияСостава + (7*24*3600); //плюс неделя
Разница = СледующаяДата - ТекущаяДата();
Если Разница > 0 Тогда 
Разница = РазбитьСекунды(Разница);   
// Элементы.ГруппаШапки.Доступность =  Ложь;
// Элементы.ГруппаДанных.Доступность = Ложь;
// Элементы.Детали.Доступность =       Ложь;
ПоказатьПредупреждение(,"До изменения осталось " + Разница, 60, "Изменения запрещены!");
Иначе
ОткрытьФорму("РегистрСведений.Спецификация.ФормаЗаписи");
КонецЕсли;
КонецПроцедуры   

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

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

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

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

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

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

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


antoneus

В консоли запрос показывает что-нибудь?

sali

antoneus, да. это странно .
запрос пишет неопределенно и ошибка чтения значения , консоль выдает результат Снимок экрана (107).png

antoneus

Значит, хрень какую-нибудь передаете в СистемномБлоке, он его не может найти.

sali

antoneus, например??
ДокументСнимок экрана (108).png
РССнимок экрана (109).png

antoneus

Ну как выглядит код вызова процедуры Изменить и что туда передается?

sali

Цитата: sali от 20 янв 2025, 13:56&НаКлиенте Процедура Изменить(Команда, Дата, СистемныйБлок)  Экспорт ДатаИзмененияСостава = ПолучитьПоследнююДатуЗаписи(Дата, СистемныйБлок); // переменная для помещения последней записи в регистр СледующаяДата = ДатаИзмененияСостава + (7*24*3600); //плюс неделя Разница = СледующаяДата - ТекущаяДата(); Если Разница > 0 Тогда  Разница = РазбитьСекунды(Разница);    // Элементы.ГруппаШапки.Доступность =  Ложь; // Элементы.ГруппаДанных.Доступность = Ложь; // Элементы.Детали.Доступность =       Ложь; ПоказатьПредупреждение(,"До изменения осталось " + Разница, 60, "Изменения запрещены!"); Иначе ОткрытьФорму("РегистрСведений.Спецификация.ФормаЗаписи"); КонецЕсли; КонецПроцедуры    &НаСервере Функция ПолучитьПоследнююДатуЗаписи(Дата, СистемныйБлок)  Запрос = Новый Запрос; Запрос.Текст =  "ВЫБРАТЬ ПЕРВЫЕ 1 | СпецификацияСрезПоследних.ДатаСпецификации КАК Дата |ИЗ | РегистрСведений.Спецификация.СрезПоследних(&Дата, СистемныйБлок = &СистемныйБлок) КАК СпецификацияСрезПоследних |ГДЕ | СпецификацияСрезПоследних.СистемныйБлок = &СистемныйБлок | |УПОРЯДОЧИТЬ ПО | Дата УБЫВ"; Запрос.УстановитьПараметр("Дата", ТекущаяДата()); Запрос.УстановитьПараметр("СистемныйБлок", СистемныйБлок); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Дата = ВыборкаДетальныеЗаписи.Дата; КонецЦикла; Возврат Дата; КонецФункции

sali

antoneus, &НаКлиенте
Процедура Изменить(Команда, Дата, СистемныйБлок)  Экспорт

ДатаИзмененияСостава = ПолучитьПоследнююДатуЗаписи(Дата, СистемныйБлок); // переменная для помещения последней записи в регистр
СледующаяДата = ДатаИзмененияСостава + (7*24*3600); //плюс неделя
Разница = СледующаяДата - ТекущаяДата();
Если Разница > 0 Тогда 
Разница = РазбитьСекунды(Разница);   
// Элементы.ГруппаШапки.Доступность =  Ложь;
// Элементы.ГруппаДанных.Доступность = Ложь;
// Элементы.Детали.Доступность =       Ложь;
ПоказатьПредупреждение(,"До изменения осталось " + Разница, 60, "Изменения запрещены!");
Иначе
ОткрытьФорму("РегистрСведений.Спецификация.ФормаЗаписи");
КонецЕсли;
КонецПроцедуры   

antoneus

Да не код процедуры, ее я видел, а код ее вызова. Откуда она вызывается и что туда передается.

Теги:

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

Рейтинг@Mail.ru

Поиск