Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сумма подчиненных документов
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
bereznoy
Есть документ,в нем табличная часть, есть реквизит в строке ЗАКАЗ, там ссылка на заказ, на основании есть возвраты, как мне в мою ТЧ получить сумму связных возвратных накладных
ignsv
Таблица = ПолныеПрава.ПолучитьСписокДокументовПоКритериюОтбора("СвязанныеДокументы", ТекущийДокумент);

+ посмотрите в типовых конфигурациях как формируется список подчиненных док-ов

bereznoy
Цитата(ignsv @ 08.10.12, 9:21) необходимо зарегистрироваться для просмотра ссылки
Таблица = ПолныеПрава.ПолучитьСписокДокументовПоКритериюОтбора("СвязанныеДокументы", ТекущийДокумент);

+ посмотрите в типовых конфигурациях как формируется список подчиненных док-ов

Вс\ проблема в том что делаю все ПриВыводеСтроке и не ясно как получить именно сумму по возвратным накладным,
Таблица = ПолныеПрава.ПолучитьСписокДокументовПоКритериюОтбора("СвязанныеДокументы", Данныестроки.Заказ);

Как потом получить из этой таблицы сумму всех возвратных накладных?

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

КонецЦикла;
logist
Цитата(bereznoy @ 09.10.12, 0:08) необходимо зарегистрироваться для просмотра ссылки
если один возврат то проблем нет, а если несколько, то цифра не ясно как вообще получилась

Стоит использовать не "Сделка", а документ продажи указываемый в ТЧ Товары возврата. Как вариант smile.gif
bereznoy
Проблемка небольшая получилась с запросом, делаю запрос по документам возвратным, где сделка = моему заказу, все это в процедуре ПриВыводе строки, проблема в том что считает два раза, т.е. задваивает, например два возвратных дока по заказу,
мой запрос удваивает сумму, вот собственно запрос

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

Пока Выборка1.Следующий() Цикл
    
    ДанныеСтроки.Возврат = Выборка1.СуммаВозврата + ДанныеСтроки.Возврат;

КонецЦикла;
logist
Выборка = Запрос.Выполнить().Выбрать();
ДанныеСтроки.Возврат = 0;
Если Выборка.Следующий() Тогда
    ДанныеСтроки.Возврат = Выборка.СуммаВозврата + ДанныеСтроки.Возврат;
КонецЕсли;

думаю, как-то так.
bereznoy
Цитата(logist @ 12.10.12, 23:18) необходимо зарегистрироваться для просмотра ссылки
Выборка = Запрос.Выполнить().Выбрать();
ДанныеСтроки.Возврат = 0;
Если Выборка.Следующий() Тогда
    ДанныеСтроки.Возврат = Выборка.СуммаВозврата + ДанныеСтроки.Возврат;
КонецЕсли;

думаю, как-то так.



Вот так вроде бы правильно считает
Выборка = Запрос.Выполнить().Выбрать();
ДанныеСтроки.Возврат = 0;

Пока Выборка.Следующий()=1 Цикл
ДанныеСтроки.Возврат = Выборка.СуммаВозврата + ДанныеСтроки.Возврат;
КонецЦикла;


Жму кнопочку - спасибо
logist
Пока Выборка.Следующий()=1 Цикл

Не пойму зачем вы загоняете подсчет в цикл, если вы запросом получаете итог, и он находится в первой позиции выборки, т.е. мой вариант с Если должен считать правильно.
Или перепишите запрос, вместо Итогов используйте СУММА(), глупо гонять цикл, если цифру можно получить запросом.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.