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

Хранилище

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

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



> ЗУП: простой отчет по сотрудникам          
vadim007 Подменю пользователя
сообщение 11.07.15, 8:24
Сообщение #1

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Всем привет!
Конфигурация ЗУП 2.1, Демо.
С помощью мастера создал простой отчет по сотрудникам с полями: Сотрудник, Должность, ВидРасчета:
ПостроительОтчетаОтчет.Текст =
"ВЫБРАТЬ
|    СотрудникиОрганизаций.Наименование,
|    СотрудникиОрганизаций.Должность.Наименование,
|    СотрудникиОрганизаций.ВидРасчета.Наименование
|ИЗ
|    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций";
ПостроительОтчетаОтчет.ЗаполнитьНастройки();
ПостроительОтчетаОтчет.ЗаполнениеРасшифровки = ВидЗаполненияРасшифровкиПостроителяОтчета.ЗначенияГруппировок;
ПостроительОтчетаОтчет.ТекстЗаголовка = "Отчет";
Настройка = ВосстановитьЗначение("НастройкаВнешниеОтчетыВнешнийОтчет1Отчет_e8a4c552-a827-4c92-8aaf-5340ba1b5c61");
Если Настройка <> Неопределено Тогда
    ПостроительОтчетаОтчет.УстановитьНастройки(Настройка);
КонецЕсли;

В отчете графы Должность и ВидРасчета - пустые. Хотя при открытии элементов справочиника СотрудникиОрганизаций они имеются.
Что делаю не так?

logist Подменю пользователя
сообщение 11.07.15, 15:51
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(vadim007 @ 11.07.15, 9:24) *
Что делаю не так?

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

vadim007 Подменю пользователя
сообщение 11.07.15, 19:08
Сообщение #3

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Logist, спасибо за ответ.
Сначала так и было - без Наименований. Запрос возвращал NULL, потому и добавил Наименование. То-же самое с ними.
Думается, здесь причина более глубокая.

logist Подменю пользователя
сообщение 11.07.15, 19:20
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

На период "тестирования" закомментируйте восстановление настроек.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

vadim007 Подменю пользователя
сообщение 11.07.15, 19:41
Сообщение #5

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Сейчас попробую.
Хотел добавить, что ВидРасчета - типа ПланВидовРасчетаСсылка.ОсновныеНачисленияОрганизаций.
Может отсюда нужно как-то извлекать текущий ВидРасчета?

Сделал, сейчас вот так выглядит:
Процедура ОтчетИнициализация()
    //{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПОСТРОИТЕЛЬОТЧЕТА_ИНИЦИАЛИЗАЦИЯ(Отчет)
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    ПостроительОтчетаОтчет.Текст =
    "ВЫБРАТЬ
    |    СотрудникиОрганизаций.Наименование,
    |    СотрудникиОрганизаций.Должность,
    |    СотрудникиОрганизаций.ВидРасчета
    |ИЗ
    |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций";
    ПостроительОтчетаОтчет.ЗаполнитьНастройки();
    ПостроительОтчетаОтчет.ЗаполнениеРасшифровки = ВидЗаполненияРасшифровкиПостроителяОтчета.ЗначенияГруппировок;
    ПостроительОтчетаОтчет.ТекстЗаголовка = "Отчет";
    Настройка = ВосстановитьЗначение("НастройкаВнешниеОтчетыВнешнийОтчет1Отчет_4f56d6a9-59d3-4e22-9621-de7b9431a54d");
    Если Настройка <> Неопределено Тогда
        // ПостроительОтчетаОтчет.УстановитьНастройки(Настройка);
    КонецЕсли;

    //}}КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПОСТРОИТЕЛЬОТЧЕТА_ИНИЦИАЛИЗАЦИЯ
КонецПроцедуры

Все равно нет Должностей и ВидовРасчета.

logist Подменю пользователя
сообщение 11.07.15, 19:42
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Уберите наименование: "СотрудникиОрганизаций.Наименование,", поставьте Ссылка


Signature
Личные бесплатные консультации не даю, для этого есть форум!

vadim007 Подменю пользователя
сообщение 11.07.15, 20:33
Сообщение #7

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Поставил Ссылка.
Полные имена как выводились, так и выводятся. Только графа Наименование стало Ссылка.
А Должность и ВидРасчета - пустые.

vadim007 Подменю пользователя
сообщение 12.07.15, 17:21
Сообщение #8

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Ну как-то примерно так:
"ВЫБРАТЬ
    |    СотрудникиОрганизаций.Ссылка,
    |    СотрудникиОрганизаций.ТекущаяДолжностьОрганизации,
    |    НачисленияРаботниковОрганизаций.ВидРасчета
    |ИЗ
    |    Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |(ВЫБРАТЬ
    |    ПлановыеНачисленияРаботниковОрганизаций.Сотрудник,
    |    ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета
    |ИЗ
    |    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботниковОрганизаций
    |ГДЕ
    |    ПлановыеНачисленияРаботниковОрганизаций.ВидРасчета.КатегорияРасчета = ЗНАЧЕНИЕ(Перечисление.КатегорииРасчетов.Первичное)
    |) КАК НачисленияРаботниковОрганизаций
    |ПО СотрудникиОрганизаций.ССЫЛКА = НачисленияРаботниковОрганизаций.Сотрудник.Ссылка
    |";

Правда, в отчет попадает несколько строк для одного и того-же сотрудника, если было несколько документов по нем.
Нужно или оставить уникальные строки во вложенном отчете, или актуальные.

vadim007 Подменю пользователя
сообщение 12.07.15, 20:57
Сообщение #9

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Всем добрый вечер!
Можно-ли в запрос 1С вставить функцию? Например так:
ВЫБРАТЬ
|    СотрудникиОрганизаций.Ссылка,
|    СотрудникиОрганизаций.ТекущаяДолжностьОрганизации,
|    ВидРасчетаСотрудника((СотрудникиОрганизаций.Ссылка)

Где ВидРасчетаСотрудника((..) - функция, возвращающая ВидРасчета для заданного Сотрудника:
Функция ВидРасчетаСотрудника(Сотрудник)
    Если Не ЗначениеЗаполнено(Сотрудник) Тогда
        Возврат ""
    КонецЕсли;
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ 1
    |НачисленияРаботниковОрганизаций.ВидРасчета
    |ИЗ
    |    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК НачисленияРаботниковОрганизаций
    |ГДЕ
    |    (Сотрудник = НачисленияРаботниковОрганизаций.Сотрудник) И
    |    (НачисленияРаботниковОрганизаций.ВидРасчета.КатегорияРасчета В
    |      (ВЫБРАТЬ КатегорииРасчетов1.Ссылка
    |          ИЗ Справочник.КатегорииРасчетов КАК КатегорииРасчетов1
    |          ГДЕ (КатегорииРасчетов1.Код = ""00000"")
    |      )
    |     )
    |";
    Возврат Запрос.Выполнить();
КонецФункции



 i 

Объединил две темы в одну, у них один вопрос
 


Сообщение отредактировал logist - 13.07.15, 11:45

Acid Подменю пользователя
сообщение 12.07.15, 21:11
Сообщение #10

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

запрос - это по сути "текст"


Signature

Документируйте Код! мать вашу...


Vofka Подменю пользователя
сообщение 13.07.15, 8:10
Сообщение #11

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

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

logist Подменю пользователя
сообщение 13.07.15, 11:46
Сообщение #12

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Вложенный запрос с левым соединением по сотруднику не подходит?

upd: объединил темы, в них один вопрос и одно решение - вложенный запрос с ПЕРВЫЕ 1, левым соединением по сотруднику.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

vadim007 Подменю пользователя
сообщение 13.07.15, 11:51
Сообщение #13

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Цитата(logist @ 13.07.15, 12:46) *
Вложенный запрос с левым соединением по сотруднику не подходит?

Да уже сделал так. С функцией было-бы красивее.

logist Подменю пользователя
сообщение 13.07.15, 11:53
Сообщение #14

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(vadim007 @ 13.07.15, 12:51) *
С функцией было-бы красивее.

Почему? Физически результат одинаков, только с функцией будет больше кода.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

vadim007 Подменю пользователя
сообщение 13.07.15, 12:24
Сообщение #15

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Даже в MS Access можно вставлять свои функции в запрос.
Мне не очень нравятся тексты процедур, функций, запросов размером более 1 листа А4.
Принцип "разделяй и властвуй" помните?
Т.о. большой текст разбивается на логически осмысленные блоки.

sava1 Подменю пользователя
сообщение 13.07.15, 12:28
Сообщение #16

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Цитата(vadim007 @ 13.07.15, 13:24) *
Т.о. большой текст разбивается на логически осмысленные блоки.

Так в чем проблема?
Текст1 = "Выбрать....."
Текст2= "Выбрать...."
Запрос.Текст = Текст1+"Объединить все "+Текст2

logist Подменю пользователя
сообщение 13.07.15, 12:31
Сообщение #17

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(vadim007 @ 13.07.15, 13:24) *
Мне не очень нравятся тексты процедур, функций, запросов размером более 1 листа А4.

Данный случай вообще не подпадает под это, запрос в районе 20 строк.

Цитата(vadim007 @ 13.07.15, 13:24) *
большой текст разбивается на логически осмысленные блоки.

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

vadim007 Подменю пользователя
сообщение 13.07.15, 13:12
Сообщение #18

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1298
Из: Донецк
Спасибо сказали: 208 раз
Рейтинг: 0

Ну, должность сотрудника уже сидит в справочнике, а вот вид расчета приходится извлекать, для текущего сотрудника.
Логически оправдано это извлечение оформить в виде отдельного запроса, а т.к. 1С не поддерживает именованные запросы, как MS Access, то запрос "завернуть" в процедуру или функцию.
А то что в данном примере немного строк, это не повод расслабляться. Для этого запроса логика совсем другая, другое назначение. Значит он должен быть отдельно от основного запроса. Потом-же легче будет, если код разрастется.

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


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

 

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