helpf.pro
Регистрация

v8. Запись в регистр сведений

snfr1c
22.11.2010 18:03Прочитано: 9212
Здравствуйте!
Описание сути вопроса:
Есть справочник с реквизитами Контрагент, с табличной частью ВидыНоменклатуры, в табличной части один реквизит ВидНоменклатуры. Необходимо организовать Регистр Сведений так чтобы у одного (или у каждого) контранента была запись по каждому строке табличной части видуноменклатуры. С возможностью отбора по контрагенту. Изначально я организовал регистр сведений так:
РегистрСведений - ВидыНоменклатурыКонтрагента
Измерение: Контрагент, индексировать
ресурс: Видноменклатуры, индексировать.
Затем в спраовчнике в процедуре "ПослеЗаписи" я организовал вызов процедуры из общего модуля. Тескт процедуры:
Код 1C v 8.х
 
Процедура ЗаписьВРС(текЭлемент) Экспорт
//очищаем записи
НаборЗаписей = РегистрыСведений.ВидыНоменклатурыКонтрагента.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Контрагент.Установить(текЭлемент.Контрагент);
НаборЗаписей.Записать();

РегистрВидыНоменклатурыКонтрагента = РегистрыСведений.ВидыНоменклатурыКонтрагента.СоздатьМенеджерЗаписи();

ЭлементСправочника = текЭлемент.Ссылка;
Для Каждого ТекущаяСтрока Из ЭлементСправочника.ВидыИзданий Цикл

//Измерения
РегистрВидыНоменклатурыКонтрагента.Период = ТекущаяДата();
РегистрВидыНоменклатурыКонтрагента.Контрагент = текЭлемент.Контрагент;
//Ресурсы
РегистрВидыНоменклатурыКонтрагента.ВидНоменклатуры = ТекущаяСтрока.ВидНоменклатуры;
//записываем
РегистрВидыНоменклатурыКонтрагента.Записать();

КонецЦикла;

КонецПроцедуры // ЗаписьВРС()


Если убрать из регистра сведений у контрагента - индексировать - не могу сделать отбор.
При текущем коде и организации - не могу сделать несколько записей - только последнюю.
При ручном создании также ругается что запись есть по полю контрагент.
Подскажите как можно обойти?
Yandex
Возможно, вас также заинтересует
Реклама на портале
Roger
22.11.2010 23:42Ответ № 1
Добрый день.

1. Для установки отбора индексирование необходимо.
2. Для добавления нескольких видов номенклатуры попробуйте реорганиззовать регистр, например сделать его периодическим.
Roger
22.11.2010 23:42Ответ № 2
Добрый день.

1. Для установки отбора индексирование необходимо.
2. Для добавления нескольких видов номенклатуры попробуйте реорганиззовать регистр, например сделать его периодическим.
Mokey
23.11.2010 09:45Ответ № 3
Добрый день!
Я в таких случаях сделал бы два измерения - Контрагент и ВидНоменклатуры. В этом случае уникальность записи в регистре сведений как раз и будет определяться этой парой. А в ресурсы вообще нет необходимости запихивать, иначе Вы никогда не сможете сделать несколько записей для одного контрагента.
snfr1c
23.11.2010 10:11Ответ № 4
(3) спасибо, попробую так и сделать.
(1) (2) варианты с периодичностью и не переодичностью ничего не дали
snfr1c
23.11.2010 10:24Ответ № 5
(3) Да, так работает. Спасибо.
E_Migachev
23.11.2010 11:14Ответ № 6
(0) тебе нужно выделить уникальную измерения, которые никогда бы не повторялись, иначе будет ошибка что такая запись уже есть*09 в (3) как раз решение в самый раз тебе!
snfr1c
23.11.2010 11:57Ответ № 7
Вопрос закрыт!
snfr1c
23.11.2010 12:00Ответ № 8
(6) Контрагент - повторяется, а вот виды измерений нет у каждого контрагента свой набор. лучший вариант, тот который вы предложили - закинуть контрагента и виды номенклатуры в измерение - тогда связка будет уникальна и не будет дублироваться. добавлю ещё периодичность год - будет всё "ок".
rdaler
13.07.2011 11:27Ответ № 9
А если необходимо чтобы набор ВидовНоменклатуры менялся во времени?
Например: Есть Контрагент К1 с набором ВидНоменклатуры "В1, В2, В3".
Запись в регистре будет:
Дата1 - К1 - В1
Дата1 - К1 - В2
Дата1 - К1 - В3
Мне необходимо на Дату2 удалить В2, но предыдущая версия набора должна сохраниться.
В этом случае Ответ 3 с двумя измерениями не подходит, т.к. СрезПоследних всегда будет захватывать запись на Дату2
Mokey
13.07.2011 17:47Ответ № 10
(9) rdaler,
если регистр периодический - то нет необходимости ВидНоменклатуры указывать как измерение, оставьте в ресурсах и сделайте периодичность секунда, и нет проблем. В этом случае уникальность достигается парой "Период - Контрагент".
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.