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

Хранилище

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

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



> Проблемка с обработкой          
Flexy Подменю пользователя
сообщение 20.07.11, 8:56
Сообщение #1

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Привет Уважаемые.Делаю обработку прайс-лист для ТИС.
Столкнулся с проблемой.У одного товара есть заполненные Реквизиты: Цвет, Тип, Алк, Ёмкость и КолВоВупаковке.Забил их чисто для тестирования
обработки.А сама проблема в том, что это реквизиты в печатной форме подставляются на всю Группу (ТоргМарка), хотя в карточке других товаров в этой группе они не заполнены.Где копать?
Сам код:
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;  
    Если ПустоеЗначение(ВыбКатегорияЦены) = 1 Тогда
        Сообщить("Не выбрана категория цены!!!","!!!");
        возврат;
    КонецЕсли;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    
        ТекстЗапроса =
        "//{{ЗАПРОС(ЗапросПоСправочнику)
        |Товар = Справочник.Номенклатура.ТекущийЭлемент;
        |Код = Справочник.Номенклатура.Код;
        |Цвет = Справочник.Номенклатура.ЦветВПрайс;
        |Тип = Справочник.Номенклатура.ТипВПрайс;
        |Алк = Справочник.Номенклатура.АлкВПрайс;
        |Ёмкость = Справочник.Номенклатура.ЁмкВПрайс;
        |КоличествоВУпаковке = Справочник.Номенклатура.КолВоВПрайс;
        |Родитель = Справочник.Номенклатура.Родитель;
        |Группировка Родитель Упорядочить по Родитель.Сортировка;
        |Группировка Товар Упорядочить по Товар.Сортировка без Групп;
        |"+?(ПустоеЗначение(МФВыбТовары)=1,"","Условие(Товар в МФВыбТовары);")+"
        |"//}}ЗАПРОС
;
    
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
    Таб = СоздатьОбъект("Таблица");
    СП = СоздатьОбъект("СписокЗначений");
    Таб.ИсходнаяТаблица("Сформировать");
    Таб.ВывестиСекцию("Шапка");
    Таб.ВывестиСекцию("Заголовок");
    Пока Запрос.Группировка(1) = 1 Цикл
        Если Запрос.Родитель.НеВыводитьВПрайс = 1 Тогда
            Продолжить;
            КонецЕсли;
        Если Запрос.Родитель.Уровень() = 2 Тогда
            Таб.ВывестиСекцию("ВидТовара");
        ИначеЕсли Запрос.Родитель.Уровень() = 3 Тогда
            Таб.ВывестиСекцию("ТоргМарка");
        Пока Запрос.Группировка(2) = 1 Цикл
            СП.ДобавитьЗначение(Запрос.Товар);
            КонецЦикла;
        КонецЕсли;
        
    
    
     Если Сп.РазмерСписка() = 0 Тогда
            Продолжить;
        КонецЕсли;
    
    Список = СП.РазмерСписка();
    Для н=1 По Список Цикл
        Наименование = СП.ПолучитьЗначение(н);
        ЦенаЦены = глВернутьЦену(Сп.получитьЗначение(н), ВыбКатегорияЦены);
        Если ПустоеЗначение(ЦенаЦены) = 0 Тогда
                Цена = ЦенаЦены.Цена.получить(РабочаяДата());  
                Иначе
                Цена = "";
            КонецЕсли;
            
            Если Инд = 1 Тогда
                ЦенаИнд = Число(Наименование.Идентикатив.Получить(РабочаяДата()));        
                Если (ЦенаИнд > Число(Цена)) Тогда
                    Цена = ЦенаИнд;    
                КонецЕсли;
            КонецЕсли;
            Таб.ВывестиСекцию("Товар");
        КонецЦикла;
        
        СП.УдалитьВсе();
        КонецЦикла;

5_kopeek Подменю пользователя
сообщение 20.07.11, 9:10
Сообщение #2

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Возникли вопросы:
1. Зачем Вы заносите товары в список, а потом получаете интересующие Вас значения реквизитов, а не делаете это непосредственно при получении товара из запроса?
2. Хотелось бы видеть формулы в таблице, которые возвращают реквизиты одного товара для всех остальных товаров.

Flexy Подменю пользователя
сообщение 20.07.11, 9:23
Сообщение #3

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(5_kopeek @ 20.07.11, 8:10) *
Возникли вопросы:
1. Зачем Вы заносите товары в список, а потом получаете интересующие Вас значения реквизитов, а не делаете это непосредственно при получении товара из запроса?

Реквизиты я получаю запросом.Т.е. Запрос.Цвет, Запрос.Тип и т.д.
В список я заношу товары, что бы получить их цену, согласно выбранному Типу Цен.
Возможно не правильный алгоритм выбрал.Может вы подскажете как это лучше реализовать?

Acid Подменю пользователя
сообщение 20.07.11, 9:25
Сообщение #4

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

Список Убить!!!

Выгрузите результат запроса в таблицу значений. И уже в ней сможете посмотреть что выбралось.

тз = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(тз);
тз.ВыбратьСтроку();


Signature

Документируйте Код! мать вашу...


Flexy Подменю пользователя
сообщение 20.07.11, 9:31
Сообщение #5

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

В ТЗ я получаю только родитель и товар.

5_kopeek Подменю пользователя
сообщение 20.07.11, 9:32
Сообщение #6

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Зачем в таблицу выгружать? Можно все непосредственно в цикле обхода результатов запроса.
Нижняя строка -- это секция Товар? На момент вывода этой секции Вы уже вышли из цикла обхода результатов второй группировки, а обходите циклом список значений, поэтому существует правильное позиционирование на элементе списка, а не на значении переменной запроса. Т.е. надо было бы
выводить Наименование.ЦветВПрайсе и т.д. Щас без списка сделаю.

Flexy Подменю пользователя
сообщение 20.07.11, 9:38
Сообщение #7

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(5_kopeek @ 20.07.11, 8:32) *
Нижняя строка -- это секция Товар?

Так точно wink.gif

5_kopeek Подменю пользователя
сообщение 20.07.11, 9:41
Сообщение #8

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    Таб.ВывестиСекцию("Шапка");
    Таб.ВывестиСекцию("Заголовок");
    Пока Запрос.Группировка(1) = 1 Цикл
        Если Запрос.Родитель.НеВыводитьВПрайс = 1 Тогда
            Продолжить;
        КонецЕсли;
        Если Запрос.Родитель.Уровень() = 2 Тогда
            Таб.ВывестиСекцию("ВидТовара");
        ИначеЕсли Запрос.Родитель.Уровень() = 3 Тогда
            Таб.ВывестиСекцию("ТоргМарка");
            Пока Запрос.Группировка(2) = 1 Цикл  
                // Изменено 5_копеек (начало)
                Товар=Запрос.Товар;
                ЦенаЦены = глВернутьЦену(Товар, ВыбКатегорияЦены);
                Если ПустоеЗначение(ЦенаЦены) = 0 Тогда
                    Цена = ЦенаЦены.Цена.получить(РабочаяДата());  
                Иначе
                    Цена = "";
                КонецЕсли;
                
                Если Инд = 1 Тогда
                    ЦенаИнд = Число(Товар.Идентикатив.Получить(РабочаяДата()));        
                    Если (ЦенаИнд > Число(Цена)) Тогда
                        Цена = ЦенаИнд;    
                    КонецЕсли;
                КонецЕсли;
                Таб.ВывестиСекцию("Товар");
                // Изменено 5_копеек (конец)
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;

Только в таком случае в таблице выводить нужно Запрос.Цвет, или Запрос.Товар.ЦветВПрайсе, или Товар.ЦветВПрайсе.

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

Flexy Подменю пользователя
сообщение 20.07.11, 9:50
Сообщение #9

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

5_kopeek Спасибо!Работает wink.gif friends.gif

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


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

 

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