Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
27 сен 2021, 02:02

Подсчет разных данных в одном документе

Автор Dimonmsk, 07 янв 2016, 11:56

0 Пользователей и 1 гость просматривают эту тему.

Dimonmsk

Всем привет. я новичок в этом деле, прошу не пинать!:D 

Вообщем такая ситуация, есть документ (табель уч.раб.времени), в нем отмечаются раб.дни сотрудника.
Но категории сотрудников разные. Знаю как вывести общ. итог, а вот как вывести в разные реквизиты документа суммы по должностям? не знаю(( прошу помочь !!!

Пример:

Иванов И.И. - слесарь - отработал 100 часов
Петрова М.И. - повар - отработала 36 часов
Сидоров А.Н. - слесарь - отработал 50 часов

нужно чтобы в реквизит "ЧасыСлесаря" записалось = 150 часов, а в реквизит "ЧасыПовара" = 36 часов
Как это воспроизвести программно????:btbzdb:


1С:Предприятие 8.3 (8.3.7.1776)
Самописная


Заранее СПАСИБО!

HumanVIL

Ну в целом, для конкретного случая программно это могло бы выглядеть так:
ТабличнаяЧастьТабеляПриИзменении вешается допустим на событие ТЧ ПриИзменении.

&НаКлиенте
Процедура ТабличнаяЧастьТабеляПриИзменении(Элемент)

Структура = Новый Структура;

ТЧ = Объект.ТабличнаяЧастьТабеля;
ПолучитьИтогиТЧ(ТЧ, Структура);

Объект.ЧасыСлесаря = Структура.ЧасыСлесаря;
Объект.ЧасыПовара = Структура.ЧасыПовара;

КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПолучитьИтогиТЧ(ТЧ, Структура)

ТЗ = ТЧ.Выгрузить();
ТЗ.Свернуть("Должность", "Сумма");

СтрТЗ = ТЗ.Найти(Справочники.Должности.Слесарь, "Должность");
Если СтрТЗ = Неопределено Тогда
   Структура.Вставить("ЧасыСлесаря", 0);
Иначе
   Структура.Вставить("ЧасыСлесаря", СтрТЗ.Сумма);
КонецЕсли;

СтрТЗ = ТЗ.Найти(Справочники.Должности.Повар, "Должность");
Если СтрТЗ = Неопределено Тогда
   Структура.Вставить("ЧасыПовара", 0);
Иначе
   Структура.Вставить("ЧасыПовара", СтрТЗ.Сумма);
КонецЕсли;

КонецПроцедуры


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

Dimonmsk

Адуреть! Чувак! СПАСИБО!!!!
Я уже и не надеялся (

СПАСИБО!!!!


Цитата: HumanVIL от 07 янв 2016, 15:22
Ну в целом, для конкретного случая программно это могло бы выглядеть так:
ТабличнаяЧастьТабеляПриИзменении вешается допустим на событие ТЧ ПриИзменении.

&НаКлиенте
Процедура ТабличнаяЧастьТабеляПриИзменении(Элемент)

Структура = Новый Структура;

ТЧ = Объект.ТабличнаяЧастьТабеля;
ПолучитьИтогиТЧ(ТЧ, Структура);

Объект.ЧасыСлесаря = Структура.ЧасыСлесаря;
Объект.ЧасыПовара = Структура.ЧасыПовара;

КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПолучитьИтогиТЧ(ТЧ, Структура)

ТЗ = ТЧ.Выгрузить();
ТЗ.Свернуть("Должность", "Сумма");

СтрТЗ = ТЗ.Найти(Справочники.Должности.Слесарь, "Должность");
Если СтрТЗ = Неопределено Тогда
   Структура.Вставить("ЧасыСлесаря", 0);
Иначе
   Структура.Вставить("ЧасыСлесаря", СтрТЗ.Сумма);
КонецЕсли;

СтрТЗ = ТЗ.Найти(Справочники.Должности.Повар, "Должность");
Если СтрТЗ = Неопределено Тогда
   Структура.Вставить("ЧасыПовара", 0);
Иначе
   Структура.Вставить("ЧасыПовара", СтрТЗ.Сумма);
КонецЕсли;

КонецПроцедуры


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

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск