Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ЗаполнитьЗначенияСвойств и Структупа

ЗаполнитьЗначенияСвойств и Структупа
Я
   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
(12) "ля структур" же

Список тем форума
Рекламное место пустует  Рекламное место пустует
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.