Имя: Пароль:
1C
1С v8
Ошибка при записи в регистр сведений (Период не может быть пустым!)
0 VSpicy
 
14.02.24
11:31
Всем доброго дня!
Проверил, периоды во всех строках заполнены... В чём ещё может быть проблема?
Вот код:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               |    ВЫБОР
               |        КОГДА &ТекМесяц = 1
               |            ТОГДА УсловияЗакрепленияТССрезПоследних.Январь
               |        КОГДА &ТекМесяц = 2
               |            ТОГДА УсловияЗакрепленияТССрезПоследних.Февраль
               |        КОГДА &ТекМесяц = 3
               |            ТОГДА УсловияЗакрепленияТССрезПоследних.Март
               |        КОГДА &ТекМесяц = 4
               |            ТОГДА УсловияЗакрепленияТССрезПоследних.Апрель
               |        КОГДА &ТекМесяц = 5
               |            ТОГДА УсловияЗакрепленияТССрезПоследних.Май
               |        КОГДА &ТекМесяц = 6
               |            ТОГДА УсловияЗакрепленияТССрезПоследних.Июнь
               |        КОГДА &ТекМесяц = 7
               |            ТОГДА УсловияЗакрепленияТССрезПоследних.Июль
               |        КОГДА &ТекМесяц = 8
               |            ТОГДА УсловияЗакрепленияТССрезПоследних.Август
               |        КОГДА &ТекМесяц = 9
               |            ТОГДА УсловияЗакрепленияТССрезПоследних.Сентябрь
               |        КОГДА &ТекМесяц = 10
               |            ТОГДА УсловияЗакрепленияТССрезПоследних.Октябрь
               |        КОГДА &ТекМесяц = 11
               |            ТОГДА УсловияЗакрепленияТССрезПоследних.Ноябрь
               |        КОГДА &ТекМесяц = 12
               |            ТОГДА УсловияЗакрепленияТССрезПоследних.Декабрь
               |    КОНЕЦ КАК ДанныеТекМесяца,
               |    УсловияЗакрепленияТССрезПоследних.ТС КАК ТС
               |ИЗ
               |    РегистрСведений.УсловияЗакрепленияТС.СрезПоследних КАК УсловияЗакрепленияТССрезПоследних
               |ГДЕ
               |    УсловияЗакрепленияТССрезПоследних.ОкончаниеОбслуживания = ДАТАВРЕМЯ(1, 1, 1)
               |    И НЕ УсловияЗакрепленияТССрезПоследних.Архив
               |    И УсловияЗакрепленияТССрезПоследних.ТС <> ЗНАЧЕНИЕ(Справочник.уатТС.ПустаяСсылка)";

Запрос.УстановитьПараметр("ТекМесяц", Месяц(ТекущаяДата()));
РезультатЗапроса = Запрос.Выполнить().Выгрузить();

Для Каждого ТекСтр из РезультатЗапроса Цикл
    НаборЗаписей = РегистрыСведений.УсловияЗакрепленияТС.СоздатьМенеджерЗаписи();
    НаборЗаписей.НормаЗаМесяц = ТекСтр.ДанныеТекМесяца;
    НаборЗаписей.Записать(ИСТИНА);
КонецЦикла;

Заранее спасибо за ответы!
1 mikecool
 
14.02.24
11:31
период не заполнен, ты врешь
2 VSpicy
 
14.02.24
11:40
(1) Стоит даже проверка на заполненность "Периода".
3 фросия
 
14.02.24
11:42
(2)неправда.
покажите где у вас проверка на заполненность?!
4 Ненавижу 1С
 
14.02.24
11:43
(2) да?
5 Ёпрст
 
14.02.24
11:44
(0)
так хотя бы воткни:
НаборЗаписей.Период = Вася;
6 Ненавижу 1С
 
14.02.24
11:47
Не надо так:

НаборЗаписей = РегистрыСведений.УсловияЗакрепленияТС.СоздатьМенеджерЗаписи();

или менеджер записи, или набор
7 mikecool
 
14.02.24
11:52
(2) проверка как раз и работает, а где ты его заполняешь?
8 VSpicy
 
14.02.24
11:53
(3) В свойствах регистра установлено: Основной отбор по периоду. Кстати периодичность: в пределах дня.
Поэтому при создании и сохранении записи, поле "Период" заполняется либо автоматом, либо руками, иначе выдает ошибку: что период пустым не может быть...
9 mikecool
 
14.02.24
11:56
(8) нет никакого автомата, ты создаешь запись и будь бобер - заполни период
10 mikecool
 
14.02.24
11:56
+9 и почитай в двухтомнике про свойства уже наконец
11 VSpicy
 
14.02.24
12:05
(9) Странно... А как же в стандартных реквизитах, в свойствах "Период" установлено: Проверка заполнения - выдавать ошибку?
12 Ёпрст
 
14.02.24
12:07
(11) не надо путать интерактивные действия с программной записью
13 mikecool
 
14.02.24
12:17
(11) ты прикалываешься?
14 Волшебник
 
14.02.24
12:26
НаборЗаписей = РегистрыСведений.УсловияЗакрепленияТС.СоздатьМенеджерЗаписи();

1) Переименовать переменную в МенеджерЗаписи.
2) Заполнить Период.

Для Каждого ТекСтр из РезультатЗапроса Цикл
   МенеджерЗаписи = РегистрыСведений.УсловияЗакрепленияТС.СоздатьМенеджерЗаписи();
   МенеджерЗаписи.ТС = ТекСтр.ТС;
   МенеджерЗаписи.Период = ТекСтр.Период;
   МенеджерЗаписи.НормаЗаМесяц = ТекСтр.ДанныеТекМесяца;
   МенеджерЗаписи.Записать();
КонецЦикла;
15 VSpicy
 
14.02.24
12:30
(14) Спасибо!!!