Добрый вечер !
Имеется регистр ТовЗапас (товарный запас) со следующими измерениями и ресурсами :
Измерения : Товар,Склад,Мол,Контрагент.
Ресурсы : Количество,Стоимость.
Как в нижеуказанной процедуре вывести в секции "Cтрока" значение измерений Склад и Мол?
Процедура Сформировать()
СпТов=СоздатьОбъект("Справочник.Материалы");
Рег=СоздатьОбъект("Регистр.ТовЗапас");
Таб=СоздатьОбъект("Таблица");
ИтогСк=0;
ИтогГР=0;
колстр=1;
Сптов.ПорядокКодов();
Сптов.НайтиПоКоду(СокрЛП(Склад.Код));
ТС=Сптов.ТекущийЭлемент();
сптов.ИспользоватьДату(ДатаПер);
сптов.ИспользоватьРодителя(ТС);
Если ПустаяСтрока(Грмат.код)=0 Тогда
СпТов.ВыбратьЭлементыПоРеквизиту("ГруппаМатериалов",Грмат);
иначе
СпТов.ВыбратьЭлементы();
конецЕсли;
Рег.ВременныйРасчет();
РассчитатьРегистрыНа(ДатаПер);
Таб.ВывестиСекцию("Шапка");
Если Сжато=2 тогда
Таб.ВывестиСекцию("Графы");
иначе
Таб.ВывестиСекцию("ШапкаГр");
КонецЕсли;
СпТов.ПолучитьЭлемент();
Группа=СпТов.ГруппаМатериалов;
Таб.ВывестиСекцию("Группа");
ост=Рег.СводныйОстаток(СпТов.код,Склад,,,"Количество");
ИтогГр=ИтогГр+ост*Сптов.цена;
ИтогСк=ИтогСк+ост*Сптов.цена;
Если Сжато=2 тогда
если ост> спТов.нормазапдень тогда
Таб.ВывестиСекцию("Строка"); //как здесь из регистра прочитать значения измерений Склад и МОЛ ?
конецесли;
колстр=колстр+1;
КонецЕсли;
Пока СпТов.ПолучитьЭлемент()>0 Цикл
Если СпТов.ПометкаУдаления()=0 тогда
Если Группа<>спТов.ГруппаМатериалов тогда
если итоггр>0 тогда
Таб.ВывестиСекцию("ИтогГР");
конецесли;
колстр=колстр+1;
Если колстр>63 тогда
таб.НоваяСтраница();
Таб.ВывестиСекцию("Графы");
колстр=0;
конецесли;
ИтогГР=0;
Таб.ВывестиСекцию("Группа");
конецЕсли;
ост=Рег.СводныйОстаток(СпТов.код,Склад,,,"Количество");
ИтогГр=ИтогГр+ост*Сптов.цена;
ИтогСк=ИтогСк+ост*Сптов.цена;
Если Сжато=2 тогда
если ост> спТов.нормазапдень тогда
Таб.ВывестиСекцию("Строка"); //как здесь из регистра прочитать значения измерений Склад и МОЛ ?
конецесли;
КонецЕсли;
конецЕсли;
Группа=спТов.ГруппаМатериалов;
КонецЦикла;
Таб.ВывестиСекцию("ИтогГР");
Если ПустаяСтрока(Грмат.код)=1 тогда
Таб.ВывестиСекцию("ИтогСк");
КонецЕсли;
Таб.ТолькоПросмотр(1);
Таб.Опции(0, 0, 5,0 ,,"ОСВР");
Таб.ОбластьПечати(2);
Таб.ПовторятьПриПечатиСтроки(3,3);
Таб.ПараметрыСтраницы(1,,,,,,,,, 1);
Таб.Показать("", "");
andrew76 @ Сегодня, 18:26
,
Добрый день! Сформулируйте еще раз! Вы хотите получить данные из регистра? А справочников материалов зачем Вам? Сама задача в чем заключается? Вообще можно запросом к регистру все это получить
denis84 @ Сегодня, 21:19
,
отчет не мной писан,времени особо нет разбираться,но нужно.Да,нужно получить остатки из регистра :
ост=Рег.СводныйОстаток(СпТов.код,Склад,,,"Количество");
andrew76 @ Сегодня, 18:26
,
Если в Вашу процедуру вписывать, то по -моему можно так
Склад = рег.склад;
МОЛ = рег.МОЛ
Таб.ВывестиСекцию("Строка");
Склад=Рег.Склад;
ост=Рег.СводныйОстаток(СпТов.код,Склад,,,"Количество");
andrew76 @ Сегодня, 20:43
,
Надо вспоминать))
ОстаткиТоваров.Количество = ОстТоваров.Остаток(Фирма,ТекТов,Склад,"ОстатокТовара");
ОстаткиТоваров.Количество = ОстТоваров.СводныйОстаток(Фирма,ТекТов,,"ОстатокТовара");
//*******************************************
Процедура Сформировать()
Запр = СоздатьОбъект("Запрос");
Таб = СоздатьОбъект("Таблица");
ПечФорма = "ТаблицаШир_НеБУ";
Таб.ИсходнаяТаблица(ПечФорма);
ТекстЗапр = "";
Заг = "";
Заг1 = "";
Заг2 = "";
ПозицияОтчета = ДатаПо;
ТекстЗапр = "
|Период с ДатаС по ДатаПо;
|Фир = Регистр.Остатки.Фирма;
|Скл = Регистр.Остатки.МестоХранения;
|ТМЦ = Регистр.Остатки.ТМЦ;";
|Док = Регистр.Остатки.ТекущийДокумент;
|Кво = Регистр.Остатки.ОстатокТовара;;
|Условие (Фир = выбФирма);";
|Условие (Скл в ВыбСклад);
|Условие (Скл.Тип = Перечисление.ТипыМестХранения.Склад);
|Условие (ТМЦ в ВыбТМЦ);
|Группировка Скл;
|Группировка ТМЦ упорядочить по ТМЦ.Код без групп;
|Функция НОКво = НачОст(Кво);
|Функция КОКво = КонОст(Кво);
|Функция ПКво = Приход(Кво);
|Функция РКво = Расход(Кво);";
Если ВыбТМЦ.РазмерСписка() = 0 Тогда
Заг1 = Заг1 + "По всім ТМЦ. ";
Иначе
Заг1 = Заг1 + "По ТМЦ зі списку: " + ВыбТМЦ.ВСтрокуСРазделителями() + ". ";
КонецЕсли;
Если ВыбСклад.Выбран() = 0 Тогда
Заг2 = Заг2 + "По всім складам.";
Иначе
Заг2 = Заг2 + "По складу " + СокрЛП(ВыбСклад.ИсторическоеНаименование.Получить(ДатаПо)) + ".";
КонецЕсли;
Если Запр.Выполнить(ТекстЗапр) = 0 Тогда
Возврат;
КонецЕсли;
Таб.ВывестиСекцию("Шапка");
Пока Запр.Группировка("Скл") = 1 Цикл
Таб.ВывестиСекцию("Скл");
текНом = 0;
Пока Запр.Группировка("ТМЦ") = 1 Цикл
Если Запр.ТМЦ.Выбран() = 0 Тогда
Продолжить;
КонецЕсли;
Если Запр.ТМЦ.ЭтоГруппа() = 1 Тогда
Иначе
текНом = текНом + 1;
УчЦена = Запр.ТМЦ.УчетнаяЦена.Получить(ДатаПо);
Таб.ВывестиСекцию("ТМЦ");
КонецЕсли;
КонецЦикла;
Если Запр.Скл.ЭтоГруппа() = 0 Тогда
Таб.ВывестиСекцию("ИтСклад");
ИтКво = ИтКво + текНом;
текНом = 0;
КонецЕсли;
КонецЦикла;
Таб.ВывестиСекцию("Итог");
Таб.Опции(0,0,Таб.ВысотаСекции("Шапка"),0);
Таб.ТолькоПросмотр(1);
Таб.ПараметрыСтраницы(2,95,,3,3,3,3,,,,,);
Таб.Показать("Оборотка ТМЦ по складам");
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua