Здравствуйте !
УПП, редакция 1.3 (1.3.39.1)
Помогите, пожалуйста, реализовать следующее:
Есть документ, в котором имеется таб. поле "Заказы".
Нужно добавить колонку в которой будет суммироваться количество товара с нарастающим итогом, пока артикул номенклатуры добавляемых строк одинаковый.
Если в следующей строке другой артикул, то и значение итогового поля сбрасывается на итог по новому артикулу.
Пример:
1. Заказ1 - Арт1 - кол1 - Ит=кол1
2. Заказ2 - Арт1 - кол2 - Ит=кол1+кол2
......................................................
n. Заказn - Арт.1 - колn - Ит=кол1+кол2+...+колn
n+1. Заказ(n+1) - Арт.2 - Кол(n+1) - Ит=Кол(n+1)
n+2. Заказ(n+2) - Арт.2 - Кол(n+2) - Ит=Кол(n+1)+Кол(n+2)
И т.д.
Для упрощения задачи, артикула в разброс добавляться не будут, а строго по порядку.
Пробовал через свойство ПриПолученииДанных() - не получилось.
Как можно сделать обход строк таб. части сравнивая с предыдущей строкой ?
А зачем вообще сравнивать?
ВыгружайТЕ таб.поле в таблицузначений, делайТЕ к ней запрос, а вот уже в запросе суммируйТЕ итоги по заказу / артикулу.
! | http://pro1c.org.ua/index.php?act=announce&id=2: 1 |
ТЗ = Заказы.Выгрузить();
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЗаявкаНаОтгрузкуЗаказовПокупателейЗаказы.ЗаказПокупателя КАК ЗаказПокупателя,
| ЗаявкаНаОтгрузкуЗаказовПокупателейЗаказы.Номенклатура КАК Номенклатура,
| ЗаявкаНаОтгрузкуЗаказовПокупателейЗаказы.Количество КАК Количество,
| ЗаявкаНаОтгрузкуЗаказовПокупателейЗаказы.КоличествоМ2 КАК КоличествоМ2,
| ЗаявкаНаОтгрузкуЗаказовПокупателейЗаказы.КоличествоПодбор КАК КоличествоПодбор
|ПОМЕСТИТЬ ЗаявкаНаОтгрузкуЗаказовПокупателейЗаказы
|ИЗ
| &ЗаявкаНаОтгрузкуЗаказовПокупателейЗаказы КАК ЗаявкаНаОтгрузкуЗаказовПокупателейЗаказы";
Запрос.УстановитьПараметр("ЗаявкаНаОтгрузкуЗаказовПокупателейЗаказы", ТЗ);
Результат = Запрос.Выполнить();
Запрос = Новый Запрос("ВЫБРАТЬ * ПОМЕСТИТЬ ЗаявкаНаОтгрузкуЗаказовПокупателейЗаказы ИЗ &ТЗ КАК Т");
МВТ = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МВТ;
Запрос.УстановитьПараметр("ТЗ", ТЗ);
Запрос.Выполнить();
Танцы с бубном. Задача по своей постановке неправильная - если лепить такие "хотелки"....
Посмотрите, может пригодится.
&НаКлиенте
Процедура ЗаполнитьКоличествоАртикулов(Команда)
КолАрт=1;
Сч1=1;
Артикулы=Новый Массив;
КоличествоСтрок = Объект.Товары.Количество();
Мас=Новый Массив;
Объект.Товары[0].КоличествоАртикулов=КолАрт;
Для Сч=1 По КоличествоСтрок Цикл
Мас.Добавить(Объект.Товары[Сч-1].Номенклатура);
КонецЦикла;
Артикулы= ПолучитьАртикул(Мас, КоличествоСтрок);
Для Сч=1 По КоличествоСтрок+1 Цикл
Для Сч1=Сч1+1 По КоличествоСтрок Цикл
Если Артикулы[Сч1-2]=Артикулы[Сч1-1] Тогда
КолАрт=КолАрт+1;
Объект.Товары[Сч1-1].КоличествоАртикулов=КолАрт;
Иначе КолАрт=1;
Объект.Товары[Сч1-1].КоличествоАртикулов=КолАрт;
Сч=Сч+1;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ПолучитьАртикул(Мас,Количество)
МасАртикул=Новый Массив;
Для К=1 По Количество Цикл
МасАртикул.Добавить(Мас[К-1].Артикул);
КонецЦикла;
Возврат МасАртикул;
КонецФункции
Сделайте эту хрень в печатной форме, а не в ТЧ документа.
Выгрузили ТЧ, отсортировали, простой цикл с проверкой условия и накоплением итога.
В печатной форме сделал, так видите ли надо лишние кнопки нажимать. Соглашусь, что надо было НЕ лепить такие "хотелки"....
Спасибо всем ! Получилось через менеджер временных таблиц.
Тему можно закрывать.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua