arefaste/1C_Forums huggingface dataset:
Число1 = 15.25;
Число2 = 1.30;
ИтоговоеЧисло = Число1 + Число2;
Итоговое число точность = 0.

Вопрос, как в таком случае рассчитается ИтоговоеЧисло? Система сама округлит его до 17, или система покажет нам 16. А посчитанные 0,55 останутся для нас скрытими? Работает ли округление, если точность числового реквизита 0 и есть ли смысл дополнительно округлять такое число?
---
1. рассчитается по математическим правилам округления
2. округлит до 17
3. Нет никаких "скрытых" 0.55, вы ж точность указали 0.
4. Работает, смысла нет.
---
1. рассчитается по математическим правилам округления
2. округлит до 17
3. Нет никаких "скрытых" 0.55, вы ж точность указали 0.
4. Работает, смысла нет.
---
Спасибо.
Внешняя печатная форма формирует таблицу из документа. Значения в поле ввода заполняются вручную, тип число.
Как сделать так чтобы фон ячейки в печатной форме был красным, при условии, если она не заполнена в документе? Это возможно вообще?
---
```1c
    Если Строка.Бал<=0 Тогда
    ОбластьСтрока.ЦветФона = WebЦвета.Красный;
    КонецЕсли;
```

Ну или так, не помню за синтаксис

```1c
    ОбластьСтрока.Область(1,1,1,1).ЦветФона = WebЦвета.Красный; //поставишь там нужные номер колонки
```
---
При выводе в ТабДок для области Если Не заполнено твой параметр то область(Твоя область).Цвет фона= твой фон.
Как то так
---
Вот так сделал - не работает, что не так?

```1c
    Для Каждого Строка Из ЧекЛист Цикл

    ОбластьСтрока = Макет.ПолучитьОбласть("Область1");
    ОбластьСтрока.Параметры.Пункт = Строка.Пункт;
    ОбластьСтрока.Параметры.Балл = Строка.Балл;

    Если ОбластьСтрока.Параметры.Балл <= 0
    Тогда
    Строка.Балл = Новый Цвет(255, 0, 0);
    Иначе
    Строка.Балл = Новый Цвет(255, 255, 255);
    КонецЕсли;

    ТабДок.Вывести(ОбластьСтрока);

    КонецЦикла;
```

Вопрос здесь:

Если ОбластьСтрока.Параметры.Балл <= 0
   Тогда
   Строка.Балл = Новый Цвет(255, 0, 0);
  Иначе
   Строка.Балл = Новый Цвет(255, 255, 255);
  КонецЕсли;
---
```1c
    Если Строка.Бал<=0 Тогда
    ОбластьСтрока.ЦветФона = WebЦвета.Красный;
    КонецЕсли;
```

Ну или так, не помню за синтаксис

```1c
    ОбластьСтрока.Область(1,1,1,1).ЦветФона = WebЦвета.Красный; //поставишь там нужные номер колонки
```
---
Если Строка.Балл <=0 Тогда
   ОбластьСтрока.Область(1,1,1,1).ЦветФона = WebЦвета.Красный;
  КонецЕсли;

Вот в таком виде работает! Спасибо!!!
---
Картинку не видно.
Привет всем. Есть код который получает некоторые данные и возвращает "результат"

```1c
    Если Результат.Количество() > 0 Тогда
    Объект.Расчеты.Очистить();

    Для Каждого ЭлементР из Результат Цикл
    НоваяСтрока = Объект.Расчеты.Добавить();
    НоваяСтрока.Сотрудник = ЭлементР.Сотрудник;

    КонецЦикла;

    Объект.Расчеты.Сортировать("Сотрудник Возр");
    КонецЕсли
```

Данный код как вы понимаете очищает некую табличную часть открытого документа и отображает обновленную. Тут все ок, но при этом если я не переоткрою форму документа то не работает такая штука:

```1c
    Если Элементы.Расчеты.ВыделенныеСтроки.Количество() > 0 Тогда
    МассивСтрок = Элементы.Расчеты.ВыделенныеСтроки;
    КонецЕсли;
```

В массив строк залетают совершенно левые номера строк, при этом если переоткрыть форму то этот код уже начинает срабатывать как надо.

При этом даже если записать документ и выполнить код

```1c
    ОповеститьОбИзменении(Тип("ДокументСсылка.МойДокумент"));
    ЭтаФорма.ОбновитьОтображениеДанных();
    ЭтаФорма.Прочитать();
    Элементы.Расчеты.Обновить();
```

Это все равно не помогает, пока не выйдешь и не зайдешь обратно в документ, тогда внутренняя нумерация строк как будто становится нормальной и выделенные строки нормально попадают в массив.

Посоветуете что-нибудь?
---
В массив строк залетают совершенно левые номера строк ВыделенныеСтроки содержит не номера строк, а идентификаторы выделенных строк. Если нужны именно номера строк:
```1c
    Если Элементы.Расчеты.ВыделенныеСтроки.Количество() > 0 Тогда
    МассивСтрок = Новый Массив;
    Для Каждого ИдентификаторСтроки Из Элементы.Расчеты.ВыделенныеСтроки Цикл
    СтрокаТаблицы = Расчеты.НайтиПоИдентификатору(ИдентификаторСтроки);
    МассивСтрок.Добавить(СтрокаТаблицы.НомерСтроки);
    КонецЦикла;
    КонецЕсли;
```
---
В массив строк залетают совершенно левые номера строк ВыделенныеСтроки содержит не номера строк, а идентификаторы выделенных строк. Если нужны именно номера строк:
```1c
    Если Элементы.Расчеты.ВыделенныеСтроки.Количество() > 0 Тогда
    МассивСтрок = Новый Массив;
    Для Каждого ИдентификаторСтроки Из Элементы.Расчеты.ВыделенныеСтроки Цикл
    СтрокаТаблицы = Расчеты.НайтиПоИдентификатору(ИдентификаторСтроки);
    МассивСтрок.Добавить(СтрокаТаблицы.НомерСтроки);
    КонецЦикла;
    КонецЕсли;
```
---
Сейчас попробую
Добрый день! Не могу разобраться почему при открытии формы списка справочника появляется Ошибка в выражении "В". Причем модуль формы пустой.
---
Очевидно, платформе не нравится реквизит "В".
---
проверьте текст запроса динамического списка.
возможно, текст формируется динамически, придется понять, что является причиной неправильного текста запроса.
---
Динамический список формируется при помощи произвольного запроса, но никакого В () там увы нет.
---
вероятно, что этот запрос переопределяется в коде. Смотрите, что там прописано в ПриСозданииНаСервере
---
Ничего не написано. Модуль формы списка пустой!
---
значит вы не тот запрос проверяете.
---
Подписок/расширений нема ?
Точно есть уверенность, что именно эта форма открывается ?
---
Точно, я добавил процедуру ПриСозданииНаСервере и поставил точку останова. Открывается именно та))
---
запрос динамического списка, в консле запроса выполняется хоть ?
---
Результат Запроса в консольке выполняется без проблем.
---
Очевидно, платформе не нравится реквизит "В".
---
Точно. Переименовал Реквизиты В Ширина, Высота, Глубина и взлетело!
Интересно получается консоль запросов сжирает такой запрос, а "демонический" список нет. Видно это фича 1С.
Добрый день. Подскажите как реализовать что бы допустим за 2021 год открывалась одна форма документа а 2022 год другая форма документа?
---
```1c
    Если ВидФормы = "ФормаОбъекта" Тогда
    Если Параметры.Ключ.Дата > ОпрДата тогда
    СтандартнаяОбработка = Ложь;
    ВыбраннаяФорма = "Документ.Реализация.Форма.ФормаДокумента1";
    КонецЕсли;
    КонецЕсли;
```
---
например так

```1c
    Если Формат(Год(Что-то-там.Дата),"ЧГ=0") = 2021 Тогда
    ОткрытьФорму("ФормаДля21Года");
    ИначеЕсли Формат(Год(Что-то-там.Дата),"ЧГ=0") = 2022 Тогда
    ОткрытьФорму("ФормаДля22Года");
    Иначе
    ОткрытьФорму("ФормаОбщая");
    КонецЕсли;
```
---
нужно не что то там дата а дата документа к которому обращаемся допустим документ прием товара нужно получить дату документа и уже потом открыть ту или иную форму. Сам вопрос как из формы списка обратиться к реквизиту документа выбранного.
---
если УФ, то переопредели форму в
ОбработкаПолученияФормы в модуле менеджера
---
через ОбработкаПолученияФормы пробовал работает но на этот документ есть ссылки в других документах и при попытке перехода по ссылке ругается что поле ключ не найдено.
---
Ну а чего написал то хоть ?
Если ключа нет - то это форма нового документа
---
нет это не форма нового документа, ошибка возникает при нажатии кнопки показать все. из другова документа в котором есть ссылка на этот документ.
---
И ? текст ошибки какой ?
Что в модуле менеджера написано ?
---
Скорее всего не анализируется ВидФормы и форма подменяется также для формы списка/выбора.
---
Да скорее всего подменяется форма списка/выбора как это можно исправить?
---
```1c
    ОпрДата = '20211010';
    Если Параметры.Ключ.Дата > ОпрДата тогда
    СтандартнаяОбработка = Ложь;
    ВыбраннаяФорма = "Документ.Реализация.Форма.ФормаДокумента1";
    КонецЕсли;
```
---
```1c
    Если ВидФормы = "ФормаОбъекта" Тогда
    Если Параметры.Ключ.Дата > ОпрДата тогда
    СтандартнаяОбработка = Ложь;
    ВыбраннаяФорма = "Документ.Реализация.Форма.ФормаДокумента1";
    КонецЕсли;
    КонецЕсли;
```
Добрый день

Программно формируются две печатные формы и сохраняются в отдельные файлы PDF. После чего нужно отобразить их на экране

Код

```1c
    ЗапуститьПриложение(ПутьКФайлу1);
    ЗапуститьПриложение(ПутьКФайлу2);
```

приводит к открытию двух окон приложения Acrobat Reader DC, в каждом из которых две вкладки с сохранными документами. Т.е. происходит дублирование

Подскажите, пожалуйста, есть ли способ сразу открыть оба файла только в одном окне в разных вкладках?
---
а если так попробовать?

```1c
    ЗапуститьПриложение("c:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe ПутьКФайлу1 ПутьКФайлу2" );
```
---
"Поведение метода зависит от используемой операционной системы и режима запуска"
То есть управление передаётся ОС, и далее ОС запускает ассоциированное с файлом приложение, либо обработчик ассоциации для типа файла.
Почитайте справку [ключей] запуска своего приложения, возможно, решение вашего вопроса.
---
а если так попробовать?

```1c
    ЗапуститьПриложение("c:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe ПутьКФайлу1 ПутьКФайлу2" );
```
---
Так и сделал. Путь к исполняемому файлу получил из реестра. Спасибо
Помогите с настройкой
Есть склад, на складе товар, который продается по факту наличия.
Руководство решило договориться с дружественной компанией о продаже их товара через нашу компанию. Так как они недалеко, есть возможность ежедневного подвоза товара согласно полученным нами заказам.
Как это организовать в 1С? Экспериментировала, если открыть опцию "Товары на складе и под заказ", то наш обычный ассортимент попадает под заказ, откладывая отгрузку заказа покупателям. Нас это не устраивает, работаем с оптовиками, маршруты развоза заточены под постоянный развоз заказов.

Резюмируя: на большую часть товара нам нужна система "товар есть - отгрузили, нет - отказали"
А на часть "товар под заказ, его на складе нет, но будет вечером, подождем, из заказа не удаляем"
Как можно настроить такую схему работы?
---
"Фактически же их товара у меня нет" И не надо. Продали за день определенное количество их товара, сделал поступление на комиссию и продажу, сделал отчет комитенту. Можно не ежедневно а суммарно за какой-то период, неделя, месяц. Одно точно - это 100% подпадает под комиссионную торговлю.
  Мы так работаем. Только в качестве комитента. Комиссионер не получает от нас товар, продает с нашего склада, по ценам нами установленными (чтобы и ему было интересно и нам в прибыль). Раз в месяц присылает отчет, переводит деньги
---
на большую часть товара нам нужна система "товар есть - отгрузили, нет - отказали"
А на часть "товар под заказ, его на складе нет, но будет вечером, подождем, из заказа не удаляем"
УТ 11?
---
да, 11.4
---
Сделать склад "склад друга Васи" и с него продавать.
---
Хороший вариант. Подскажите по настройке
НСИ - Продажи - Реализации с нескольких складов - включила
Оприходовала новый товар на НовыйСклад
В типовом соглашении убрала склад
Создаю заказ.
Добавила товары с разных складов. Не провести, склад все равно возможно выбрать лишь 1...
---
Создаю заказ.
Добавила товары с разных складов. Не провести, склад все равно возможно выбрать лишь 1...
Обеспечивать обособленно вместо отгрузить не пробовали?
---
Обычная комиссионная торговля
---
Обычная комиссионная торговля

Да, было бы неплохо. Но они мне скидывают остатки ежедневно. Фактически же их товара у меня нет. Как этот момент реализовать?
---
"Фактически же их товара у меня нет" И не надо. Продали за день определенное количество их товара, сделал поступление на комиссию и продажу, сделал отчет комитенту. Можно не ежедневно а суммарно за какой-то период, неделя, месяц. Одно точно - это 100% подпадает под комиссионную торговлю.
  Мы так работаем. Только в качестве комитента. Комиссионер не получает от нас товар, продает с нашего склада, по ценам нами установленными (чтобы и ему было интересно и нам в прибыль). Раз в месяц присылает отчет, переводит деньги
некоторые штрих коды читаются в номенклатуре, но в документе поступление - нет. сам шк начинается с 2511, (25112107060306) и имеет длину 14 символов, остальные 10(режем),14 или 13(4603988003993)
- читает. Были еще какие-то коды нечитаемые, но сейчас не нашел. конфа - Бухгалтерия предприятия, редакция 3.0 (3.0.105.45). В УНФ подключил - тот же код бьется везде.
Обновил конфиг, была надежда, что криворучие справят, но нет.
---
В общем разобрался я. Ну как. Решил проблему, а вот почему .. Короче с этими кодами выходит так. в Бп3 после сканирования код переводится в двоичный и отправляется на расшифровку. После расшифровки собирается массив, в который возвращается и значение (собранное обратно из двоичного) штрих кода. Но вот некоторые коды после расшифровки обратно не собираются. т.е. в массиве одно значение приходит пустое, именно оно используется для поиска номенклатуры в регистре. При этом сам отсканированный код все еще есть в памяти. В расширение закинул процедуру в которой возврат массива, добавил проверку на заполненность строки и если пустая - подставляю в нее отсканированный штрих код. теперь все работает. Ну и когда / если 1с исправят это - будет приходить нормальный код и проверка будет игнорить его, как собственно происходит сейчас с обычными кодами
---
а сканер настроен каким образом? и какой сканер?
---
Нужно сканер проверять на драйвере. В 1с в подключаемом оборудовании нажимаете тест устройства и начинаете сканировать быстро много штрихкодов вперемешку и те, которые читались и те, которые не читались и смотрите, что отображается. Драйвер отобразит и символы, которые считывает и префиксы и суффиксы. То что вы описываете невозможно понять без сканера и его отладки. Сколько у меня было проблем по сканером, а их было немало в 99 процентов случаев все становится понятным из этой формы. Бывает, что не приходит последняя цифра, потому что не стоит передача контрольного символа, бывает не приходит суффикс, тогда 1с тоже не понимает, бывает, что стоит маленькая задержка и штрихкод разбивается на несколько, бывает, что вообще не приходит штрихкод, бывает что некоторые символы некорректные, тоже по разным причинам, тут все индивидуально, но все проблемы выявляет простой тест оборудования, так что тут, я думаю, только вы сами сможете помочь себе) Ну или выкладывайте сюда результаты сканирования)
---
В общем разобрался я. Ну как. Решил проблему, а вот почему .. Короче с этими кодами выходит так. в Бп3 после сканирования код переводится в двоичный и отправляется на расшифровку. После расшифровки собирается массив, в который возвращается и значение (собранное обратно из двоичного) штрих кода. Но вот некоторые коды после расшифровки обратно не собираются. т.е. в массиве одно значение приходит пустое, именно оно используется для поиска номенклатуры в регистре. При этом сам отсканированный код все еще есть в памяти. В расширение закинул процедуру в которой возврат массива, добавил проверку на заполненность строки и если пустая - подставляю в нее отсканированный штрих код. теперь все работает. Ну и когда / если 1с исправят это - будет приходить нормальный код и проверка будет игнорить его, как собственно происходит сейчас с обычными кодами
Добрый день! Подскажите, если я хочу удалить все записи для конкретного документа из регистра, нужно ли это делать рекурсивно как с массивом?
---
Просто создать набор записей регистра, установить отбор по регистратору и записать. Усё.
---
да, записываешь пустой набор записей с отбором
---
Просто создать набор записей регистра, установить отбор по регистратору и записать. Усё.
---
Ок, спс
---
НаборЗаписей = РегистрыСведений.СуммыСвязанныхДокументов.СоздатьНаборЗаписей();
 НаборЗаписей.Отбор.ДополнительныйДокумент.Установить(Документ);
 НаборЗаписей.Прочитать();
 НаборЗаписей.Очистить();
 НаборЗаписей.Записать();

Типа того?
---
вызывать прочитать() и очистить() не требуется, только накладываешь отбор и записать()
---
Просто пустой набор записей?
---
да, записываешь пустой набор записей с отбором
---
Все, понял, спасибо.
Здравствуйте!
Подскажите куда копнуть.
В документах есть документ перевод денег из кассы в кассу
Но почему-то в списке регистра отображается только одно движение.
Проверял процедуры сообщениям пользователю все проходит как приход так и расход
Но в списке нет
1с 8.3 обычные формы
Картинки прилогаю

Спасибо!
---
"Движения.ОстаткиПоКассам.Очистить();" - у вас эта команда повторяется дважды.
---
Копать надо в модуль ,где происходит запись в регистр накоплений, и смотреть что там у вас.
---
Скорее всего одно движение и записывается, причем с замещением предыдущей записи. Копать надо в модуль ,где происходит запись в регистр сведений, и смотреть что там у вас.

В этом?

```1c
    Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    // регистр ОстаткиПоКассам Приход
    Движения.ОстаткиПоКассам.Записывать = Истина;
    Движения.ОстаткиПоКассам.Очистить();
    Движение = Движения.ОстаткиПоКассам.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
    Движение.Период = Дата;
    Движение.Кассы = ВКакуюКассу;
    Движение.Сумма = Сумма;
    Движение.Комментарий = Комментарий;

    // регистр ОстаткиПоКассам Расход
    Движения.ОстаткиПоКассам.Записывать = Истина;
    Движения.ОстаткиПоКассам.Очистить();
    Движение = Движения.ОстаткиПоКассам.Добавить();
    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    Движение.Период = Дата;
    Движение.Кассы = ИзКакойКассы;
    Движение.Сумма = Сумма;
    Движение.Комментарий = Комментарий;

    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    КонецПроцедуры
```
---
да
---
Вот как
---
"Движения.ОстаткиПоКассам.Очистить();" - у вас эта команда повторяется дважды.
---
Спасибо!!!! Заработало!!!!
Мне так для образованности, я же писал конструктором, почему оно так?
---
Не знаю, ни когда не пользовался конструктором движений - это рудимент, в современных конфигурация 1с движения формируются ректально.
В расширение добавлен из основной конфигурации справочник "Контрагенты".

В расширении для справочника "Контрагенты" добавлена форма "Р1" (произвольная).

В модуле справочника код пробую по имени и через метаданные...

```1c
    &После("ОбработкаПолученияФормы")
    Процедура Расш1_ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)

    //ВыбранаяФорма = Метаданные.Справочники.Контрагенты.Формы.Р1;

    ВыбранаяФорма = "Р1";

    СтандартнаяОбработка = ЛОЖЬ;

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

Получаю: "Неизвесный идентификатор формы"

Почему? Как заменить? Чего не хватает?

З.Ы. Пробовал "&После" и "&Перед" - одинаково...
---
В "ВыбранаяФорма" буква "н" пропущена=)
---
В "ВыбранаяФорма" буква "н" пропущена=)
---
Спасибо -добрый человек.

З.Ы. Видно мне пора отдыхать - последнее время "спотыкаюсь" на элементарном...
З.Ы.Ы. "Видно мне пора отдыхать" - мечты, мечты
Мечты, мечты,
Где ваша сладость?
Где ты, где ты,
Ночная радость?
Исчезнул он,
Веселый сон,
И одинокий
Во тьме глубокой
Я пробужден. АСП
Есть отчет, в нем табличная часть. Как обратиться к реквизиту тч?

Нужно чтобы при открытии отчета он заполнялся данными с выборки
Форма

Код модуля формы:

```1c
    &НаСервере
    Процедура ПриОткрытииНаСервере()

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ПодпискиПользователейСрезПоследних.Пользователь КАК Пользователь,
    | ПодпискиПользователейСрезПоследних.Подписка КАК Подписка,
    | ПодпискиПользователейСрезПоследних.ДатаОкончания КАК ДатаОкончания
    |ИЗ
    | РегистрСведений.ПодпискиПользователей.СрезПоследних КАК ПодпискиПользователейСрезПоследних";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    //Отчет.Подписки.ПодпискиПользователь = ВыборкаДетальныеЗаписи.Пользователь;
    //Отчет.Подписки.ПодпискиПодписка= ВыборкаДетальныеЗаписи.Подписка;
    КонецЦикла;

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

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)
    ПриОткрытииНаСервере();
    КонецПроцедуры
```
---
Через Динамический Список все делается
---
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    //Отчет.Подписки.ПодпискиПользователь = ВыборкаДетальныеЗаписи.Пользователь;
    //Отчет.Подписки.ПодпискиПодписка= ВыборкаДетальныеЗаписи.Подписка;
  КонецЦикла;

```1c
    Подписки = Отчет.Подписки;
    Пока .... цикл
    НС= Подписки.Добавить();
    НС.Пользователь = ВыборкаДетальныеЗаписи.Пользователь;
    НС.Подписка = ВыборкаДетальныеЗаписи.Подписка;
    КонецЦикла;
```

Как то так. ;)
---
Картинки прикрепите на форуме, не где-то)
---
Табличные части - это данные объекта, соответственно и обращение к ним возможно через объект.

```1c
    НоваяСтрока = Объект.Подписки.Добавить();
    НоваяСтрока.Подписка =
    .......
```
---
Через Динамический Список все делается
Добрый день.

Часть запроса-

```1c
    ВЫБОР
    КОГДА ТИПЗНАЧЕНИЯ(&Строения) = ТИП(Справочник.ГруппыСтроений)
    ТОГДА ГруппаСтроений = &Строения
    ИНАЧЕ Строение В (&Строения)
    КОНЕЦ
```

ошибка:
по причине:
 Неверные параметры в операции сравнения. Нельзя сравнивать поля
 неограниченной длины и поля несовместимых типов.
ТОГДА ГруппаСтроений <<?>>= &Строения

Передается или справочник группа строений, или массив строений.
Почему ругается на указанную строчку не понятно. Не должно вообще туда заходить, если массив.

Подскажите, где бокопорю?
---
К чему проверка на тип?
Вроде здесь достаточно условия :

```1c
    ГруппаСтроений В (&Строения)
    ИЛИ Строение В (&Строения)
```

Ошибка происходит потому что преобразователь запроса ожидает одинаковое обращение к параметру &Строение, а в вашем запросе вы к нему и как к коллекции обращаетесь и как к одиночному значению
---
ТИП(Справочник.ГруппыСтроений) попробуйте добавить проверку на пустую ссылку.
---
```1c
    (&Строения ССЫЛКА Справочник.ГруппыСтроений И ГруппаСтроений = &Строения)
    ИЛИ Строение В (&Строения))
```
---
```1c
    ВЫБОР
    КОГДА ТИПЗНАЧЕНИЯ(&Строения) = ТИП(Справочник.ГруппыСтроений)
    ТОГДА ГруппаСтроений В (&Строения)
    ИНАЧЕ Строение В (&Строения)
    КОНЕЦ
```
---
К чему проверка на тип?
Вроде здесь достаточно условия :

```1c
    ГруппаСтроений В (&Строения)
    ИЛИ Строение В (&Строения)
```

Ошибка происходит потому что преобразователь запроса ожидает одинаковое обращение к параметру &Строение, а в вашем запросе вы к нему и как к коллекции обращаетесь и как к одиночному значению
---
поясните, зачем проверка на пустую ссылку и куда добавить?

(3) Не корректное условие, по типу я определяю, если справочник - тогда сравнить по группе строений, если массив - значит все строения массива.

(4) Вы предлагает все добавить в массив, просто разные массивы, но как определять, какой тип массива?) Тогда не корректно условие по ТИПЗначение

(5) мне нужен отбор или по группе или по списку строений - это разные справочники.
10 строений может входить в группу, а в списке может быть 5 строений. и я определяю почем делать отбор.
---
```1c
    &Строения ССЫЛКА Справочник.ГруппыСтроений
```

это тоже самое, что

```1c
    ТИПЗНАЧЕНИЯ(&Строения) = ТИП(Справочник.ГруппыСтроений)
```

Только короче.
---
У вас всё равно один параметр!
Если вы хотите усложнить условие, то расширьте логику на проверку 2х параметров:
&ГруппыСтроений и &Строения
---
Типы в 1С 8.3 это классификация данных по их виду (число, строка, дата, документ, справочник и т.п.). Массив в данном случае не подойдет
---
будет работать как предложил (5)
---
Просто напишите Строение В (&Строения) и это будет работать, если строение будет Массивом или Ссылкой
---
да, точно! В (5), забыл это упомянуть.

И ещё если нужно подгруппы шерстить, то условие должно быть "...В ИЕРАРХИИ ..."
---
ошибку выдает - Несовместимые типы "ССЫЛКА"
КОГДА &Строения <<?>>ССЫЛКА Справочник.ГруппыСтроений
---
Был не прав, извините.
ССЫЛКА не работает не только, когда параметр слева массив, но и когда параметр элемент другого справочника.
---
спасибо всем