С Новым годом! Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/22: Рейтинг темы: голосов - 22, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 11.05.2012
Сообщений: 5
1
1C 8.x

Внешняя печатная форма

11.05.2012, 09:31. Показов 4002. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Делал внешнюю печатная форма к ЗУП к документу "Зарплата к выплате". Там впринципе всё просто. Формирует список людей в алфавитном порядке. Расчётчики сказали мне переделать её, чтобы группировалась по подразделениям. Но тут возникла трудность. Когда выполняется запрос люди дублируются из-за подразделений, т.к. данные о подразделениях берутся из регистра, а там у людей много подразделений (были перемещения) и он отображает в каждой строчке выплату денег с каждым из подразделений.
выглядит код вот так:

+ Code
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Функция ПечатьРеестр() Экспорт
    Запрос=Новый Запрос;
 
          Запрос.Текст = "ВЫБРАТЬ
        |    ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо КАК Физлицо,
        |    ЗарплатаКВыплатеОрганизацийЗарплата.Сумма КАК Сумма,
        |    ЕСТЬNULL(РаботникиОрганизацийСрезПоследних.Сотрудник.ПодразделениеОрганизации, ДоговорНаВыполнениеРаботСФизЛицом.ПодразделениеОрганизации) КАК СотрудникПодразделениеОрганизации,
        |    РаботникиОрганизацийСрезПоследних.Период КАК Период,
        |    ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Номер КАК Номер,
        |    ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Дата КАК Дата
        |ИЗ
        |    Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Период, ) КАК РаботникиОрганизацийСрезПоследних
        |        ПО ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо = РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК ДоговорНаВыполнениеРаботСФизЛицом
        |        ПО ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо = ДоговорНаВыполнениеРаботСФизЛицом.ФизЛицо
        |ГДЕ
        |    ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка = &Ссылка
        |
        |УПОРЯДОЧИТЬ ПО
        |ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо.Наименование,
        |Период УБЫВ
        |ИТОГИ ПО
        |    Физлицо,
        |    Сумма";
                
    Запрос.Параметры.Вставить("Период",СсылкаНаОбъект.Дата);
    Запрос.Параметры.Вставить("Ссылка",СсылкаНаОбъект.Ссылка);  //ЗНАЧЕНИЕ(Документ.ЗарплатаКВыплатеОрганизаций.ПустаяСсылка)
 
    РезультатЗапроса=Запрос.Выполнить();
    Выборка=РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);//ПоГруппировкам/Прямой
 
    //ТЗ=РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);//ПоГруппировкам/Прямой
 
    //ТЗ.ВыбратьСтроку();
 
    
    
    //формирование табличного документа с печатной формой
 
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ПолеСлева = 0;
    ТабДокумент.ПолеСправа = 0;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗарплатаКВыплатеОрганизаций_Реестр";
    
    Макет = ПолучитьМакет("Реестр");
    
    ОбластьМакетаЗаголовок        = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакетаШапка            = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакетаСтрока         = Макет.ПолучитьОбласть("Строка");
    ОбластьМакетаПодвал         = Макет.ПолучитьОбласть("Подвал");
    
    ТабДокумент.Вывести(ОбластьМакетаЗаголовок);
    ОбластьМакетаШапка.Параметры.Номер = СсылкаНаОбъект.Номер;
    ОбластьМакетаШапка.Параметры.Дата = СсылкаНаОбъект.Дата;
    ОбластьМакетаШапка.Параметры.КакВыплачено = СсылкаНаОбъект.СпособВыплаты;
    ТабДокумент.Вывести(ОбластьМакетаШапка);
 
    //добавляем массив для разбиения на страницы
 
    
    ВыводимыеОбласти = Новый Массив();
    ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
    
    //заполняем строки
 
    Пока Выборка.Следующий()Цикл
        ВыборкаСумма = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
        Пока ВыборкаСумма.Следующий()Цикл
        ВыборкаПодразделение = ВыборкаСумма.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
        Если ВыборкаПодразделение.Следующий() тогда     
        ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаПодразделение);
        иначе ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаСумма); 
        
        КонецЕсли;
        // разбиение на страницы
 
        //ВыведеноСтрок = ВыведеноСтрок + 1;
 
        
    // Проверим, уместится ли строка на странице или надо открывать новую страницу
 
        ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
        
        
        
        Если ВывестиПодвалЛиста Тогда
            
            ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            ТабДокумент.Вывести(ОбластьМакетаШапка);
            //ВыведеноСтраниц = ВыведеноСтраниц + 1;
 
            КонецЕсли;
        
                ТабДокумент.Вывести(ОбластьМакетаСтрока);
    
    КонецЦикла;
    КонецЦикла;
            
    ВыводимыеОбласти = Новый Массив();
    ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
    ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
    
    
    //Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, Ложь) Цикл
 
    //    ТабДокумент.Вывести(ОбластьМакетаСтрока);
 
    //КонецЦикла;
 
    
    
    ТабДокумент.Вывести(ОбластьМакетаПодвал);
    
    Возврат ТабДокумент;
 
КонецФункции
Функция Печать () Экспорт
    Возврат    ПечатьРеестр();
    
КонецФункции
Чтобы в макете люди не дублировались я сделал вот так:

+ Code
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//заполняем строки
 
    Пока Выборка.Следующий()Цикл
        ВыборкаСумма = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
        Пока ВыборкаСумма.Следующий()Цикл
        ВыборкаПодразделение = ВыборкаСумма.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
        Если ВыборкаПодразделение.Следующий() тогда     
        ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаПодразделение);
        иначе ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаСумма); 
        
        КонецЕсли;
        // разбиение на страницы
 
        //ВыведеноСтрок = ВыведеноСтрок + 1;
 
        
    // Проверим, уместится ли строка на странице или надо открывать новую страницу
 
        ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
        
        
        
        Если ВывестиПодвалЛиста Тогда
            
            ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            ТабДокумент.Вывести(ОбластьМакетаШапка);
            //ВыведеноСтраниц = ВыведеноСтраниц + 1;
 
            КонецЕсли;
        
                ТабДокумент.Вывести(ОбластьМакетаСтрока);
    
    КонецЦикла;
    КонецЦикла;
Т.е. добавил 2 цикла.
Вопрос как мне сделать так чтобы я смог сформировать список по подразделениям, и люди не двоились


в идеале можно было бы сделать это в запросе, чтобы выбиралось подразделение на такую же дату как и дата документа, но я не знаю как. Помогите кто может плиз
Миниатюры
Внешняя печатная форма  
0
Programming
Эксперт
9485 / 562 / 19
Регистрация: 12.04.2006
Сообщений: 11,671
Блог
11.05.2012, 09:31
Ответы с готовыми решениями:

Внешняя печатная форма
Товарищи работающие в 1С 7.7 хелп!!! =) Ни разу не работал в 7 поэтому у меня щас жуткая паника!...

Внешняя печатная форма в 1С 7.7
Всем доброго дня! Появилась необходимость добавить в 1С 7.7 Бухгалтерию внешнюю печатную форму для...

Внешняя печатная форма
У меня есть документ СчетФактураВыданный. Когда его распечатываешь то в получившейся форме есть...

Внешняя печатная форма КС-2 и КС-3
Здравствуйте, я не программист, а бухгалтер. Очень понадобились внешние печатные формы КС-2 и КС-3...

9
145 / 145 / 3
Регистрация: 25.03.2011
Сообщений: 512
11.05.2012, 11:34 2
Сгруппировать запрос нужно.
0
0 / 0 / 0
Регистрация: 11.05.2012
Сообщений: 5
11.05.2012, 11:58  [ТС] 3
1C
1
2
3
4
5
6
|УПОРЯДОЧИТЬ ПО
|ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо.Наименование,
|Период УБЫВ
|ИТОГИ ПО
| Физлицо,
| Сумма";

изначально я группировал так, когда нужен был список в алфавитном порядке. Когда я группирую по подразделениям, то один и тот же человек у меня попадает в несколько подразделений (т.е. люди дублируются). т.к. данные о подразделении человека берутся из регистра сведений. А там подразделений много, и я не знаю как мне сделать так, чтобы отображалось одно подразделение, актуальное на даты составления документа

Добавлено через 12 минут
через группировку как сделать конкретно я не могу сообразить((((((((
0
145 / 145 / 3
Регистрация: 25.03.2011
Сообщений: 512
11.05.2012, 12:37 4
Упорядочить и Сгруппировать разные вещи О_о
0
0 / 0 / 0
Регистрация: 11.05.2012
Сообщений: 5
11.05.2012, 12:54  [ТС] 5
я это понял...но как сгруппировать-то так чтобы одни и те же люди не двоились в разных подразделениях? вот в чём был мой вопрос
0
0 / 0 / 0
Регистрация: 11.05.2012
Сообщений: 13
11.05.2012, 13:44 6
вот суть задачи:
вводится предложение, или несколько слов которые разделены между собой пробелами. Нужно отсортировать эти слова в алфавитном порядке и вывести их в отдельном поле Memo.
задачу нужно реализовать на C++ Builder на формах (!не в консоли!)
0
Модератор
Эксперт 1С
4029 / 2974 / 591
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
11.05.2012, 23:02 7
ВВК, Кажется ты ошибся адресом!
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
13.05.2012, 09:50 8
Цитата Сообщение от ВВК Посмотреть сообщение
вот суть задачи:
вводится предложение, или несколько слов которые разделены между собой пробелами. Нужно отсортировать эти слова в алфавитном порядке и вывести их в отдельном поле Memo.
задачу нужно реализовать на C++ Builder на формах (!не в консоли!)
Ну, в 1с система может сама всё вышеуказанное, причём несколькими способами, только Вам-то это к чему?
0
309 / 309 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
14.05.2012, 07:22 9
Сначала разберись с запросом.
Что то мне подсказывает что СрезПоследних нужно выбрать в отдельную временную таблицу. И возможно у тебя в базе несколько организаций -->>-> в условие запроса вставить организацию.
0
900 / 877 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
14.05.2012, 11:00 10
Цитата Сообщение от kuza_87 Посмотреть сообщение
Формирует список людей в алфавитном порядке. Расчётчики сказали мне переделать её, чтобы группировалась по подразделениям. Но тут возникла трудность. Когда выполняется запрос люди дублируются из-за подразделений, т.к. данные о подразделениях берутся из регистра, а там у людей много подразделений (были перемещения) и он отображает в каждой строчке выплату денег с каждым из подразделений.
Срез последних вернет только одно подразделение, в котором сотрудник работает на указанную дату.
Ваши проблемы:
1. Нет фильтра по организации;
2. Вы связываете таблицу по ФизЛицу. Одно физ лицо может работать в двух подразделениях.

Учитывая 2 пункт, без доработки конфигурации, задачу будет решить очень сложно.
0
14.05.2012, 11:00
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
14.05.2012, 11:00
Помогаю со студенческими работами здесь

Внешняя печатная форма
Народ! Помогите, пожалуйста! Делаю ВПФ Торг12 для дока ПередачаТоваров. Конфа БП 2.0. Выскакивает...

Внешняя печатная форма
Подскажите пожалуйста,как привязать внешнюю печатную форму к документу в 1с 8.2

Внешняя печатная форма
Народ! Такая проблема. Делаю впф Торг12 для БП 3.0! До этого уже несколько форм делал на упр...

Внешняя печатная форма
Здравствуйте. Я только знакомлюсь с «языком» 1с, поэтому решил обратиться за советом. Есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Блоги программистов
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­хронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru