Имя: Пароль:
1C
1С v8
Алгоритм поиска в ТЗ
0 егаис
 
09.10.22
19:31
Есть тз1 с колонками счетзатрат|статья|сумма|коррсчет
И есть некая тз2 с правилами распределения затрат  раздел|статья|коррсчетзатрат

Не хочеться использовать перебор, есть ли алгоритм поиска строк тз1 в тз2. Причем алгоритм сначала ищет по ключу Статья|коррсчет, если не находит уже только по Статья?
Запросом это реально реализовать?
1 RomanYS
 
09.10.22
19:34
(0) запросом можно
2 егаис
 
09.10.22
19:38
(1) а можно примером кинуть, пока не соображу как
ЕстьNULL во вложенном запросе?
3 егаис
 
09.10.22
19:59
Вроде работает, но верно ли с точки производительности?
сделать два соединения по разным ключам и проверять на eстьnull
4 егаис
 
09.10.22
20:06
наглядно так
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ПравилаФормированияФХДСтатьиЗатрат.Ссылка КАК Ссылка,
        |    ПравилаФормированияФХДСтатьиЗатрат.СтатьяЗатрат КАК СтатьяЗатрат,
        |    ПравилаФормированияФХДСчетУчета.СчетУчета КАК СчетУчета
        |ПОМЕСТИТЬ ВТПравила
        |ИЗ
        |    Справочник.ПравилаФормированияФХД.СтатьиЗатрат КАК ПравилаФормированияФХДСтатьиЗатрат
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПравилаФормированияФХД.СчетУчета КАК ПравилаФормированияФХДСчетУчета
        |        ПО ПравилаФормированияФХДСтатьиЗатрат.Ссылка = ПравилаФормированияФХДСчетУчета.Ссылка
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    Источник.Счет КАК Счет,
        |    Источник.СтатьяЗатрат КАК СтатьяЗатрат,
        |    Источник.КоррСчет КАК КоррСчет,
        |    Источник.СуммаОборотДт КАК СуммаОборотДт,
        |ПОМЕСТИТЬ ВТЗатраты
        |ИЗ
        |    &ВнешнийИсточник КАК Источник
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТЗатраты.СтатьяЗатрат КАК СтатьяЗатрат,
        |    ВТЗатраты.СуммаОборотДт КАК СуммаОборотДт,
        |    ЕСТЬNULL(ВТПравила.Ссылка, ВТПравила1.Ссылка) КАК Правило
        |ИЗ
        |    ВТЗатраты КАК ВТЗатраты
        |        ЛЕВОЕ СОЕДИНЕНИЕ ВТПравила КАК ВТПравила
        |        ПО ВТЗатраты.СтатьяЗатрат = ВТПравила.СтатьяЗатрат
        |            И ВТЗатраты.КоррСчет = ВТПравила.СчетУчета
        |        ЛЕВОЕ СОЕДИНЕНИЕ ВТПравила КАК ВТПравила1
        |        ПО ВТЗатраты.СтатьяЗатрат = ВТПравила1.СтатьяЗатрат";
5 RomanYS
 
09.10.22
20:06
(3) верно
6 RomanYS
 
09.10.22
20:20
(4) а при соединении с ВТПравила1 не нужно условие на пустой коррсчет? У тебя же без него несколько правил подтягиваться будет
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс