Ниже привёл запрос по которому у меня сейчас работает, происходит группировка по контрагенту, но мне необходимо сделать так чтобы при группировке, комментарии которые есть в заказах (если один и тот же контрагент) записывались в одну строку
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КурсыВалютСрезПоследних.Курс,
| КурсыВалютСрезПоследних.Кратность
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(&НаДату, Валюта = &Валюта) КАК КурсыВалютСрезПоследних";
Валюта=Справочники.Валюты.НайтиПоКоду("840");
НаДату=ТекущаяДата();
Запрос.УстановитьПараметр("Валюта", Валюта);
Запрос.УстановитьПараметр("НаДату", НаДату);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Курс = ВыборкаДетальныеЗаписи.Курс
КонецЦикла;
ТЧМаршруты2.Очистить();
СуммаБун = 0;
СуммаУСД = 0;
СуммаСтрокиРубляПереведенного = 0;
коммент = "";
контрагент = "";
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПокупателя.Ссылка,
| ЗаказПокупателя.ВерсияДанных,
| ЗаказПокупателя.ПометкаУдаления,
| ЗаказПокупателя.Номер,
| ЗаказПокупателя.Дата,
| ЗаказПокупателя.Проведен,
| ЗаказПокупателя.АдресДоставки,
| ЗаказПокупателя.ВалютаДокумента,
| ЗаказПокупателя.УдалитьВремяНапоминания,
| ЗаказПокупателя.ДатаОплаты,
| ЗаказПокупателя.ДатаОтгрузки,
| ЗаказПокупателя.ДисконтнаяКарта,
| ЗаказПокупателя.ДоговорКонтрагента,
| ЗаказПокупателя.ИспользоватьПлановуюСебестоимость,
| ЗаказПокупателя.ИтогПлановаяСебестоимость,
| ЗаказПокупателя.Комментарий,
| ЗаказПокупателя.Контрагент,
| ЗаказПокупателя.КратностьВзаиморасчетов,
| ЗаказПокупателя.КурсВзаиморасчетов,
| ЗаказПокупателя.УдалитьНапомнитьОСобытии,
| ЗаказПокупателя.Организация,
| ЗаказПокупателя.Ответственный,
| ЗаказПокупателя.Подразделение,
| ЗаказПокупателя.СтруктурнаяЕдиница,
| ЗаказПокупателя.СкладГруппа,
| ЗаказПокупателя.СуммаВключаетНДС,
| ЗаказПокупателя.СуммаДокумента,
| ЗаказПокупателя.ТипЦен,
| ЗаказПокупателя.УдалитьКонтактноеЛицо,
| ЗаказПокупателя.УчитыватьНДС,
| ЗаказПокупателя.Грузополучатель,
| ЗаказПокупателя.КонтактноеЛицоКонтрагента,
| ЗаказПокупателя.УсловиеПродаж,
| ЗаказПокупателя.ДополнениеКАдресуДоставки,
| ЗаказПокупателя.ДокументОснование,
| ЗаказПокупателя.Грузоотправитель,
| ЗаказПокупателя.НомерВходящегоДокументаЭлектронногоОбмена,
| ЗаказПокупателя.ДатаВходящегоДокументаЭлектронногоОбмена,
| ЗаказПокупателя.Статус,
| ЗаказПокупателя.Маршрут,
| ЗаказПокупателя.Комплектовщик,
| ЗаказПокупателя.ГоловнойКонтрагент,
| ЗаказПокупателя.Город,
| ЗаказПокупателя.Менеджер,
| ЗаказПокупателя.ИзмененСМоментаСоздания,
| ЗаказПокупателя.КолВоГрузМест,
| ЗаказПокупателя.КлассификацияУпаковки,
| ЗаказПокупателя.КолВоОшибок,
| ЗаказПокупателя.Печатано,
| ЗаказПокупателя.КолВоУстановкиРезервов
|ИЗ
| Документ.ЗаказПокупателя КАК ЗаказПокупателя
|ГДЕ
| ЗаказПокупателя.ДатаОтгрузки = &ДатаМаршрута
| И ЗаказПокупателя.Маршрут = &МаршрутГород
| И ЗаказПокупателя.Ссылка.Проведен";
Запрос.УстановитьПараметр("ДатаМаршрута", ДатаМаршрута);
Запрос.УстановитьПараметр("МаршрутГород", МаршрутГород);
ТаблицаРезультата = запрос.Выполнить().Выгрузить();
ТаблицаКонтрагентов = ТаблицаРезультата.Скопировать(,"Контрагент");
ТаблицаКонтрагентов.Свернуть("Контрагент");
НомерПервойСтроки = 1;
Для Каждого СтрокаКонтрагента Из ТаблицаКонтрагентов Цикл
СтрокиТаблицыРезультата = ТаблицаРезультата.НайтиСтроки(Новый Структура("Контрагент", СтрокаКонтрагента.Контрагент));
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаТабличнойЧасти = ТЧМаршруты2.Добавить();
СтрокаТабличнойЧасти.Контрагент = СтрокаРезультата.Контрагент;
СтрокаТабличнойЧасти.СуммаДокумента = СтрокаРезультата.СуммаДокумента;
СтрокаТабличнойЧасти.КолГрузМест = СтрокаРезультата.КолВоГрузМест;
СтрокаТабличнойЧасти.Имя = СтрокаРезультата.Контрагент.ИмяГрузополуч;
СтрокаТабличнойЧасти.Телефон = СтрокаРезультата.Контрагент.ТелПриемки;
СтрокаТабличнойЧасти.ПунктРазгрузки = СтрокаРезультата.Контрагент.ПунктРазгрузки;
СтрокаТабличнойЧасти.ВалютаДокумента = СтрокаРезультата.ВалютаДокумента;
СтрокаТабличнойЧасти.заявки = 1;
СтрокаТабличнойЧасти.УЕ ="";
СтрокаТабличнойЧасти.Рубли ="";
СтрокаТабличнойЧасти.ТТН ="";
//СтрокаТабличнойЧасти.Примечание =СтрокаРезультата.Комментарий;
Если СтрокаТабличнойЧасти.ВалютаДокумента = "BYN" тогда
СтрокаТабличнойЧасти.ТТН = "ТТН";
СуммаБун=СуммаБун + СтрокаТабличнойЧасти.СуммаДокумента;
СтрокаТабличнойЧасти.рубли = 0;
Иначе
СуммаУСД = СуммаУСД + СтрокаТабличнойЧасти.СуммаДокумента;
СтрокаТабличнойЧасти.ТТН = "";
СтрокаТабличнойЧасти.УЕ = СтрокаТабличнойЧасти.СуммаДокумента ;
СтрокаТабличнойЧасти.рубли = СтрокаТабличнойЧасти.СуммаДокумента * Курс ;
КонецЕсли;
Конеццикла;
ТЧМаршруты2.Свернуть("Контрагент, Имя, Телефон, ПунктРазгрузки, ВалютаДокумента" , "СуммаДокумента, КолГрузМест, УЕ, рубли, заявки, Примечание");
Конеццикла;
ПоказатьПо теме из базы знаний
Найденные решения
(1)
Примерно так:
Ну, и потом записываем в ТЧМаршруты2 эту строку:
Если все это не так, то потрудитесь поставить задачу яснее.
необходимо сделать так чтобы при группировке, комментарии которые есть в заказах (если один и тот же контрагент) записывались в одну строку
И что это за строка? Что предполагается с ней делать? Если записывать в строки ТЧМаршруты2, то придется добавить еще один цикл - ведь при обработке первого заказа по каждому контрагенту все комментарии (кроме первого) еще неизвестны.
Примерно так:
СтрокиТаблицыРезультата = ТаблицаРезультата.НайтиСтроки(Новый Структура("Контрагент", СтрокаКонтрагента.Контрагент));
//----------
СтрокаКомментариев="":
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаКомментариев = СтрокаКомментариев + СтрокаРезультата.Комментарий;
КонецЦикла;
//----------
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаТабличнойЧасти = ТЧМаршруты2.Добавить();
ПоказатьНу, и потом записываем в ТЧМаршруты2 эту строку:
//СтрокаТабличнойЧасти.Примечание =СтрокаРезультата.Комментарий;
СтрокаТабличнойЧасти.Примечание = СтрокаКомментариев;
Если все это не так, то потрудитесь поставить задачу яснее.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Примерно так:
Ну, и потом записываем в ТЧМаршруты2 эту строку:
Если все это не так, то потрудитесь поставить задачу яснее.
необходимо сделать так чтобы при группировке, комментарии которые есть в заказах (если один и тот же контрагент) записывались в одну строку
И что это за строка? Что предполагается с ней делать? Если записывать в строки ТЧМаршруты2, то придется добавить еще один цикл - ведь при обработке первого заказа по каждому контрагенту все комментарии (кроме первого) еще неизвестны.
Примерно так:
СтрокиТаблицыРезультата = ТаблицаРезультата.НайтиСтроки(Новый Структура("Контрагент", СтрокаКонтрагента.Контрагент));
//----------
СтрокаКомментариев="":
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаКомментариев = СтрокаКомментариев + СтрокаРезультата.Комментарий;
КонецЦикла;
//----------
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаТабличнойЧасти = ТЧМаршруты2.Добавить();
ПоказатьНу, и потом записываем в ТЧМаршруты2 эту строку:
//СтрокаТабличнойЧасти.Примечание =СтрокаРезультата.Комментарий;
СтрокаТабличнойЧасти.Примечание = СтрокаКомментариев;
Если все это не так, то потрудитесь поставить задачу яснее.
(2)извините,не в строку,а в Комментарий. накину просто Пример что нужно:
1. Контрагент: Вася, СуммаДокумента: 20 руб, Конмментарий: доставка по ул.Вербная 64
2. Контрагент: Вася, СуммаДокумента: 30 руб, Конмментарий: забрать товар по ул. ул.Вербная 69
3. Контрагент: Дима, СуммаДокумента: 10 руб, Конмментарий: ул.Вербная 10
в итоге получить надо:
1. Контрагент: Вася, СуммаДокумента: 50 руб, Конмментарий: доставка по ул.Вербная 64, забрать товар по ул. ул.Вербная 69
2. Контрагент: Дима, СуммаДокумента: 10 руб, Конмментарий: ул.Вербная 10
1. Контрагент: Вася, СуммаДокумента: 20 руб, Конмментарий: доставка по ул.Вербная 64
2. Контрагент: Вася, СуммаДокумента: 30 руб, Конмментарий: забрать товар по ул. ул.Вербная 69
3. Контрагент: Дима, СуммаДокумента: 10 руб, Конмментарий: ул.Вербная 10
в итоге получить надо:
1. Контрагент: Вася, СуммаДокумента: 50 руб, Конмментарий: доставка по ул.Вербная 64, забрать товар по ул. ул.Вербная 69
2. Контрагент: Дима, СуммаДокумента: 10 руб, Конмментарий: ул.Вербная 10
(2) написал вот так,не прокатило что-то ,точнее вообще комментарий не отобразился
Запрос.УстановитьПараметр("ДатаМаршрута", ДатаМаршрута);
Запрос.УстановитьПараметр("МаршрутГород", МаршрутГород);
//Рез = Запрос.Выполнить();
// Выборка = Рез.Выбрать();
ТаблицаРезультата = запрос.Выполнить().Выгрузить();
ТаблицаКонтрагентов = ТаблицаРезультата.Скопировать(,"Контрагент");
ТаблицаКонтрагентов.Свернуть("Контрагент");
НомерПервойСтроки = 1;
Для Каждого СтрокаКонтрагента Из ТаблицаКонтрагентов Цикл
СтрокиТаблицыРезультата = ТаблицаРезультата.НайтиСтроки(Новый Структура("Контрагент", СтрокаКонтрагента.Контрагент));
//----------
СтрокаКомментариев="";
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаКомментариев = СтрокаКомментариев + СтрокаРезультата.Комментарий;
КонецЦикла;
//----------
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаТабличнойЧасти = ТЧМаршруты2.Добавить();
СтрокаТабличнойЧасти.Контрагент = СтрокаРезультата.Контрагент;
СтрокаТабличнойЧасти.СуммаДокумента = СтрокаРезультата.СуммаДокумента;
СтрокаТабличнойЧасти.КолГрузМест = СтрокаРезультата.КолВоГрузМест;
СтрокаТабличнойЧасти.Имя = СтрокаРезультата.Контрагент.ИмяГрузополуч;
СтрокаТабличнойЧасти.Телефон = СтрокаРезультата.Контрагент.ТелПриемки;
СтрокаТабличнойЧасти.ПунктРазгрузки = СтрокаРезультата.Контрагент.ПунктРазгрузки;
СтрокаТабличнойЧасти.ВалютаДокумента = СтрокаРезультата.ВалютаДокумента;
СтрокаТабличнойЧасти.заявки = 1;
СтрокаТабличнойЧасти.УЕ ="";
СтрокаТабличнойЧасти.Рубли ="";
СтрокаТабличнойЧасти.ТТН ="";
СтрокаТабличнойЧасти.Примечание = СтрокаКомментариев;
//СтрокаТабличнойЧасти.Примечание =СтрокаРезультата.Комментарий;
Если СтрокаТабличнойЧасти.ВалютаДокумента = "BYN" тогда
СтрокаТабличнойЧасти.ТТН = "ТТН";
СуммаБун=СуммаБун + СтрокаТабличнойЧасти.СуммаДокумента;
СтрокаТабличнойЧасти.рубли = 0;
Иначе
СуммаУСД = СуммаУСД + СтрокаТабличнойЧасти.СуммаДокумента;
СтрокаТабличнойЧасти.ТТН = "";
СтрокаТабличнойЧасти.УЕ = СтрокаТабличнойЧасти.СуммаДокумента ;
СтрокаТабличнойЧасти.рубли = СтрокаТабличнойЧасти.СуммаДокумента * Курс ;
КонецЕсли;
Конеццикла;
ТЧМаршруты2.Свернуть("Контрагент, Имя, Телефон, ПунктРазгрузки, ВалютаДокумента" , "СуммаДокумента, КолГрузМест, УЕ, рубли, заявки, Примечание");
Конеццикла;
Показать
(1) Как то очень мудрено.
Не проще с итогами да по
То есть Формируем строку по которой группируем
ВЫБРАТЬ
ЗаказПокупателя.Контрагент.ИНН,+"/"+ЗаказПокупателя.Маршрут.Код+ "/"+ЗаказПокупателя.ВалютаДокумента.Код как Группировка
...
ИТОГИ Сумма(СуммаДокумента), Сумма(КолГрузМест) , Максимум(Контрагент) ///ивтд
ПО Группировка
Далее
Не проще с итогами да по
То есть Формируем строку по которой группируем
ВЫБРАТЬ
ЗаказПокупателя.Контрагент.ИНН,+"/"+ЗаказПокупателя.Маршрут.Код+ "/"+ЗаказПокупателя.ВалютаДокумента.Код как Группировка
...
ИТОГИ Сумма(СуммаДокумента), Сумма(КолГрузМест) , Максимум(Контрагент) ///ивтд
ПО Группировка
Далее
ВыборкаПоКонтрагенту = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоКонтрагенту.Следующий() Цикл
НоваяСтрока = Тз.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,ВыборкаПоКонтрагенту);
ВыборкаПрим = ВыборкаПоКонтрагенту.Выбрать();
Пока ВыборкаПрим.Следующий() Цикл
НоваяСтрока.Примечание = НоваяСтрока.Примечание + ВыборкаПрим.Комментарий;
КонецЦикла;
КонецЦикла;
Показать
Ещё нужна помощь,текст тот же вот :
Необходимо как-то сделать чтобы группировка была даже если (Контрагент один и тот же), а в одном стоит ТТН,а во втором нет,чтобы группировало тоже это,но при этом ТТН надпись ставилась. Как сделать можно?
Необходимо как-то сделать чтобы группировка была даже если (Контрагент один и тот же), а в одном стоит ТТН,а во втором нет,чтобы группировало тоже это,но при этом ТТН надпись ставилась. Как сделать можно?
Запрос.УстановитьПараметр("ДатаМаршрута", ДатаМаршрута);
Запрос.УстановитьПараметр("МаршрутГород", МаршрутГород);
//Рез = Запрос.Выполнить();
// Выборка = Рез.Выбрать();
ТаблицаРезультата = запрос.Выполнить().Выгрузить();
ТаблицаКонтрагентов = ТаблицаРезультата.Скопировать(,"Контрагент");
ТаблицаКонтрагентов.Свернуть("Контрагент");
НомерПервойСтроки = 1;
Для Каждого СтрокаКонтрагента Из ТаблицаКонтрагентов Цикл
СтрокиТаблицыРезультата = ТаблицаРезультата.НайтиСтроки(Новый Структура("Контрагент", СтрокаКонтрагента.Контрагент));
//----------
СтрокаКомментариев="";
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаКомментариев = СтрокаКомментариев + СтрокаРезультата.Комментарий;
КонецЦикла;
//----------
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаТабличнойЧасти = ТЧМаршруты2.Добавить();
СтрокаТабличнойЧасти.Контрагент = СтрокаРезультата.Контрагент;
СтрокаТабличнойЧасти.СуммаДокумента = СтрокаРезультата.СуммаДокумента;
СтрокаТабличнойЧасти.КолГрузМест = СтрокаРезультата.КолВоГрузМест;
СтрокаТабличнойЧасти.Имя = СтрокаРезультата.Контрагент.ИмяГрузополуч;
СтрокаТабличнойЧасти.Телефон = СтрокаРезультата.Контрагент.ТелПриемки;
СтрокаТабличнойЧасти.ПунктРазгрузки = СтрокаРезультата.Контрагент.ПунктРазгрузки;
СтрокаТабличнойЧасти.ВалютаДокумента = СтрокаРезультата.ВалютаДокумента;
СтрокаТабличнойЧасти.заявки = 1;
СтрокаТабличнойЧасти.УЕ ="";
СтрокаТабличнойЧасти.Рубли ="";
СтрокаТабличнойЧасти.ТТН ="";
СтрокаТабличнойЧасти.Примечание = СтрокаКомментариев;
//СтрокаТабличнойЧасти.Примечание =СтрокаРезультата.Комментарий;
Если СтрокаТабличнойЧасти.ВалютаДокумента = "BYN" тогда
СтрокаТабличнойЧасти.ТТН = "ТТН";
СуммаБун=СуммаБун + СтрокаТабличнойЧасти.СуммаДокумента;
СтрокаТабличнойЧасти.рубли = 0;
Иначе
СуммаУСД = СуммаУСД + СтрокаТабличнойЧасти.СуммаДокумента;
СтрокаТабличнойЧасти.ТТН = "";
СтрокаТабличнойЧасти.УЕ = СтрокаТабличнойЧасти.СуммаДокумента ;
СтрокаТабличнойЧасти.рубли = СтрокаТабличнойЧасти.СуммаДокумента * Курс ;
КонецЕсли;
Конеццикла;
ТЧМаршруты2.Свернуть("Контрагент, Имя, Телефон, ПунктРазгрузки, ВалютаДокумента, Примечание, ТТН" , "СуммаДокумента, КолГрузМест, УЕ, рубли, заявки");
Конеццикла;
Показать
(16)Наверное в Запросе поле ТТН вывести надо
Тогда было бы, приблизительно так
Тогда было бы, приблизительно так
ТаблицаКонтрагентов = ТаблицаРезультата.Скопировать(,"Контрагент,ТТН");
ТаблицаКонтрагентов.Свернуть("Контрагент,ТТН");
НомерПервойСтроки = 1;
Для Каждого СтрокаКонтрагента Из ТаблицаКонтрагентов Цикл
СтрокиТаблицыРезультата = ТаблицаРезультата.НайтиСтроки(Новый Структура("Контрагент,ТТН", СтрокаКонтрагента.Контрагент,СтрокаКонтрагента.ТТН));
//....
КонецЦикла;
(16)
И дальше:
Необходимо как-то сделать чтобы группировка была даже если (Контрагент один и тот же), а в одном стоит ТТН,а во втором нет,чтобы группировало тоже это,но при этом ТТН надпись ставилась. Как сделать можно?
Аналогично:
//----------
СтрокаКомментариев="";
СтрокаТТН="";
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаКомментариев = СтрокаКомментариев + СтрокаРезультата.Комментарий;
Если СтрокаРезультата.ВалютаДокумента = "BYN" Тогда
СтрокаТТН = "ТТН";
КонецЕсли;
КонецЦикла;
//----------
ПоказатьИ дальше:
//Если СтрокаТабличнойЧасти.ВалютаДокумента = "BYN" тогда
СтрокаТабличнойЧасти.ТТН = СтрокаТТН;
Если СтрокаТТН = "ТТН" Тогда
// СтрокаТабличнойЧасти.ТТН = "ТТН";
СуммаБун=СуммаБун + СтрокаТабличнойЧасти.СуммаДокумента;
СтрокаТабличнойЧасти.рубли = 0;
Иначе
СуммаУСД = СуммаУСД + СтрокаТабличнойЧасти.СуммаДокумента;
// СтрокаТабличнойЧасти.ТТН = "";
СтрокаТабличнойЧасти.УЕ = СтрокаТабличнойЧасти.СуммаДокумента ;
СтрокаТабличнойЧасти.рубли = СтрокаТабличнойЧасти.СуммаДокумента * Курс ;
КонецЕсли;
Показать
(18)сработало всё как нужно! супер!. Ещё вопрос,последний уже. Код ниже.
Необходимо на основе последнего, если (Контрагент один и тот же), а в одном стоит ТТН,а во втором нет,чтобы группировало тоже это,но при этом ТТН надпись ставилась.(Это мы сделали),но где не было надписи ТТН и оно сгруппировало,то сумму этого заказа закинуть в СтрокаТабличнойЧасти.УЕ
Необходимо на основе последнего, если (Контрагент один и тот же), а в одном стоит ТТН,а во втором нет,чтобы группировало тоже это,но при этом ТТН надпись ставилась.(Это мы сделали),но где не было надписи ТТН и оно сгруппировало,то сумму этого заказа закинуть в СтрокаТабличнойЧасти.УЕ
Запрос.УстановитьПараметр("ДатаМаршрута", ДатаМаршрута);
Запрос.УстановитьПараметр("МаршрутГород", МаршрутГород);
ТаблицаРезультата = запрос.Выполнить().Выгрузить();
ТаблицаКонтрагентов = ТаблицаРезультата.Скопировать(,"Контрагент");
ТаблицаКонтрагентов.Свернуть("Контрагент");
НомерПервойСтроки = 1;
Для Каждого СтрокаКонтрагента Из ТаблицаКонтрагентов Цикл
СтрокиТаблицыРезультата = ТаблицаРезультата.НайтиСтроки(Новый Структура("Контрагент", СтрокаКонтрагента.Контрагент));
//----------
СтрокаКомментариев="";
СтрокаТТН="";
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаКомментариев = СтрокаКомментариев + СтрокаРезультата.Комментарий;
Если СтрокаРезультата.ВалютаДокумента.Наименование = "BYN" Тогда
СтрокаТТН = "ТТН";
КонецЕсли;
КонецЦикла;
//----------
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаТабличнойЧасти = ТЧМаршруты1.Добавить();
СтрокаТабличнойЧасти.Контрагент = СтрокаРезультата.Контрагент;
СтрокаТабличнойЧасти.СуммаДокумента = СтрокаРезультата.СуммаДокумента;
СтрокаТабличнойЧасти.КолГрузМест = СтрокаРезультата.КолВоГрузМест;
СтрокаТабличнойЧасти.Имя = СтрокаРезультата.Контрагент.ИмяГрузополуч;
СтрокаТабличнойЧасти.Телефон = СтрокаРезультата.Контрагент.ТелПриемки;
СтрокаТабличнойЧасти.ПунктРазгрузки = СтрокаРезультата.Контрагент.ПунктРазгрузки;
СтрокаТабличнойЧасти.ВалютаДокумента = СтрокаРезультата.ВалютаДокумента;
СтрокаТабличнойЧасти.заявки = 1;
СтрокаТабличнойЧасти.УЕ ="";
СтрокаТабличнойЧасти.Рубли ="";
СтрокаТабличнойЧасти.Примечание = СтрокаКомментариев;
СтрокаТабличнойЧасти.ТТН = СтрокаТТН;
Если СтрокаТТН = "ТТН" Тогда
СуммаБун=СуммаБун + СтрокаТабличнойЧасти.СуммаДокумента;
СтрокаТабличнойЧасти.рубли = 0;
Иначе
СуммаУСД = СуммаУСД + СтрокаТабличнойЧасти.СуммаДокумента;
СтрокаТабличнойЧасти.УЕ = СтрокаТабличнойЧасти.СуммаДокумента ;
СтрокаТабличнойЧасти.рубли = СтрокаТабличнойЧасти.СуммаДокумента * Курс ;
КонецЕсли;
Конеццикла;
ТЧМаршруты1.Свернуть("Контрагент, Имя, Телефон, ПунктРазгрузки,Примечание, ТТН" , "СуммаДокумента, КолГрузМест, УЕ, рубли, заявки");
Конеццикла;
Показать
(21) Ваша задача легко решается, через СКД. Я так понял у Вас УТ 10.3. Вот набросал побыренькому. пример для типовой. доработайте под себя и пользуйтесь.
Прикрепленные файлы:
ПримерСКД.epf
(18)сделал так,правильно ли?
Запрос.УстановитьПараметр("ДатаМаршрута", ДатаМаршрута);
Запрос.УстановитьПараметр("МаршрутГород", МаршрутГород);
ТаблицаРезультата = запрос.Выполнить().Выгрузить();
ТаблицаКонтрагентов = ТаблицаРезультата.Скопировать(,"Контрагент");
ТаблицаКонтрагентов.Свернуть("Контрагент");
НомерПервойСтроки = 1;
Для Каждого СтрокаКонтрагента Из ТаблицаКонтрагентов Цикл
СтрокиТаблицыРезультата = ТаблицаРезультата.НайтиСтроки(Новый Структура("Контрагент", СтрокаКонтрагента.Контрагент));
//----------
СтрокаКомментариев="";
СтрокаТТН="";
СтрокаУЕ = 0;
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаКомментариев = СтрокаКомментариев +" "+ СтрокаРезультата.Комментарий;
Если СтрокаРезультата.ВалютаДокумента.Наименование = "BYN" Тогда
СтрокаТТН = "ТТН";
КонецЕсли;
КонецЦикла;
//----------
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаТабличнойЧасти = ТЧМаршруты1.Добавить();
СтрокаТабличнойЧасти.Контрагент = СтрокаРезультата.Контрагент;
СтрокаТабличнойЧасти.СуммаДокумента = СтрокаРезультата.СуммаДокумента;
СтрокаТабличнойЧасти.КолГрузМест = СтрокаРезультата.КолВоГрузМест;
СтрокаТабличнойЧасти.Имя = СтрокаРезультата.Контрагент.ИмяГрузополуч;
СтрокаТабличнойЧасти.Телефон = СтрокаРезультата.Контрагент.ТелПриемки;
СтрокаТабличнойЧасти.ПунктРазгрузки = СтрокаРезультата.Контрагент.ПунктРазгрузки;
СтрокаТабличнойЧасти.ВалютаДокумента = СтрокаРезультата.ВалютаДокумента;
СтрокаТабличнойЧасти.заявки = 1;
СтрокаТабличнойЧасти.УЕ ="";
СтрокаТабличнойЧасти.Рубли ="";
СтрокаТабличнойЧасти.Примечание = СтрокаКомментариев;
СтрокаТабличнойЧасти.ТТН = СтрокаТТН;
Если СтрокаРезультата.ВалютаДокумента.Наименование = "USD" Тогда
СтрокаУЕ = СтрокаРезультата.СуммаДокумента;
СтрокаТабличнойЧасти.УЕ = СтрокаУЕ;
КонецЕсли;
Если СтрокаТТН = "ТТН" Тогда
СуммаБун=СуммаБун + СтрокаТабличнойЧасти.СуммаДокумента;
// СтрокаТабличнойЧасти.рубли = 0;
Иначе
СуммаУСД = СуммаУСД + СтрокаТабличнойЧасти.СуммаДокумента;
СтрокаТабличнойЧасти.УЕ = СтрокаТабличнойЧасти.СуммаДокумента ;
СтрокаТабличнойЧасти.рубли = СтрокаТабличнойЧасти.СуммаДокумента * Курс ;
КонецЕсли;
Конеццикла;
ТЧМаршруты1.Свернуть("Контрагент, Имя, Телефон, ПунктРазгрузки,Примечание, ТТН" , "СуммаДокумента, КолГрузМест, УЕ, рубли, заявки");
Конеццикла;
Показать
(22)
К сожалению, основу программирования - построение алгоритма, вы не понимаете.
Раз у вас надпись "ТТН" и заполнение СтрокаТабличнойЧасти.УЕ должны выполняться по разным условиям, то надо формировать две переменных. Приблизительно так:
А во втором цикле - проверять обе переменные:
Очень может быть, что вторую часть я написал неправильно - голова сегодня трещит и трудно понять - что именно вам нужно. Но, надеюсь, вы поймете идею и переделаете под свои условия.
сделал так,правильно ли?
Вряд ли: СтрокаУЕ у вас обнуляется в первом цикле и больше никак не меняется до второго. А во втором цикле она получает значение СтрокаРезультата.СуммаДокумента и тут же переносится в СтрокаТабличнойЧасти.УЕ, безо всяких условий и проверок. То есть, по сути, не используется, ее можно вообще безболезненно исключить:
//СтрокаУЕ = СтрокаРезультата.СуммаДокумента;
//СтрокаТабличнойЧасти.УЕ = СтрокаУЕ;
СтрокаТабличнойЧасти.УЕ = СтрокаРезультата.СуммаДокумента;
К сожалению, основу программирования - построение алгоритма, вы не понимаете.
Раз у вас надпись "ТТН" и заполнение СтрокаТабличнойЧасти.УЕ должны выполняться по разным условиям, то надо формировать две переменных. Приблизительно так:
СтрокаКомментариев="";
СтрокаТТН="";
СтрокаУЕ="";
Для Каждого СтрокаРезультата Из СтрокиТаблицыРезультата Цикл
СтрокаКомментариев = СтрокаКомментариев + " " + СтрокаРезультата.Комментарий;
Если СтрокаРезультата.ВалютаДокумента.Наименование = "BYN" Тогда
СтрокаТТН = "ТТН";
ИначеЕсли СтрокаРезультата.ВалютаДокумента.Наименование = "USD" Тогда
СтрокаУЕ = "USD";
КонецЕсли;
КонецЦикла;
ПоказатьЕсли СтрокаУЕ = "USD" Тогда
СуммаУСД = СуммаУСД + СтрокаТабличнойЧасти.СуммаДокумента;
СтрокаТабличнойЧасти.УЕ = СтрокаТабличнойЧасти.СуммаДокумента ;
СтрокаТабличнойЧасти.рубли = СтрокаТабличнойЧасти.СуммаДокумента * Курс ;
ИначеЕсли СтрокаТТН = "ТТН" Тогда
СуммаБун=СуммаБун + СтрокаТабличнойЧасти.СуммаДокумента;
// СтрокаТабличнойЧасти.рубли = 0;
Иначе
СуммаУСД = СуммаУСД + СтрокаТабличнойЧасти.СуммаДокумента;
СтрокаТабличнойЧасти.УЕ = СтрокаТабличнойЧасти.СуммаДокумента ;
СтрокаТабличнойЧасти.рубли = СтрокаТабличнойЧасти.СуммаДокумента * Курс ;
КонецЕсли;
ПоказатьОчень может быть, что вторую часть я написал неправильно - голова сегодня трещит и трудно понять - что именно вам нужно. Но, надеюсь, вы поймете идею и переделаете под свои условия.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот