![]() |
|
v7: Опять запрос.. (я не умею называть темы) | ☑ | ||
---|---|---|---|---|
0
bananan
17.01.13
✎
17:15
|
Есть готовый запрос
Текст запроса такой: Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ТМЦ = Регистр.Обороты.ТМЦ; |Клиент = Регистр.Обороты.Клиент; |Агент = Регистр.Обороты.Агент; |РасходГрн = Регистр.Обороты.РасходГрн; |РасходКво = Регистр.Обороты.РасходКво; |Функция РасходГрнСумма = Сумма(РасходГрн); |Функция КвоРасход = Сумма(РасходКво); |Группировка Агент без групп; |Группировка Клиент без групп; |Группировка ТМЦ; |Условие(ТМЦ в ВыбТМЦ); |Условие(Клиент в ВыбКлиент); |Условие(Агент в ВыбАгент);"; Если СпИнкас.ТекущаяСтрока() = 2 Тогда ТекстЗапроса = ТекстЗапроса +" |Условие(Клиент.Инкас =0);"; ИначеЕсли СпИнкас.ТекущаяСтрока() = 3 Тогда ТекстЗапроса = ТекстЗапроса +" |Условие(Клиент.Инкас =1);"; Конецесли; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Так вот: нужно сюда добавить возможность выбора склада.. я сделал так: "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |Склад = Регистр.Обороты.Склад; |ТМЦ = Регистр.Обороты.ТМЦ; |Клиент = Регистр.Обороты.Клиент; |Агент = Регистр.Обороты.Агент; |РасходГрн = Регистр.Обороты.РасходГрн; |РасходКво = Регистр.Обороты.РасходКво; |Функция РасходГрнСумма = Сумма(РасходГрн); |Функция КвоРасход = Сумма(РасходКво); |Группировка Агент без групп; |Группировка Клиент без групп; |Группировка ТМЦ; |Условие(Склад в выбСклад); |Условие(ТМЦ в ВыбТМЦ); |Условие(Клиент в ВыбКлиент); |Условие(Агент в ВыбАгент);"; Если СпИнкас.ТекущаяСтрока() = 2 Тогда ТекстЗапроса = ТекстЗапроса +" |Условие(Клиент.Инкас =0);"; ИначеЕсли СпИнкас.ТекущаяСтрока() = 3 Тогда ТекстЗапроса = ТекстЗапроса +" |Условие(Клиент.Инкас =1);"; Конецесли; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда НИчего в результатах не изменилось. К тому же в форме добавил "поле" для выбора склада... ну и кнопки к этому полю.. Когда при открытии отчета в первый раз нажимаю кнопку выбора - нормально работает. А когда после этого еще раз нажимаю на кнопку выбора - выдает ошибку: Если выбСклад.РазмерСписка()>0 Тогда {\\SERVER12\VPKTEST$\EXTFORMS\ОТЧЕТПОАГЕНАМСВ.ERT(436)}: Поле агрегатного объекта не обнаружено (РазмерСписка) Ну и два впороса: 1. Что не так у меня в запросе 2. Что не так с полем выбора склада? |
|||
209
bananan
23.01.13
✎
16:57
|
выдал ошибку Invalid column name 'Ставка'.
|
|||
210
bananan
23.01.13
✎
16:58
|
а поле в справочнике 100% называется Ставка... но поле это периодическое... Здесь надо еще чего-то задать в запросе?
|
|||
211
Wobland
23.01.13
✎
17:00
|
||||
212
sapphire
23.01.13
✎
17:00
|
(211) Великий просветитель :D
|
|||
213
sapphire
23.01.13
✎
17:01
|
(210) Когда же ты документацию осилишь, а?
|
|||
214
bananan
23.01.13
✎
17:01
|
(211) Спсибо за ссылку; - читал
Сейчас вопрос как достучаться до периодического поля ставкав справочнике сотрудники в запросе под 1С++... |
|||
215
Wobland
23.01.13
✎
17:06
|
Пример: Справочник.Номенклатура, подчиненный справочник Цены с периодической ценой.
ТекстЗапроса = " |SELECT | СпрН.Descr Наименование, | $ПоследнееЗначение.Цены.Цена(СпрЦ.ID, :ВыбДата) Цена |FROM | $Справочник.Номенклатура СпрН |LEFT JOIN | $Справочник.Цены СпрЦ ON СпрЦ.ParentExt = СпрН.ID AND | $СпрЦ.ТипЦен = :ТипЦен"; |
|||
216
bananan
23.01.13
✎
17:13
|
(215) Непонятно что за СпрН и СпрЦ...
|
|||
217
bananan
23.01.13
✎
17:15
|
(216) пардон, СпрН - Справочник.Номенклатура
|
|||
218
bananan
23.01.13
✎
17:19
|
Написал в тексте запроса так:
|SELECT SUM(Справочник.Сотрудники.Ставка) as Кво Выдает ошибку: The column prefix 'Справочник.Сотрудники' does not match with a table name or alias name used in the query. |
|||
219
bananan
23.01.13
✎
17:22
|
(215) и непонятно как применять $ПоследнееЗначение. к полю ставка из справочника.сотрудники
|
|||
220
Wobland
23.01.13
✎
17:22
|
(218) теперь спроси "как в 1С++ правильно написать SUM(Справочник.Сотрудники.Ставка)?"
|
|||
221
Wobland
23.01.13
✎
17:23
|
(219) Периодические реквизиты хранятся в файле _1SConst. Для получения их значений служит виртуальное значение $ПоследнееЗначение.<ИмяСправочника> | Константа.<ИмяРеквизита | ИмяКонстанты>(<ИдОбъекта>, <Дата>[, <Время>[, <ИДДокумента>]]), которое является коррелированным подзапросом (вложенный запрос, в котором используется значения основного).
|
|||
222
Wobland
23.01.13
✎
17:24
|
мне вот интересно, человек справится сам или кто-то щас придёт и всё испортит? пойду с начала ветку почитаю
|
|||
223
bananan
23.01.13
✎
17:27
|
(220-222) Написал так в запросе:
SELECT SUM($ПоследнееЗначение.Справочник.Сотрудники.Ставка(Справочник.Сотрудники.ID, :ДатаАктуальности)) as Кво Выдает ошибку: Meta name parser error: виртуальное поле не найдено "$ПоследнееЗначение.Справочник.Сотрудники" |
|||
224
bananan
23.01.13
✎
17:28
|
(222) Сам, скорее всего, - не справлюсь
|
|||
225
Wobland
23.01.13
✎
17:28
|
(224) хорошо читал (205)?
|
|||
226
bananan
23.01.13
✎
17:30
|
Вижу и понимаю что неправильно:
$ПоследнееЗначение.Справочник.Сотрудники.Ставка(Справочник.Сотрудники.ID, :ДатаАктуальности а как правильно написать - не знаю.. |
|||
227
viktor_vv
23.01.13
✎
17:31
|
Дам наводку
$ПоследнееЗначение.Цены.Цена(СпрЦ.ID, :ВыбДата) Цена найди одно отличие от твоей $ПоследнееЗначение.Справочник.Сотрудники.Ставка(Справочник.Сотрудники.ID, :ДатаАктуальности) |
|||
228
viktor_vv
23.01.13
✎
17:32
|
И я точно не помню, но кажись ПсоледенееЗначение в SUM() не взлетит, потому как оно в подзапрос разворачивается.
|
|||
229
bananan
23.01.13
✎
17:33
|
(227) у меня так:
SELECT SUM($ПоследнееЗначение.Справочник.Сотрудники.Ставка(Справочник.Сотрудники.ID, :ДатаАктуальности)) Ставка |
|||
230
Mikeware
23.01.13
✎
17:35
|
(229) продолжайте наблюдение...©
|
|||
231
Wobland
23.01.13
✎
17:36
|
(229) убери функцию для начала, вдруг viktor_vv прав
|
|||
232
Mikeware
23.01.13
✎
17:39
|
(231) а почему это "вдруг"? в документации прекрасно написано. в конце концов, есть Отладка() или перпроцессирование, или просто вывод текста запроса, или профайлер...
проблема-то в соотношени радиусов... |
|||
233
Wobland
23.01.13
✎
17:40
|
(232) а я документацию в этом месте не читал ;)
|
|||
234
bananan
23.01.13
✎
17:40
|
9231) Функцию убрал - ошибка осталась
|
|||
235
viktor_vv
23.01.13
✎
17:41
|
Да оно там, в принципе, доступно матюкнется, правда на буржуинском :).
|
|||
236
viktor_vv
23.01.13
✎
17:42
|
(234) Ты (227) внимательно, посимвольно сравнил ?
|
|||
237
Wobland
23.01.13
✎
17:42
|
(234) прокомментируй (227)
|
|||
238
bananan
23.01.13
✎
17:43
|
(236) Не понимаю я здесь что к чему...
|
|||
239
Wobland
23.01.13
✎
17:43
|
с (205) прошло 50 минут
|
|||
240
bananan
23.01.13
✎
17:44
|
(237) код: $ПоследнееЗначение.Справочник.Сотрудники.Ставка(Справочник.Сотрудники.ID, :ДатаАктуальности) выдает ошибку: Meta name parser error: виртуальное поле не найдено "$ПоследнееЗначение.Справочник.Сотрудники"
|
|||
241
Wobland
23.01.13
✎
17:46
|
(240) различия в чём?
|
|||
242
Mikeware
23.01.13
✎
17:46
|
(240) и это вполне закономерно...
|
|||
243
PALESIA
23.01.13
✎
17:49
|
пятнично))) ну и какой-же приколист (0) 1С++ подсунул?)
|
|||
244
viktor_vv
23.01.13
✎
17:49
|
(238) Сравнивай посимвольно две строки слева направо, на первом отличии, остановись и задумайся.
$ПоследнееЗначение.Цены.Цена(СпрЦ.ID, :ВыбДата) Цена $ПоследнееЗначение.Справочник.Сотрудники.Ставка(Справочник.Сотрудники.ID, :ДатаАктуальности) |
|||
245
Mikeware
23.01.13
✎
17:52
|
(244) какое-какое последнее слово???
ты сам-то понял, что ему сказал??????? :-)) |
|||
246
Ёпрст
гуру
23.01.13
✎
17:53
|
||||
247
viktor_vv
23.01.13
✎
17:53
|
(245) А вдруг :))) .
|
|||
248
sapphire
23.01.13
✎
17:54
|
(224)
$ПоследнееЗначение.Сотрудники.Ставка(Справочник.Сотрудники.ID, :ДатаАктуальности) |
|||
249
Wobland
23.01.13
✎
17:55
|
(246) это вторая ссылка за сегодняшний вечер. мою он врёт, что уже читал
|
|||
250
Wobland
23.01.13
✎
17:55
|
всё-таки кто-то пришёл
|
|||
251
bananan
23.01.13
✎
17:56
|
написал так:
SELECT SUM($ПоследнееЗначение.Сотрудники.Ставка(Справочник.Сотрудники.ID, :ДатаАктуальности)) Став выдает ошибку: Cannot perform an aggregate function on an expression containing an aggregate or a subquery. |
|||
252
viktor_vv
23.01.13
✎
17:58
|
(251) Про sum и подзапрос уже выше писали.
Убери sum(). |
|||
253
bananan
23.01.13
✎
17:58
|
Что-то вроде Инет у меня глючит...
Повторяю, написал такой код: SELECT SUM($ПоследнееЗначение.Сотрудники.Ставка(Справочник.Сотрудники.ID, :ДатаАктуальности)) Став Ошибка: Cannot perform an aggregate function on an expression containing an aggregate or a subquery. |
|||
254
Ёпрст
гуру
23.01.13
✎
17:59
|
(251) и правильно делает, выгреби последнее значение в подзапросе, а потом уже суммируй во внешнем.
|
|||
255
Ёпрст
гуру
23.01.13
✎
17:59
|
если приспичило
|
|||
256
Wobland
23.01.13
✎
17:59
|
(253) голова у тебя глючит. научи её читать и понимать написанное
|
|||
257
bananan
23.01.13
✎
18:01
|
(254)(252)
Код такой: SELECT $ПоследнееЗначение.Сотрудники.Ставка(Справочник.Сотрудники.ID, :ДатаАктуальности) Став Ошибки: Cannot perform an aggregate function on an expression containing an aggregate or a subquery. The column prefix 'Справочник.Сотрудники' does not match with a table name or alias name used in the query. |
|||
258
bananan
23.01.13
✎
18:01
|
(254) Здесь без функции и все-равно ошибка в запросе..
|
|||
259
viktor_vv
23.01.13
✎
18:01
|
(254) Ну все, еще сотня постов про внешний Select :)).
|
|||
260
Wobland
23.01.13
✎
18:02
|
(257) а в примере как?
|
|||
261
bananan
23.01.13
✎
18:03
|
(260) $ПоследнееЗначение.Цены.Цена(СпрЦ.ID, :ВыбДата) Цена
|
|||
262
Wobland
23.01.13
✎
18:03
|
(261) а у тебя? в чём разница?
|
|||
263
viktor_vv
23.01.13
✎
18:03
|
SELECT $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став
|
|||
264
viktor_vv
23.01.13
✎
18:04
|
А то боюсь намеками будем долго ехать.
|
|||
265
Wobland
23.01.13
✎
18:05
|
(264) ещё полторы-две сотни постов. сейчас он складывать будет
|
|||
266
bananan
23.01.13
✎
18:07
|
(263) СПАСИБО!!!
Теперь буду с подзапросом мучится :) |
|||
267
bananan
23.01.13
✎
18:08
|
+(266) Чего-то сходу не соображу что здесь в подзапросе искать...
|
|||
268
Wobland
23.01.13
✎
18:10
|
выбрать сумма(чего-то)
из (выбрать твои ставки) |
|||
269
Wobland
23.01.13
✎
18:11
|
+(268) сгруппировать, если надо
|
|||
270
bananan
23.01.13
✎
18:12
|
(268)SELECT $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став - это подзапрос?
А в запросе SELECT SUM(Став)? |
|||
271
bananan
23.01.13
✎
18:19
|
Код такой:
|SELECT SUM(Став) |FROM $Справочник.Сотрудники Сотр |INNER JOIN |SELECT $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став |WHERE Сотр.ID IN (SELECT Val FROM #tmpSotr) |AND $Сотр.ДатаПриема> :Дат1 |AND $Сотр.ДатаПриема<= :ДатаАктуальности |AND ($Сотр.ДатаУвольнения = '01.01.1753' or $Сотр.ДатаУвольнения>= :ДатаАктуальности ) |"; Ошибка: ]Incorrect syntax near the keyword 'SELECT'. |
|||
272
bananan
23.01.13
✎
18:19
|
(269) А что здесь группировать?
|
|||
273
Mikeware
23.01.13
✎
18:25
|
м-дя...
|
|||
274
Wobland
23.01.13
✎
18:29
|
выбрать
сумма(таб1.поле1) из (выбрать таб2.поле2 как поле1 из таб2) как таб1 вот тебе нужная схема |
|||
275
bananan
23.01.13
✎
18:32
|
(274) Сейчас попробую..
|
|||
276
bananan
23.01.13
✎
18:44
|
(274)... Сейчас попробую эту схему...
Хотя, НЕ ПОНИМАЮ я вроде так и делаю: Суммиорую SUM(Став) в подзапросе выбираю |INNER JOIN |SELECT $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став |
|||
277
Wobland
23.01.13
✎
18:44
|
(276) кого с чем и зачем соединяешь?
|
|||
278
Wobland
23.01.13
✎
18:45
|
а в схеме ведь никаких джойнов
|
|||
280
Wobland
23.01.13
✎
18:48
|
(279) достал? ;)
|
|||
282
Mikeware
23.01.13
✎
18:48
|
виктор, не балуй!
пусть пытается понять, сто значит слово "думать" |
|||
283
viktor_vv
23.01.13
✎
18:49
|
(280) Есть немного :)), правда упорный.
|
|||
284
Mikeware
23.01.13
✎
18:49
|
(283) ты в последнем слове сделал ошибку..
|
|||
285
viktor_vv
23.01.13
✎
18:49
|
(282) Завязываю :).
|
|||
286
viktor_vv
23.01.13
✎
18:50
|
(284) Когда писал, была такая мысль :)).
|
|||
287
Mikeware
23.01.13
✎
18:50
|
(286) :-))
|
|||
288
bananan
23.01.13
✎
18:50
|
(279) Спасибо!!!
|
|||
289
bananan
23.01.13
✎
18:53
|
Запрос - работает, но... я опять туплю код в скрипте такой:
ТекстЗапроса = " |SELECT |Внутренний.ID as [Сотрудник $Справочник.Сотрудники], | SUM(Внутренний.Став) as Ставка | |From |( | SELECT | Сотр.ID as ID, | $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став | FROM | $Справочник.Сотрудники Сотр | WHERE | Сотр.ID IN (SELECT Val FROM #tmpSotr) | AND $Сотр.ДатаПриема> :Дат1 | AND $Сотр.ДатаПриема<= :ДатаАктуальности | AND ($Сотр.ДатаУвольнения = '01.01.1753' or $Сотр.ДатаУвольнения>= :ДатаАктуальности ) |) as Внутренний |Group by | Внутренний.ID |"; Запрос_.УстановитьТекстовыйПараметр("Дат1", Дата("01.01.1989")); Запрос_.УстановитьТекстовыйПараметр("ДатаАктуальности", ДатаАктуальности+1); Запрос_.УложитьСписокОбъектов(Запрос.Сотр.ТекущийЭлемент(), "#tmpSotr","Сотрудники"); тЗанято = Запрос_.ВыполнитьСкалярный(ТекстЗапроса); ПоШтату = Запрос.Сотр.ПоШтату; Если Запрос.Сотр.ПоШтату-тЗанято<0 Тогда тВакантно = 0; КонецЕсли; ФиксДан = Шаблон("Занято: [тЗанято] \ По штату: [Запрос.Сотр.ПоШтату] \ Вакантно: [тВакантно]"); А вот на вывод вместо суммы ставок и частей ставок выдает: Занято: Структура \ По штату: 109.5 \ Вакантно: 2 |
|||
290
bananan
23.01.13
✎
18:54
|
т.е. тЗанято как-то иначе надо представить...
|
|||
291
Wobland
23.01.13
✎
18:56
|
что за Запрос? я про переменную
|
|||
292
bananan
23.01.13
✎
18:57
|
А запрос
|SELECT |Внутренний.ID as [Сотрудник $Справочник.Сотрудники], | SUM(Внутренний.Став) as Ставка | |From |( | SELECT | Сотр.ID as ID, | $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став | FROM | $Справочник.Сотрудники Сотр | WHERE | Сотр.ID IN (SELECT Val FROM #tmpSotr) | AND $Сотр.ДатаПриема> :Дат1 | AND $Сотр.ДатаПриема<= :ДатаАктуальности | AND ($Сотр.ДатаУвольнения = '01.01.1753' or $Сотр.ДатаУвольнения>= :ДатаАктуальности ) |) as Внутренний |Group by | Внутренний.ID |"; что возвращает? |
|||
293
bananan
23.01.13
✎
18:58
|
(291) Где это?
|
|||
294
Wobland
23.01.13
✎
18:58
|
(292) обычно ТЗ
|
|||
295
Wobland
23.01.13
✎
18:58
|
(293) в (289)
|
|||
297
viktor_vv
23.01.13
✎
19:00
|
А, вернее он куда-то пропал :)).
|
|||
298
Wobland
23.01.13
✎
19:00
|
(296) что такое скалярный? я сейчас для повышения эрудиции, сам не знаю
|
|||
299
bananan
23.01.13
✎
19:00
|
(289) там так (покажу больше кода):
Запрос_=СоздатьОбъект("ODBCRecordset"); ТекстЗапроса = " |SELECT |Внутренний.ID as [Сотрудник $Справочник.Сотрудники], | SUM(Внутренний.Став) as Ставка | |From |( | SELECT | Сотр.ID as ID, | $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став | FROM | $Справочник.Сотрудники Сотр | WHERE | Сотр.ID IN (SELECT Val FROM #tmpSotr) | AND $Сотр.ДатаПриема> :Дат1 | AND $Сотр.ДатаПриема<= :ДатаАктуальности | AND ($Сотр.ДатаУвольнения = '01.01.1753' or $Сотр.ДатаУвольнения>= :ДатаАктуальности ) |) as Внутренний |Group by | Внутренний.ID |"; Запрос_.УстановитьТекстовыйПараметр("Дат1", Дата("01.01.1989")); Запрос_.УстановитьТекстовыйПараметр("ДатаАктуальности", ДатаАктуальности+1); Запрос_.УложитьСписокОбъектов(Запрос.Сотр.ТекущийЭлемент(), "#tmpSotr","Сотрудники"); тЗанято = Запрос_.ВыполнитьСкалярный(ТекстЗапроса); ПоШтату = Запрос.Сотр.ПоШтату; Если Запрос.Сотр.ПоШтату-тЗанято<0 Тогда тВакантно = 0; КонецЕсли; ФиксДан = Шаблон("Занято: [тЗанято] \ По штату: [Запрос.Сотр.ПоШтату] \ Вакантно: [тВакантно]"); Если фУволенные=0 Тогда Если тЗанято = 0 Тогда продолжить; Конецесли; |
|||
300
Mikeware
23.01.13
✎
19:00
|
(294) у него Запрос_.ВыполнитьСкалярный(ТекстЗапроса)
|
|||
301
Mikeware
23.01.13
✎
19:01
|
(297) :-))
|
|||
302
Wobland
23.01.13
✎
19:02
|
(299) что такое "Запрос"?
|
|||
303
Wobland
23.01.13
✎
19:04
|
(302) какой тип у переменной? что туда присваивается?
|
|||
304
bananan
23.01.13
✎
19:15
|
Разве запрос:
|SELECT |Внутренний.ID as [Сотрудник $Справочник.Сотрудники], | SUM(Внутренний.Став) as Ставка | |From |( | SELECT | Сотр.ID as ID, | $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став | FROM | $Справочник.Сотрудники Сотр | WHERE | Сотр.ID IN (SELECT Val FROM #tmpSotr) | AND $Сотр.ДатаПриема> :Дат1 | AND $Сотр.ДатаПриема<= :ДатаАктуальности | AND ($Сотр.ДатаУвольнения = '01.01.1753' or $Сотр.ДатаУвольнения>= :ДатаАктуальности ) |) as Внутренний |Group by | Внутренний.ID |"; Вернет структуру, а не число?? |
|||
305
Wobland
23.01.13
✎
19:17
|
(304) выбираешь ИД и ждёшь числу?
|
|||
306
bananan
23.01.13
✎
19:26
|
Такой код:
|SELECT | SUM(Внутренний.Став) as Ставка | |From |( | SELECT | Сотр.ID as ID, | $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став | FROM | $Справочник.Сотрудники Сотр | WHERE | Сотр.ID IN (SELECT Val FROM #tmpSotr) | AND $Сотр.ДатаПриема> :Дат1 | AND $Сотр.ДатаПриема<= :ДатаАктуальности | AND ($Сотр.ДатаУвольнения = '01.01.1753' or $Сотр.ДатаУвольнения>= :ДатаАктуальности ) |) as Внутренний |Group by | Внутренний.ID |"; выдает в любом случае 1 (единицу)!!! |
|||
307
bananan
23.01.13
✎
19:33
|
+(306) убрал:
|Group by | Внутренний.ID Теперь считает так как надо! Всем большое спасибо.!!! |
|||
308
Wobland
23.01.13
✎
19:48
|
Сотр.ID as ID, убери ещё
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |