Загрузка данных


&НаСервере
Процедура Итоги(Элемент)
    // Период документа
    НачалоМесяца = НачалоМесяца(ЭтотОбъект.Месяц);
    КонецМесяца  = КонецМесяца(ЭтотОбъект.Месяц);
    // Дата "на начало" — последний день перед началом месяца
    ДатаНачДляОст = НачалоМесяца - 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 + СтрОст.Сумма; КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
КонецЦикла;

КонецПроцедуры