Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как вытянуть значения измерений из регистра ? (1c 7.7.027)          
andrew76 Подменю пользователя
сообщение 14.07.20, 17:26
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 437
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Добрый вечер !

Имеется регистр ТовЗапас (товарный запас) со следующими измерениями и ресурсами :
Измерения : Товар,Склад,Мол,Контрагент.
Ресурсы : Количество,Стоимость.
Как в нижеуказанной процедуре вывести в секции "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);
    Таб.Показать("", "");

denis84 Подменю пользователя
сообщение 14.07.20, 18:19
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Из: Украина
Спасибо сказали: 133 раз
Рейтинг: 132.5

andrew76 @ Сегодня, 18:26 * ,
Добрый день! Сформулируйте еще раз! Вы хотите получить данные из регистра? А справочников материалов зачем Вам? Сама задача в чем заключается? Вообще можно запросом к регистру все это получить

andrew76 Подменю пользователя
сообщение 14.07.20, 18:50
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 437
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

denis84 @ Сегодня, 21:19 * ,

отчет не мной писан,времени особо нет разбираться,но нужно.Да,нужно получить остатки из регистра :
ост=Рег.СводныйОстаток(СпТов.код,Склад,,,"Количество");

Нужно в строчку вывести номенклатурный номер,цену,количество,сумму,наименование склада,мол(мат.отв.лицо)
Как можно это сделать запросом ?

denis84 Подменю пользователя
сообщение 14.07.20, 19:18
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Из: Украина
Спасибо сказали: 133 раз
Рейтинг: 132.5

andrew76 @ Сегодня, 18:26 * ,
Если в Вашу процедуру вписывать, то по -моему можно так

Склад = рег.склад;
МОЛ = рег.МОЛ
Таб.ВывестиСекцию("Строка");


склад и мол - это выражения на печатной форме в секции "строка".

Запросом можно, напишу позже. опробуйте этот вариант пока.

andrew76 Подменю пользователя
сообщение 14.07.20, 19:43
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 437
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

denis84 @ Сегодня, 22:18 * ,

Склад=Рег.Склад;


выводится пустая строка

andrew76 @ Сегодня, 22:33 * ,

наверное после применения метода СводныйОстаток,это не работает

ост=Рег.СводныйОстаток(СпТов.код,Склад,,,"Количество");

denis84 Подменю пользователя
сообщение 14.07.20, 20:00
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 421
Из: Украина
Спасибо сказали: 133 раз
Рейтинг: 132.5

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,,,,,);
    Таб.Показать("Оборотка ТМЦ по складам");
КонецПроцедуры


Сообщение отредактировал denis84 - 14.07.20, 20:12

Спасибо сказали: andrew76,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 22:25
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!