Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1С Программирование и поддержка (1C)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

vizlipuzli

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Функция СформироватьЗапросДляПечатиДоговора()
 
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
    Запрос.УстановитьПараметр("ДатаРегистратора", СсылкаНаОбъект.Дата);
    Запрос.УстановитьПараметр("Регистратор", СсылкаНаОбъект);
    Запрос.УстановитьПараметр("Организация", СсылкаНаОбъект.Организация);
    
    // Сперва определим список физических лиц из табличной части документа  
    //(это будет необходимо для оптимизации последующих запросов)
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    |    КадровоеПеремещение.ФизЛицо КАК ФизЛицо
    |ПОМЕСТИТЬ ВТ_СписокФизЛиц
    |ИЗ
    |    Документ.КадровоеПеремещениеОрганизаций.РаботникиОрганизации КАК КадровоеПеремещение
    |ГДЕ
    |    КадровоеПеремещение.Ссылка = &Регистратор
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    ФизЛицо";
    
    Запрос.Выполнить();
    
    // Получим юр. адерес организации
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
    |    КонтактнаяИнформация.Представление КАК АдресОрганизации
    |ПОМЕСТИТЬ ВТ_АдресОрганизации
    |ИЗ
    |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    |    КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
    |    И КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресОрганизации)
    |    И КонтактнаяИнформация.Объект = &Организация";
    
    Запрос.Выполнить();
    
    // Соберем паспортные данные по физическим лицам
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо КАК ФизЛицо,
    |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия КАК СерияДок,
    |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер КАК НомерДок,
    |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи КАК ДатаВыдачи,
    |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК КемВыдан
    |ПОМЕСТИТЬ ВТ_ПаспортныеДанные
    |ИЗ
    |    РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(
    |            &ДатаРегистратора,
    |            ФизЛицо В
    |                    (ВЫБРАТЬ
    |                        СписокФизЛиц.ФизЛицо
    |                    ИЗ
    |                        ВТ_СписокФизЛиц КАК СписокФизЛиц)
    |                И ДокументВид = ЗНАЧЕНИЕ(Справочник.ДокументыУдостоверяющиеЛичность.ИМНС21)) КАК ПаспортныеДанныеФизЛицСрезПоследних
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    ФизЛицо";
    
    Запрос.Выполнить();
    
    // Определим предыдущую должность сотрудников (до начала действия документа)
    // Данный алгоритм взят из документа "Кадровое перемещение" целиком , как был
    // Сотрудников далее будем соединять по номеру строки
    Запрос.Текст = "
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    Сотрудники.Сотрудник,
    |    Сотрудники.ДатаНачала,
    |    Сотрудники.НомерСтроки
    |ПОМЕСТИТЬ ВТ_ТаблицаСотрудников
    |ИЗ
    |    Документ.КадровоеПеремещениеОрганизаций.РаботникиОрганизации КАК Сотрудники
    |ГДЕ
    |    Сотрудники.Ссылка = &Регистратор
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    ТаблицаСотрудников.Сотрудник,
    |    ВЫБОР
    |        КОГДА ДанныеПоРаботникуДоНазначения.ПериодЗавершения <= ТаблицаСотрудников.ДатаНачала
    |                И ДанныеПоРаботникуДоНазначения.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    |            ТОГДА ДанныеПоРаботникуДоНазначения.ДолжностьЗавершения
    |        ИНАЧЕ ДанныеПоРаботникуДоНазначения.Должность
    |    КОНЕЦ КАК Должность,
    |    ТаблицаСотрудников.НомерСтроки,
    //  измнения для вывода Подразделения
    |    ВЫБОР
    |        КОГДА ДанныеПоРаботникуДоНазначения.ПериодЗавершения <= ТаблицаСотрудников.ДатаНачала
    |                И ДанныеПоРаботникуДоНазначения.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    |            ТОГДА ДанныеПоРаботникуДоНазначения.ПодразделениеОрганизацииЗавершения
    |        ИНАЧЕ ДанныеПоРаботникуДоНазначения.ПодразделениеОрганизации
    |    КОНЕЦ КАК Подразделение
    //
    |ПОМЕСТИТЬ ВТ_ДолжностьПрежняя
    |ИЗ
    |    ВТ_ТаблицаСотрудников КАК ТаблицаСотрудников
    |        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |            ДатыПоследнихДвиженийРаботников.Период КАК Период,
    |            ДанныеПоРаботникуДоНазначения.ПериодЗавершения КАК ПериодЗавершения,
    |            ДатыПоследнихДвиженийРаботников.Сотрудник КАК Сотрудник,
    |            ДанныеПоРаботникуДоНазначения.Должность КАК Должность,
    |            ДанныеПоРаботникуДоНазначения.ДолжностьЗавершения КАК ДолжностьЗавершения,
    // изменения для вывода Подразделения
    |            ДанныеПоРаботникуДоНазначения.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    |            ДанныеПоРаботникуДоНазначения.ПодразделениеОрганизацииЗавершения КАК ПодразделениеОрганизацииЗавершения
    //        
    |        ИЗ
    |            (ВЫБРАТЬ
    |                МАКСИМУМ(Работники.Период) КАК Период,
    |                ТаблицаСотрудников.Сотрудник КАК Сотрудник
    |            ИЗ
    |                ВТ_ТаблицаСотрудников КАК ТаблицаСотрудников
    |                    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК Работники
    |                    ПО (Работники.Период <= ТаблицаСотрудников.ДатаНачала)
    |                        И ТаблицаСотрудников.Сотрудник = Работники.Сотрудник
    |                        И (Работники.Регистратор <> &Регистратор)
    |            
    |            СГРУППИРОВАТЬ ПО
    |                ТаблицаСотрудников.Сотрудник) КАК ДатыПоследнихДвиженийРаботников
    |                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК ДанныеПоРаботникуДоНазначения
    |                ПО (ДанныеПоРаботникуДоНазначения.Период = ДатыПоследнихДвиженийРаботников.Период)
    |                    И ДатыПоследнихДвиженийРаботников.Сотрудник = ДанныеПоРаботникуДоНазначения.Сотрудник
    |                    И (ДанныеПоРаботникуДоНазначения.Регистратор <> &Регистратор)) КАК ДанныеПоРаботникуДоНазначения
    |        ПО ТаблицаСотрудников.Сотрудник = ДанныеПоРаботникуДоНазначения.Сотрудник
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |УНИЧТОЖИТЬ ВТ_ТаблицаСотрудников";
    
    Запрос.Выполнить();
    
    // Соберем данные по строкам документа: по обеим табличным частям. Одновременно допишем прежнюю должность.
    // Контроль изменения должности будем проводить позже.
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    КадровыеИзменения.Сотрудник,
    |    КадровыеИзменения.ФизЛицо,
    |    КадровыеИзменения.Ссылка.Дата КАК ДатаПриказа,
    |    КадровыеИзменения.ДатаНачала КАК ДатаНачала,
    |    КадровыеИзменения.ФизЛицо.ДатаРождения КАК ДатаРождения,
    |    КадровыеИзменения.ФизЛицо.ИНН КАК ИНН,
    |    КадровыеИзменения.ФизЛицо.СтраховойНомерПФР КАК ПФР,
    |    ВЫБОР
    |        КОГДА КадровыеИзменения.ФизЛицо.Пол = ЗНАЧЕНИЕ(Перечисление.ПолФизическихЛиц.Женский)
    |            ТОГДА ""именуемая""
    |        ИНАЧЕ ""именуемый""
    |    КОНЕЦ КАК Именование,
    |    КадровыеИзменения.Должность КАК ДолжностьНовая,
    |    0 КАК Оклад,
    |    ВТ_ДолжностьПрежняя.Должность КАК ДолжностьПрежняя,
    // изменения для вывода Подразделения
    |    ВТ_ДолжностьПрежняя.Подразделение КАК ПодразделениеПрежнее,
    |    КадровыеИзменения.ПодразделениеОрганизации КАК ПодразделениеНовое,
    //
    |    КадровыеИзменения.Ссылка.Организация
    |ПОМЕСТИТЬ ВТ_Предварительная
    |ИЗ
    |    Документ.КадровоеПеремещениеОрганизаций.РаботникиОрганизации КАК КадровыеИзменения
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ДолжностьПрежняя КАК ВТ_ДолжностьПрежняя
    |        ПО КадровыеИзменения.Сотрудник = ВТ_ДолжностьПрежняя.Сотрудник
    |            И КадровыеИзменения.НомерСтроки = ВТ_ДолжностьПрежняя.НомерСтроки
    |ГДЕ
    |    КадровыеИзменения.Ссылка = &Регистратор
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    НазначаемыеНачисления.Сотрудник,
    |    НазначаемыеНачисления.ФизЛицо,
    |    НазначаемыеНачисления.Ссылка.Дата,
    |    ДАТАВРЕМЯ(1, 1, 1),
    |    НазначаемыеНачисления.ФизЛицо.ДатаРождения,
    |    НазначаемыеНачисления.ФизЛицо.ИНН,
    |    НазначаемыеНачисления.ФизЛицо.СтраховойНомерПФР,
    |    ВЫБОР
    |        КОГДА НазначаемыеНачисления.ФизЛицо.Пол = ЗНАЧЕНИЕ(Перечисление.ПолФизическихЛиц.Женский)
    |            ТОГДА ""именуемая""
    |        ИНАЧЕ ""именуемый""
    |    КОНЕЦ,
    |    ЗНАЧЕНИЕ(Справочник.ДолжностиОрганизаций.ПустаяСсылка),
    |    НазначаемыеНачисления.Показатель1,
    |    ЗНАЧЕНИЕ(Справочник.ДолжностиОрганизаций.ПустаяСсылка),
    // изменения для вывода Подразделения  
    |    ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка),
    |    ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка),
    //
    |    НазначаемыеНачисления.Ссылка.Организация
    |ИЗ
    |    Документ.КадровоеПеремещениеОрганизаций.ОсновныеНачисления КАК НазначаемыеНачисления
    |ГДЕ
    |    НазначаемыеНачисления.Ссылка = &Регистратор
    |    И (НЕ(НазначаемыеНачисления.Действие = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.НеИзменять)
    |                ИЛИ НазначаемыеНачисления.Действие = ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)))
    |    И (НазначаемыеНачисления.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоДням)
    |            ИЛИ НазначаемыеНачисления.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам))";
    
    Запрос.Выполнить();
    
    // Далее свернем временную таблицу по сотрудникам
    Запрос.Текст = "ВЫБРАТЬ
    |    ВТ_Предварительная.Сотрудник КАК Сотрудник,
    |    ВТ_Предварительная.ФизЛицо КАК ФизЛицо,
    |    ВТ_Предварительная.ДатаПриказа,
    |    МАКСИМУМ(ВТ_Предварительная.ДатаНачала) КАК ДатаНачала,
    |    ВТ_Предварительная.ДатаРождения,
    |    ВТ_Предварительная.ИНН,
    |    ВТ_Предварительная.ПФР,
    |    МАКСИМУМ(ВТ_Предварительная.Именование) КАК Именование,
    |    МАКСИМУМ(ВТ_Предварительная.ДолжностьНовая) КАК ДолжностьНовая,
    |    СУММА(ВТ_Предварительная.Оклад) КАК Оклад,
    |    ВТ_Предварительная.Организация,
    |    МАКСИМУМ(ВТ_Предварительная.ДолжностьПрежняя) КАК ДолжностьПрежняя,
    //  изменения для вывода Подразделения
    |    МАКСИМУМ(ВТ_Предварительная.ПодразделениеПрежнее) КАК ПодразделениеПрежнее,
    |    МАКСИМУМ(ВТ_Предварительная.ПодразделениеНовое) КАК ПодразделениеНовое
    //
    |ПОМЕСТИТЬ ВТ_ДанныеДокумента
    |ИЗ
    |    ВТ_Предварительная КАК ВТ_Предварительная
    |
    |СГРУППИРОВАТЬ ПО
    |    ВТ_Предварительная.Сотрудник,
    |    ВТ_Предварительная.ФизЛицо,
    |    ВТ_Предварительная.ДатаПриказа,
    |    ВТ_Предварительная.ДатаРождения,
    |    ВТ_Предварительная.ИНН,
    |    ВТ_Предварительная.ПФР,
    |    ВТ_Предварительная.Организация
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Сотрудник,
    |    ФизЛицо
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |УНИЧТОЖИТЬ ВТ_Предварительная
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |УНИЧТОЖИТЬ ВТ_ДолжностьПрежняя";
    
    Запрос.Выполнить();
    
    // Выполним запрос по ответственным лицам организации
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
    |    ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо КАК ФизЛицоРуководителя,
    |    ВЫБОР
    |        КОГДА ОтветственныеЛицаОрганизацийСрезПоследних.СтруктурнаяЕдиница.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицо)
    |            ТОГДА ОтветственныеЛицаОрганизацийСрезПоследних.Должность
    |        ИНАЧЕ ""Индивидуальный предприниматель""
    |    КОНЕЦ КАК ДолжностьРуководителя,
    |    ФИОФизЛицСрезПоследних.Фамилия,
    |    ФИОФизЛицСрезПоследних.Имя,
    |    ФИОФизЛицСрезПоследних.Отчество
    |ПОМЕСТИТЬ ВТ_ОтветственныеЛица
    |ИЗ
    |    РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(&ДатаРегистратора, СтруктурнаяЕдиница = &Организация) КАК ОтветственныеЛицаОрганизацийСрезПоследних
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(&ДатаРегистратора, ) КАК ФИОФизЛицСрезПоследних
    |        ПО ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо = ФИОФизЛицСрезПоследних.ФизЛицо
    |ГДЕ
    |    ОтветственныеЛицаОрганизацийСрезПоследних.ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель)";
                    
    Запрос.Выполнить();  
    
    // Соберем все таблицы в кучку и добавим недостающие данные.
    // При этом контролируем, что бы в запрос попадали только сотрудники по которым есть  
    // изменение должности, либо назначен новый оклад (то есть он не равен нулю => это условие предыдущего запроса-объединения)
    // Данный контроль нельзя было проводить в запросе с группировкой полей - вызывает ошибку в определении "Дата начала"
    Запрос.Текст = "ВЫБРАТЬ
    |    ВТ_ДанныеДокумента.Сотрудник,
    |    ВТ_ДанныеДокумента.ФизЛицо,
    |    ФИОФизЛицСрезПоследних.Фамилия,
    |    ФИОФизЛицСрезПоследних.Имя,
    |    ФИОФизЛицСрезПоследних.Отчество,
    |    ВТ_ДанныеДокумента.ДатаПриказа,
    |    ВТ_ДанныеДокумента.ДатаНачала,
    |    ВТ_ДанныеДокумента.ДатаРождения,
    |    ВТ_ДанныеДокумента.ИНН,
    |    ВТ_ДанныеДокумента.ПФР,
    |    ВТ_ДанныеДокумента.Именование,
    |    ВТ_ДанныеДокумента.ДолжностьНовая,
    |    ВТ_ДанныеДокумента.ДолжностьПрежняя,
    |    ВТ_ДанныеДокумента.Оклад КАК ОкладНовый,
    |    ЕСТЬNULL(ВТ_ПаспортныеДанные.СерияДок, """") КАК СерияДок,
    |    ЕСТЬNULL(ВТ_ПаспортныеДанные.НомерДок, """") КАК НомерДок,
    |    ЕСТЬNULL(ВТ_ПаспортныеДанные.ДатаВыдачи, """") КАК ДатаВыдачи,
    |    ЕСТЬNULL(ВТ_ПаспортныеДанные.КемВыдан, """") КАК КемВыдан,
    |    ЕСТЬNULL(КонтактнаяИнформация.Представление, """") КАК АдресСотрудника,
    |    ВТ_ДанныеДокумента.ФизЛицо.Пол КАК Пол,
    |    ВТ_ДанныеДокумента.Организация,
    |    ЕСТЬNULL(ВТ_ОтветственныеЛица.ФизЛицоРуководителя, ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)) КАК ФизЛицоРуководителя,
    |    ЕСТЬNULL(ВТ_ОтветственныеЛица.ДолжностьРуководителя, ЗНАЧЕНИЕ(Справочник.ДолжностиОрганизаций.ПустаяСсылка)) КАК ДолжностьРуководителя,
    |    ВТ_ОтветственныеЛица.Фамилия КАК ФамилияРуководителя,
    |    ВТ_ОтветственныеЛица.Имя КАК ИмяРуководителя,
    |    ВТ_ОтветственныеЛица.Отчество КАК ОтчествоРуководителя,
    |    ВТ_ОтветственныеЛица.ФизЛицоРуководителя.Пол КАК ПолРуководителя,
    |    ВТ_ДанныеДокумента.Сотрудник.ДатаДоговора КАК ДатаДоговора,
    |    ВТ_ДанныеДокумента.Сотрудник.НомерДоговора КАК НомерДоговора,
    |    ЕСТЬNULL(ВТ_АдресОрганизации.АдресОрганизации, """") КАК АдресОрганизации,
    //  изменения для вывода Подразделения
    |    ВТ_ДанныеДокумента.ПодразделениеПрежнее,
    |    ВТ_ДанныеДокумента.ПодразделениеНовое    
    //
    |ИЗ
    |    ВТ_ДанныеДокумента КАК ВТ_ДанныеДокумента
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПаспортныеДанные КАК ВТ_ПаспортныеДанные
    |        ПО ВТ_ДанныеДокумента.ФизЛицо = ВТ_ПаспортныеДанные.ФизЛицо
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
    |                &ДатаРегистратора,
    |                ФизЛицо В
    |                    (ВЫБРАТЬ
    |                        СписокФизЛиц.ФизЛицо
    |                    ИЗ
    |                        ВТ_СписокФизЛиц КАК СписокФизЛиц)) КАК ФИОФизЛицСрезПоследних
    |        ПО ВТ_ДанныеДокумента.ФизЛицо = ФИОФизЛицСрезПоследних.ФизЛицо
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |        ПО ВТ_ДанныеДокумента.ФизЛицо = КонтактнаяИнформация.Объект
    |            И (КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ИнформАдресФизЛица))
    |            И (КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОтветственныеЛица КАК ВТ_ОтветственныеЛица
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_АдресОрганизации КАК ВТ_АдресОрганизации
    |        ПО (ИСТИНА)
    // изменения для вывода данных при не изменившихся должности и окладе
    //|ГДЕ
    //|    ((НЕ ВТ_ДанныеДокумента.ДолжностьНовая = ВТ_ДанныеДокумента.ДолжностьПрежняя)
    //|            ИЛИ (НЕ ВТ_ДанныеДокумента.Оклад = 0))
    //
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |УНИЧТОЖИТЬ ВТ_ПаспортныеДанные
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |УНИЧТОЖИТЬ ВТ_ДанныеДокумента";
    
    Возврат Запрос.Выполнить();
 
КонецФункции // СформироватьЗапросДляПечати()

Всего записей: 4038 | Зарегистр. 17-08-2005 | Отправлено: 14:16 31-08-2011
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1С Программирование и поддержка (1C)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru