Имя: Пароль:
 
1C
 
Как при проведении прописать движения рег., имея переменную с его именем?
0 Den
 
14.11.04
16:01
Сабж таков. Делаю технологическое перепроведение с заменой элементов справочника. Перед проведением считываю все движения всех регистров нужного документа в ТЗ, выставляю глобальный флаг и перепровожу документ. Но при этом возникает проблема. Обычно в модуле проведения пишется что-то вроде
Конт.Регистр.ОстаткиТовара.ДвижениеПриходВыполнить()
или
Конт.Регистр.Взаиморасчеты.ДвижениеРасходВыполнить()

Все это здорово, но... Имена регистров у меня в ТЗ, движения регистров у переменных, созданных функцией СоздатьОбъект не прописываются и вообще все это делается только в модуле документа. Как быть? Каким образом, имея в переменной имя регистра, прописать движения? Неужели придется шлепать кошмарную конструкцию
Если ИмяРегистра = "Касса" Тогда
ИначеЕсли ИмяРегистра = "Взаиморасчеты" Тогда
...
Это же ужас! Никакой универсальности! Подскажите, как этого можно избежать?
1 Den
 
14.11.04
16:12
Ау!
2 SnarkHunter
 
14.11.04
16:40
А кому сейчас легко...
3 Den
 
15.11.04
12:37
(2) Так вопрос не в этом, а в том, что - можно ли параметризовать запись движений в регистры так же как это делается при чтении (через метаданные)?
4 Den
 
15.11.04
12:50
Чувствую я, сегодня ни до кого не докричаться :(
Ну что, так и будете все молчать? Ну хоть что-нибудь кто-нибудь скажет по существу? Ну хоть вопросы наводящие бы позадавали. А то как контекст обсуждать со сползанием на модеров и не модеров - так это запросто, а как что-нибудь сказать - так нет никого :(
5 SKrin
 
15.11.04
12:52
НужныйРег=СоздатьОбъект("Регистр."+ИмяРегистра);
6 Бивень
 
15.11.04
12:52
Регистр=Регистр.ПолучитьАтрибут(ИмяРегистра);
...
Регистр.ДвижениеРасходВыполнить();
7 Пролд
 
15.11.04
12:52
(4) Невиноватый я, я в ситуацию вникал. А сказать что нибудь - запросто.

Например - запусти отладчик, попробуй посмотреть метаданные для регистров.
8 Бивень
 
15.11.04
12:54
(6)+ Т.е. слово Регистр зарезервировано и использовать его в качестве переменной не стоит. :))
9 Den
 
15.11.04
13:04
(6,8) Вот именно. Тем более что надо писать Регистр.ОстаткиТовара.ДвижениеРасходВыполнить. Но вот как раз это-то и не устраивает
10 Бивень
 
15.11.04
13:05
(9) Смешной ты клоун :))
Рег=Регистр.ПолучитьАтрибут(ИмяРегистра);
...
Рег.ДвижениеРасходВыполнить();
11 Витаэль
 
15.11.04
13:05
9. А ты Р - пиши латинской P (там, где русская З)
12 Бивень
 
15.11.04
13:06
(11) :))
13 Den
 
15.11.04
13:09
(10-12) Вы о чем? Кто-то чего-то недопонимает. По моему - не я
14 Бивень
 
15.11.04
13:12
(13) Тогда ты - идиот!
А если ты с этим утверждением не согласен, думай!
15 Den
 
15.11.04
13:13
(14) Эй! Полегче! Могу доказать, что это ты - идиот! Судя по твоим постам (и не только в этой ветке :)
16 Бивень
 
15.11.04
13:15
(15) Да, я тоже идиот!
17 Бивень
 
15.11.04
13:16
(16)+ И постольку поскольку, мы идиоты должны помогать друг другу, я тебе готов помочь ...
Что тебе не понятно в кусочке из (10)?
18 Den
 
15.11.04
13:23
(17) Ты не вник в ситуацию. Что это такое Регистр.ПолучитьАтрибут(ИмяРегистра)?
Ты даешь изначально неверный совет, потому что такой синтаксис возможен только в одном случае - если перед этим написать
Регистр = СоздатьОбъект("Регистр."+ИмяРегистра)
Но в этом случае невозможно выполнить движения регистра, поскольку он не из контекста модуля документа - а мне надо именно это.
Исходя из вышесказанного твоя последняя строчка из (10) абсолютно бессмысленна, так как ничего, кроме ошибки она не вызовет.
Затем, на кой мне получать атрибут с именем регистра? мне нужно записать атрибут с именем ресурса, измерения и реквизита из ТЗ, с тем, чтобы после этого выполнить движение. Меня не очень устраивает ситуация, когда в обработке придется писать кошмарную конструкцию Если ... Тогда ... ИначеЕсли..., потому что невозможно добиться универсальности обработки и под каждую конфигу ее придется точить заново с учетом имеющихся регистров в этой самой конфиге
19 Бивень
 
15.11.04
13:26
(18) Мля ...
Жаль я этого не знал ...
Наверно, это из за моего незнания оно пять лет работало у меня ...
20 Den
 
15.11.04
13:27
Волшебник! Может ты нас рассудишь? Или подскажешь чего дельного?
21 Бивень
 
15.11.04
13:32
(20) Den, ТЫ - ИДИОТ!
22 Den
 
15.11.04
13:37
Спасибо, конечно, но я и сам уже понял :)))))))
Счас проверил все это на пробной конфиге - работает (8-))
23 Den
 
15.11.04
13:37
Прикольно получилось
// ********************
//
Процедура ОбработкаПроведения()

   //Здесь следует написать алгоритм проведения документа
   Рег = Регистр.ПолучитьАтрибут("Новый1");
       Рег.Новый1 = Новый1;
   Рег.Количество = 1;
   Рег.ДвижениеПриходВыполнить();
КонецПроцедуры

Спасибо, Бивень!
24 Бивень
 
15.11.04
13:39
Пожалуйста :))
25 SnarkHunter
 
15.11.04
13:52
А как насчет (15)?
26 Den
 
15.11.04
13:53
(25) А ты сам хоть что-нить умного сказал?
27 Пролд
 
15.11.04
13:54
Дэн, ты (21) бивню не прощай
28 Den
 
15.11.04
13:55
(27) Прощу. Потому что только он и сказал что-то дельное и как раз то, что мне надо было
29 SnarkHunter
 
15.11.04
13:56
(26)А как же... И не раз...
30 Den
 
15.11.04
13:56
(29) Да? Что-то я в этой ветке этого не заметил :)
31 Пролд
 
15.11.04
13:57
Нет, он тебя оскорбил. Ты, че не пацан?
32 Den
 
15.11.04
13:59
(31) Не, я пацан, но... Я действительно оказался идиотом в том, что так долго упирался, вместо того, чтобы взять и попробовать. А в остальном, он конечно не прав :) Но он остального и не имел в виду :))) А упирался я здорово :))))))
33 SnarkHunter
 
15.11.04
13:59
(30)Ты вообще мало чего замечаешь... Ибо агрессивен без меры...
34 Бивень
 
15.11.04
14:00
(32) А в чём я был не прав?
35 Den
 
15.11.04
14:01
(33) Ух ты! Вот уж не замечал за собой :) А по поводу агрессии - так это к 427...
36 Den
 
15.11.04
14:01
(34) Ну вот. Теперь ты тупишь :)
37 Den
 
15.11.04
14:03
Ну ладно. Хватит флейма. Пошел я. Обедать. Вот :)
38 Бивень
 
15.11.04
14:05
(36) Да уж ...
Вместо того чтоб спрашивать "в чём я был не прав?", нужно было внимательно перечитать твоё (32), из которого чётко видно, что не прав я "в остальном" ...
Прости уж меня, идиота ещё раз ...
Мы идиоты должны уметь прощать друг друга ...
39 Den
 
15.11.04
14:07
Прощаю :))) И ты меня прости :)))
Ну вот, щас расплачусь :())
40 Пролд
 
15.11.04
14:08
(39) обедать иди
41 SnarkHunter
 
15.11.04
14:08
(35)Со стороны виднее...