Версия для печати темы (https://pro1c.org.ua/index.php?s=251f3cd6b286ae9b9afba4b4b4986ad9&showtopic=53039)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Отбор в запросе по уникальному индентификатору

Автор: Constantus 15.07.19, 10:45

Приветствую, Форумчане!
1с8.3.12, самопис, БСП, УФ

Создаю массив уникальных индентификаторво "КлючСтроки" из ТЧ

    Для Каждого Ключа Из Объект.Окантовано Цикл
        МассивКлючей = Новый Массив;
        МассивКлючей.Добавить(Ключа.КлючСтроки);
    КонецЦикла;



Имеется некий запрос, где пытаюсь исключить из записей все данные, где есть такиеже КлючиСвязи (УИД)

"ВЫБРАТЬ
    |    ЗаказМодельИКомплектация.Ссылка КАК Заказ,
    |    ЗаказМодельИКомплектация.Номенклатура,
    |    ЗаказМодельИКомплектация.Модель КАК Модель,
    |    ЗаказМодельИКомплектация.РазмерИзделия КАК Размер,
    |    ЗаказМодельИКомплектация.ПолировкаИзделия КАК Полировка,
    |    ЗаказМодельИКомплектация.КлючСтроки
    |ИЗ
    |    Документ.Заказ.МодельИКомплектация КАК ЗаказМодельИКомплектация
    |ГДЕ
    |    ЗаказМодельИКомплектация.Ссылка = &ТТН
    |    И НЕ ЗаказМодельИКомплектация.КлючСтроки В (&ПараметрКлючей)

    Запрос.УстановитьПараметр("ТТН", Объект.ВыбранныйЗаказ);
    Запрос.УстановитьПараметр("ПараметрКлючей", МассивКлючей);


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

Везде "КлючСтроки" тип одинаковый "УникальныйИдентификатор"

Как правильно провести операцию исключения из запроса с

И НЕ ЗаказМодельИКомплектация.КлючСтроки В (&ПараметрКлючей)



Автор: mut 15.07.19, 11:47

Наверное нужно хранить и обрабатывать строковые представления идентификаторов. В полях с типом Строка фиксированной длины.

Автор: fly 15.07.19, 12:07

Constantus @ Сегодня, 11:45 * ,

Попробуй привести МассивКлючей к типу строка с необходимой длиной строки - убери "неограниченную длину".

КС = Новый КвалификаторыСтроки(14);
МассивКлючей = Новый Массив;
МассивКлючей = Новый ОписаниеТипов("Строка", ,КС);

Для Каждого Ключа Из Объект.Окантовано Цикл
    МассивКлючей.Добавить(Ключа.КлючСтроки);
КонецЦикла;

Автор: fly 15.07.19, 13:10


Это бред smile.gif не работает


Цитата(fly @ 15.07.19, 13:07) *
МассивКлючей = Новый ОписаниеТипов("Строка", ,КС);


Привести неограниченную длину к длине определенной прийдется, иначе будет выдавать ошибку
Запрос не хочет сравнивать неограниченные длины строки.

Автор: fly 17.07.19, 11:42

fly @ 15.07.19, 14:10 * ,
Добрый день,

я немного неправильно написал

привести значение к указанному количеству знаков:

Объект = новый Структура("ОтветЛицо", 123);

Сообщить(ТипЗнч(Объект.ОтветЛицо));

ПараметрыСтроки = Новый КвалификаторыСтроки(2);
НашеОписание = Новый ОписаниеТипов("Строка", ,ПараметрыСтроки);
Объект.ОтветЛицо = НашеОписание.ПривестиЗначение(Объект.ОтветЛицо);

Сообщить(ТипЗнч(Объект.ОтветЛицо));
Сообщить(Объект.ОтветЛицо);

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua