Имя: Пароль:
1C
1С v8
Рассчитываемая колонка в ТЧ документа
0 егаис
 
25.05.18
16:17
Не могу определить причину неверного поведения процедуры при выводе данных в колонку. Колонка заполняется по выборочным позициям. Точно уверен что код для товаров установлен, но он выводится не по всем.
Есть РС номенклатура поставщика с измерениями Номенклатура,Контрагент,КодКонтрагента.  Без ресурсов.


&НаСервере
Процедура ЗаполнитьКодПоставщикаНаСервере()
    
    Если НЕ Объект.Контрагент.Пустая() Тогда
    
        Запрос = Новый Запрос;
        Запрос.Текст =
            "ВЫБРАТЬ
            |    НоменклатураПоставщиков.КодПоставщика КАК КодПоставщика,
            |    НоменклатураПоставщиков.Номенклатура КАК Номенклатура
            |ИЗ
            |    РегистрСведений.НоменклатураПоставщиков КАК НоменклатураПоставщиков
            |ГДЕ
            |    НоменклатураПоставщиков.Поставщик = &Поставщик
            |    И НоменклатураПоставщиков.Номенклатура В(&СписокНоменклатуры)";
        
        Запрос.УстановитьПараметр("Поставщик", Объект.Контрагент);
        
        МассивУдаляемыхСтрок = Новый Массив;
        ТаблицаТоваров = Объект.Товары.Выгрузить();
        Для Каждого Строка Из ТаблицаТоваров Цикл
            Если Строка.Номенклатура.Пустая() Тогда
                МассивУдаляемыхСтрок.Добавить(Строка);
            КонецЕсли;    
        КонецЦикла;    
        Для Каждого СтрокаМассива Из МассивУдаляемыхСтрок Цикл
            ТаблицаТоваров.Удалить(СтрокаМассива);
        КонецЦикла;    
        
        Запрос.УстановитьПараметр("СписокНоменклатуры", ТаблицаТоваров.ВыгрузитьКолонку("Номенклатура"));
        
        ВыборкаНоменклатура = Запрос.Выполнить().Выбрать();
        Для Каждого Стр Из Объект.Товары Цикл
            
            Если Стр.Номенклатура.Пустая() Тогда
                Продолжить;
            КонецЕсли;
            
            Если ВыборкаНоменклатура.НайтиСледующий(Новый Структура("Номенклатура", Стр.Номенклатура)) Тогда
                Стр.КодПоставщика = ВыборкаНоменклатура.КодПоставщика;
            Иначе
                Стр.КодПоставщика = "";
            КонецЕсли;    
        КонецЦикла;
        
    КонецЕсли;    
    
КонецПроцедуры
1 Timon1405
 
25.05.18
16:29
НайтиСледующий (FindNext)
Описание:
Осуществляет поиск записи по указанным условиям и установку указателя выборки на нее.

ВыборкаИзРезультатаЗапроса (QueryResultSelection)
Сбросить (Reset)
Синтаксис:
Сбросить()
Описание:
Позиционирует выборку в начало.
2 егаис
 
25.05.18
16:32
блин, точно!
спасибо