Архив за месяц: Сентябрь 2018

Фишечки универсального отчета 1с8 типовые конфигурации

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

Главные вопросы, сложности — это:

  1. не выводится итоговая строка (колонка). Нужно убрать в отчете поля построителя во всех вложенных запросах, и оставить только поля построителя в самом верхнем запросе. Иначе они просто могут произвольно не попадать в отчет.
Рис. 1. В запросе универсального отчета не должно быть полей построителя во вложенных запросах.

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

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

2.Как сделать, чтобы универсальный отчет переводил наименования колонок с русского на ваш национальный язык, например, украинский. Вернее для украинских конфигураций это будет только украинский, для польских — польский и т.д. Откройте регистр сведений «Переводы текстов», добавьте новую строку, и укажите в колонке «текст (на ru)» русский вариант колонки добуквенно (до знака), учитывая регистр, а в колонке «текст (на uk)» украинский вариант. Если у вас выбрана настройка «Язык печатных форм» украинский, отчеты тут же переведутся согласно указанного варианта перевода.

Рис. 2 Переводы текстов (локализация отчетов в 1С)

Поля хеша и УИД естественно заполняются системой автоматически. Вероятно нужны для однозначной идентификации.

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

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

Рис. 3. Модули локализации

Заметьте, что такие часто используемые фразы как «Начальный остаток», «Приход»,»Расход», «Оборот»,»Конечный остаток» и т. д., а так же большинство используемых в отчетах наименований колонок уже забиты в этот регистр и вводить их повторно нет смысла. 

Ещё раз напомню, что механизм перевода чувствителен к регистру, поэтому называйте колонки так же, как в регистре сведений, учитывая регистр букв.

Фишечки получения цены 1С8 в типовых конфигурациях

цена = Ценообразование.ПолучитьЦенуНоменклатуры(Номенклатура, ХарактеристикаНоменклатуры,
ТипЦенНоменклатуры,
Дата,
ЕдиницаИзмерения,
ВалютаДокумента,
КурсДокумента,
КратностьДокумента);

не все параметры являются обязательными. Только номенклатура, типЦен.

Чтобы сразу в документе расчитать и получить плановую себестоимость

цена =РассчитатьПлановуюСебестоимостьВСтрокеТабЧастиПроизводство(СтрокаТабличнойЧасти, ДокументОбъект, ВалютаРегламентированногоУчета, ПересчитатьНалоги, ЗаполнитьСебестоимостьУпр, ВалютаУправленческогоУчета = Неопределено) ; 

Тип цен плановой себестоимости

ТипЦенПлановойСебестоимостиНоменклатуры = Константы.ТипЦенПлановойСебестоимостиНоменклатуры.Получить();