Имя: Пароль:
1C
1С v8
УТ 11.4 Помогите разобраться в запросе
0 saradip
 
28.09.22
21:55
Здравствуйте, не пойму для чего добавлены в запросе строки... ПОМОГИТЕ!
Что за разделить записи?


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

КонецФункции

&Вместо("ТекстЗапросаВтОснований")
Функция УТ_ТекстЗапросаВтОснований(Запрос, ТекстыЗапроса)
        
    ИмяРегистра = "ВтОснований";
    
    ТекстЗапроса =
    "ВЫБРАТЬ
    |    ТаблицаРеестрДокументов.Ссылка КАК Ссылка,
    |    ТаблицаРеестрДокументов.ДатаДокументаИБ КАК ДатаДокументаИБ,
    |    МАКСИМУМ(ТаблицаРеестрДокументов.НомерДокументаИБ) КАК НомерДокументаИБ,
    |    ТаблицаРеестрДокументов.ТипСсылки КАК ТипСсылки,
    |    ТаблицаРеестрДокументов.Организация КАК Организация,
    |    ТаблицаРеестрДокументов.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
    |    ТаблицаРеестрДокументов.Партнер КАК Партнер,
    |    ТаблицаРеестрДокументов.Контрагент КАК Контрагент,
    |    ВЫБОР
    |        КОГДА ТаблицаРеестрДокументов.КоличествоНаправленийДеятельности = 1
    |            ТОГДА ТаблицаРеестрДокументов.НаправлениеДеятельности
    |        ИНАЧЕ НЕОПРЕДЕЛЕНО
    |    КОНЕЦ КАК НаправлениеДеятельности,
    |    ТаблицаРеестрДокументов.МестоХранения КАК МестоХранения,
    |    ТаблицаРеестрДокументов.Подразделение КАК Подразделение,
    |    МАКСИМУМ(ТаблицаРеестрДокументов.Ответственный) КАК Ответственный,
    |    МАКСИМУМ(ТаблицаРеестрДокументов.Комментарий) КАК Комментарий,
    |    МАКСИМУМ(ТаблицаРеестрДокументов.Валюта) КАК Валюта,
    |    МАКСИМУМ(ТаблицаРеестрДокументов.Сумма) КАК Сумма,
    |    МАКСИМУМ(ТаблицаРеестрДокументов.Статус) КАК Статус,
    |    МАКСИМУМ(ТаблицаРеестрДокументов.Проведен) КАК Проведен,
    |    МАКСИМУМ(ТаблицаРеестрДокументов.ПометкаУдаления) КАК ПометкаУдаления,
    |    МИНИМУМ(ТаблицаРеестрДокументов.ДополнительнаяЗапись) КАК ДополнительнаяЗапись,
    |    МАКСИМУМ(ТаблицаРеестрДокументов.Дополнительно) КАК Дополнительно,
    |    МАКСИМУМ(ТаблицаРеестрДокументов.ДатаПервичногоДокумента) КАК ДатаПервичногоДокумента,
    |    МАКСИМУМ(ТаблицаРеестрДокументов.НомерПервичногоДокумента) КАК НомерПервичногоДокумента,
    //++СТМ
    |    ТаблицаРеестрДокументов.РазделительЗаписи КАК РазделительЗаписи
    //--СТМ
    |ПОМЕСТИТЬ ВтОснований
    |ИЗ
    |    (ВЫБРАТЬ
    |        ДанныеДокумента.Ссылка КАК Ссылка,
    |        &Период КАК ДатаДокументаИБ,
    |        &Номер КАК НомерДокументаИБ,
    |        &ИдентификаторМетаданных КАК ТипСсылки,
    |        &Организация КАК Организация,
    |        &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
    |        НЕОПРЕДЕЛЕНО КАК Партнер,
    |        НЕОПРЕДЕЛЕНО КАК Контрагент,
    |        МАКСИМУМ(ЕСТЬNULL(ТаблицаТовары.НазначениеОтправителя.НаправлениеДеятельности, ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК НаправлениеДеятельности,
    |        КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ТаблицаТовары.НазначениеОтправителя.НаправлениеДеятельности, ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК КоличествоНаправленийДеятельности,
    |        &СкладОтправитель КАК МестоХранения,
    |        &Подразделение КАК Подразделение,
    |        &Ответственный КАК Ответственный,
    |        ВЫРАЗИТЬ(&Комментарий КАК СТРОКА(100)) КАК Комментарий,
    |        НЕОПРЕДЕЛЕНО КАК Валюта,
    |        0 КАК Сумма,
    |        &Статус КАК Статус,
    |        &Проведен КАК Проведен,
    |        &ПометкаУдаления КАК ПометкаУдаления,
    |        ЛОЖЬ КАК ДополнительнаяЗапись,
    |        &ИнформацияПоСкладуПолучателю КАК Дополнительно,
    |        &Период КАК ДатаПервичногоДокумента,
    |        &НомерНаПечать КАК НомерПервичногоДокумента,
    //++СТМ
    |        ""0"" КАК РазделительЗаписи
    //--СТМ
    |    ИЗ
    |        Документ.ПеремещениеТоваров КАК ДанныеДокумента
    |            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ТаблицаТовары
    |            ПО ДанныеДокумента.Ссылка = ТаблицаТовары.Ссылка
    |    ГДЕ
    |        ДанныеДокумента.Ссылка = &Ссылка
    |    
    |    СГРУППИРОВАТЬ ПО
    |        ДанныеДокумента.Ссылка
    |    
    |    ОБЪЕДИНИТЬ ВСЕ
    |    
    |    ВЫБРАТЬ
    |        ДанныеДокумента.Ссылка КАК Ссылка,
    |        &Период КАК ДатаДокументаИБ,
    |        &Номер КАК НомерДокументаИБ,
    |        &ИдентификаторМетаданных КАК ТипСсылки,
    |        ВЫБОР
    |            КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами)
    |                ТОГДА &ОрганизацияПолучатель
    |            ИНАЧЕ &Организация
    |        КОНЕЦ КАК Организация,
    |        &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
    |        НЕОПРЕДЕЛЕНО КАК Партнер,
    |        НЕОПРЕДЕЛЕНО КАК Контрагент,
    |        МАКСИМУМ(ЕСТЬNULL(ТаблицаТовары.Назначение.НаправлениеДеятельности, ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК НаправлениеДеятельности,
    |        КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ТаблицаТовары.Назначение.НаправлениеДеятельности, ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка))) КАК КоличествоНаправленийДеятельности,
    |        &СкладПолучатель КАК МестоХранения,
    |        &Подразделение КАК Подразделение,
    |        &Ответственный КАК Ответственный,
    |        ВЫРАЗИТЬ(&Комментарий КАК СТРОКА(100)) КАК Комментарий,
    |        НЕОПРЕДЕЛЕНО КАК Валюта,
    |        0 КАК Сумма,
    |        &Статус КАК Статус,
    |        &Проведен КАК Проведен,
    |        &ПометкаУдаления КАК ПометкаУдаления,
    |        ИСТИНА КАК ДополнительнаяЗапись,
    |        &ИнформацияПоСкладуОтправителю КАК Дополнительно,
    |        &Период КАК ДатаПервичногоДокумента,
    |        &НомерНаПечать КАК НомерПервичногоДокумента,
    //++СТМ
    |        ""1"" КАК РазделительЗаписи
    //--СТМ
    |    ИЗ
    |        Документ.ПеремещениеТоваров КАК ДанныеДокумента
    |            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ТаблицаТовары
    |            ПО ДанныеДокумента.Ссылка = ТаблицаТовары.Ссылка
    |    ГДЕ
    |        ДанныеДокумента.Ссылка = &Ссылка
    |    
    |    СГРУППИРОВАТЬ ПО
    |        ДанныеДокумента.Ссылка) КАК ТаблицаРеестрДокументов
    |
    |СГРУППИРОВАТЬ ПО
    |    ТаблицаРеестрДокументов.ТипСсылки,
    |    ТаблицаРеестрДокументов.Организация,
    |    ТаблицаРеестрДокументов.ХозяйственнаяОперация,
    |    ТаблицаРеестрДокументов.Партнер,
    |    ТаблицаРеестрДокументов.Контрагент,
    |    ТаблицаРеестрДокументов.Подразделение,
    |    ТаблицаРеестрДокументов.МестоХранения,
    |    ТаблицаРеестрДокументов.ДатаДокументаИБ,
    |    ТаблицаРеестрДокументов.Ссылка,
    |    ВЫБОР
    |        КОГДА ТаблицаРеестрДокументов.КоличествоНаправленийДеятельности = 1
    |            ТОГДА ТаблицаРеестрДокументов.НаправлениеДеятельности
    |        ИНАЧЕ НЕОПРЕДЕЛЕНО
    |    КОНЕЦ,
    //++СТМ
    |    ТаблицаРеестрДокументов.РазделительЗаписи ";
    //--СТМ";
    
    ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
    
    Возврат ТекстЗапроса;
КонецФункции
1 saradip
 
28.09.22
21:55
Это модуль менеджера документа Перемещение товаров
2 Ivan_495
 
28.09.22
22:09
ВЫБОР
    |            КОГДА &ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеремещениеТоваровМеждуФилиалами)
    |                ТОГДА &ОрганизацияПолучатель
    |            ИНАЧЕ &Организаци
разделитель отделяет документы Перемещения от ПеремещенияТоваровМеждуФиоиалами
3 Ivan_495
 
28.09.22
22:21
для перемещений в запрос берется Организация, а для ПеремещенияТоваровМеждуФиоиалами берется ОрганищацияПолучатель
4 saradip
 
28.09.22
22:29
(3) Не понял, а причем здесь эти строки?:
    //++СТМ
    |    ДанныеДокумента.РазделительЗаписи  КАК РазделительЗаписи
    //--СТМ

    //++СТМ
    |    ТаблицаРеестрДокументов.РазделительЗаписи КАК РазделительЗаписи
    //--СТМ

    //++СТМ
    |    ТаблицаРеестрДокументов.РазделительЗаписи КАК РазделительЗаписи
    //--СТМ

    //++СТМ
    |        ""0"" КАК РазделительЗаписи
    //--СТМ

    //++СТМ
    |        ""1"" КАК РазделительЗаписи
    //--СТМ

    //++СТМ
    |    ТаблицаРеестрДокументов.РазделительЗаписи ";
    //--СТМ";
5 Ivan_495
 
28.09.22
22:57
оставь в запросе только отличающиеся поля и поле ссылки на документы, все остальное убери и поймешь логику запроса
6 lubitelxml
 
29.09.22
10:14
(4) обычно такими комментариями выделяют доработки типовых, чтобы потом было понятно что типовое, а что допиленное
7 saradip
 
29.09.22
15:04
(6) Да это понятно)
Для чего дописан код я не пойму, но в (3) Иван намекнул, что можно таким образом разделять документы по признаку 1, 2.
Как это работает и зачем это делать, вот тут непонятно мне...
8 БигБаг
 
29.09.22
20:44
(7) здесь оно только формирует эту колонку. А использует где-то в другом месте. Или недоделанное и забытое. Пробуй поиском в модулях или вообще в конфе по слову РазделительЗаписи.