8.х в универсальный отчет добавить тип сравнения

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем zes, 27 янв 2012.

  1. TopicStarter Overlay
    zes
    Offline

    zes Опытный в 1С

    Регистрация:
    29 ноя 2010
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    1С:Предприятие 8.1 (8.1.13.41)
    "Управление торговлей", редакция 10.3 (10.3.5.1)

    Имеется отчет "Продажи. По продавцам"
    Используется Универсальный отчет.
    Магазин одежды.
    В конце наименования номенклатуры (так повелось) продавцы ставят размер, т.е. отдельного поля нет.
    Необходимо в Отборах, сделать "Тип сравнения" - "В конце".
    Или каким-то образом добавить вычисляемое поле, в список полей.

    Может кто реализовывал?
    Может можно сделать стандартным способом, без конфига. Не могу найти где.

    Помогите пожалуйста.
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Как вы себе представляете? Кока-кола 0,33, нужно найти 0,33 ?
    Вы про характеристики товара слышали:))) ?
  3. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Как правильно отметили, тут надо менять идею, а не реализацию.
    Это будет (в долгосрочной перспективе) - намного удобнее и выгоднее.
  4. TopicStarter Overlay
    zes
    Offline

    zes Опытный в 1С

    Регистрация:
    29 ноя 2010
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Товарищи!
    Подход и концепцию ведения учета таким образом придумал не я, и менять ничего не будут.

    Да, нужно найти 0,33
    Ну помогите пожалуйста :blush:
  5. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Добавить такой отбор можно, НО!
    Для этого потребуется переписать отчет и пинцип его формирования.
    Задачка интересная, но времени ей заниматься совершенно нет.

    Смысл будет в том, что надо будет кастовать условие поиска и изменять текст запроса (подставлять ПОДОБНО %бла-бла-бла)
    Отмечу также, что подобный отчет может формироваться ЗНАЧИТЕЛЬНО (на порядки, т.е. в 10-20 раз) дольше, чем стандартный.
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Ну такое предложение, если конфигурация снята с поддержки:
    Завести для номенклатуры свойство Размер.
    добавить для справочника номенклатура подписку на событие ПриЗаписи()
    в этой подписке анализировать поле наименование, находить эти 0,33, и записывать в это свойство.
    Все. для менеджеров все останется как было раньше.

    А в отчете можно будет поставить галочку "использовать свойства и категории" и отбирать (или группировать) уже по этому свойству.
  7. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Да, кстати, возможный вариант.
    Только, предположу, что такой способ поиска (независимо от реализации) - будет выброшен со временем.
    Ибо начнутся проблемы уже в таких местах:
    "Молоко 2.5% 1 л."
    "Молоко 3.5% 1л."
    "Молоко 6.0% 1 л"

    Как видим - упаковка литр, но вот окончание все равно разное.
    И, в итоге, придут к нормальному, а не костылям, решению :)
  8. TopicStarter Overlay
    zes
    Offline

    zes Опытный в 1С

    Регистрация:
    29 ноя 2010
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Это очень хорошая мысль!
    И ещё нужно сделать обработку, чтобы сразу заполнить это свойство начально.
    Может поможите запросом? Чтобы быстро?

    Да, согласен, абсолютно, надо их заставить нормально данные вводить! :)
  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Там и запрос по сути не надо.
    1) Выборка по справочнику
    2) ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок
    3) Берем последний элемент массива (или не последний, тут уж я не знаю как у ваз наименования забиты), приводим к нужному типу записываем в РС. ЗначенияСвойствОбЪектов.
  10. TopicStarter Overlay
    zes
    Offline

    zes Опытный в 1С

    Регистрация:
    29 ноя 2010
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Не понял как РС.ЗначенияСвойствОбЪектов использовать
  11. TopicStarter Overlay
    zes
    Offline

    zes Опытный в 1С

    Регистрация:
    29 ноя 2010
    Сообщения:
    61
    Симпатии:
    0
    Баллы:
    26
    Вот, на ваш суд сделал, сработало с первого раза :)
    Обработка
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Выборка = Справочники.Номенклатура.ВыбратьИерархически();
    Счетчик = 0;
    Пока Выборка.Следующий() Цикл
    Если Не Выборка.ЭтоГруппа Тогда
    Наименование = Выборка.Наименование;
    
    Если Наименование <> "" Тогда
    //выгружаем в массив
    МассивСтрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодСтрок(Наименование, " ");
    ЭлементовВМассиве = МассивСтрок.Количество();
    Если ЭлементовВМассиве > 1 Тогда
    //берём последний элемент массива
    Тест = СокрЛП(МассивСтрок[ЭлементовВМассиве-1]);
    //Исключение
    Если Тест="AV" Тогда
    Тест = СокрЛП(МассивСтрок[ЭлементовВМассиве-2]);
    КонецЕсли;
    Если Не Флажок1 ИЛИ (СтрДлина(Тест) < 3 И Флажок1) Тогда
    ТестЧисло = 0;
    Попытка //число?
    ТестЧисло = Число(Тест);
    Тест = Строка(ТестЧисло);
    Исключение
    КонецПопытки;
    Если ТестЧисло <> 0 Тогда
    //запись
    Об = Выборка.ПолучитьОбъект();
    Об.Размер = Тест;
    Об.Записать();
    //***запись
    Счетчик = Счетчик + 1;
    Сообщить(Строка(Счетчик) + ". " + Наименование + ", РАЗМЕР:" + Тест);
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    
    КонецЕсли;
    КонецЦикла; 
    КонецПроцедуры
    
  12. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Вы я так поняли добавили в конфигураторе в справочник номенклатура реквизит "Размер".
    Ну так конечно тоже можно, но изначально я говорил об использовании механизма "Свойства обЪектов", с тем чтобы не добавлять реквизитов.

    Ну все, добавляйте теперь подписку на событие. Если делать на основании того как вы реализовали, то на событие ПередЗаписью(), если будете переделывать с использованием "Свойств", то на событие ПриЗаписи().
    Вставляете туда аналогичный кусок кода (выборка и цикл естественно не нужен, у вас же там будет только один элемент справочника).

Поделиться этой страницей