|   |   | 
| 
 | Откуда берется слеш? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Масянька 24.12.19✎ 09:50 | 
        Доброе утро (утверждение очень спорное).
 Вводная: выгрузка номенклатуры из справочника номенклатуры в файл json (полная иерархия). В справочнике есть такая группа с вложением: Энергоком -> Выключатели\розетки IP54. сразу скажу, что "\" меняла обработкой (изначально был "/"). Итак: есть код: ЭлементВыгрузки.Вставить("Родитель", РодительНоменклатуры(ТекЭлемент.ПолноеНаименование(), СокрЛП(ТекЭлемент.Наименование))); сообщить("2. - " + РодительНоменклатуры(ТекЭлемент.ПолноеНаименование(), СокрЛП(ТекЭлемент.Наименование))); Функция: Функция РодительНоменклатуры(ПолноеНаименование, Наименование) ПозицияНачалаНаименования = СтрНайти(ПолноеНаименование, Наименование, НаправлениеПоиска.СКонца); ПредРодитель = Лев(ПолноеНаименование, ПозицияНачалаНаименования - 1); ПозицияПоследнегоСлеша = СтрНайти(ПредРодитель, "/", НаправлениеПоиска.СКонца); Родитель = СокрЛП(Лев(ПредРодитель, ПозицияПоследнегоСлеша - 1)); сообщить("1. - " + Родитель); Возврат Родитель; КонецФункции На экране: https://pastenow.ru/b22a16fb8dd6b098 В файле: https://pastenow.ru/e6b68ce42eb6cd12087e197b6dd05aba Откуда берется двойной слеш? спасибо. | |||
| 1
    
        Волшебник модератор 24.12.19✎ 09:51 | 
        кто-то экранирует обратный слеш обратным слешем     | |||
| 2
    
        Масянька 24.12.19✎ 09:53 | 
        (1) Кто и где?     | |||
| 3
    
        Волшебник модератор 24.12.19✎ 09:57 | 
        (2) тот, кто пишет структуру в строку, в последний момент     | |||
| 4
    
        Масянька 24.12.19✎ 09:59 | 
        (3) А пояснить для блондинки можно?     | |||
| 5
    
        Масянька 24.12.19✎ 10:01 | 
        И почему именно в этом случае?
 Вот в файле другой родитель: "Родитель": "Удаленные папкиЭ/Стяжки", Здесь все норм. | |||
| 6
    
        Волшебник модератор 24.12.19✎ 10:02 | 
        (5) Здесь слэш в другую сторону     | |||
| 7
    
        Волшебник модератор 24.12.19✎ 10:04 | 
        Обратный слэш считается экранириющим спецсимволом, чтобы записать в строку кавычку, например
 "Пушкин написал произведение\"Руслан и Людмила\", которое очень интересное" Но чтобы в строку записать сам обратный слэш, его надо тоже экранировать и тоже обратным слэшем, например, "Папка\\ВложеннаяПапка" | |||
| 8
    
        Масянька 24.12.19✎ 10:07 | 
        (7) Что значить "экранировать"?     | |||
| 9
    
        Aleksey 24.12.19✎ 10:20 | ||||
| 10
    
        Масянька 24.12.19✎ 10:22 | 
        (9) Уже доперло.
 Если такие проблемы - на фига 1С разрешает их использовать? | |||
| 11
    
        ДенисЧ 24.12.19✎ 10:23 | 
        (8) "поставить экран" (с)
 Некоторые символы в строках могут быть служебными. Например, кавычки | |||
| 12
    
        ДенисЧ 24.12.19✎ 10:23 | 
        (10) А кто 1с такая, чтобы это запрещать?     | |||
| 13
    
        Масянька 24.12.19✎ 13:15 | 
        Тут продолжу.
 Конфликт блокировок. Справочник номенклатуры большой. При следующем запуске продвигается дальше. Блокировка возникает, когда в одной папке создается вложенная. Причем, далеко не сразу. База файловая. Как можно обойти? Спасибо. | |||
| 14
    
        Волшебник модератор 24.12.19✎ 13:17 | 
        (13) Перейти на серверную базу, где блокировки на уровне записи (или страницы в БД), а не всей таблицы.     | |||
| 15
    
        Масянька 24.12.19✎ 13:17 | 
        (14) Других вариантов нет?     | |||
| 16
    
        Волшебник модератор 24.12.19✎ 13:17 | 
        (13) Убрать транзакции. Или фиксировать транзакцию каждые 100 элементов.     | |||
| 17
    
        Масянька 24.12.19✎ 13:21 | 
        (16) Не использую.     | |||
| 18
    
        Волшебник модератор 24.12.19✎ 13:28 | 
        (17) Значит это объектная блокировка, а не транзакционная.     | |||
| 19
    
        Масянька 24.12.19✎ 13:32 | 
        (18) Здорово. Как её обходить?     | |||
| 20
    
        Волшебник модератор 24.12.19✎ 13:35 | 
        (19) Перед записью объекта пытаться его заблокировать
 Попытка Объект.Заблокировать(); Объект.Записать(); Исключение //не удалось заблокировать объект, запись невозможна Сообщить(ОписаниеОшибки()); КонецПопытки; | |||
| 21
    
        Масянька 24.12.19✎ 13:43 | 
        (20) Пойду проверять.     | |||
| 22
    
        Волшебник модератор 24.12.19✎ 13:49 | 
        (21) Давай, проверяй...     | |||
| 23
    
        Масянька 24.12.19✎ 13:55 | 
        (22) Спасибо! Работает!     | |||
| 24
    
        Волшебник модератор 24.12.19✎ 13:56 | 
        (23) ОК     | |||
| 25
    
        Масянька 25.12.19✎ 12:18 | 
        (24) В общем, не все так радужно.
 Файл (номенклатура из одной БД, json) - 11 375 КБ. Ополовинила - 6 523 КБ. Гружу... Попытка НоваяНоменклатура.Заблокировать(); НоваяНоменклатура.Записать(); Исключение ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось записать элемент справочника номенклатура - " + НоваяНоменклатура + "."); ВызватьИсключение; КонецПопытки; Конфликт блокировок где-то на половине файла. Как обходить? Резать еще меньше? | |||
| 26
    
        Bigbro 25.12.19✎ 12:24 | 
        лучше свалить все объекты по которым не удалось изменить данные в список и в конце проехать по нему еще раз, а не падать в исключение сразу.
 ну а те кто и со второго раза не обработался - их вернуть, кто то блокирует видимо настойчиво. | |||
| 27
    
        Масянька 25.12.19✎ 12:28 | 
        (26) У меня есть ощущение, что если даже порезать меньшими файлами, то друг за другом также  упадет.     | |||
| 28
    
        Йохохо 25.12.19✎ 12:33 | 
        (13) на какой таблице блокировка?     | |||
| 29
    
        Масянька 25.12.19✎ 12:34 | 
        (28) Загружаю номенклатуру.
 В ошибке нет указаний. Тупо "Конфликт блокировок". | |||
| 30
    
        Йохохо 25.12.19✎ 12:35 | 
        (29) надо узнать на какой, справочник номенклатура не при чем 94%     | |||
| 31
    
        Йохохо 25.12.19✎ 12:36 | 
        или вы втроем грузите;)     | |||
| 32
    
        zva 25.12.19✎ 12:36 | 
        (25) Если загрузка идет монопольно в базе, то проблема в коде, а не в размере файла...     | |||
| 33
    
        Bigbro 25.12.19✎ 12:38 | 
        (27) так убери вызватьисключение
 добавь номенклатуру в список, в массив, со всем необходимым для обновления. в конце цикла пробегись еще раз по этому списку. зачем вообще исключение? оно нужно только если у тебя незагрузка одного единственного элемента уже критична. обычно это не так. грузятся все 10-20-50 тысяч. а та сотня которая по разным причинам не загрузилась выдается на экран в лог или куда угодно и с ними ручками потом разбираются. все | |||
| 34
    
        Масянька 25.12.19✎ 12:40 | 
        (30) Говорю - где-то до половины файлы загрузилось. Потом - ошибка.     | |||
| 35
    
        Масянька 25.12.19✎ 12:40 | 
        (32) &НаСервере
 Функция УстановитьРодителяНоменклатуры(СтрокаРодителя) МассивРодителей = СтрРазделить(СтрокаРодителя, "/"); Родитель = Справочники.Номенклатура.ПустаяСсылка(); Для Каждого ЭлементМассива Из МассивРодителей Цикл ЕстьТакаяПапка = Справочники.Номенклатура.НайтиПоНаименованию(ЭлементМассива, Истина, Родитель); Если (ЕстьТакаяПапка = Справочники.Номенклатура.ПустаяСсылка()) Тогда ЕстьТакаяПапка = Справочники.Номенклатура.СоздатьГруппу(); ЕстьТакаяПапка.Наименование = ЭлементМассива; Если (Родитель <> Справочники.Номенклатура.ПустаяСсылка()) Тогда ЕстьТакаяПапка.Родитель = Родитель; КонецЕсли; Попытка ЕстьТакаяПапка.Заблокировать(); ЕстьТакаяПапка.Записать(); Родитель = ЕстьТакаяПапка.Ссылка; Исключение ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось записать группу справочника номенклатура - " + ЕстьТакаяПапка + "."); ВызватьИсключение; КонецПопытки; Иначе Родитель = ЕстьТакаяПапка.Ссылка; КонецЕсли; КонецЦикла; Возврат Родитель; КонецФункции &НаСервере Процедура ЗаписатьНоменклатуру(ТекЭлемент) //Родитель = УстановитьРодителяНоменклатуры(СокрЛП(ТекЭлемент.Родитель)); ОбщегоНазначенияКлиентСервер.СообщитьПользователю("В справочнике не найдена номенклатура: " + СокрЛП(ТекЭлемент.Наименование) + ". Будет создана новая номенклатура."); НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент(); НоваяНоменклатура.Наименование = СокрЛП(ТекЭлемент.Наименование); НоваяНоменклатура.Родитель = УстановитьРодителяНоменклатуры(СокрЛП(ТекЭлемент.Родитель)); НоваяНоменклатура.АлкогольнаяПродукция = ЛогическиеЗначение(СокрЛП(ТекЭлемент.АлкогольнаяПродукция)); НоваяНоменклатура.ВариантОформленияПродажи = ЗначениеПеречисления("ВариантыОформленияПродажи", СокрЛП(ТекЭлемент.ВариантОформленияПродажи)); НоваяНоменклатура.ВесИспользовать = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ВесИспользовать)); НоваяНоменклатура.ВесМожноУказыватьВДокументах = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ВесМожноУказыватьВДокументах)); НоваяНоменклатура.ВестиУчетПоГТД = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ВестиУчетПоГТД)); НоваяНоменклатура.ВестиУчетСертификатовНоменклатуры = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ВестиУчетСертификатовНоменклатуры)); НоваяНоменклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию(СокрЛП(ТекЭлемент.ВидНоменклатуры)); НоваяНоменклатура.ЕдиницаИзмерения = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоКоду(СокрЛП(ТекЭлемент.ЕдиницаИзмерения)); НоваяНоменклатура.ЕдиницаИзмеренияСрокаГодности = ЗначениеПеречисления("ЕдиницыИзмеренияВремени", СокрЛП(ТекЭлемент.ЕдиницаИзмеренияСрокаГодности)); НоваяНоменклатура.ЕстьТоварыДругогоКачества = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ЕстьТоварыДругогоКачества)); НоваяНоменклатура.ИмпортнаяАлкогольнаяПродукция = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ИмпортнаяАлкогольнаяПродукция)); НоваяНоменклатура.ДлинаИспользовать = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ДлинаИспользовать)); НоваяНоменклатура.ДлинаМожноУказыватьВДокументах = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ДлинаМожноУказыватьВДокументах)); НоваяНоменклатура.ИспользованиеХарактеристик = ЗначениеПеречисления("ВариантыИспользованияХарактеристикНоменклатуры", СокрЛП(ТекЭлемент.ИспользованиеХарактеристик)); НоваяНоменклатура.ИспользоватьИндивидуальныйШаблонЦенника = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ИспользоватьИндивидуальныйШаблонЦенника)); НоваяНоменклатура.ИспользоватьИндивидуальныйШаблонЭтикетки = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ИспользоватьИндивидуальныйШаблонЭтикетки)); НоваяНоменклатура.ИспользоватьУпаковки = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ИспользоватьУпаковки)); НоваяНоменклатура.Качество = ЗначениеПеречисления("ГрадацииКачества", СокрЛП(ТекЭлемент.Качество)); НоваяНоменклатура.НаименованиеПолное = СокрЛП(ТекЭлемент.НаименованиеПолное); НоваяНоменклатура.ПодакцизныйТовар = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ПодакцизныйТовар)); НоваяНоменклатура.ПоставляетсяВМногооборотнойТаре = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ПоставляетсяВМногооборотнойТаре)); НоваяНоменклатура.СтавкаНДС = ЗначениеПеречисления("СтавкиНДС", СокрЛП(ТекЭлемент.СтавкаНДС)); НоваяНоменклатура.ТипНоменклатуры = ЗначениеПеречисления("ТипыНоменклатуры", СокрЛП(ТекЭлемент.ТипНоменклатуры)); НоваяНоменклатура.ОбъемИспользовать = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ОбъемИспользовать)); НоваяНоменклатура.ОбъемМожноУказыватьВДокументах = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ОбъемМожноУказыватьВДокументах)); НоваяНоменклатура.ПлощадьИспользовать = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ПлощадьИспользовать)); НоваяНоменклатура.ПлощадьМожноУказыватьВДокументах = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ПлощадьМожноУказыватьВДокументах)); НоваяНоменклатура.ЕдиницаДляОтчетов = Справочники.УпаковкиЕдиницыИзмерения.НайтиПоКоду(СокрЛП(ТекЭлемент.ЕдиницаДляОтчетов)); НоваяНоменклатура.КоэффициентЕдиницыДляОтчетов = ТекЭлемент.КоэффициентЕдиницыДляОтчетов; НоваяНоменклатура.ОбособленнаяЗакупкаПродажа = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ОбособленнаяЗакупкаПродажа)); НоваяНоменклатура.ОблагаетсяНДПИПоПроцентнойСтавке = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ОблагаетсяНДПИПоПроцентнойСтавке)); НоваяНоменклатура.ПродукцияМаркируемаяДляГИСМ = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ПродукцияМаркируемаяДляГИСМ)); НоваяНоменклатура.КиЗГИСМ = ЛогическиеЗначение(СокрЛП(ТекЭлемент.КиЗГИСМ)); НоваяНоменклатура.УдалитьСырьевойТовар = ЛогическиеЗначение(СокрЛП(ТекЭлемент.УдалитьСырьевойТовар)); НоваяНоменклатура.ПодконтрольнаяПродукцияВЕТИС = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ПодконтрольнаяПродукцияВЕТИС)); НоваяНоменклатура.АлкогольнаяПродукцияВоВскрытойТаре = ЛогическиеЗначение(СокрЛП(ТекЭлемент.АлкогольнаяПродукцияВоВскрытойТаре)); НоваяНоменклатура.ОблагаетсяНДСУПокупателя = ЛогическиеЗначение(СокрЛП(ТекЭлемент.ОблагаетсяНДСУПокупателя)); Попытка НоваяНоменклатура.Заблокировать(); НоваяНоменклатура.Записать(); Исключение ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось записать элемент справочника номенклатура - " + НоваяНоменклатура + "."); ВызватьИсключение; КонецПопытки; КонецПроцедуры &НаСервере Процедура ЗагрузитьНоменклатуру(ИмяФайла, ИННОрганиазции) Файл = Новый Файл(ИмяФайла); Чтение = Новый ЧтениеJSON; Чтение.ОткрытьФайл(Файл.ПолноеИмя); СписокЭлементов = ПрочитатьJSON(Чтение, Ложь, "Дата", ФорматДатыJSON.ISO); Для Каждого ТекЭлемент Из СписокЭлементов Цикл ТекНаименование = СокрЛП(ТекЭлемент.Наименование); ЕстьНоменклатура = НайтиЭлементСправочника(2, "Номенклатура", , ТекНаименование); Если (ЕстьНоменклатура = Справочники.Номенклатура.ПустаяСсылка()) Тогда ЗаписатьНоменклатуру(ТекЭлемент); КонецЕсли; КонецЦикла; КонецПроцедуры | |||
| 36
    
        zva 25.12.19✎ 12:45 | 
        (35) С иерархией так нельзя. 
 Можно при первой загрузке создавать элементы с пустым родителем, тогда гарантировано создадутся ВСЕ элементы, второй раз пройтись по файлу и корректно проставить только родителя. | |||
| 37
    
        bolobol 25.12.19✎ 12:48 | 
        Регистрация изменений?     | |||
| 38
    
        Масянька 25.12.19✎ 13:00 | 
        (36) Судя по всему, ты прав.
 Сейчас грузится без родителя. | |||
| 39
    
        Масянька 25.12.19✎ 13:10 | 
        Не фига...
 Дословно: {ВнешняяОбработка.СлияниеБД.Форма.Форма.Форма(1009)}: Ошибка при вызове метода контекста (Записать) НоваяНоменклатура.Записать(); по причине: Конфликт блокировок при выполнении транзакции: по причине: Конфликт блокировок при выполнении транзакции: | |||
| 40
    
        Масянька 25.12.19✎ 13:11 | 
        + (39) Без родителя. Вообще. В корне всё.
 Село где-то 2 трети. | |||
| 41
    
        Масянька 25.12.19✎ 13:13 | 
        Что не так?     | |||
| 42
    
        zva 25.12.19✎ 13:17 | 
        (41) Смотреть регламентные задания, если есть обмены. При загрузке номенклатуры она регистрируется в плане обмена, дальше по расписанию может срабатывать выгрузка, которая блокирует таблицу регистрации изменений и происходит блокировка.     | |||
| 43
    
        Волшебник модератор 25.12.19✎ 13:18 | 
        (39) А говорила, что транзакции не используешь...     | |||
| 44
    
        Масянька 25.12.19✎ 13:18 | 
        (43) Код в (35).     | |||
| 45
    
        Волшебник модератор 25.12.19✎ 13:20 | 
        Пробегись первым циклом, создай все группы. 
 Потом вторым циклом загрузи элементы | |||
| 46
    
        Масянька 25.12.19✎ 13:21 | 
        (42) В фоновых - 2: статистика и монитор портала.
 В регламентных 35, выполняется только статистика. | |||
| 47
    
        Garykom гуру 25.12.19✎ 13:21 | 
        Еще чуть чуть и Масянька начнет на JS, C++ и сама VPS и сервера настраивать и сайты поднимать...
 ЗЫ Уже выяснила что такое экранирование, интересно когда раньше """" вместо """ понимала что делает? | |||
| 48
    
        Масянька 25.12.19✎ 13:22 | 
        (45) Сейчас тупо в корень грузила. Родителя (в коде) заремила.     | |||
| 49
    
        Йохохо 25.12.19✎ 13:22 | 
        можно попробовать явно начинать и фиксировать транзакцию каждые 100 элементов     | |||
| 50
    
        Масянька 25.12.19✎ 13:22 | 
        (47) У тебя что-то по теме? Или просто потрындеть?     | |||
| 51
    
        Масянька 25.12.19✎ 13:23 | 
        (49) Больше сотни село.     | |||
| 52
    
        Галахад гуру 25.12.19✎ 13:24 | 
        Конфигурация доработанная? Там каких-нибудь штук "призаписи" случайно нет?     | |||
| 53
    
        Масянька 25.12.19✎ 13:24 | 
        А свертка резервов товаров может влиять?     | |||
| 54
    
        Масянька 25.12.19✎ 13:25 | 
        (52) Хороший вопрос...
 Снята. Буду смотреть. | |||
| 55
    
        Garykom гуру 25.12.19✎ 13:25 | 
        (50) Как думаешь можно ли в одном коде дважды заблокировать один и тот же объект?     | |||
| 56
    
        Йохохо 25.12.19✎ 13:26 | 
        (53) Давно бы добавила паузу в пару секунд после исключения и опять до села     | |||
| 57
    
        Масянька 25.12.19✎ 13:27 | 
        (56) Как?     | |||
| 58
    
        Йохохо 25.12.19✎ 13:29 | 
        (57) запомни позицию файла, покажи вопрос, через 2 секунды нажми да)     | |||
| 59
    
        Галахад гуру 25.12.19✎ 13:33 | 
        (58) Можно предупреждение с паузой.     | |||
| 60
    
        Масянька 25.12.19✎ 13:56 | 
        (52) Да, вроде нет ничего.     | |||
| 61
    
        Garykom гуру 25.12.19✎ 14:00 | 
        А может все же создавать/записывать группы/элементы начиная с верхнего уровня а?
 Короче строишь виртуальную структуру в оперативке "с группировками" и начинаешь обходить правильно. | |||
| 62
    
        Волшебник модератор 25.12.19✎ 14:02 | 
        (61) Ой, это сложно и не по-женски. Лучше обходить в бесконечном цикле, пока всё не будет создано.     | |||
| 63
    
        Масянька 25.12.19✎ 14:04 | 
        (61) А почему без родителя (совсем, все в корне) - тоже выдает, что блокировка?     | |||
| 64
    
        Масянька 25.12.19✎ 14:04 | 
        (62) Ой, всё.     | |||
| 65
    
        Масянька 25.12.19✎ 14:35 | 
        Такой вопрос: универсальная выгрузка-загрузка XML (стандарт, без моего вмешательства (чтобы исключить женский вопрос)):
 - выгружено 11401 элементов справочника номенклатура. - загрузка: ошибка СУБД: Невосстановимая ошибка Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm: по причине: Ошибка СУБД: С базой проблемы? | |||
| 66
    
        Волшебник модератор 25.12.19✎ 14:38 | 
        (65) Всё. Приплыли. Баста. База разрушена.     | |||
| 67
    
        Garykom гуру 25.12.19✎ 14:55 | 
        (65) Это просто слишком долго &НаСервере и решил иди ты нафик     | |||
| 68
    
        Масянька 25.12.19✎ 14:58 | 
        (66) (67) Петросян со Степаненко.     | |||
| 69
    
        1Сергей 25.12.19✎ 15:00 | 
        (68) А ты Регина Дубовитская тутошняя. Ы-ы-ы-ы :)     | |||
| 70
    
        Волшебник модератор 25.12.19✎ 15:01 | 
        Пригласите специалиста. ;)     | |||
| 71
    
        Масянька 25.12.19✎ 15:02 | 
        (70) Тех, что УТ писали?     | |||
| 72
    
        Масянька 25.12.19✎ 15:02 | 
        (69) Под Галустяна косишь?     | |||
| 73
    
        Масянька 25.12.19✎ 15:44 | 
        Повторю вводную:
 - есть три БД УТ. - нуно из двух БД УТ перенести номенклатуру (проблема) в третью. - при загрузке в третью либо блокировки, либо ошибка СУБД. Для эксперимента взяла две УТ (из которых нужно переносить), и из одной (файл 14 Гб) загрузила в другую. В общем, все норм село. Причем, вместе с родителями. Как положено. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |