Имя: Пароль:
1C
 
Изменение записи в регистре сведений Цены Номенклатуры
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) У нас, к примеру, закрыты к изменению ВГХ. Бывают случаи когда надо поменять - перепутали размерность, ввели граммы вместо килограммов. Бывает поставщик присылает не корректные данные. Это конечно не массовое явление, но бывает. В любом случае надо отталкиваться от бизнес-логики, а в данном топике сие не обговаривается, можно только гадать.