|
Выгрузка данных из Excel в 1С | ☑ | ||
---|---|---|---|---|
0
modoll
09.06.16
✎
13:01
|
Помогите, пожалуйста, с задачкой. Необходимо загрузить в справочник Номенклатура новые реквизиты из Excel.
вот код, который я создала: Процедура ПутьЗагрузкиНачалоВыбора(Элемент, СтандартнаяОбработка) ВыборДиректории(Элемент); КонецПроцедуры Процедура КоманднаяПанель2Заполнить(Кнопка) //При нажатии кнопки Заполнить табличная часть очищается и заполняется Товары.Очистить(); ЗагрузитьXLSИзФайла(Товары); КонецПроцедуры Функция ЗагрузитьXLSИзФайла(ПутьЗагрузки) Попытка //Подключение Excel Эксель = Новый COMобъект("Excel.Application"); //прописываем путь к файлу Книга = Эксель.Application.WorkBooks.Open(ПутьЗагрузки); Лист = Книга.WorkSheets(1); //заполняем табличную часть формы Для Строка = НачалоСтрок По КонецСтрок Цикл Стр = ТаблицаСтрок.Добавить(); Для Каждого Колонка Из ТаблицаКолонок Цикл Попытка Стр[Колонка.ИмяКолонки] = СтрЗаменить(СокрЛП(Лист.Cells(Строка, Колонка.КолонкаXLS).Value)," ",""); Исключение КонецПопытки; КонецЦикла; КонецЦикла; //закрытие подключения к Excel Эксель.Application.Quit(); Исключение Сообщить("Файл " + ПутьЗагрузки + " не открыт"); КонецПопытки; КонецФункции Процедура ПриОткрытии() //прописываем заполнение табличной части данными из Excel //при необходимости номера колонок можно менять в Настройка //при необходимости можно убрать галочку Редактирование текста (в диалоге формы) //и программа не даст возможность изменения данных СтрНастройки = Настройки.Добавить(); СтрНастройки.ИмяКолонки = "Наименование"; СтрНастройки.КолонкаXLS = 1; СтрНастройки = Настройки.Добавить(); СтрНастройки.ИмяКолонки = "PLU"; СтрНастройки.КолонкаXLS = 2; СтрНастройки = Настройки.Добавить(); СтрНастройки.ИмяКолонки = "УНП"; СтрНастройки.КолонкаXLS = 3; СтрНастройки = Настройки.Добавить(); СтрНастройки.ИмяКолонки = "Розничная Надбавка"; СтрНастройки.КолонкаXLS = 4; КонецПроцедуры У меня не выгружаются данные в табличную часть и не записываются в справочник. ПОМОГИТЕ |
|||
1
Зая Бусечка
09.06.16
✎
13:03
|
А дядя-отладчик что говорит?
|
|||
2
modoll
09.06.16
✎
13:08
|
ничего ему всё нравиться
|
|||
3
Prog111
09.06.16
✎
13:12
|
А где запись в справочник?
|
|||
4
modoll
09.06.16
✎
13:15
|
До этого ещё даже не дошла. У меня данные из Excel не выводятся в табличную часть((((((
|
|||
5
modoll
09.06.16
✎
13:16
|
А потом уже при нажатие на кнопку "Запись в справочник" хочу сделать загрузку данных в справочник. Как-то так....
|
|||
6
catena
09.06.16
✎
13:20
|
Чот не понятно, что такое Товары?:
Товары.Очистить(); ЗагрузитьXLSИзФайла(Товары); Функция ЗагрузитьXLSИзФайла(ПутьЗагрузки) Книга = Эксель.Application.WorkBooks.Open(ПутьЗагрузки); |
|||
7
Prog111
09.06.16
✎
13:20
|
Стр[Колонка.ИмяКолонки] = СтрЗаменить(СокрЛП(Лист.Cells(Строка, Колонка.КолонкаXLS).Value)," ","");
Попробуй после этой строки сделать Сообщить("Ку!"); Будут сообщения выходить? |
|||
8
modoll
09.06.16
✎
13:23
|
Товары - это название табличной части формы, куда должны выдаваться данные из excel
|
|||
9
RomanYS
09.06.16
✎
13:23
|
(0)
ЗагрузитьXLSИзФайла(Товары);//здесь передаешь ТЧ Функция ЗагрузитьXLSИзФайла(ПутьЗагрузки)//а здесь ожидаешь путь Нестыковочка! |
|||
10
catena
09.06.16
✎
13:26
|
(8)А зачем ты ими файл открываешь?
|
|||
11
modoll
09.06.16
✎
13:26
|
Функция ЗагрузитьXLSИзФайла(ПутьЗагрузки)
//пишет поле в которм надо отобразить путь загрузки документа Попытка //Подключение Excel Эксель = Новый COMобъект("Excel.Application"); //прописываем путь к файлу Книга = Эксель.Application.WorkBooks.Open(ПутьЗагрузки); Лист = Книга.WorkSheets(1); |
|||
12
catena
09.06.16
✎
13:27
|
И кстати, добавление тоже нифига не в Товары идет, а в ТаблицаСтрок.
|
|||
13
catena
09.06.16
✎
13:28
|
(11)Еще раз прочитай (9), там вроде доступно всё.
|
|||
14
modoll
09.06.16
✎
13:30
|
Блин, я вообще запуталась....... Помогите пожалуйста как для чайника
|
|||
15
DAVI
09.06.16
✎
13:32
|
ЗагрузитьXLSИзФайла(Товары) параметр не верный (14)
|
|||
16
modoll
09.06.16
✎
13:33
|
а что там писать???
|
|||
17
catena
09.06.16
✎
13:34
|
(16)Видимо ПутьЗагрузки...
|
|||
18
DAVI
09.06.16
✎
13:36
|
в (9) все написано же. Передаешь таб часть, а ожидаешь в функции какой то ПутьЗагрузки. Путь загрузки это что?
|
|||
19
arsik
гуру
09.06.16
✎
13:36
|
После заполнения нужно обновить ТЧ формы
ЭлементыФормы.Товары.ОбновитьСтроки() |
|||
20
modoll
09.06.16
✎
13:36
|
А если так?
Процедура КоманднаяПанель2Заполнить(Кнопка) //При нажатии кнопки Заполнить табличная часть очищщается и заполняется Товары.Очистить(); ЗагрузитьXLSИзФайла(Товары,ПутьЗагрузки); КонецПроцедуры Функция ЗагрузитьXLSИзФайла(ТаблицаСтрок,ТаблицаКолонок) Попытка //Подключение Excel Эксель = Новый COMобъект("Excel.Application"); //прописываем путь к файлу Книга = Эксель.Application.WorkBooks.Open(ПутьЗагрузки); Лист = Книга.WorkSheets(1); //заполняем табличную часть формы Для Строка = НачалоСтрок По КонецСтрок Цикл Стр = ТаблицаСтрок.Добавить(); Для Каждого Колонка Из ТаблицаКолонок Цикл Попытка Стр.Наименование = СтрЗаменить(СокрЛП(Лист.Cells(Строка, 2).Value)," ",""); Стр.PLU = СтрЗаменить(Лист.Cells(Строка, 2).Value," ",""); Стр.УНП = СтрЗаменить(Лист.Cells(Строка, 2).Value," ",""); Стр.Розничная_Надбавка = СтрЗаменить(Лист.Cells(Строка, 2).Value," ",""); Исключение КонецПопытки; КонецЦикла; КонецЦикла; //закрытие подключения к Excel Эксель.Application.Quit(); Исключение Сообщить("Файл " + ПутьЗагрузки + " не открыт"); КонецПопытки; КонецФункции |
|||
21
DAVI
09.06.16
✎
13:38
|
(20) товары там не нужны
|
|||
22
modoll
09.06.16
✎
13:41
|
Если убираю Товары, то выдает ошибку
Недостаточно фактических параметров (ЗагрузитьXLSИзФайла) <<?>>ЗагрузитьXLSИзФайла(ПутьЗагрузки); (Проверка: Толстый клиент (обычное приложение)) Процедура КоманднаяПанель2Заполнить(Кнопка) //При нажатии кнопки Заполнить табличная часть очищщается и заполняется Товары.Очистить(); ЗагрузитьXLSИзФайла(ПутьЗагрузки); ЭлементыФормы.Товары.ОбновитьСтроки() КонецПроцедуры |
|||
23
DAVI
09.06.16
✎
13:51
|
(22) Функция ЗагрузитьXLSИзФайла(ПутьЗагрузки)
|
|||
24
marvak
09.06.16
✎
13:55
|
Типа того
ЗагрузитьXLSИзФайла("D:\Загрузка") |
|||
25
modoll
09.06.16
✎
14:08
|
а как сюда можно скинуть обработку или хотя бы фото?
|
|||
26
modoll
09.06.16
✎
14:09
|
вот ссылка на мою обработку, Помогите её отладить
https://drive.google.com/open?id=0BzHzLYChPnXQcXBwSDd5Sy1xTlU |
|||
27
franky_tut
09.06.16
✎
14:12
|
(26) это уже просьба написать за тебя. так не интересно. ))
|
|||
28
Бледно Золотистый
09.06.16
✎
14:12
|
(26) А давайте вы хотя бы почитаете основы теории, что такое переменные, функции и процедуры, для начала. А потом опять к нам. Ок?
|
|||
29
modoll
09.06.16
✎
14:13
|
спасибо за понимание(((
|
|||
30
modoll
09.06.16
✎
14:14
|
можно подумать, что вы все сразу ВСЁ создавали!!! У меня не всё получается, это вообще что-то новое. Прошу помочь, а вы вот так....
|
|||
31
marvak
09.06.16
✎
14:19
|
(26)
Для начала Реквизит ТЧ "Товары" называется "Наимеенование". Исправь на "Наименование" |
|||
32
catena
09.06.16
✎
14:20
|
(30)Почему вы решили, что кто-то забесплатно будет вам что-то должен? В виде гуманитарной помощи вам уже накидали кучу советов, остальное зависит от доброй воли, настроения и свободного времени.
|
|||
33
modoll
09.06.16
✎
14:23
|
catena, я не хочу с вами спорить. И судя по всему не прошу у вас помощи, т.к. ЗА БЕСПЛАТНО её не дождусь. А всем остальным огромное СПАСИБО за добрую волю, хорошее настроение и немного свободного времени (действительно спасибо, что помогаете!!!!!).
|
|||
34
franky_tut
09.06.16
✎
14:25
|
(20) у тебя действиельно с основами не очень хорошо.
ты передаешь таблицу товаров и путь к файлу (кстати он должен содержать путь к папке и название файла с расширением) ЗагрузитьXLSИзФайла(Товары,ПутьЗагрузки); а в самой функции ты уже видишь таблицу строк и колонок. Почему так? Функция ЗагрузитьXLSИзФайла(ТаблицаСтрок,ТаблицаКолонок) Что передала, то и должна получить. Т.е. здесь у тебя должны быть те же товары и через запятую путь загрузки |
|||
35
catena
09.06.16
✎
14:26
|
(33)Вот здрасте. Я по-моему еще в самом начале указала оба проблемных места. А вы в итоге попросили сделать всё за вас.
|
|||
36
modoll
09.06.16
✎
14:31
|
То есть если до меня верно ДОШЛО, то должно быть так:
Процедура КоманднаяПанель2Заполнить(Кнопка) Товары.Очистить(); //ТЧ очищается ЗагрузитьXLSИзФайла(Товары,ПутьЗагрузки); //ТЧ загружается из файла ЭлементыФормы.Товары.ОбновитьСтроки(); //ТЧ обновляется КонецПроцедуры Функция ЗагрузитьXLSИзФайла(Товары,ПутьЗагрузки) Эксель = Новый COMобъект("Excel.Application"); Книга = Эксель.Application.WorkBooks.Open(ПутьЗагрузки); Лист = Книга.WorkSheets(1); |
|||
37
franky_tut
09.06.16
✎
14:36
|
(36) вроде верно.
Для того, чтобы понять, записывается у тебя в таблицу что-то или нет, можешь после строки Стр.Наименование = СтрЗаменить(СокрЛП(Лист.Cells(Строка, 2).Value)," ",""); вставить строки: Сообщить(Стр.Наименование); Сообщить(СтрЗаменить(СокрЛП(Лист.Cells(Строка, 2).Value)," ","")); |
|||
38
modoll
09.06.16
✎
14:38
|
Книга = Эксель.Application.WorkBooks.Open(C:\Documents and Settings\user\Рабочий стол\Программист\Реквизиты Бренд.xls);
|
|||
39
marvak
09.06.16
✎
14:40
|
(30)
Товары и путь загрузки можно не передавать как параметр, оно все равно доступно будет. |
|||
40
franky_tut
09.06.16
✎
14:42
|
(39) согласен. если они где-то указаны как реквизиты.
(38) кавычки не забудь. и начинай пользоваться отладчиком. Он наверняка у тебя криком кричит. |
|||
41
marvak
09.06.16
✎
14:43
|
при открытии исправь
СтрНастройки.ИмяКолонки = "РозничнаяНадбавка"; а НЕ "Розничная надбавка" |
|||
42
modoll
09.06.16
✎
14:47
|
а там непечатный символ _ (его же можно вместо пробела использовать???)
|
|||
43
marvak
09.06.16
✎
14:47
|
Примерно так:
Для ТекСтрока = НачалоСтрок По КонецСтрок Цикл СтрокаТовары = Товары.Добавить(); // тут перебираешь строки твоей таблицы колонок,которая наз-ся "Настройки" Для каждого ТекКолонка Из Настройки Цикл ИмяКолонки = ТекКолонка.ИмяКолонки; НомерКолонки = ТекКолонка.КолонкаXLS; СтрокаТовары[ИмяКолонки] = СтрЗаменить(СокрЛП(Лист.Cells(ТекСтрока, НомерКолонки).Value)," ",""); КонецЦикла; КонецЦикла; |
|||
44
modoll
09.06.16
✎
14:47
|
т.е. Розничная_Надбавка
|
|||
45
marvak
09.06.16
✎
14:48
|
(44)
У тебя в ТЧ она называется просто "РозничнаяНадбавка", значит и в коде должно быть то же самое |
|||
46
modoll
09.06.16
✎
14:49
|
извини, не досмотрела
|
|||
47
marvak
09.06.16
✎
14:49
|
Не забудь
"Реквизит ТЧ "Товары" называется "Наимеенование". Исправь на "Наименование"" |
|||
48
marvak
09.06.16
✎
14:51
|
Примерно так, я проверил вроде работает
остальное самостоятельно |
|||
49
modoll
09.06.16
✎
14:53
|
Функция ЗагрузитьXLSИзФайла(Номенклатура,ПутьЗагрузки)
Попытка //Подключение Excel Эксель = Новый COMобъект("Excel.Application"); //прописываем путь к файлу Книга = Эксель.Application.WorkBooks.Open("C:\Documents and Settings\user\Рабочий стол\Программист\Реквизиты Бренд.xls"); Лист = Книга.WorkSheets(1); //заполняем табличную часть формы СтрокаТовары = Товары.Добавить(); // перебираем строки таблицы колонок,которая наз-ся "Настройки" Для каждого ТекКолонка Из Настройки Цикл ИмяКолонки = ТекКолонка.ИмяКолонки; НомерКолонки = ТекКолонка.КолонкаXLS; СтрокаТовары[ИмяКолонки] = СтрЗаменить(СокрЛП(Лист.Cells(ТекСтрока, НомерКолонки).Value)," ",""); КонецЦикла; //закрытие подключения к Excel Эксель.Application.Quit(); Исключение Сообщить("Файл " + ПутьЗагрузки + " не открыт"); КонецПопытки; КонецФункции |
|||
50
modoll
09.06.16
✎
14:56
|
Не забудь
"Реквизит ТЧ "Товары" называется "Наимеенование". Исправь на "Наименование"" Исправила!!!! |
|||
51
marvak
09.06.16
✎
14:57
|
ну что, работает?
|
|||
52
marvak
09.06.16
✎
14:57
|
упс, я неполностью скопировал )))
Для ТекСтрока = НачалоСтрок По КонецСтрок Цикл СтрокаТовары = Товары.Добавить(); // тут перебираешь строки твоей таблицы колонок,которая наз-ся "Настройки" Для каждого ТекКолонка Из Настройки Цикл ИмяКолонки = ТекКолонка.ИмяКолонки; НомерКолонки = ТекКолонка.КолонкаXLS; СтрокаТовары[ИмяКолонки] = СтрЗаменить(СокрЛП(Лист.Cells(ТекСтрока, НомерКолонки).Value)," ",""); КонецЦикла; КонецЦикла; |
|||
53
marvak
09.06.16
✎
14:59
|
Для ТекСтрока = НачалоСтрок По КонецСтрок Цикл
// это вставь после Лист = Книга.WorkSheets(1); и еще один КонецЦикла; перед Эксель.Application.Quit(); |
|||
54
marvak
09.06.16
✎
15:01
|
Блин, тут форматирование дурацкое в постах
форматирует непредсказуемо |
|||
55
modoll
09.06.16
✎
15:02
|
у меня в режиме Монопольно пишет
Файл C:\Documents and Settings\user\Рабочий стол\Программист\Реквизиты Бренд.xls не открыт и добавляет в таблицу строку с "Наименование" и "УНП" ???? |
|||
56
marvak
09.06.16
✎
15:04
|
Процедура КоманднаяПанель2Заполнить(Кнопка)
//При нажатии кнопки табличная часть: очищается и заполняется Товары.Очистить(); ЗагрузитьXLSИзФайла(ПутьЗагрузки); ЭлементыФормы.Товары.ОбновитьСтроки(); КонецПроцедуры Функция ЗагрузитьXLSИзФайла(ПутьЗагрузки) Попытка //Подключение Excel Эксель = Новый COMобъект("Excel.Application"); //прописываем путь к файлу Книга = Эксель.Application.WorkBooks.Open(ПутьЗагрузки); Лист = Книга.WorkSheets(3); Для ТекСтрока = НачалоСтрок По КонецСтрок Цикл СтрокаТовары = Товары.Добавить(); // тут перебираешь строки твоей таблицы колонок,которая наз-ся "Настройки" Для каждого ТекКолонка Из Настройки Цикл ИмяКолонки = ТекКолонка.ИмяКолонки; НомерКолонки = ТекКолонка.КолонкаXLS; СтрокаТовары[ИмяКолонки] = СтрЗаменить(СокрЛП(Лист.Cells(ТекСтрока, НомерКолонки).Value)," ",""); КонецЦикла; КонецЦикла; //закрытие подключения к Excel Эксель.Application.Quit(); Исключение Сообщить("Файл " + ПутьЗагрузки + " не открыт"); КонецПопытки; КонецФункции Процедура ПриОткрытии() //прописываем заполнение табличной части данными из Excel //при необходимости номера колонок можно менять в Настройка //при необходимости можно убрать галочку Редактирование текста (в диалогеформы) //и программа не даст возможность изменения данных СтрНастройки = Настройки.Добавить(); СтрНастройки.ИмяКолонки = "Наименование"; СтрНастройки.КолонкаXLS = 1; СтрНастройки = Настройки.Добавить(); СтрНастройки.ИмяКолонки = "PLU"; СтрНастройки.КолонкаXLS = 2; СтрНастройки = Настройки.Добавить(); СтрНастройки.ИмяКолонки = "УНП"; СтрНастройки.КолонкаXLS = 3; СтрНастройки = Настройки.Добавить(); СтрНастройки.ИмяКолонки = "РозничнаяНадбавка"; СтрНастройки.КолонкаXLS = 4; КонецПроцедуры |
|||
57
marvak
09.06.16
✎
15:05
|
Блин
вместо Лист = Книга.WorkSheets(3); Лист = Книга.WorkSheets(1); поправь |
|||
58
marvak
09.06.16
✎
15:06
|
у меня работало
дальше самостоятельно проверяй, что-то видимо не до конца исправила |
|||
59
modoll
09.06.16
✎
15:08
|
у меня лист 1 стоит
|
|||
60
modoll
09.06.16
✎
15:11
|
аааааааааааа, выводит только по одной строке
|
|||
61
modoll
09.06.16
✎
15:13
|
MARVAK!!!!!!!! ТЫ ГЕНИЙ И МОЙ ГЕРОЙ!!!!!!!!!!!
С П А С И Б О!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
|||
62
modoll
09.06.16
✎
15:14
|
Вот ОНО:
Процедура ПутьЗагрузкиНачалоВыбора(Элемент, СтандартнаяОбработка) ВыборДиректории(Элемент); КонецПроцедуры Процедура КоманднаяПанель2Заполнить(Кнопка) //При нажатии кнопки табличная часть: очищается и заполняется Товары.Очистить(); ЗагрузитьXLSИзФайла(Товары,ПутьЗагрузки); ЭлементыФормы.Товары.ОбновитьСтроки(); КонецПроцедуры Функция ЗагрузитьXLSИзФайла(Товары,ПутьЗагрузки) Попытка //Подключение Excel Эксель = Новый COMобъект("Excel.Application"); //прописываем путь к файлу Книга = Эксель.Application.WorkBooks.Open(ПутьЗагрузки); Лист = Книга.WorkSheets(1); //заполняем табличную часть формы Для ТекСтрока = НачалоСтрок По КонецСтрок Цикл СтрокаТовары = Товары.Добавить(); //перебираем строки таблицы колонок,которая наз-ся "Настройки" Для каждого ТекКолонка Из Настройки Цикл ИмяКолонки = ТекКолонка.ИмяКолонки; НомерКолонки = ТекКолонка.КолонкаXLS; СтрокаТовары[ИмяКолонки] = СтрЗаменить(СокрЛП(Лист.Cells(ТекСтрока, НомерКолонки).Value)," ",""); КонецЦикла; КонецЦикла; //закрытие подключения к Excel Эксель.Application.Quit(); Исключение Сообщить("Файл " + ПутьЗагрузки + " не открыт"); КонецПопытки; КонецФункции Процедура ПриОткрытии() //прописываем заполнение табличной части данными из Excel //при необходимости номера колонок можно менять в Настройка //при необходимости можно убрать галочку Редактирование текста (в диалогеформы) //и программа не даст возможность изменения данных СтрНастройки = Настройки.Добавить(); СтрНастройки.ИмяКолонки = "Наименование"; СтрНастройки.КолонкаXLS = 1; СтрНастройки = Настройки.Добавить(); СтрНастройки.ИмяКолонки = "PLU"; СтрНастройки.КолонкаXLS = 2; СтрНастройки = Настройки.Добавить(); СтрНастройки.ИмяКолонки = "УНП"; СтрНастройки.КолонкаXLS = 3; СтрНастройки = Настройки.Добавить(); СтрНастройки.ИмяКолонки = "РозничнаяНадбавка"; СтрНастройки.КолонкаXLS = 4; КонецПроцедуры |
|||
63
modoll
10.06.16
✎
12:54
|
Подскажите, чтобы сравнить штрихкоды из обработки и из справочника.Номенклатура, данные из обработчика нужно переместить во временную таблицу???? или можно как-то стазу сравнить????
P.S. надо сравнить данные из обработки и справочника.Номенклатура по полю штрихкод или PLU и записать в обработку найденные совпадения (т.е. в обработке из Excel загрузились данные о штрихкодах и PLU и надо чтобы по нажатию кнопки Проверить и неё добавились данные о названии товара из справочника.Номеклатура). Помогите!!!! |
|||
64
modoll
13.06.16
✎
12:01
|
Сравнение по PLU
Процедура КоманднаяПанель2Проверить(Кнопка) Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; //Копируем ссылку на временную таблицу Запрос.УстановитьПараметр("Тов",Товары.Выгрузить()); Запрос.Текст = "ВЫБРАТЬ | Тов.PLU КАК PLU, | Тов.Штрихкод КАК Штрихкод, | Тов.Брэнд КАК Брэнд |ПОМЕСТИТЬ ВремТабл |ИЗ | &Тов КАК Тов |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВложенныйЗапрос.Номенклатура, | ВложенныйЗапрос.PLU, | ВремТабл.Штрихкод, | ВремТабл.Брэнд |ИЗ | ВремТабл КАК ВремТабл | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | КодыТоваровPLU.Номенклатура КАК Номенклатура, | КодыТоваровPLU.Код КАК PLU | ИЗ | РегистрСведений.КодыТоваровPLU КАК КодыТоваровPLU) КАК ВложенныйЗапрос | ПО ВремТабл.PLU = ВложенныйЗапрос.PLU"; Товары.Загрузить(Запрос.Выполнить().Выгрузить()); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |