Имя: Пароль:
1C
1С v8
Выбор Когда
0 burrya
 
16.04.14
18:14
Всем привет, не срабатывает кусок запроса, запрос выполняется, но СтатусПоНаличию - получается пустым по всему результату запроса.

    ВЫБОР КОГДА (ЗапросПрайс.Номенклатура._СтатусПоНаличию <> &Пустой_СтатусПоНаличию) ТОГДА
        ЗапросПрайс.Номенклатура._СтатусПоНаличию
    КОГДА (Остатки.Остаток <= 0) ТОГДА
        &НетВНаличии
    КОГДА ((Остатки.Остаток >= 1) И  (Остатки.Остаток <= 5)) ТОГДА
        &Заканчивается
    ИНАЧЕ
        &ВНаличии
    КОНЕЦ КАК СтатусПоНаличию

Используется построитель отчета, обработка печати прайса.

Полный запрос:

ВЫБРАТЬ РАЗРЕШЕННЫЕ //РАЗЛИЧНЫЕ
    НЕ ЕСТЬNULL(ЗапросПрайс.Номенклатура.ВестиУчетПоХарактеристикам, ИСТИНА) КАК НетХарактеристик,
    ЗапросПрайс.ТипЦен.ПорядокОкругления КАК ПорядокОкругления,
    ЗапросПрайс.ТипЦен.ОкруглятьВБольшуюСторону КАК ОкруглятьВБольшуюСторону,
    ЗапросПрайс.ТипЦен,
    ЗапросПрайс.ТипЦен.Представление КАК ТипЦенПредставление,
    ЗапросПрайс.ЦеноваяГруппа,
    ЗапросПрайс.ЦеноваяГруппа.Представление КАК ЦеноваяГруппаПредставление,
    ЗапросПрайс.Номенклатура,
    ЗапросПрайс.Номенклатура.Артикул КАК Артикул,
    ЗапросПрайс.Номенклатура._СтатусТовара КАК СтатусТовара,
    Остатки.Остаток,
    ВЫБОР
    КОГДА (ЗапросПрайс.Номенклатура._СтатусПоНаличию <> &Пустой_СтатусПоНаличию) ТОГДА
        ЗапросПрайс.Номенклатура._СтатусПоНаличию
    КОГДА (Остатки.Остаток <= 0) ТОГДА
        &НетВНаличии
    КОГДА ((Остатки.Остаток >= 1) И  (Остатки.Остаток <= 5)) ТОГДА
        &Заканчивается
    ИНАЧЕ
        &ВНаличии
    КОНЕЦ КАК СтатусПоНаличию,
    ЗапросПрайс.Номенклатура.Представление КАК НоменклатураПредставление,
    ЗапросПрайс.ХарактеристикаНоменклатуры,
    ЗапросПрайс.ХарактеристикаНоменклатуры.Представление КАК ХарактеристикаНоменклатурыПредставление,
    МестаХранения.МестоХранения КАК Стеллаж,
    МестаХранения.МестоХранения.Представление КАК СтеллажПредставление,
    Штрихкоды.Штрихкод КАК ШтрихКод,
    ВЫБОР КОГДА ЗапросПрайс.Цена <> 0 ТОГДА
        ЗапросПрайс.ЕдиницаИзмерения.Представление
    ИНАЧЕ
        &ПустаяСтрока
    КОНЕЦ КАК ЕдиницаИзмерения,
    ВЫБОР КОГДА ЗапросПрайс.Цена <> 0 ТОГДА
        ЗапросПрайс.ВалютаПрайса.Представление
    ИНАЧЕ
        &ПустаяСтрока
    КОНЕЦ КАК Валюта,
    ВЫБОР КОГДА ЗапросПрайс.Валюта = ЗапросПрайс.ВалютаПрайса
            ИЛИ ЗапросПрайс.Цена = 0 ТОГДА
        ЗапросПрайс.Цена
    ИНАЧЕ
        ЗапросПрайс.Цена * ВЫБОР КОГДА КурсыВалютСрезПоследних.Курс = 0 ТОГДА
                                        1
                                    ИНАЧЕ
                                        КурсыВалютСрезПоследних.Курс КОНЕЦ
                         * ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчет.Кратность = 0 ТОГДА
                                        1
                                    ИНАЧЕ
                                        КурсыВалютСрезПоследнихОтчет.Кратность КОНЕЦ
                         / ВЫБОР КОГДА КурсыВалютСрезПоследнихОтчет.Курс = 0 ТОГДА
                                        1
                                    ИНАЧЕ
                                        КурсыВалютСрезПоследнихОтчет.Курс КОНЕЦ
                         / ВЫБОР КОГДА КурсыВалютСрезПоследних.Кратность = 0 ТОГДА
                                        1
                                    ИНАЧЕ
                                        КурсыВалютСрезПоследних.Кратность КОНЕЦ
    КОНЕЦ КАК Цена  
//СВОЙСТВА
//ПРЕДСТАВЛЕНИЯ_СВОЙСТВА
ИЗ
(ВЫБРАТЬ
    ЦеныБазовые.ТипЦен КАК ТипЦен,
    ВЫБОР КОГДА &ВВалютеОтчета = ЛОЖЬ ТОГДА
        ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
            ЦеныБазовые.ТипЦен.ВалютаЦены
        ИНАЧЕ
            МИНИМУМ(
                ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
                    ВЫБОР КОГДА ЦеныРасчетные.Валюта ЕСТЬ NULL ТОГДА
                        ЦеныБазовые.Валюта
                    ИНАЧЕ
                        ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
                            ЦеныРасчетные.Валюта
                        ИНАЧЕ
                            ЦеныБазовые.ВалютаДиапазона
                        КОНЕЦ
                    КОНЕЦ
                ИНАЧЕ
                    ЦеныБазовые.Валюта
                КОНЕЦ
            )
        КОНЕЦ
    ИНАЧЕ
        &ВалютаОтчета
    КОНЕЦ КАК ВалютаПрайса,
    ЦеныБазовые.ЦеноваяГруппа,
    ЦеныБазовые.Номенклатура,
    ЦеныБазовые.ХарактеристикаНоменклатуры,
    МИНИМУМ(
        ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
            ЦеныРасчетные.ЕдиницаИзмерения
        ИНАЧЕ
            ЦеныБазовые.ЕдиницаИзмерения
        КОНЕЦ
    ) КАК ЕдиницаИзмерения,
    МИНИМУМ(
        ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
            ВЫБОР КОГДА ЦеныРасчетные.Валюта ЕСТЬ NULL ТОГДА
                ЦеныБазовые.Валюта
            ИНАЧЕ
                ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
                    ЦеныРасчетные.Валюта
                ИНАЧЕ
                    ЦеныБазовые.ВалютаДиапазона
                КОНЕЦ
            КОНЕЦ
        ИНАЧЕ
            ЦеныБазовые.Валюта
        КОНЕЦ
    ) КАК Валюта,
    МИНИМУМ(
        ВЫБОР КОГДА ЦеныБазовые.ТипЦен.Рассчитывается ТОГДА
            ВЫБОР КОГДА ЦеныБазовые.СпособРасчетаЦены = &СпособНаценка ТОГДА
                ВЫБОР КОГДА ЦеныРасчетные.Цена ЕСТЬ NULL ТОГДА
                    0
                ИНАЧЕ
                    ЦеныРасчетные.Цена * (1 + ЦеныБазовые.ПроцентСкидкиНаценки / 100)
                КОНЕЦ
            ИНАЧЕ
                ЦеныБазовые.ЦенаДиапазона
            КОНЕЦ
        ИНАЧЕ
            ЦеныБазовые.Цена
        КОНЕЦ
    ) КАК Цена

ИЗ
(ВЫБРАТЬ
    СписокНоменклатуры.Номенклатура КАК Номенклатура,
    СписокНоменклатуры.Номенклатура.ЦеноваяГруппа КАК ЦеноваяГруппа,
    СписокНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    СпрТипЦен.ТипЦен КАК ТипЦен,
    ЦеныНоменклатуры.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Цена,
    ВЫБОР КОГДА ЦеныНоменклатуры.Номенклатура ЕСТЬ NULL ТОГДА
        СпрТипЦен.ПроцентСкидкиНаценки
    ИНАЧЕ
        ЕСТЬNULL(ЦеныНоменклатуры.ПроцентСкидкиНаценки, ЦеныНоменклатуры.ТипЦен.ПроцентСкидкиНаценки)
    КОНЕЦ КАК ПроцентСкидкиНаценки,
    ВЫБОР КОГДА ЦеныНоменклатуры.Номенклатура ЕСТЬ NULL ТОГДА
        СпрТипЦен.СпособРасчетаЦены
    ИНАЧЕ
        ЕСТЬNULL(ЦеныНоменклатуры.СпособРасчетаЦены, ЦеныНоменклатуры.ТипЦен.СпособРасчетаЦены)
    КОНЕЦ КАК СпособРасчетаЦены,
    ЕСТЬNULL(ШкалыДиапазонов.Цена, 0) КАК ЦенаДиапазона,
    ЕСТЬNULL(ШкалыДиапазонов.ВерхняяГраница, 0) КАК ВерхняяГраница,
    ЕСТЬNULL(ЦеныНоменклатуры.Валюта, СпрТипЦен.Валюта) КАК Валюта,
    ШкалыДиапазонов.Валюта КАК ВалютаДиапазона

ИЗ
    (ВЫБРАТЬ
        СпрХарактеристики.Владелец КАК Номенклатура,
        СпрХарактеристики.Ссылка КАК ХарактеристикаНоменклатуры
    ИЗ Справочник.ХарактеристикиНоменклатуры КАК СпрХарактеристики
    {ГДЕ СпрХарактеристики.Владелец.* КАК Номенклатура,
    СпрХарактеристики.Владелец.ЦеноваяГруппа.* КАК ЦеноваяГруппа}
    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ
        СпрНоменклатура.Ссылка,
        ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
    ИЗ Справочник.Номенклатура КАК СпрНоменклатура
    {ГДЕ СпрНоменклатура.Ссылка.* КАК Номенклатура,
    СпрНоменклатура.Ссылка.ЦеноваяГруппа.* КАК ЦеноваяГруппа}
    ) КАК СписокНоменклатуры
    СОЕДИНЕНИЕ
    (ВЫБРАТЬ
        СправочникЦен.Ссылка КАК ТипЦен,
        СправочникЦен.ВалютаЦены КАК Валюта,
        СправочникЦен.ПроцентСкидкиНаценки КАК ПроцентСкидкиНаценки,
        СправочникЦен.СпособРасчетаЦены КАК СпособРасчетаЦены
    ИЗ
        Справочник.ТипыЦенНоменклатуры КАК СправочникЦен
    {ГДЕ СправочникЦен.Ссылка.* КАК ТипЦен}
    ) КАК СпрТипЦен
    ПО НЕ СписокНоменклатуры.Номенклатура.ЭтоГруппа
     И НЕ СписокНоменклатуры.Номенклатура.Набор
    ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, {Номенклатура.* КАК Номенклатура,
       Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа, ТипЦен.* КАК ТипЦен}) КАК ЦеныНоменклатуры
    ПО ЦеныНоменклатуры.Номенклатура = СписокНоменклатуры.Номенклатура
    И ЦеныНоменклатуры.ТипЦен = СпрТипЦен.ТипЦен
    И ЦеныНоменклатуры.ХарактеристикаНоменклатуры = СписокНоменклатуры.ХарактеристикаНоменклатуры
    ЛЕВОЕ СОЕДИНЕНИЕ
    (ВЫБРАТЬ
        ДиапазоныЦен.ТипЦен,
        ДиапазоныЦен.ВерхняяГраница,
        ДиапазоныЦен.Цена,
        ДиапазоныЦен.Валюта,
        ДиапазоныЦен.ПЕРИОД КАК Период
    ИЗ
        РегистрСведений.ДиапазоныЦенДляНаценки.СрезПоследних(&Дата,
           {ТипЦен.* КАК ТипЦен}) КАК ДиапазоныЦен
    СОЕДИНЕНИЕ
    (ВЫБРАТЬ
        ДиапазоныЦенДляНаценкиСрезПоследних.ТипЦен,
        МАКСИМУМ(ДиапазоныЦенДляНаценкиСрезПоследних.ПЕРИОД) КАК Период
    ИЗ
        РегистрСведений.ДиапазоныЦенДляНаценки.СрезПоследних(&Дата,
           {ТипЦен.* КАК ТипЦен}) КАК ДиапазоныЦенДляНаценкиСрезПоследних
    СГРУППИРОВАТЬ ПО
        ДиапазоныЦенДляНаценкиСрезПоследних.ТипЦен
    ) КАК МаксДиапазоныЦен
    ПО ДиапазоныЦен.ТипЦен = МаксДиапазоныЦен.ТипЦен
    И ДиапазоныЦен.Период = МаксДиапазоныЦен.Период
    ) КАК ШкалыДиапазонов
    ПО ШкалыДиапазонов.ТипЦен = СпрТипЦен.ТипЦен
    И СпрТипЦен.ТипЦен.Рассчитывается

) КАК ЦеныБазовые
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, {Номенклатура.* КАК Номенклатура,
   Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК ЦеныРасчетные
ПО ЦеныБазовые.Номенклатура = ЦеныРасчетные.Номенклатура
И ЦеныБазовые.ХарактеристикаНоменклатуры = ЦеныРасчетные.ХарактеристикаНоменклатуры
И ЦеныБазовые.ТипЦен.БазовыйТипЦен = ЦеныРасчетные.ТипЦен

ГДЕ
    НЕ ЦеныБазовые.ТипЦен.Рассчитывается
    ИЛИ ЦеныБазовые.СпособРасчетаЦены <> &СпособДиапазон
    ИЛИ (ЦеныБазовые.СпособРасчетаЦены = &СпособДиапазон И ЦеныРасчетные.Цена МЕЖДУ 0.000001 И ЦеныБазовые.ВерхняяГраница-0.000001)

СГРУППИРОВАТЬ ПО
    ЦеныБазовые.ТипЦен,
    ЦеныБазовые.ЦеноваяГруппа,
    ЦеныБазовые.Номенклатура,
    ЦеныБазовые.ХарактеристикаНоменклатуры
) КАК ЗапросПрайс
{ЛЕВОЕ
СОЕДИНЕНИЕ
(ВЫБРАТЬ
    НесвернутыеОстатки.Номенклатура КАК НоменклатураОст,
    НесвернутыеОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатурыОст,
    Сумма(НесвернутыеОстатки.Остаток) КАК Остаток
ИЗ
    (ВЫБРАТЬ
        Ост.Номенклатура.Ссылка КАК Номенклатура,
        Ост.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        Ост.КоличествоОстаток КАК Остаток
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, {Склад.* КАК Склад,
           Склад.ВидСклада.* КАК ВидСклада, Номенклатура.* КАК Номенклатура,
           Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК Ост
    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ
        НТТ.Номенклатура.Ссылка КАК Номенклатура,
        НТТ.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        НТТ.КоличествоОстаток КАК Остаток
    ИЗ
        РегистрНакопления.ТоварыВНТТ.Остатки(&Дата, {Склад.* КАК Склад,
           Склад.ВидСклада.* КАК ВидСклада, Номенклатура.* КАК Номенклатура,
           Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК НТТ
    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ
        Розница.Номенклатура.Ссылка КАК Номенклатура,
        Розница.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        Розница.КоличествоОстаток КАК Остаток
    ИЗ
        РегистрНакопления.ТоварыВРознице.Остатки(&Дата, {Склад.* КАК Склад,
           Склад.ВидСклада.* КАК ВидСклада, Номенклатура.* КАК Номенклатура,
           Номенклатура.ЦеноваяГруппа.* КАК ЦеноваяГруппа}) КАК Розница
    ) КАК НесвернутыеОстатки
СГРУППИРОВАТЬ ПО
    НесвернутыеОстатки.Номенклатура,
    НесвернутыеОстатки.ХарактеристикаНоменклатуры
) КАК Остатки
ПО
    ЗапросПрайс.Номенклатура = Остатки.НоменклатураОст
    И ЗапросПрайс.ХарактеристикаНоменклатуры = Остатки.ХарактеристикаНоменклатурыОст
}
СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалютСрезПоследних
ПО ЗапросПрайс.Валюта = КурсыВалютСрезПоследних.Валюта

СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата) КАК КурсыВалютСрезПоследнихОтчет
ПО ЗапросПрайс.ВалютаПрайса = КурсыВалютСрезПоследнихОтчет.Валюта

{
ЛЕВОЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ
    МестаХраненияНоменклатуры.Номенклатура КАК НоменклатураХранения,
    МестаХраненияНоменклатуры.МестоХранения КАК МестоХранения
ИЗ
    РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
СОЕДИНЕНИЕ
(ВЫБРАТЬ
    МестаХраненияНоменклатуры.Номенклатура КАК Номенклатура,
    МИНИМУМ(МестаХраненияНоменклатуры.Приоритет) КАК Приоритет
ИЗ
    РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
СГРУППИРОВАТЬ ПО
    Номенклатура
) КАК МинПриоритет
ПО МестаХраненияНоменклатуры.Номенклатура = МинПриоритет.Номенклатура
И МестаХраненияНоменклатуры.Приоритет = МинПриоритет.Приоритет
) КАК МестаХранения
ПО ЗапросПрайс.Номенклатура = МестаХранения.НоменклатураХранения
}
{
ЛЕВОЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ
    Штрихкоды.ШтрихКод КАК ШтрихКод,
    Штрихкоды.Владелец КАК Владелец,
    Штрихкоды.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатурыШтрихКода
ИЗ
    РегистрСведений.Штрихкоды КАК Штрихкоды
) КАК ШтрихКоды
ПО ЗапросПрайс.Номенклатура = Штрихкоды.Владелец
И ЗапросПрайс.ХарактеристикаНоменклатуры = Штрихкоды.ХарактеристикаНоменклатурыШтрихКода
}
//СОЕДИНЕНИЯ

{ГДЕ
ИСТИНА КАК СвойстваИКатегории
//СВОЙСТВА
//КАТЕГОРИИ
}
УПОРЯДОЧИТЬ ПО
    ЗапросПрайс.ТипЦен,
    ЗапросПрайс.ЦеноваяГруппа.Порядок,
    ЗапросПрайс.Номенклатура,
    ЗапросПрайс.ХарактеристикаНоменклатуры
ИТОГИ МАКСИМУМ(Цена), МИНИМУМ(Валюта), МИНИМУМ(ЕдиницаИзмерения), МИНИМУМ(Остаток),
      МИНИМУМ(Стеллаж) , МИНИМУМ(СтеллажПредставление), МИНИМУМ(ШтрихКод),
      МИНИМУМ(НетХарактеристик), МИНИМУМ(ЦеноваяГруппа)
//ИТОГИ
ПО
    ЗапросПрайс.ТипЦен,
    ЗапросПрайс.Номенклатура,
    ЗапросПрайс.ХарактеристикаНоменклатуры
//ОБЩИЕ_СВОЙСТВА
АВТОУПОРЯДОЧИВАНИЕ
1 vicof
 
16.04.14
18:15
Продолжайте наблюдения
2 Wobland
 
16.04.14
18:16
(1) нене, я против таких наблюдений
3 Wobland
 
16.04.14
18:18
КОГДА ((Остатки.Остаток >= 1) И  (Остатки.Остаток <= 5)) ТОГДА
        &Заканчивается

помниться, стоял вопрос "а когда считать заканчивающимся?". 2 холодильника - нормально. 10 пачек бумажных платков - мало
4 burrya
 
16.04.14
18:18
стебётесь :)
5 Wobland
 
16.04.14
18:19
(4) да это ты над нами издеваешься
6 burrya
 
16.04.14
18:22
(3) ну а если только холодильники? :)
(5) ну это не возможно:)
подскажите пожалуйста добрые люди :)
7 Wobland
 
16.04.14
18:24
(6) выводишь рядом со своим выбором все операнды, исполняешь запрос, много думаешь
8 burrya
 
16.04.14
19:07
(7) сделал, то что в параметрах выводится пустым,
попробовал, результат тотже, операнд в запросе пустой, как туда тогда передать эти значения?

ВЫБОР
    |    КОГДА (ЗапросПрайс.Номенклатура._СтатусПоНаличию <> &Пустой_СтатусПоНаличию) ТОГДА
    |        ЗапросПрайс.Номенклатура._СтатусПоНаличию
    |    КОГДА (Остатки.Остаток <= 0) ТОГДА
    |        Значение(Справочник._СтатусыПоНаличию.НетВНаличии)
    |    КОГДА ((Остатки.Остаток >= 1) И  (Остатки.Остаток <= 5)) ТОГДА
    |        Значение(Справочник._СтатусыПоНаличию.Заканчивается)
    |    ИНАЧЕ
    |        Значение(Справочник._СтатусыПоНаличию.ВНаличии)
    |    КОНЕЦ КАК СтатусПоНаличию,
    |    Значение(Справочник._СтатусыПоНаличию.НетВНаличии) КАК НетВНаличии
9 burrya
 
16.04.14
19:23
но похоже не в этом дело

Так тоже пустые получаются:

ВЫБОР
    |    КОГДА (ЗапросПрайс.Номенклатура._СтатусПоНаличию <> &Пустой_СтатусПоНаличию) ТОГДА
    |        ЗапросПрайс.Номенклатура._СтатусПоНаличию
    |    КОГДА (Остатки.Остаток <= 0) ТОГДА
    |        1
    |    КОГДА ((Остатки.Остаток >= 1) И  (Остатки.Остаток <= 5)) ТОГДА
    |        2
    |    ИНАЧЕ
    |        3
    |    КОНЕЦ КАК СтатусПоНаличию

Остатки.Остаток есть разные значения
10 hhhh
 
16.04.14
20:35
а почему в итогах нет этого поля?
11 Wobland
 
17.04.14
03:05
12 cons74
 
17.04.14
09:42
меня смущает использование


выбор когда тогда
когда тогда
когда тогда


вместо


выбор когда тогда
иначе когда тогда
иначе когда тогда
конец
13 hhhh
 
17.04.14
09:49
(12) да не, можно так
14 Wobland
 
17.04.14
09:49
(12) иначе когда? меня именно такая редакция смущает
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.