Имя: Пароль:
1C
1С v8
Замена ед. хранения остатков
0 ХочуСпец
 
09.11.11
15:19
Ситуация следующая:

Есть две номенклатуры: Ном1, Ном2

у Ном1 ед. хранения остатков - шт (владелец Ном1)

у Ном2 ед. хранения остатков - шт (владелец Ном1)

Возникает задача изменения у Ном2 ед. хранения остатков на соответствующую (владелец Ном2).

Но изменение невозможно, так как это единица уже участвуют в товародвижениях.

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

если менять единицу (владелец Ном1) на соответствующую единицу, то это изменение произойдет для всех единиц (владельцев Ном1), что неприемлимо

как можно выйти из этой ситуации?
1 ХочуСпец
 
09.11.11
15:27
да вручную конечно можно сделать, убрать галочки ненужные в обработке
но процесс необходимо автоматизировать
2 Darly
 
09.11.11
15:42
Универсальные подбор и обработка объектов поможет. Закладка Произвольный алгоритм. Обмен =Истина и меняйте что угодно.
3 viknik
 
09.11.11
15:46
Если единицы новые и старые идентичные (одинаковые коэффициенты, наименования), то поменяй только в справочнике, а больше нигде не меняй.
4 ХочуСпец
 
09.11.11
15:53
(3) необходимо заменить в движениях (документах)
5 ХочуСпец
 
09.11.11
15:58
(2) а можно пояснить
6 viknik
 
09.11.11
15:59
(4) Мало регистров, где пишется единица измерения (напр. в УПП - Заказы покупателй, поставщикам) и может у них таких регистров и нет. А для перерасчетов из одной единицы в другую всегда идет обращение к справочнику за коэффициентами. А в документах можно оставить все по-старому - все равно они уже проведены, да и если будут перепроводить - результат не изменится.
7 Darly
 
09.11.11
16:00
(5)что именно пояснить?
8 ХочуСпец
 
09.11.11
16:02
(7) в этой обработке я вообще не нашел возможность вывода объектов, где бы содержался искомый объект
9 ХочуСпец
 
09.11.11
16:04
(6) да как раз УПП
10 Darly
 
09.11.11
16:07
(8)нуууууу. Задача поменять в справочнике или заменить в документах? Если в справочнике - то отбор по ссылке. Если в документах - то по Номенклатуре. Не понимаю, в чем проблема...
11 ХочуСпец
 
09.11.11
16:09
задача поменять во всех объектах где встречается данный заменяемый объект (и документы и регистры)
12 Darly
 
09.11.11
16:10
(11)ну если регистры - тогда только рисовать обработку. Мой вариант требует проведения документов.
13 ХочуСпец
 
09.11.11
16:11
(6) да на документы не повлияет
но кроме регистров Заказов, есть еще и справочники: Номенклатурные группы например, типы цен номенклатуры и т.д
14 Darly
 
09.11.11
16:12
(11)хотя, вру. Можно и регистры, по которым движение документов
15 ХочуСпец
 
09.11.11
16:13
(14) ну хорошо даже если и регистры как обойти следующую проблему, которую я уже описывал:

если менять единицу (владелец Ном1) на соответствующую единицу, то это изменение произойдет для всех единиц (владельцев Ном1), что неприемлимо
16 Darly
 
09.11.11
16:13
вобщем, в 2 хода: 1. Поменять в справочнике. 2. Документы с регистрами.
17 ХочуСпец
 
09.11.11
16:15
я все таки склоняюсь к изменению обработки Поиск и замена значений. Там где формируется список объектов, где встречается объект каким то образом фильтровать эти объекты с соответствующем владельцем единицы измерения, но как пока не знаю
18 Darly
 
09.11.11
16:21
нужно для номенклатуры 2 установить Единицу 2 вместо Единицы1? Берём вышеуказанную Обработку объект - справочник Номенклатура, отбор по ссылке Номенклатура2. Получаем объект и на закладке Произвольный алгоритм пишет замену единицы измерения указав Обмен.Загрузка = Истина. Потом выбираем объект Документы, выбираем все подряд )нужные типы) и отбор по Номенклатуре2. Получаем список объектов. На закладке Произвольный Алгоритм пишем замену единиц в доках, записываем доки без проведения. Ну и плюс получаем движения и в них меняем единицу.Как-то так.
19 ХочуСпец
 
09.11.11
16:27
(18) да все это понятно

попробую объяснить так:

есть ном1 с ед1 (код = 001)

есть ном2 с ед1 (код = 001)

но для ном2 ед1 указана неверное (как это произошло я не знаю), так как ед1 не является владельцем ном2.

При создании какого либо документа (н-р, поступление товаров и услуг).

В табличную часть для ном1 подставиться ед1 (что правильно)
для ном2 тоже подставить ед1 (что неправильно)

Если мы заменяем ед1 (код = 001) на какую то единицу ед2 (подчиненной ном2),

то в документе Поступления в табличной части для строк как для ном1 так и для ном 2 подставиться ед2, что неверно. Надо подставить только для ном2

понятно объяснил?
20 DrShad
 
09.11.11
16:32
пиши запрос с условием на единицу и номенклатуру - полученные объекты меняй в чем проблема?
21 Darly
 
09.11.11
16:32
ну так я и пишу про то, как поменять единицу номенклатуры2, а не просто единицу1 на единицу2. была такая история у меня, правда документ был 1 и его провели после замены единицы, вот и вся разница в наших случаях
22 ХочуСпец
 
09.11.11
16:48
(20) где писать запрос?
23 Darly
 
09.11.11
16:53
(22)думаю, имеется ввиду написание своей обработки
24 DrShad
 
09.11.11
16:53
в обработке вестимо
25 DrShad
 
09.11.11
16:55
(22) или написать за тебя?
26 ХочуСпец
 
09.11.11
17:02
(25) написать сам смогу
хотел просто изменить обработку поиск и замена значений
27 DrShad
 
09.11.11
18:20
(26) я бы не стал этого делать
28 ХочуСпец
 
10.11.11
08:10
Хотел бы поднять эту тему, так как люди видимо не очень поняли задачу.

Проблема описана в (19)

В данном случае ед1 участвует в 3-х объектах (метод глобального контекста НайтиПоСсылкам()):

Ном1, Ном2, Поступление товаров и услуг.

В документе Поступление товаров и услуг в табличной части товары есть две строки, где участвует ед1: для ном1, для ном2.

В данном случае замена ед1 на какую то другую ед. изм. должна произойти только в двух объектах: ном2, поступление товаров и услуг (только для строки ном2!)

Это понятно вроде?

Для примера хочу рассмотреть обработку ПоискИЗаменаЗначений. Если воспользовать заменой, то замена ед1 произойдет во всех объектах и строках документов, где встречается ед.1, что неприемлимо.

Надо каким то образом изменить функцию вВыполнитьЗаменуЭлементов() обработки, чтобы замена происходила только для тех объектов, строк табличных частей, записей регистров, где встречается только Ном2.
Но как это сделать?
29 rinatru
 
10.11.11
08:13
(28) это ты не понял объяснений.. .в регистрах НЕ НАДО менять единицы измерения, потому как они там не пишутся...
если ты хочешь правильности только для новых документов, то достаточно поменять только в справочнике, и все. заменять ед. изм. в документах за весь период? а тебе надо? разве периоды ты не закрыл?
30 ХочуСпец
 
10.11.11
08:43
(29) В справочнике номенклатура в обработчике перед записью проверяется есть ли ссылки на объекты.
Если я изменю только справочнике, то запись программно правильной ед. изм. будет невозможна.
31 ХочуСпец
 
10.11.11
08:48
(30) + изменение в том числе и программное вообще невозможно, если эта номенклатура участвовала в товародвижениях (регистрах накопления)
32 rinatru
 
10.11.11
08:50
(30) (31)
ну и что? в чем затруднения?
конечно тебе придется отключить эту проверку.. и заново включить после произведенных изменений...
т.к. коэф пересчета одинаковы ты ничего не поломаешь в учете, но по крайней мере исправишь владельца у элемента подчиненного справочника
33 ХочуСпец
 
10.11.11
08:52
(32) изменений делать нельзя в конфе вот в чем проблема
34 rinatru
 
10.11.11
08:53
(33) и где ты увидел изменения? сними с поддержки... поменяй.. исправь как было. .и верни поддержку.
35 ХочуСпец
 
10.11.11
08:55
(34) не в этом проблема
изменять вообще ничего нельзя
я могу написать только внешнюю обработку
36 ХочуСпец
 
10.11.11
08:55
(35) + конфу не имею право трогать
37 rinatru
 
10.11.11
08:59
тогда напряги тех, кто имеет право... думаю, что тему уже не имеет продолжения. правильный ответ был в (3)...и больше уже нет вариантов.
38 echo77
 
10.11.11
09:02
(0) Я бы модифицировал обработку "Поиск и замена значений" в разделе найденные ссылки добавить кнопку, которая каким-то образом анализирует результат и снимает/ставит галки
39 Darly
 
10.11.11
10:30
ну пипец. На ровном месте проблему себе создать. вопрос решается за 5 минут
ОБработка Универсальные подбор и обработка объектов.epf
Отбираем объект (Номенклатура) для изменения, переходим на закладку Проивольный алгоритм, добавляем новы и там пишем:
Объект.ОбменДанными.Загрузка = Истина;
Объект.ЕдиницаХраненияОстатков = Справочники.ЕдиницыИзмерения.НайтиПоКоду("0000111111");
Объект.Записать();
ВСЁ ! Поменяли единицу в справочнике и обошли проверку на наличие движений.
40 Darly
 
10.11.11
10:31
(39)код естественно пишем свой