Создание нового значения регистра сведений из формы документа #658914


#0 by re-code
У меня задание: Если в табличной части накладной изменяется значение одной из колонок, то необходимо записать это новое значение в периодический регистр сведений. При попытке создать движение &НаСервере у меня ничего не выходит
#1 by EugeniaK
Ну а что не выходит то? Активность и регистратор заполнять не нужно, сами заполнятся. Документ вообще является регистратором для этого РС?
#2 by EugeniaK
И как система должна понять, к какой  строке табличной части ты обращаешься? Цикл по строкам еще нужен. И сравнение со старым значением желательно.
#3 by re-code
Да является. На счет активности ничего сказать не могу, а вот колонка регистратор при проведении у меня не заполнялась. Движения с формы не проходят, не знаю пока почему, появляется ошибка {Документ.РасхНакл.Форма.ФормаДокумента.Форма(38,5)}: Переменная не определена (Движения)    <<?>>Движения.Продажи.Записывать = Истина; (Проверка: Сервер) {Документ.РасхНакл.Форма.ФормаДокумента.Форма(39,13)}: Переменная не определена (Движения)    Движение = <<?>>Движения.Продажи.Добавить; (Проверка: Сервер) {Документ.РасхНакл.Форма.ФормаДокумента.Форма(41,20)}: Переменная не определена (Дата)    Движение.Период = <<?>>Дата; (Проверка: Сервер) {Документ.РасхНакл.Форма.ФормаДокумента.Форма(42,25)}: Переменная не определена (ЭтотОбъект)    Движение.Регистратор = <<?>>ЭтотОбъект.Ссылка; (Проверка: Сервер) {Документ.РасхНакл.Форма.ФормаДокумента.Форма(43,19)}: Переменная не определена (ТекСтрокаСписокТоваров)    Движение.Товар = <<?>>ТекСтрокаСписокТоваров.Товар; (Проверка: Сервер) {Документ.РасхНакл.Форма.ФормаДокумента.Форма(44,25)}: Переменная не определена (ТекСтрокаСписокТоваров)    Движение.ЦенаПродажи = <<?>>ТекСтрокаСписокТоваров.Цена; (Проверка: Сервер)
#4 by re-code
EugeniaK, Я хочу вызвать движение при измении реквезита табличной части Движения в модуле объекта проходят, а вот в модуле формы нет
#5 by EugeniaK
А при чем тут вообще форма? "Обработка проведения" вообще-то в модуле объекта расположена.
#6 by EugeniaK
В контексте формы нет переменной Движения. Нужно обращаться Объект.Движения И не Движения.Продажи.Записывать = Истина (эта команда используется только в обработке проведения в модуле объекта) а Объект.Движения.Продажи.Записать
#7 by EugeniaK
Только такой подход изначально неверный. У тебя получается. что пользователь ходит по форме и что-то меняет, а ты сразу пишешь в регистр. Пользователь вообще может передумать и закрыть документ без сохранения. Движения должны делаться только при сохранении формы. Т.е. перед записью в транзакции вытащить из базы данных старые значения, сравнить с табличной частью, и если что-то поменялось, то сформировать движения.
#8 by re-code
Евгения, спасибо. Не буду оправдываться тем, что я новичек, мысли у тебя разумные, постараюсь реализовать твой вариант. Реализовывать думаю следующим образом. При сохранении я получаю актуально значение регистра по данному товару, если значение отличается или товар отсутствует в регистре - создаю новую запись. Верно ?
#9 by EugeniaK
Да, все верно. В этом случае можно использовать обработку проведения в модуле объекта.
#10 by re-code
Скажите, как создать регистр сведений, общий для расходных накладных, но в тоже время от них зависящий ? Попробую по-русски объяснить. Необходимо создать периодический регистр сведений с измерением типа Справочник "Товары" и ресурсом "ЦенаПродажи", значение которого может изменяться только документом РасхНакл. В расходной накладной при выборе товара в графу "Цена" должно заноситься значение из реквизита "ЦенаПродажи" регистра сведений на дату документа. Если в накладной значение цены продажи изменяется, то новое значение должно быть записано в периодический регистр сведений "ЦенаПродажи" Я понимаю это так: Записи в регистре создаются строго РасхНакл -> Режим записи я ставлю: подчинение регистратору. Далее, допустим в первой накладной я указал цену продажи стола 200р , эта цена при проведении записалась в регистр "ЦенаПродажи" и при добавлении стола в табличную часть второй накладной актуальная цена должна автоматически подставиться из регистра сведений, но этого не происходит... Объясните, где я ошибаюсь и каким способом мне реализовать поставленную передо мной задачу ?
#11 by EugeniaK
Обычныый периодический регистр сведений с регистратором "Расходная накладная" "актуальная цена должна автоматически подставиться из регистра сведений" Добавить процедуру на событие "При изменении" элемента формы "Номенклатура". Процедура должна получать значение цены  из РС "ЦенаПродажи" по текущей номенклатуре на дату документа (в процедуре определять цену запросом или функцией "ПролучитьПоследнее") и записывать эту цену в поле "Цена". При проведении докумнта для каждой строки определять, совпадает ли цена в строке с ценой в РС. Если не совпадает, то добавить запись в РС.
#12 by toypaul
если отслеживать изменения в форме надо, то делаем через СоздатьНаборЗаписей
#13 by re-code
Если установить режим записи Регистратор, тогда к каждой накладной будут соответствовать свои записи в регистраторе. Мне же исходя из условия задачи, нужно чтобы эти записи были общими, поскольку сначала цена указывается из накладной, после чего при создании новых накладных цена должна получаться из регистра сведений. Но если установить режим записи Независимый, тогда значение ресурса ЦенаПродажи может изменяться не только Приходной накладной... или я снова не в верном направлении размышляю ?
#14 by EugeniaK
Регистратор это просто автор записи. При считывании значения учитывается только измерение номенклатура. Т.е. это общая запись, считывать ее может любой документ. Имеет значение только Период записи. По нему определяется последнее значение. Регистратор не важен.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С