СКД + Запрос: Строка в число

1. neutrina 22.07.21 23:14 Сейчас в теме
И снова здравствуйте!
И снова помогите. Пожалуйста.
Поставила я себе задачу создать "Вид цен " для сигарет. Поскольку идентификатором служат Характеристики, то очень заманчивым показалось вытащить из строкового наименования типа "цена 135" числовое значение. Упёрлась в СКД, естественно. Сначала хотела экспортной функцией из общего модуля отработать. Но данный СКД её никак не хочет есть. Ругается на синтаксическую ошибку. Надо полагать, не может добраться до модуля. А как заставить - так и не разобралась.
Зато есть пречудесный вариант с запросом. Т.е. чудесен он в том смысле, что способен любую таблицу строковых значений перемаслать в числа (спасибо местному гуру ildarovich). Только запрос, прекрасно отрабатывающий в консоли, артачится в СКД. Отдаёт на выходе пустое значение искомого поля. Никак не ругается. Куды копать?
Картинки прикрепила и текст запроса.
Прикрепленные файлы:
price_cig_zapros.txt
По теме из базы знаний
Найденные решения
6. echo77 1868 23.07.21 18:47 Сейчас в теме
Запрос в схеме не обращается к БД. Всегда выбирает пустую ссылку на Характеристику.
пустаяссылка.Наименование - это null
neutrina; +1 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
8. spacecraft 23.07.21 19:18 Сейчас в теме
(1) даже по скринам видно, что в результирующем запросе получилось число. 9 614. Неразрывный пробел наличествует в представлении результата.
13. neutrina 24.07.21 15:32 Сейчас в теме
(8) Запрос отрабатывает безупречно. К нему никаких претензий. Основная беда, как выяснилось, не в способе обращения строки в число, а в том, как получить эту конкретную строку.
9. spacecraft 24.07.21 08:48 Сейчас в теме
(1) вот пример отчета на СКД преобразования строки в число.
Прикрепленные файлы:
ВнешнийОтчетЧислоСтрокой.erf
20. McLer 124 05.02.22 12:16 Сейчас в теме
(9) Спасибо огромное! так выручили. Оказывается это столько возможностей дает в СКД!
2. echo77 1868 23.07.21 04:30 Сейчас в теме
3. neutrina 23.07.21 17:52 Сейчас в теме
(2) Не вариант. Выражение ВЫЧИСЛИТЬ возвращает тип "Строка", а мне нужен тип "Число". Если бы преобразование типов стало вдруг возможным стандартными функциями СКД или Запросов, то эта революция прогремела бы так, что никого бы не миновала.))) Увы.
Всё-таки интересно, почему не работает прекрасный запрос в СКД?
4. echo77 1868 23.07.21 18:07 Сейчас в теме
(3) вычислить("10") вернёт число 10 :-)
5. neutrina 23.07.21 18:24 Сейчас в теме
(4)Отладчик говорит, что там строка. Может, у меня запрос не передаёт правильно подстроку? Может, я, вообще, не догоняю?
Наименование характеристики имеет вид "цена 123".
Прикрепленные файлы:
7. spacecraft 23.07.21 19:14 Сейчас в теме
(5) Не там использовали Вычислить. Выражение Представления всегда в итоге строка. Это же представление.
Нужно просто добавить вычисляемое поле и там Вычислить()
Во вложении пример
Прикрепленные файлы:
ЧислоСтрокой.xml
EgorSP; strelvan; +2 Ответить
19. strelvan 70 15.11.21 15:36 Сейчас в теме
(7) Так работает. Вставлю свои 5 копеек. С целыми числами - работает правильно. Но если с дробными: В запросе должны получаться данные с разделителем дробной части только точка. Если в данных используется запятая - будет выдавать синтаксическую ошибку.
6. echo77 1868 23.07.21 18:47 Сейчас в теме
Запрос в схеме не обращается к БД. Всегда выбирает пустую ссылку на Характеристику.
пустаяссылка.Наименование - это null
neutrina; +1 Ответить
10. neutrina 24.07.21 13:00 Сейчас в теме
(6)Почему же? Он обращается к значению, которое получает в процессе формирования. По логике. Заполняет же он поля именно так. Или нет?
11. neutrina 24.07.21 15:27 Сейчас в теме
(6) Кажется, я чего-то главного не понимаю... Возможно, кто-то сможет (захочет объяснить). Если поле Характеристика является пустой ссылкой (а это, действительно, так), то потом оно заполняется либо выбором вручную, либо из документа-основания. И получает конкретное значение. Каким образом в этом процессе участвует СКД? И как можно передать это конкретное значение поля в другое поле той же СКД? Ведь, судя по всему, все основные поля заполняются как бы одновременно.
Тут мозг и ломается. Потому что я уже научила данную СКД обращаться к функции в модуле. Как же передать конкретное значение поля Характеристика куда бы то ни было? Т.е. как это значение получить?
15. spacecraft 24.07.21 15:53 Сейчас в теме
(11)
Кажется, я чего-то главного не понимаю... Возможно, кто-то сможет (захочет объяснить). Если поле Характеристика является пустой ссылкой (а это, действительно, так), то потом оно заполняется либо выбором вручную, либо из документа-основания.

Это как же оно заполняется?
Да, добавили возможность использовать отбор, но отбор накладывается на получаемые данные. Какой бы отбор не накладывали на единственное значение поля, которое содержит пустую ссылку, то ничего не отработает, так как выбирать не из чего.
neutrina; +1 Ответить
16. neutrina 24.07.21 15:57 Сейчас в теме
(15)Так точно. Похоже, я переоценила свои возможности при постановке себе задачи. Сначала следовало бы пойти... учить матчасть.)))
12. echo77 1868 24.07.21 15:32 Сейчас в теме
Покажите скрин где вы используете эту схему?
14. neutrina 24.07.21 15:51 Сейчас в теме
(12)Это типовой конфиг 1С:Розницы, данная схема привязана к формированию типового документа УстановкаЦенНоменклатуры и ограничена обязательными полями с обязательными типами значений: номенклатура (ссылка), характеристика (ссылка) и цена (число). В документе можно формировать разные виды цен. "Закупочная" рассчитывается из документа-основания посредстством своей (системной) СКД: "Розничная" просто коэффициентом от закупочной. Моя т.н. "По данным ИБ". У закупочной есть четко привязанный документ-основание "ПоступлениеТоваров", у той, что я пытаюсь вычислить, такой привязки нет. Т.е. Установку цен можно вводить вручную, выбирая номенклатуры и характеристики. В результате конкретные значения этих полей будут следствием выбора.
Прикрепленные файлы:
17. neutrina 24.07.21 16:01 Сейчас в теме
Конечно, я могла бы прицепить эту СКД к документу-основанию. А вот с ручным вводом, на данном этапе, скорей всего не справлюсь.
18. neutrina 25.07.21 03:45 Сейчас в теме
Наверно, тему следовало бы переименовать. Потому что задача преобразования строки в число, в целом, тривиальная. Но полезно то, что тут были предложены несколько способов её решения в узких рамках СКД. Прикладную же задачу формирования цен тоже удалось решить, использовав в качестве шаблона СКД цен поступления и внедрив туда всё-таки бесконечно прекрасный запрос от ildarovich. Всем большое спасибо! В который раз убеждаюсь, что матчасть - наше всё.)))
21. Ranetka 23 22.10.22 20:47 Сейчас в теме
Самое смешное, что вычисляемое поле, которое через Вычислить() переводит строку в число, нельзя потом использовать в группировке в структуре отчета. Хотя если использовать поле в детальных записях, работает.
22. den_vrn 12 03.05.23 14:26 Сейчас в теме
Если я знаю что всегда в наименование будет слово "цена" то в запросе с помощью метода "ПОДСТРОКА(СтрокаЧисел, 6, 6)" оставлю только циферки, если не только слово "цена" возможно воспользуюсь методом ПОДОБНО. Далее в СКД есть закладка "Вычисляемые поля" в которой с помощью метода ВычислитьВыражение(СтрокаЧисел) строковые циферки превращаются в обычные! 👌👌👌
Использовал когда нужно было преврать строку "000001" в число 1
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)