Перейти к содержимому


- - - - -

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


  • Вы не можете ответить в тему
Сообщений в теме: 11

#1 zes

    Прохожий


  • 42 сообщений

Отправлено 27 января 2012 - 07:17

1С:Предприятие 8.1 (8.1.13.41)
"Управление торговлей", редакция 10.3 (10.3.5.1)

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

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

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

#2 alexburn

    Suum cuique


  • 4 670 сообщений

Отправлено 27 января 2012 - 10:48

Как вы себе представляете? Кока-кола 0,33, нужно найти 0,33 ?
Вы про характеристики товара слышали:))) ?
Героем можешь ты не быть,
Но человеком быть обязан!

Изображение
Если вам помог мой ответ, просьба сказать спасибо вот такой Изображение кнопкой рядом с сообщением.

#3 BabySG

    Любитель программирования


  • 12 213 сообщений

Отправлено 27 января 2012 - 11:07

Как правильно отметили, тут надо менять идею, а не реализацию.
Это будет (в долгосрочной перспективе) - намного удобнее и выгоднее.
Ничто так сильно не укрепляет веру в человека, как ПРЕДОПЛАТА!

#4 zes

    Прохожий


  • 42 сообщений

Отправлено 27 января 2012 - 12:20

Товарищи!
Подход и концепцию ведения учета таким образом придумал не я, и менять ничего не будут.

Просмотр сообщенияalexburn (27 января 2012 - 10:48) писал:

Как вы себе представляете? Кока-кола 0,33, нужно найти 0,33 ?
Вы про характеристики товара слышали:))) ?
Да, нужно найти 0,33
Ну помогите пожалуйста :blush:

#5 BabySG

    Любитель программирования


  • 12 213 сообщений

Отправлено 27 января 2012 - 12:23

Добавить такой отбор можно, НО!
Для этого потребуется переписать отчет и пинцип его формирования.
Задачка интересная, но времени ей заниматься совершенно нет.

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

#6 shurikvz

    Ветеран


  • 5 239 сообщений

Отправлено 27 января 2012 - 12:30

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

А в отчете можно будет поставить галочку "использовать свойства и категории" и отбирать (или группировать) уже по этому свойству.
Now, this bell tolling softly for another, says to me: Thou must die...

#7 BabySG

    Любитель программирования


  • 12 213 сообщений

Отправлено 27 января 2012 - 12:36

Да, кстати, возможный вариант.
Только, предположу, что такой способ поиска (независимо от реализации) - будет выброшен со временем.
Ибо начнутся проблемы уже в таких местах:
"Молоко 2.5% 1 л."
"Молоко 3.5% 1л."
"Молоко 6.0% 1 л"

Как видим - упаковка литр, но вот окончание все равно разное.
И, в итоге, придут к нормальному, а не костылям, решению :)
Ничто так сильно не укрепляет веру в человека, как ПРЕДОПЛАТА!

#8 zes

    Прохожий


  • 42 сообщений

Отправлено 27 января 2012 - 12:47

Просмотр сообщенияshurikvz (27 января 2012 - 12:30) писал:

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

Это очень хорошая мысль!
И ещё нужно сделать обработку, чтобы сразу заполнить это свойство начально.
Может поможите запросом? Чтобы быстро?

Просмотр сообщенияBabySG (27 января 2012 - 12:36) писал:

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

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

#9 shurikvz

    Ветеран


  • 5 239 сообщений

Отправлено 27 января 2012 - 13:32

Там и запрос по сути не надо.
1) Выборка по справочнику
2) ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок
3) Берем последний элемент массива (или не последний, тут уж я не знаю как у ваз наименования забиты), приводим к нужному типу записываем в РС. ЗначенияСвойствОбЪектов.
Now, this bell tolling softly for another, says to me: Thou must die...

#10 zes

    Прохожий


  • 42 сообщений

Отправлено 27 января 2012 - 16:24

Не понял как РС.ЗначенияСвойствОбЪектов использовать

#11 zes

    Прохожий


  • 42 сообщений

Отправлено 30 января 2012 - 07:13

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



#12 shurikvz

    Ветеран


  • 5 239 сообщений

Отправлено 30 января 2012 - 12:21

Вы я так поняли добавили в конфигураторе в справочник номенклатура реквизит "Размер".
Ну так конечно тоже можно, но изначально я говорил об использовании механизма "Свойства обЪектов", с тем чтобы не добавлять реквизитов.

Ну все, добавляйте теперь подписку на событие. Если делать на основании того как вы реализовали, то на событие ПередЗаписью(), если будете переделывать с использованием "Свойств", то на событие ПриЗаписи().
Вставляете туда аналогичный кусок кода (выборка и цикл естественно не нужен, у вас же там будет только один элемент справочника).
Now, this bell tolling softly for another, says to me: Thou must die...





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных