|
ЗаполнитьЗначенияСвойств и Структупа
|
Я
|
|
plnz 17.05.20 - 15:07 | Есть код:
КомандыПечатиСчетаНаОплату = КомандыПечати.НайтиСтроки(Новый Структура("МенеджерПечати", "Обработка.ПечатьСчетовНаОплату"));
Для каждого КомандаПечати Из КомандыПечатиСчетаНаОплату Цикл
НоваяКоманда = КомандыПечати.Добавить();
ЗаполнитьЗначенияСвойств(НоваяКоманда, КомандаПечати);
НоваяКоманда.Представление = НоваяКоманда.Представление + " на фирменном бланке";
НоваяКоманда.ДополнительныеПараметры.Вставить("НаФирменномБланке", Истина);
КонецЦикла;
Вопрос вот в чем. Вот эта часть кода
НоваяКоманда.ДополнительныеПараметры.Вставить("НаФирменномБланке", Истина);
должна добавлять значение в структуру только в создаваемую вновь строку таб знач. НоваяКоманда. Она же добавляется и в строку КомандаПечати - в исходную строку. Это нормальное поведение? Или я что-то упустил? |
Aleksey 1 - 17.05.20 - 15:09 | не понял вопрос
НоваяКоманда - это и есть строка из КомандыПечати.
Естественно меняя НоваяКоманда меняется и содержимое КомандаПечати.
Или в чем подвох? |
plnz 2 - 17.05.20 - 15:12 | Да, она создается копирование найденной.
То есть мне нужно пробежаться по текущим командам, найти все счета на оплату и добавить по ним новые команды печати, но уже с дополнительным параметром НаФирменномБланке = Истина.
Так вот я их нахожу, добавляю новую команду, заполняю значениями найденной, и в новую команду хочу добавить дополнительный параметр в структуру. А Он добавляется и в новую и в исходную(существующую)
|
plnz 3 - 17.05.20 - 15:13 | пардон.... опечатался в ( 1) |
plnz 4 - 17.05.20 - 15:15 | хотя нет... все правильно
То есть добавляя значение для НоваяКоманда, оно же добавляется и в КамандаПечати
|
plnz 5 - 17.05.20 - 15:41 | Оказывается это нормальное поведение ля структур. Их нельзя просто копировать... Сделал так.
ЗаполнитьЗначенияСвойств(НоваяКоманда, КомандаПечати,,"ДополнительныеПараметры");
НоваяКоманда.Представление = НоваяКоманда.Представление + " на фирменном бланке";
Для каждого КлючИЗначение Из КомандаПечати.ДополнительныеПараметры Цикл
НоваяКоманда.ДополнительныеПараметры.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
НоваяКоманда.ДополнительныеПараметры.Вставить("НаФирменномБланке", Истина); |
Cthulhu 6 - 17.05.20 - 16:00 | КопияИсходнойСтруктуры = ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(ИсходнаяСтруктура));
|
novichok79 7 - 17.05.20 - 16:14 | имхо, правильнее будет создавать на основе фикс. струрктуры, полученной из исходной, т. к. ЗначениеИзСтрокиВнутр оставили для совместимости с 7.7
|
lodger 8 - 17.05.20 - 16:21 | ( 5) человек поевших щщи на языках Си сразу понял бы, что дело в указателях. и что некоторые приравнивания, заполнения и "передачи" параметров просто копируют указатель, а не значение. |
mistеr 9 - 17.05.20 - 17:28 | ( 8) Да, в данном случае нужна deep copy. Где-то в общих модулях есть функция, которая это делает. |
palsergeich 10 - 17.05.20 - 18:51 | ( 9) ОбщегоНазначений.СкопироватьРекуривно
Вроде так |
Antonsis 11 - 17.05.20 - 19:46 | Даже не знаю, что сказать... с такой проблемой в первый раз сталкиваюсь. Ждем эксперта)
|
hhhh 12 - 17.05.20 - 20:02 | прям книга перлов отдыхает: рекуривно, структупа.
|
acht 13 - 17.05.20 - 20:07 | |
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать
новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более
2000 человек.