Вход | Регистрация


1С:Предприятие ::

Метки: 

Список значений или структура?

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

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

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

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

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

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

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

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

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

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

КонецЕсли;


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

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

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

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

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

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

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

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

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

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

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

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

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


КонецЦикла
   VS-1976
 
6 - 05.04.18 - 13:26
Сделай примерно так:
оЗапрос = Новый Запрос(
"ВЫБРАТЬ "А" КАК Префикс, "00001" КАК Код ПОМЕСТИТЬ тзКонтрагенты
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "Б" КАК Префикс, "00002" КАК Код
...
;

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

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

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

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

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


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

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

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

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

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

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

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


Второй вариант получше будет?
 
 Рекламное место пустует
   DenYuliya
 
11 - 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)) В (&ПрефиксПерспектива)

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

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

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

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

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

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


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

ну и так далее несколько запросов, можно объединить.
   DenYuliya
 
18 - 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"
    КОНЕЦ

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

а не 

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

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

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

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

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

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

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

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

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

Если делать как в (17), это сколько таблиц должно в запросе быть, что-то дофига выходит... Либо я не так понимаю((
   DenYuliya
 
33 - 05.04.18 - 18:58
(31) естественно я на работе прикладными задачами занимаюсь, не знаю, как вы.
С задачей "выбрать 1, 1 и 2, или 1,2,3 символ номера" я бы и без вопросов на Мисте справилась, увы, вопрос в другом.
 
 
   lodger
 
34 - 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) = втПрефиксыКонтрагентов.Префикс)";
    
    Запрос.УстановитьПараметр("ТаблицаПрефиксов", ТаблицаСоответсвий);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        // Вставить обработку выборки

    КонецЦикла;
    

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

Процедура ДобавитьВТаблицу(Таблица, Префикс, Контрагент)
    
    НовСтр = Таблица.Добавить();
    НовСтр.Префикс         = Префикс;
    НовСтр.Контрагент     = Контрагент;
    
КонецПроцедуры
   DenYuliya
 
38 - 06.04.18 - 13:57
(35) Универсальная обработка подберет объекты, но дальше-то она ничего не сможет сделать (на основание отобранных документов надо создавать другие документы). Я знаю про Универсальную обработку, но она, насколько мне известно, совсем для других целей, и это не пользовательский инструмент, а скорее админиский.
   DenYuliya
 
39 - 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""
    |    КОНЕЦ
    |
    |УПОРЯДОЧИТЬ ПО
    |    РеализацияТоваровУслугУслуги.Ссылка.Дата";
    
    ТаблицаРеализаций = ЗапросРеализации.Выполнить().Выгрузить();
    Возврат ТаблицаРеализаций;
    
КонецФункции

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

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


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



Список тем форума
Рекламное место пустует Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует