Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 02:56

Заполнение таблицы в цикле

Автор Nosferatu112, 09 июл 2024, 16:57

0 Пользователей и 1 гость просматривают эту тему.

Nosferatu112

Всем привет, кто может подать светлую идею по заполнению таблицы весь мозг сломал ни чего ни придумал, может быть это нужно делать не циклом.
Суть такая:
Я формирую 2 табЗнач
1. заказы на выбраный день с периодом доставки и зонами
2. водители с разрешенными зонами доставки на этот день

далее мне нужно заполнить 1ую таблицу с водителями по соответствию зон доставки с условием что на каждый период у водитля может быть не более 8ми заказов

После я запускаю цикл повторно и заполняю водителями у которых зона опциональна так же с условием что заказов может быть не более 8 на период при этом нужно учитывать что в 1ом цикле этому водителю уже могли назначится заказы на другие зоны которые у него разрешенные

Далее я запускаю 3ий цикл если заказы без водителей ещё остались то мне нужно докинуть их на разрешенных водителей с 1го цикла уже без условия не более 8ми заказов

всё это передаётся в отчет с простым видом

Водитель
  ПериодДоставки
    ЗонаДоставки   ЧислоЗаказов
Код:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)


СтандартнаяОбработка = Ложь;

Настройки = КомпоновщикНастроек.ПолучитьНастройки();

Дата = Дата;

ТаблицаВодителейИЗон = Новый ТаблицаЗначений;
ТаблицаВодителейИЗон.Колонки.Добавить("ВодительРазрешенный");
ТаблицаВодителейИЗон.Колонки.Добавить("РазрешенныеЗоны");
ТаблицаВодителейИЗон.Колонки.Добавить("ВодительОпционально");
ТаблицаВодителейИЗон.Колонки.Добавить("ОпцианальныеЗоны");

Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("РаспоряжениеНаДоставку");
Данные.Колонки.Добавить("ЗоныПланирования");
Данные.Колонки.Добавить("ВремяДоставки");
Данные.Колонки.Добавить("ПериодДоставки");
Данные.Колонки.Добавить("Водитель",Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
Данные.Колонки.Добавить("Лимит",Новый ОписаниеТипов("Число"));
Данные.Колонки.Добавить("ВозможнаяЗамена");
Данные.Колонки.Добавить("Период");
Данные.Колонки.Добавить("КолВоЗаказов");
Данные.Колонки.Добавить("ИтогПоПериоду");
Данные.Колонки.Добавить("Поле1");


Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗоныДоставкиДляПланированияЯндекс.Водитель КАК Водитель,
| ЗоныДоставкиДляПланированияЯндекс.ЗонаДоставки КАК ЗонаДоставкиРазрешенная
|ПОМЕСТИТЬ втРазрешенные
|ИЗ
| РегистрСведений.ЗоныДоставкиДляПланированияЯндекс КАК ЗоныДоставкиДляПланированияЯндекс
|ГДЕ
| ЗоныДоставкиДляПланированияЯндекс.ВидЗоныДоставки = ЗНАЧЕНИЕ(Перечисление.вд_ВидыЗоныДоставки.Разрешенная)
| И ЗоныДоставкиДляПланированияЯндекс.ДеньНедели = ДЕНЬНЕДЕЛИ(&ДеньНедели)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| МАКСИМУМ(ЗоныДоставкиДляПланированияЯндекс.Водитель) КАК Водитель,
| ЗоныДоставкиДляПланированияЯндекс.ЗонаДоставки КАК ЗонаДоставкиОпционально
|ПОМЕСТИТЬ втОпционально
|ИЗ
| РегистрСведений.ЗоныДоставкиДляПланированияЯндекс КАК ЗоныДоставкиДляПланированияЯндекс
|ГДЕ
| ЗоныДоставкиДляПланированияЯндекс.ВидЗоныДоставки = ЗНАЧЕНИЕ(Перечисление.вд_ВидыЗоныДоставки.Опциональная)
| И ЗоныДоставкиДляПланированияЯндекс.ДеньНедели = ДЕНЬНЕДЕЛИ(&ДеньНедели)
|
|СГРУППИРОВАТЬ ПО
| ЗоныДоставкиДляПланированияЯндекс.ЗонаДоставки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втРазрешенные.ЗонаДоставкиРазрешенная КАК ЗонаДоставкиРазрешенная,
| втРазрешенные.Водитель КАК Водитель,
| втОпционально.ЗонаДоставкиОпционально КАК ЗонаДоставкиОпционально,
| МАКСИМУМ(втОпционально.Водитель) КАК Водитель1
|ИЗ
| втРазрешенные КАК втРазрешенные
| ЛЕВОЕ СОЕДИНЕНИЕ втОпционально КАК втОпционально
| ПО втРазрешенные.ЗонаДоставкиРазрешенная = втОпционально.ЗонаДоставкиОпционально
|
|СГРУППИРОВАТЬ ПО
| втРазрешенные.ЗонаДоставкиРазрешенная,
| втРазрешенные.Водитель,
| втОпционально.ЗонаДоставкиОпционально";

Запрос.УстановитьПараметр("ДеньНедели", Дата);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаЗон = РезультатЗапроса.Выбрать();

Пока ВыборкаЗон.Следующий() Цикл

ТЧ = ТаблицаВодителейИЗон.Добавить();
ТЧ.ВодительРазрешенный = ВыборкаЗон.Водитель;
ТЧ.РазрешенныеЗоны = ВыборкаЗон.ЗонаДоставкиРазрешенная;
ТЧ.ВодительОпционально = ВыборкаЗон.Водитель1;
ТЧ.ОпцианальныеЗоны = ВыборкаЗон.ЗонаДоставкиОпционально;

КонецЦикла;


Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗоныДоставкиДляПланированияЯндекс.Водитель КАК Водитель,
| ЗоныДоставкиДляПланированияЯндекс.ЗонаДоставки КАК ЗонаДоставкиРазрешенная
|ПОМЕСТИТЬ втРазрешенные
|ИЗ
| РегистрСведений.ЗоныДоставкиДляПланированияЯндекс КАК ЗоныДоставкиДляПланированияЯндекс
|ГДЕ
| ЗоныДоставкиДляПланированияЯндекс.ВидЗоныДоставки = ЗНАЧЕНИЕ(Перечисление.вд_ВидыЗоныДоставки.Разрешенная)
| И ЗоныДоставкиДляПланированияЯндекс.ДеньНедели = ДЕНЬНЕДЕЛИ(&ДеньНедели)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПараметрыДоставокСрезПоследних.РаспоряжениеНаДоставку КАК РаспоряжениеНаДоставку,
| ПараметрыДоставокСрезПоследних.РаспоряжениеНаДоставку.АдресДоставки.ЗонаПланированияМаксоптра КАК ЗонаМаксоптра,
| ПараметрыДоставокСрезПоследних.ВремяНачалаДоставки КАК ВремяНачалаДоставки,
| ПараметрыДоставокСрезПоследних.ВремяОкончанияДоставки КАК ВремяОкончанияДоставки,
| ВЫБОР
| КОГДА ЧАС(ПараметрыДоставокСрезПоследних.ВремяНачалаДоставки) >= 7
| И ЧАС(ПараметрыДоставокСрезПоследних.ВремяОкончанияДоставки) <= 13
| ТОГДА ""Период 1""
| ИНАЧЕ ВЫБОР
| КОГДА ЧАС(ПараметрыДоставокСрезПоследних.ВремяНачалаДоставки) >= 10
| И ЧАС(ПараметрыДоставокСрезПоследних.ВремяОкончанияДоставки) <= 16
| ТОГДА ""Период 2""
| ИНАЧЕ ВЫБОР
| КОГДА ЧАС(ПараметрыДоставокСрезПоследних.ВремяНачалаДоставки) >= 14
| И ЧАС(ПараметрыДоставокСрезПоследних.ВремяОкончанияДоставки) <= 23
| ТОГДА ""Период 3""
| ИНАЧЕ ВЫБОР
| КОГДА ЧАС(ПараметрыДоставокСрезПоследних.ВремяНачалаДоставки) = 9
| И ЧАС(ПараметрыДоставокСрезПоследних.ВремяОкончанияДоставки) = 18
| ТОГДА ""Период 4""
| ИНАЧЕ ""Период 4""
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ КАК ПериодДоставки,
| ПараметрыДоставокСрезПоследних.Период КАК Период
|ПОМЕСТИТЬ втЗаказыЗоныВремя
|ИЗ
| РегистрСведений.ПараметрыДоставок.СрезПоследних КАК ПараметрыДоставокСрезПоследних
|ГДЕ
| ПараметрыДоставокСрезПоследних.ДатаОтгрузки = &ДеньНедели
| И ПараметрыДоставокСрезПоследних.Водитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втЗаказыЗоныВремя.ЗонаМаксоптра КАК ЗонаМаксоптра,
| КОЛИЧЕСТВО(втЗаказыЗоныВремя.ЗонаМаксоптра) КАК КоличествоЗаказовНаЗону,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ втРазрешенные.Водитель) КАК КоличествоВодителейНаЗону,
| КОЛИЧЕСТВО(втЗаказыЗоныВремя.ЗонаМаксоптра) / КОЛИЧЕСТВО(РАЗЛИЧНЫЕ втРазрешенные.Водитель) / КОЛИЧЕСТВО(РАЗЛИЧНЫЕ втРазрешенные.Водитель) КАК КоличествоЗаказовНаВодителя
|ПОМЕСТИТЬ втКолВоЗаказовНаВодителя
|ИЗ
| втЗаказыЗоныВремя КАК втЗаказыЗоныВремя
| ЛЕВОЕ СОЕДИНЕНИЕ втРазрешенные КАК втРазрешенные
| ПО втЗаказыЗоныВремя.ЗонаМаксоптра = втРазрешенные.ЗонаДоставкиРазрешенная
|ГДЕ
| втЗаказыЗоныВремя.РаспоряжениеНаДоставку <> ЗНАЧЕНИЕ(Документ.ЗаданиеНаПеревозку.ПустаяСсылка)
| И втЗаказыЗоныВремя.ПериодДоставки <> ""Период 4""
|
|СГРУППИРОВАТЬ ПО
| втЗаказыЗоныВремя.ЗонаМаксоптра
|
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ втРазрешенные.Водитель) <> 0
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втЗаказыЗоныВремя.РаспоряжениеНаДоставку КАК РаспоряжениеНаДоставку,
| втЗаказыЗоныВремя.ЗонаМаксоптра КАК ЗонаМаксоптра,
| втЗаказыЗоныВремя.ВремяНачалаДоставки КАК ВремяНачалаДоставки,
| втЗаказыЗоныВремя.ПериодДоставки КАК ПериодДоставки,
| втЗаказыЗоныВремя.Период КАК Период,
| втКолВоЗаказовНаВодителя.КоличествоЗаказовНаВодителя КАК КоличествоЗаказовНаВодителя
|ИЗ
| втЗаказыЗоныВремя КАК втЗаказыЗоныВремя
| ЛЕВОЕ СОЕДИНЕНИЕ втКолВоЗаказовНаВодителя КАК втКолВоЗаказовНаВодителя
| ПО втЗаказыЗоныВремя.ЗонаМаксоптра = втКолВоЗаказовНаВодителя.ЗонаМаксоптра
|ГДЕ
| втЗаказыЗоныВремя.РаспоряжениеНаДоставку <> ЗНАЧЕНИЕ(Документ.ЗаданиеНаПеревозку.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| втЗаказыЗоныВремя.РаспоряжениеНаДоставку,
| втЗаказыЗоныВремя.ЗонаМаксоптра,
| втЗаказыЗоныВремя.ВремяНачалаДоставки,
| втЗаказыЗоныВремя.ПериодДоставки,
| втЗаказыЗоныВремя.Период,
| втКолВоЗаказовНаВодителя.КоличествоЗаказовНаВодителя";

Запрос.УстановитьПараметр("ДеньНедели", Дата);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаЗаданий = РезультатЗапроса.Выбрать();

Пока ВыборкаЗаданий.Следующий() Цикл

ТЧ = Данные.Добавить();
ТЧ.Период = ВыборкаЗаданий.Период;
ТЧ.РаспоряжениеНаДоставку = ВыборкаЗаданий.РаспоряжениеНаДоставку;
ТЧ.ЗоныПланирования = ВыборкаЗаданий.ЗонаМаксоптра;
ТЧ.ВремяДоставки = ВыборкаЗаданий.ВремяНачалаДоставки;
ТЧ.ПериодДоставки = ВыборкаЗаданий.ПериодДоставки;
ТЧ.КолВоЗаказов = ВыборкаЗаданий.КоличествоЗаказовНаВодителя;

КонецЦикла;

ТаблицаРазрешенныхЗаказов = Новый ТаблицаЗначений;
ТаблицаРазрешенныхЗаказов.Колонки.Добавить("Водитель");
ТаблицаРазрешенныхЗаказов.Колонки.Добавить("ПериодДоставки");
ТаблицаРазрешенныхЗаказов.Колонки.Добавить("ЗоныПланирования");
ТаблицаРазрешенныхЗаказов.Колонки.Добавить("Лимит");

КолВоЗаказовНаВодителя = 0;
ИтогПоПериоду1 = 0;
ИтогПоПериоду2 = 0;                           
ИтогПоПериоду3 = 0;

ТаблицаВодителейИЗон.Сортировать("ВодительРазрешенный");
//Для Каждого С Из Данные Цикл
// Для Каждого Стр Из ТаблицаВодителейИЗон Цикл
Для Каждого Стр Из ТаблицаВодителейИЗон Цикл
Для Каждого С Из Данные Цикл
Если С.Водитель = Справочники.Контрагенты.ПустаяСсылка() И Стр.РазрешенныеЗоны = С.ЗоныПланирования Тогда
Если С.ПериодДоставки = "Период 1" И ИтогПоПериоду1 <= 8 Тогда
С.Водитель = Стр.ВодительРазрешенный;
С.Лимит = 1;
ИтогПоПериоду1 = ИтогПоПериоду1 + 1;
С.ИтогПоПериоду = ИтогПоПериоду1;
КолВоЗаказовНаВодителя = КолВоЗаказовНаВодителя +1;
Если С.ИтогПоПериоду <=8 Тогда
С.Поле1 = Истина;
Иначе
С.Поле1 = Ложь;
КонецЕсли
ИначеЕсли С.ПериодДоставки = "Период 2" И ИтогПоПериоду2 <= 8 Тогда
С.Водитель = Стр.ВодительРазрешенный;
С.Лимит = 1;
ИтогПоПериоду2 = ИтогПоПериоду2 + 1;
С.ИтогПоПериоду = ИтогПоПериоду2;
КолВоЗаказовНаВодителя = КолВоЗаказовНаВодителя +1;
Если С.ИтогПоПериоду <=8 Тогда
С.Поле1 = Истина;
Иначе
С.Поле1 = Ложь;
КонецЕсли
ИначеЕсли С.ПериодДоставки = "Период 3" И ИтогПоПериоду3 <= 8 Тогда
С.Водитель = Стр.ВодительРазрешенный;
С.Лимит = 1;
ИтогПоПериоду3 = ИтогПоПериоду3 + 1;
С.ИтогПоПериоду = ИтогПоПериоду3;
КолВоЗаказовНаВодителя = КолВоЗаказовНаВодителя +1;
Если С.ИтогПоПериоду <=8 Тогда
С.Поле1 = Истина;
Иначе
С.Поле1 = Ложь;
КонецЕсли
КонецЕсли;

КонецЕсли;

КонецЦикла;
КолВоЗаказовНаВодителя = 0;
ИтогПоПериоду1 = 0;
ИтогПоПериоду2 = 0;
ИтогПоПериоду3 = 0;
КонецЦикла;




//ЛимитЗаказов1 = 0;
//ЛимитЗаказов2 = 0;
//ЛимитЗаказов3 = 0;
//КолВоЗаказовНаВодителя = 0;
//ИтогПоПериоду1 = 8;
//ИтогПоПериоду2 = 8;                           
//ИтогПоПериоду3 = 8;
//Для Каждого С Из Данные Цикл
// Для Каждого Стр Из ТаблицаВодителейИЗон Цикл
//Для Каждого Стр Из ТаблицаВодителейИЗон Цикл
// Для Каждого С Из Данные Цикл
// Если С.Водитель = Стр.ВодительОпционально И С.ПериодДоставки = "Период 1" Тогда
// ИтогПоПериоду1 = С.ИтогПоПериоду;
// ИначеЕсли С.Водитель = Стр.ВодительОпционально И С.ПериодДоставки = "Период 2" Тогда
// ИтогПоПериоду2 = С.ИтогПоПериоду;
// ИначеЕсли С.Водитель = Стр.ВодительОпционально И С.ПериодДоставки = "Период 3" Тогда
// ИтогПоПериоду3 = С.ИтогПоПериоду;
// КонецЕсли;
// Если С.Водитель = Справочники.Контрагенты.ПустаяСсылка() И Стр.ОпцианальныеЗоны = С.ЗоныПланирования Тогда
// Если С.ПериодДоставки = "Период 1" И КолВоЗаказовНаВодителя <= 8 Тогда
// С.Водитель = Стр.ВодительОпционально;
// ЛимитЗаказов1 = ЛимитЗаказов1 + 1;
// С.Лимит = 1;
// ИтогПоПериоду1 = ИтогПоПериоду1 + 1;
// С.ИтогПоПериоду = ИтогПоПериоду1;
// КолВоЗаказовНаВодителя = КолВоЗаказовНаВодителя +1;
// Если С.ИтогПоПериоду <=8 Тогда
// С.Поле1 = Истина;
// Иначе
// С.Поле1 = Ложь;
// КонецЕсли
// ИначеЕсли С.ПериодДоставки = "Период 2" И КолВоЗаказовНаВодителя <= 8 Тогда
// С.Водитель = Стр.ВодительОпционально;
// ЛимитЗаказов2 = ЛимитЗаказов2 + 1;
// С.Лимит = 1;
// ИтогПоПериоду2 = ИтогПоПериоду2 + 1;
// С.ИтогПоПериоду = ИтогПоПериоду2;
// КолВоЗаказовНаВодителя = КолВоЗаказовНаВодителя +1;
// Если С.ИтогПоПериоду <=8 Тогда
// С.Поле1 = Истина;
// Иначе
// С.Поле1 = Ложь;
// КонецЕсли
// ИначеЕсли С.ПериодДоставки = "Период 3" И КолВоЗаказовНаВодителя <= 8 Тогда
// С.Водитель = Стр.ВодительОпционально;
// ЛимитЗаказов3 = ЛимитЗаказов3 + 1;
// С.Лимит = 1;
// ИтогПоПериоду3 = ИтогПоПериоду3 + 1;
// С.ИтогПоПериоду = ИтогПоПериоду3;
// КолВоЗаказовНаВодителя = КолВоЗаказовНаВодителя +1;
// Если С.ИтогПоПериоду <=8 Тогда
// С.Поле1 = Истина;
// Иначе
// С.Поле1 = Ложь;
// КонецЕсли
// КонецЕсли;
// КонецЕсли;

// КонецЦикла;
// //ЛимитЗаказов1 = 0;
// //ЛимитЗаказов2 = 0;
// //ЛимитЗаказов3 = 0;
// //КолВоЗаказовНаВодителя = 0;
// //ИтогПоПериоду1 = 8;
// //ИтогПоПериоду2 = 8;                           
// //ИтогПоПериоду3 = 8;
//КонецЦикла;





//3ий цикл
//ИтогПоПериоду1 = 8;
//ИтогПоПериоду2 = 8;
//ИтогПоПериоду3 = 8;
//Для Каждого Стр Из ТаблицаВодителейИЗон Цикл
// Для Каждого С Из Данные Цикл
// Если С.Водитель = Справочники.Контрагенты.ПустаяСсылка() И Стр.РазрешенныеЗоны = С.ЗоныПланирования Тогда
// Если С.ПериодДоставки = "Период 1"  Тогда
// С.Водитель = Стр.ВодительРазрешенный;
// ЛимитЗаказов1 = ЛимитЗаказов1 + 1;
// С.Лимит = 1;
// ИтогПоПериоду1 = ИтогПоПериоду1 + 1;
// С.ИтогПоПериоду = ИтогПоПериоду1;
// КолВоЗаказовНаВодителя = КолВоЗаказовНаВодителя +1;
// Если С.ИтогПоПериоду <=8 Тогда
// С.Поле1 = Истина;
// Иначе
// С.Поле1 = Ложь;
// КонецЕсли
// ИначеЕсли С.ПериодДоставки = "Период 2" Тогда
// С.Водитель = Стр.ВодительРазрешенный;
// ЛимитЗаказов2 = ЛимитЗаказов2 + 1;
// С.Лимит = 1;
// ИтогПоПериоду2 = ИтогПоПериоду2 + 1;
// С.ИтогПоПериоду = ИтогПоПериоду2;
// КолВоЗаказовНаВодителя = КолВоЗаказовНаВодителя +1;
// Если С.ИтогПоПериоду <=8 Тогда
// С.Поле1 = Истина;
// Иначе
// С.Поле1 = Ложь;
// КонецЕсли
// ИначеЕсли С.ПериодДоставки = "Период 3" Тогда
// С.Водитель = Стр.ВодительРазрешенный;
// ЛимитЗаказов3 = ЛимитЗаказов3 + 1;
// С.Лимит = 1;
// ИтогПоПериоду3 = ИтогПоПериоду3 + 1;
// С.ИтогПоПериоду = ИтогПоПериоду3;
// КолВоЗаказовНаВодителя = КолВоЗаказовНаВодителя +1;
// Если С.ИтогПоПериоду <=8 Тогда
// С.Поле1 = Истина;
// Иначе
// С.Поле1 = Ложь;
// КонецЕсли
// КонецЕсли;
//
// КонецЕсли;

// КонецЦикла;
// ЛимитЗаказов1 = 0;
// ЛимитЗаказов2 = 0;
// ЛимитЗаказов3 = 0;
// КолВоЗаказовНаВодителя = 0;
// ИтогПоПериоду1 = 8;
// ИтогПоПериоду2 = 8;
// ИтогПоПериоду3 = 8;
//КонецЦикла;

    Данные.Сортировать("Водитель,ПериодДоставки Возр,ИтогПоПериоду Возр");

СхеммаКомпоновкиДанных = ПолучитьМакет("Макет");


ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

КомпановщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпановки = КомпановщикМакета.Выполнить(СхеммаКомпоновкиДанных,Настройки,ДанныеРасшифровки);

ВнешнийНаборДанных = Новый Структура("ДанныеРаспределения",Данные);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпановки,ВнешнийНаборДанных,ДанныеРасшифровки);

ДокументРезультат.Очистить();

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск