|
Изменение записи в регистре сведений Цены Номенклатуры | ☑ | ||
---|---|---|---|---|
0
falselight
20.03.18
✎
15:23
|
Конфигурация Комплексная автоматизация 2.4.2.115.
В процедуру на сервере передаю Значение которое нужно изменить в поле Вес и другие строки измерений регистра. Менять нужно на текущую дату. Подскажите пожалуйста по коду как правильно сделать? Регистр подчинен регистратору. Периодичность в пределах секунды. Измерения - Номенклатура, Характеристика, ВидЦены Ресурсы - Цена, Упаковка, Валюта. Данные Вес взяты из поля Числитель, ресурса упаковка, изменены и их нужно обновить в регистре. Как тут будет правильнее сделать? |
|||
1
falselight
20.03.18
✎
15:31
|
Получается Регистратор и период так же с собой таскать нужно?
Что бы потом по нему же и другим данным изменять значения? При установке отбора, так же? |
|||
2
Ц_У
20.03.18
✎
15:33
|
(0) цель конечная какая?
|
|||
3
VitShvets
20.03.18
✎
15:39
|
Т.к. регистр подчинен регистратору, то изменить что-то в регистре можно только документом. Т.е. 2 выхода:
1. Кривой вариант. Каким-то образом находить подходящий регистратор, например последний и править его движения. 2. Более правильный вариант. Добавлять новый документ с правильными данными, проводить его. |
|||
4
falselight
20.03.18
✎
15:46
|
(2) (3)
Задача в создании обработки. Которая заполняет тч данными из регистра. Меняться могут 3 поля Вес1шт, ВесПогонногоМетра и Длина. Эти данные изначально берутся из регистра сведений, как ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Упаковка.Числитель, 0) КАК Вес1Шт, ЦеныНоменклатурыСрезПоследних.Номенклатура.ДлинаЗнаменатель КАК ВесПогонногоМетра, ЦеныНоменклатурыСрезПоследних.Номенклатура.ДлинаЧислитель КАК Длина, |
|||
5
falselight
20.03.18
✎
15:48
|
При смене этих полей они должны обновляться в регистре.
Но видите это не просто измерения регистра. Это реквизиты справочников. Я не совсем ещё увидел решение вопроса. Думаю где обновлять то их значения при изменении в полях табличной части обработки? |
|||
6
Temai
20.03.18
✎
15:51
|
(5) При изменении табчасти нужно создавать документ и проводить. ИМХО
|
|||
7
falselight
20.03.18
✎
15:56
|
(6) Странно тогда в документ и били бы. Или как то
по другому ставился функционал обработки. Тут нужно менять именно данные. Если они берутся из элементов справочников что в регистре. То получается менять нужно их в этих элементах, так ведь? Регистр получатся не трогается? |
|||
8
VitShvets
20.03.18
✎
15:59
|
(7) Если задача обработки исправлять Вес1Шт, весПМ и длину, то регистр и правда здесь не при чем. Нужно получать объекты "Упаковка" и "Номенклатура", править там значения Числитель, ДлинаЗнаменатель и ДлинаЧислитель, записывать.
|
|||
9
falselight
20.03.18
✎
16:01
|
(8) Да получается так. Это верное решение!!!!
Я тоже так его понял. А то начал в регистре что то менять добавлять. В таком случае и документ не затрагивается. |
|||
10
falselight
20.03.18
✎
16:38
|
Почему могут не сохраняться значения?
Загружаю данные в тч обработки. Меняю значение в поле. По коду оно устанавливается у номенклатуры. Смотрю код справочника, такой же всегда. Но снова заполняю тч обработки там пусто. И все по новой. Ставишь новое значение. оно записывается. Но потом при загрузки в тч его уже нет. /// &НаСервере Процедура НоменклатураСРеквизитамиВесПогонногоМетраПриИзмененииНаСервере(ВесПогонногоМетра, Номенклатура) // СПРАВОЧНИК *НОМЕНКЛАТУРА* .ДлинаЗнаменатель Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | Номенклатура.ДлинаЗнаменатель КАК ДлинаЗнаменатель |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка = &Номенклатура"; Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Рез = Запрос.Выполнить(); Если Не Рез.Пустой() Тогда Выборка = Рез.Выбрать(); Выборка.Следующий(); ЭлемСпр = Выборка.Ссылка.ПолучитьОбъект(); ЭлемСпр.ДлинаЗнаменатель = ВесПогонногоМетра; ЭлемСпр.Записать(); КонецЕсли; КонецПроцедуры // &НаКлиенте Процедура НоменклатураСРеквизитамиВесПогонногоМетраПриИзменении(Элемент) НоменклатураСРеквизитамиВесПогонногоМетраПриИзмененииНаСервере(ЭтаФорма.Элементы.НоменклатураСРеквизитами.ТекущиеДанные.ВесПогонногоМетра, ЭтаФорма.Элементы.НоменклатураСРеквизитами.ТекущиеДанные.Номенклатура); КонецПроцедуры |
|||
11
falselight
20.03.18
✎
16:42
|
Посмотрел, значение устанавливается но пропадает после вот этой строки, -
ЭлемСпр.Записать(); Почему? |
|||
12
falselight
20.03.18
✎
16:43
|
На этой строке, в справочнике номенклатура пропадает, -
Справочники.Номенклатура.ОтработатьЛогикуСвязиРеквизитов(ЭтотОбъект); Как быть? |
|||
13
VitShvets
20.03.18
✎
16:46
|
(12) Попробуй
ЭлемСпр.ОбменДанными.Загрузка = Истина; А вообще, если по феншуй, нужно смотреть логику модуля объекта "ПередЗаписью" и прочее. |
|||
14
falselight
20.03.18
✎
16:52
|
(13) Да согласен. Это демо база.
Я нашел место где обнуляет. Там не сходятся меры номенклатуры. Разматывать нужно все это, но суть почему понял. Сама настройка номенклатуры не позволяет задавать такие значения. |
|||
15
falselight
20.03.18
✎
16:55
|
(13) Да ваш метод сработал, благодарю.
|
|||
16
Fram
21.03.18
✎
01:12
|
(8) судя по названию этих реквизитов, после первичного ввода я бы не стал их менять. мало того я бы даже запретил их менять, если это разрешено
|
|||
17
VitShvets
21.03.18
✎
13:44
|
(16) У нас, к примеру, закрыты к изменению ВГХ. Бывают случаи когда надо поменять - перепутали размерность, ввели граммы вместо килограммов. Бывает поставщик присылает не корректные данные. Это конечно не массовое явление, но бывает. В любом случае надо отталкиваться от бизнес-логики, а в данном топике сие не обговаривается, можно только гадать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |