Имя: Пароль:
1C
 
Как обойти в цикле данные формы списка Номенклатура?
0 program345
 
12.03.15
15:12
Доброго дня!
Пытаюсь получить доступ к данным формы списка Номенклатура, элементы.Список.ТекущиеДанные = так дает только текущую строчку...
1 D_E_S_131
 
12.03.15
15:18
А нет никаких данных потому что. Есть строки, отображенные по данным в ИБ. Есть предопределенная процедура для списка ПриПолученииДанных, но и там будет не только то, что ты видишь в списке.
2 DirecTwiX
 
12.03.15
15:19
ПостроительЗапроса должен вроде нормально отработать. Но лучше скажи, зачем тебе это нужно.
3 fisher
 
12.03.15
15:21
ПостоительЗапроса в обычных формах лечит.
На УФ реализовано в 8.3.6
4 program345
 
12.03.15
15:26
(2) отображать остатки номенклатуры по кнопке формы списка
5 DirecTwiX
 
12.03.15
15:27
(4) Тогда тебе нужна процедура ПриПолученииДанных()
6 DirecTwiX
 
12.03.15
15:28
(5) Хотя у тебя УФ.. Поэтому можно использовать динамический список с твои произвольным запросом, который подцепит отстатки.
7 program345
 
13.03.15
13:20
написал код:
//
&НаКлиенте
Процедура УказатьОстатки(Команда)
    
    УказатьОстаткиСервер();
    Элементы.Список.Обновить();    
    
КонецПроцедуры

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


//
8 program345
 
13.03.15
13:23
код написан в модуле формы списка Номенклатура. Оптимизация приветствуется.
9 program345
 
13.03.15
13:25
(5) ПланОбменаОбъект.<Имя плана обмена> (ExchangePlanObject.<Имя плана обмена>)
ПриПолученииДанныхОтГлавного (OnReceiveDataFromMaster)
как это можно присенить?
10 fdgd98
 
13.03.15
13:25
(7) я такое делал. тебе надо в динамическом списке, сделать произвольный запрос(левым соединение с регистром) и появиться у тебя колонка количество
11 program345
 
13.03.15
13:26
(6) а можно поподробнее, в (7) это не то?
12 program345
 
13.03.15
13:27
(10) есть код7
13 D_E_S_131
 
13.03.15
13:28
(12) Это не код — это "дичь".
14 program345
 
13.03.15
13:55
(13) &НаКлиенте
Процедура УказатьОстатки(Команда)
    
    УказатьОстаткиСервер();
    Элементы.Список.Обновить();    
    
КонецПроцедуры

&НаСервере
Процедура УказатьОстаткиСервер()
    
    Граница = Новый Граница(Дата, ВидГраницы.Включая);
    ТаблЗн = РегистрыНакопления.ТоварыНаСкладах.Остатки(Граница,,"Номенклатура",);
    
    ТекНоменклатура = Элементы.Список.ТекущаяСтрока;
    СтрокаТЗ = ТаблЗн.Найти(ТекНоменклатура,"Номенклатура");
    Если ЗначениеЗаполнено(СтрокаТЗ) Тогда
    
        Остаток1 = СтрокаТЗ.Количество;
    Иначе
        
        Остаток1 = 0;    
    
    КонецЕсли;
    
КонецПроцедуры // УказатьОстаткиСервер()

указал поле для текущей строки
15 D_E_S_131
 
13.03.15
14:46
В (6) речь про это
http://hkar.ru/zsln
16 program345
 
13.03.15
20:52
(15) спасибо!