8.х Создание табличного поля. 1С v8

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем ZxKill, 20 ноя 2009.

  1. TopicStarter Overlay
    ZxKill
    Offline

    ZxKill

    Регистрация:
    20 ноя 2009
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Есть такая процедура:
    Код:
    Запрос=Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |	РасчетПенсии.Контрагент,
    |	РасчетПенсии.Пенсия,
    |	НакопленияКонтрагентовОстатки.Контрагенты,
    |	НакопленияКонтрагентовОстатки.СуммаОстаток
    |ИЗ
    |	Документ.РасчетПенсии КАК РасчетПенсии,
    |	РегистрНакопления.НакопленияКонтрагентов.Остатки КАК НакопленияКонтрагентовОстатки ГДЕ Контрагенты=РасчетПенсии.Контрагент";
    Результат = Запрос.Выполнить().Выбрать();
    Выплаты.Очистить();
    Пока Результат.Следующий() > 0  Цикл
    Выплаты.Добавить();
    ЕСЛИ Результат.СуммаОстаток<Результат.Пенсия ТОГДА
    Выплаты.ЗаполнитьЗначения(Результат.Контрагент,"Контрагент");	
    Выплаты.ЗаполнитьЗначения(Результат.Пенсия,"КВыплате");
    Выплаты.ЗаполнитьЗначения(Результат.СуммаОстаток,"ОстатокСчета");
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">		Иначе	</span>
    Выплаты.ЗаполнитьЗначения(Результат.Контрагент,"Контрагент");
    Выплаты.ЗаполнитьЗначения(Результат.Пенсия,"КВыплате");
    Выплаты.ЗаполнитьЗначения(Результат.СуммаОстаток,"ОстатокСчета");
    КонецЕсли;
    КонецЦикла; 
    
    При ее выполнении в табличное поле добавляются несколько строк, но в каждую одно и то же значение последнего документа.
    Подскажите как сделать чтобы в строках были все документы, а не один и тот же.

    ЗЫ: и сразу вдогонку программированием 1с занимаюсь третий день только, по этому почти ничего не знаю. Подскажите, пожалуйста, как-то можно оптимизировать эту процедуру? Больше чем уверен, что в данном виде при большом количестве контрагентов, все будет жутко тормозить
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Код:
    Выплаты.Добавить();
    
    Это что такое?
    Код:
    НоваяСтрокаВыплат = Выплаты.Добавить();
    
    Видимо, так должно быть...
    Ну и далее переписать , соответственно :)
  3. TopicStarter Overlay
    ZxKill
    Offline

    ZxKill

    Регистрация:
    20 ноя 2009
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Я так понимаю
    Код:
    Выплаты.Добавить();
    
    возвращает ссылку на новую строку и потом нужно вставать на нужную строку и начинать писать и нее?
    А как встать на эту строку? я чето тыркался-тыркался, ничего не получилось и гугл молчит:(
  4. TopicStarter Overlay
    ZxKill
    Offline

    ZxKill

    Регистрация:
    20 ноя 2009
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    все, разобрался.... надо было всего лишь сделать так :)
    Код:
    	Пока Результат.Следующий() > 0  Цикл
    НовСтрока = Выплаты.Добавить();
    ЕСЛИ Результат.СуммаОстаток<Результат.Пенсия ТОГДА
    НовСтрока.Контрагент=Результат.Контрагент;
    НовСтрока.КВыплате=Результат.Пенсия;
    НовСтрока.ОстатокСчета=Результат.СуммаОстаток;
    Иначе
    НовСтрока.Контрагент=Результат.Контрагент;
    НовСтрока.КВыплате=Результат.Пенсия;
    НовСтрока.ОстатокСчета=Результат.СуммаОстаток;
    КонецЕсли;
    
  5. TopicStarter Overlay
    ZxKill
    Offline

    ZxKill

    Регистрация:
    20 ноя 2009
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Ответьте пожалуйста еще на вопросик
    Имеется код
    Код:
    Процедура ПриОткрытии()
    Запрос=Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |	РасчетПенсии.Контрагент,
    |	РасчетПенсии.Пенсия,
    |	НакопленияКонтрагентовОстатки.Контрагенты,
    |	НакопленияКонтрагентовОстатки.СуммаОстаток
    |ИЗ
    |	Документ.РасчетПенсии КАК РасчетПенсии,
    |	РегистрНакопления.НакопленияКонтрагентов.Остатки КАК НакопленияКонтрагентовОстатки ГДЕ Контрагенты=РасчетПенсии.Контрагент";
    
    Результат = Запрос.Выполнить();
    ТабРез=Результат.Выгрузить();
    ТабличнаяЧасть1.Загрузить(ТабРез);
    КонецПроцедуры
    
    
    В табличной части есть еще поле "Отметки", как сделать чтобы в него вписывалось "Нет средств", при условии что СуммаОстаток<Пенсия ?
    два часа гуглил и ничего не нашел(( помогите :unsure:
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Код:
    "
    //.....
    |    НакопленияКонтрагентовОстатки.Контрагенты,
    |    ВЫБОР КОГДА ЕСТЬNULL(НакопленияКонтрагентовОстатки.СуммаОстаток, 0) < РасчетПенсии.Пенсия ТОГДА ""Нет средств"" Иначе ""Средств достаточно"" КОНЕЦ КАК Отметки,
    |    ЕСТЬNULL(НакопленияКонтрагентовОстатки.СуммаОстаток, 0) КАК СуммаОстаток
    //...
    "
    
Похожие темы
  1. MadNord
    Ответов:
    0
    Просмотров:
    379
Загрузка...

Поделиться этой страницей