Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Формирование инф.строки по данным склада
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
arkin1976
Всем спасибо, я нашел решение, пришлось написать самому обработку по выгрузке и загрузке.
Появились новые проблемки, но они решаемые.

Хотелось спросить еще, но я так понимаю все хотят заработать денег, это естественно, я ничего против не имею.
У меня есть информационная строка. В ней отображаются Остатки, и цена
Мне надо вывести информационной строкой остатки по складах. Их у меня 4.
Либо же одной строкой все 4 склада - без разницы. Но именно информационной.


Функция Сформировать_информационную_строку()
    СтрокаЦены="";

    ТекТовар = ТекущийЭлемент();
    Если (ТекТовар.ЭтоГруппа()=0) И ((ПоказатьОстаткиЦену=0) ИЛИ (ИерархическийСписок()=0)) Тогда
        Если СтарыйТовар<>ТекТовар Тогда
            // инф. строку показываем в случае, если не показываем колонки
            
            Если ПустоеЗначение(КатегорияЦен)=0 Тогда
                ЭлЦена = глВернутьЦену(ТекТовар, КатегорияЦен);
                Если ПустоеЗначение(ЭлЦена)=0 Тогда
                    ВремЕдиница    = ЭлЦена.Единица.Получить(ВнКонтекст.ДатаДок);
                    ВремЦена    = ЭлЦена.Цена.Получить(внКонтекст.ДатаДок);
                    Если ВремЕдиница<>ТекТовар.ЕдиницаПоУмолчанию Тогда
                        ВремЦена = ?(ВремЕдиница.Коэффициент=0,ВремЦена*ТекТовар.ЕдиницаПоУмолчанию.Коэффициент/1,ВремЦена*ТекТовар.ЕдиницаПоУмолчанию.Коэффициент/ВремЕдиница.Коэффициент);
                    КонецЕсли;
                    ВремВалюта = ЭлЦена.Валюта.Получить(внКонтекст.ДатаДок);
                    СтрокаЦены = ""+КатегорияЦен+" цена "+СокрЛП(Формат(ВремЦена,глФорматСуммы))+" "+СокрЛП(ВремВалюта.Кратко)+"; ";
                Иначе
                    СтрокаЦены = ""+КатегорияЦен+" цена не задана; ";
                КонецЕсли;
            КонецЕсли;

            ТекТовар = ТекущийЭлемент();
            Если пустоеЗначение(Склад)=0 Тогда
                ВремКолво = ОстТоваров.СводныйОстаток(Фирма,ТекТовар,Склад,"ОстатокТовара");
            Иначе
                ВремКолво = ОстТоваров.СводныйОстаток(Фирма,ТекТовар,,"ОстатокТовара");
            КонецЕсли;
            ВремРезерв = РезТоваров.СводныйОстаток(ТекТовар,,"РезервТовара");    
            Если ТекТовар.ЕдиницаПоУмолчанию.Коэффициент > 1 Тогда
                ВремКолво     = ВремКолво / ТекТовар.ЕдиницаПоУмолчанию.Коэффициент;
                ВремРезерв     = ВремРезерв / ТекТовар.ЕдиницаПоУмолчанию.Коэффициент;
            КонецЕсли;
            ИнформационнаяСтрока = СтрокаЦены+
                                   "Остаток: "+СокрЛП(Формат(ВремКолво, глФорматКоличестваВформах))+" "+ТекТовар.ЕдиницаПоУмолчанию.Единица+"; "+
                                   "Резерв: "+СокрЛП(Формат(ВремРезерв, глФорматКоличестваВформах))+" "+ТекТовар.ЕдиницаПоУмолчанию.Единица;
            СтарыйТовар=ТекТовар;
        КонецЕсли;
    Иначе
        ИнформационнаяСтрока="";
    КонецЕсли;
    Возврат ИнформационнаяСтрока;
КонецФункции

Из данного примера видно что данные по остатку она берет из выбраного склада или по всем если значение склада 0. Как взять значение по конкретному складу, чтобы вставить в информационную строку.
Может я что неправильно сформулировал, поправьте.

То есть на выводе чтобы было примерно так.

Склад1 - 10 шт.
Склад2 - 5 шт.
Склад3 - 15 шт.
Склад4 - 20шт.


Там стоит условие на выбор склада, мне это условие не надо. Надо жестко чтобы показывало по нужному складу, который будет оговорен в модуле.
MATEVI
2 arkin1976

 ! 

Ознакомьтесь с правилами! В следующий раз все, что не по правилам будет удалено!
 
Pepe
Количество товара у вас рассчитывается и зависит от склада в
               ВремКолво = ОстТоваров.СводныйОстаток(Фирма,ТекТовар,Склад,"ОстатокТовара");

Ее и можете использовать при выводе информационной строки меняя переменную "Склад". Вы привели только одну процедуру, а рассчет отстатков зависит от выбора значения склада и может где-то еще надо будет что-то подправить.
mister-x
знаходимо необхідний склад (по коду чи по назві, краще по коду або іншій унікальній ознаці) і присвоюємо його змінні Склад в цьому коді:
Цитата
Если пустоеЗначение(Склад)=0 Тогда
                ВремКолво = ОстТоваров.СводныйОстаток(Фирма,ТекТовар,Склад,"ОстатокТовара");
            Иначе
                ВремКолво = ОстТоваров.СводныйОстаток(Фирма,ТекТовар,,"ОстатокТовара");
            КонецЕсли;
див. методи довідника НайтиПоКоду, НайтиПоНаименованию, НайтиПоРеквизиту

+
Цитата(Pepe @ 23.06.12, 14:00) необходимо зарегистрироваться для просмотра ссылки
и может где-то еще надо будет что-то подправить.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.