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

Хранилище

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

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

> Расшифровка отчета СКД: отбор по составному типу поля          
Constantus Подменю пользователя
сообщение 19.08.19, 9:22
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 837
Спасибо сказали: 5 раз
Рейтинг: 4

Приветствую, Форумчане!
1с8.3.12, самопис, БСП, УФ

Сделал отчет.
Сам отчет работает, как надо. Вот пример кода обработки поля "Размеры":

  ВЫБОР
        КОГДА ДвижениеТМЦОстаткиИОбороты.Размеры.Ссылка ЕСТЬ NULL
            ТОГДА ВЫБОР
                    КОГДА ДвижениеТМЦОстаткиИОбороты.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.Балка)
                        ТОГДА ЗНАЧЕНИЕ(Справочник.РазмерыБалки.ПустаяСсылка)
                    КОГДА ДвижениеТМЦОстаткиИОбороты.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.Комплекса)
                        ТОГДА ЗНАЧЕНИЕ(Справочник.РазмерыКомплекса.ПустаяСсылка)
                    КОГДА ДвижениеТМЦОстаткиИОбороты.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.Плита)
                        ТОГДА ЗНАЧЕНИЕ(Справочник.РазмерыПлиты.ПустаяСсылка)
                    КОГДА ДвижениеТМЦОстаткиИОбороты.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.Постамент)
                        ТОГДА ЗНАЧЕНИЕ(Справочник.РазмерыПостамента.ПустаяСсылка)
                    КОГДА ДвижениеТМЦОстаткиИОбороты.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.Стела)
                        ТОГДА ЗНАЧЕНИЕ(Справочник.РазмерыСтелы.ПустаяСсылка)
                    КОГДА ДвижениеТМЦОстаткиИОбороты.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ЦветникСтандартный)
                        ТОГДА ЗНАЧЕНИЕ(Справочник.РазмерыЦветника.ПустаяСсылка)
                    ИНАЧЕ ЗНАЧЕНИЕ(Справочник.РазмерыПрочие.ПрочееЗначение)
                КОНЕЦ
        ИНАЧЕ ВЫБОР
                КОГДА ДвижениеТМЦОстаткиИОбороты.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.БалкаЦветника)
                    ТОГДА ДвижениеТМЦОстаткиИОбороты.Размеры.РазмерБалкиДляДвиженияПоРегиструТМЦ
                ИНАЧЕ ДвижениеТМЦОстаткиИОбороты.Размеры
            КОНЕЦ
    КОНЕЦ КАК Размеры,




Не знаю как правильно поступить в случае, если номенклатура не принадлежит ни одной предопределенной номенклатуре, т.е. имеются номенклатуры (НЕ предопределенные), у которых размер вообще не присутствует и не участвует в каком либо процессе.

Пытаюсь другим номенклатурам присвоить предопределенное значение из "левого" справочника:
ИНАЧЕ ЗНАЧЕНИЕ(Справочник.РазмерыПрочие.ЛевыйРазмер)


Пытаюсь присвоить и пустое значение
ИНАЧЕ ЗНАЧЕНИЕ(Справочник.РазмерыПрочие.ПустаяСсылка)



Основной отчет выводит как бы правильные значение, однако, если я делаю по этой номенклатуре расшифровку по регистру, то выдает пустой результат, т.к. в детализации по отбору стоит галочка против "Размер", он пустой.

Если галочку с размеров снять, то отчет дает расшифровку, но это неправильно...

Как правильно поступить в моем случае с номенклатурами, у которых не должно фигурировать "Размеры" в расшифровке?
Не могу понять как можно сделать расшифровку с отключенным отбором по Размеру в случае, если есть другие не перечисленные в коде номенклатуры?

alex_shkut Подменю пользователя
сообщение 20.08.19, 8:39
Сообщение #2

Общительный
**
Группа: Пользователи
Сообщений: 20
Из: Сумы
Спасибо сказали: 2 раз
Рейтинг: 2.3

Constantus @ Вчера, 10:22 * ,
Если посмотреть на решение, то я бы реализовал все это по принципу регистра Контактная информация.
Один справочник с видами размеров и регистр со значениями.
Номенклатура, ВидРазмера, ЗначениеРазмера.
Потому как замучаешься справочники создавать )

А по вопросу - чуток не понял, что пытаемся получить.

Constantus Подменю пользователя
сообщение 20.08.19, 11:27
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 837
Спасибо сказали: 5 раз
Рейтинг: 4

Попробую объяснить ситуацию. Сделал отчет:

ВЫБРАТЬ
....................................
    КОГДА ДвижениеТМЦОстаткиИОбороты.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.БалкаЦветника)
        ТОГДА ДвижениеТМЦОстаткиИОбороты.Размеры.РазмерБалкиДляДвиженияПоРегиструТМЦ
        ИНАЧЕ ДвижениеТМЦОстаткиИОбороты.Размеры
    КОНЕЦ КАК Размер,
.......................................


Сам отчет сработал как нужно, вывел в поле нужные размеры, "схлопнул" результаты по количеству... Т.е. к нему претензий нет...

Пытаюсь вывести расшифровку по регистратору. Смотрю структуру отчета по расшифровке. Этот отчет расшифровки вообще не изменился с учетом моих изменений, т.е.
работает как отчет:

ВЫБРАТЬ
....................................
ДвижениеТМЦОстаткиИОбороты.Размеры

.......................................


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

Как правильно настроить отчет СКД, чтобы и в расшифровке структура отчета полностью совпадала со структурой основного отчета ?

Constantus Подменю пользователя
сообщение 20.08.19, 12:49
Сообщение #4

Ветеран
*******
Группа: Пользователи
Сообщений: 837
Спасибо сказали: 5 раз
Рейтинг: 4


Имеется Номенклатура "Балка". У нее есть 2-а размера:
100*50*25 (код 000001111) - правильная и нужная
100*50*25 (код 000002222) - не нужная (ошибочная).

В регистр накопления "Движения ТМЦ" легли позиции:

Балка; 100*50*25 (код 000001111); 50 шт
Балка; 100*50*25 (код 000002222); 50 шт

Это не совсем правильная ситуация, т.к. код "000002222" был ошибочным
И отчет показывал, что у меня на складе 2-е балки по 50 штук, хотя ответ должен быть:

Балка; 100*50*25 (код 000001111); 100 шт

Что я сделал в своем отчете СКД. Я сделал комбинацию через "Когда...Тогда...Иначе" в результате добился, что в отчете получился правильный результат:

Балка; 100*50*25 (код 000001111); 100 шт

Т.е. результат дал по правильному коду и вывел правильное количество.

Когда я делаю расшифровку по регистратору, то мне он выдает операции по регистратору, где есть только код "000001111", т.е. выводит усеченный результат без учета кода "000002222", т.е. дает опять результат

Балка; 100*50*25 (код 000001111); 50 шт

Судя по всему это правильно, т.к. расшифровка обращается к Регистратору (например, поступлению), где лежат результаты с обоими размерами (кодами) и находит только один.

Вот и встал вопрос: можно ли в расшифровке отчета СКД, именно в расшифровке сделать еще нечто, как я сделал в основном отчете? Т.е. "превратить" через "Когда... Тогда... Если" второй код в первый? :-)

alex_shkut Подменю пользователя
сообщение 20.08.19, 13:58
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 20
Из: Сумы
Спасибо сказали: 2 раз
Рейтинг: 2.3

Constantus @ Сегодня, 13:49 * ,
Можно попробовать
Если 000002222 ТОГДА 000001111
Если 000001111 ТОГДА 000001111
То есть подменяем все ненужное нужным. Но что-то такой подход настораживает, если работа не разовая.
Интуиция подсказывает, что все равно расшифровка покажет регистраторы где 000001111.
Кликая по Коду мы передаем в запрос Параметр - 000001111.
Запрос выполняется правильно.

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


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

 

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