Имя: Пароль:
1C
1С v8
Установить владельца
0 lamp
 
23.01.13
11:31
В результате кривого переноса в документе Отражение зарплаты в регл учете поле ПодразделениеДт заполнилось подразделениями с пустым реквизитом Владелец. Пытаюсь заполнить этот реквизит:

   Для Каждого ТекущаяСтрока Из ДокументОбъект.ОтражениеВУчете Цикл
       Если ТекущаяСтрока.СчетДт.Код = "20.01" Тогда
           
           // меняем объект в табличной части
           ТекущаяСтрока.ПодразделениеДт.ПолучитьОбъект().Владелец = ОсновнаяОрганизация;

           // для контроля
           Сообщить(ТекущаяСтрока.СчетДт.Код+" "+ТекущаяСтрока.ПодразделениеДт+" "+ТекущаяСтрока.ПодразделениеДт.Владелец)

       КонецЕсли
   КонецЦикла;

Не работает. Что не так?
1 DrShad
 
23.01.13
11:31
а запись объекта где?
2 НафНаф
 
23.01.13
11:32
объект вообще то записывать надо
3 lamp
 
23.01.13
11:32
ну да, конечно, выше стоит

ОсновнаяОрганизация = Справочники.Организации.НайтиПоКоду("000000001");
4 Wobland
 
23.01.13
11:32
(1) а зачем? реквизит заполняется, задача выполнена
5 DrShad
 
23.01.13
11:32
(3) что!?
6 Alex S D
 
23.01.13
11:32
Если ТекущаяСтрока.СчетДт.Код = "20.01" Тогда - это че за лабуда? пиши нормально
7 Godofsin
 
23.01.13
11:33
"ТекущаяСтрока.ПодразделениеДт.ПолучитьОбъект().Владелец = ОсновнаяОрганизация;"
бууэээ...
8 НафНаф
 
23.01.13
11:33
а если в 20 строках будет это подразделение? 20 раз собрался записывать?
9 lefthander
 
23.01.13
11:34
а теперь ниже надо ДокументОбъект.ОтражениеВУчете.Записать();
10 lamp
 
23.01.13
11:34
за кривой код прошу не ругать, с 8кой знаком ещё мало
11 Schwonder
 
23.01.13
11:34
(0) Сегодня только среда!
12 DrShad
 
23.01.13
11:35
(9) а подразделение не нужно записывать!?
13 lefthander
 
23.01.13
11:36
(10) причем здесь кривой код?  После цикла объект надо записать. Иначе в чем прикол менять в нем что то?
14 lamp
 
23.01.13
11:36
Прикол в том, что в отладчике вижу, что ТекущаяСтрока.ПодразделениеДт.Владелец не поменялся
15 DrShad
 
23.01.13
11:36
(13) читай еще раз (0) не после цикла, а после изменения владельца у подразделения
16 НафНаф
 
23.01.13
11:36
(13) ты о чем? он не тот объект меняет
17 НафНаф
 
23.01.13
11:37
(14) естественно, тут же никто еще не написал, что записывать надо объект
18 DrShad
 
23.01.13
11:37
(14) потому что изменил у объекта, а смотришь у ссылки
19 lamp
 
23.01.13
11:38
(17) как?
20 lamp
 
23.01.13
11:38
(18) смотрю у ТекущаяСтрока.ПодразделениеДт.ПолучитьОбъект().Владелец
21 Schwonder
 
23.01.13
11:39
(19) +мильён XD
22 DrShad
 
23.01.13
11:39
об = ТекущаяСтрока.ПодразделениеДт.ПолучитьОбъект();
об.Владелец = Орг;
об.Записать()
23 Schwonder
 
23.01.13
11:39
(19) Позвать программиста.
24 lefthander
 
23.01.13
11:39
Хм... ну да, тупанул. Сорри.
25 lamp
 
23.01.13
11:42
(22) так уже делал. В результате в справочнике Подразделения возникли дублирующие строчки. Не годится
26 Wobland
 
23.01.13
11:43
(25) чо? а программиста всё же позови
27 НафНаф
 
23.01.13
11:45
(25) не верю ))
28 lamp
 
23.01.13
11:48
(27) нужен скриншот? )))

фрагмент

           Объект = ТекущаяСтрока.ПодразделениеДт.ПолучитьОбъект();
           Объект.Владелец = ОсновнаяОрганизация;
           Объект.Записать();

приводит к тому, что в справочнике подразделений возникают вторые строки, к примеру, было Хозслужба (1штука), а стало 2
29 DrShad
 
23.01.13
11:49
(28) наглейшая ложь!!!!!
30 Wobland
 
23.01.13
11:49
(28) нужен. ибо ты врёшь
31 lamp
 
23.01.13
11:50
Ладно, сейчас перезагружу конфу и повторю всё заново с этим фрагментом кода
32 НафНаф
 
23.01.13
11:51
(29)(30) ну а вдруг там при событии на запись идет проверка смены владельца и создание дубля с прежним, ведь может быть?
33 DrShad
 
23.01.13
11:52
(32) ну если кто подшутил так, то возможно
34 НафНаф
 
23.01.13
11:54
(33) ждем "перезагрузки" и свежих лулзов
35 фросия
 
23.01.13
11:56
было однажды такое, сделала так:
Объект.владелец = Владелец;
Объект.ОбменДанными.Загрузка = Истина;// вот без этого не работало
Объект.Записать();
36 Wobland
 
23.01.13
11:57
(35) а дубли были, дубли??
37 DrShad
 
23.01.13
11:58
(35) а все реквизиты, по которым проверка при обычной записи, были заполнены!?
38 фросия
 
23.01.13
11:58
(36)не, дублей вроде не было, просто при попытке поменять владельца изменений никаких  не было
39 фросия
 
23.01.13
11:59
(37) аха.
40 DrShad
 
23.01.13
11:59
(38) врешь
41 Schwonder
 
23.01.13
11:59
Бывает, портвешку стакан вмажешь и двоится начинают элементы справочников))
42 DrShad
 
23.01.13
12:00
(41) с одного-то стакана!? слабовато
43 Schwonder
 
23.01.13
12:01
(42) Ты моего стакана не видел!
44 фросия
 
23.01.13
12:01
(40) не вру
45 DrShad
 
23.01.13
12:02
(44) а я говорю врешь
46 фросия
 
23.01.13
12:03
(45)зачем мне врать?
47 Wobland
 
23.01.13
12:04
(44) просто ты кроме этого добавила ЗавершитьТранзакцию
48 lamp
 
23.01.13
12:06
Справочник исходный
http://savepic.ru/3925077.jpg

Обработка отработала
http://savepic.ru/3907669.jpg

В результате
http://savepic.ru/3919957.jpg
49 lamp
 
23.01.13
12:06
интересно, что у дублей такие же коды
50 Schwonder
 
23.01.13
12:07
Убейте его... он невменяемый!
51 lamp
 
23.01.13
12:07
(32) конфигурация стандартная
52 фросия
 
23.01.13
12:07
(47)нет. про транзакцию ни слова.
53 DrShad
 
23.01.13
12:08
что-то ты в своей обработке намудрил в другом месте
54 НафНаф
 
23.01.13
12:08
ну показывай уже ВСЮ обработку
55 DrShad
 
23.01.13
12:09
либо при повторной загрузке он не находит по полям поиска подразделение и создает новые :))))
56 DrShad
 
23.01.13
12:10
ИМХО нужно не следствие обмена лечить, а причины некорректного обмена и тогда дублей не будет - 146%
57 Schwonder
 
23.01.13
12:10
У него уже бардак в справочнике. Перечитайте (0).
58 DrShad
 
23.01.13
12:11
(57) и что там!?
59 Schwonder
 
23.01.13
12:11
(0) Для начала надо понимать что нужно сделать, а уж потом думать как.
60 НафНаф
 
23.01.13
12:11
так они и были, просто ты смотришь без отбора по владельцу, а вначале с отбором
61 DrShad
 
23.01.13
12:12
(59) он то понял что не так, но решение придумал корявое
62 Schwonder
 
23.01.13
12:12
Короче... Резюмирую.
ЗОВИ ПРОГРАММИСТА!!!111адынадын
63 lamp
 
23.01.13
12:13
(54)
Процедура КнопкаСформироватьНажатие(Кнопка)

   ДокументОбъект = Документ.ПолучитьОбъект();
   ОсновнаяОрганизация = Справочники.Организации.НайтиПоКоду("000000001");

   // перебираем строки документа
   Для Каждого ТекущаяСтрока Из ДокументОбъект.ОтражениеВУчете Цикл
       Если ТекущаяСтрока.СчетДт.Код = "20.01" Тогда

           // меняем объект в табличной части
           Объект = ТекущаяСтрока.ПодразделениеДт.ПолучитьОбъект();
           Объект.Владелец = ОсновнаяОрганизация;
           Объект.Записать();

           // для контроля
           Сообщить(ТекущаяСтрока.СчетДт.Код+" "+ТекущаяСтрока.ПодразделениеДт+" "+ТекущаяСтрока.ПодразделениеДт.Владелец)

       КонецЕсли
   КонецЦикла;

   ДокументОбъект.Записать()

КонецПроцедуры
64 DrShad
 
23.01.13
12:13
(62) нет уж, объясняй что ты в (0) увидел такого, что не увидели все остальные?
65 Wobland
 
23.01.13
12:13
а теперь сделай запрос к справочнику
66 DrShad
 
23.01.13
12:14
(63) этот код не дает задвоения ни при каких раскладах
67 Schwonder
 
23.01.13
12:14
НафНаф тоже увидел. Нормальный одинесник должен уметь понимать идиотов.)
68 Schwonder
 
23.01.13
12:14
(67) к (64)
69 Schwonder
 
23.01.13
12:18
Из (0) понятно, что база не пустая и как-то работала, а значит с подразделениями было всё ништяк. После переноса стало плохо.. Угадайте как переносились данные и что реально происходит в справочнике. А теперь попробуйте совместить то, что хочет ТС с тем что есть и получите удовольствие. XD
70 lamp
 
23.01.13
12:18
(60)

До выполнения обработки
http://savepic.ru/3890260.jpg

После выполнения обработки
http://savepic.ru/3873876.jpg
71 DrShad
 
23.01.13
12:18
(68) ну как бы слив засчитан!
72 DrShad
 
23.01.13
12:19
(69) [что база не пустая и как-то работала, а значит с подразделениями было всё ништяк.]

не было никаких ништяков!
73 DrShad
 
23.01.13
12:20
(70) еще раз - тот код что ты привел не дает такого эффекта
74 lamp
 
23.01.13
12:20
(69) Данные переносились не один месяц. Отвечал за это... кто-то другой. Теперь, типа, я. Может тот, другой, руками перевыбирал подразделения в документе - я проверил, такой метод работает, но это же не нормально... Поэтому решил для начала исправить всё обработкой, а потом уже разбираться с переносом
75 lamp
 
23.01.13
12:21
(73) ...однако я наблюдаю этот эффект и даже скриншоты выложил в (70)
76 DrShad
 
23.01.13
12:22
(75) продолжайте наблюдения!
77 Schwonder
 
23.01.13
12:22
(72) Не слушай ТС, подумай чуть-чуть. И всё поймешь.
78 Wobland
 
23.01.13
12:23
увидели, что дубли без подчинённых элементов? таки кто-то в подписке или в при записи сидит ;))
79 DrShad
 
23.01.13
12:24
(77) я всегда думаю, а вы по ходу под грибами
80 lamp
 
23.01.13
12:25
Да, кажется понял. При переносе элементы-дубли создались, но они не имели подчинения. Запустив обработку я такое подчинение создал, поэтому в справочнике при соответствующем подчинении всё и задвоилось )))
81 DrShad
 
23.01.13
12:25
(80) не задвоилось, а переподчинилось
82 Godofsin
 
23.01.13
12:25
(80) Бинго!
83 lamp
 
23.01.13
12:26
Видимо, нужно сделать по-другому. Проходя по документу, нужно заменить подразделения на одноименные, но находящиеся в нужном подчинении. А эти, неподчиненные, пометить типа на удаление...
84 Godofsin
 
23.01.13
12:27
(83) Нет, выстави всем подчинение, а затем восползуйся поиском и заменой дублирующихся элементов
85 lamp
 
23.01.13
12:30
(84) что за поиск и замена дублирующихся? что-то стандартное? или тоже самому писать придется?
86 Schwonder
 
23.01.13
12:30
(81) Ну чё? Кто теперь под грибами?
87 Godofsin
 
23.01.13
12:36
(85) Стандартное. в сервисе ищи
88 cw014
 
23.01.13
12:38
А после этого человек увольняется, прихожу я, вижу это и понимаю, что жизнь закончилась... Ну за что мне такое...??? :'(
89 Schwonder
 
23.01.13
12:41
(88) Терпение, друг мой. Всё победимо. XD
90 DrShad
 
23.01.13
12:43
убрать дубли и после следующей загрузки повторять?
91 DrShad
 
23.01.13
12:43
+(90) они то появляются при загрузке
92 DrShad
 
23.01.13
12:45
и кто из нас под грибами!?
93 Godofsin
 
23.01.13
12:46
(91) Не, ну конечно обмен править надо
94 Schwonder
 
23.01.13
12:48
(92) Ну точно не я. Я не искал проблему там, где её нет.
95 DrShad
 
23.01.13
12:48
(93) и не обмен, а синхронизировать владельцев
96 DrShad
 
23.01.13
12:48
(94) а она есть!
97 Schwonder
 
23.01.13
12:53
(96) В данных! А не в быдлокоде из (0). Вы вообще читали о чем я написал?
98 DrShad
 
23.01.13
12:54
(97) именно что в данных, но не в подразделениях, а во владельцах нет синхронизации
99 Schwonder
 
23.01.13
12:56
(98) XD Я это с первого поста понял. Зачем Вы мне это рассказываете? о.О
100 DrShad
 
23.01.13
12:57
(99) где-ты именно об этом написал!? :))))
101 Schwonder
 
23.01.13
13:02
(100) Намекал в (69), да Вы не обратили внимание.
102 lamp
 
23.01.13
13:15
Коллеги, всем спасибо.
За участие, за советы и особенно за позитивный настрой )))

Так держать ;)