Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
14 Дек 2017, 23:34
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: определение последней записи в периодическом регистре сведений  (Прочитано 11277 раз)

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

Оффлайн primus

  • **
  • Сообщений: 71
  • РЕПУТАЦИЯ: 2
  • КПД: 3%
  • Регистрация: 2011-08-01
  • Сайт: 
  • Профессия: Программист 1С
Есть периодический регистр сведений Контрагенты.
Есть у меня две записи:

Период            ФИО            КоличествоЧеловек
01.01.2007  Иванов В.В.                    5
03.03.2010  Иванов В.В.                    6

Мне нужно для Иванова В.В. вывести, сколько у него на сегодняшний день проживает человек.

Иждивенцы = РегистрыСведений.Контрагенты.Выбрать();
Пока Иждивенцы.Следующий() Цикл
      Если Иждивенцы.ФИО = "Иванов В.В." Тогда
              ЭтаФорма.КоличествоИждивенцев = Иждивенцы.КоличествоЧеловек
      КонецЕсли;
КонецЦикла;

Гарантирует ли такая конструкция вывод самой последней записи для человека? 


Оффлайн Big Mike

  • *
  • Сообщений: 43
  • РЕПУТАЦИЯ: 21
  • КПД: 49%
  • Регистрация: 2011-10-11
  • Сайт: 
  • Профессия: Консультант 1С
Для получения первого или последнего значения в периодическом регистре сведений лучше использовать функции СрезПервых или СрезПоследних.

Оффлайн primus

  • **
  • Сообщений: 71
  • РЕПУТАЦИЯ: 2
  • КПД: 3%
  • Регистрация: 2011-08-01
  • Сайт: 
  • Профессия: Программист 1С
Не могу понять, что получается при использовании матода СрезПоследних.
Есть периодический регистр сведений Контрагенты с Измерениями: СТ, Село, Адрес, Дом,Квартира. Ресурсами ФИО, КоличествоЧеловек. Реквизит - НомерДоговора.

Делаю следующее:

ПолучитьДоговор = Новый Структура("СТ", "Село", "Адрес", "Дом", "Квартира");
ПолучитьДоговор.Вставить("СТ", ЭтаФорма.СТ);
ПолучитьДоговор.Вставить("Село", ЭтаФорма.Село);
ПолучитьДоговор.Вставить("Адрес",ЭтаФорма.Адрес);
ПолучитьДоговор.Вставить("Дом",ЭтаФорма.Дом);
ПолучитьДоговор.Вставить("Квартира",ЭтаФорма.Квартира);

ПроверкаДоговра = РегистрыСведений.Контрагенты.СрезПоследних(ТекущаяДата(), ПолучитьДоговор);

дальше мне надо проверить, заключен ли с ним договор.

Если ПроверкаДоговора.НомерДоговора <> 0 Тогда ЭтаФорма.НомерДоговора = ПроверкаДоговора.НомерДоговора
КонецЕсли;

при отладке пишет, что не найдено поле объекта НомерДоговора.

Оффлайн AntonB

  • Модератор
  • *****
  • Сообщений: 402
  • РЕПУТАЦИЯ: 74
  • КПД: 18%
  • Регистрация: 2011-05-26
  • Сайт: 
  • Профессия: Программист 8.1
Если договор не заключен, ПроверкаДоговра вернет пустую таблицу

Если ПроверкаДоговра.Количество() > 0 Тогда
   и использовать ПроверкаДоговра[0] или вообще перебирать строки
Предлагаю полный ИТ сервис небольшой организации в Москве (приходящий сисадмин+1С7.7,1С8.x)

Оффлайн AntonB

  • Модератор
  • *****
  • Сообщений: 402
  • РЕПУТАЦИЯ: 74
  • КПД: 18%
  • Регистрация: 2011-05-26
  • Сайт: 
  • Профессия: Программист 8.1
  и использовать  ПроверкаДоговра [ 0 ]
Предлагаю полный ИТ сервис небольшой организации в Москве (приходящий сисадмин+1С7.7,1С8.x)

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
Там таблица значений возвращается. Если уверен что запись одна, то
СтрокаТаблицы = ПроверкаДоговора[0];
Если СтрокаТаблицы.НомерДоговора <> 0 Тогда
   ЭтаФорма.НомерДоговора = СтрокаТаблицы.НомерДоговора;
КонецЕсли;
А вобще делал бы запросом.

Оффлайн AntonB

  • Модератор
  • *****
  • Сообщений: 402
  • РЕПУТАЦИЯ: 74
  • КПД: 18%
  • Регистрация: 2011-05-26
  • Сайт: 
  • Профессия: Программист 8.1
ПроверкаДоговра, кстати, или ПроверкаДоговора ?  у Вас по-разному написано
Предлагаю полный ИТ сервис небольшой организации в Москве (приходящий сисадмин+1С7.7,1С8.x)

Оффлайн primus

  • **
  • Сообщений: 71
  • РЕПУТАЦИЯ: 2
  • КПД: 3%
  • Регистрация: 2011-08-01
  • Сайт: 
  • Профессия: Программист 1С
Регистр сведений Контрагенты хранит не только данные, но и историю их изменений.
Период         СТ          Село                Адрес       Дом   Квартира   НомерДоговора
01.01.2009   моск.обл  простоквашино  Молочная   1          1               1020
01.01.2010   моск.обл  простоквашино  Молочная   1          1               2020
01.01.2011   моск.обл  простоквашино  Молочная   1          1                 0

данные приблизительные. Если делать запросом выборку по одновременному равенству измерений регистра и введенных данных формы, то есть ли гарантия, что выберет в итоге последнюю запись. То есть как в примере: в этом году договор не заключался, а в предыдущие есть договор.

Оффлайн Big Mike

  • *
  • Сообщений: 43
  • РЕПУТАЦИЯ: 21
  • КПД: 49%
  • Регистрация: 2011-10-11
  • Сайт: 
  • Профессия: Консультант 1С
Конечно, если Вы будете строить запрос по основной таблице (название совпадает с наименованием объекта метаданных), то он выберет все строки, можно конечно усложнить запрос и сказать чтобы выбирал только с максимальной (минимальной) датой, чтобы найти крайние значений, но это все лишнее, т.к. разработчики 1С позаботились о нас и дали нам виртуальные таблицы, вроде называются как название объекта метаданных + СрезПоследних (СрехПервых), по которым и нужно строить запрос. Тогда вы точно получите последнее (первое) значение, отфильтрованное по определенным параметрам (учтите, если фильтр не по всем реквизитам стоит, то в запросе вернуться могут и более 1 строки).

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
данные приблизительные. Если делать запросом выборку по одновременному равенству измерений регистра и введенных данных формы, то есть ли гарантия, что выберет в итоге последнюю запись. То есть как в примере: в этом году договор не заключался, а в предыдущие есть договор.
Это можно сделать запросом, если укажешь в запросе что нужна та запись где номер договора не равен 0, то он вернет вторую запись, т.е. где дата в примере 01.01.2010. Запросом надо пользоваться, потому что он быстрее работает. На трех записях это не заметишь конечно, а вот на 1000 и более заметно будет.


Теги:
 

Отличие проводки по регистру сведений от проводки по регистру накопления?

Автор DirecTwiXРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 4847
Последний ответ 18 Апр 2012, 02:19
от Dethmontt
Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 7744
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984
Как можно подставлять цену из регистра сведений "Цены поставщиков" в документ"ПоступлениеТоваров" на актуальную дату? Необходимо использовать запрос в решении.

Автор Елена6666666666Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 9353
Последний ответ 24 Окт 2014, 13:30
от cska-fanat-kz
В чем отличие регистра сведений от регистра накопления?

Автор Dmitry QweРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 501
Последний ответ 11 Сен 2017, 10:50
от ilyay
Проверка на "новую" запись в рег. сведений

Автор nomer13Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 14352
Последний ответ 11 Янв 2011, 10:04
от nomer13

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
184 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
50 Сообщений
andron81_81
41 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
29 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 324
  • Точка Скрытых: 0
  • Точка Пользователей: 2
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal