Допустим, есть Чек ККМ, на основании чека вводят перемещения. Нужно в одной таблице вывести все позиции реализации и позиции, которые участвуют в перемещении.

Что-то вроде такого:

```1c
    ВЫБРАТЬ
    ПеремещениеТоваровТовары.Ссылка.СкладОтправитель КАК Склад,
    ПеремещениеТоваровТовары.Номенклатура,
    ПеремещениеТоваровТовары.Количество

    ПОМЕСТИТЬ ТаблицаПеремещений
    ИЗ
    Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
    ГДЕ
    ПеремещениеТоваровТовары.Ссылка.ДокументОснование = &Ссылка
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ЧекККМТовары.Номенклатура,
    ЧекККМТовары.Количество,
    ТаблицаПеремещений.Склад КАК Склад,
    ТаблицаПеремещений.Количество КАК КоличествоПеремещения
    ИЗ
    Документ.ЧекККМ.Товары КАК ЧекККМТовары
    ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаПеремещений КАК ТаблицаПеремещений
    ПО ЧекККМТовары.Номенклатура = ТаблицаПеремещений.Номенклатура
    ГДЕ
    ЧекККМТовары.Ссылка = &Ссылка
```

Но этот запрос задублирует строки в случае нескольких перемещений на одну позицию номенклатуры, а мне нужно каждое перемещение в виде дополнительных колонок "Склад + Количество" выводить прямо в запросе (без использования СКД).
---
```1c
    ВЫБРАТЬ
    ЧекККМТовары.Ссылка.Склад,
    ЧекККМТовары.Номенклатура,
    СУММА(ЧекККМТовары.Количество) КАК Количество
    ПОМЕСТИТЬ ДанныеЧека
    ИЗ
    Документ.ЧекККМ.Товары КАК ЧекККМТовары
    ГДЕ
    ЧекККМТовары.Ссылка = &Ссылка

    СГРУППИРОВАТЬ ПО
    ЧекККМТовары.Ссылка.Склад,
    ЧекККМТовары.Номенклатура
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ПеремещениеТоваровТовары.Ссылка.СкладОтправитель КАК Склад,
    ПеремещениеТоваровТовары.Номенклатура,
    СУММА(ПеремещениеТоваровТовары.Количество) КАК Количество
    ПОМЕСТИТЬ ОтправленныеТовары
    ИЗ
    Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
    ГДЕ
    ПеремещениеТоваровТовары.Ссылка.ДокументОснование = &Ссылка

    СГРУППИРОВАТЬ ПО
    ПеремещениеТоваровТовары.Ссылка.СкладОтправитель,
    ПеремещениеТоваровТовары.Номенклатура
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ОтправленныеТовары.Склад,
    ОтправленныеТовары.Номенклатура,
    ОтправленныеТовары.Количество
    ИЗ
    ОтправленныеТовары КАК ОтправленныеТовары

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ДанныеЧека.Склад,
    ДанныеЧека.Номенклатура,
    ДанныеЧека.Количество - ЕСТЬNULL(ОтправленоБезУчетаСклада.Количество, 0)
    ИЗ
    ДанныеЧека КАК ДанныеЧека
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ОтправленныеТовары.Номенклатура КАК Номенклатура,
    СУММА(ОтправленныеТовары.Количество) КАК Количество
    ИЗ
    ОтправленныеТовары КАК ОтправленныеТовары

    СГРУППИРОВАТЬ ПО
    ОтправленныеТовары.Номенклатура) КАК ОтправленоБезУчетаСклада
    ПО ДанныеЧека.Номенклатура = ОтправленоБезУчетаСклада.Номенклатура
```
---
insurgut, не получится без ухищрений в обычном запросе превратить строки в колонки.
Нужно или предварительно генерить текст запроса с параметрами, или потом из результата нужную таблицу значений создавать.
Давеча обсуждали подобное: http://forum.infostart.ru/forum26/topic141464/

Примеры обоих решений во вложении.
---
ditp, что-то вроде создать колонки по каждому складу, имеющемуся в справочнике? Как-то это не совсем красиво конечно будет :)
---
insurgut, зачем
по каждому складу, имеющемуся в справочнике
Достаточно предварительно выбрать только те склады, которые будут присутствовать в нужной выборке документов.
---
ditp, реализовал по твоему примеру...

```1c
    ЗапросСкладов = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
    | ПеремещениеТоваровТовары.Ссылка.СкладОтправитель.Код КАК КодСклада
    |ИЗ
    | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
    |ГДЕ
    | ПеремещениеТоваровТовары.Ссылка.ДокументОснование = &Ссылка
    | И ПеремещениеТоваровТовары.Ссылка.Проведен");
    ЗапросСкладов.УстановитьПараметр("Ссылка", Основание);
    РезультатСкладов = ЗапросСкладов.Выполнить().Выбрать();

    Запрос = Новый Запрос();

    Запрос.Текст = "ВЫБРАТЬ
    | ПеремещениеТоваровТовары.Номенклатура";
    Пока РезультатСкладов.Следующий() Цикл
    Запрос.Текст = Запрос.Текст + ",
    |СУММА(ВЫБОР КОГДА ПеремещениеТоваровТовары.Ссылка.СкладОтправитель.Код = &Склад_" + РезультатСкладов.КодСклада + " ТОГДА ПеремещениеТоваровТовары.Количество ИНАЧЕ 0 КОНЕЦ) КАК Кол_" + РезультатСкладов.КодСклада;
    КонецЦикла;

    Запрос.Текст = Запрос.Текст + "
    |ПОМЕСТИТЬ ТаблицаПеремещений
    |ИЗ
    | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
    |ГДЕ
    | ПеремещениеТоваровТовары.Ссылка.ДокументОснование = &Ссылка
    | И ПеремещениеТоваровТовары.Ссылка.Проведен
    |СГРУППИРОВАТЬ ПО
    |ПеремещениеТоваровТовары.Номенклатура
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ЧекККМТовары.Номенклатура,
    | ЧекККМТовары.Количество";
    РезультатСкладов.Сбросить();
    Пока РезультатСкладов.Следующий() Цикл
    Запрос.Текст = Запрос.Текст + ",
    | ТаблицаПеремещений.Кол_" + РезультатСкладов.КодСклада + " КАК Кол_" + РезультатСкладов.КодСклада;
    КонецЦикла;

    Запрос.Текст = Запрос.Текст + "
    |ИЗ
    | Документ.ЧекККМ.Товары КАК ЧекККМТовары
    | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаПеремещений КАК ТаблицаПеремещений
    | ПО ЧекККМТовары.Номенклатура = ТаблицаПеремещений.Номенклатура
    |ГДЕ
    | ЧекККМТовары.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", Основание);
    РезультатСкладов.Сбросить();
    Пока РезультатСкладов.Следующий() Цикл
    Запрос.УстановитьПараметр("Склад_" + РезультатСкладов.КодСклада, РезультатСкладов.КодСклада);
    КонецЦикла;
    ТаблицаРезультата = Запрос.Выполнить().Выгрузить();
```

Неужели этого в запросе сразу не сделать никак :-/
---
insurgut, вывод данных и их получение это разные вещи!
Приблизительный вариант как я понял только через (12). Универсального решения не будет в запросе, он не для таких целей служит!
---
insurgut, Ну дык, запрос может вернуть только те колонки, которые мы описали.
---
insurgut,
```1c
    ВЫБРАТЬ
    ПередачаТоваровТовары.Ссылка КАК Документ,
    ПередачаТоваровТовары.Номенклатура,
    ПередачаТоваровТовары.Количество,
    ПередачаТоваровТовары.Ссылка.Склад
    ИЗ
    Документ.ПередачаТоваров.Товары КАК ПередачаТоваровТовары
    ГДЕ
    ПередачаТоваровТовары.Ссылка = &Передача

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ЧекККМТовары.Ссылка,
    ЧекККМТовары.Номенклатура,
    ЧекККМТовары.Количество,
    ЧекККМТовары.Ссылка.Склад
    ИЗ
    Документ.ЧекККМ.Товары КАК ЧекККМТовары
    ГДЕ
    ЧекККМТовары.Ссылка = &ЧекККМ
```
---
(6)(7) а как это решает
мне нужно каждое перемещение в виде дополнительных колонок "Склад + Количество" выводить прямо в запросе
?
---
ditp, Но этот запрос задублирует строки в случае нескольких перемещений на одну позицию номенклатуры
Мой запрос не дублирует!
---
insurgut, достаточно вынести реквизит ссылка, тогда группировку если нужно можно сделать только по номенклатуре и из разных документов слияния не будет!
---
перепутал передачу с перемещение:
```1c
    ВЫБРАТЬ
    ПеремещениеТоваровТовары.Ссылка КАК Документ,
    ПеремещениеТоваровТовары.Номенклатура,
    ПеремещениеТоваровТовары.Количество,
    ПеремещениеТоваровТовары.Ссылка.Склад
    ИЗ
    Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
    ГДЕ
    ПеремещениеТоваровТовары.Ссылка = &Перемещение

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ЧекККМТовары.Ссылка,
    ЧекККМТовары.Номенклатура,
    ЧекККМТовары.Количество,
    ЧекККМТовары.Ссылка.Склад
    ИЗ
    Документ.ЧекККМ.Товары КАК ЧекККМТовары
    ГДЕ
    ЧекККМТовары.Ссылка = &ЧекККМ
```
---
Xershi, ну нет, это совсем не то, что требуется :)
---
insurgut, сделай итоги по складу будет, то что нужно.
---
Xershi, неа, не будет. Делал.
---
Если ты хочешь получить количество по каждому складу прямо в запросе, то придется результат поместить в ВТ, добавить запрос к складам, затем это все соединять. Если количество складов будет заранее известно проблем не будет.
---
Xershi, количество складов заранее не известно, так же как и какие это будут склады...
---
Только какой смысл получать эту приблуду в запросе? Чтобы потом просто считать это было?
---
Единственное это только заранее подготовить склады, тогда будет известно количество складов. И после построить запрос. Но я не вижу смысла в таком механизме никакого!

Также в 8.3 появился новый механизм написания сложных запросов. Кажись называется план запроса. Может с ним будет проще такое написать, но я с ним даже не работал.
---
Xershi, для того, чтобы было понятнее... Есть документ. Назовем его доставка. Он заполняется на основании Чека ККМ. Если в магазине нет товара, то магазин создает на основании чека перемещение с нужного склада нужной номенклатуры нужного количества (создаются они задним числом лишь для возможности проведения чека ккм, по факту товар будет забираться со склада отправителя документа перемещения).
В ТЧ товары документа доставка у нас имеется:
Склад, Номенклатура, Количество. Вот их и требуется заполнить по данным самого чека и всех возможных документов перемещений, созданных на основании этого чека.
Уточню, что допустим количество в одной строке может быть любым. И перемещений может быть хоть сколько.
---
insurgut, так смысл тогда в вашем (1)!

Правильно поставленный вопрос это уже половина решения!

Т.е. неучи создали чек провели его им вывалило сообщение, что нет товара. Затем вы такой хитрый берем этот чек и смотрим что есть чего нет. Но проблема то в том что чек проведен!

И даже если вы получите, то что хотите то проблема с чеком останется!

Так что тут другой подход нужен! При проведении поставить затык! Нет товара создавай перемещение и можете кнопочку подкрутить которая эти перемещения и будет делать!

Пользователю останется только склады выбрать откуда тянуть товар на продажу. Там тоже желательно затык поставить если тянуть будет лишнее!
---
Xershi, внимательнее прочитай постановку :) Вся суть в документе Доставка.
---
insurgut, так логика вашего бизнес-процесса понятна, не понятно как ведут себя документы при нехватке товара.
---
Xershi, так написал же - создают документ перемещения. Распределенка по магазинам настроена (наверное это самый важный момент, который забыл упомянуть). В чеке ККМ склад другого магазина указывать незя, т.к. этот чек в другую базу летать не должен.
---
insurgut, речь про:
Документ ЧекККМ проводит когда менеджер вбил туда товар которого нет на складе или нет!
---
Xershi, ему выводится информация о наличии товара на других складах, он вводит документы перемещений (по согласованию с покупателем, что товар придется забирать в другом месте) на нужное количество. После этого проводит чек.
---
insurgut, ну так значит документ даже если захочет не проведется?
---
insurgut, чем плох простой запрос с группировками? нет возможности его обработать?
---
TMV, тем, что в указанном мною примере он вернет
Склад1 - 3шт.
Склад2 - 1шт.
Склад3 - 1шт.
---
insurgut, после этого стало непонятно, зачем склады в отдельные колонки в запросы выводить?
---
ditp, разминка для ума называется :) Можно по разному конечно решить эту задачу, захотелось узнать, можно ли получить результат в одном запросе.
---
перемещения и чек нужно сгрупировать по склад/номенклатура

ну и полное соединение чтобы видеть расхождения и там и там
---
and_sk, тут есть важный момент... Товар, указанный в перемещениях нужно вычесть из чека.
---
insurgut, наверно в запросе тогда нужно учитывать документ "Доставка"

и наверно уже имеет смысл создавать РН "доставка", вы хотите попроще но у вас все запутывается
---
and_sk, доставка - по сути это печатная форма, которая собирает информацию о чеке и перемещениях на его основании.
---
insurgut,
```1c
    доставка - по сути это печатная форма, которая собирает информацию о чеке и перемещениях на его основании.
```

а потом потребуется отчет каконибудь хитрый состряпать из всего этого,
вам нужно продумать всю эту доставку,
собирать из документов отчет если накопится за пару лет чеков и перемещений не айс, файловую базу подвешивать будет
---
Ничего уже не понимаю.
Что надо было, зачем надо было...
---
Итак, у нас есть чек по складу Склад1:
Стул - 3шт.
На Склад1 остаток 1шт., на Склад2 - 1шт., на Склад3 - 1шт.

Создаем на основании 2 перемещения со Склад2 на Склад1 и со Склад3 на Склад1 (по 1шт), после чего проводим чек. В чеке, напомню, будет 3 шт. со Склад1.

Нужно получить таблицу:
Склад1 - 1шт.
Склад2 - 1шт.
Склад3 - 1шт.

Сейчас сделал как-то так...

```1c
    ДокументОснование = Основание;
    Если ЗначениеЗаполнено(Основание.ВладелецДисконтнойКарты) Тогда
    Контрагент = СокрЛП(Основание.ВладелецДисконтнойКарты.Наименование);
    Иначе
    Контрагент = "Частное лицо";
    КонецЕсли;

    //+находим услугу доставки
    Для Каждого Стр Из Основание.Товары Цикл
    Если ЗначениеЗаполнено(Стр.Номенклатура) Тогда
    Если Стр.Номенклатура.Родитель = ТранспортныеУслуги Тогда
    УслугаДоставки = Стр.Номенклатура;
    СтоимостьДоставки = Стр.Сумма;
    Прервать;
    //Иначе
    // НоваяСтр = Товары.Добавить();
    // НоваяСтр.Номенклатура = Стр.Номенклатура;
    // НоваяСтр.ЕдиницаИзмерения = Стр.ЕдиницаИзмерения;
    // НоваяСтр.Количество = Стр.Количество;
    // НоваяСтр.Склад = Основание.Склад;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    //-находим услугу доставки

    //+заполняем товары с учетом перемещений!!!

    //отберем все склады, по которым есть перемещения
    ЗапросСкладов = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
    | ПеремещениеТоваровТовары.Ссылка.СкладОтправитель КАК Склад,
    | ПеремещениеТоваровТовары.Ссылка.СкладОтправитель.Код КАК КодСклада
    |ИЗ
    | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
    |ГДЕ
    | ПеремещениеТоваровТовары.Ссылка.ДокументОснование = &Ссылка
    | И ПеремещениеТоваровТовары.Ссылка.Проведен");
    ЗапросСкладов.УстановитьПараметр("Ссылка", Основание);
    РезультатСкладов = ЗапросСкладов.Выполнить().Выбрать();

    Запрос = Новый Запрос();

    Запрос.Текст = "ВЫБРАТЬ
    | ПеремещениеТоваровТовары.Номенклатура";
    Пока РезультатСкладов.Следующий() Цикл
    Запрос.Текст = Запрос.Текст + ",
    |СУММА(ВЫБОР КОГДА ПеремещениеТоваровТовары.Ссылка.СкладОтправитель.Код = &Склад_" + РезультатСкладов.КодСклада + " ТОГДА ПеремещениеТоваровТовары.Количество ИНАЧЕ 0 КОНЕЦ) КАК Кол_" + РезультатСкладов.КодСклада;
    КонецЦикла;

    Запрос.Текст = Запрос.Текст + "
    |ПОМЕСТИТЬ ТаблицаПеремещений
    |ИЗ
    | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
    |ГДЕ
    | ПеремещениеТоваровТовары.Ссылка.ДокументОснование = &Ссылка
    | И ПеремещениеТоваровТовары.Ссылка.Проведен
    |СГРУППИРОВАТЬ ПО
    |ПеремещениеТоваровТовары.Номенклатура
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ЧекККМТовары.Номенклатура,
    | ЧекККМТовары.ЕдиницаИзмерения,
    | ЧекККМТовары.Количество";

    РезультатСкладов.Сбросить();
    Пока РезультатСкладов.Следующий() Цикл
    Запрос.Текст = Запрос.Текст + " - ЕСТЬNULL(ТаблицаПеремещений.Кол_" + РезультатСкладов.КодСклада + ", 0)";
    КонецЦикла;
    Запрос.Текст = Запрос.Текст + " КАК Количество";

    РезультатСкладов.Сбросить();
    Пока РезультатСкладов.Следующий() Цикл
    Запрос.Текст = Запрос.Текст + ",
    | ТаблицаПеремещений.Кол_" + РезультатСкладов.КодСклада + " КАК Кол_" + РезультатСкладов.КодСклада;
    КонецЦикла;

    Запрос.Текст = Запрос.Текст + "
    |ИЗ
    | Документ.ЧекККМ.Товары КАК ЧекККМТовары
    | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаПеремещений КАК ТаблицаПеремещений
    | ПО ЧекККМТовары.Номенклатура = ТаблицаПеремещений.Номенклатура
    |ГДЕ
    | ЧекККМТовары.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", Основание);
    РезультатСкладов.Сбросить();
    Пока РезультатСкладов.Следующий() Цикл
    Запрос.УстановитьПараметр("Склад_" + РезультатСкладов.КодСклада, РезультатСкладов.КодСклада);
    КонецЦикла;
    ТаблицаРезультата = Запрос.Выполнить().Выгрузить();

    НомерСтроки = 0;

    РезультатСкладов.Сбросить();
    НомерКолонки = 1;
    //вначале заполнеяем позициями из перемещений
    Пока РезультатСкладов.Следующий() Цикл
    ВрТаб = ТаблицаРезультата.Скопировать();
    ВрТаб.Свернуть("Номенклатура, ЕдиницаИзмерения","Кол_" + РезультатСкладов.КодСклада);
    Для Каждого Стр Из ВрТаб Цикл
    Если Стр["Кол_" + РезультатСкладов.КодСклада] > 0 Тогда
    НоваяСтр = Товары.Добавить();
    НоваяСтр.Номенклатура = Стр.Номенклатура;
    НоваяСтр.ЕдиницаИзмерения = Стр.ЕдиницаИзмерения;
    НоваяСтр.Количество = Стр["Кол_" + РезультатСкладов.КодСклада];
    НоваяСтр.Склад = РезультатСкладов.Склад;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;

    ТаблицаРезультата.Свернуть("Номенклатура, ЕдиницаИзмерения","Количество");
    Для Каждого Стр Из ТаблицаРезультата Цикл
    Если Стр.Количество > 0 Тогда
    НоваяСтр = Товары.Добавить();
    НоваяСтр.Номенклатура = Стр.Номенклатура;
    НоваяСтр.ЕдиницаИзмерения = Стр.ЕдиницаИзмерения;
    НоваяСтр.Количество = Стр.Количество;
    НоваяСтр.Склад = Основание.Склад;
    КонецЕсли;
    КонецЦикла;
```
---
```1c
    ВЫБРАТЬ
    ЧекККМТовары.Ссылка.Склад,
    ЧекККМТовары.Номенклатура,
    СУММА(ЧекККМТовары.Количество) КАК Количество
    ПОМЕСТИТЬ ДанныеЧека
    ИЗ
    Документ.ЧекККМ.Товары КАК ЧекККМТовары
    ГДЕ
    ЧекККМТовары.Ссылка = &Ссылка

    СГРУППИРОВАТЬ ПО
    ЧекККМТовары.Ссылка.Склад,
    ЧекККМТовары.Номенклатура
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ПеремещениеТоваровТовары.Ссылка.СкладОтправитель КАК Склад,
    ПеремещениеТоваровТовары.Номенклатура,
    СУММА(ПеремещениеТоваровТовары.Количество) КАК Количество
    ПОМЕСТИТЬ ОтправленныеТовары
    ИЗ
    Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
    ГДЕ
    ПеремещениеТоваровТовары.Ссылка.ДокументОснование = &Ссылка

    СГРУППИРОВАТЬ ПО
    ПеремещениеТоваровТовары.Ссылка.СкладОтправитель,
    ПеремещениеТоваровТовары.Номенклатура
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ОтправленныеТовары.Склад,
    ОтправленныеТовары.Номенклатура,
    ОтправленныеТовары.Количество
    ИЗ
    ОтправленныеТовары КАК ОтправленныеТовары

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    ДанныеЧека.Склад,
    ДанныеЧека.Номенклатура,
    ДанныеЧека.Количество - ЕСТЬNULL(ОтправленоБезУчетаСклада.Количество, 0)
    ИЗ
    ДанныеЧека КАК ДанныеЧека
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ОтправленныеТовары.Номенклатура КАК Номенклатура,
    СУММА(ОтправленныеТовары.Количество) КАК Количество
    ИЗ
    ОтправленныеТовары КАК ОтправленныеТовары

    СГРУППИРОВАТЬ ПО
    ОтправленныеТовары.Номенклатура) КАК ОтправленоБезУчетаСклада
    ПО ДанныеЧека.Номенклатура = ОтправленоБезУчетаСклада.Номенклатура
```
---
sommid, вот, то что надо :)

P.S. Все-таки нужно учится мне правильнее задачи формулировать )))
---
это точно. стало понятно только после расписанного примера и желаемого результата
---
insurgut, Все-таки нужно учится мне правильнее задачи формулировать )))90% успеха решения проблемы это верная формулировка.
---
TMV, так оно и есть!