Загрузка данных
&НаСервере
Процедура Итоги(Элемент)
// Период документа
НачалоМесяца = НачалоМесяца(ЭтотОбъект.Месяц);
КонецМесяца = КонецМесяца(ЭтотОбъект.Месяц);
// Дата "на начало" — последний день перед началом месяца
ДатаНачДляОст = НачалоМесяца - 1;
// Фильтр по сотруднику
ФИО = ЭтотОбъект.Сотрудник;
ЭтотОбъект.ИзлишкиИ = ЭтотОбъект.ТаблицаИзлишки.Итог("Излишки");
ЭтотОбъект.НедостачаИтог = ЭтотОбъект.ТаблицаНедостача.Итог("Недостача");
// -------------------- Запрос остатков на конец и на начало --------------------
// Конец месяца
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Остатки.ВидБилета КАК ВидБилета,
| Остатки.Маршрут КАК Маршрут,
| Остатки.СуммаОстаток КАК Сумма,
| Остатки.КоличествоОстаток КАК Количество,
| Остатки.ЦенаА КАК Цена
|ИЗ
| РегистрНакопления.Остатки.Остатки(&ДатаОст, ) КАК Остатки
|ГДЕ
| Остатки.ФИО = &ФИО";
Запрос.УстановитьПараметр("ДатаОст", КонецМесяца);
Запрос.УстановитьПараметр("ФИО", ФИО);
Рез = Запрос.Выполнить().Выбрать();
МассКонец = Новый Массив;
Пока Рез.Следующий() Цикл
МассКонец.Добавить(Новый Структура("ВидБилета,Количество,Маршрут,Сумма,Цена", Рез.ВидБилета, Рез.Количество,Рез.Маршрут, Рез.Сумма,Рез.Цена));
КонецЦикла;
// Начало (предыдущий момент)
Запрос1 = Новый Запрос;
Запрос1.Текст = Запрос.Текст;
Запрос1.УстановитьПараметр("ДатаОст", ДатаНачДляОст);
Запрос1.УстановитьПараметр("ФИО", ФИО);
Рез1 = Запрос1.Выполнить().Выбрать();
МассНачало = Новый Массив;
Пока Рез1.Следующий() Цикл
МассНачало.Добавить(Новый Структура("ВидБилета,Количество,Маршрут,Сумма,Цена", Рез1.ВидБилета, Рез1.Количество,Рез1.Маршрут, Рез1.Сумма, Рез1.Цена));
КонецЦикла;
// -------------------- Тарифы из регистра сведений --------------------
ЗапросВидБилета = Новый Запрос;
ЗапросVТекст =
"ВЫБРАТЬ
| Тарифы.ТарифЛьготный КАК ТарифЛьготный,
| Тарифы.ТарифОсновной КАК ТарифОсновной,
| Тарифы.Маршрут КАК Маршрут,
| Тарифы.Период КАК Период
|ИЗ
| РегистрСведений.Тарифы КАК Тарифы
|ГДЕ
| Тарифы.Период <= &ДатС
|УПОРЯДОЧИТЬ ПО
| Тарифы.Период УБЫВ,
| Тарифы.Маршрут УБЫВ";
ЗапросВидБилета.Текст = ЗапросVТекст;
ЗапросВидБилета.УстановитьПараметр("ДатС", НачалоМесяца);
РезТариф = ЗапросВидБилета.Выполнить().Выбрать();
ТарифПоМаршруту = Новый Соответствие;
Пока РезТариф.Следующий() Цикл
КлючМаршрута = СокрЛП("" + РезТариф.Маршрут);
Попытка
TmpМаршрут = ТарифПоМаршруту.Получить(КлючМаршрута);
Исключение
TmpМаршрут = Неопределено;
КонецПопытки;
Если TmpМаршрут = Неопределено Тогда
ТарифПоМаршруту.Вставить(КлючМаршрута, Новый Структура("Основной,Льготный", РезТариф.ТарифОсновной, РезТариф.ТарифЛьготный));
КонецЕсли;
КонецЦикла;
// -------------------- Формируем уникальные цены (Только из тарифов) --------------------
УникОбычные = Новый Массив;
УникЛьготные = Новый Массив;
Для Каждого Пара Из ТарифПоМаршруту Цикл
// нормализуем основной тариф к числу (без дробной части)
О = Неопределено;
Если ЗначениеЗаполнено(Пара.Значение.Основной) Тогда
Попытка
О = Число(Пара.Значение.Основной);
Исключение
О = Неопределено;
КонецПопытки;
Если О <> Неопределено Тогда
О = Окр(О,0);
Если УникОбычные.Найти(О) = Неопределено Тогда УникОбычные.Добавить(О); КонецЕсли;
КонецЕсли;
КонецЕсли;
// нормализуем льготный тариф
Л = Неопределено;
Если ЗначениеЗаполнено(Пара.Значение.Льготный) Тогда
Попытка
Л = Число(Пара.Значение.Льготный);
Исключение
Л = Неопределено;
КонецПопытки;
Если Л <> Неопределено Тогда
Л = Окр(Л,0);
Если УникЛьготные.Найти(Л) = Неопределено Тогда УникЛьготные.Добавить(Л); КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// -------------------- Сортируем по убыванию (числа — всё корректно) --------------------
СортОбычные = Новый Массив;
Пока УникОбычные.Количество() > 0 Цикл
МаксИндекс = 0; МаксЗнач = УникОбычные[0];
Для i = 1 По УникОбычные.Количество()-1 Цикл
Если УникОбычные[i] > МаксЗнач Тогда МаксЗнач = УникОбычные[i]; МаксИндекс = i; КонецЕсли;
КонецЦикла;
СортОбычные.Добавить(МаксЗнач);
УникОбычные.Удалить(МаксИндекс);
КонецЦикла;
СортЛьготные = Новый Массив;
Пока УникЛьготные.Количество() > 0 Цикл
МаксИндекс = 0; МаксЗнач = УникЛьготные[0];
Для i = 1 По УникЛьготные.Количество()-1 Цикл
Если УникЛьготные[i] > МаксЗнач Тогда МаксЗнач = УникЛьготные[i]; МаксИндекс = i; КонецЕсли;
КонецЦикла;
СортЛьготные.Добавить(МаксЗнач);
УникЛьготные.Удалить(МаксИндекс);
КонецЦикла;
// -------------------- Маппинг цена -> индекс (ключ - ЧИСЛО) --------------------
МапПрайсОбычные = Новый Соответствие;
Для i = 0 По СортОбычные.Количество()-1 Цикл
Попытка
Прайс = Число(СортОбычные[i]);
Исключение
Продолжить;
КонецПопытки;
Прайс = Окр(Прайс,0);
Попытка
МапПрайсОбычные.Вставить(Прайс, i);
Исключение
КонецПопытки;
КонецЦикла;
МапПрайсЛьготные = Новый Соответствие;
Для i = 0 По СортЛьготные.Количество()-1 Цикл
Попытка
Прайс = Число(СортЛьготные[i]);
Исключение
Продолжить;
КонецПопытки;
Прайс = Окр(Прайс,0);
Попытка
МапПрайсЛьготные.Вставить(Прайс, i);
Исключение
КонецПопытки;
КонецЦикла;
//------------------------------ПОЛУЧЕНИЕ-----------------------------------
// -------------------- Формируем массив из ТаблицаПолучение -----
МассивПолучИтог = Новый Массив;
Для Каждого Стр Из ЭтотОбъект.ТаблицаПолучение Цикл
// добавляем только необходимые поля — вид, цена, кол-во, сумма
МассивПолучИтог.Добавить(Новый Структура("ВидБилета,Цена,Количество,Сумма",
Стр.ВидБилета,
?(ЗначениеЗаполнено(Стр.Цена), Стр.Цена, Неопределено),
?(ЗначениеЗаполнено(Стр.Количество), Стр.Количество, 0),
?(ЗначениеЗаполнено(Стр.Сумма), Стр.Сумма, 0),
));
КонецЦикла;
// --- Инициализация переменных получения ---
ПолучениеОб = 0; ПолучениеОб2 = 0; ПолучениеОб3= 0; ПолучениеОб4= 0; ПолучениеОб5= 0;
ПолучениеСуммаО = 0; ПолучениеСуммаО2 = 0; ПолучениеСуммаО3 = 0; ПолучениеСуммаО4 = 0; ПолучениеСуммаО5 = 0;
ПолучениеРег = 0; ПолучениеРег2 = 0; ПолучениеРег3= 0;
ПолучениеСуммаР= 0; ПолучениеСуммаР2= 0; ПолучениеСуммаР3 = 0;
// -------------------- Обработка массива Получения (распределение по корзинам) ----------
Для Каждого СтрИт Из МассивПолучИтог Цикл
// нормализуем цену (может быть строкой или числом)
Если СтрИт.Цена = Неопределено Тогда
Продолжить;
КонецЕсли;
// если цена уже число — оставляем, иначе чистим строку
ТипЦена = ТипЗнч(СтрИт.Цена);
Если ТипЦена = Тип("Число") Или ТипЦена = Тип("Дробное") Тогда
ЦенаЧ = Окр(Число(СтрИт.Цена), 0);
Иначе
ЦенаСтр = Строка(СтрИт.Цена);
ЦенаСтр = СтрЗаменить(ЦенаСтр, " ", "");
ЦенаСтр = СтрЗаменить(ЦенаСтр, ",", ".");
Попытка
ЦенаЧ = Окр(Число(ЦенаСтр), 0);
Исключение
Продолжить;
КонецПопытки;
КонецЕсли;
// получаем индекс корзины через мап или fallback поиск
Инд = Неопределено;
Если СтрИт.ВидБилета = "О" Тогда
Попытка
Инд = МапПрайсОбычные.Получить(ЦенаЧ);
Исключение
Инд = Неопределено;
КонецПопытки;
Если Инд = Неопределено Тогда
Для j = 0 По СортОбычные.Количество()-1 Цикл
Если СортОбычные[j] = ЦенаЧ Тогда
Инд = j; Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Инд = Неопределено Тогда
Если СортОбычные.Количество() > 0 Тогда
Инд = СортОбычные.Количество() - 1;
Иначе
Инд = -1;
КонецЕсли;
КонецЕсли;
Если Инд >= 0 Тогда
// количество
Если ЗначениеЗаполнено(СтрИт.Количество) Тогда
Если Инд = 0 Тогда ПолучениеОб = ПолучениеОб + СтрИт.Количество; КонецЕсли;
Если Инд = 1 Тогда ПолучениеОб2 = ПолучениеОб2 + СтрИт.Количество; КонецЕсли;
Если Инд = 2 Тогда ПолучениеОб3 = ПолучениеОб3 + СтрИт.Количество; КонецЕсли;
Если Инд = 3 Тогда ПолучениеОб4 = ПолучениеОб4 + СтрИт.Количество; КонецЕсли;
Если Инд >= 4 Тогда ПолучениеОб5 = ПолучениеОб5 + СтрИт.Количество; КонецЕсли;
КонецЕсли;
// сумма
Если ЗначениеЗаполнено(СтрИт.Сумма) Тогда
Если Инд = 0 Тогда ПолучениеСуммаО = ПолучениеСуммаО + СтрИт.Сумма; КонецЕсли;
Если Инд = 1 Тогда ПолучениеСуммаО2 = ПолучениеСуммаО2 + СтрИт.Сумма; КонецЕсли;
Если Инд = 2 Тогда ПолучениеСуммаО3 = ПолучениеСуммаО3 + СтрИт.Сумма; КонецЕсли;
Если Инд = 3 Тогда ПолучениеСуммаО4 = ПолучениеСуммаО4 + СтрИт.Сумма; КонецЕсли;
Если Инд >= 4 Тогда ПолучениеСуммаО5 = ПолучениеСуммаО5 + СтрИт.Сумма; КонецЕсли;
КонецЕсли;
КонецЕсли;
ИначеЕсли СтрИт.ВидБилета = "Л" Тогда
Попытка
Инд = МапПрайсЛьготные.Получить(ЦенаЧ);
Исключение
Инд = Неопределено;
КонецПопытки;
Если Инд = Неопределено Тогда
Для j = 0 По СортЛьготные.Количество()-1 Цикл
Если СортЛьготные[j] = ЦенаЧ Тогда
Инд = j; Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Инд = Неопределено Тогда
Если СортЛьготные.Количество() > 0 Тогда
Инд = СортЛьготные.Количество() - 1;
Иначе
Инд = -1;
КонецЕсли;
КонецЕсли;
Если Инд >= 0 Тогда
Если ЗначениеЗаполнено(СтрИт.Количество) Тогда
Если Инд = 0 Тогда ПолучениеРег = ПолучениеРег + СтрИт.Количество; КонецЕсли;
Если Инд = 1 Тогда ПолучениеРег2 = ПолучениеРег2 + СтрИт.Количество; КонецЕсли;
Если Инд = 2 Тогда ПолучениеРег3 = ПолучениеРег3 + СтрИт.Количество; КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(СтрИт.Сумма) Тогда
Если Инд = 0 Тогда ПолучениеСуммаР = ПолучениеСуммаР + СтрИт.Сумма; КонецЕсли;
Если Инд = 1 Тогда ПолучениеСуммаР2 = ПолучениеСуммаР2 + СтрИт.Сумма; КонецЕсли;
Если Инд = 2 Тогда ПолучениеСуммаР3 = ПолучениеСуммаР3 + СтрИт.Сумма; КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// --- записываем обратно в реквизиты формы (если надо) ---
ЭтотОбъект.ПолучениеОб = ПолучениеОб;
ЭтотОбъект.ПолучениеОб2 = ПолучениеОб2;
ЭтотОбъект.ПолучениеОб3 = ПолучениеОб3;
ЭтотОбъект.ПолучениеОб4 = ПолучениеОб4;
ЭтотОбъект.ПолучениеОб5 = ПолучениеОб5;
ЭтотОбъект.ПолучениеСуммаО = ПолучениеСуммаО;
ЭтотОбъект.ПолучениеСуммаО2 = ПолучениеСуммаО2;
ЭтотОбъект.ПолучениеСуммаО3 = ПолучениеСуммаО3;
ЭтотОбъект.ПолучениеСуммаО4 = ПолучениеСуммаО4;
ЭтотОбъект.ПолучениеСуммаО5 = ПолучениеСуммаО5;
ЭтотОбъект.ПолучениеРег = ПолучениеРег;
ЭтотОбъект.ПолучениеРег2 = ПолучениеРег2;
ЭтотОбъект.ПолучениеРег3 = ПолучениеРег3;
ЭтотОбъект.ПолучениеСуммаР = ПолучениеСуммаР;
ЭтотОбъект.ПолучениеСуммаР2 = ПолучениеСуммаР2;
ЭтотОбъект.ПолучениеСуммаР3 = ПолучениеСуммаР3;
//------------------------------РЕАЛИЗАЦИЯ-----------------------------------
// -------------------- Формируем массив из ТаблицаПолучение -----
МассивПолучИтог = Новый Массив;
Для Каждого Стр Из ЭтотОбъект.ТаблицаРеализация Цикл
// добавляем только необходимые поля — вид, цена, кол-во, сумма, маршрут (если нужен)
МассивПолучИтог.Добавить(Новый Структура("ВидБилета,Цена,Количество,Сумма",
Стр.ВидБилета,
?(ЗначениеЗаполнено(Стр.Цена), Стр.Цена, Неопределено),
?(ЗначениеЗаполнено(Стр.Количество), Стр.Количество, 0),
?(ЗначениеЗаполнено(Стр.Сумма), Стр.Сумма, 0),
));
КонецЦикла;
// --- Инициализация переменных получения (на всякий случай повторим, если их ещё нет) ---
РеализацияОб = 0; РеализацияОб2 = 0; РеализацияОб3= 0; РеализацияОб4= 0; РеализацияОб5= 0;
РеализацияСуммаО = 0; РеализацияСуммаО2 = 0; РеализацияСуммаО3 = 0; РеализацияСуммаО4 = 0; РеализацияСуммаО5 = 0;
РеализацияРег = 0; РеализацияРег2 = 0; РеализацияРег3= 0;
РеализацияСуммаР= 0; РеализацияСуммаР2= 0; РеализацияСуммаР3 = 0;
// -------------------- Обработка массива (распределение по корзинам) ----------
Для Каждого СтрИт Из МассивПолучИтог Цикл
// нормализуем цену (может быть строкой или числом)
Если СтрИт.Цена = Неопределено Тогда
Продолжить;
КонецЕсли;
// если цена уже число — оставляем, иначе чистим строку
ТипЦена = ТипЗнч(СтрИт.Цена);
Если ТипЦена = Тип("Число") Или ТипЦена = Тип("Дробное") Тогда
ЦенаЧ = Окр(Число(СтрИт.Цена), 0);
Иначе
ЦенаСтр = Строка(СтрИт.Цена);
ЦенаСтр = СтрЗаменить(ЦенаСтр, " ", "");
ЦенаСтр = СтрЗаменить(ЦенаСтр, ",", ".");
Попытка
ЦенаЧ = Окр(Число(ЦенаСтр), 0);
Исключение
Продолжить;
КонецПопытки;
КонецЕсли;
// получаем индекс корзины через мап или fallback поиск
Инд = Неопределено;
Если СтрИт.ВидБилета = "О" Тогда
Попытка
Инд = МапПрайсОбычные.Получить(ЦенаЧ);
Исключение
Инд = Неопределено;
КонецПопытки;
Если Инд = Неопределено Тогда
Для j = 0 По СортОбычные.Количество()-1 Цикл
Если СортОбычные[j] = ЦенаЧ Тогда
Инд = j; Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Инд = Неопределено Тогда
Если СортОбычные.Количество() > 0 Тогда
Инд = СортОбычные.Количество() - 1;
Иначе
Инд = -1;
КонецЕсли;
КонецЕсли;
Если Инд >= 0 Тогда
// количество
Если ЗначениеЗаполнено(СтрИт.Количество) Тогда
Если Инд = 0 Тогда РеализацияОб = РеализацияОб + СтрИт.Количество; КонецЕсли;
Если Инд = 1 Тогда РеализацияОб2 = РеализацияОб2 + СтрИт.Количество; КонецЕсли;
Если Инд = 2 Тогда РеализацияОб3 = РеализацияОб3 + СтрИт.Количество; КонецЕсли;
Если Инд = 3 Тогда РеализацияОб4 = РеализацияОб4 + СтрИт.Количество; КонецЕсли;
Если Инд >= 4 Тогда РеализацияОб5 = РеализацияОб5 + СтрИт.Количество; КонецЕсли;
КонецЕсли;
// сумма
Если ЗначениеЗаполнено(СтрИт.Сумма) Тогда
Если Инд = 0 Тогда РеализацияСуммаО = РеализацияСуммаО + СтрИт.Сумма; КонецЕсли;
Если Инд = 1 Тогда РеализацияСуммаО2 = РеализацияСуммаО2 + СтрИт.Сумма; КонецЕсли;
Если Инд = 2 Тогда РеализацияСуммаО3 = РеализацияСуммаО3 + СтрИт.Сумма; КонецЕсли;
Если Инд = 3 Тогда РеализацияСуммаО4 = РеализацияСуммаО4 + СтрИт.Сумма; КонецЕсли;
Если Инд >= 4 Тогда РеализацияСуммаО5 = РеализацияСуммаО5 + СтрИт.Сумма; КонецЕсли;
КонецЕсли;
КонецЕсли;
ИначеЕсли СтрИт.ВидБилета = "Л" Тогда
Попытка
Инд = МапПрайсЛьготные.Получить(ЦенаЧ);
Исключение
Инд = Неопределено;
КонецПопытки;
Если Инд = Неопределено Тогда
Для j = 0 По СортЛьготные.Количество()-1 Цикл
Если СортЛьготные[j] = ЦенаЧ Тогда
Инд = j; Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Инд = Неопределено Тогда
Если СортЛьготные.Количество() > 0 Тогда
Инд = СортЛьготные.Количество() - 1;
Иначе
Инд = -1;
КонецЕсли;
КонецЕсли;
Если Инд >= 0 Тогда
Если ЗначениеЗаполнено(СтрИт.Количество) Тогда
Если Инд = 0 Тогда РеализацияРег = РеализацияРег + СтрИт.Количество; КонецЕсли;
Если Инд = 1 Тогда РеализацияРег2 = РеализацияРег2 + СтрИт.Количество; КонецЕсли;
Если Инд >= 2 Тогда РеализацияРег3 = РеализацияРег3 + СтрИт.Количество; КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(СтрИт.Сумма) Тогда
Если Инд = 0 Тогда РеализацияСуммаР = РеализацияСуммаР + СтрИт.Сумма; КонецЕсли;
Если Инд = 1 Тогда РеализацияСуммаР2 = РеализацияСуммаР2 + СтрИт.Сумма; КонецЕсли;
Если Инд >= 2 Тогда РеализацияСуммаР3 = РеализацияСуммаР3 + СтрИт.Сумма; КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// --- записываем обратно в реквизиты формы (если надо) ---
ЭтотОбъект.РеализацияОб = РеализацияОб;
ЭтотОбъект.РеализацияОб2 = РеализацияОб2;
ЭтотОбъект.РеализацияОб3 = РеализацияОб3;
ЭтотОбъект.РеализацияОб4 = РеализацияОб4;
ЭтотОбъект.РеализацияОб5 = РеализацияОб5;
ЭтотОбъект.РеализацияСуммаО = РеализацияСуммаО;
ЭтотОбъект.РеализацияСуммаО2 = РеализацияСуммаО2;
ЭтотОбъект.РеализацияСуммаО3 = РеализацияСуммаО3;
ЭтотОбъект.РеализацияСуммаО4 = РеализацияСуммаО4;
ЭтотОбъект.РеализацияСуммаО5 = РеализацияСуммаО5;
ЭтотОбъект.РеализацияРег = РеализацияРег;
ЭтотОбъект.РеализацияРег2 = РеализацияРег2;
ЭтотОбъект.РеализацияРег3 = РеализацияРег3;
ЭтотОбъект.РеализацияСуммаР = РеализацияСуммаР;
ЭтотОбъект.РеализацияСуммаР2 = РеализацияСуммаР2;
ЭтотОбъект.РеализацияСуммаР3 = РеализацияСуммаР3;
//------------------------------ВОЗВРАТ-----------------------------------
// -------------------- Формируем массив из ТаблицаПолучение -----
МассивПолучИтог = Новый Массив;
Для Каждого Стр Из ЭтотОбъект.ТаблицаВозврат Цикл
// добавляем только необходимые поля — вид, цена, кол-во, сумма, маршрут (если нужен)
МассивПолучИтог.Добавить(Новый Структура("ВидБилета,Цена,Количество,Сумма",
Стр.ВидБилета,
?(ЗначениеЗаполнено(Стр.Цена), Стр.Цена, Неопределено),
?(ЗначениеЗаполнено(Стр.Количество), Стр.Количество, 0),
?(ЗначениеЗаполнено(Стр.Сумма), Стр.Сумма, 0),
));
КонецЦикла;
// --- Инициализация переменных получения (на всякий случай повторим, если их ещё нет) ---
ВозвратОб = 0; ВозвратОб2 = 0; ВозвратОб3= 0; ВозвратОб4= 0; ВозвратОб5= 0;
ВозвратСуммаО = 0; ВозвратСуммаО2 = 0; ВозвратСуммаО3 = 0; ВозвратСуммаО4 = 0; ВозвратСуммаО5 = 0;
ВозвратРег = 0; ВозвратРег2 = 0; ВозвратРег3= 0;
ВозвратСуммаР= 0; ВозвратСуммаР2= 0; ВозвратСуммаР3 = 0;
// -------------------- Обработка массива Получения (распределение по корзинам) ----------
Для Каждого СтрИт Из МассивПолучИтог Цикл
// нормализуем цену (может быть строкой или числом)
Если СтрИт.Цена = Неопределено Тогда
Продолжить;
КонецЕсли;
// если цена уже число — оставляем, иначе чистим строку
ТипЦена = ТипЗнч(СтрИт.Цена);
Если ТипЦена = Тип("Число") Или ТипЦена = Тип("Дробное") Тогда
ЦенаЧ = Окр(Число(СтрИт.Цена), 0);
Иначе
ЦенаСтр = Строка(СтрИт.Цена);
ЦенаСтр = СтрЗаменить(ЦенаСтр, " ", "");
ЦенаСтр = СтрЗаменить(ЦенаСтр, ",", ".");
Попытка
ЦенаЧ = Окр(Число(ЦенаСтр), 0);
Исключение
Продолжить;
КонецПопытки;
КонецЕсли;
// получаем индекс корзины через мап или fallback поиск
Инд = Неопределено;
Если СтрИт.ВидБилета = "О" Тогда
Попытка
Инд = МапПрайсОбычные.Получить(ЦенаЧ);
Исключение
Инд = Неопределено;
КонецПопытки;
Если Инд = Неопределено Тогда
Для j = 0 По СортОбычные.Количество()-1 Цикл
Если СортОбычные[j] = ЦенаЧ Тогда
Инд = j; Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Инд = Неопределено Тогда
Если СортОбычные.Количество() > 0 Тогда
Инд = СортОбычные.Количество() - 1;
Иначе
Инд = -1;
КонецЕсли;
КонецЕсли;
Если Инд >= 0 Тогда
// количество
Если ЗначениеЗаполнено(СтрИт.Количество) Тогда
Если Инд = 0 Тогда ВозвратОб = ВозвратОб + СтрИт.Количество; КонецЕсли;
Если Инд = 1 Тогда ВозвратОб2 = ВозвратОб2 + СтрИт.Количество; КонецЕсли;
Если Инд = 2 Тогда ВозвратОб3 = ВозвратОб3 + СтрИт.Количество; КонецЕсли;
Если Инд = 3 Тогда ВозвратОб4 = ВозвратОб4 + СтрИт.Количество; КонецЕсли;
Если Инд >= 4 Тогда ВозвратОб5 = ВозвратОб5 + СтрИт.Количество; КонецЕсли;
КонецЕсли;
// сумма
Если ЗначениеЗаполнено(СтрИт.Сумма) Тогда
Если Инд = 0 Тогда ВозвратСуммаО = ВозвратСуммаО + СтрИт.Сумма; КонецЕсли;
Если Инд = 1 Тогда ВозвратСуммаО2 = ВозвратСуммаО2 + СтрИт.Сумма; КонецЕсли;
Если Инд = 2 Тогда ВозвратСуммаО3 = ВозвратСуммаО3 + СтрИт.Сумма; КонецЕсли;
Если Инд = 3 Тогда ВозвратСуммаО4 = ВозвратСуммаО4 + СтрИт.Сумма; КонецЕсли;
Если Инд >= 4 Тогда ВозвратСуммаО5 = ВозвратСуммаО5 + СтрИт.Сумма; КонецЕсли;
КонецЕсли;
КонецЕсли;
ИначеЕсли СтрИт.ВидБилета = "Л" Тогда
Попытка
Инд = МапПрайсЛьготные.Получить(ЦенаЧ);
Исключение
Инд = Неопределено;
КонецПопытки;
Если Инд = Неопределено Тогда
Для j = 0 По СортЛьготные.Количество()-1 Цикл
Если СортЛьготные[j] = ЦенаЧ Тогда
Инд = j; Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если Инд = Неопределено Тогда
Если СортЛьготные.Количество() > 0 Тогда
Инд = СортЛьготные.Количество() - 1;
Иначе
Инд = -1;
КонецЕсли;
КонецЕсли;
Если Инд >= 0 Тогда
Если ЗначениеЗаполнено(СтрИт.Количество) Тогда
Если Инд = 0 Тогда ВозвратРег = ВозвратРег + СтрИт.Количество; КонецЕсли;
Если Инд = 1 Тогда ВозвратРег2 = ВозвратРег2 + СтрИт.Количество; КонецЕсли;
Если Инд >= 2 Тогда ВозвратРег3 = ВозвратРег3 + СтрИт.Количество; КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(СтрИт.Сумма) Тогда
Если Инд = 0 Тогда ВозвратСуммаР = ВозвратСуммаР + СтрИт.Сумма; КонецЕсли;
Если Инд = 1 Тогда ВозвратСуммаР2 = ВозвратСуммаР2 + СтрИт.Сумма; КонецЕсли;
Если Инд >= 2 Тогда ВозвратСуммаР3 = ВозвратСуммаР3 + СтрИт.Сумма; КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// --- записываем обратно в реквизиты формы (если надо) ---
ЭтотОбъект.ВозвратОб = ВозвратОб;
ЭтотОбъект.ВозвратОб2 = ВозвратОб2;
ЭтотОбъект.ВозвратОб3 = ВозвратОб3;
ЭтотОбъект.ВозвратОб4 = ВозвратОб4;
ЭтотОбъект.ВозвратОб5 = ВозвратОб5;
ЭтотОбъект.ВозвратСуммаО = ВозвратСуммаО;
ЭтотОбъект.ВозвратСуммаО2 = ВозвратСуммаО2;
ЭтотОбъект.ВозвратСуммаО3 = ВозвратСуммаО3;
ЭтотОбъект.ВозвратСуммаО4 = ВозвратСуммаО4;
ЭтотОбъект.ВозвратСуммаО5 = ВозвратСуммаО5;
ЭтотОбъект.ВозвратРег = ВозвратРег;
ЭтотОбъект.ВозвратРег2 = ВозвратРег2;
ЭтотОбъект.ВозвратРег3 = ВозвратРег3;
ЭтотОбъект.ВозвратСуммаР = ВозвратСуммаР;
ЭтотОбъект.ВозвратСуммаР2 = ВозвратСуммаР2;
ЭтотОбъект.ВозвратСуммаР3 = ВозвратСуммаР3;
// -------------------- Подставляем заголовки (только тарифы) --------------------
Для i = 0 По 4 Цикл
Суффикс = ""; Если i > 0 Тогда Суффикс = Строка(i+1); КонецЕсли;
Попытка
Если i < СортОбычные.Количество() Тогда
Элементы["НадписьОбычныеНач" + Суффикс].Заголовок = "Полные по " + Формат(СортОбычные[i], "ЧЦ=3") + ":";
Элементы["НадписьПолучениеОб" + Суффикс].Заголовок = "Полные по " + Формат(СортОбычные[i], "ЧЦ=4") + ":";
Элементы["НадписьРеализацияОб" + Суффикс].Заголовок = "Полные по " + Формат(СортОбычные[i], "ЧЦ=3") + ":";
Элементы["НадписьВозвратОб" + Суффикс].Заголовок = "Полные по " + Формат(СортОбычные[i], "ЧЦ=3") + ":";
Иначе
Элементы["НадписьОбычныеНач" + Суффикс].Заголовок = "";
Элементы["НадписьПолучениеОб" + Суффикс].Заголовок = "";
Элементы["НадписьРеализацияОб" + Суффикс].Заголовок = "";
Элементы["НадписьВозвратОб" + Суффикс].Заголовок = "";
КонецЕсли;
Исключение КонецПопытки;
Попытка
Если i < СортОбычные.Количество() Тогда
Элементы["НадписьОбычныеСумНач" + Суффикс].Заголовок = "Полные по " + Формат(СортОбычные[i], "ЧЦ=3") + ":";
Элементы["НадписьПолучениеСуммаО" + Суффикс].Заголовок = "Полные по " + Формат(СортОбычные[i], "ЧЦ=3") + ":";
Элементы["НадписьРеализацияСуммаО" + Суффикс].Заголовок = "Полные по " + Формат(СортОбычные[i], "ЧЦ=3") + ":";
Элементы["НадписьВозвратСуммаО" + Суффикс].Заголовок = "Полные по " + Формат(СортОбычные[i], "ЧЦ=3") + ":";
Иначе
Элементы["НадписьОбычныеСумНач" + Суффикс].Заголовок = "";
Элементы["НадписьПолучениеСуммаО" + Суффикс].Заголовок = "";
Элементы["НадписьРеализацияСуммаО" + Суффикс].Заголовок = "";
Элементы["НадписьВозвратСуммаО" + Суффикс].Заголовок = "";
КонецЕсли;
Исключение КонецПопытки;
Попытка
Если i < СортОбычные.Количество() Тогда
Элементы["НадписьОбычныеКолКонОб" + Суффикс].Заголовок = "Полные по " + Формат(СортОбычные[i], "ЧЦ=3") + ":";
Иначе
Элементы["НадписьОбычныеКолКонОб" + Суффикс].Заголовок = "";
КонецЕсли;
Исключение КонецПопытки;
Попытка
Если i < СортОбычные.Количество() Тогда
Элементы["НадписьОбычныеСумОбК" + Суффикс].Заголовок = "Полные по " + Формат(СортОбычные[i], "ЧЦ=3") + ":";
Иначе
Элементы["НадписьОбычныеСумОбК" + Суффикс].Заголовок = "";
КонецЕсли;
Исключение КонецПопытки;
КонецЦикла;
Для i = 0 По 2 Цикл
Суффикс = ""; Если i > 0 Тогда Суффикс = Строка(i+1); КонецЕсли;
Попытка
Если i < СортЛьготные.Количество() Тогда
Элементы["НадписьРегиональныеНач" + Суффикс].Заголовок = "Льготные по " + Формат(СортЛьготные[i], "ЧЦ=3") + ":";
Элементы["НадписьПолучениеРег" + Суффикс].Заголовок = "Льготные по " + Формат(СортЛьготные[i], "ЧЦ=3") + ":";
Элементы["НадписьРеализацияРег" + Суффикс].Заголовок = "Льготные по " + Формат(СортЛьготные[i], "ЧЦ=3") + ":";
Элементы["НадписьВозвратРег" + Суффикс].Заголовок = "Льготные по " + Формат(СортЛьготные[i], "ЧЦ=3") + ":";
Иначе
Элементы["НадписьРегиональныеНач" + Суффикс].Заголовок = "";
Элементы["НадписьПолучениеРег" + Суффикс].Заголовок = "";
Элементы["НадписьРеализацияРег" + Суффикс].Заголовок = "";
Элементы["НадписьВозвратРег" + Суффикс].Заголовок = "";
КонецЕсли;
Исключение КонецПопытки;
Попытка
Если i < СортЛьготные.Количество() Тогда
Элементы["НадписьОбычныеСумРег" + Суффикс].Заголовок = "Льготные по " + Формат(СортЛьготные[i], "ЧЦ=3") + ":";
Элементы["НадписьПолучениеСуммаР" + Суффикс].Заголовок = "Льготные по " + Формат(СортЛьготные[i], "ЧЦ=3") + ":";
Элементы["НадписьРеализацияСуммаР" + Суффикс].Заголовок = "Льготные по " + Формат(СортЛьготные[i], "ЧЦ=3") + ":";
Элементы["НадписьВозвратСуммаР" + Суффикс].Заголовок = "Льготные по " + Формат(СортЛьготные[i], "ЧЦ=3") + ":";
Иначе
Элементы["НадписьОбычныеСумРег" + Суффикс].Заголовок = "";
Элементы["НадписьПолучениеСуммаР" + Суффикс].Заголовок = "";
Элементы["НадписьРеализацияСуммаР" + Суффикс].Заголовок = "";
Элементы["НадписьВозвратСуммаР" + Суффикс].Заголовок = "";
КонецЕсли;
Исключение КонецПопытки;
Попытка
Если i < СортЛьготные.Количество() Тогда
Элементы["НадписьОбычныеКолРегКон" + Суффикс].Заголовок = "Льготные по " + Формат(СортЛьготные[i], "ЧЦ=3") + ":";
Иначе
Элементы["НадписьОбычныеКолРегКон" + Суффикс].Заголовок = "";
КонецЕсли;
Исключение КонецПопытки;
Попытка
Если i < СортЛьготные.Количество() Тогда
Элементы["НадписьОбычныеСумРегК" + Суффикс].Заголовок = "Льготные по " + Формат(СортЛьготные[i], "ЧЦ=3") + ":";
Иначе
Элементы["НадписьОбычныеСумРегК" + Суффикс].Заголовок = "";
КонецЕсли;
Исключение КонецПопытки;
КонецЦикла;
// -------------------- Инициализация реквизитов формы --------------------
ЭтотОбъект.КоличествоОб = 0; ЭтотОбъект.СуммаОб = 0;
ЭтотОбъект.КоличествоОб2 = 0; ЭтотОбъект.СуммаОб2 = 0;
ЭтотОбъект.КоличествоОб3 = 0; ЭтотОбъект.СуммаОб3 = 0;
ЭтотОбъект.КоличествоОб4 = 0; ЭтотОбъект.СуммаОб4 = 0;
ЭтотОбъект.КоличествоОб5 = 0; ЭтотОбъект.СуммаОб5 = 0;
ЭтотОбъект.КоличествоРег = 0; ЭтотОбъект.СуммаРег = 0;
ЭтотОбъект.КоличествоРег2 = 0; ЭтотОбъект.СуммаРег2 = 0;
ЭтотОбъект.КоличествоРег3 = 0; ЭтотОбъект.СуммаРег3 = 0;
ЭтотОбъект.КоличествоОбК = 0; ЭтотОбъект.СуммаОбК = 0;
ЭтотОбъект.КоличествоОбК2 = 0; ЭтотОбъект.СуммаОбК2 = 0;
ЭтотОбъект.КоличествоОбК3 = 0; ЭтотОбъект.СуммаОбК3 = 0;
ЭтотОбъект.КоличествоОбК4 = 0; ЭтотОбъект.СуммаОбК4 = 0;
ЭтотОбъект.КоличествоОбК5 = 0; ЭтотОбъект.СуммаОбК5 = 0;
ЭтотОбъект.КоличествоРегК = 0; ЭтотОбъект.СуммаРегК = 0;
ЭтотОбъект.КоличествоРегК2 = 0; ЭтотОбъект.СуммаРегК2 = 0;
ЭтотОбъект.КоличествоРегК3 = 0; ЭтотОбъект.СуммаРегК3 = 0;
// -------------------- Обработка остатков на начало (МассНачало) --------------------
Для Каждого СтрОст Из МассНачало Цикл
Если ЗначениеЗаполнено(СтрОст.Цена) Тогда
ЦенаСтр = (СтрОст.Цена);
Иначе
ЦенаСтр = Неопределено;
КонецЕсли;
// нормализованная числовая цена (если есть)
Если ЦенаСтр <> Неопределено Тогда
Попытка
ЦенаЧ = Окр(Число(ЦенаСтр), 0);
Исключение
ЦенаЧ = Неопределено;
КонецПопытки;
Иначе
ЦенаЧ = Неопределено;
КонецЕсли;
// если обычный билет
Если СтрОст.ВидБилета = "О" Тогда
Инд = Неопределено;
// 1) попытка получить индекс по мапе (ключ — число)
Если ЦенаЧ <> Неопределено Тогда
Попытка
Инд = МапПрайсОбычные.Получить(ЦенаЧ);
Исключение
Инд = Неопределено;
КонецПопытки;
КонецЕсли;
// линейный поиск по СортОбычные
Если Инд = Неопределено И ЦенаЧ <> Неопределено Тогда
Для j = 0 По СортОбычные.Количество()-1 Цикл
Если СортОбычные[j] = ЦенаЧ Тогда
Инд = j;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
// если всё ещё не найден — направляем в последний слот (чтобы не менять заголовки)
Если Инд = Неопределено Тогда
Если СортОбычные.Количество() > 0 Тогда
Инд = СортОбычные.Количество() - 1;
Иначе
Инд = -1;
КонецЕсли;
КонецЕсли;
// записываем в ячейки (индексация сохранена)
Если Инд >= 0 Тогда
Если ЗначениеЗаполнено(СтрОст.Количество) Тогда
Если Инд = 0 Тогда ЭтотОбъект.КоличествоОб = ЭтотОбъект.КоличествоОб + СтрОст.Количество; КонецЕсли;
Если Инд = 1 Тогда ЭтотОбъект.КоличествоОб2 = ЭтотОбъект.КоличествоОб2 + СтрОст.Количество; КонецЕсли;
Если Инд = 2 Тогда ЭтотОбъект.КоличествоОб3 = ЭтотОбъект.КоличествоОб3 + СтрОст.Количество; КонецЕсли;
Если Инд = 3 Тогда ЭтотОбъект.КоличествоОб4 = ЭтотОбъект.КоличествоОб4 + СтрОст.Количество; КонецЕсли;
Если Инд >= 4 Тогда ЭтотОбъект.КоличествоОб5 = ЭтотОбъект.КоличествоОб5 + СтрОст.Количество; КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(СтрОст.Сумма) Тогда
Если Инд = 0 Тогда ЭтотОбъект.СуммаОб = ЭтотОбъект.СуммаОб + СтрОст.Сумма; КонецЕсли;
Если Инд = 1 Тогда ЭтотОбъект.СуммаОб2 = ЭтотОбъект.СуммаОб2 + СтрОст.Сумма; КонецЕсли;
Если Инд = 2 Тогда ЭтотОбъект.СуммаОб3 = ЭтотОбъект.СуммаОб3 + СтрОст.Сумма; КонецЕсли;
Если Инд = 3 Тогда ЭтотОбъект.СуммаОб4 = ЭтотОбъект.СуммаОб4 + СтрОст.Сумма; КонецЕсли;
Если Инд >= 4 Тогда ЭтотОбъект.СуммаОб5 = ЭтотОбъект.СуммаОб5 + СтрОст.Сумма; КонецЕсли;
КонецЕсли;
КонецЕсли;
// если льготный билет
ИначеЕсли СтрОст.ВидБилета = "Л" Тогда
Инд = Неопределено;
// по мапе
Если ЦенаЧ <> Неопределено Тогда
Попытка
Инд = МапПрайсЛьготные.Получить(ЦенаЧ);
Исключение
Инд = Неопределено;
КонецПопытки;
КонецЕсли;
// поиск в массиве
Если Инд = Неопределено И ЦенаЧ <> Неопределено Тогда
Для j = 0 По СортЛьготные.Количество()-1 Цикл
Если СортЛьготные[j] = ЦенаЧ Тогда
Инд = j;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
// если нет — последний слот льготных
Если Инд = Неопределено Тогда
Если СортЛьготные.Количество() > 0 Тогда
Инд = СортЛьготные.Количество() - 1;
Иначе
Инд = -1;
КонецЕсли;
КонецЕсли;
// запись в реквизиты
Если Инд >= 0 Тогда
Если ЗначениеЗаполнено(СтрОст.Количество) Тогда
Если Инд = 0 Тогда ЭтотОбъект.КоличествоРег = ЭтотОбъект.КоличествоРег + СтрОст.Количество; КонецЕсли;
Если Инд = 1 Тогда ЭтотОбъект.КоличествоРег2 = ЭтотОбъект.КоличествоРег2 + СтрОст.Количество; КонецЕсли;
Если Инд = 2 Тогда ЭтотОбъект.КоличествоРег3 = ЭтотОбъект.КоличествоРег3 + СтрОст.Количество; КонецЕсли;
Если Инд >= 3 Тогда ЭтотОбъект.КоличествоРег3 = ЭтотОбъект.КоличествоРег3 + СтрОст.Количество; КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(СтрОст.Сумма) Тогда
Если Инд = 0 Тогда ЭтотОбъект.СуммаРег = ЭтотОбъект.СуммаРег + СтрОст.Сумма; КонецЕсли;
Если Инд = 1 Тогда ЭтотОбъект.СуммаРег2 = ЭтотОбъект.СуммаРег2 + СтрОст.Сумма; КонецЕсли;
Если Инд = 2 Тогда ЭтотОбъект.СуммаРег3 = ЭтотОбъект.СуммаРег3 + СтрОст.Сумма; КонецЕсли;
Если Инд >= 3 Тогда ЭтотОбъект.СуммаРег3 = ЭтотОбъект.СуммаРег3 + СтрОст.Сумма; КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// -------------------- Обработка остатков на конец (МассКонец) — аналогично --------------------
Для Каждого СтрОст Из МассКонец Цикл
Если ЗначениеЗаполнено(СтрОст.Цена) Тогда
ЦенаСтр = (СтрОст.Цена);
Иначе
ЦенаСтр = Неопределено;
КонецЕсли;
Если ЦенаСтр <> Неопределено Тогда
Попытка
ЦенаЧ = Окр(Число(ЦенаСтр), 0);
Исключение
ЦенаЧ = Неопределено;
КонецПопытки;
Иначе
ЦенаЧ = Неопределено;
КонецЕсли;
Если СтрОст.ВидБилета = "О" Тогда
Инд = Неопределено;
Если ЦенаЧ <> Неопределено Тогда
Попытка
Инд = МапПрайсОбычные.Получить(ЦенаЧ);
Исключение
Инд = Неопределено;
КонецПопытки;
Если Инд = Неопределено Тогда
Для j = 0 По СортОбычные.Количество()-1 Цикл
Если СортОбычные[j] = ЦенаЧ Тогда
Инд = j; Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если Инд = Неопределено Тогда
Если СортОбычные.Количество() > 0 Тогда
Инд = СортОбычные.Количество() - 1;
Иначе
Инд = -1;
КонецЕсли;
КонецЕсли;
Если Инд >= 0 Тогда
Если ЗначениеЗаполнено(СтрОст.Количество) Тогда
Если Инд = 0 Тогда ЭтотОбъект.КоличествоОбК = ЭтотОбъект.КоличествоОбК + СтрОст.Количество; КонецЕсли;
Если Инд = 1 Тогда ЭтотОбъект.КоличествоОбК2 = ЭтотОбъект.КоличествоОбК2 + СтрОст.Количество; КонецЕсли;
Если Инд = 2 Тогда ЭтотОбъект.КоличествоОбК3 = ЭтотОбъект.КоличествоОбК3 + СтрОст.Количество; КонецЕсли;
Если Инд = 3 Тогда ЭтотОбъект.КоличествоОбК4 = ЭтотОбъект.КоличествоОбК4 + СтрОст.Количество; КонецЕсли;
Если Инд >= 3 Тогда ЭтотОбъект.КоличествоОбК5 = ЭтотОбъект.КоличествоОбК5 + СтрОст.Количество; КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(СтрОст.Сумма) Тогда
Если Инд = 0 Тогда ЭтотОбъект.СуммаОбК = ЭтотОбъект.СуммаОбК + СтрОст.Сумма; КонецЕсли;
Если Инд = 1 Тогда ЭтотОбъект.СуммаОбК2 = ЭтотОбъект.СуммаОбК2 + СтрОст.Сумма; КонецЕсли;
Если Инд = 2 Тогда ЭтотОбъект.СуммаОбК3 = ЭтотОбъект.СуммаОбК3 + СтрОст.Сумма; КонецЕсли;
Если Инд = 3 Тогда ЭтотОбъект.СуммаОбК4 = ЭтотОбъект.СуммаОбК4 + СтрОст.Сумма; КонецЕсли;
Если Инд >= 4 Тогда ЭтотОбъект.СуммаОбК5 = ЭтотОбъект.СуммаОбК5 + СтрОст.Сумма; КонецЕсли;
КонецЕсли;
КонецЕсли;
ИначеЕсли СтрОст.ВидБилета = "Л" Тогда
Инд = Неопределено;
Если ЦенаЧ <> Неопределено Тогда
Попытка
Инд = МапПрайсЛьготные.Получить(ЦенаЧ);
Исключение
Инд = Неопределено;
КонецПопытки;
Если Инд = Неопределено Тогда
Для j = 0 По СортЛьготные.Количество()-1 Цикл
Если СортЛьготные[j] = ЦенаЧ Тогда
Инд = j; Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если Инд = Неопределено Тогда
Если СортЛьготные.Количество() > 0 Тогда
Инд = СортЛьготные.Количество() - 1;
Иначе
Инд = -1;
КонецЕсли;
КонецЕсли;
Если Инд >= 0 Тогда
Если ЗначениеЗаполнено(СтрОст.Количество) Тогда
Если Инд = 0 Тогда ЭтотОбъект.КоличествоРегК = ЭтотОбъект.КоличествоРегК + СтрОст.Количество; КонецЕсли;
Если Инд = 1 Тогда ЭтотОбъект.КоличествоРегК2 = ЭтотОбъект.КоличествоРегК2 + СтрОст.Количество; КонецЕсли;
Если Инд = 2 Тогда ЭтотОбъект.КоличествоРегК3 = ЭтотОбъект.КоличествоРегК3 + СтрОст.Количество; КонецЕсли;
Если Инд >= 3 Тогда ЭтотОбъект.КоличествоРегК3 = ЭтотОбъект.КоличествоРегК3 + СтрОст.Количество; КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(СтрОст.Сумма) Тогда
Если Инд = 0 Тогда ЭтотОбъект.СуммаРегК = ЭтотОбъект.СуммаРегК + СтрОст.Сумма; КонецЕсли;
Если Инд = 1 Тогда ЭтотОбъект.СуммаРегК2 = ЭтотОбъект.СуммаРегК2 + СтрОст.Сумма; КонецЕсли;
Если Инд = 2 Тогда ЭтотОбъект.СуммаРегК3 = ЭтотОбъект.СуммаРегК3 + СтрОст.Сумма; КонецЕсли;
Если Инд >= 3 Тогда ЭтотОбъект.СуммаРегК3 = ЭтотОбъект.СуммаРегК3 + СтрОст.Сумма; КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры