Особенность встроенной функции Представление() в СКД [поход на грабли]

Публикация № 977912 15.01.19

Приемы и методы разработки - СКД

СКД Представление Карточка счета

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

В "1С:Бухгалтерии 8" одного из клиентов обнаружил невозможность сформировать стандартный отчет "Карточка счета" по некоторым счетам (чуть позже похожее поведение нашел еще в "Карточке субконто" и в "Отчете по проводкам"). Из-за данной периодически возникающей ошибки бухгалтера для работы стали использовать другую версию этого отчета из более ранних редакций конфигурации (когда еще до появления СКД применяли объект "Построитель отчета"). А вообще, если не считать эту тянувшуюся несколько лет ошибку, то в целом в работе системы их больше ничего не беспокоило. 

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

 

Поиск причины ошибки

Первое допущение: мои предшественники намудрили с RLS из-за чего возникла ошибка в типовом функционале. Но под полными правами проблема то же воспроизвелась - при попытке сформировать отчет получаю странную картинку с частично сформированной таблицей результата в "поломанном" оформлением и сообщение:

Отчет не сформирован!
Неверные параметры "+"


Вторая гипотеза: вывод отчета формируется программно, а на выводе конкретной строки почему-то вывод сбоит (как вариант, возможно при ручном обновлении были обновили функции из общих модулей, а про их вызов из модулей отчетов забыли). Поиском по верхней части текста ошибки обнаружил место фактического формирования табличного документа штатными механизмами платформы. Ошибка генерировалась уже через несколько секунд после начала выполнения следующей строки кода:

ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);

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

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

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

Четвертой догадкой стала: проблема с формулами вычисляемых полей. В данном разделе были описано одиннадцать расчетных полей, в трех из которых содержались операции по конкатенации строк с помощью оператора "+". Это были формирование представления документа, а так же описания аналитик по Дебету и Кредиту. Выглядят они во всех типовых (и отраслевых) конфигурациях следующим образом:

 
 Представление документа
Представление(Регистратор) + &ПС + Содержание
 
Текст для аналитики Дебита
Выбор Когда ((НалоговоеНазначениеДт Есть NULL) ИЛИ ( НалоговоеНазначениеДт=Значение(Справочник.НалоговыеНазначенияАктивовИЗатрат.ПустаяСсылка))) Тогда ""
Иначе Выбор Когда Не ЗначениеЗаполнено(Представление(НалоговоеНазначениеДт)) Тогда "<...>"+ &ПС Иначе Представление(НалоговоеНазначениеДт)+ &ПС Конец
Конец
+
Выбор Когда СубконтоДт1 Есть NULL Тогда ""
Иначе Выбор Когда Не ЗначениеЗаполнено(Представление(СубконтоДт1)) Тогда "<...>"+ &ПС Иначе Представление(СубконтоДт1)+ &ПС Конец
Конец
+
Выбор Когда СубконтоДт2 Есть NULL Тогда ""
Иначе Выбор Когда Не ЗначениеЗаполнено(Представление(СубконтоДт2)) Тогда "<...>" Иначе Представление(СубконтоДт2)+ &ПС Конец
Конец
+
Выбор Когда СубконтоДт3 Есть NULL Тогда ""
Иначе Выбор Когда Не ЗначениеЗаполнено(Представление(СубконтоДт3)) Тогда "<...>" Иначе Представление(СубконтоДт3) Конец
Конец
 
 Текст для аналитики Кредита

С представлением документа все нормально - все три операнда в данном уравнении всегда являются строками (согласно текста запроса и явно инициированного переносом строки параметра &ПС) и потому не могут быть причиной ошибки. Проверил суждение практикой и заменил формулу на пустую строку - отчет ожидаемо не сформировался до конца.

Строки с описанием аналитик тоже внешне выглядят "правильными". Конечно, смущает что при наличии проверок на заполненность и обладая знанием, что первое или второе субконто могут являются Null-ами (признак отсутствия аналитики на счете), все равно тратится время на анализ последующих субконто.  Еще бросается в глаза, что для второго субконто (как для Дебета, так и для Кредита) перенос строки добавляют лишь после имеющих значение представлений, а после строки "<...>" про перенос забыли. (Кстати, из любопытства проверил последнюю ERP - там точно так же забыт этот несчастный перенос строки. Видимо типовые бухгалтерские отчеты как написали лет 10 назад, так больше ни разу и не трогали.) Но после заполнения полей аналитик пустыми строками, отчет наконец-то успешно сформировался. Следовательно не все параметры имеют тип строки. Единственным подозреваемым остается результат функции Представление().

 

Исправление ошибки

Ошибку тут же исправил заключив результаты вызова функций Представление() в функции Строка().

Заодно не удержался от прочих исправлений - вернул потерянные переносы строк, а выводы второго и третьего субконто перенес в ветки ИНАЧЕ их предшественников.

 

Что бы я изменил в стандартных бухгалтерских отчетах?

Я сделал быстрое исправление, которое "починило отчет" и обрадовало бухгалтеров, которые теперь снова смогут пользоваться стандартной СКД-отчетностью. Но будь я разработчиком типовых, то исправление носило бы более глобальный характер.

Мне сразу не понравилась бездумная конкатенация в описании вычисляемых полей. Если учитывать каждое генерируемое представление, то получаем от 9 до 14 операций конкатенации на КАЖДУЮ выводимую строку отчета. Как я уже упоминал в другой своей статье, операции по сложению строк не являются дешевыми. По факту каждый раз в памяти создается новая строка, в которую копируются две предшественницы. Чем больше участников в операции "сложения", тем больше будет создано и затем уничтожено промежуточных строк. (Теперь вы понимаете почему квартальные и годовые отчеты нужно так долго ждать?)

Тут оптимальным решением я вижу для обслуживания отчетов создание общего модуля со включенной опцией повторно использования возвращаемых значений. В таком общем модуле требуется реализовать все требуемые функции с быстрой конкатенации требуемых представлений (на мою устаревшую статью не смотрите - сейчас для быстрого сложения строк существует функция СтрСоединить()). А в схеме компоновки можно просто вызывать эти новые функции. Думаю, что получился бы довольно приличный прирост скорости на больших объемах информации.

 

Так что же привело к ошибке?

Остался вопрос: что же было такого необычного в той строке отчета, которая "ломала" СКД?

Анализ показал, что это была корреспонденция анализируемого счета со счетом затрат будущего периода, куда было добавлено второе субконто "Период" с типом Дата. Полагаю, что данное субконто добавили мои предшественники-разработчики по просьбе бухгалтеров, которым для контроля было неудобно использовать строковые представления дат, с которыми в отличии от настоящих дат нельзя ни отборы применить, ни условным оформление воспользоваться.

Этот же факт объясняет почему экземпляр данного отчета, который успешно работает в сотнях тысяч инсталяций типовых и отраслевых решений по всему СНГ, у моих клиентов внезапно сломался. Дело в том, что разработчики типовых в плане видов характеристик ВидыСубконтоХозрасчетные стандартно разрешили только ссылочные типы и ни одного из примитивных! Если кому-то нужны даты, (видимо думали они) то пусть заводят их строковые представления в справочнике Субконто. Хотя несколько лет применения такого субконто показало, что вообще никаких негативных последствий для системы это не несет.

 

Особенности функции Представление()

Почему же функция Представление() не вернула строку? Без чтения документации тут некуда.

Согласно данным справочной информации эта функция существует самостоятельно в контексте (а не как метод объекта) лишь в двух местах - в языке запросов и как встроенная функция системы компоновки данных. 

Давайте освежим знания по языку запросов и посмотрим статью во встроенной документации платформы:

Функция ПРЕДСТАВЛЕНИЕ 
Данная функция предназначена для получения строкового представления значения произвольного типа.
Параметр функции – выражение любого типа.
Возвращаемое значение – представление значения, тип СТРОКА.
Результат работы функции не может быть использован внутри других функций, за исключением функции ПРЕДСТАВЛЕНИЕ.

Далее обратимся на ИТС, где поиском я нашел лишь одну релевантную статью на эту тему: Особенности работы с полем Представление и функцией Представление() языка запросов из раздела "1С:Предприятия 8. Разработка и администрирование":

Функция Представление()
Функция представление предназначена для получения текстового представления любого значения, которое может быть получено при помощи языка запросов. Функция Представление() работает как для ссылочных, так и для примитивных типов. Для ссылочных типов результат функции полностью аналогичен получению поля "Представление" от ссылки, переданной в качестве параметра функции. Для примитивных типов, результатом работы функции является строка, в которую было преобразовано значение, переданное в качестве параметра. Особенностью данной функции является то, что ее результат не может быть использован в выражении.

Таким образом в двух источниках видим практически одно и тоже, но разными словами: результат всегда строка и результат нельзя использовать в выражениях.

Теперь обратимся к реализации в функциях СКД и посмотрим статью "Функции языка выражений системы компоновки данных" из встроенной справки платформы (на ИТС аналогично):

Представление  (Resentation)
Данная функция возвращает строковое представление переданного значения не примитивного типа. Для значений примитивного типа возвращает само значение.

Название у двух функция одно, а поведение такое разное... В варианте для СКД есть и разрешение использования в выражениях и тип возвращаемого значения уже может быть произвольным.

 

А нет ли ошибок еще и в платформе?

Но перепроверяя данные из документации я обнаружил, что функция Представление() имеет наглость возвращать значения разных типов даже при идентичном входном параметре. Причем такое неоднозначное поведение было зафиксировано как в версиях 8.2, так и в современных 8.3 - т.е. оно сопровождало СКД с самого начала.

Предлагаю немного попрактиковаться и создать внешний отчет, в котором будет 2 источника описанных запросами. В обоих запросах выберем предопределенные дату и число. Единственное различие будет в том, что во втором варианте мы кроме значений дополнительно запросим еще представления этих полей:

Далее на закладке вычисляемых полей создадим набор полей с типами значений как наших значений, так и их представлений, которые получим уже встроенной функцией схемы компоновки данных:

Теперь создадим вариант настройки с табличками отдельно по первому источнику (в котором только данные) и по второму источнику (где мы дополнительно запрашивали представления):

А теперь посмотрим результат:

Получившийся отчет для платформы 8.3 я поместил во вложение. Если (внезапно) захотите проверить на платформе 8.2, то вам необходимо переделать вычисляемые поля, так как в те времена в СКД еще не было встроенной функции ТипЗначения(). Можно или вызвать свою собственную функцию из общего модуля или не заморачиваться и вывести в отчет сам результат Представление() - результаты для двух запросов будут снова разных типов.

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

Так почему же результаты различаются? Точно не понятно, или вызов представления в запросе заполняет кеш системы компоновки некоторыми значениями, которые подхватываются одноименной функцией схемы (все таки у них одинаковая сигнатура), или это особенности анализа текста запроса (типа как с периодичностью регистров накопления, где если выбрать Авто и группировку скажем по дням, то начальное и конечное сальдо в группировках будет корректным, но если нигде ничего не меняя исправить в тексте запроса периодичность на День, то отчет сразу поломается и роли полей-остатков станут игнорироваться, они превратятся в обычные поля с обычным суммированием). В документации про такую особенность использования (и тем более про ее логику) нет ни слова. Абсолютно не понятно хотят ли разработчики оставить эту "фичу" навсегда или передумают и уберут в одном из свежих релизов. Но нам, "простым пацанам", помнить о таких особенностях точно нужно, что бы не забывать покрывать код дополнительными проверками типов - на всякий случай.

Скачать файлы

Наименование Файл Версия Размер
Отчет для демонстраций ошибки Представления()

.erf 5,79Kb
0
.erf 5,79Kb Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Vladimir Litvinenko 15.01.19 13:33 Сейчас в теме
Тут оптимальным решением я вижу для обслуживания отчетов создание общего модуля со включенной опцией повторно использования возвращаемых значений. В таком общем модуле требуется реализовать все требуемые функции с быстрой конкатенации требуемых представлений (на мою устаревшую статью не смотрите - сейчас для быстрого сложения строк существует функция СтрСоединить()). А в схеме компоновки можно просто вызывать эти новые функции. Думаю, что получился бы довольно приличный прирост скорости на больших объемах информации.


Очень осторожно следует это делать, без глубокого анализа на базах разного объема нельзя так с горяча поступать. Не забывайте, что повторное использование возвращаемых значений не бесплатно. Системе придется долгое время хранить соответствие входящих параметров и результирующих строк, вплоть до 20 минут. Строки судя по всему получаются не короткими. Самое замечательное что хранение возможно произойдет и на клиенте и на сервере. Не зря для таких функций разрешены только параметры примитивных типов и сохраненные значения периодически удаляются из кэша. Прочитайте рекомендации: Использование модулей с повторным использованием возвращаемых значений


Этот же факт объясняет почему экземпляр данного отчета, который успешно работает в сотнях тысяч инсталяций типовых и отраслевых решений по всему СНГ, у моих клиентов внезапно сломался. Дело в том, что разработчики типовых в плане видов характеристик ВидыСубконтоХозрасчетные стандартно разрешили только ссылочные типы и ни одного из примитивных! Если кому-то нужны даты, (видимо думали они) то пусть заводят их строковые представления в справочнике Субконто. Хотя несколько лет применения такого субконто показало, что вообще никаких негативных последствий для системы это не несет.


Ох. Просто загляните в структуру индексов таблиц, относящихся к регистру бухгалтерии. Этим включением примитивного типа ваши предшественники индексы раздули. В частных случаях (небольшие базы, низкая интенсивность ввода данных, база только на SQL) это терпимо. В общем случае - неприемлемо.

В индекс по таблице итогов с Субконто3 минимум 3 новых поля добавилось. А в той же типовой ERP там и без этого уже 14 полей. После добавления хотя бы одного примитивного типа будет 17. Как думаете, к чему это приводит? )) А еще есть более терпимые к этому индексы по итогам по Субконто2 и Субконто1.

https://its.1c.ru/db/v8std#content:2149184377:hdoc

Хотелось бы промолчать, зная какая "благодарная" реакция бывает на отсылки к документации, которую увы опытные программисты игнорируют. Или читают только когда приспичит и без этого уже никак. Но всё же надо уменьшать количество вредных советов. Потом приходится делать круглые глаза когда видишь такое в базах и исправлять уже поздно. Ведь учёт давно ведётся и "наш прошлый программист нам так удобно сделал, так удобно" ))


Само исследование хорошее. Только синонимы полей бы поправить. Очень сложно глазами сопоставлять вывод отчетов, приведенных в конце, и исходные данные.
kwazi; Dementor; +2 Ответить
5. Dementor 851 15.01.19 18:22 Сейчас в теме
(1) спасибо за комментарий. В текущей версии статьи редактировать скриншоты отчета уже не буду. Но на будущее учту.
Про особенность индексов по "не ссылочному" я читал, но этот клиент с его бухгалтерией не из категории "биг дата".

Очень осторожно следует это делать, без глубокого анализа на базах разного объема нельзя так с горяча поступать. Не забывайте, что повторное использование возвращаемых значений не бесплатно. Системе придется долгое время хранить соответствие входящих параметров и результирующих строк, вплоть до 20 минут. Строки судя по всему получаются не короткими. Самое замечательное что хранение возможно произойдет и на клиенте и на сервере. Не зря для таких функций разрешены только параметры примитивных типов и сохраненные значения периодически удаляются из кэша.


Обычно в бухгалтерских "простынях" сотни и даже тысячи повторов одинаковой аналитики в проводках. Интуиция подсказывает, что если не тратить время на их конкатенацию, а потратить немного оперативки, то быстродействие будет очевидным. Но утверждать без эксперимента не могу. Нужно будет в свободное время попробовать.
Vladimir Litvinenko; +1 Ответить
2. lvictor58 135 15.01.19 14:17 Сейчас в теме
Я всегда при слиянии строк в самом начале добавляю ""+ что далее система воспринимает как контртекцию а не арифметическое сложение.

Кстати конструкция Сообщить(""+ОписаниеОшибки()) работает корректнее той, что указана в типовом функционале Сообщить(ОписаниеОшибки())
3. lunjio 64 15.01.19 14:30 Сейчас в теме
Тут больше претензий к функции ТипЗначения, во втором варианте она должна вернуть для обоих типов строку, т.к Представление() возвращает строку, но видать СКД умничает и берет уже рассчитанные типы для данных полей, попробуйте в запросе местами поменять и скажите результат, тоесть со стороками представление наверх, а вниз без, спасибо.
4. acanta 15.01.19 14:32 Сейчас в теме
Спасибо за статью и комментарии. Представление в запросах и в целом функции СКД тема очень интересная.
На мой взгляд мы имеем вместо алгоритмического кода, трансформируемого платформой на файловый, SQL, Postgre, IBM и Oracle принципиально разные варианты и подходы приспособления низкоуровневого программирования 1с8 к особенностям хранения и обработки данных в каждой из используемых СУБД.
Встречала настоятельные рекомендации переходить к изучению программы 1с 8 после глубокого практического изучения каждого из языков (SQL, Postgre, IBM и Oracle), что без участия в реальных коммерческих проектах (без 1С) на базе именно этих продуктов невозможно. Но даже поверхностное изучение этих СУБД в вузах и техникумах создает достаточную базу для понимания допустимых типов переменных в каждой из СУБД.
Dementor; +1 Ответить
6. jaroslav.h 172 06.05.20 15:19 Сейчас в теме
Дякую, з економили мені багато часу на аналізи.
Dementor; +1 Ответить
Оставьте свое сообщение

См. также

Как выполнить отчет на СКД через COM и получить данные отчета? Промо

СКД v8 УПП1 Россия Абонемент ($m)

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

2 стартмани

08.05.2018    40185    wowik    3    

Отчет на СКД с использованием форм из БСП. Варианты передачи списка значений в параметр СКД

БСП (Библиотека стандартных подсистем) СКД v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Показаны способы передачи списка значений в значение по умолчанию параметра СКД типового отчета из БСП, с возможностью последующей модификации пользователем.

1 стартмани

20.04.2022    1029    eugene-p    4    

По-настоящему свои макеты в отчетах СКД. Исследование процесса компоновки и генерация кода отчета

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Как скрестить формирование отчетных данных с помощью СКД и вывод в табличный документ с помощью Макет.ПолучитьОбласть(...) и ТабДок.Вывести(Секция)? А также сделать этот процесс простым и удобным? Об этом в статье ниже.

1 стартмани

22.03.2022    1365    Alxby    6    

Доработка типового отчета на СКД с помощью расширения

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Доработка типового отчета на СКД в БП 3.0 с помощью расширения конфигурации. Пример, как можно внести изменения в типовой отчет "Бухгалтерии предприятия" 3.0 без снятия конфигурации с поддержки. Описан пошаговый алгоритм действий и способы решения возникающих при этом проблем.

1 стартмани

09.01.2022    2752    Spacer    8    

Полезные примеры составления схемы компоновки данных #1 Промо

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Данная статья появилась благодаря периодически появляющимся вопросам на сайте http://1cskd.ru/. Задачи, которые задают авторы вопросов совсем не тривиальные, но их можно решить с помощью СКД.

5 стартмани

09.04.2014    173515    SITR-utyos    51    

Как я с отчетом СКД боролся (произвольный макет)!

СКД v8 v8::БУ БГУ Государственные, бюджетные структуры БУ Абонемент ($m)

Здравствуйте. Необходимо сделать было отчет, который при кнопке сформировать заполняется автоматически! При этом форма определенная (использовал произвольный макет), сделал на основании отчета "Расчетсреднегодовой...", где источником данных является внешний набор (набор данных - объект), а мне по мимо этого нужно было еще кучу всего! Статью в первую очередь пишу для себя (чтобы не забыть), но может еще кому пригодится! (БГУ 2.0.82.11, платформа 8.3.18.1483).

1 стартмани

08.12.2021    733    VID1234    2    

Динамическая расшифровка СКД (на примере отчета)

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Предлагаю Вашему неподкупному вниманию вариант более-менее унифицированной реализации динамически формирующейся расшифровки СКД на примере простейшего отчета для конфигурации УТ 11.

1 стартмани

08.12.2020    2285    mr_sav    2    

СКД: все, что вы хотели знать о подмене схемы компоновки данных в отчетах и обработках

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Довольно часто на различных тематических форумах задается вопрос, можно ли использовать в отчете/обработке несколько схем компоновки данных, подменяя одну другой по мере надобности? При этом желательно, чтобы и пользовательские настройки при смене схемы менялись соответственно.

1 стартмани

07.12.2020    7005    user1502278    21    

Использование отборов в СКД Промо

СКД v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

26.05.2013    56066    echo77    14    

Программная корректировка при выводе отчета СКД

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Большинство отчетов на СКД, требующих программной корректировки, реализуются с помощью программной настройки СКД или обработки табличного документа уже после вывода отчета. Но во многих случаях более оптимально будет выполнять программную корректировку в процессе вывода отчета. Для этого существуют программные объекты, о которых я расскажу в данной статье.

1 стартмани

08.10.2020    15393    dabu-dabu    16    

Строка по шаблону с помощью СКД

СКД v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

28.08.2020    1159    Keyman    2    

СКД: штрихкоды в несколько колонок

СКД v8::СКД ERP2 Россия Абонемент ($m)

СКД. Ресурсы в несколько колонок, на примере РС Штрихкоды номенклатуры.

1 стартмани

02.03.2020    3107    shetill    2    

Процедура ПриКомпоновкеРезультата

СКД v8 1cv8.cf Абонемент ($m)

Коллекция кода

1 стартмани

26.07.2019    69249    vasilev2015    68    

Многоуровневая нумерация в отчете СКД (программный вывод)

СКД v8::СКД 1cv8.cf Абонемент ($m)

Реализация многоуровневой нумерации при программном выводе отчета СКД основываясь на его структуре.

1 стартмани

01.07.2019    8144    lmnlmn    7    

Простые примеры сложных отчетов на СКД

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Подписи в отчете. Особенности соединения наборов: как соединить несоединяемое. Остатки на дату и обороты по месяцам в одном отчете. Курс валюты на каждую дату без группировок и соединений в запросе. Отчет с произвольными колонками и с произвольной последовательностью. "Неадекватный отчет".

1 стартмани

12.06.2019    39999    Hatson    32    

Вывод вариантов СКД в таблицы на управляемой форме

СКД v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Задача стояла такая: есть 2 различных запроса, результаты которых выгружаются на форму обработки в таблицы значений (далее ТЗ) и программно "соприкасаются" между собой определенным образом (как именно- в рамках данной статьи неважно). Нюанс в том, что запросы должны иметь свой компоновщик настроек и могут интерактивно на форме изменяться пользователем. На оригинальность публикации не претендую - изначально в рамках поставленной задачи пытался найти что-то подобное (уже готовый шаблон) на инфостарте, возможно "плохо искал" ;)

05.04.2019    14062    artkor    1    

Пример использования СКД и данных расшифровки на мобильной платформе

СКД v8 v8::Mobile v8::СКД 1cv8.cf Россия Абонемент ($m)

СКД в мобильном приложении и меню действий на основе данных расшифровки (отчет, совместимый с мобильной платформой 8.3.13.45).

1 стартмани

12.03.2019    6509    majoram    0    

Сквозной рейтинг по иерархии в отчете на СКД

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Сквозная нумерация (рейтинг) по группам и элементам справочника в отчете СКД согласно убыванию количества/суммы и т.д.

1 стартмани

07.02.2019    6134    MaxxiMiliSan    2    

СКД. Сортировка

СКД v8::СКД 1cv8.cf Россия Абонемент ($m)

Показана реализация сортировки по двойному щелчку на заголовке колонки отчета и отображение направления сортировки в заголовках колонок.

1 стартмани

03.12.2018    11796    slimper    21    

Группировка измерений в заголовках СКД

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Методика создания общей шапки над измерениями в таблице созданной при помощи СКД. Без всякого кода. Только штатными средствами.

1 стартмани

07.11.2018    23746    dusha0020    11    

Вывод товаров в СКД как на весах в Ашане

Розничная торговля СКД v8::СКД 1cv8.cf Абонемент ($m)

Небольшая хитрость, которая позволяет выводить информацию на СКД плиткой.

2 стартмани

23.05.2018    14517    Kutuzov    14    

Работа с расшифровкой отчета на СКД

СКД v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

27.02.2018    32832    Isonic    14    

1с8.2-8.3.Вывод на экран данных запроса с переданными Параметрами из Документа! 8 различных вариантов:от Сообщений, Таблицы и Отчетов до СКД без объекта-отчета

СКД v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Самый важный аспект 1С - это быстро получить данные из базы. Например, по результату набранного в КонсолиЗапросов запроса вывести этот результат на экран. А еще лучше, когда мы вызываем выборку данных из конкретного документа и, конечно, желаем, чтобы параметры по этому документу тоже были переданы в выборку. Здесь мы будем выводить данные на экран по нажатию кнопки в документе, обязательно с получением в параметрах значений из документа. Рассмотрим 8 вариантов вывода подобной информации на экран: 1.Вывод результатов запроса командой Сообщить() из ТаблицыЗначений; 2.Вывод результатов запроса - просто в табличный документ; 3.Вывод результатов запроса с помощью ДвумерногоМассива; 4.Вывод результатов запроса с помощью МассиваСтруктур (с двумя вариантами); 5.Вывод обычным объект-Отчетом без СКД; 6.Вывод объект-Отчетом-СКД+УстановкаПараметров; 7.Вывод объект-Отчетом-СКД+ВнешняяВременнаяТаблица; 8.Вывод программно СКД без объекта-Отчета с Параметром=ВнешняяВременнаяТаблица.

1 стартмани

14.01.2018    29676    jan-pechka    5    

Расшифровка СКД. Управляемые формы

СКД v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Отчеты СКД классные. Они значительно упрощают жизнь и позволяют пользователям меньше зависеть от программистов. Но иногда все же случаются проблемы при разработке таких отчетов. Сегодня обсудим как выводить отчет в произвольной форме или АРМ’е, а так же проблемы с которыми мы при этом встретимся. Для тех, кто предпочитает сразу готовый результат - обработка во вложении. Остальных приглашаю почитать эту статью.

1 стартмани

21.11.2017    32865    opx    4    

Особенность работы отбора по характеристикам (свойствам) в СКД

СКД v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Замечено, что в отчете созданном на СКД с использованием характеристик (свойств) объектов при установке отбора в отчет не попадают данные с незаполненными свойствами.

1 стартмани

18.08.2017    16674    kkv90    9    

Вывод результата СКД в таблицу значений

СКД v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Вывод результата СКД в таблицу значений по Отбору Компоновки Данных

1 стартмани

04.08.2017    67575    yalex9    25    

Макеты СКД

СКД v8 v8::СКД 1cv8.cf Абонемент ($m)

Рассмотрены некоторые типовые задачи, которые решаются с помощью предопределенных макетов, а также перечислены несколько случаев, для которых макеты не подходят

1 стартмани

25.07.2017    124052    json    31    

Методика расчета отклонений данных между любыми двумя датами в отчете на СКД

СКД v8::СКД 1cv8.cf Абонемент ($m)

Иногда требуется сравнить данными между двумя указанными датами. В данной статье описана методика расчета таких отклонений между двумя, указанными пользователем датами (с помощью СКД).

1 стартмани

13.05.2017    14527    tata_1211    8    

Пример универсальной функции для создания схемы компоновки данных

СКД v8::СКД 1cv8.cf Россия Абонемент ($m)

Если вам приходится часто создавать схему компоновки данных программно или вы начинающий специалист и пытаетесь разобраться, что же за зверь такой СКД, то эта статья может оказаться вам полезной. Функция создает схему компоновки с минимально необходимой структурой данных. С помощью передачи дополнительных параметров есть возможность добавления ресурсов и оформления.

1 стартмани

12.01.2017    38095    dbachinsky    34    

СКД. Дополнительная строка итогов.

СКД v8::СКД 1cv8.cf Абонемент ($m)

Вариант добавления дополнительной строки итогов при выводе в таблицу СКД.

1 стартмани

23.05.2014    37803    droplet    16    

Сложные отчеты для управляемых форм с использованием СКД: просто. На примере отчета ABC анализ номенклатуры, клиентов для УТ11

Оптовая торговля СКД v8::СКД УТ11 УУ Абонемент ($m)

Не очень часто, но все же, иногда приходится сталкиваться с необходимостью создания отчета, который очень сложно скомпоновать на "чистом" СКД, в этом случае альтернативой может являться следующая последовательность действий для получения итогового отчета: 1. при помощи одной схемы компоновки данных получить необходимую выборку данных; 2. запрограммировать (на языке 1С) некое преобразование этих данных; 3. при помощи другой схемы компоновки данных - произвести вывод необходимой информации в табличный документ. Как оказалось эта процедура не слишком сложная, хотя и немного запутанная.

1 стартмани

12.08.2013    63056    mxm2    21    

Хитрости системы компоновки данных на примере решения тестового задания проекта "Доминикана"

СКД v8 Абонемент ($m)

Недавно мне встретилось тестовое задание проекта "Доминикана", а также выложенные решения, которые показались мне слишком тривиальными, поэтому было решено сделать тестовое задание, используя минимум возможностей языка запросов и максимум возможностей СКД. О том как это было и пойдет речь в данной публицации. В публикации опишем лишь основные моменты, которые будут нам полезны в будущем, сами настройки подробно рассматривать не будем, для этого есть специлизированные курсы :).

1 стартмани

12.06.2013    47127    InformSES    39    

Уровни группировок в отчете СКД в управляемых формах

СКД v8::ОУ v8::СКД УНФ Абонемент ($m)

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

1 стартмани

08.05.2013    23358    Pralva    16    

Кнопки сворачивания и разворачивания группировок в отчете СКД в управляемых формах

СКД v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

10.04.2013    52063    mxm2    9    

Несколько слов о вложенных схемах компоновки данных

СКД v8 1cv8.cf Абонемент ($m)

За 2 года работы предприятия с конфигурацией «Управление торговлей 11» у нас накопилось немалое число внешних отчетов пользователей (около 30). Соответственно пользователям стало трудно ориентироваться в таком количестве отчетов, поэтому было принято решение сгруппировать отчеты по смыслу и перенести часть отчетов во вложенные схемы компоновки данных. Статья будет полезна тем, кто только начинает знакомиться с компоновкой данных. Примеры из статьи работают как УТ 11 так и в УТ 3.0 (для Украины).

1 стартмани

12.02.2013    50811    akomar    23    

Нестандартная расшифровка СКД или расшифровка одного отчета СКД при помощи другого отчета СКД установкой пользовательских настроек (в управляемых формах, методика + пример для УТ11)

СКД v8::ОУ v8::СКД УТ11 Россия Абонемент ($m)

Если требуется расшифровка одного отчета СКД при помощи другого отчета СКД, можно использовать представленный вариант. Казалось-бы все просто, однако дело усложняется тем, что с одной стороны, нужно предусмотреть разделение функционала между клиентом и сервером, с другой, нет достаточно четкого описания поведения передачи параметров расшифровки. В итоге: все решается "элементарно", но чтобы дойти до этого, лично мне пришлось убить уйму времени, так что экономьте своё ))). Под "нестандартной расшифровкой" имеется ввиду расшифровка данных одного вида отчета - другим видом, отличным от первого (с предварительной установкой нужных параметров и отборов в отчете-расшифровке).

1 стартмани

12.09.2012    95493    mxm2    49    

Пример вывода всех изображений номенклатуры в отчет СКД, 1С 8,2 УПП

СКД v8 УПП1 Россия Абонемент ($m)

Доброго время суток, потребовалось вывести все изображения номенклатуры, посмотрел публикацию http://infostart.ru/public/95442/, поискал в интернете ничего подходящего (готового) не нашел и слепил из того что было. Сыровата, но у меня работает. Не смог программно установить ширину колонки для основного изображения, но для других работает (выведено в параметры).

1 стартмани

06.08.2012    15989    savv67    5    

Календарь на СКД. Описание запроса

СКД v8::СКД 1cv8.cf Россия Абонемент ($m)

Отчет выводит календарь за любой период, по три месяца в ряд, можно за несколько лет подряд. Всё в один запрос. Подробное описание запроса.

1 стартмани

29.12.2011    26430    Yury1001    21    

Формирование отчетов по обязательному медицинскому страхованию на СКД. Написание запроса по ОМС. Вычисление кода региона субъекта РФ в запросе.

СКД v8 ЗУП2.5 БУ НУ ФОМС, ПФ, ФСС Абонемент ($m)

В данной статье рассматриваются основные этапы построения запроса, который позволял бы формировать два вида отчета по ОМС: 1) отчет по принятым в организацию сотрудникам, подлежащим ОМС и 2) отчет по уволенным сотрудникам, подлежащим исключению из числа ОМС. Прилагаемый файл - настройка для типовой обработки "Консоль отчетов" типовой конфигурации "1С:ЗиУП."

1 стартмани

04.06.2010    15334    RailMen    14