powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Работа со структурой в 1С
13 сообщений из 13, страница 1 из 1
Работа со структурой в 1С
    #38328006
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня. как необходимо работать со структурой вложенной в структуру. создаю структуру в качестве ключа заношу период в значение данного ключа сохраняю другую структуру(уточняющие данные по периоду). так вот при попытке получить структуру по периоду у меня выходят данные последнего периода по всем периодам.
пример заполнения:
Код: sql
1.
2.
3.
4.
5.
6.
Движение = Новый Структура;
СтруктураДвижения = Новый Структура;
СтруктураДвижения.Вставить(Ключ1,Значение1);
СтруктураДвижения.Вставить(Ключ2,Значение2);
СтруктураДвижения.Вставить(Ключ3,Значение3);
Движение.Вставить(Период1,СтруктураДвижения);


оформлено в функцию которая возвращает структуру, обрабатываю так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
ДвижениеДС - сюда возвращаю результат выполнения функции;
Для каждого Элемент Из ДвижениеДС Цикл
    СтруктураДвиженияДС=Элемент.Значение;
    Сообщить(Строка(Элемент.Ключ)+"|"+
                  СтруктураДвиженияДС.Ключ1+"|"+
                  СтруктураДвиженияДС.Ключ2+"|"+
                  СтруктураДвиженияДС.Ключ3+"|"+)
КонецЦикла;


так вот результат во всех трех сообщения выводится следующим образом

Период3|Значение3
Период3|Значение3
Период3|Значение3
...
Рейтинг: 0 / 0
Работа со структурой в 1С
    #38328037
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bald56rus,
тот код, который вы написали, не может вывести то что вы приводите в качестве результата.
...
Рейтинг: 0 / 0
Работа со структурой в 1С
    #38328038
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javapeckerbald56rus,
тот код, который вы написали, не может вывести то что вы приводите в качестве результата.
привести конкретный код???а почему такой результат не может быть???
...
Рейтинг: 0 / 0
Работа со структурой в 1С
    #38328042
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bald56rus,
приведите
...
Рейтинг: 0 / 0
Работа со структурой в 1С
    #38328047
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javapecker,
вот функция которая возвращает структуру
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Функция ПолучитьДвижениеДС()
    ДвижениеДС = Новый Структура;
	СтруктураДвижения = Новый Структура;
	ДеревоЗначений = РеквизитФормыВЗначение("ВзаиморасчетыУслугПоМесяцам", Тип("ДеревоЗначений"));
	Табл = ВыгрузитьДеревоЗначенийВТаблицуЗначений(ДеревоЗначений);
	Табл.Сортировать("Месяц Возр");
	Для Каждого СтрокаТабл Из Табл Цикл 
		Сумма = 0;ТекстСообщения="";
		Если СтрокаТабл.МесяцУслуга = Справочники.УслугиНаселению.ГазоснабжениеПрироднымГазом Тогда
			СтруктураДвижения.Очистить();
			СтруктураДвижения.Вставить("КоличествоПроживающих",КоличествоПроживающихАбонента(СтрокаТабл.Месяц));
			СтруктураДвижения.Вставить("НачальноеСальдо",СтрокаТабл.НачальноеСальдо);
			СтруктураДвижения.Вставить("НачисленоОбъем",СтрокаТабл.НачисленоОбъем);
			СтруктураДвижения.Вставить("НачисленоСумма",СтрокаТабл.НачисленоСумма); 
			СтруктураДвижения.Вставить("Оплачено",СтрокаТабл.ОплаченоСумма-СтрокаТабл.СуммаДЗ);
			СтруктураДвижения.Вставить("КонечноеСальдо",СтрокаТабл.КонечноеСальдо); 
			ДвижениеДС.Вставить(Формат(СтрокаТабл.Месяц,"ДФ='MMММ_yyyy'; ДЛФ=DD"),СтруктураДвижения);
			//Для каждого Элемент Из СтруктураДвижения Цикл
			//	Сообщить(Элемент.Ключ + ": " + Элемент.Значение);							
			//КонецЦикла; 
			Сумма = СтрокаТабл.НачальноеСальдо+СтрокаТабл.НачисленоСумма-(СтрокаТабл.ОплаченоСумма-СтрокаТабл.СуммаДЗ);
			Если Сумма<>СтрокаТабл.КонечноеСальдо Тогда
				ТекстСообщения="Конечное сальдо не равно сумме движений по периоду: "+Формат(СтрокаТабл.Месяц,"ДФ='MMММ yyyy'; ДЛФ=DD");
				ЛксСообщитьСУчетомМодальности(ТекстСообщения);
 			КонецЕсли; 
		КонецЕсли; 
	КонецЦикла;
	//Заполнить ДвижениеДС
	Возврат ДвижениеДС;
КонецФункции // ПолучитьДвижениеДС()


а вот так обрабатываю результат
Код: sql
1.
2.
3.
4.
5.
6.
7.
Для каждого Элемент Из Движение Цикл
		Сообщить(Элемент.Ключ + ": " + Элемент.Значение);
		СтруктураДвижения = Элемент.Значение;
		Для каждого Элемент Из СтруктураДвижения Цикл
			Сообщить(Элемент.Ключ + ": " + Элемент.Значение);							
		КонецЦикла;
	КонецЦикла;
...
Рейтинг: 0 / 0
Работа со структурой в 1С
    #38328089
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bald56rus,
ну видите, в первом посте у вас все правильно, вы исключили важную часть из конкретного кода. Структура - это объект, вы создаете структуру "СтруктураДвижения" один раз перед циклом. А в цикле просто несколько раз меняете ее значения. Все элементы внешней структуры "ДвиженияДС" поэтому будут содержать ссылку на одну и ту же структуру. А эта единственная структура будет содержать значения, полученные на последней итерации цикла. Поэтому вместо вот этой строки
Код: java
1.
СтруктураДвижения.Очистить();


создавайте новую структуру в цикле.
...
Рейтинг: 0 / 0
Работа со структурой в 1С
    #38328102
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bald56rus,
вот маленький пример
Код: java
1.
2.
3.
4.
5.
С1 = новый структура("а",1);
С2 = новый структура("а",С1);
сообщить(С2.а.а) ;
С1.а = 0;
сообщить(С2.а.а);
...
Рейтинг: 0 / 0
Работа со структурой в 1С
    #38328267
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javapeckerbald56rus,
ну видите, в первом посте у вас все правильно, вы исключили важную часть из конкретного кода. Структура - это объект, вы создаете структуру "СтруктураДвижения" один раз перед циклом. А в цикле просто несколько раз меняете ее значения. Все элементы внешней структуры "ДвиженияДС" поэтому будут содержать ссылку на одну и ту же структуру. А эта единственная структура будет содержать значения, полученные на последней итерации цикла. Поэтому вместо вот этой строки
Код: java
1.
СтруктураДвижения.Очистить();


создавайте новую структуру в цикле.

Спасибо Вам большое.всю голову поломал а косяка не увидел
...
Рейтинг: 0 / 0
Работа со структурой в 1С
    #38328380
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДвижениеДС.Вставить(Формат(СтрокаТабл.Месяц,"ДФ='MMММ_yyyy'; ДЛФ=DD"),СтруктураДвижения);

эпично... в отчете будет крута в отборах смотреться...
...
Рейтинг: 0 / 0
Работа со структурой в 1С
    #38328547
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Последний выдох ГПЖДвижениеДС.Вставить(Формат(СтрокаТабл.Месяц,"ДФ='MMММ_yyyy'; ДЛФ=DD"),СтруктураДвижения);

эпично... в отчете будет крута в отборах смотреться...

в отчете выведется в формате необходимом мне:) например Март_2012(что подразумевает учетный период) а в СтруктуреДвижения хранятся доп. данные по данному периоду.Тему можно закрывать.
...
Рейтинг: 0 / 0
Работа со структурой в 1С
    #38328994
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bald56rusПоследний выдох ГПЖДвижениеДС.Вставить(Формат(СтрокаТабл.Месяц,"ДФ='MMММ_yyyy'; ДЛФ=DD"),СтруктураДвижения);

эпично... в отчете будет крута в отборах смотреться...

в отчете выведется в формате необходимом мне:) например Март_2012(что подразумевает учетный период) а в СтруктуреДвижения хранятся доп. данные по данному периоду.Тему можно закрывать.А зачем хранить 2 раза? Почему в отчете нельзя при выводе делать что хотите?

ps А если завтра надо будет добавить ДД - будете лазить в код отчета и исправлять?...
...
Рейтинг: 0 / 0
Работа со структурой в 1С
    #38329020
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bald56rusПоследний выдох ГПЖДвижениеДС.Вставить(Формат(СтрокаТабл.Месяц,"ДФ='MMММ_yyyy'; ДЛФ=DD"),СтруктураДвижения);

эпично... в отчете будет крута в отборах смотреться...

в отчете выведется в формате необходимом мне:) например Март_2012(что подразумевает учетный период) а в СтруктуреДвижения хранятся доп. данные по данному периоду.Тему можно закрывать.

пересадите руки с ж.пы ближе к голове...
...
Рейтинг: 0 / 0
Работа со структурой в 1С
    #38329213
bald56rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Последний выдох ГПЖпересадите руки с ж.пы ближе к голове...
не зная всего может не стоит давать таких громких коментариев? а по существу в качестве отчета используется "вордовский шаблон" если будет необходимо то пользователь сам поправит так как необходимо.структуру я использую как массив для передачи данных с сервера на клиент(данные хранятся в ТаблицеЗначений) а "вордовский шаблон" заполняется на клиенте.

P.S.: сделал как смог.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Работа со структурой в 1С
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]