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

Метод ПолучитьПоследнее() ничего не возвращает

Автор Golickoff, 03 июн 2016, 08:51

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

Golickoff

Всем привет. Создал отчёт, в котором указывается его номер, уникальный для каждого сформированного отчёта. Для хранения номеров создал периодический регистр сведений с периодом Секунда. При формировании отчёта используется следующий код:
НаборНомеровОтчёта = РегистрыСведений.НомераТаможенныхОтчётов.ПолучитьПоследнее(ТекущаяДата());
Если НаборНомеровОтчёта.Количество() = 0 Тогда
ПервыйНомер = РегистрыСведений.НомераТаможенныхОтчётов.СоздатьНаборЗаписей();
Значение = ПервыйНомер.Добавить();
Значение.НомерОтчёта = 1;
Значение.Период = ТекущаяДата();
ПервыйНомер.Записать();
НомерОтчёта = 1;
Иначе
НоваяЗапись = РегистрыСведений.НомераТаможенныхОтчётов.СоздатьНаборЗаписей();
Значение = НоваяЗапись.Добавить();
Значение.НомерОтчёта = НаборНомеровОтчёта.НомерОтчёта+1;
Значение.Период = ТекущаяДата();
НоваяЗапись.Записать();
НомерОтчёта = НаборНомеровОтчёта.НомерОтчёта;
КонецЕсли;

После формирования первого отчёта я ничего не получил в срезе последнего и создал новую запись под номером 1. Забыл упомянуть, что у регистра есть только один реквизит с типом Число. Я проверил регистр, запись в нём имеется.
При следующих формированиях я снова ничего не получил в срезе последнего и изменил дату записи регистра с таким же номером. Отсюда 2 вопроса:
1. Почему я не получаю срез последнего?
2. Почему я перезаписываю уже существующую запись без ошибок?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

ls600

насчет 1 вопроса, запросом получай, запрос есть?
по 2 вопросу, если так понял, что бы не перезаписывать запись нужно сделать

ПервыйНомер.Записать(Ложь);
НоваяЗапись.Записать(Ложь);

Golickoff

Цитата: ls600 от 03 июн 2016, 09:09
насчет 1 вопроса, запросом получай, запрос есть?
Пробовал вот такой текст
"ВЫБРАТЬ
   |   НомераТаможенныхОтчётовСрезПоследних.НомерОтчёта
   |ИЗ
   |   РегистрСведений.НомераТаможенныхОтчётов.СрезПоследних КАК НомераТаможенныхОтчётовСрезПоследних
   |ГДЕ
   |   НомераТаможенныхОтчётовСрезПоследних.Период = &Период"
Тоже пусто.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

cska-fanat-kz

может регистр сведений тупо непериодический? ;)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

ls600

в отчете у даты какой тип даты: Дата, или Дата и Время

Golickoff

Цитата: cska-fanat-kz от 03 июн 2016, 09:22
может регистр сведений тупо непериодический? ;)
Написал в топике, периодичность в пределах секунды.

Цитата: ls600 от 03 июн 2016, 09:22
в отчете у даты какой тип даты: Дата, или Дата и Время
Я использую ТекущаяДата(), а не переменные отчёта.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

ls600

тогда нужно отслеживать код, так сложно сказать.

Golickoff

Всё решилось этими строками:
"ВЫБРАТЬ
   |   НомераТаможенныхОтчётовСрезПоследних.НомерОтчёта
   |ИЗ
   |   РегистрСведений.НомераТаможенныхОтчётов.СрезПоследних(&Дата, ) КАК НомераТаможенныхОтчётовСрезПоследних"
Благодарю за внимание.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Теги:

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

Рейтинг@Mail.ru

Поиск