Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 15:54

Проверка на уникальность и вывод в отчет уникального реквизита

Автор Erkhan, 01 мар 2023, 12:39

0 Пользователей и 1 гость просматривают эту тему.

Erkhan

Всем добрый день! Доделываю один отчет по договорам и появился вопрос касаемо уникальности реквизита. У меня есть реквизиты Исполнитель,Исполнитель2, и т.д. который может быть в одном договоре в нескольких контрактах. Мне нужно по всем контрактам проверить на уникальность этот реквизит и если он уникальный то вывести уникальное значение. А если нет то всех исполнителей через запятую. Может кто что подскажет?

Afinogen

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

ВЫБРАТЬ РАЗЛИЧНЫЕ
Контракт.Исполнитель
ИЗ Док.Контракты КАК Контракт
СГРУППИРОВАТЬ ПО Исполнитель

примерно так
ну или выгрузите в таблицу значений и сворачивайте как вашей душе угодно

а затем уже формируйте строку
СтрокаИсполнитель = "";

Пока Выборка.Следующий() Цикл

СтрокаИсполнитель = СтрокаИсполнитель+?(ЗначениеЗаполнено(СтрокаИсполнитель),", ","")+Выборка.Исполнитель;

КонецЦикла


Erkhan

Afinogen, Если (Выборка.Исполнитель = Выборка.Исполнитель2) И (Выборка.Исполнитель = Выборка.Исполнитель3) И (Выборка.Исполнитель = Выборка.Исполнитель4) И (Выборка.Исполнитель = Выборка.Исполнитель5) И (Выборка.Исполнитель = Выборка.Исполнитель6) Тогда
      Строка.Параметры.ИсполнительВсе = Выборка.Исполнитель;
   Иначе
      Строка.Параметры.ИсполнительВсе = Строка(Выборка.Исполнитель) + ", " + Строка(Выборка.Исполнитель2) + ", " + Строка(Выборка.Исполнитель3) + ", " + Строка(Выборка.Исполнитель4) + ", " + Строка(Выборка.Исполнитель5) + ", " + Строка(Выборка.Исполнитель6);
   КонецЕсли;
Вот такое не работает можете подсказать почему?

Afinogen


Erkhan

Afinogen, ВЫБРАТЬ
    Договорчик.НомерДоговора,
    Договорчик.Исполнитель
ИЗ
    Документ.Договор КАК Договорчик
ГДЕ
    Договорчик.Дата >= &НачДата
    И Договорчик.Дата <= &КонДата
    И (НЕ Договорчик.ПометкаУдаления)
    И Договорчик.Проведен

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    Договорчик.НомерДоговора,
    Договорчик.Исполнитель_3810
ИЗ
    Документ.Договор КАК Договорчик
ГДЕ
    Договорчик.Дата >= &НачДата
    И Договорчик.Дата <= &КонДата
    И (НЕ Договорчик.ПометкаУдаления)
    И Договорчик.Проведен

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    Договорчик.НомерДоговора,
    Договорчик.Исполнитель_4686
ИЗ
    Документ.Договор КАК Договорчик
ГДЕ
    Договорчик.Дата >= &НачДата
    И Договорчик.Дата <= &КонДата
    И (НЕ Договорчик.ПометкаУдаления)
    И Договорчик.Проведен

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    Договорчик.НомерДоговора,
    Договорчик.Исполнитель_4687
ИЗ
    Документ.Договор КАК Договорчик
ГДЕ
    Договорчик.Дата >= &НачДата
    И Договорчик.Дата <= &КонДата
    И (НЕ Договорчик.ПометкаУдаления)
    И Договорчик.Проведен

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    Договорчик.НомерДоговора,
    Договорчик.Исполнитель_76
ИЗ
    Документ.Договор КАК Договорчик
ГДЕ
    Договорчик.Дата >= &НачДата
    И Договорчик.Дата <= &КонДата
    И (НЕ Договорчик.ПометкаУдаления)
    И Договорчик.Проведен

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    Договорчик.НомерДоговора,
    Договорчик.Исполнитель_968
ИЗ
    Документ.Договор КАК Договорчик
ГДЕ
    Договорчик.Дата >= &НачДата
    И Договорчик.Дата <= &КонДата
    И (НЕ Договорчик.ПометкаУдаления)
    И Договорчик.Проведен

СГРУППИРОВАТЬ ПО
    Договорчик.НомерДоговора,
    Договорчик.Исполнитель_968
вот таким запросом пытаюсь исполнители одним столбцом вытащить. Где то 70% выходят корректно, остальные 30% не выходят. Можете подсказать че не так?

Afinogen

у меня мозг вскипел)
а зачем вы для каждого вида исполнителя делаете свой запрос?
почему сразу не вытянуть все в один запрос?
у вас будет строка в которой будет договр и все его исполнители

Erkhan

Afinogen, мне нужно чтобы если у одного договора исполнитель один тот же то выводить только один. а если исполнители разные в каком то месте то разных исполнителей вывести через запятую в один столбец отчета. Честно у самого уже мозг вскипел)))

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск