|
Вынос мозга на простейшей конструкции | ☑ | ||
---|---|---|---|---|
0
tertva_1C
10.04.13
✎
12:12
|
Доброго времени суток, всем...
Жила была переписанная УПП релиза 1.3.26.1, жила не тужила, пока не пришлось её обновлять, до 1.3.36.1, обновилось все замечательно все пользователи довольны, пока не дошёл я до разбора одного запроса от пользователя.. и уперся я в один очень простой код МассивПТ = ПереченьПТ.НайтиСтроки(Новый Структура("Здание", Здание)); в хелпе про метод НайтиСтроки ясно сказано, цитата: "Замечание! Массив хранит ссылки на строки таблицы значений, то есть при изменении строки в таблице, значение в массиве тоже будет измененным." Но как бы не на оборот !!!! просто при удалении данных из МассивПТ в версии 1.3.26.1 данные в ПереченьПТ оставались, а вот после обновления стали удаляться... Вопрос что я делаю не так ? или уже пора просто выспаться.... |
|||
1
Другая
10.04.13
✎
12:14
|
Ну подумай... если массив хранит ссылки.. то изменяя данные в массиве по ссылке ты изменяешь данные в строке
|
|||
2
Maxus43
10.04.13
✎
12:16
|
от версии конфы это не зависит никак, если код не менялся
|
|||
3
tertva_1C
10.04.13
✎
12:16
|
спинным мозгом я это понимаю, но данный код замечательно отрабатывал в течении полугода и перестал работать после обновления базы...
|
|||
4
H A D G E H O G s
10.04.13
✎
12:18
|
Растет молодежь. ** смахнул слезу.
|
|||
5
H A D G E H O G s
10.04.13
✎
12:18
|
(3) Показывайте своего друга.
|
|||
6
tertva_1C
10.04.13
✎
12:19
|
(5)а что именно ?
|
|||
7
zzerro
10.04.13
✎
12:21
|
(6) Что и как удаляшь из массива?
|
|||
8
Зойч
10.04.13
✎
12:23
|
есть метод скопировать, там тоже можно отбор задавать
|
|||
9
vicof
10.04.13
✎
12:25
|
(0) Видимо раньше такие строки просто не находились :)
|
|||
10
tertva_1C
10.04.13
✎
12:26
|
(7) для справки ПереченьПТ имеет несколько уровней вложенности
удаляем вот так Для каждого строкаПТ Из МассивПТ Цикл Для Каждого СтрокаВР Из СтрокаПТ.ВР Цикл Отбор = Новый Структура; Отбор.Вставить("НомерУровня", НомерТекущегоУровня); Отбор.Вставить("ВидУслугиПроизводимой", ВидУслугиВодаНаГВС); Отбор.Вставить("ВидУслугиПотребляемой", УслугаВодаНаГВС); МассивВРВода = СтрокаПТ.ВР.НайтиСтроки(Отбор); Для каждого СтрокаВРВода Из МассивВРВода Цикл если СтрокаВР = СтрокаВРВода тогда СтрокаПТ.ВР.удалить(СтрокаВР); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; |
|||
11
tertva_1C
10.04.13
✎
12:30
|
(9) посмеялся ...
|
|||
12
NWsFF
10.04.13
✎
12:34
|
СтрокаПТ.ВР это что? Это ты уже не с массива удаляешь, а из ТЗ
|
|||
13
NWsFF
10.04.13
✎
12:35
|
Распишу всю структуру данных с типами
|
|||
14
tertva_1C
10.04.13
✎
12:35
|
Для каждого строкаПТ Из МассивПТ Цикл
|
|||
15
tertva_1C
10.04.13
✎
12:36
|
(13) а смысл ?
|
|||
16
tertva_1C
10.04.13
✎
12:43
|
кстати метод Скопировать тоже не спасает...
|
|||
17
Зойч
10.04.13
✎
12:44
|
ты удаляешь, почему не должно удаляться то?
|
|||
18
Рэйв
10.04.13
✎
12:47
|
(11)>>данные в ПереченьПТ оставались
чтото ты путаешь СтрокаПТ.ВР.удалить(СтрокаВР); в любом релизе удаляет строку. |
|||
19
tertva_1C
10.04.13
✎
12:47
|
да потому что мне не надо удалять данные в таблице значений ПереченьПТ поэтому я и копирую данные в МассивПТ...
|
|||
20
Рэйв
10.04.13
✎
12:48
|
только вот удалять строки СтрокаПТ.ВР пв цикле перебора както не очень правильно
|
|||
21
tertva_1C
10.04.13
✎
12:48
|
(18) согласен он и должен удалять, и замечательно её удаляет, дело то не в этом...
|
|||
22
Рэйв
10.04.13
✎
12:50
|
(21)>> поэтому я и копирую данные в МассивПТ...
покажи как ты копируешь |
|||
23
Рэйв
10.04.13
✎
12:51
|
вообще покажи нормально код, а не куски из контекста
|
|||
24
tertva_1C
10.04.13
✎
12:53
|
(22) в (0) все написано...
Функция РасчетТеплаНаГВСОтопление(СтрокаСО) //МассивПТ = ПереченьПТ.НайтиСтроки(Новый Структура("Здание", Здание)); МассивПТ = ПереченьПТ.скопировать(Новый Структура("Здание", Здание)); Для каждого строкаПТ Из МассивПТ Цикл Для Каждого СтрокаВР Из СтрокаПТ.ВР Цикл Отбор = Новый Структура; Отбор.Вставить("НомерУровня", НомерТекущегоУровня); Отбор.Вставить("ВидУслугиПроизводимой", ВидУслугиВодаНаГВС); Отбор.Вставить("ВидУслугиПотребляемой", УслугаВодаНаГВС); МассивВРВода = СтрокаПТ.ВР.НайтиСтроки(Отбор); Для каждого СтрокаВРВода Из МассивВРВода Цикл если СтрокаВР = СтрокаВРВода тогда СтрокаПТ.ВР.удалить(СтрокаВР); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; возврат МассивПТ; КонецФункции Это что то даст ???? |
|||
25
Рэйв
10.04.13
✎
12:57
|
(24)Не понял толком что тебе надо то? Ты удаляешь строки.Хочешь чтобы не удалялись или чего?
|
|||
26
Рэйв
10.04.13
✎
12:59
|
и убери
Для Каждого СтрокаВР Из СтрокаПТ.ВР Цикл Это лишнее |
|||
27
dmpl
10.04.13
✎
13:00
|
(24) Предлагаю переделать все нафиг на запрос и там все скопом считать.
|
|||
28
tertva_1C
10.04.13
✎
13:04
|
ага а заодно переписать ядро программы, она кстати отраслевка и ПереченьПТ является глобальной, и Рэйв прочти внимательно (0) пост...а потом (19).., ладно не обижайтесь, топик можно сливать... займемся переписью кода ...
|
|||
29
NWsFF
10.04.13
✎
13:06
|
(28) Если ты не понимаешь как может помочь решить твой вопрос полное описание структуры твоих данных, то новый код ты напишешь еще хуже прежнего.
|
|||
30
NWsFF
10.04.13
✎
13:09
|
Вангую, что ВР у тебя ссылка на одну и туже структуру данных, и хоть двадцать раз ее скопируй. При обращении через ПР.блалала обращение у тебя будет идти к одной и той же таблице или что там у тебя это...
|
|||
31
tertva_1C
10.04.13
✎
13:11
|
(30) это я и сам понимаю, и уже знаю как это исправить, НО мне не понять как ЭТО работало полгода....
|
|||
32
tertva_1C
10.04.13
✎
13:11
|
причем у 5 человек одновременно....
|
|||
33
NWsFF
10.04.13
✎
13:16
|
ага а заодно переписать ядро программы, она кстати отраслевка и ПереченьПТ является глобальной, и Рэйв прочти внимательно (0) пост...а потом (19).., ладно не обижайтесь, топик можно сливать... займемся переписью кода ...
Исходя из этого, проблему нужно опять таки искать в структурах данных, глобальной переменной ПереченьПТ возможно сменили структуру? |
|||
34
dmpl
10.04.13
✎
13:18
|
(31) А кто сказал что оно работало? Может пользователи вручную били, а теперь им надоело...
|
|||
35
tertva_1C
10.04.13
✎
13:20
|
(34) били ручками расчет по 16 000 контрагентам :) каждый месяц в течении полугода :)))) говорю же забейте на это... уже все исправил....
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |