|
Ошибка СУБД SQL Server: Case expressions may only be nested to level 10 | ☑ | ||
---|---|---|---|---|
0
Mikhail Volkov
19.09.17
✎
19:11
|
Если по русски: Количество уровней вложенности выражений CASE не может превышать 10.
Альфа-Авто содержит такой фрагмент запроса: |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТаблицаПодразделений.Уровень КАК Уровень, | ТаблицаЦен.Номенклатура, | ТаблицаЦен.ТипЦен, | (ВЫБОР КОГДА ТаблицаЦен.ТипЦен.ОкруглятьВБольшуюСторону И ТаблицаЦен.ТипЦен.Точность = 1 ТОГДА | ВЫРАЗИТЬ((ТаблицаЦен.Цена + 0.05) * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета КАК ЧИСЛО(15, 1)) | ИНАЧЕ ВЫБОР КОГДА ТаблицаЦен.ТипЦен.ОкруглятьВБольшуюСторону И ТаблицаЦен.ТипЦен.Точность = 0 ТОГДА | ВЫРАЗИТЬ((ТаблицаЦен.Цена + 0.0) * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета КАК ЧИСЛО(15, 0)) | ИНАЧЕ ВЫБОР КОГДА ТаблицаЦен.ТипЦен.ОкруглятьВБольшуюСторону И ТаблицаЦен.ТипЦен.Точность = -1 ТОГДА | (ВЫРАЗИТЬ((ТаблицаЦен.Цена + 5) * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета / 10 КАК ЧИСЛО(15, 0))) * 10 | ИНАЧЕ ВЫБОР КОГДА ТаблицаЦен.ТипЦен.ОкруглятьВБольшуюСторону И ТаблицаЦен.ТипЦен.Точность = -2 ТОГДА | (ВЫРАЗИТЬ((ТаблицаЦен.Цена + 50) * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета / 100 КАК ЧИСЛО(15, 0))) * 100 | ИНАЧЕ ВЫБОР КОГДА ТаблицаЦен.ТипЦен.ОкруглятьВБольшуюСторону И ТаблицаЦен.ТипЦен.Точность = -3 ТОГДА | (ВЫРАЗИТЬ((ТаблицаЦен.Цена + 500) * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета / 1000 КАК ЧИСЛО(15, 0))) * 1000 | ИНАЧЕ ВЫБОР КОГДА ТаблицаЦен.ТипЦен.ОкруглятьВБольшуюСторону И ТаблицаЦен.ТипЦен.Точность = 2 ТОГДА | ТаблицаЦен.Цена * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета | ИНАЧЕ ВЫБОР КОГДА НЕ ТаблицаЦен.ТипЦен.ОкруглятьВБольшуюСторону И ТаблицаЦен.ТипЦен.Точность = 1 ТОГДА | ВЫРАЗИТЬ(ТаблицаЦен.Цена * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета КАК ЧИСЛО(15, 1)) | ИНАЧЕ ВЫБОР КОГДА НЕ ТаблицаЦен.ТипЦен.ОкруглятьВБольшуюСторону И ТаблицаЦен.ТипЦен.Точность = 0 ТОГДА | ВЫРАЗИТЬ(ТаблицаЦен.Цена * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета КАК ЧИСЛО(15, 0)) | ИНАЧЕ ВЫБОР КОГДА НЕ ТаблицаЦен.ТипЦен.ОкруглятьВБольшуюСторону И ТаблицаЦен.ТипЦен.Точность = -1 ТОГДА | (ВЫРАЗИТЬ(ТаблицаЦен.Цена * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета / 10 КАК ЧИСЛО(15, 0))) * 10 | ИНАЧЕ ВЫБОР КОГДА НЕ ТаблицаЦен.ТипЦен.ОкруглятьВБольшуюСторону И ТаблицаЦен.ТипЦен.Точность = -2 ТОГДА | (ВЫРАЗИТЬ(ТаблицаЦен.Цена * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета / 100 КАК ЧИСЛО(15, 0))) * 100 | ИНАЧЕ ВЫБОР КОГДА НЕ ТаблицаЦен.ТипЦен.ОкруглятьВБольшуюСторону И ТаблицаЦен.ТипЦен.Точность = -3 ТОГДА | (ВЫРАЗИТЬ(ТаблицаЦен.Цена * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета / 1000 КАК ЧИСЛО(15, 0))) * 1000 | ИНАЧЕ ВЫБОР КОГДА НЕ ТаблицаЦен.ТипЦен.ОкруглятьВБольшуюСторону И ТаблицаЦен.ТипЦен.Точность = 2 ТОГДА | ТаблицаЦен.Цена * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета | ИНАЧЕ 0 | КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ) КАК Цена и что, их (не единственный) переписывать? Другого выхода нет? |
|||
1
mehfk
19.09.17
✎
19:20
|
Переписывай. Убирай "ИНАЧЕ", тут достаточно одного CASE.
|
|||
2
mehfk
19.09.17
✎
19:21
|
* убирай "ИНАЧЕ ВЫБОР"
|
|||
3
Господин ПЖ
19.09.17
✎
19:21
|
(0) научи их писать
выбор когда тогда когда тогда когда тогда когда тогда |
|||
4
Филиал-msk
19.09.17
✎
19:22
|
КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ КОНЕЦ
Внушаеть! |
|||
5
Господин ПЖ
19.09.17
✎
19:23
|
(4) ай да рарус! ай да сукин сын
|
|||
6
mehfk
19.09.17
✎
19:23
|
Альфа - это сборник примеров как делать не надо.
|
|||
7
Mikhail Volkov
20.09.17
✎
11:12
|
(3) А эта конструкция не превысит вложенности выражений CASE?
Всю эту хрень одной строчкой в запросе заменил: | (ВЫРАЗИТЬ((ТаблицаЦен.Цена + ПоправкаЦеныПрайсЛист) * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета ВыражениеИзПоправкиЦеныПрайсЛист КАК Цена В конце добавил: ВыражениеИзПоправкиЦеныПрайсЛист = ""; //+МВ 20.09.2017 ТекстТаблицЦенБазовыхТиповЦен = СтрЗаменить(ТекстТаблицЦенБазовыхТиповЦен, "ПоправкаЦеныПрайсЛист", мвДоработки.ПоправкаЦеныПрайсЛист(БазовыйТипЦен, ВыражениеИзПоправкиЦеныПрайсЛист)); ТекстТаблицЦенБазовыхТиповЦен = СтрЗаменить(ТекстТаблицЦенБазовыхТиповЦен, "ВыражениеИзПоправкиЦеныПрайсЛист", ВыражениеИзПоправкиЦеныПрайсЛист); //-МВ Работает в SQL |
|||
8
Йохохо
20.09.17
✎
11:22
|
(7) обфускация изменения ВыражениеИзПоправкиЦеныПрайсЛист в второй строке
|
|||
9
Mikhail Volkov
20.09.17
✎
11:46
|
(8) Да, еще:
// Возвращает поправку цены Прайс-листа // Функция ПоправкаЦеныПрайсЛист(ТипЦен, Выражение = "") Экспорт Поправка = ""; Если ТипЦен.Точность = 1 Тогда Поправка = "0.05"; Выражение = "КАК ЧИСЛО(15, 1)))"; ИначеЕсли ТипЦен.Точность = 0 Тогда Выражение = "КАК ЧИСЛО(15, 0)))"; ИначеЕсли ТипЦен.Точность = -1 Тогда Поправка = "5"; Выражение = "/ 10 КАК ЧИСЛО(15, 0))) * 10"; ИначеЕсли ТипЦен.Точность = -2 Тогда Поправка = "50"; Выражение = "/ 100 КАК ЧИСЛО(15, 0))) * 100"; ИначеЕсли ТипЦен.Точность = -3 Тогда Поправка = "500"; Выражение = "/ 1000 КАК ЧИСЛО(15, 0))) * 1000"; КонецЕсли; Возврат ?(ТипЦен.ОкруглятьВБольшуюСторону, Поправка, 0); КонецФункции // ПоправкаЦеныПрайсЛист() |
|||
10
mistеr
20.09.17
✎
11:53
|
(0) Все эти варианты прямо в тексте или генерируются?
Как-то не верится, что у всех работает, а у тебя нет. |
|||
11
Господин ПЖ
20.09.17
✎
11:58
|
такая ошибка на линкованных серверах всплывает
|
|||
12
Mikhail Volkov
20.09.17
✎
12:20
|
(10) Прямо в тексте. Старая Альфа-Авто 4.1.01.30 на 8.3.10.2466
|
|||
13
Ненавижу 1С
гуру
20.09.17
✎
12:30
|
(11) расшифруй
|
|||
14
Фрэнки
20.09.17
✎
12:35
|
(13) наверное, он хотел сказать о постгри на линухах
|
|||
15
Господин ПЖ
20.09.17
✎
12:36
|
(14) садись, два
|
|||
16
Господин ПЖ
20.09.17
✎
12:36
|
||||
17
Ненавижу 1С
гуру
20.09.17
✎
12:59
|
(16) там о 10 ветках WHEN в одном CASE
а у автора о 10 вложенных операторах CASE |
|||
18
Вафель
20.09.17
✎
13:02
|
(17) Там ответ
|
|||
19
Вафель
20.09.17
✎
13:02
|
Not in the query text, no. But the parser always expands CASE expressions to the nested form
Так что написал (0) так сам скл делает всегда |
|||
20
Mikhail Volkov
21.09.17
✎
15:42
|
Прислали еще ошибку:
{ОбщийМодуль.отОтчеты.Модуль(6947)}: Ошибка при установке значения атрибута контекста (Текст): {(145, 1)}: Ожидается выражение ")" <<?>>ПОМЕСТИТЬ ТаблицаЦенТипЦен9685bde5_e9b7_11e0_a4c7_68b599b4ac4e {ОбщийМодуль.зфЗащищенныеФункции.Модуль(2538)}: Метод объекта не обнаружен (СформироватьТабличныйДокумент) У себя ее получить не смог. Но отчет ПрайсЛист работает как-то странно: в фильтре по номенклатуре меняю только каталог номенклатуры. Для одних работает, для других кроме шапки - пусто!? Вернулся в файловую копию (где нет моих исправлений) - тоже самое!? |
|||
21
mehfk
21.09.17
✎
15:54
|
||||
22
Mikhail Volkov
23.09.17
✎
14:37
|
Если есть отбор по Номенклатуре, то в запросе должно быть &Номенклатура? Смотрю текст запроса в начальной стадии формирования - &Номенклатура не нахожу!? Пытаюсь его извлечь на окончательной стадии, выражение ТекстЗапроса = ПостроительОтчета.Текст(); ошибку дает? Хотя отладчик его показывает!? Что ни так? Он большой, хочу в сообщение его вывести, и поискать &Номенклатура.
|
|||
23
Mikhail Volkov
23.09.17
✎
16:08
|
Текст запроса получил ПостроительОтчета.ПолучитьЗапрос().Текст перед самым выполнением:
ТекстЗапроса = " |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | ПрайсЛисты.Ссылка КАК ПрайсЛист, | ПрайсЛисты.Номенклатура КАК Номенклатура |ПОМЕСТИТЬ ТаблицаПрайсЛистов |ИЗ | Справочник.ПрайсЛист КАК ПрайсЛисты |ГДЕ | ПрайсЛисты.Владелец = &ВидПрайсЛиста | И ПрайсЛисты.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) | И ПрайсЛисты.Номенклатура В ИЕРАРХИИ (&Параметр1) | |ИНДЕКСИРОВАТЬ ПО | Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ПрайсЛисты.ПрайсЛист КАК ПрайсЛист, | ПрайсЛисты.Номенклатура КАК Номенклатура, | ВЫБОР | КОГДА ОстаткиТоваровКомпанииОстатки.Номенклатура ЕСТЬ NULL | ТОГДА 0 | ИНАЧЕ (ОстаткиТоваровКомпанииОстатки.КоличествоОстаток - ОстаткиТоваровКомпанииОстатки.РезервОстаток) / ОстаткиТоваровКомпанииОстатки.Номенклатура.ОсновнаяЕдиницаИзмерения.Коэффициент | КОНЕЦ КАК Количество |ПОМЕСТИТЬ ТаблицаОстатков |ИЗ | ТаблицаПрайсЛистов КАК ПрайсЛисты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваровКомпании.Остатки( | &ДатаКон, | ((Номенклатура В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ТаблицаПрайсЛистов.Номенклатура | ИЗ | ТаблицаПрайсЛистов КАК ТаблицаПрайсЛистов)) И Номенклатура В ИЕРАРХИИ(&Параметр2)) И Номенклатура В ИЕРАРХИИ(&Параметр3)) КАК ОстаткиТоваровКомпанииОстатки | ПО ПрайсЛисты.Номенклатура = ОстаткиТоваровКомпанииОстатки.Номенклатура | |ИНДЕКСИРОВАТЬ ПО | Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ ТаблицаПрайсЛистов |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТаблицаПодразделений.Родитель КАК Родитель, | ТаблицаПодразделений.Уровень КАК Уровень |ПОМЕСТИТЬ ТаблицаПодразделений |ИЗ | (ВЫБРАТЬ | ЗНАЧЕНИЕ(Справочник.ПодразделенияКомпании.ПустаяСсылка) КАК Родитель, | 2 КАК Уровень | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | &Подразделение0, | 0 | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | &Подразделение1, | 1) КАК ТаблицаПодразделений | |ИНДЕКСИРОВАТЬ ПО | Родитель |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТаблицаПодразделений.Уровень КАК Уровень, | ТаблицаЦен.Номенклатура КАК Номенклатура, | ТаблицаЦен.Цена * КурсыВалютСрезПоследних.Курс / ЕСТЬNULL(КурсыВалютСрезПоследних.Кратность, 1) / &КурсВалютыОтчета КАК Цена |ПОМЕСТИТЬ ТаблицаЦенТипЦенd01dde69_2607_11e1_baf9_68b599b4ac4e |ИЗ | ТаблицаПодразделений КАК ТаблицаПодразделений | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних( | &ДатаКон, | ТипЦен = &ТипЦенd01dde69_2607_11e1_baf9_68b599b4ac4e | И Контрагент = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) | И ПодразделениеКомпании В | (ВЫБРАТЬ | ТаблицаПодразделений.Родитель | ИЗ | ТаблицаПодразделений КАК ТаблицаПодразделений) | И ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) | И ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка)) КАК ТаблицаЦен | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаКон, Валюта = &ВалютаТипЦенd01dde69_2607_11e1_baf9_68b599b4ac4e) КАК КурсыВалютСрезПоследних | ПО (ИСТИНА) | ПО ТаблицаПодразделений.Родитель = ТаблицаЦен.ПодразделениеКомпании |ГДЕ | ТаблицаЦен.Цена > 0 | И ТаблицаЦен.Номенклатура В ИЕРАРХИИ (&Параметр4) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МИНИМУМ(ТаблицаЦен.Уровень) КАК Уровень, | ТаблицаЦен.Номенклатура КАК Номенклатура |ПОМЕСТИТЬ ТаблицаОтбораЦенТипЦенd01dde69_2607_11e1_baf9_68b599b4ac4e |ИЗ | ТаблицаЦенТипЦенd01dde69_2607_11e1_baf9_68b599b4ac4e КАК ТаблицаЦен |ГДЕ | ТаблицаЦен.Номенклатура В ИЕРАРХИИ (&Параметр5) | |СГРУППИРОВАТЬ ПО | ТаблицаЦен.Номенклатура | |ИНДЕКСИРОВАТЬ ПО | Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаЦен.Номенклатура КАК Номенклатура, | ТаблицаЦен.Цена КАК Цена |ПОМЕСТИТЬ ТаблицаЦенПодразделенияТипЦенd01dde69_2607_11e1_baf9_68b599b4ac4e |ИЗ | ТаблицаЦенТипЦенd01dde69_2607_11e1_baf9_68b599b4ac4e КАК ТаблицаЦен |ГДЕ | (ТаблицаЦен.Уровень, ТаблицаЦен.Номенклатура) В | (ВЫБРАТЬ | ТаблицаЦен.Уровень, | ТаблицаЦен.Номенклатура | ИЗ | ТаблицаОтбораЦенТипЦенd01dde69_2607_11e1_baf9_68b599b4ac4e КАК ТаблицаЦен) | И ТаблицаЦен.Номенклатура В ИЕРАРХИИ (&Параметр6) | |ИНДЕКСИРОВАТЬ ПО | ТаблицаЦен.Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |УНИЧТОЖИТЬ ТаблицаЦенТипЦенd01dde69_2607_11e1_baf9_68b599b4ac4e |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ТаблицаОстатков.ПрайсЛист КАК Товар, | ТаблицаОстатков.Номенклатура КАК Номенклатура, | ТаблицаОстатков.Количество КАК Количество, | ЕСТЬNULL(ТипЦенd01dde69_2607_11e1_baf9_68b599b4ac4e.Цена, 0) КАК Ценаd01dde69_2607_11e1_baf9_68b599b4ac4e |ИЗ | ТаблицаОстатков КАК ТаблицаОстатков | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаЦенПодразделенияТипЦенd01dde69_2607_11e1_baf9_68b599b4ac4e КАК ТипЦенd01dde69_2607_11e1_baf9_68b599b4ac4e | ПО ТаблицаОстатков.Номенклатура = ТипЦенd01dde69_2607_11e1_baf9_68b599b4ac4e.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихКоды КАК ШтрихКоды | ПО ТаблицаОстатков.Номенклатура = ШтрихКоды.Объект | И (НЕ ШтрихКоды.Запрет) | И (ВЫБОР | КОГДА ТаблицаОстатков.ПрайсЛист.Номенклатура.ТипНоменклатуры.ИспользованиеШтрихКодов = 1 | ТОГДА ШтрихКоды.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка) | И ШтрихКоды.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) | КОГДА ТаблицаОстатков.ПрайсЛист.Номенклатура.ТипНоменклатуры.ИспользованиеШтрихКодов = 2 | ТОГДА ШтрихКоды.ЕдиницаИзмерения = ТаблицаОстатков.Номенклатура.ОсновнаяЕдиницаИзмерения | КОГДА ТаблицаОстатков.ПрайсЛист.Номенклатура.ТипНоменклатуры.ИспользованиеШтрихКодов = 3 | ТОГДА ШтрихКоды.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) | ИНАЧЕ ШтрихКоды.ЕдиницаИзмерения = ТаблицаОстатков.Номенклатура.ОсновнаяЕдиницаИзмерения | И ШтрихКоды.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) | КОНЕЦ) |ГДЕ | ТаблицаОстатков.ПрайсЛист.Номенклатура В ИЕРАРХИИ (&Параметр7) | |УПОРЯДОЧИТЬ ПО | Товар, | ТаблицаОстатков.Номенклатура.Наименование |ИТОГИ | МАКСИМУМ(Количество), | ВЫБОР | КОГДА НЕ Номенклатура ЕСТЬ NULL | ТОГДА МАКСИМУМ(Ценаd01dde69_2607_11e1_baf9_68b599b4ac4e) | ИНАЧЕ 0 | КОНЕЦ КАК Ценаd01dde69_2607_11e1_baf9_68b599b4ac4e |ПО | Товар ТОЛЬКО ИЕРАРХИЯ КАК Товар, | Номенклатура КАК Номенклатура"; Но не пойму как реализован отбор по номенклатуре!? Тексты запроса одни и те же независимо от выбранного каталога номенклатуры. |
|||
24
Mikhail Volkov
23.09.17
✎
17:01
|
Блин, оказывается в Альфа-Авто есть специальный справочник "Прайс-лист", сперва его надо заполнить, отобрать только нужное для Прайс-листа.
|
|||
25
mexanik_96
23.09.17
✎
22:50
|
(6) да ладно? а как надо покажи. художники разные бывают. анси 1с нет, так что не надо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |