Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Получить данные из регистра накопления по условию
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
burza
Есть Документ связанный с регистром накопления. В документе есть поле номер договора, как мне при создании нового документа он лез в накопление и выводил мне информацию в поле(СуммаОплачено)сумму всех предыдущих документов по полю сравнения номера договора.
Можно хотя бы пример какой-то)


 ! 

необходимо зарегистрироваться для просмотра ссылки: 4,5
 


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

    Запрос.УстановитьПараметр("ВыбОрганизация",
        Справочники.Организации.НайтиПоНаименованию("Накра"));

   Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();

    
    Объект.ДолгКлиента = Выборка.СуммаПоСчету;
podcast
burza @ Сегодня, 11:52 необходимо зарегистрироваться для просмотра ссылки ,
 Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   РегистрСчетов.Период,
        |   РегистрСчетов.Регистратор,
        |   РегистрСчетов.НомерСтроки,
        |   РегистрСчетов.Активность,
        |   РегистрСчетов.Контрагент,
        |   РегистрСчетов.Организация,
        |   РегистрСчетов.НомерДоговора,
        |   РегистрСчетов.НомерСчета,
        |   РегистрСчетов.Санаторий,
        |   РегистрСчетов.СуммаПоСчету КАК  СуммаПоСчету
        |ИЗ
        |   РегистрНакопления.РегистрСчетов КАК РегистрСчетов
        |ГДЕ
        |   РегистрСчетов.Организация = &ВыбОрганизация И
        |   РегистрСчетов.Регистратор.НомерДоговора = &НомерДоговора
        | ";

    Запрос.УстановитьПараметр("ВыбОрганизация",
        Справочники.Организации.НайтиПоНаименованию("Накра"));
  Запрос.УстановитьПараметр("НомерДоговора ",НомерДоговора ); //Указать нужный номер договора.
   Выборка = Запрос.Выполнить().Выбрать();
СуммаПоСчету = 0;    
Пока Выборка.Следующий() Цикл

    СуммаПоСчету  = СуммаПоСчету + Выборка.СуммаПоСчету;

КонецЦикла
Возврат СуммаПоСчету;

Это самый простой вариант, можно Итог с запроса взять.
burza
podcast @ Сегодня, 11:56 необходимо зарегистрироваться для просмотра ссылки ,
Напишите как) в смысле код
logist
ВЫБРАТЬ
    СУММА(ЕСТЬNULL(Расчеты.СуммаПоСчету , 0)) КАК СуммаПоСчету
ИЗ
    РегистрНакопления.РегистрСчетов.Обороты(, , , НомерДоговора = &НомерДоговора И Организация = &Организация) КАК Расчеты
podcast
burza @ Сегодня, 11:58 необходимо зарегистрироваться для просмотра ссылки ,
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   РегистрСчетов.Период,
        |   РегистрСчетов.Регистратор,
        |   РегистрСчетов.НомерСтроки,
        |   РегистрСчетов.Активность,
        |   РегистрСчетов.Контрагент,
        |   РегистрСчетов.Организация,
        |   РегистрСчетов.НомерДоговора,
        |   РегистрСчетов.НомерСчета,
        |   РегистрСчетов.Санаторий,
        |   РегистрСчетов.СуммаПоСчету КАК  СуммаПоСчету
        |ИЗ
        |   РегистрНакопления.РегистрСчетов КАК РегистрСчетов
        |ГДЕ
        |   РегистрСчетов.Организация = &ВыбОрганизация И
        |   РегистрСчетов.Регистратор.НомерДоговора = &НомерДоговора
        | ";

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

Возврат СуммаПоСчету;
burza
podcast @ Сегодня, 12:00 необходимо зарегистрироваться для просмотра ссылки ,
А как сравнивать если не указать номер договора чтобы он сам сравнивал если несколько документов с одинаковым номером договора выводил сумму

burza @ Сегодня, 13:47 необходимо зарегистрироваться для просмотра ссылки ,
То есть у меня есть заявки и у них свой номер при формировании счета нужно сравнивать предыдущие по номеру(номер заполняется с заявки) он один для всех документов одной заявки.

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

Выборка = Запрос.Выполнить().Выгрузить();
  
   Объект.ДолгКлиента = Выборка.Итог("СуммаПоСчету");
burza
Подскажите еще как вот это впихнуть в цикл чтобы проверило всю табличную часть документа и проставило
Элементы.ОписаниеПутевки.ТекущиеДанные.Количество = Элементы.ОписаниеПутевки.ТекущиеДанные.Количество / 100 * 20;
    Элементы.ОписаниеПутевки.ТекущиеДанные.СуммаПоСчету = Объект.СуммаПоСчетуБезСкидок / 100 * 20;
     Элементы.ОписаниеПутевки.ТекущиеДанные.ЦенаПутевки = Элементы.ОписаниеПутевки.ТекущиеДанные.СуммаПоСчету / Элементы.ОписаниеПутевки.ТекущиеДанные.Количество;
podcast
burza @ Сегодня, 15:25 необходимо зарегистрироваться для просмотра ссылки ,
В Событии ПриИзменении реквизита который вы водите вручную, либо сделать команду и пройти циклом всю таблицу.
burza
podcast @ Сегодня, 15:32 необходимо зарегистрироваться для просмотра ссылки ,
Я не ввожу вручную при изменение не подходит, документ делается на основании и втягивает данные с родителя.
Ну команда есть а что то дописать?)у меня с цыклами проблемы)
&НаКлиенте
Процедура ЗаполнитьПоетапам(Команда)
    
    
        

    //Элементы.ОписаниеПутевки.ТекущиеДанные.Количество = Элементы.ОписаниеПутевки.ТекущиеДанные.Количество / 100 * 20;
    //Элементы.ОписаниеПутевки.ТекущиеДанные.СуммаПоСчету = Объект.СуммаПоСчетуБезСкидок / 100 * 20;
    // Элементы.ОписаниеПутевки.ТекущиеДанные.ЦенаПутевки = Элементы.ОписаниеПутевки.ТекущиеДанные.СуммаПоСчету / Элементы.ОписаниеПутевки.ТекущиеДанные.Количество;

КонецПроцедуры
logist
Цитата(burza @ 06.03.18, 15:35) необходимо зарегистрироваться для просмотра ссылки
документ делается на основании и втягивает данные с родителя.

У документа нет Родителя, это у справочников. В модуле объекта есть процедура ОбработкаЗаполнения вот там и пишите ваш цикл который будет заполнять в каждой строке.
burza
logist @ Сегодня, 15:47 необходимо зарегистрироваться для просмотра ссылки ,
Или вы меня не так поняли или я вас, мне нужно чтобы вот эта формула
 Элементы.ОписаниеПутевки.ТекущиеДанные.Количество = Элементы.ОписаниеПутевки.ТекущиеДанные.Количество / 100 * 20;
    Элементы.ОписаниеПутевки.ТекущиеДанные.СуммаПоСчету = Объект.СуммаПоСчетуБезСкидок / 100 * 20;
     Элементы.ОписаниеПутевки.ТекущиеДанные.ЦенаПутевки = Элементы.ОписаниеПутевки.ТекущиеДанные.СуммаПоСчету / Элементы.ОписаниеПутевки.ТекущиеДанные.Количество;
заполнялась по нажатию кнопки для всего табличного документа а не для на которого навели мышкой как сейчас.
sava1
чуть не в тему - кто помнит приоритетность математ. операций ?
logist
Цитата(burza @ 06.03.18, 15:54) необходимо зарегистрироваться для просмотра ссылки
Или вы меня не так поняли или я вас,

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

Извините, но на самом деле нихуя не понятно, сначала вы пишите что это поле в документе, потом это оказывается реквизит в табличной части, потом оказывается что это должно заполнятся при вводе на основании другого,... а в итоге окажется что мы запускаем шатл на марс, просто постановщик стесняется это сразу пояснить, думая, что на каком-то этапе он сам разберется. Не бойтесь быть глупым, говорите всё сразу, это, как минимум, упрощает жизнь отвечающим
burza
Как его правильно дописать Подскажите
 
Для каждого СтрКоличество  Из Документы.РегистрСчетов.ОписаниеПутевки  Цикл
Элементы.ОписаниеПутевки.ТекущиеДанные.Количество = Элементы.ОписаниеПутевки.ТекущиеДанные.Количество / 100 * 20
КонецЦикла;
logist
&НаСервере
//
Для каждого СтрКоличество  Из Объект.ОписаниеПутевки  Цикл
СтрКоличество.Количество = СтрКоличество.Количество / 100 * 20
КонецЦикла;
burza
logist @ Сегодня, 16:06 необходимо зарегистрироваться для просмотра ссылки ,
Неа не то

Как с этого сделать цикл
&НаКлиенте
Процедура ЗаполнитьПоетапам(Команда)
        
    Элементы.ОписаниеПутевки.ТекущиеДанные.Количество = Элементы.ОписаниеПутевки.ТекущиеДанные.Количество / 100 * 20;
    Элементы.ОписаниеПутевки.ТекущиеДанные.СуммаПоСчету = Объект.СуммаПоСчетуБезСкидок / 100 * 20;
     Элементы.ОписаниеПутевки.ТекущиеДанные.ЦенаПутевки = Элементы.ОписаниеПутевки.ТекущиеДанные.СуммаПоСчету / Элементы.ОписаниеПутевки.ТекущиеДанные.Количество;

КонецПроцедуры
logist
Цитата(burza @ 06.03.18, 16:43) необходимо зарегистрироваться для просмотра ссылки
Неа не то

Почему не то? Вы фидбек умеете давать, или надо догадываться?

&НаКлиенте
Процедура ЗаполнитьПоетапам(Команда)
Для Каждого Строка Из Объект.ОписаниеПутевки Цикл
    Строка.Количество = Строка.Количество / 100 * 20;
    Строка.СуммаПоСчету = Объект.СуммаПоСчетуБезСкидок / 100 * 20;
     Строка.ЦенаПутевки = Строка.СуммаПоСчету / Строка.Количество;
КонецЦикла;
КонецПроцедуры

Если и это будет не то, без подробного описания проблемы - уйдете в бан.
burza
logist @ Вчера, 17:04 необходимо зарегистрироваться для просмотра ссылки ,
Спасибо оно)
Теперь наткнулся на другое. В табличной части например 5 полей а СуммаПоСчету ставит на каждое поле (20 процентов), как эту сумму разбить на количество полей и добавить в СуммаПоСчету уже посредственно для самой строки.
Тоесть сейчас

burza @ Сегодня, 9:37 необходимо зарегистрироваться для просмотра ссылки ,
А надо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.