Удаление документов для любых баз на управляемых формах

Публикация № 1121943

Администрирование - Администрирование данных 1С - Чистка базы

Удаление и распроведение документов для любых баз на УФ.

Всем привет!

Решал задачу - создания новой базы для новой организации, но с теми же контрагентами и номенклатурой.

Самым простым решением стало - скопировать имеющуюся базу и почистить ее от всех документов. Так и родилась данная обработка.

Разрабатывалась на конфигурации, платформа 1С:Предприятие 8.3 (8.3.13.1644) :

  - Бухгалтерия предприятия, редакция 3.0 (3.0.71.89).

Также протестирована с успехом была на:

  - Зарплата и управление персоналом, редакция 3.1 (3.1.7.61)

Для ряда конфигураций потребуется Ваше вмешательство и Ваши дополнительные доработки! Читайте, пожалуйста, комментарии.

Удаление работает, но к примеру, Распроведение еще не отлажено на конфигурациях (но следите за изменениями):

  - Управление нашей фирмой, редакция 1.6 (1.6.13.54) (ошибка в документе ПоказателиЕНВД)

  - Розница, редакция 2.2 (2.2.11.29) (есть нюансы с Чеками ККМ, пример тут //cat.1module.ru/public/1115171/)

Данные ограничения можно обойти с помощью списков из п.7.

Немного теории и практики.

1. Если надо удалить/распровести документы до определенной даты, то ставьте в поле "До даты" любой период. По умолчанию период устанавливается текущей датой. Можете указать организацию, иначе будут обработаны документы без учета организации.

 
 Не все документы имеют реквизит "Организация" - необходима проверка на организацию

2. При свертке баз я уже неоднократно использовал удаление только помеченных на удаление документов. Получается так, что те документы, которые вы хотите удалить, вы заранее помечаете на удаление с помощью например групповой обработки документов. И наоборот, те документы, которые не нужно удалять, вы не помечаете на удаление.

Пример свертки и удаления только помеченных на удаление документов: //cat.1module.ru/public/1033813/

В связи с этим добавлена функциональность

3. Однажды удалял документы на измененной типовой базе и столкнулся с тем, что документ-регистратор был удален из базы без проверки связанных ссылок, а записи по регистру сведений удалены не были. После чего программно или интерактивно удалить записи из регистра не удается! Задействовал "Тестирование и исправление" с режимом "создания объекта - при наличии ссылок на несуществующие объекты". После чего почистил записи.

Так как в той ситуации подобных баз было несколько (филиальная сеть) - решил перед удалением распровести документы. И так появилась еще одна функциональность "Распроводить документы перед удалением":

 

4. В дальнейшем, идея распроводить документы перед удалением мне понравилась, и я выделил "Распроведение документов" в отдельный функционал:

 
 Не все документы имеют разрешение на проведение при записи - необходима проверка свойства

5. Иногда при чистке баз требуется оставить вместе с номенклатурой цены, поэтому появилась функциональность "Не удалять документы Установка цен номенклатуры":

6. После удаления документов без проверок связанных ссылок, необходимо почистить вручную все зарегистрированные изменения для обмена. В моем случае в исходной базе был настроен обмен с УТ.

Не забудьте обнулить номера сообщений.

7. Добавил возможность отбирать документы для удаления / распроведения в виде прямых и обратных списков: "Обрабатывать только из списка" и "Не обрабатывать из этого списка".

 

С помощью данных списков можно исключить из обработки документы, по которым специфичным образом настроены типовые механизмы и из-за которых, к примеру, нельзя распровести документы перед удалением. См. нюансы отладки Розницы и УНФ в начале статьи.

ПС. Во время разработки понадобилось узнать максимальную длину наименований документов в БП, разработал вспомогательную обработку (прикладываю в публикации). Оказалось, что в БП максимальная длина документов составляет 93 символа (см. вложенные скрины). 

 
 См. также

 

Всем добра! :)

С пользой для клиентов, Rustig

 

Скачать файлы

Наименование Файл Версия Размер
Удаление документов для любых типовых баз на УФ (управляемых формах)

.epf 11,70Kb
12.09.19
75
.epf 11,70Kb 75 Скачать
Максимальная длина наименований объектов метаданных

.epf 5,93Kb
04.02.20
1
.epf 5,93Kb 1 Скачать

Специальные предложения

Лучшие комментарии
4. Rustig 1552 30.10.19 16:08 Сейчас в теме
(2) есть же стандарт разработки - когда перед записью встраивается конструкция Если ОбменДанными.Загрузка = Истина Тогда никакие проверки не делаются!

В этом случае можно удалить /загрузить/распровести / использовать групповую типовую обработку.

Если это правило игнорируется, и ставятся проверки до этой конструкции, то групповой обработкой уже не воспользуешься, ибо у вас есть связанные отгрузки.

В Рознице 2.2 с чеками ровно такая проблема.
19. Rustig 1552 12.11.19 11:48 Сейчас в теме
(14) Знаете, я попробовал Удалить документы без распроведения.
В итоге, удалилось.

Единственно, ошибка вышла:
{ВнешняяОбработка.УдалитьВсеДокументыБезПроверки.Форма.Форма.Форма(181)}: Ошибка при вызове метода контекста (Удалить)
			Док.Удалить();              
по причине:
Ошибка при выполнении обработчика - 'ПередУдалением'
по причине:
{ОбщийМодуль.ЗапасыСервер.Модуль(11222)}: По документу Передача товаров ТД00-000048 от 31.03.2017 23:59:59 есть движения в регистре РезервыТоваровОрганизаций. Удаление документа невозможно.
		ВызватьИсключение ТекстИсключения;


Собственно, перед удалением что-то там проверяется и то только для одного вида документа (в список документов не попали документы после 07.04.2017г) - возможно есть другие виды документов, перед удалением которых проверяется что-то.

...Но в целом, удалились все документы до 07.04.2017.
Уже начинаю думать, что разработчики УТ 11 правильно сделали - зачем распроводить документы, тем более связанные ?!
Если надо удалить и почистить базу - то, пож-та, удаляйте и чистите.
Но при этом не надо распроводить.... :)
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Rustig 1552 22.09.19 06:10 Сейчас в теме
2. born85 54 30.10.19 11:17 Сейчас в теме
Не все документы удаляет. Например в ут 11.4 (можно в демо базе посмотреть) документы по которым были отгрузки - не удаляет.
3. Rustig 1552 30.10.19 15:58 Сейчас в теме
(2) ок, посмотрю.

на всякий случай, напишу, что УТ 11.4 не входило в список тестируемых конфигураций.

P.S. Замечу, что запрет на удаление документов, по которым были отгрузки - это на уровне алгоритмов запреты.
Возможно стоит их обойти так: сначала помечаете на удаление все связанные
отгрузки.
Потом уже основные документы.
То есть имеет значение порядок чистки документов.
7. born85 54 30.10.19 17:07 Сейчас в теме
(3) Зачем в описании вводите в заблуждение тогда "Удаление и распроведение документов для любых баз на УФ"
9. Rustig 1552 30.10.19 17:38 Сейчас в теме
(7) В описании все честно написано - на каких конфигурациях тестировалась. Никого не ввожу в заблуждение.
Для удаления используется платформенная процедура ДокументОбъект.Удалить()
Если по каким-то причинам разработчики конфигураций блокируют удаление на уровне алгоритмов, прав доступа и т.д., то я бы посоветовал писать им в техподдержку.
Я считаю, что у полных прав должны быть права и возможности удалять документы в базах.
И этому поможет моя универсальная обработка (примитивная донельзя, но порой необходимая).
К вашему замечанию я прислушаюсь, гляну что там за проблемы удаления/распроведения в УТ 11.4.
11. born85 54 30.10.19 17:43 Сейчас в теме
(9) Я Вас понимаю, и от части разделяю Вашу точку зрения. Но в данном случае нельзя обработку считать универсальных средством и писать что работает во всех УФ - это не соответствует действительности. А так - да, обработка рабочая, но очень медленная, например при удалении движения не плохо бы в метаданных сразу проверять есть движения (проведен или нет) нежеле далее по циклу гнать в алгоритм, это бы ускорило немного ее.. В общем это придирки, по большому счету все сделано на быструю руку..
13. Rustig 1552 30.10.19 17:46 Сейчас в теме
(11) Доработаю, только спроса ведь на доработку до сих пор никто не высказывал. Спасибо что написали замечание и рекомендации дали.
Я ведь не в курсе, кому она нужна и интересна.
Обратную связь мало кто оставляет.
15. born85 54 30.10.19 17:48 Сейчас в теме
(13) Ну я например скачал за внутрисайтовые мани. И указал на замечания. На счет спроса - вам виднее статистику использования.
4. Rustig 1552 30.10.19 16:08 Сейчас в теме
(2) есть же стандарт разработки - когда перед записью встраивается конструкция Если ОбменДанными.Загрузка = Истина Тогда никакие проверки не делаются!

В этом случае можно удалить /загрузить/распровести / использовать групповую типовую обработку.

Если это правило игнорируется, и ставятся проверки до этой конструкции, то групповой обработкой уже не воспользуешься, ибо у вас есть связанные отгрузки.

В Рознице 2.2 с чеками ровно такая проблема.
5. Rustig 1552 30.10.19 16:31 Сейчас в теме
(2) что за фраза "документы по которым были отгрузки" ?
я понимаю, как связанные с реализацией документы. В этом случае, реализация - это отгрузка. И есть связанные с ней документы - счет на оплату, заказ покупателя, м.б. расходный ордер на товар.
Поясните вашу фразу пож-та.
6. born85 54 30.10.19 17:06 Сейчас в теме
(5) Документы покупателей по котором были частичные или полные отгрузки. Соответственно - эти документы ваша обработка пропускает.
8. Rustig 1552 30.10.19 17:32 Сейчас в теме
(6)
Документы покупателей по котором были частичные или полные отгрузки

опять непонятно.
"Отгрузка" это и есть документ "Реализация товаров и услуг". У вас фраза звучит как "Документы по которым были документы".

Отгрузка может быть по товарам или по покупателям. Но по документам отгрузка быть не может.

Смысл фразы какой?
10. born85 54 30.10.19 17:39 Сейчас в теме
(8) Возможно не правильно сформулирован, но суть же понятна Вам, для примера так же привел конфигурацию - т.е. повторить ситуацию - возможность есть. В данных условиях обработка не работает. Если устраните - будет здорово.
12. Rustig 1552 30.10.19 17:44 Сейчас в теме
(10) Ладно, посмотрю УТ 11.4.
Только не понял какую ситуацию моделировать, и на каких документах проверять.
14. born85 54 30.10.19 17:47 Сейчас в теме
(12) Не поленюсь и добавлю скриншот с настройкой в демо базе ут последней. Посмотрите после отработки - документы останутся с движениями.

Управление торговлей, редакция 11 (11.4.5.111) (http://v8.1c.ru/trade/)
Copyright © ООО "1С-Софт", 2003-2018. Все права защищены
(http://www.1c.ru)
Прикрепленные файлы:
16. born85 54 30.10.19 17:49 Сейчас в теме
(14) Здесь посмотрите - после всех манипуляций - останутся документы не "распроведенные", так же с удалением.
17. Rustig 1552 12.11.19 10:53 Сейчас в теме
(14) Расследование причин не закончено. Но вот, что уже выявлено:

1) В УТ 11 по-умолчанию запущено много фоновых и регламентных заданий - их надо отключить - тогда обработка отработает быстрее

2) В УТ 11 - много подписок на события, которые срабатывают ПередЗаписью документов, при этом проверяется кроме параметра ОбменДанными.Загрузка - различные параметры подобно Источник.ДополнительныеСвойства.Свойство("ПропуститьЗаписьВерсииОбъекта")
или Объект.ДополнительныеСвойства.Свойство("ЗаписатьНаборыЗначенийДоступа")
и еще что-то... Но пока особо непонятно - насколько допсвойства влияют на универсальные групповые обработки документов...

возможно для других целей это знание пригодится - то есть, чтобы реализовать универсально что-то - необходимо знать и учитывать все ДопСвойства...

3) Попробовал программно распровести Заказ ТД0000...3 от 06.04.2017 с помощью текущей обработки - вышла ошибка - смотрю Журнал регистрации - транзакция отменена на объекте РегистрСведений ГрафикПлатежей - это независимый и непериодический регистр....

Хм, попробовал распровести этот заказ интерактивно - распровелся запросто - попробовал провести снова - вышла ошибка - не проводит, то есть заложена функциональность такая - что случайно можно распровести вручную, а вернуть в исходное состояние уже нельзя.... ловушка для пользователей ?!.

Покамест отложу процесс поиска причин....
18. Rustig 1552 12.11.19 11:36 Сейчас в теме
(14) собственно ни один документ нельзя распровести интерактивно (то есть вручную)... надо разбираться с функционалом... искать точки обхода блокировок распроведения...
Прикрепленные файлы:
19. Rustig 1552 12.11.19 11:48 Сейчас в теме
(14) Знаете, я попробовал Удалить документы без распроведения.
В итоге, удалилось.

Единственно, ошибка вышла:
{ВнешняяОбработка.УдалитьВсеДокументыБезПроверки.Форма.Форма.Форма(181)}: Ошибка при вызове метода контекста (Удалить)
			Док.Удалить();              
по причине:
Ошибка при выполнении обработчика - 'ПередУдалением'
по причине:
{ОбщийМодуль.ЗапасыСервер.Модуль(11222)}: По документу Передача товаров ТД00-000048 от 31.03.2017 23:59:59 есть движения в регистре РезервыТоваровОрганизаций. Удаление документа невозможно.
		ВызватьИсключение ТекстИсключения;


Собственно, перед удалением что-то там проверяется и то только для одного вида документа (в список документов не попали документы после 07.04.2017г) - возможно есть другие виды документов, перед удалением которых проверяется что-то.

...Но в целом, удалились все документы до 07.04.2017.
Уже начинаю думать, что разработчики УТ 11 правильно сделали - зачем распроводить документы, тем более связанные ?!
Если надо удалить и почистить базу - то, пож-та, удаляйте и чистите.
Но при этом не надо распроводить.... :)
20. born85 54 12.11.19 19:33 Сейчас в теме
(19) По сути проблемы есть по функционалу обработки в приведенной мной базе, не так как "изначально подразумевался функционал работает", свою проблему я решил быстро переписав часть функционала под клиента, Вам как автору сообщил о не доработках, т.к. так же как и все скачивал за старт мани и обидно что то дописывать в таких случаях (читай как лениво) - точнее о поведении обработки в конкретной базе, далее на ваше усмотрение - поправите хорошо, нет так нет ).

Хорошего вечера.
21. Rustig 1552 13.11.19 12:52 Сейчас в теме
22. user1347514 14.08.20 22:40 Сейчас в теме
ошибка и не распроводит документы .
Управление нашей фирмой, редакция 1.6 (1.6.20.178)
Прикрепленные файлы:
23. Rustig 1552 15.08.20 15:05 Сейчас в теме
(22)
Удаление работает, но к примеру, Распроведение еще не отлажено на конфигурациях (но следите за изменениями):

- Управление нашей фирмой, редакция 1.6 (1.6.13.54) (ошибка в документе ПоказателиЕНВД)

- Розница, редакция 2.2 (2.2.11.29) (есть нюансы с Чеками ККМ, пример тут //infostart.ru/public/1115171/)

Данные ограничения можно обойти с помощью списков из п.7.
Оставьте свое сообщение

См. также

Список заказов поставщикам (новая форма) + два ноу-хау для разработчиков Промо

Рабочее место Дебиторская и кредиторская задолженность Оптовая торговля Дебиторская и кредиторская задолженность Оптовая торговля v8 v8::ОУ КА1 УТ10 УУ Платные (руб)

Представлена внешняя обработка - "Список заказов поставщикам (новая форма)". Удобство заключается в том, что в одном окне списка отображается структура всех связанных документов с указанием контрагента (заказ поставщику - поступление товаров - заказ покупателя - реализация товаров - оплата товара покупателем). В этом же окне отображается список товаров с заказанным количеством и ценами. Имеется возможность видеть статусы заказов по цветам (исполнен, выполняется, черновик). Форму легко встроить в типовую конфигурацию.

1100 руб.

31.08.2017    21038    18    18    

Этикетки складских ячеек со стрелками

Учет ТМЦ Ценники Адаптация типовых решений v8 ERP2 УТ11 КА2 Абонемент ($m)

Расширение для КА 2.4 - набор шаблонов для этикеток ячеек со стрелками вверх, вниз, вправо, влево

4 стартмани

14.09.2020    340    0    Rustig    11    

Вывод из оборота марок

Практика программирования Розничная торговля v8 1cv8.cf УТ10 УУ Абонемент ($m)

Вывод марок из оборота, например при розничных продажах, через передачу сведений в Честный Знак через XML-файл.

2 стартмани

03.08.2020    1328    1    Rustig    12    

Списание кодов маркировки, нанесенных на обувь

Практика программирования Розничная торговля v8 УТ10 УУ Абонемент ($m)

Списание марок обуви, введенных в оборот: описание + реализация. УТ 10.3.

2 стартмани

15.07.2020    2115    3    Rustig    0    

Большие запросы: взгляд на проблему Промо

Практика программирования v8::Запросы 1cv8.cf Бесплатно (free)

Большой (кусочный) запрос подобен карточному домику: строится долго, а захочется поменять карту из середины строения – домик разрушится. На примере учета задолженностей контрагентов в разрезе полугодий (не типовой учет БП, и не ЗУПовский) я покажу, как я изменил механизм учета и превратил «большой» запрос в «маленький», а дальнейшее сопровождение программы в сказку 1С-ника.

26.07.2013    29452    Rustig    43    

Маркировка обуви. Возврат в оборот с сохранением марки

Розничная торговля v8 УТ10 УУ Абонемент ($m)

Возврат в оборот с сохранением марки: описание + реализация. УТ 10.3.

2 стартмани

15.07.2020    2061    1    Rustig    1    

Как связать марки и товары при упрощенной схеме ввода остатков

Оптовая торговля Учет ТМЦ v8 v8::ОУ УТ10 УУ Абонемент ($m)

Обработка для связывания марок и товаров при упрощенной схеме ввода остатков.

2 стартмани

08.07.2020    2006    2    Rustig    0    

Повторная печать марок. УТ 10.3

Практика программирования Розничная торговля v8 УТ10 УУ Абонемент ($m)

Механизм повторной печати: описание и реализация для УТ 10.3. Применим для удобного просмотра марок для определения статуса!

2 стартмани

05.07.2020    1898    10    Rustig    16    

Программистские этюды Промо

Практика программирования v8 Бесплатно (free)

Рассматриваются задачи, связанные с учетом характеристик номенклатуры: 1) Обход итогов при партионном списании по ФИФО для пары Номенклатура+Характеристика 2) Обмен сведениями об остатках номенклатуры с помощью XML для пары Номенклатура+Характеристика Дополнительно. Внимание новичкам – типовая консоль запросов.

03.07.2012    27997    Rustig    36    

Параллельные вычисления расчета факториала числа N

Практика программирования v8 1cv8.cf Абонемент ($m)

Распараллеливание алгоритма с помощью фоновых заданий (асинхронные вычисления)

1 стартмани

29.06.2020    2433    Rustig    17    

Факториал числа N = N!

Практика программирования v8 УТ10 Абонемент ($m)

Алгоритмы расчета факториала числа

1 стартмани

28.06.2020    1150    Rustig    24    

Анализ возвратов денег за товар при сложных оплатах

Розничная торговля v8 v8::ОУ УТ10 УУ Абонемент ($m)

Разработан механизм для анализа чеков на возврат: помощник подсказывает, сколько и как можно вернуть денег - наличкой или безналом. Актуально для разбора сложных оплат.

2 стартмани

02.06.2020    1264    0    Rustig    0    

[Расширение] БП 3.0. Список счетов от поставщиков / Список поступлений + Связанные документы

Оптовая торговля Рабочее место v8 v8::БУ БП3.0 Платные (руб)

Список счетов от поставщиков и поступлений товаров и услуг + Структура подчиненности в одном окне. Расширение для программы БП 3.0.

3000 руб.

20.05.2020    2139    2    13    

[Расширение] БП 3.0. Список счетов/ Список реализаций + Связанные документы

Рабочее место Оптовая торговля v8 v8::БУ БП3.0 БУ Платные (руб)

Список счетов / список реализаций + Структура подчиненности в одном окне. Расширение для программы БП 3.0.

2000 руб.

09.04.2020    2926    4    6    

Подбор товаров по характеристикам (свойствам и значениям)

Оптовая торговля Розничная торговля Рабочее место Оптовая торговля Розничная торговля v8 КА1 УТ10 УНФ УУ Абонемент ($m)

Быстрый фильтр и отбор товаров (номенклатуры) по свойствам. Готовый механизм для УТ 10.3 и УНФ 1.6.

4 стартмани

14.04.2019    8274    16    Rustig    7    

Сравнение запросов

Инструментарий разработчика v8 v8::Запросы 1cv8.cf Абонемент ($m)

На входе - два разных запроса и две выборки с одинаковыми полями. На выходе - итоговая таблица показывает расхождения между полученными результатами запросов.

2 стартмани

16.03.2019    10171    14    Rustig    31    

Элементы внедрения системы адресного хранения на программе "Кортес: Адресный склад"

Управление проектом Учет ТМЦ Учет ТМЦ v8 КА1 УУ Абонемент ($m)

С чего начать внедрение адресного хранения склада? Возможно ли проводить безбумажную инвентаризацию? Не понимаете, о чем я спрашиваю? - Объясню по порядку.

1 стартмани

12.11.2018    11326    16    Rustig    40    

Рабочий стол кассира

ККМ Рабочее место Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8 v8::ОУ УТ10 Абонемент ($m)

Внешняя обработка - рабочий стол кассира (54-ФЗ) - с дополнительным функционалом для УТ 10.3. Тестировалась на ККМ Атол-30ф.

2 стартмани

18.07.2018    9870    16    Rustig    0    

Маркировка ячеек цветом. Отладка загрузки данных из эксель.

Практика программирования Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

После 100-ой кривой загрузки родился способ, как отладить алгоритм.

05.07.2018    9298    Rustig    7    

Печать ценников с одной и двумя ценами 55х40, 100х60, 140х200. УТ 10.3

Розничная торговля Ценники Розничная торговля v8 v8::ОУ УТ10 УУ Абонемент ($m)

Печать ценников с одной и двумя ценами специальных размеров под пластиковые подставки для ценников: 55х40, 70х40(Две цены), 90х60(Две цены), 100х60, 140х200 мм.

1 стартмани

26.03.2018    10826    9    Rustig    2    

Андроид-решение для создания заказов в 1С

Рабочее место Оптовая торговля Учет ТМЦ Оптовая торговля Учет ТМЦ v8 1cv8.cf УУ Абонемент ($m)

Разработка создает заказы в 1С на Андроид-телефонах через RDP-клиент. Описана технология подобных разработок.

3 стартмани

23.03.2018    23141    16    Rustig    113    

Загрузка номенклатуры из Эксель (новый взгляд)

Загрузка и выгрузка в Excel Обработка справочников Практика программирования v8 1cv8.cf Абонемент ($m)

Представлена обработка "Загрузка номенклатуры из Эксель" (новый взгляд). Подходит для любого формата и любой структуры Эксель, ОпенОфиса: потому что пользователь сам решает - что ему загружать, а что нет.

2 стартмани

29.08.2017    15373    18    Rustig    8    

Список номенклатуры (новый взгляд)

Рабочее место Оптовая торговля Оптовая торговля v8 КА1 УТ10 Россия УУ Абонемент ($m)

Представлена внешняя обработка - "Список номенклатуры (новый взгляд)". Удобство заключается в том, что в отдельных таблицах представлены: цены на номенклатуру и остатки по складам в разрезе серий, характеристик. При этом для каждой номенклатуры проверяются признаки ведения учета по характеристикам и сериям, и, как следствие, остатки отображаются только в тех разрезах, в которых ведется учет. Форму можно встроить в типовую конфигурацию.

1 стартмани

16.08.2017    16008    15    Rustig    5    

Доработка конфигурации Конвертация Данных (вер. 2.1.8.2)

Инструментарий разработчика v8 КД Абонемент ($m)

Добавил в конфигурацию Конвертация Данных (вер. 2.1.8.2): 1) появляющиеся подсказки по обработчикам 2) аналог "Найти в списке" 3) историю переходов по объектам ПКО

2 стартмани

24.12.2011    21821    11    Rustig    23    

Шаблоны текста (Ctrl+Shift+T) в режиме 1С:Предприятие

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Реализован поиск и отбор алгоритмов по ключевым словам.

1 стартмани

06.09.2011    29921    24    Rustig    24