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

Хранилище

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

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



> Конфигурирование, билет "Управленческая цена"          
Hokum Подменю пользователя
сообщение 09.10.13, 19:40
Сообщение #1

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

Сдавал пару лет назад, попался этот билет.
Я готовился по российским билетам, они совпадают почти полностью, мой не исключение.

Краткое изложение задания
В качестве исходной использовать типовую конфигурацию «Управление торговлей» Необходимо ввести в перечень существующих номенклатурных цен понятие «УправленческаяЦена». Использование ее предполагается для суммовых оценок остатков и движения товаров. Причем предполагается, что данные вид цен может довольно часто изменяться (но не чаще одного раза в день). Т.е. необходимо обеспечить оформление отчетов, связанных с остатками и движениями товаров по еще одному показателю «СуммаУправленческая». Показатель рассчитывается как: «УправленческаяЦена»*Количество.
Как минимум, данные отчеты должны формироваться из универсальных «ОтчетОстаткиИОбороты» и «ОтчетДиаграмма».

Концепция решения:
ЦенуХ можно хранить в периодическом регистре сведений «ЦеныНоменклатуры» (периодичность день). Для этого необходимо добавить в справочник «ТипыЦенНоменклатуры» предопределенный тип «ЦенаХ». Далее, документом «УстановкаЦенНоменклатуры» установить ценыХ для номенклатуры. Необходимо изменить запросы отчетов «ОстаткиИОбороты» и «СписокКроссТаблица» таким образом, чтобы соединять записи регистра накопления, по которому формируется отчет, с регистром сведений «ЦеныНоменклатуры» и получать тем самым СуммуХ. Причем, получать суммуХ нужно только для тех регистров, в которых есть измерение типа «СправочникСсылка.Номенклатура».

Последовательность решения:
1. Добавляем в справочник «ТипыЦенНоменклатуры» предопределенный элемент «ЦенаХ».
2. Документом «УстановкаЦенНоменклатуры» регистрируем цены с типом «ЦенаХ».
3. Общий модуль «Отчеты», процедура «ЗаполнитьНачальныеНастройкиПоМетаданнымРегистра».
В цикле по измерениям ставим условие на тип измерения и пишем кусок кода из цикла по ресурсам, меняя только ИмяПоля, ПредставлениеПоля, ОписаниеПоля,ФорматнуюСтроку и Валюту:
Если МетаданныеРегистра.Измерения[Инд].Тип.СодержитТип(Тип("СправочникСсылка.Номенклатура")) Тогда        
        
        ИмяПоля           = "СуммаХ";
        ПредставлениеПоля = "СуммаХ";
        ОписаниеПоля      = "ЦенаХ * Количество#";
        ВклПоУмолчанию    = Истина;
        ФорматнаяСтрока   = "ЧЦ=15; ЧДЦ=2";
        СтрИзмерения      = "";
        СтдВалюта         = "УПР";

        Если ТипОтчета = "СписокКроссТаблица" Тогда
            Контекст.мСтруктураСвязиПоказателейИИзмерений.Вставить(ИмяПоля, Новый Структура(СтрИзмерения));
        КонецЕсли;

        Если ПустаяСтрока(ОписаниеПоля) Тогда
            ОписаниеПоля = ИмяПоля;
        КонецЕсли;

        Если (ТипОтчета = "СписокКроссТаблица") ИЛИ (ТипОтчета = "Диаграмма") Тогда
            ТекстПоляПоказатели = ТекстПоляПоказатели + ",
            |    " + СтрЗаменить("СУММА("+ОписаниеПоля+")","#", ТипПоляРегистра) + " КАК " + ИмяПоля;

            ТекстПоляИтоговЗапроса = ТекстПоляИтоговЗапроса + ",
            |    СУММА(" + ИмяПоля + ")";

            ТекстПоляУпорядочивания = ТекстПоляУпорядочивания + ",
            |    " + ИмяПоля;

            СтруктураПредставлениеПолей.Вставить(ИмяПоля, ПредставлениеПоля);
        ИначеЕсли ТипОтчета = "ОстаткиИОбороты" Тогда
            ТекстПоляПоказатели = ТекстПоляПоказатели + ",
            |    " + СтрЗаменить("СУММА("+ОписаниеПоля+")","#", "НачальныйОстаток") + " КАК " + ИмяПоля + "НачальныйОстаток,
            |    " + СтрЗаменить("СУММА("+ОписаниеПоля+")","#", "КонечныйОстаток")  + " КАК " + ИмяПоля + "КонечныйОстаток,
            |    " + СтрЗаменить("СУММА("+ОписаниеПоля+")","#", "Приход")           + " КАК " + ИмяПоля + "Приход,
            |    " + СтрЗаменить("СУММА("+ОписаниеПоля+")","#", "Расход")           + " КАК " + ИмяПоля + "Расход";

            ТекстПоляИтоговЗапроса = ТекстПоляИтоговЗапроса + ",
            |    СУММА(" + ИмяПоля + "НачальныйОстаток),
            |    СУММА(" + ИмяПоля + "КонечныйОстаток),
            |    СУММА(" + ИмяПоля + "Приход),
            |    СУММА(" + ИмяПоля + "Расход)";

            ТекстПоляУпорядочивания = ТекстПоляУпорядочивания + ",
            |    " + ИмяПоля + "НачальныйОстаток,
            |    " + ИмяПоля + "КонечныйОстаток,
            |    " + ИмяПоля + "Приход,
            |    " + ИмяПоля + "Расход";

            
            СтруктураПредставлениеПолей.Вставить(ИмяПоля+"НачальныйОстаток", ПредставлениеПоля + " нач.ост.");
            СтруктураПредставлениеПолей.Вставить(ИмяПоля+"КонечныйОстаток", ПредставлениеПоля + " кон.ост." );
            СтруктураПредставлениеПолей.Вставить(ИмяПоля+"Приход", ПредставлениеПоля+" приход");
            СтруктураПредставлениеПолей.Вставить(ИмяПоля+"Расход", ПредставлениеПоля+" расход");
        КонецЕсли;
        // Показатели заносятся в специальную таблицу
        СтрПоказатели = Контекст.мТаблицаПоказатели.Добавить();
        СтрПоказатели.ИмяПоля           = ИмяПоля;
        СтрПоказатели.ПредставлениеПоля = ПредставлениеПоля;
        СтрПоказатели.ФорматнаяСтрока   = ФорматнаяСтрока;

        // ... и добавляются в список
        Показатель = Контекст.Показатели.Добавить();
        Показатель.Имя           = ИмяПоля;
        Показатель.Представление = ПредставлениеПоля;
        Показатель.Использование = ВклПоУмолчанию;
                
КонецЕсли;



4. Общий модуль «Отчеты», процедура «ЗаполнитьНачальныеНастройкиПоМетаданнымРегистра» делаем левое соединение с регистром сведений «ЦеныНоменклатуры», причем соединяем не только по номенклатуре, но и обязательно по характеристикам. Накладываем условие на регистр по типу цен «ЦенаХ».
    |ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |    ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаХ,
    |    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК НоменклатураХ,
    |    ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаХ
    |        ИЗ
    |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ТипЦен = &Упр) КАК ЦеныНоменклатурыСрезПоследних) КАК ВложенныйЗапрос
    |    ПО ВложенныйЗапрос.НоменклатураХ = ТаблицаРегистра.Номенклатура и ВложенныйЗапрос.ХарактеристикаХ = ТаблицаРегистра.ХарактеристикаНоменклатуры
    |//СОЕДИНЕНИЯ";



5. Устанавливаем необходимые параметры построителю отчета:
ПостроительОтчета.Параметры.Вставить("Упр",Справочники.ТипыЦенНоменклатуры.Управленческая);



Получил 5-

Спасибо сказали: Batchir, Vofka, Егор Динин,

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


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

 

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