|
v7: Итог оборотного регистра в табличную часть | ☑ | ||
---|---|---|---|---|
0
Gangar
24.10.12
✎
02:41
|
Доброго дня, уважаемые.
Дано - ТиС Украина, доработанная база. В данной конфигурации изъявили желание сделать еще и зарплатный модуль. Т.к. оплата сдельно-премиальная в зарплатную ведомость надо передать итог регистра за указанный период. В регистре есть измерение Отдел и ресурс Доход (именно его и надо передать, но так, что бы он соответствовал отделу сотрудника). ТЧ вида ФИО . Отдел . Оборот . Ставка . Премия . Итого . Вопрос - как? Запросом, последующей выгрузкой в ТЗ и заполнением табличной части из ТЗ? Прямым запросом? ... |
|||
1
zladenuw
24.10.12
✎
02:43
|
а чего сразу в ТЧ не пихать. а ты знаешь прямые запросы ?
|
|||
2
Gangar
24.10.12
✎
02:48
|
(1) не знаю прямых - но есть время и вдохновение.
|
|||
3
zladenuw
24.10.12
✎
02:49
|
прямые только тогда когда обычными долго и уныло. пока попробуй сделать так. попробуй формех. а потом уже лезь в рпямые
|
|||
4
zladenuw
24.10.12
✎
02:50
|
остальное понятно или мрак ?
|
|||
5
Изучаю1С8
24.10.12
✎
02:50
|
(3) И на кой тут формекс?
|
|||
6
Gangar
24.10.12
✎
02:52
|
(4) судя по времени на часах - мрак.
попробую на свежую голову завтра утром еще раз осмыслить =) но, если можешь указать направление - буду благодарен. |
|||
7
zladenuw
24.10.12
✎
02:53
|
(5) человек пишет про прямые запросы. может и слухом не знает про формех. а тебе только обгадить
|
|||
8
zladenuw
24.10.12
✎
02:55
|
(6) ты думай, пробуй, если че форум будет :)
|
|||
9
Изучаю1С8
24.10.12
✎
02:57
|
Прямые гораздо нужнее формекса если уж на то пошло.
|
|||
10
zladenuw
24.10.12
✎
03:01
|
(9) а ты по теме ТС. ответ не даешь. я ему про общие развитие. что надо будет для клюшки.
|
|||
11
Gangar
24.10.12
✎
03:01
|
(9) вот и я подумываю, что их изучение мне в дальнейшем пригодиться.
|
|||
12
Gangar
24.10.12
✎
03:02
|
не ругайтесь, все будет хорошо. не подскажете направление поиска - найду сам, пусть и позже.
|
|||
13
zladenuw
24.10.12
✎
03:03
|
(11) ты вообще где работаешь ?
формех, прямые запросы. для задротов. а вообще 1с8.х учи ! |
|||
14
zladenuw
24.10.12
✎
03:06
|
а вообще пробовать, читать. форум так. иногда совет. иногда сомнение по поводу решения. ты же програмер у тебя 1 млн вариантов решения. и все будут верные. если клиент видеть то что ему надо, пофиг как оно сделано. только со своим опытом, будешь понимать. какой ты был раньше нуб
|
|||
15
Gangar
24.10.12
✎
03:32
|
(13) прошу пощения, 1С начал учить 3 месяца назад. с написания отчетов.
в данный момент облазив многие форумы не увидел примеров с возможностью отбора Дохода по Отделу. есть предположение, что должно быть как то так: Функция Заполнить() Перем Запрос, ТекстЗапроса; УдалитьСтроки(); Спр = СоздатьОбъект("Справочник.Сотрудники"); Таб = СоздатьОбъект("ТаблицаЗначений"); Рег = СоздатьОбъект("Регистр.Продажи"); Таб.НоваяКолонка("ФИО"); Таб.НоваяКолонка("Отдел", "Справочник.Отделы"); Таб.НоваяКолонка("Ставка"); Таб.НоваяКолонка("Оборот"); Спр.ИспользоватьДату(ДатаДок); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Таб.УдалитьСтроки(); Рег.ИспользоватьПериод(ДатаГод(ДатаДок), ДатаМесяц(ДатаДок)); Таб.НоваяСтрока(); Таб.ФИО = Спр.ТекущийЭлемент(); Таб.Отдел = Спр.Отдел; Таб.Ставка = Спр.Ставка; Таб.Оборот = Рег.СводныйИтог(Таб.Отдел, "Доход"); Таб.ВыбратьСтроки(); Пока Таб.ПолучитьСтроку() = 1 Цикл НоваяСтрока(); Сотрудник = Таб.ФИО; Отдел = Таб.Отдел; Ставка = Таб.Ставка; Оборот = Таб.Оборот; КонецЦикла; КонецЦикла; КонецФункции Но на данном этапе ругается, что Таб.Оборот = Рег.СводныйИтог(Таб.Отдел, "Доход"): Неверный идентификатор ресурса! |
|||
16
Изучаю1С8
24.10.12
✎
03:34
|
||||
17
Gangar
24.10.12
✎
03:34
|
(15) ой, переменные там не нужны, игрался с запросами.
|
|||
18
zladenuw
24.10.12
✎
03:34
|
а просто запрос
|
|||
19
Gangar
24.10.12
✎
03:54
|
Функция Заполнить()
УдалитьСтроки(); Спр = СоздатьОбъект("Справочник.Сотрудники"); Таб = СоздатьОбъект("ТаблицаЗначений"); Рег = СоздатьОбъект("Регистр.Продажи"); Рег.ИспользоватьПериод(ДатаГод(ДатаДок), ДатаМесяц(ДатаДок)); Таб.НоваяКолонка("ФИО"); Таб.НоваяКолонка("Отдел"); Таб.НоваяКолонка("Ставка"); Таб.НоваяКолонка("Оборот"); Спр.ИспользоватьДату(ДатаДок); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Таб.УдалитьСтроки(); Таб.НоваяСтрока(); Таб.ФИО = Спр.ТекущийЭлемент(); Таб.Отдел = Спр.Отдел; Таб.Ставка = Спр.Ставка; Таб.ВыбратьСтроки(); Пока Таб.ПолучитьСтроку() = 1 Цикл НоваяСтрока(); Сотрудник = Таб.ФИО; Отдел = Таб.Отдел; Рег.СводныеИтоги(Отдел); Оборот = Рег.Доход; Ставка = Таб.Ставка; КонецЦикла; КонецЦикла; КонецФункции в таком варианте начало заполнять ТЧ, но совсем не теми цифрами, которые я получаю если делаю запрос. а из запроса не могу передать значение в ТЧ. |
|||
20
zladenuw
24.10.12
✎
03:55
|
читай про запрос. получай все что тебе надо. ты тут просто берешь обороты за период. по этому бред
|
|||
21
zladenuw
24.10.12
✎
03:58
|
ну или так
Фильтрация движений и итогов РегТовары = СоздатьОбъект("Регистр.Товары"); 1. Метод УстановитьФильтр Пример: //выбрать все движения по данному складу за период РегТовары.УстановитьФильтр(,ТекСклад); РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон); Пока РегТовары.ПолучитьДвижение()=1 Цикл |
|||
22
zladenuw
24.10.12
✎
03:59
|
(16) смотри ссылку
|
|||
23
Gangar
24.10.12
✎
04:01
|
(16),(22) за ссылку спасибо, читал.
|
|||
24
zladenuw
24.10.12
✎
04:02
|
||||
25
zladenuw
24.10.12
✎
04:03
|
и тут чепуха
Спр.ИспользоватьДату(ДатаДок); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Таб.УдалитьСтроки(); Таб.НоваяСтрока(); Таб.ФИО = Спр.ТекущийЭлемент(); Таб.Отдел = Спр.Отдел; Таб.Ставка = Спр.Ставка; Таб.ВыбратьСтроки(); Пока Таб.ПолучитьСтроку() = 1 Цикл НоваяСтрока(); Сотрудник = Таб.ФИО; Отдел = Таб.Отдел; Рег.СводныеИтоги(Отдел); Оборот = Рег.Доход; Ставка = Таб.Ставка; КонецЦикла; КонецЦикла; |
|||
26
zladenuw
24.10.12
✎
04:04
|
получаешь сначала всех сотрудников. загоняешь в список. а не в выборке. это раз.
|
|||
27
zladenuw
24.10.12
✎
04:04
|
так в регистре расчет на отдел или з.п. для сотрудника хранится в отделе ?
|
|||
28
zladenuw
24.10.12
✎
04:05
|
(0) и ты вообще откуда, город ?
|
|||
29
Gangar
24.10.12
✎
04:11
|
(27) в документе вручную должно устанавливаться значение премии. формат ТЧ я в начале привел.
грубо говоря по кнопке идет заполнение ТЧ - ФИО, Отдел, Ставка, Оборот. все, кроме оборота получаю. оборот - странные цифры, которые никак не стыкуются с тем что есть на самом деле. далее СамыйБольшойНачальник проставляет значение премии в % и идет списание с регистра Деньги на регистр Зарплата, откуда в дальнейшем списываются деньги выданные на руки. (28) Днепропетровск |
|||
30
zladenuw
24.10.12
✎
04:12
|
оборот. это то что было за период. может тебе остаток нужно. или скинь конфу гляну. я уже не трезвый. туплю где то
|
|||
31
zladenuw
24.10.12
✎
04:12
|
(29) если в отчете видишь то что нужно. тогда смотри там.
|
|||
32
zladenuw
24.10.12
✎
04:13
|
(29) в карточку добавь. а то инкогнито. типо боишься чето
|
|||
33
Gangar
24.10.12
✎
04:14
|
(27) во всех Расходных есть реквизит Отдел - по ним идет заполнение значение регистра Доход.
отчет по работе отдела я уже сделал, а вот тут что-то затупил. если делать запросом, то как должна выглядеть передача значения в ТЧ? Оборот = Запрос.СуммаДоход ? |
|||
34
zladenuw
24.10.12
✎
04:15
|
ну так то что он должен получить. если подставить доход то оно ? уже начала 4. с утра на работу. спи иди!
|
|||
35
Gangar
24.10.12
✎
04:15
|
(32) Спасибо за напоминание, добавил. Как то сразу забыл это сделать.
|
|||
36
Gangar
24.10.12
✎
04:17
|
(34) Да, таки вы правы. На свежую голову быстрее прийдёт осознание ошибки. Спасибо.
|
|||
37
zladenuw
24.10.12
✎
04:18
|
точнее осознаешь все что было за сегодня. так лучше. а то Ёбе...шся. сегодня, а завтра тю ты. куйня и за час
|
|||
38
ADirks
24.10.12
✎
08:39
|
> прямые только тогда когда обычными долго и уныло.
Т.е. всегда. Кто знает SQL, тому дико смотреть на 1С-ные запросы и прочие извращения. |
|||
39
Gangar
25.10.12
✎
04:07
|
В конечном итоге получилось так
Функция Заполнить() Если ПустоеЗначение(выбОтдел) = 1 Тогда Предупреждение("Выберите отдел для расчета ЗП.") СтатусВозврата(0); Иначе УдалитьСтроки(); ТОб = СоздатьОбъект("ТаблицаЗначений"); Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Период с ВыбНачПериода по ВыбКонецПериода; |Фирма = Регистр.Продажи.Фирма; |Отдел = Регистр.Продажи.Отдел; |Доход = Регистр.Продажи.Доход; |Функция ДоходСумма = Сумма(Дохохд); |Группировка Отдел; |Условие (Отдел в выбОтдел); |Условие (Фирма = ФирмОтбора); |"; Запрос.Выполнить(ТекстЗапроса); Запрос.Выгрузить(ТОб); ТОб.Свернуть("Отдел", "ДоходСумма") //ТОб.ВыбратьСтроку(); //Проверка ТОб.ВыбратьСтроки(); ТОб.ПолучитьСтроку(); ДоходОтдел = ТОб.ДоходСумма; Спр = СоздатьОбъект("Справочник.Сотрудники"); Спр.ИспользоватьДату(ДатаДок); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если Спр.Отдел = выбОтдел Тогда НоваяСтрока(); Сотрудник = Спр.ТекущийЭлемент(); Ставка = Спр.Ставка; Отдел = выбОтдел; Оборот = ДоходОтдел; КонецЕсли; КонецЦикла; КонецЕсли; КонецФункции |
|||
40
Karambol
25.10.12
✎
05:53
|
ЗагрузитьТабличнуюЧасть может попробовать использовать?
|
|||
41
Gangar
25.10.12
✎
12:40
|
(40) а разве для этого не надо будет заполнять еще одну ТЗ, в которой будут записи из справочника?
|
|||
42
Ёпрст
25.10.12
✎
12:44
|
(39) группировка Отдел в тексте запроса не нужна, это раз, выгрузка в тз и свертка этой тз - тем более, это два.
|
|||
43
Gangar
25.10.12
✎
13:19
|
(42) Спасибо, лишнее убрал.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |