Имя: Пароль:
1C
1С v8
Список значений или структура?
,
0 DenYuliya
 
05.04.18
13:10
День добрый. Такой вопрос, "ля первого класса"...
Не знаю, что правильно создавать в данной ситуации - список значений, структуру, массив, еще варианты?

Дано: Есть ТЧ формы, на нее вытянуты запросом 2 колонки:
ПрефиксДок и НовыйКонтрагент.

Есть определенное соответствие, какому Префиксу соответствует какой контрагент (порядка 30 соответствий).

Создаю Структуру(??)

СтруктураКонтр = Новый Структура();

Далее в цикле обхожу РезультатЗапроса:

Для Каждой Стр Из РезультатЗапроса Цикл

СтруктураКонтр.Добавить("ПрефиксДок", Стр.ПрефиксДок);

Если ПрефиксДок = "А" Тогда НовыйКонтрагент = справочники.Контрагенты.НайтиПоКоду("1");
ИначеЕсли ПрефиксДок = "б" Тогда НовыйКонтрагент = справочники.Контрагенты.НайтиПоКоду("2");
ИначеЕсли ...

СтруктураКонтр.Добавить("НовыйКонтрагент ", НовыйКонтрагент);

КонецЕсли;


Дальше выгружаю в ТЧ данные из колонки "НовыйКонтрагент".

Как-то так.
Но мне этот вариант кажется очень кривым. Во-первых мне нужна только одна колонка, "НовыйКонтрагент". Колонка "ПрефиксДок" мне нужна только для определения связки "Префикс - Контрагент".

И во-вторых мне не нравится перебор "Если...Иначе...Иначе" в Цикле.

Можете подсказать, как это правильно сделать? В типовых не нашла сходу похожего, своих мозгов не хватает....
1 shuhard
 
05.04.18
13:12
(0) Рг сведений и хранение правил поиска в польской нотации
2 DenYuliya
 
05.04.18
13:13
(1) что рег сведений? Новый регистр под эту задачу, естественно, создаваться не будет.
3 AneJIbcuH
 
05.04.18
13:15
(0) Перебор "Если..Иначе.." не так трашен в цикле, как твоё: НовыйКонтрагент = справочники.Контрагенты.НайтиПоКоду("1");

Задача как-то непонятно поставлена.
"Есть определенное соответствие, какому Префиксу соответствует какой контрагент (порядка 30 соответствий)." - Это постоянное соответствие? Если да, то в (1)
4 DenYuliya
 
05.04.18
13:20
(3) Позвонил бух, попросил сделать обработку, переделывающую один документ в другой.

С условием "Если в номере документа1 префикс "А", то документ2 делаем на контрагента "ООО Ромашка". А если в номере документа1 префикс "Б", то документ2 делаем на контрагента "ООО Пупырышки".

Таких соответствий порядка 30, поэтому в цикле 30 раз писать "если..Иначе...Иначе" - как-то криво.

Конфа типовая, задача разовая, поэтому ни о каком создание новых объектов речи (РС в частности) не идет.
5 AneJIbcuH
 
05.04.18
13:25
(4) Для этого создай Соответствие!
Соответствие = Новый Соответствие();
Заполни соответствие, запросом или ещё как:
Соответствие.Вставить(ТвойПрефикс1,ТвойКонтрагент1);

Далее контрагента получаешь так:

Для каждого Префикс Из Префиксы Цикл

НужныйКонтрагент = Соответствие[Префикс ];

Если НужныйКонтрагент  = Неопределено Тогда
Сообщить("По префиксу " + Префикс + " не найден контрагент");
Продолжить;

//далее алгоритм

КонецЦикла
6 VS-1976
 
05.04.18
13:26
Сделай примерно так:
оЗапрос = Новый Запрос(

"ВЫБРАТЬ "А" КАК Префикс, "00001" КАК Код ПОМЕСТИТЬ тзКонтрагенты
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "Б" КАК Префикс, "00002" КАК Код
...
;

ВЫБРАТЬ
    тзКонтрагенты.Префикс,
    спрКонтрагенты.Ссылка КАК Контрагент
ИЗ
    тзКонтрагенты

    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК спрКонтрагенты
        ПО спрКонтрагенты.Код = тзКонтрагенты.Код
);

пКонтрагенты = оЗапрос.Выполнить().Выгрузить();
пКонтрагенты.Индексы.Добавить( "Префикс" );
7 DenYuliya
 
05.04.18
13:27
Что-то я сижу думаю, наверно все-таки СписокЗначений тут уместнее будет, чем Структура, т.к. мне же в итоге одна колонка нужна будет.

То есть можно так сделать:

Если РезультатЗапроса.Префикс = "А" Тогда СписокЗначений.Добавить("НовКонтр", Справочники.Контрагенты.НайтиПокоду("1"));
ИначеЕсли  
РезультатЗапроса.Префикс = "Б"
Тогда СписокЗначений.Добавить("НовКонтр", Справочники.Контрагенты.НайтиПокоду("2"));
ИначеЕсли .....
КонецЕсли;


Или же делать некое соответствие (в Структуре?)

КолонкаПрефикс              КолонкаНовКонтрагент
"А"                          ООО "Ромашка"
"Б"                          ООО "Пупырышка"
"В"                          ООО "Грибочек"
"Г"                          ООО "Рога и Копыта"

Как правильнее?
8 DenYuliya
 
05.04.18
13:28
(5) спасибо! Попробую... Меня Соответствие тоже заинтересовало, но оно почему-то редко используется, и я продолжила думать над более привычными СЗ и Структура
9 DenYuliya
 
05.04.18
13:29
(6) хм, кстати хорошая идея, что-то я даже не подумала, что все это можно в запросе обойти! А ведь точно!
10 DenYuliya
 
05.04.18
15:41
(6) Думаю над 2 вариантами решения задачи через запрос:

1)сделать 3 Временные таблицы:

ВТ_Услуги - выборка из док. РеализацияТоваровИУслуг,
ВТ_Контрагенты - выборка из спр. Контрагенты,
ВТ_Префиксы - создаю описание ВТ, туда запихиваю Массив &МассивПрефиксы   (просто таблица с 1 колонкой вариантов префиксов),

потом это все левым соединением соединяю.

2) Второй вариант, ВТ_Префиксы не создавать, в ВТ_Услуги сразу задавать условие
"Где Номер Подобно &МассивПрефиксов". В результате в ВТ_Услуги сразу будут отобраны только те документы,  которые соответствуют массиву префиксов.
Потом отобранные документы соединять левым соединением с ВТ_Контрагенты (как-то наложив условие, минуя 30 "Если"


Второй вариант получше будет?
11 DenYuliya
 
05.04.18
16:33
В продолжение (10), я попыталась сделать свой вариант 2, но получилась какая-то ерунда. Не работает, зараза:

МассивПерспектива = Новый Массив;
    МассивПерспектива.Добавить("ВО32");
    МассивПерспектива.Добавить("Л11");
    МассивПерспектива.Добавить("Б8");
    МассивПерспектива.Добавить("Н148");
    МассивПерспектива.Добавить("К4");
    МассивПерспектива.Добавить("П72");
    МассивПерспектива.Добавить("Р");
    
    МассивПозитив = Новый Массив;
    МассивПозитив.Добавить("С24");
    МассивПозитив.Добавить("Т27");
    МассивПозитив.Добавить("Н1");
    МассивПозитив.Добавить("Б49");
    МассивПозитив.Добавить("ВБР");
    МассивПозитив.Добавить("М163");
    МассивПозитив.Добавить("ЗАМ");
    МассивПозитив.Добавить("Б50");
    
    МассивФМ = Новый Массив;
    МассивФМ.Добавить("Ф01");
    МассивФМ.Добавить("Ф02");
    МассивФМ.Добавить("Ф03");
    МассивФМ.Добавить("Ф04");
    МассивФМ.Добавить("Ф05");
    МассивФМ.Добавить("Ф06");
    МассивФМ.Добавить("Ф07");
    МассивФМ.Добавить("Ф08");
    МассивФМ.Добавить("Ф09");
    МассивФМ.Добавить("Ф10");
    МассивФМ.Добавить("Ф11");
    МассивФМ.Добавить("Ф12");
    МассивФМ.Добавить("Ф13");
    МассивФМ.Добавить("Ф14");
    МассивФМ.Добавить("Ф15");
    МассивФМ.Добавить("Ф16");
    МассивФМ.Добавить("Ф17");
    МассивФМ.Добавить("ФА4");

    ТЧРеализации.Очистить()
    
    РеализацииСУслугами = Новый Запрос();
    РеализацииСУслугами.Текст = "ВЫБРАТЬ
                                |    РеализацияТоваровУслугУслуги.Ссылка КАК Документ,
                                |    РеализацияТоваровУслугУслуги.Количество,
                                |    ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(15)) КАК Префикс,
                                |    1 КАК кодСоответствия
                                |ПОМЕСТИТЬ ВТ_Услуги
                                |ИЗ
                                |    Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
                                |ГДЕ
                                |    РеализацияТоваровУслугУслуги.Количество > 0
                                |    И НЕ РеализацияТоваровУслугУслуги.Ссылка.ПометкаУдаления
                                |    И РеализацияТоваровУслугУслуги.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонец
                                |    И РеализацияТоваровУслугУслуги.Ссылка.Контрагент = &Контрагент
                                |    И (ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(15)) В (&ПрефиксПерспектива)
                                |            ИЛИ ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(15)) В (&ПрефиксПозитив)
                                |            ИЛИ ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(15)) ПОДОБНО &ПрефиксПиксель
                                |            ИЛИ ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(15)) ПОДОБНО &ПрефиксБФК
                                |            ИЛИ ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(15)) В (&ПрефиксФМ))
                                |;
                                |
                                |////////////////////////////////////////////////////////////////////////////////
                                |ВЫБРАТЬ
                                |    Контрагенты.Ссылка КАК НовыйКонтрагент,
                                |    Контрагенты.Код
                                |ПОМЕСТИТЬ ВТ_Контрагенты
                                |ИЗ
                                |    Справочник.Контрагенты КАК Контрагенты
                                |;
                                |
                                |////////////////////////////////////////////////////////////////////////////////
                                |ВЫБРАТЬ
                                |    ВТ_Контрагенты.НовыйКонтрагент,
                                |    ВТ_Контрагенты.Код,
                                |    ВТ_Услуги.Документ,
                                |    ВТ_Услуги.Префикс
                                |ИЗ
                                |    ВТ_Услуги КАК ВТ_Услуги
                                |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Контрагенты КАК ВТ_Контрагенты
                                |        ПО ВТ_Услуги.кодСоответствия = ВТ_Контрагенты.Код";
    
    РеализацииСУслугами.УстановитьПараметр("ДатаНачала", ДатаНачала);
    РеализацииСУслугами.УстановитьПараметр("ДатаКонец", ДатаКонец);
    РеализацииСУслугами.УстановитьПараметр("Контрагент", Контрагент);
    РеализацииСУслугами.УстановитьПараметр("ПрефиксПерспектива", МассивПерспектива);
    РеализацииСУслугами.УстановитьПараметр("ПрефиксПозитив", МассивПозитив);
    РеализацииСУслугами.УстановитьПараметр("ПрефиксПиксель", "В2");
    РеализацииСУслугами.УстановитьПараметр("ПрефиксБФК", "Л17");
    
    
    
    /////////////////////  ЧТО_ТО ТУТ ЕЩЕ НАКОДИТЬ НАДО
    ТЧРеализации.Загрузить(РеализацииСУслугами.Выполнить().Выгрузить())


Не могу придумать, как реализовать условие

ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(15)) В (&ПрефиксПерспектива)

Где "РеализацияТоваровУслугУслуги.Ссылка.Номер" будет СОДЕРЖАТЬ одно из значений соответствующего массива.

Как блин это сделать-то и вообще - это в запросе возможно?
12 shuhard
 
05.04.18
16:50
(4)[Конфа типовая, задача разовая]
ну так не пытайся сделать красиво, сделай циклами в коде
13 DenYuliya
 
05.04.18
16:54
(12) хочется красиво))).

Идея-то хороша, согласитесь? Только вот как это замутить... Циклов много сильно будет.

Префикс тянется из подчиненных баз, и у него даже единого стандарта нет - где то формат номера документа "АБВ-111111111", где-то "АБ-1111111111", где-то "А-11111111111"....
14 Бычье сердце
 
05.04.18
17:54
(0)
Соответствие
15 Мимохожий Однако
 
05.04.18
18:00
(13) Лучшее -враг хорошего. Создай документы с одним контрагентом и в комментарий запиши префикс. Потом в универсальной обработке отбери по комментарию документы и замени в них Контрагента и договор. При этом ничего писать не надо. "Доступно и всерьез" ©Сы
16 DenYuliya
 
05.04.18
18:14
(15) документы уже ранее созданы.
Поэтому в вашем варианте как минимум надо какой-то обработкой выбрать нужные документы, из номера выделить ту часть, которая будет являться префиксом (а она у всех разная, суммарно 32 варианта префиксов).

И конечная суть задачи заключается не в замене одного контрагента на другой в одном документе. Универсальная обработка не умеет создавать новые документы по условиям.
17 lodger
 
05.04.18
18:16
почему " ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(15)) КАК Префикс,"?
это ж 15 знаков. значит и цифры с дефисом туда войдут.
потом делать сравнение на Строка15 В (Массив), где лежат 2-3х буквенные строчки?

как-то неправильно.
в запросе можно так:
первый пакет -
выбрать
чё-то,
ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(1)) КАК Префикс1,
ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(2)) КАК Префикс2,
ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(3)) КАК Префикс3
ПОМЕСТИТЬ ВТ_Услуги
Из Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
ГДЕ
РеализацияТоваровУслугУслуги.Количество > 0
И НЕ РеализацияТоваровУслугУслуги.Ссылка.ПометкаУдаления
И РеализацияТоваровУслугУслуги.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонец
И РеализацияТоваровУслугУслуги.Ссылка.Контрагент = &Контрагент
;
//////////////////////////////////////////////////////////////////////////////

второй запрос
выбрать
чё-то,
&КонтрагентПерспектива
из ВТ_Услуги
где
Префикс1 В (&МассивПерспектива)
ИЛИ Префикс2 В (&МассивПерспектива)
ИЛИ Префикс3 В (&МассивПерспектива)

ну и так далее несколько запросов, можно объединить.
18 DenYuliya
 
05.04.18
18:17
(14) следующим шагом, наверное, попробую соответствием.

Сейчас вытащила запросом реализации, к каждой из них добавив колонку с соответствующим "префиксом".

Запрос трешовый, конечно, получился.
Теперь думаю, в цикле через соответствие соединять с "контрагентом", или левым соединением в запросе со спр. "Контрагенты"?

Текст запроса1:


ВЫБРАТЬ
    РеализацияТоваровУслугУслуги.Ссылка КАК Документ,
    ИСТИНА КАК Переместить,
    ВЫБОР
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "ВО32"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Л11"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Б8"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "Н148"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 2) ПОДОБНО "К4"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "П72"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 1) ПОДОБНО "Р"
            ТОГДА "Ф00001701"
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "С24"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Т27"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 2) ПОДОБНО "Н1"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Б49"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "ВБР"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "М163"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "ЗАМ"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Б50"
            ТОГДА "Ф00001695"
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 2) ПОДОБНО "В2"
            ТОГДА "Ф00000248"
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Л17"
            ТОГДА "Ф00000285"
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф01"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф02"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф03"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф04"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф05"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф06"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф07"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф08"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф09"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф10"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф11"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф12"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф13"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф14"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф15"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф16"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф17"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "ФА4"
            ТОГДА "Ф00001606"
    КОНЕЦ КАК Префикс,
    ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)) КАК Номер
ИЗ
    Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
ГДЕ
    РеализацияТоваровУслугУслуги.Количество > 0
    И НЕ РеализацияТоваровУслугУслуги.Ссылка.ПометкаУдаления
    И РеализацияТоваровУслугУслуги.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонец
    И РеализацияТоваровУслугУслуги.Ссылка.Контрагент = &Контрагент

СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслугУслуги.Ссылка,
    ВЫБОР
        КОГДА РеализацияТоваровУслугУслуги.Ссылка.Номер ПОДОБНО "М163"
            ТОГДА 1
    КОНЕЦ,
    ВЫБОР
        КОГДА РеализацияТоваровУслугУслуги.Ссылка.Номер ПОДОБНО "М163"
            ТОГДА 1
    КОНЕЦ,
    ВЫБОР
        КОГДА РеализацияТоваровУслугУслуги.Ссылка.Номер ПОДОБНО "ВО32"
            ТОГДА "Ф00001701"
    КОНЕЦ,
    ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)),
    ВЫБОР
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "ВО32"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "Л11"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "Б8"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "Н148"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "К4"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "П72"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "P"
            ТОГДА "Ф00001701"
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "С24"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "Т27"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "Н1"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "Б49"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "ВБР"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "М163"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "ЗАМ"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "Б50"
            ТОГДА "Ф00001695"
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "В2"
            ТОГДА "Ф00000248"
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "Л17"
            ТОГДА "Ф00000285"
    КОНЕЦ,
    ВЫБОР
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "ВО32"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Л11"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Б8"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "Н148"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 2) ПОДОБНО "К4"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "П72"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 1) ПОДОБНО "Р"
            ТОГДА "Ф00001701"
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "С24"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Т27"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 2) ПОДОБНО "Н1"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Б49"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "ВБР"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО "М163"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "ЗАМ"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Б50"
            ТОГДА "Ф00001695"
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 2) ПОДОБНО "В2"
            ТОГДА "Ф00000248"
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Л17"
            ТОГДА "Ф00000285"
        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф01"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф02"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф03"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф04"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф05"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф06"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф07"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф08"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф09"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф10"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф11"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф12"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф13"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф14"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф15"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф16"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "Ф17"
                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 3) ПОДОБНО "ФА4"
            ТОГДА "Ф00001606"
    КОНЕЦ

УПОРЯДОЧИТЬ ПО
    РеализацияТоваровУслугУслуги.Ссылка.Дата
19 DenYuliya
 
05.04.18
18:20
(17) идею вашу поняла, спасибо. Т.е. если я буду использовать комбинацию

ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(4))

а не

ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12))

У меня будут выбираться первые 4 символа?
20 lodger
 
05.04.18
18:20
(17) чет попутал. не выразить, а подстрока
ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 0, 1)
ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 0, 2)
ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 0, 3)
21 DenYuliya
 
05.04.18
18:21
(17) в продолжение.
Остальное не могу понять, как применить, потому что мне не известна заранее длинна префикса, он разный для всех документов (от 1 до 4 символов).
22 DenYuliya
 
05.04.18
18:22
(20) в (18) у меня как раз ПОДСТРОКА используется.
23 lodger
 
05.04.18
18:22
(21) так вы ж сами привели работу с первые 1-3 символами префикса?
24 DenYuliya
 
05.04.18
18:24
(23) запуталась в вашей мысли. Ну привела, и что? вопрос был не в том, как отсечь от номера первые 4 символа.
25 lodger
 
05.04.18
18:26
(24) значит вы (17) не читали до конца.
26 lodger
 
05.04.18
18:28
(24) как взять 4 символа, это лишь первая и не самая значимая уловка.
вы кстати неправы когда пишете
ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4)
во 1. цифра 1 это позиция символа, в программировании принято что у начального символа нулевая позиция.
во 2. номер и так строка, зачем вы делаете выразить?
27 DenYuliya
 
05.04.18
18:30
Представьте себе табличку с 2 колонками.
Если у документа номер начинается с символов в колонке ПРЕФИКС, то данному документу надо сопоставить контрагента из колонки КОНТРАГЕНТ.

Всего 5 табличек с соответствиями. Например, 18 вариантам префикса соответствует Контрагент1. Еще 10 вариантам префикса соответствует Контрагент2.  

ПРЕФИКС   КОНТРАГЕНТ
1) ВО32      Перспектива
   Л11    
   Б8    
   Н148    
   Л138    
   К4    
   П72    
   P    
    
2) С24     Позитив
   Т27    
   Н1    
   Б49    
   ВБР    
   М163    
   ЗАМ    
   Б50    

Я хотела эти соответствия префикса контрагенту запихнуть в массив (структуру, список значений или что-то еще), передавать этот массив как параметр в запрос, и с каждым из значений массива сравнивать. Чтобы не было этого громозкого условия.

Понимаете? Я-то понимаю, чего я хочу, но не уверена, что понятно объясняю.
28 DenYuliya
 
05.04.18
18:33
(26)
насчет ВЫРАЗИТЬ Номер Как Строка - да, сейчас переделаю.
Перестраховалась.

Насчет "начинать с 1 символа" - тоже об этом думала, с "0", или с "1", погуглила примеры, попробовала с "1" - работает.

Правильнее с "0"? Сейчас поправлю.
29 lodger
 
05.04.18
18:36
(27) в (17) вчитайся. поищи &КонтрагентПерспектива, много думай.
или если уж ТАКСИЛЬНОХОЧЕТСЯЧТОНЕМОГУ! тогда используй ТаблицуЗначений с типизированными колонками префикс и контрагент.
заполнять примерно так:
ВО32      Перспектива
   Л11     Перспектива
   Б8     Перспектива
   Н148     Перспектива
   Л138     Перспектива
   К4     Перспектива
   П72     Перспектива
   P     Перспектива

поместить ТЗ в запрос параметром.
потом выполнив первый запрос из 17 начать возится с соединениями и ЕСТЬNULL... но нафейхоа? когда в (17) проблема уже решена...
30 DenYuliya
 
05.04.18
18:50
(29) можно без хамства, пожалуйста? Я правда не понимаю задумку (17).

ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(1)) КАК Префикс1,
ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(2)) КАК Префикс2,
ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(3)) КАК Префикс3

Фигня какая то получается в результате запроса. Получается 3 колонки с 1, 1 и 2, и с 1,2,3 символом номера.
И что мне с этим делать? Мне это вообще не надо.
31 lodger
 
05.04.18
18:54
(30) ну а дальше что с ними сделано? у вас прикладная задача или теоретические изыскания?
32 DenYuliya
 
05.04.18
18:56
(29) у меня 5 массивов.
В каждом из них от 2 до 18 вариантов префиксов длинной от 1 до 4 первых символов номера.
Всего 36 вариантов префиксов, соответствующих 5 контрагентам.

Если делать как в (17), это сколько таблиц должно в запросе быть, что-то дофига выходит... Либо я не так понимаю((
33 DenYuliya
 
05.04.18
18:58
(31) естественно я на работе прикладными задачами занимаюсь, не знаю, как вы.
С задачей "выбрать 1, 1 и 2, или 1,2,3 символ номера" я бы и без вопросов на Мисте справилась, увы, вопрос в другом.
34 lodger
 
05.04.18
19:06
(33) ну так они не просто так выбраны, а помещены в ВТ, а потом опрошены с условием...
все короче. я ушел.
35 Мимохожий Однако
 
05.04.18
19:19
(16) Если документы уже созданы, то можно воспользоваться универсальной обработкой подбора объектов с произвольным кодом. ИМХО, нечётко поставленная задач ведёт к лишней работе. Я чётко поставленной задачи не увидел.
36 Сияющий в темноте
 
05.04.18
19:33
Префиксы имеет смысл группировать по длине,чтобы,вырезав из строки начало нужной длины проверить их все по порядку
и по идее,должна быть таблица значений,чтобы можно было по длине отсортировать,которую записать в отдельную колонку
таблицу же может пользователь на форме заполнить,а запросом придется выбрать все номера за период для обработки
37 АнализДанных
 
05.04.18
22:34
(0) Если я правильно понял задачу, то ты хочешь для существующих документов подобрать контрагентов у которых такой же префикс (или часть), как у документа?


Процедура ВыполнитьЧтоТо()

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

КонецПроцедуры

Процедура ДобавитьВТаблицу(Таблица, Префикс, Контрагент)
    
    НовСтр = Таблица.Добавить();
    НовСтр.Префикс         = Префикс;
    НовСтр.Контрагент     = Контрагент;
    
КонецПроцедуры
38 DenYuliya
 
06.04.18
13:57
(35) Универсальная обработка подберет объекты, но дальше-то она ничего не сможет сделать (на основание отобранных документов надо создавать другие документы). Я знаю про Универсальную обработку, но она, насколько мне известно, совсем для других целей, и это не пользовательский инструмент, а скорее админиский.
39 DenYuliya
 
06.04.18
14:00
Всем спасибо за ответы и советы, особенно (6) и (25), в итоге сделала так:

Функция ОтобратьРеализацииСУслугами()
    
    ЗапросРеализации = Новый Запрос;
    ЗапросРеализации.УстановитьПараметр("ДатаНачала", ДатаНачала);
    ЗапросРеализации.УстановитьПараметр("ДатаКонец", ДатаКонец);
    ЗапросРеализации.УстановитьПараметр("Контрагент", Контрагент);
    
    ЗапросРеализации.Текст = "ВЫБРАТЬ
    |    РеализацияТоваровУслугУслуги.Ссылка КАК Документ,
    |    ВЫБОР
    |        КОГДА ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 4) ПОДОБНО ""ВО32""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Л11""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Б8""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 4) ПОДОБНО ""Н148""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 2) ПОДОБНО ""К4""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""П72""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 1) ПОДОБНО ""Р""
    |            ТОГДА ""Ф00001701""
    |        КОГДА ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""С24""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Т27""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 2) ПОДОБНО ""Н1""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Б49""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""ВБР""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 4) ПОДОБНО ""М163""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""ЗАМ""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Б50""
    |            ТОГДА ""Ф00001695""
    |        КОГДА ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 2) ПОДОБНО ""В2""
    |            ТОГДА ""Ф00000248""
    |        КОГДА ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Л17""
    |            ТОГДА ""Ф00000285""
    |        КОГДА ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф01""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф02""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф03""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф04""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф05""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф06""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф07""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф08""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф09""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф10""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф11""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф12""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф13""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф14""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф15""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф16""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф17""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""ФА4""
    |            ТОГДА ""Ф00001606""
    |    КОНЕЦ КАК Префикс,
    |    ИСТИНА КАК Переместить
    |ИЗ
    |    Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
    |ГДЕ
    |    РеализацияТоваровУслугУслуги.Количество > 0
    |    И НЕ РеализацияТоваровУслугУслуги.Ссылка.ПометкаУдаления
    |    И РеализацияТоваровУслугУслуги.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонец
    |    И РеализацияТоваровУслугУслуги.Ссылка.Контрагент = &Контрагент
    |
    |СГРУППИРОВАТЬ ПО
    |    РеализацияТоваровУслугУслуги.Ссылка,
    |    ВЫБОР
    |        КОГДА РеализацияТоваровУслугУслуги.Ссылка.Номер ПОДОБНО ""М163""
    |            ТОГДА 1
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА РеализацияТоваровУслугУслуги.Ссылка.Номер ПОДОБНО ""М163""
    |            ТОГДА 1
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА РеализацияТоваровУслугУслуги.Ссылка.Номер ПОДОБНО ""ВО32""
    |            ТОГДА ""Ф00001701""
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""ВО32""
    |                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""Л11""
    |                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""Б8""
    |                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""Н148""
    |                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""К4""
    |                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""П72""
    |                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""P""
    |            ТОГДА ""Ф00001701""
    |        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""С24""
    |                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""Т27""
    |                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""Н1""
    |                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""Б49""
    |                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""ВБР""
    |                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""М163""
    |                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""ЗАМ""
    |                ИЛИ ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""Б50""
    |            ТОГДА ""Ф00001695""
    |        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""В2""
    |            ТОГДА ""Ф00000248""
    |        КОГДА ПОДСТРОКА(ВЫРАЗИТЬ(РеализацияТоваровУслугУслуги.Ссылка.Номер КАК СТРОКА(12)), 1, 4) ПОДОБНО ""Л17""
    |            ТОГДА ""Ф00000285""
    |    КОНЕЦ,
    |    ВЫБОР
    |        КОГДА ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 4) ПОДОБНО ""ВО32""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Л11""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Б8""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 4) ПОДОБНО ""Н148""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 2) ПОДОБНО ""К4""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""П72""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 1) ПОДОБНО ""Р""
    |            ТОГДА ""Ф00001701""
    |        КОГДА ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""С24""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Т27""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 2) ПОДОБНО ""Н1""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Б49""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""ВБР""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 4) ПОДОБНО ""М163""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""ЗАМ""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Б50""
    |            ТОГДА ""Ф00001695""
    |        КОГДА ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 2) ПОДОБНО ""В2""
    |            ТОГДА ""Ф00000248""
    |        КОГДА ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Л17""
    |            ТОГДА ""Ф00000285""
    |        КОГДА ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф01""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф02""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф03""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф04""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф05""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф06""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф07""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф08""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф09""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф10""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф11""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф12""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф13""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф14""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф15""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф16""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""Ф17""
    |                ИЛИ ПОДСТРОКА(РеализацияТоваровУслугУслуги.Ссылка.Номер, 1, 3) ПОДОБНО ""ФА4""
    |            ТОГДА ""Ф00001606""
    |    КОНЕЦ
    |
    |УПОРЯДОЧИТЬ ПО
    |    РеализацияТоваровУслугУслуги.Ссылка.Дата";
    
    ТаблицаРеализаций = ЗапросРеализации.Выполнить().Выгрузить();
    Возврат ТаблицаРеализаций;
    
КонецФункции

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


Может не совсем красиво, но работает корректно, правда долго, если период большой брать.
40 DenYuliya
 
06.04.18
16:55
В продолжение (39).
Хотя долго работает не запрос, а дальнейшие манипуляции с документами, запрос быстро отрабатывает.
41 Мимохожий Однако
 
06.04.18
17:07
(38) В первоначальной постановке задачи ничего не говорилось про того, кто это делает. Произвольный код можно сохранить и научить пользователя.
AdBlock убивает бесплатный контент. 1Сергей