Добрый вечер, Прошу помочь, я только начал учиться 1С прогр. и для меня все оказалось сложно по сравнению с Паскаль
Не могу понять время жизни массива и Соответствия и могу ли я в них менять значения. Задача такая у меня есть таблица Реализации который я заполняю (товар,тип_платежа,сумм и т.д), потом хочу получить по каждому товару Сумму отдельно по налу безналу и прочее,
Для начало создаю Массив и в него в Соответствие для каждого товара (по одному товару могут быть несколько операции)

```1c
    МассивСумм =Новый Массив;
    Товар = ";
    Для каждого Строка из Объект.Реализация Цикл
    Если Товар <> Строка.Товар Тогда
    Товар = Строка.Товар;

    СуммыТоваров = Новый Соответствие;
    СуммыТоваров.Вставить("Товар",Товар);
    СуммыТоваров.Вставить("ИтогоСуммаНал",0);
    СуммыТоваров.Вставить("ИтогоСуммаБН",0);
    СуммыТоваров.Вставить("ИтогоСуммаБНИ",0);
    СуммыТоваров.Вставить("/ИтогоСуммаСерт",0);
    СуммыТоваров.Вставить("ИтогоСуммаПК",0);
    МассивСумм.Добавить(СуммыТоваров);
    КонецЕсли;
    КонецЦикла;
```

Далее я питаюсь обратится к элементу массива и в нем изменить значения Соответствия по ключу

```1c
    Для каждого Строка из Объект.Реализация Цикл

    Если Товар <> Строка.Товар Тогда
    Для сч=0 по МассивСумм.ВГраница() Цикл
    Если МассивСумм[сч]["Товар"] = Строка.Товар Тогда
    ИндексМассива = сч;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    КонецЕсли;

    Сумма = МассивСумм[ИндексМассива];
    НовСумма = 0;
    Если Строка.ТипПлатежа = "Наличные" Тогда
    НовСумма = Сумма["ИтогоСуммаНал"];
    НовСумма = НовСумма + Строка.Итого;
    Сумма.Вставить("ИтогоСуммаНал",НовСумма);
    //Сумма[ИтогоСуммаНал] = Сумма["ИтогоСуммаНал"] + Строка.Итого;
    ИначеЕсли Строка.ТипПлатежа ="Безналичные" Тогда
    Если Строка.МетодПлатежа = "БезналичныеВКинотеатре" Тогда
    НовСумма = Сумма["ИтогоСуммаБН"];
    НовСумма = НовСумма + Строка.Итого;
    Сумма.Вставить("ИтогоСуммаБН",НовСумма);

    //Сумма["ИтогоСуммаБН"] = Сумма["ИтогоСуммаБН"] + Строка.Итого;
```

Сперва питался как закомментировано, потом написал по другому, но в конце в массиве все равно все суммы нулевые
---
Скорее всего, поля Строка.ТипПлатежа и Строка.МетодПлатежа не строкового типа.
---
1) вместо соответствия используй структуру
2) как уже сказали - используй отладчик.
может код правильный, а проблема с входными данными....
---
Код хоть и кривой, но навскидку должен работать. Задуманное проще решить через отдельную таблицу значений.
```1c
    // создаем служебную таблицу значений для итогов по товарам
    ТипЧисло = Новый ОписаниеТипов("Число");

    ТЗ_Итоги = Новый ТаблицаЗначений;
    ТЗ_Итоги.Колонки.Добавить("Товар");
    ТЗ_Итоги.Колонки.Добавить("ИтогоСуммаНал", ТипЧисло);
    ТЗ_Итоги.Колонки.Добавить("ИтогоСуммаБН", ТипЧисло);
    ТЗ_Итоги.Колонки.Добавить("ИтогоСуммаБНИ", ТипЧисло);
    ТЗ_Итоги.Колонки.Добавить("ИтогоСуммаСерт", ТипЧисло);
    ТЗ_Итоги.Колонки.Добавить("ИтогоСуммаПК", ТипЧисло);

    // обходим коллекцию Реализация и заполняем ТЗ_Итоги
    Для Каждого Строка Из Объект.Реализация Цикл
    НоваяСтрока = ТЗ_Итоги.Добавить();
    НоваяСтрока.Товар = Строка.Товар;
    Если Строка.ТипПлатежа = "Наличные" Тогда
    НоваяСтрока.ИтогоСуммаНал = Строка.Итого;
    ИначеЕсли Строка.ТипПлатежа ="Безналичные" Тогда
    Если Строка.МетодПлатежа = "БезналичныеВКинотеатре" Тогда
    НоваяСтрока.ИтогоСуммаБН = Строка.Итого;
    // и т.д....

    КонецЦикла;

    // сворачиваем итоги
    ТЗ_Итоги.Свернуть("Товар", "ИтогоСуммаНал,ИтогоСуммаБН,ИтогоСуммаБНИ,ИтогоСуммаСерт,ИтогоСуммаПК");
```
---
Буду знать что можно создавать временную таблицу значении

Что значит ТЗ_Итоги.Свернуть - как я предполагаю он группирует по первому переменному и суммирует перечисленные колонки по второму ?
---
группирует по первому переменному и суммирует перечисленные колонки по второму
Да.
Во встроенном синтаксис-помощнике подробно написано про этот метод таблицы значений.
Почти про любой платформенный метод/свойство можно узнать, если в тексте модуля установить курсор в интересующем слове и нажать Ctrl+F1, тут главное понимать к какому объекту относится метод/свойство.
---
ТаблицаЗначений;

Прочитал справку

Я так долго ломал голову как это сделать правильно!
А ларчик так просто открывался!
 мой вариант хоть и рабочый и после вашего замечания переписал и получился довольно компактным, но с Таблицами значении это лучший вариант!

Спасибо большое!
---
все оказалось сложно по сравнению с Паскаль А в паскале ты тоже без отладчика трудился? Ну точки останова там, выполнение по шагам. Или сразу телепатию включал?
---
Я писал, я 1С изучаю всего 2,5 месяца, и не со всеми инструментами знаком, Но учитывая ваш гневный ответ я посмотрю как это надо делать! спасибо!
---
Скорее всего, поля Строка.ТипПлатежа и Строка.МетодПлатежа не строкового типа.
---
Вы имеете ввиду сюда
             Если Строка.ТипПлатежа = "Наличные" Тогда
В место "Наличные" нужно сравнивать с индексам перечисления
---
В отличии от других которые только делают замечание что я полез в бассейн не умея плавать вы кинули мне спасательный круг ))
Спасибо!
Все работает!
---
кинули мне спасательный круг как будто вмешиваться в эволюционный естественный отбор - это что-то хорошее...
---
Не могу не согласится, "Не каждый друг кто из болота тянет",
Но все ровно всем спасибо за участие!
---
Ответить, да в таблице у них тип перечисления
---
То есть круглое с квадратным сравниваешь, и не заморачиваешься. Ну-ну.
---
я думаю и вы не сразу начали отличать сыску от соски)
Мне пока что сложновато привыкнут к объектом в 1с, то что в таблице оперируешь ссылками а не значениям в ячейке
---
то что в таблице оперируешь ссылками а не значениям в ячейке Ссылка - это тоже значение, так то.
---
оперируешь ссылками а не значениямНа паскале, говоришь, программировал... Ну-ну.