|
Помогите очистить временную таблицу | ☑ | ||
---|---|---|---|---|
0
Kassidy_nd
05.02.13
✎
14:35
|
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ; // (Менеджер ВТ создан, в нем уже есть временная таблица ИмяВременнойТаблицы) ТекстЗапpoca = " | УНИЧТОЖИТЬ ВТРаботникиОрганизаций |"; Запрос.Текст = ТекстЗапроса; Запрос.Выполнить(); пишет {ВнешняяОбработка.ВнешняяОбработка2.МодульОбъекта(2,34)}: Переменная не определена (МенеджерВТ) Запрос.МенеджерВременныхТаблиц = <<?>>МенеджерВТ; (Проверка: Толстый клиент (обычное приложение)) {ВнешняяОбработка.ВнешняяОбработка2.МодульОбъекта(7,16)}: Переменная не определена (ТекстЗапроса) Запрос.Текст = <<?>>ТекстЗапроса; (Проверка: Толстый клиент (обычное приложение)) |
|||
1
ДенисЧ
05.02.13
✎
14:37
|
"Переменная не определена (МенеджерВТ) "
Вроде по-русски... |
|||
2
palpetrovich
05.02.13
✎
14:38
|
область видимости
|
|||
3
Kassidy_nd
05.02.13
✎
14:38
|
(1) а что надо сделать?
|
|||
4
SherifSP
05.02.13
✎
14:39
|
(0) МенеджерВТ не видит таблицу, как вроде ее там нет
|
|||
5
SherifSP
05.02.13
✎
14:40
|
(0) Допиши МенеджерВТ = Новый
|
|||
6
SherifSP
05.02.13
✎
14:40
|
+(5) МенеджерВременныхТаблиц;
|
|||
7
kosts
05.02.13
✎
14:41
|
Поиск по конфигурации "МенеджерВременныхТаблиц" (если топовая)
|
|||
8
Kassidy_nd
05.02.13
✎
14:42
|
(5) теперь пишет
{ВнешняяОбработка.ВнешняяОбработка2.МодульОбъекта(5,1)}: Тип не определен (ТекстЗапpoca) <<?>>ТекстЗапpoca = " (Проверка: Толстый клиент (обычное приложение)) |
|||
9
palpetrovich
05.02.13
✎
14:42
|
Перем МенеджерВТ экспорт; вначале модуля пробуй :)
|
|||
10
Kassidy_nd
05.02.13
✎
14:43
|
(9) написал пишет
{ВнешняяОбработка.ВнешняяОбработка2.МодульОбъекта(5,1)}: Тип не определен (ТекстЗапpoca) <<?>>ТекстЗапpoca = " (Проверка: Толстый клиент (обычное приложение)) |
|||
11
GLazNik
05.02.13
✎
14:44
|
(8) писец... а ты вот так прям и написал МенеджерВТ = Новый? и без точки запятой... и без указания того что за объект создавать?
(0) а оно тебе надо? забей... одной ВТ больше, одной меньше... |
|||
12
palpetrovich
05.02.13
✎
14:45
|
напиши так:
Если ТипЗнч(МенеджерВТ) = Тип("МенеджерВременныхТаблиц") Тогда Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = " УНИЧТОЖИТЬ ВТРаботникиОрганизаций"; Запрос.Выполнить(); КонецЕсли; |
|||
13
Kassidy_nd
05.02.13
✎
14:46
|
(11) при запуске пакета обработок в режиме Предприятие выдает ВыборкаПоДокументу = ЗапросПоДокументу.Выполнить().Выбрать();
по причине: {(3, 11)}: Временная таблица уже существует "ВТРаботникиОрганизаций" ПОМЕСТИТЬ <<?>>ВТРаботникиОрганизаций |
|||
14
GLazNik
05.02.13
✎
14:46
|
(12) ага... а еще в попытку все это засунуть... ну что б наверняка...
|
|||
15
GLazNik
05.02.13
✎
14:47
|
(13) скорее всего в этом запросе дважды создается ВТ.
|
|||
16
Reset
05.02.13
✎
14:47
|
(0)(10) "poca" в перов случае написано латиницей, во втором -
кириллицей |
|||
17
Reset
05.02.13
✎
14:48
|
-(16) точнее, это к
{ВнешняяОбработка.ВнешняяОбработка2.МодульОбъекта(7,16)}: Переменная не определена (ТекстЗапроса) Запрос.Текст = <<?>>ТекстЗапроса; (Проверка: Толстый клиент (обычное приложение)) |
|||
18
Kassidy_nd
05.02.13
✎
14:49
|
(12)выдает {ВнешняяОбработка.ВнешняяОбработка2.МодульОбъекта(6,1)}: Тип не определен (ТекстЗапpoca)
<<?>>ТекстЗапpoca = " | УНИЧТОЖИТЬ ВТРаботникиОрганизаций |"; (Проверка: Толстый клиент (обычное приложение)) |
|||
19
Kassidy_nd
05.02.13
✎
14:51
|
(17) не понял какая роса?
|
|||
20
Reset
05.02.13
✎
14:51
|
(19) ТекстЗапРОСА
|
|||
21
Reset
05.02.13
✎
14:52
|
я так понял ты уже разобрался с этой ошибкой *-)
|
|||
22
GLazNik
05.02.13
✎
14:53
|
(18) может код уж покажешь.... полностью
|
|||
23
Kassidy_nd
05.02.13
✎
14:53
|
(22) Это и есть весь Текст
|
|||
24
Kassidy_nd
05.02.13
✎
14:54
|
(22) Перем МенеджерВТ экспорт;
Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; МенеджерВТ = Новый // (Менеджер ВТ создан, в нем уже есть временная таблица ИмяВременнойТаблицы) ТекстЗапроса = "|УНИЧТОЖИТЬ ВТРаботникиОрганизаций|"; Запрос.Текст = ТекстЗапроса; Запрос.Выполнить(); |
|||
25
Kassidy_nd
05.02.13
✎
14:54
|
(24) {ВнешняяОбработка.ВнешняяОбработка2.МодульОбъекта(6,1)}: Тип не определен (ТекстЗапроса)
<<?>>ТекстЗапроса = "|УНИЧТОЖИТЬ ВТРаботникиОрганизаций|"; (Проверка: Толстый клиент (обычное приложение)) |
|||
26
GLazNik
05.02.13
✎
14:55
|
(24) ололо... ты вообще чего очищать то собрался? а?
и да... в (11) я был прав... |
|||
27
ДенисЧ
05.02.13
✎
14:55
|
МенеджерВТ = Новый
это убери |
|||
28
ДенисЧ
05.02.13
✎
14:55
|
и да, тебя там, на крыльце, метла заждалась...
|
|||
29
GLazNik
05.02.13
✎
14:56
|
+(26) если действительно нужно очистить ВТ, то нужно использовать тот же менеджер временных таблиц, что и в (13). Но скорее всего там (15)
|
|||
30
Reset
05.02.13
✎
14:58
|
ТекстЗапроса = "|УНИЧТОЖИТЬ ВТРаботникиОрганизаций|";
палки убрать или расставить как в (0) |
|||
31
Kassidy_nd
05.02.13
✎
14:58
|
Тогда подскажите как очистить временную таблицу? У меня комп вырубился при выполнении пакета обработок в режиме Предприятие
|
|||
32
ssh2006
05.02.13
✎
15:00
|
(31) > У меня комп вырубился
временная таблица очищена, задача решена |
|||
33
Reset
05.02.13
✎
15:00
|
(31) И ты хочешь очистить временную таблицу, котрая создалась до того, как комп вырубился? :)
|
|||
34
GLazNik
05.02.13
✎
15:01
|
(31) комп умный... в отличие от тебя...
|
|||
35
Kassidy_nd
05.02.13
✎
15:01
|
(33) да! Сразу отвечу на вопрос "почему?": Потому что при запуске пакета обработок в режиме Предприятие выдает ВыборкаПоДокументу = ЗапросПоДокументу.Выполнить().Выбрать();
по причине: {(3, 11)}: Временная таблица уже существует "ВТРаботникиОрганизаций" ПОМЕСТИТЬ <<?>>ВТРаботникиОрганизаций |
|||
36
Reset
05.02.13
✎
15:01
|
(35) -> (15)
|
|||
37
GLazNik
05.02.13
✎
15:03
|
(35) вот так вот выдал эту ошибку и сразу вырубился... красавец.... а говорят искусственного интеллекта еще не существует
|
|||
38
Kassidy_nd
05.02.13
✎
15:05
|
(37) ошибку выдает сейчас! После перезагрузки. Когда я пытаюсь запустить заново.
|
|||
39
ssh2006
05.02.13
✎
15:06
|
(38) успешных попыток запуска не будет пока не исправлен запрос
|
|||
40
Kassidy_nd
05.02.13
✎
15:09
|
(39) какой запрос?
|
|||
41
GLazNik
05.02.13
✎
15:10
|
(40) ЗапросПоДокументу
|
|||
42
GLazNik
05.02.13
✎
15:14
|
вдруг поможет:
Книга знаний: Временные таблицы в 8.1 |
|||
43
Kassidy_nd
05.02.13
✎
15:18
|
(41) а он вместе с обновлением в конфигураторе и поидее должен быть правильным
|
|||
44
hhhh
05.02.13
✎
15:23
|
(43) наверно, два раза запустил Запрос.Выполнить(); один раз отладчиком, другой раз в программе. Забей, в общем. Ничего не уничтожай.
|
|||
45
Kassidy_nd
05.02.13
✎
15:25
|
(44) да! Так и сделал, а именно - ЗАБИЛ! Легче на бекапе заново обновление поставить!
|
|||
46
Kassidy_nd
05.02.13
✎
15:25
|
Спасибо всем за помощь!
|
|||
47
Kassidy_nd
06.02.13
✎
08:25
|
В общем не дает он выполнить ЗаполнениеСотрудников
Процедура ЗаполнитьНаборЗаписейОрганизаций(ПолеДаты, МенеджерРегистров, ИмяРегистра, ДопУсловие = "", ПериодНаКонецМесяца = Ложь) ИмяРеквизитаФизлицо = "УдалитьФизлицо"; Если ТипЗнч(МенеджерРегистров) = Тип("РегистрыСведенийМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрСведений"; Организация = "Организация"; ИначеЕсли ТипЗнч(МенеджерРегистров) = Тип("РегистрыНакопленияМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрНакопления"; Если ИмяРегистра = "РасчетПервойПоловиныМесяца" Тогда ИмяРеквизитаФизлицо = "Физлицо"; КонецЕсли; Организация = "Организация"; ИначеЕсли ТипЗнч(МенеджерРегистров) = Тип("РегистрыБухгалтерииМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрБухгалтерии"; Организация = "Организация"; ИначеЕсли ТипЗнч(МенеджерРегистров) = Тип("РегистрыРасчетаМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрРасчета"; ИмяРеквизитаФизлицо = "Физлицо"; Организация = "Организация.ГоловнаяОрганизация"; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Регистр.Организация КАК Организация, | Регистр.Регистратор КАК Приказ, | МИНИМУМ(Регистр." + ПолеДаты + ") КАК Период |ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр |ГДЕ | " + ДопУсловие + " Регистр.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | |СГРУППИРОВАТЬ ПО | Регистр.Организация, | Регистр.Регистратор | |УПОРЯДОЧИТЬ ПО | Период"; ЗапросПоДокументу = Новый Запрос; ЗапросПоДокументуВТ = "ВЫБРАТЬ | РаботникиОрганизаций.* |ПОМЕСТИТЬ ВТРаботникиОрганизаций |ИЗ | РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций |ГДЕ | РаботникиОрганизаций.УдалитьФизЛицо В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | Рег." + ИмяРеквизитаФизлицо + " | ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Рег | ГДЕ | Рег.Регистратор = &Регистратор) | |ИНДЕКСИРОВАТЬ ПО | Организация, | УдалитьФизлицо, | УдалитьПриказ"; ЗапросПоДокументуТекст = "ВЫБРАТЬ | Сотрудники.Сотрудник, | ЕСТЬNULL(Сотрудники.НомерСтроки, Регистр.НомерСтроки) КАК НомерСтроки, | Регистр.* |ИЗ | (ВЫБРАТЬ | Работники.Сотрудник КАК Сотрудник, | Регистр.НомерСтроки КАК НомерСтроки |ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ * ИЗ ВТРаботникиОрганизаций) КАК Работники | ПО Регистр." + ИмяРеквизитаФизлицо + " = Работники.УдалитьФизлицо | И Регистр.УдалитьПриказ = Работники.Регистратор | И Регистр." + Организация + " = Работники.Организация | И Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) | И Регистр.Регистратор = &Регистратор | //УСЛОВИЕ | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | РаботникиОрганизаций.Сотрудник, | Периоды.НомерСтроки | ИЗ | (ВЫБРАТЬ * ИЗ ВТРаботникиОрганизаций) КАК РаботникиОрганизаций | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | МИНИМУМ(ПериодыВсе.Период) КАК Период, | ПериодыВсе.Физлицо КАК Физлицо, | ПериодыВсе.Организация КАК Организация, | ПериодыВсе.НомерСтроки КАК НомерСтроки | ИЗ | (ВЫБРАТЬ | МАКСИМУМ(Работники.Период) КАК Период, | Регистр." + ИмяРеквизитаФизлицо + " КАК Физлицо, | Регистр." + Организация + " КАК Организация, | Регистр.НомерСтроки КАК НомерСтроки | ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ * ИЗ ВТРаботникиОрганизаций) КАК Работники | ПО Регистр." + ИмяРеквизитаФизлицо + " = Работники.УдалитьФизлицо | И Регистр." + Организация + " = Работники.Организация | И Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) | И (Регистр.Регистратор = &Регистратор) | И (Регистр.УдалитьПриказ = ЗНАЧЕНИЕ(Документ.ПриемНаРаботуВОрганизацию.ПустаяСсылка)) | И Работники.Период <= " + ?(ПериодНаКонецМесяца, "КОНЕЦПЕРИОДА(Регистр." + ПолеДаты + ", МЕСЯЦ)", "Регистр." + ПолеДаты)+" | //УСЛОВИЕ | | СГРУППИРОВАТЬ ПО | Регистр." + ИмяРеквизитаФизлицо + ", | Регистр." + Организация + ", | Регистр.НомерСтроки | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | МИНИМУМ(Работники.Период), | Регистр." + ИмяРеквизитаФизлицо + ", | Регистр." + Организация + ", | Регистр.НомерСтроки | ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ * ИЗ ВТРаботникиОрганизаций) КАК Работники | ПО Регистр." + ИмяРеквизитаФизлицо + " = Работники.УдалитьФизлицо | И Регистр." + Организация + " = Работники.Организация | И Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) | И Регистр.Регистратор = &Регистратор | И Регистр.УдалитьПриказ = ЗНАЧЕНИЕ(Документ.ПриемНаРаботуВОрганизацию.ПустаяСсылка) | И Работники.Период > " + ?(ПериодНаКонецМесяца, "КОНЕЦПЕРИОДА(Регистр." + ПолеДаты + ", МЕСЯЦ)", "Регистр." + ПолеДаты)+" | //УСЛОВИЕ | | СГРУППИРОВАТЬ ПО | Регистр." + ИмяРеквизитаФизлицо + ", | Регистр." + Организация + ", | Регистр.НомерСтроки) КАК ПериодыВсе | | СГРУППИРОВАТЬ ПО | ПериодыВсе.Физлицо, | ПериодыВсе.Организация, | ПериодыВсе.НомерСтроки) КАК Периоды | ПО РаботникиОрганизаций.Организация = Периоды.Организация | И РаботникиОрганизаций.УдалитьФизлицо = Периоды.Физлицо | И РаботникиОрганизаций.Период = Периоды.Период | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | ПриказыДоДокумента.Сотрудник, | ПриказыДоДокумента.НомерСтроки | ИЗ | (ВЫБРАТЬ | ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник КАК Сотрудник, | Периоды.НомерСтроки КАК НомерСтроки | ИЗ | (ВЫБРАТЬ | МАКСИМУМ(НАЧАЛОПЕРИОДА(ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Дата, ДЕНЬ)) КАК Период, | Регистр." + ИмяРеквизитаФизлицо + " КАК Физлицо, | Регистр.Организация КАК Организация, | Регистр.НомерСтроки КАК НомерСтроки | ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации | ПО Регистр." + ИмяРеквизитаФизлицо + " = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо | И Регистр.Организация = ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Организация | И Регистр.Регистратор = &Регистратор | И Регистр.УдалитьПриказ = ЗНАЧЕНИЕ(Документ.ПриемНаРаботуВОрганизацию.ПустаяСсылка) | И (НЕ ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Проведен) | И (НАЧАЛОПЕРИОДА(ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Дата, ДЕНЬ) <= "+?(ПериодНаКонецМесяца, "КОНЕЦПЕРИОДА(Регистр." + ПолеДаты + ", МЕСЯЦ)", "Регистр." + ПолеДаты)+") | //УСЛОВИЕ | | СГРУППИРОВАТЬ ПО | Регистр." + ИмяРеквизитаФизлицо + ", | Регистр.Организация, | Регистр.НомерСтроки) КАК Периоды | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации | ПО (Периоды.Период = НАЧАЛОПЕРИОДА(ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Дата, ДЕНЬ)) | И Периоды.Физлицо = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо | И (НЕ ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Проведен) | И Периоды.Организация = ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Организация) КАК ПриказыДоДокумента) КАК Сотрудники | ПРАВОЕ СОЕДИНЕНИЕ " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ПО Сотрудники.НомерСтроки = Регистр.НомерСтроки | //УСЛОВИЕ |ГДЕ | Регистр.Регистратор = &Регистратор | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Если (ИмяРегистра = "БУДополнительныеНачисления") ИЛИ (ИмяРегистра = "РасчетПервойПоловиныМесяца") Тогда ЗапросПоДокументуТекст = СтрЗаменить(ЗапросПоДокументуТекст, "//УСЛОВИЕ", "И Регистр.УдалитьПриказ <> ЗНАЧЕНИЕ(Документ.ПриемНаРаботуВОрганизацию.ПустаяСсылка)"); ИначеЕсли (ИмяРегистра = "ДополнительныеНачисленияРаботниковОрганизаций") Тогда ЗапросПоДокументуТекст = СтрЗаменить(ЗапросПоДокументуТекст, "//УСЛОВИЕ", "И Регистр.ДокументОснование = ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка)"); КонецЕсли; Выборка = Запрос.Выполнить().Выбрать(); КоличествоЗаписей = Выборка.Количество(); ИндексЗаписи = 1; Счетчик = 0; ПоддержкаВнутреннегоСовместительства = БылаПоддержкаВнутреннегоСовместительства(); Если ПрефиксИмениТаблицы = "РегистрНакопления" Тогда МенеджерРегистров[ИмяРегистра].УстановитьИспользованиеИтогов(Ложь); КонецЕсли; Если КоличествоДокументовВОднойТранзакции <> 0 Тогда НачатьТранзакцию(); КонецЕсли; Пока Выборка.Следующий() Цикл Если КоличествоДокументовВОднойТранзакции <> 0 Тогда Если Счетчик >= КоличествоДокументовВОднойТранзакции Тогда Попытка ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное); ОтменитьТранзакцию(); КонецПопытки; НачатьТранзакцию(); Счетчик = 0; КонецЕсли; КонецЕсли; Счетчик = Счетчик + 1; #Если Клиент Тогда Состояние(ПрефиксИмениТаблицы + "." + ИмяРегистра + ". Обрабатывается набор записей " + ИндексЗаписи + " из " + КоличествоЗаписей); #КонецЕсли ЗапросПоДокументу.УстановитьПараметр("Регистратор", Выборка.Приказ); МТ = Новый МенеджерВременныхТаблиц; ЗапросПоДокументу.МенеджерВременныхТаблиц = МТ; ЗапросПоДокументу.Текст = ЗапросПоДокументуВТ; ЗапросПоДокументу.Выполнить(); Если ПоддержкаВнутреннегоСовместительства[Выборка.Организация] Тогда ЗапросПоДокументу.Текст = ЗапросПоДокументуТекст; КонецЕсли; ИндексЗаписи = ИндексЗаписи + 1; НаборЗаписей = МенеджерРегистров[ИмяРегистра].СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Значение = Выборка.Приказ; НаборЗаписей.ОбменДанными.Загрузка = Истина; ВыборкаПоДокументу = ЗапросПоДокументу.Выполнить().Выбрать(); МТ.Закрыть(); Если ВыборкаПоДокументу.Количество() = 0 Тогда Продолжить; КонецЕсли; Пока ВыборкаПоДокументу.Следующий() Цикл Строка = НаборЗаписей.Добавить(); ЗаполнитьЗначенияСвойств(Строка, ВыборкаПоДокументу); Если ИмяРегистра = "БУОсновныеНачисления" Тогда Строка.ПериодДействияКонец = КонецДня(Строка.ПериодДействияКонец); КонецЕсли; КонецЦикла; НаборЗаписей.Записать(); НаборЗаписей.Очистить(); КонецЦикла; Если КоличествоДокументовВОднойТранзакции <> 0 Тогда Попытка ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное); ОтменитьТранзакцию(); КонецПопытки; КонецЕсли; Если ПрефиксИмениТаблицы = "РегистрНакопления" Тогда МенеджерРегистров[ИмяРегистра].УстановитьИспользованиеИтогов(Истина); МенеджерРегистров[ИмяРегистра].ПересчитатьИтоги(); КонецЕсли; КонецПроцедуры // ЗаполнитьНаборЗаписейОрганизаций() |
|||
48
Kassidy_nd
06.02.13
✎
08:26
|
помогите пожалуйста выдает
ВыборкаПоДокументу = ЗапросПоДокументу.Выполнить().Выбрать(); по причине: {(3, 11)}: Временная таблица уже существует "ВТРаботникиОрганизаций" ПОМЕСТИТЬ <<?>>ВТРаботникиОрганизаций |
|||
49
cw014
06.02.13
✎
08:28
|
(0) Огласите весь код пожалуйста
|
|||
50
Kassidy_nd
06.02.13
✎
08:30
|
(49) весь код:
// Процедура - обработчик события "ПередОткрытием" формы // Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) КоличествоДокументовВОднойТранзакции = 100; КонецПроцедуры // Процедура - обработчик нажатия кнопки "Выполнить" // Процедура КнопкаВыполнитьНажатие(Кнопка) ВыполнитьОбработку(); КонецПроцедуры // Процедура выполняет обработку данных // Процедура ВыполнитьОбработку() Экспорт ОбновитьСотрудниковОрганизаций(); ОбновитьСотрудников(); ОбновитьДоговорников(); СоздатьСотрудниковБезПриказовОПриеме(); ЗаполнитьЗаполнениеПлановыхНачислений(); ОчиститьРегистрыОтФизлицаПриказа(); ОбновитьТекущиеДанныеСотрудников(); ЗаполнитьСотрудникаВЗанятыхШтатныхЕдиницах(); ЗаполнитьРегистрыКонтроляПериодов(); КонецПроцедуры // Функция возвращает соответствие значений учетной политики ПоддержкаВнутреннегоСовместительства // Функция БылаПоддержкаВнутреннегоСовместительства() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | УчетнаяПолитикаПоПерсоналуОрганизаций.УдалитьПоддержкаВнутреннегоСовместительства КАК ПоддержкаВнутреннегоСовместительства, | УчетнаяПолитикаПоПерсоналуОрганизаций.Организация КАК Организация |ИЗ | РегистрСведений.УчетнаяПолитикаПоПерсоналуОрганизаций КАК УчетнаяПолитикаПоПерсоналуОрганизаций"; Выборка = Запрос.Выполнить().Выбрать(); СоответствиеОрганизацииПоддержкиСовместительства = Новый Соответствие; Пока Выборка.Следующий() Цикл СоответствиеОрганизацииПоддержкиСовместительства.Вставить(Выборка.Организация, Выборка.ПоддержкаВнутреннегоСовместительства); КонецЦикла; Возврат СоответствиеОрганизацииПоддержкиСовместительства; КонецФункции // БылаПоддержкаВнутреннегоСовместительства() // Заполнение справочника "Сотрудники" по регистру сведений "РаботникиОрганизаций" // Процедура РегистрацияСотрудниковОрганизацийПоРегистру() // создание сотрудников по приказам о приеме на работу Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | РаботникиОрганизаций.Регистратор КАК Приказ |ИЗ | РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций |ГДЕ | РаботникиОрганизаций.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) И | РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу)"; ЗапросПоДокументу = Новый Запрос; ЗапросПоДокументу.Текст = "ВЫБРАТЬ | РаботникиОрганизаций.НомерСтроки КАК НомерСтроки, | РаботникиОрганизаций.УдалитьТабельныйНомер КАК Код, | РаботникиОрганизаций.УдалитьФизлицо.Наименование КАК Наименование, | РаботникиОрганизаций.УдалитьФизлицо КАК Физлицо, | ИСТИНА КАК Актуальность, | РаботникиОрганизаций.Организация КАК Организация, | РаботникиОрганизаций.ОбособленноеПодразделение, | РаботникиОрганизаций.Регистратор.УдалитьВидЗанятости КАК ВидЗанятости, | ТрудовойДоговорДокумент.Номер КАК НомерДоговора, | ТрудовойДоговорДокумент.Дата КАК ДатаДоговора, | РаботникиОрганизаций.ГрафикРаботы, | РаботникиОрганизаций.ТарифныйРазряд, | РаботникиОрганизаций.ПодразделениеОрганизации, | РаботникиОрганизаций.Должность, | РаботникиОрганизаций.ЗанимаемыхСтавок, | ПриемНаРаботуВОрганизациюРаботникиОрганизации.ДатаПриема КАК ДатаНачала, | ПриемНаРаботуВОрганизациюРаботникиОрганизации.ДатаУвольнения КАК ДатаОкончания, | ПриемНаРаботуВОрганизациюРаботникиОрганизации.ИспытательныйСрок, | ПриемНаРаботуВОрганизациюРаботникиОрганизации.СпособРасчета, | ТрудовойДоговорДокумент.ТарифнаяСтавка КАК ТарифнаяСтавка, | ТрудовойДоговорДокумент.ВалютаТарифнойСтавки КАК ВалютаТарифнойСтавки, | ТрудовойДоговорДокумент.ПерсональныеНадбавки.( | Надбавка, | Показатель1, | Показатель2, | Показатель3, | Показатель4, | Валюта1, | Валюта2, | Валюта3, | Валюта4 | ), | РаботникиОрганизаций.Период, | РаботникиОрганизаций.Регистратор, | РаботникиОрганизаций.Активность, | РаботникиОрганизаций.УдалитьФизлицо, | РаботникиОрганизаций.УдалитьПриказ, | РаботникиОрганизаций.УдалитьТабельныйНомер КАК ТабельныйНомер, | РаботникиОрганизаций.ПричинаИзмененияСостояния, | ВЫБОР | КОГДА ПриемНаРаботуВОрганизациюРаботникиОрганизации.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоДням) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоДням) | КОГДА ПриемНаРаботуВОрганизациюРаботникиОрганизации.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоЧасам) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам) | КОГДА ПриемНаРаботуВОрганизациюРаботникиОрганизации.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоДневнойТарифнойСтавке) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ТарифДневной) | КОГДА ПриемНаРаботуВОрганизациюРаботникиОрганизации.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ТарифЧасовой) | КОГДА ПриемНаРаботуВОрганизациюРаботникиОрганизации.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.СдельныйЗаработок) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.СдельнаяОплата) | ИНАЧЕ | ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ПустаяСсылка) | КОНЕЦ КАК ВидРасчета |ИЗ | РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации | ЛЕВОЕ СОЕДИНЕНИЕ Документ.УдалитьТрудовойДоговор КАК ТрудовойДоговорДокумент | ПО ПриемНаРаботуВОрганизациюРаботникиОрганизации.УдалитьТрудовойДоговор = ТрудовойДоговорДокумент.Ссылка | ПО (ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка = &Регистратор) | И РаботникиОрганизаций.УдалитьФизлицо = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо |ГДЕ | РаботникиОрганизаций.Регистратор = &Регистратор | И РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Выборка = Запрос.Выполнить().Выбрать(); КоличествоЗаписей = Выборка.Количество(); ИндексЗаписи = 1; Пока Выборка.Следующий() Цикл #Если Клиент Тогда Состояние("Сотрудники организаций. Обрабатывается набор записей " + ИндексЗаписи + " из " + КоличествоЗаписей); #КонецЕсли ИндексЗаписи = ИндексЗаписи + 1; НаборЗаписей = РегистрыСведений.РаботникиОрганизаций.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Значение = Выборка.Приказ; НаборЗаписей.ОбменДанными.Загрузка = Истина; ЗапросПоДокументу.УстановитьПараметр("Регистратор", Выборка.Приказ); ВыборкаПоДокументу = ЗапросПоДокументу.Выполнить().Выбрать(); Пока ВыборкаПоДокументу.Следующий() Цикл Сотрудник = Справочники.СотрудникиОрганизаций.СоздатьЭлемент(); ЗаполнитьЗначенияСвойств(Сотрудник, ВыборкаПоДокументу); Сотрудник.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.ТрудовойДоговор; Сотрудник.СтруктурнаяЕдиница = ВыборкаПоДокументу.ОбособленноеПодразделение; Сотрудник.ПерсональныеНадбавки.Загрузить(ВыборкаПоДокументу.ПерсональныеНадбавки.Выгрузить()); Если Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство Тогда Сотрудник.Наименование = Сотрудник.Наименование + " (вн. совм.)"; Сотрудник.ПостфиксНаименования = "(вн. совм.)"; ИначеЕсли Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы Тогда Сотрудник.Наименование = Сотрудник.Наименование + " (осн.)"; Сотрудник.ПостфиксНаименования = "(осн.)"; Иначе Сотрудник.Наименование = Сотрудник.Наименование + " (совм.)"; Сотрудник.ПостфиксНаименования = "(совм.)"; КонецЕсли; Сотрудник.Записать(); Строка = НаборЗаписей.Добавить(); ЗаполнитьЗначенияСвойств(Строка, ВыборкаПоДокументу); Строка.Сотрудник = Сотрудник.Ссылка; КонецЦикла; НаборЗаписей.Записать(); НаборЗаписей.Очистить(); КонецЦикла; КонецПроцедуры // РегистрацияСотрудниковОрганизацийПоРегистру() // Заполнение справочника "Сотрудники" по документу "ПриемНаРаботуВОрганизацию" // Процедура РегистрацияСотрудниковОрганизацийПоДокументу() // создание сотрудников по приказам о приеме на работу Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Док.Ссылка КАК Документ |ИЗ | Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК Док |ГДЕ | Док.ФизЛицо <> ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) | И (НЕ Док.Ссылка.Проведен)"; ЗапросПоДокументу = Новый Запрос; ЗапросПоДокументу.Текст = "ВЫБРАТЬ | Прием.НомерСтроки, | Прием.УдалитьТабельныйНомер КАК Код, | Прием.ФизЛицо.Наименование КАК Наименование, | Прием.ФизЛицо КАК Физлицо, | ИСТИНА КАК Актуальность, | Прием.Ссылка.Организация.ГоловнаяОрганизация КАК Организация, | ВЫБОР | КОГДА Прием.Ссылка.Организация.ГоловнаяОрганизация = Прием.Ссылка.Организация | ТОГДА Прием.Ссылка.Организация.ГоловнаяОрганизация | ИНАЧЕ Прием.Ссылка.Организация | КОНЕЦ КАК ОбособленноеПодразделение, | Прием.Ссылка.УдалитьВидЗанятости КАК ВидЗанятости, | ТД.Номер КАК НомерДоговора, | ТД.Дата КАК ДатаДоговора, | Прием.ГрафикРаботы, | Прием.ПодразделениеОрганизации, | Прием.Должность, | Прием.ЗанимаемыхСтавок, | Прием.ДатаПриема КАК ДатаНачала, | Прием.ДатаУвольнения КАК ДатаОкончания, | Прием.ИспытательныйСрок, | Прием.СпособРасчета, | ТД.ТарифнаяСтавка КАК ТарифнаяСтавка, | ТД.ВалютаТарифнойСтавки КАК ВалютаТарифнойСтавки, | ТД.ПерсональныеНадбавки.( | Надбавка, | Показатель1, | Показатель2, | Показатель3, | Показатель4, | Валюта1, | Валюта2, | Валюта3, | Валюта4 | ), | ВЫБОР | КОГДА Прием.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоДням) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоДням) | КОГДА Прием.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоЧасам) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам) | КОГДА Прием.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоДневнойТарифнойСтавке) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ТарифДневной) | КОГДА Прием.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ТарифЧасовой) | КОГДА Прием.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.СдельныйЗаработок) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.СдельнаяОплата) | ИНАЧЕ | ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ПустаяСсылка) | КОНЕЦ КАК ВидРасчета |ИЗ | Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК Прием | ЛЕВОЕ СОЕДИНЕНИЕ Документ.УдалитьТрудовойДоговор КАК ТД | ПО Прием.УдалитьТрудовойДоговор = ТД.Ссылка |ГДЕ | Прием.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | И Прием.ФизЛицо <> ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) | И Прием.Ссылка = &Регистратор"; Выборка = Запрос.Выполнить().Выбрать(); КоличествоЗаписей = Выборка.Количество(); ИндексЗаписи = 1; Счетчик = 0; Если КоличествоДокументовВОднойТранзакции <> 0 Тогда НачатьТранзакцию(); КонецЕсли; Пока Выборка.Следующий() Цикл Если КоличествоДокументовВОднойТранзакции <> 0 Тогда Если Счетчик >= КоличествоДокументовВОднойТранзакции Тогда Попытка ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное); ОтменитьТранзакцию(); КонецПопытки; НачатьТранзакцию(); Счетчик = 0; КонецЕсли; КонецЕсли; Счетчик = Счетчик + 1; #Если Клиент Тогда Состояние("Сотрудники организаций. Обрабатывается документ " + ИндексЗаписи + " из " + КоличествоЗаписей); #КонецЕсли ИндексЗаписи = ИндексЗаписи + 1; ДокументОбъект = Выборка.Документ.ПолучитьОбъект(); ДокументОбъект.ОбменДанными.Загрузка = Истина; ЗапросПоДокументу.УстановитьПараметр("Регистратор", Выборка.Документ); ВыборкаПоДокументу = ЗапросПоДокументу.Выполнить().Выбрать(); Если КоличествоДокументовВОднойТранзакции <> 0 Тогда НачатьТранзакцию(); КонецЕсли; Пока ВыборкаПоДокументу.Следующий() Цикл Сотрудник = Справочники.СотрудникиОрганизаций.СоздатьЭлемент(); ЗаполнитьЗначенияСвойств(Сотрудник, ВыборкаПоДокументу); Сотрудник.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.ТрудовойДоговор; Сотрудник.СтруктурнаяЕдиница = ВыборкаПоДокументу.ОбособленноеПодразделение; Сотрудник.ПерсональныеНадбавки.Загрузить(ВыборкаПоДокументу.ПерсональныеНадбавки.Выгрузить()); Если Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство Тогда Сотрудник.Наименование = Сотрудник.Наименование + " (вн. совм.)"; Сотрудник.ПостфиксНаименования = "(вн. совм.)"; ИначеЕсли Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы Тогда Сотрудник.Наименование = Сотрудник.Наименование + " (осн.)"; Сотрудник.ПостфиксНаименования = "(осн.)"; Иначе Сотрудник.Наименование = Сотрудник.Наименование + " (совм.)"; Сотрудник.ПостфиксНаименования = "(совм.)"; КонецЕсли; Сотрудник.Записать(); Строка = ДокументОбъект.РаботникиОрганизации.Найти(ВыборкаПоДокументу.НомерСтроки, "НомерСтроки"); Строка.Сотрудник = Сотрудник.Ссылка; КонецЦикла; Попытка ДокументОбъект.Записать(); Исключение Сообщить(" ошибка при обновлении " + ДокументОбъект.Ссылка + ": " + ОписаниеОшибки()); КонецПопытки; КонецЦикла; Если КоличествоДокументовВОднойТранзакции <> 0 Тогда Попытка ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное); ОтменитьТранзакцию(); КонецПопытки; КонецЕсли; КонецПроцедуры // РегистрацияСотрудниковОрганизацийПоДокументу() // Заполнение справочника "Сотрудники" по сотрудникам упр учета // Процедура РегистрацияСотрудников() // создание сотрудников по приказам о приеме на работу Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТрудовойДоговор", Перечисления.ВидыДоговоровСФизЛицами.ТрудовойДоговор); Запрос.УстановитьПараметр("ДоговорУправленческий", Перечисления.ВидыДоговоровСФизЛицами.ДоговорУправленческий); Запрос.УстановитьПараметр("ОсновноеМестоРаботы", Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы); Запрос.УстановитьПараметр("Совместительство", Перечисления.ВидыЗанятостиВОрганизации.Совместительство); Запрос.Текст = "ВЫБРАТЬ | Работники.Регистратор КАК Приказ, | Работники.УдалитьТабельныйНомер КАК Код, | Работники.ФизЛицо.Наименование КАК Наименование, | Работники.ФизЛицо КАК Физлицо, | ИСТИНА КАК Актуальность |ИЗ | РегистрСведений.Работники КАК Работники | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботу.Работники КАК ПриемНаРаботуРаботники | ПО Работники.НомерСтроки = ПриемНаРаботуРаботники.НомерСтроки | И Работники.Регистратор = ПриемНаРаботуРаботники.Ссылка | И (Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)) | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ВЫБОР | КОГДА (НЕ РаботникиОсновноеМесто.Сотрудник ЕСТЬ NULL ) | ТОГДА РаботникиОсновноеМесто.Сотрудник | КОГДА (НЕ РаботникиСовместительство.Сотрудник ЕСТЬ NULL ) | ТОГДА РаботникиСовместительство.Сотрудник | КОГДА (НЕ СотрудникиДУ.Сотрудник ЕСТЬ NULL ) | ТОГДА СотрудникиДУ.Сотрудник | ИНАЧЕ NULL | КОНЕЦ КАК Сотрудник, | ВЫБОР | КОГДА (НЕ РаботникиОсновноеМесто.Физлицо ЕСТЬ NULL ) | ТОГДА РаботникиОсновноеМесто.Физлицо | КОГДА (НЕ РаботникиСовместительство.Физлицо ЕСТЬ NULL ) | ТОГДА РаботникиСовместительство.Физлицо | КОГДА (НЕ СотрудникиДУ.Физлицо ЕСТЬ NULL ) | ТОГДА СотрудникиДУ.Физлицо | ИНАЧЕ NULL | КОНЕЦ КАК Физлицо | ИЗ | (ВЫБРАТЬ | МАКСИМУМ(СотрудникиДУ.Ссылка) КАК Сотрудник, | СотрудникиДУ.Физлицо КАК Физлицо | ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиДУ | ГДЕ | СотрудникиДУ.ВидДоговора = &ДоговорУправленческий | | СГРУППИРОВАТЬ ПО | СотрудникиДУ.Физлицо) КАК СотрудникиДУ | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | МАКСИМУМ(РаботникиОсновноеМесто.Сотрудник) КАК Сотрудник, | РаботникиОсновноеМесто.Сотрудник.Физлицо КАК Физлицо | ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних( | , | Сотрудник.ВидДоговора = &ТрудовойДоговор | И Сотрудник.ВидЗанятости = &ОсновноеМестоРаботы) КАК РаботникиОсновноеМесто | ГДЕ | РаботникиОсновноеМесто.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | | СГРУППИРОВАТЬ ПО | РаботникиОсновноеМесто.Сотрудник.Физлицо) КАК РаботникиОсновноеМесто | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | МАКСИМУМ(РаботникиСовместительство.Сотрудник) КАК Сотрудник, | РаботникиСовместительство.Сотрудник.Физлицо КАК Физлицо | ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних( | , | Сотрудник.ВидДоговора = &ТрудовойДоговор | И Сотрудник.ВидЗанятости = &Совместительство) КАК РаботникиСовместительство | ГДЕ | РаботникиСовместительство.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | | СГРУППИРОВАТЬ ПО | РаботникиСовместительство.Сотрудник.Физлицо) КАК РаботникиСовместительство | ПО РаботникиОсновноеМесто.Физлицо = РаботникиСовместительство.Физлицо | ПО СотрудникиДУ.Физлицо = РаботникиОсновноеМесто.Физлицо) КАК Сотрудники | ПО Работники.ФизЛицо = Сотрудники.Физлицо |ГДЕ | Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) | И ВЫБОР | КОГДА ПриемНаРаботуРаботники.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | ТОГДА Сотрудники.Сотрудник | ИНАЧЕ ПриемНаРаботуРаботники.Сотрудник | КОНЕЦ ЕСТЬ NULL | |УПОРЯДОЧИТЬ ПО | Приказ, | Работники.НомерСтроки"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.СледующийПоЗначениюПоля("Приказ") Цикл #Если Клиент Тогда Состояние("Сотрудники предприятия: " + Выборка.Приказ); #КонецЕсли Пока Выборка.Следующий() Цикл Сотрудник = Справочники.СотрудникиОрганизаций.СоздатьЭлемент(); ЗаполнитьЗначенияСвойств(Сотрудник, Выборка); Сотрудник.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.ДоговорУправленческий; Сотрудник.Записать(); КонецЦикла; КонецЦикла; КонецПроцедуры // РегистрацияСотрудников() // Заполнение справочника "Сотрудники" по договорникам // Процедура РегистрацияДоговорников() ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить(); // создание сотрудников по приказам о приеме на работу Запрос = Новый Запрос; ВидыДоговоров = Новый Массив; ВидыДоговоров.Добавить(Перечисления.ВидыДоговоровСФизЛицами.Авторский); ВидыДоговоров.Добавить(Перечисления.ВидыДоговоровСФизЛицами.Подряда); ВидыДоговоров.Добавить(Перечисления.ВидыДоговоровСФизЛицами.Лицензионный); Запрос.УстановитьПараметр("ВидыДоговоров", ВидыДоговоров); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ДоговорНаВыполнениеРаботСФизЛицом.Ссылка КАК Документ |ИЗ | Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК ДоговорНаВыполнениеРаботСФизЛицом |ГДЕ | ДоговорНаВыполнениеРаботСФизЛицом.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | И ДоговорНаВыполнениеРаботСФизЛицом.Физлицо <> ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) | И ДоговорНаВыполнениеРаботСФизЛицом.ВидДоговора В(&ВидыДоговоров)"; ЗапросПоДокументу = Новый Запрос; ЗапросПоДокументу.Текст = "ВЫБРАТЬ | ДоговорНаВыполнениеРаботСФизЛицом.Ссылка КАК Договор, | ДоговорНаВыполнениеРаботСФизЛицом.ВидДоговора, | ДоговорНаВыполнениеРаботСФизЛицом.ФизЛицо КАК Физлицо, | ДоговорНаВыполнениеРаботСФизЛицом.ФизЛицо.Наименование КАК Наименование, | ВЫБОР | КОГДА ДоговорНаВыполнениеРаботСФизЛицом.Организация.ГоловнаяОрганизация = ДоговорНаВыполнениеРаботСФизЛицом.Организация | ТОГДА ДоговорНаВыполнениеРаботСФизЛицом.Организация | ИНАЧЕ ДоговорНаВыполнениеРаботСФизЛицом.Организация.ГоловнаяОрганизация | КОНЕЦ КАК Организация, | ДоговорНаВыполнениеРаботСФизЛицом.Организация КАК ОбособленноеПодразделение, | ИСТИНА КАК Актуальность, | СотрудникиОрганизаций.Ссылка КАК Сотрудник, | ДоговорНаВыполнениеРаботСФизЛицом.СпособОтраженияВБухучете, | ВЫБОР | КОГДА ДоговорНаВыполнениеРаботСФизЛицом.СпособОтраженияВБухучете = ЗНАЧЕНИЕ(Справочник.СпособыОтраженияЗарплатыВРеглУчете.ПустаяСсылка) | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ИспользуетСпособОтраженияВБухучете |ИЗ | Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК ДоговорНаВыполнениеРаботСФизЛицом | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций | ПО ДоговорНаВыполнениеРаботСФизЛицом.ФизЛицо = СотрудникиОрганизаций.Физлицо | И ДоговорНаВыполнениеРаботСФизЛицом.Организация = СотрудникиОрганизаций.Организация | И ДоговорНаВыполнениеРаботСФизЛицом.ВидДоговора = СотрудникиОрганизаций.ВидДоговора |ГДЕ | ДоговорНаВыполнениеРаботСФизЛицом.Ссылка = &Регистратор"; Выборка = Запрос.Выполнить().Выбрать(); КоличествоЗаписей = Выборка.Количество(); // Вновь созданных сотрудников будем помещать в ТЗ, чтобы избежать многократного создания // сотрудников с одинаковыми физлицом и организацией СписокСозданныхСотрудников = Новый ТаблицаЗначений; СписокСозданныхСотрудников.Колонки.Добавить("Сотрудник"); СписокСозданныхСотрудников.Колонки.Добавить("Физлицо"); СписокСозданныхСотрудников.Колонки.Добавить("Организация"); СписокСозданныхСотрудников.Колонки.Добавить("ОбособленноеПодразделение"); СписокСозданныхСотрудников.Колонки.Добавить("ВидДоговора"); СтруктураПоиска = Новый Структура; ИндексЗаписи = 1; Счетчик = 0; Если КоличествоДокументовВОднойТранзакции <> 0 Тогда НачатьТранзакцию(); КонецЕсли; Пока Выборка.Следующий() Цикл Если КоличествоДокументовВОднойТранзакции <> 0 Тогда Если Счетчик >= КоличествоДокументовВОднойТранзакции Тогда Попытка ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное); ОтменитьТранзакцию(); КонецПопытки; НачатьТранзакцию(); Счетчик = 0; КонецЕсли; КонецЕсли; Счетчик = Счетчик + 1; #Если Клиент Тогда Состояние("Работающие по договору подряда. Обрабатывается документ " + ИндексЗаписи + " из " + КоличествоЗаписей); #КонецЕсли ИндексЗаписи = ИндексЗаписи + 1; ДокументОбъект = Выборка.Документ.ПолучитьОбъект(); ДокументОбъект.ОбменДанными.Загрузка = Истина; Если ДокументОбъект.Проведен Тогда НаборЗаписейПлановыеНачисления = РегистрыСведений.ПлановыеНачисленияРаботниковОрганизаций.СоздатьНаборЗаписей(); НаборЗаписейПлановыеНачисления.Отбор.Регистратор.Значение = Выборка.Документ; НаборЗаписейПлановыеНачисления.ОбменДанными.Загрузка = Истина; НаборЗаписейРеглУче |
|||
51
Kassidy_nd
06.02.13
✎
08:33
|
(50) читать ВТРаботникиОрганизаций вместо ВТРаботникиОрганизаций1
|
|||
52
cw014
06.02.13
✎
08:36
|
(51) Пока нечего читать
|
|||
53
Kassidy_nd
06.02.13
✎
08:39
|
(52) тут почему то весь код не отображается? Есть какое то ограничение при добавлении сообщения в тему? счас продолжу
|
|||
54
Kassidy_nd
06.02.13
✎
08:41
|
Запрос.Текст = "ВЫБРАТЬ
| СобытиеРаботникиОрганизации.Ссылка КАК Приказ, | СобытиеРаботникиОрганизации.Работник.Наименование КАК Наименование, | СобытиеРаботникиОрганизации.Работник КАК Работник, | ИСТИНА КАК Актуальность |ИЗ | Документ.Событие.РаботникиОрганизации КАК СобытиеРаботникиОрганизации | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ВЫБОР | КОГДА (НЕ РаботникиОсновноеМесто.Сотрудник ЕСТЬ NULL ) | ТОГДА РаботникиОсновноеМесто.Сотрудник | КОГДА (НЕ РаботникиСовместительство.Сотрудник ЕСТЬ NULL ) | ТОГДА РаботникиСовместительство.Сотрудник | КОГДА (НЕ СотрудникиДУ.Сотрудник ЕСТЬ NULL ) | ТОГДА СотрудникиДУ.Сотрудник | ИНАЧЕ NULL | КОНЕЦ КАК Сотрудник, | ВЫБОР | КОГДА (НЕ РаботникиОсновноеМесто.Физлицо ЕСТЬ NULL ) | ТОГДА РаботникиОсновноеМесто.Физлицо | КОГДА (НЕ РаботникиСовместительство.Физлицо ЕСТЬ NULL ) | ТОГДА РаботникиСовместительство.Физлицо | КОГДА (НЕ СотрудникиДУ.Физлицо ЕСТЬ NULL ) | ТОГДА СотрудникиДУ.Физлицо | ИНАЧЕ NULL | КОНЕЦ КАК Физлицо | ИЗ | (ВЫБРАТЬ | МАКСИМУМ(СотрудникиДУ.Ссылка) КАК Сотрудник, | СотрудникиДУ.Физлицо КАК Физлицо | ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиДУ | ГДЕ | СотрудникиДУ.ВидДоговора = &ДоговорУправленческий | | СГРУППИРОВАТЬ ПО | СотрудникиДУ.Физлицо) КАК СотрудникиДУ | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | МАКСИМУМ(РаботникиОсновноеМесто.Сотрудник) КАК Сотрудник, | РаботникиОсновноеМесто.Сотрудник.Физлицо КАК Физлицо | ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних( | , | Сотрудник.ВидДоговора = &ТрудовойДоговор | И Сотрудник.ВидЗанятости = &ОсновноеМестоРаботы) КАК РаботникиОсновноеМесто | ГДЕ | РаботникиОсновноеМесто.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | | СГРУППИРОВАТЬ ПО | РаботникиОсновноеМесто.Сотрудник.Физлицо) КАК РаботникиОсновноеМесто | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | МАКСИМУМ(РаботникиСовместительство.Сотрудник) КАК Сотрудник, | РаботникиСовместительство.Сотрудник.Физлицо КАК Физлицо | ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних( | , | Сотрудник.ВидДоговора = &ТрудовойДоговор | И Сотрудник.ВидЗанятости = &Совместительство) КАК РаботникиСовместительство | ГДЕ | РаботникиСовместительство.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | | СГРУППИРОВАТЬ ПО | РаботникиСовместительство.Сотрудник.Физлицо) КАК РаботникиСовместительство | ПО РаботникиОсновноеМесто.Физлицо = РаботникиСовместительство.Физлицо | ПО СотрудникиДУ.Физлицо = РаботникиОсновноеМесто.Физлицо) КАК Сотрудники | ПО СобытиеРаботникиОрганизации.Работник = Сотрудники.Физлицо |ГДЕ | ВЫБОР | КОГДА СобытиеРаботникиОрганизации.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | ТОГДА Сотрудники.Сотрудник | ИНАЧЕ СобытиеРаботникиОрганизации.Сотрудник | КОНЕЦ ЕСТЬ NULL | |УПОРЯДОЧИТЬ ПО | СобытиеРаботникиОрганизации.Ссылка.Дата, | СобытиеРаботникиОрганизации.НомерСтроки"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.СледующийПоЗначениюПоля("Приказ") Цикл #Если Клиент Тогда Состояние("Сотрудники предприятия: " + Выборка.Приказ); #КонецЕсли Пока Выборка.Следующий() Цикл Сотрудник = Справочники.СотрудникиОрганизаций.СоздатьЭлемент(); ЗаполнитьЗначенияСвойств(Сотрудник, Выборка); Сотрудник.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.ДоговорУправленческий; Сотрудник.Код = "0000000000"; Сотрудник.Записать(); КонецЦикла; КонецЦикла; КонецПроцедуры // СозданиеСотрудниковДляОшибочныхДанных() // Заполнение поля Сотрудник в регистре // Процедура ЗаполнитьНаборЗаписейОрганизаций(ПолеДаты, МенеджерРегистров, ИмяРегистра, ДопУсловие = "", ПериодНаКонецМесяца = Ложь) ИмяРеквизитаФизлицо = "УдалитьФизлицо"; Если ТипЗнч(МенеджерРегистров) = Тип("РегистрыСведенийМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрСведений"; Организация = "Организация"; ИначеЕсли ТипЗнч(МенеджерРегистров) = Тип("РегистрыНакопленияМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрНакопления"; Если ИмяРегистра = "РасчетПервойПоловиныМесяца" Тогда ИмяРеквизитаФизлицо = "Физлицо"; КонецЕсли; Организация = "Организация"; ИначеЕсли ТипЗнч(МенеджерРегистров) = Тип("РегистрыБухгалтерииМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрБухгалтерии"; Организация = "Организация"; ИначеЕсли ТипЗнч(МенеджерРегистров) = Тип("РегистрыРасчетаМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрРасчета"; ИмяРеквизитаФизлицо = "Физлицо"; Организация = "Организация.ГоловнаяОрганизация"; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Регистр.Организация КАК Организация, | Регистр.Регистратор КАК Приказ, | МИНИМУМ(Регистр." + ПолеДаты + ") КАК Период |ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр |ГДЕ | " + ДопУсловие + " Регистр.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | |СГРУППИРОВАТЬ ПО | Регистр.Организация, | Регистр.Регистратор | |УПОРЯДОЧИТЬ ПО | Период"; ЗапросПоДокументу = Новый Запрос; ЗапросПоДокументуВТ = "ВЫБРАТЬ | РаботникиОрганизаций.* |ПОМЕСТИТЬ ВТРаботникиОрганизаций |ИЗ | РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций |ГДЕ | РаботникиОрганизаций.УдалитьФизЛицо В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | Рег." + ИмяРеквизитаФизлицо + " | ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Рег | ГДЕ | Рег.Регистратор = &Регистратор) | |ИНДЕКСИРОВАТЬ ПО | Организация, | УдалитьФизлицо, | УдалитьПриказ"; ЗапросПоДокументуТекст = "ВЫБРАТЬ | Сотрудники.Сотрудник, | ЕСТЬNULL(Сотрудники.НомерСтроки, Регистр.НомерСтроки) КАК НомерСтроки, | Регистр.* |ИЗ | (ВЫБРАТЬ | Работники.Сотрудник КАК Сотрудник, | Регистр.НомерСтроки КАК НомерСтроки |ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ * ИЗ ВТРаботникиОрганизаций) КАК Работники | ПО Регистр." + ИмяРеквизитаФизлицо + " = Работники.УдалитьФизлицо | И Регистр.УдалитьПриказ = Работники.Регистратор | И Регистр." + Организация + " = Работники.Организация | И Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) | И Регистр.Регистратор = &Регистратор | //УСЛОВИЕ | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | РаботникиОрганизаций.Сотрудник, | Периоды.НомерСтроки | ИЗ | (ВЫБРАТЬ * ИЗ ВТРаботникиОрганизаций) КАК РаботникиОрганизаций | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | МИНИМУМ(ПериодыВсе.Период) КАК Период, | ПериодыВсе.Физлицо КАК Физлицо, | ПериодыВсе.Организация КАК Организация, | ПериодыВсе.НомерСтроки КАК НомерСтроки | ИЗ | (ВЫБРАТЬ | МАКСИМУМ(Работники.Период) КАК Период, | Регистр." + ИмяРеквизитаФизлицо + " КАК Физлицо, | Регистр." + Организация + " КАК Организация, | Регистр.НомерСтроки КАК НомерСтроки | ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ * ИЗ ВТРаботникиОрганизаций) КАК Работники | ПО Регистр." + ИмяРеквизитаФизлицо + " = Работники.УдалитьФизлицо | И Регистр." + Организация + " = Работники.Организация | И Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) | И (Регистр.Регистратор = &Регистратор) | И (Регистр.УдалитьПриказ = ЗНАЧЕНИЕ(Документ.ПриемНаРаботуВОрганизацию.ПустаяСсылка)) | И Работники.Период <= " + ?(ПериодНаКонецМесяца, "КОНЕЦПЕРИОДА(Регистр." + ПолеДаты + ", МЕСЯЦ)", "Регистр." + ПолеДаты)+" | //УСЛОВИЕ | | СГРУППИРОВАТЬ ПО | Регистр." + ИмяРеквизитаФизлицо + ", | Регистр." + Организация + ", | Регистр.НомерСтроки | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | МИНИМУМ(Работники.Период), | Регистр." + ИмяРеквизитаФизлицо + ", | Регистр." + Организация + ", | Регистр.НомерСтроки | ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ * ИЗ ВТРаботникиОрганизаций) КАК Работники | ПО Регистр." + ИмяРеквизитаФизлицо + " = Работники.УдалитьФизлицо | И Регистр." + Организация + " = Работники.Организация | И Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) | И Регистр.Регистратор = &Регистратор | И Регистр.УдалитьПриказ = ЗНАЧЕНИЕ(Документ.ПриемНаРаботуВОрганизацию.ПустаяСсылка) | И Работники.Период > " + ?(ПериодНаКонецМесяца, "КОНЕЦПЕРИОДА(Регистр." + ПолеДаты + ", МЕСЯЦ)", "Регистр." + ПолеДаты)+" | //УСЛОВИЕ | | СГРУППИРОВАТЬ ПО | Регистр." + ИмяРеквизитаФизлицо + ", | Регистр." + Организация + ", | Регистр.НомерСтроки) КАК ПериодыВсе | | СГРУППИРОВАТЬ ПО | ПериодыВсе.Физлицо, | ПериодыВсе.Организация, | ПериодыВсе.НомерСтроки) КАК Периоды | ПО РаботникиОрганизаций.Организация = Периоды.Организация | И РаботникиОрганизаций.УдалитьФизлицо = Периоды.Физлицо | И РаботникиОрганизаций.Период = Периоды.Период | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | ПриказыДоДокумента.Сотрудник, | ПриказыДоДокумента.НомерСтроки | ИЗ | (ВЫБРАТЬ | ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник КАК Сотрудник, | Периоды.НомерСтроки КАК НомерСтроки | ИЗ | (ВЫБРАТЬ | МАКСИМУМ(НАЧАЛОПЕРИОДА(ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Дата, ДЕНЬ)) КАК Период, | Регистр." + ИмяРеквизитаФизлицо + " КАК Физлицо, | Регистр.Организация КАК Организация, | Регистр.НомерСтроки КАК НомерСтроки | ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации | ПО Регистр." + ИмяРеквизитаФизлицо + " = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо | И Регистр.Организация = ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Организация | И Регистр.Регистратор = &Регистратор | И Регистр.УдалитьПриказ = ЗНАЧЕНИЕ(Документ.ПриемНаРаботуВОрганизацию.ПустаяСсылка) | И (НЕ ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Проведен) | И (НАЧАЛОПЕРИОДА(ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Дата, ДЕНЬ) <= "+?(ПериодНаКонецМесяца, "КОНЕЦПЕРИОДА(Регистр." + ПолеДаты + ", МЕСЯЦ)", "Регистр." + ПолеДаты)+") | //УСЛОВИЕ | | СГРУППИРОВАТЬ ПО | Регистр." + ИмяРеквизитаФизлицо + ", | Регистр.Организация, | Регистр.НомерСтроки) КАК Периоды | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации | ПО (Периоды.Период = НАЧАЛОПЕРИОДА(ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Дата, ДЕНЬ)) | И Периоды.Физлицо = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо | И (НЕ ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Проведен) | И Периоды.Организация = ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Организация) КАК ПриказыДоДокумента) КАК Сотрудники | ПРАВОЕ СОЕДИНЕНИЕ " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ПО Сотрудники.НомерСтроки = Регистр.НомерСтроки | //УСЛОВИЕ |ГДЕ | Регистр.Регистратор = &Регистратор | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Если (ИмяРегистра = "БУДополнительныеНачисления") ИЛИ (ИмяРегистра = "РасчетПервойПоловиныМесяца") Тогда ЗапросПоДокументуТекст = СтрЗаменить(ЗапросПоДокументуТекст, "//УСЛОВИЕ", "И Регистр.УдалитьПриказ <> ЗНАЧЕНИЕ(Документ.ПриемНаРаботуВОрганизацию.ПустаяСсылка)"); ИначеЕсли (ИмяРегистра = "ДополнительныеНачисленияРаботниковОрганизаций") Тогда ЗапросПоДокументуТекст = СтрЗаменить(ЗапросПоДокументуТекст, "//УСЛОВИЕ", "И Регистр.ДокументОснование = ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка)"); КонецЕсли; Выборка = Запрос.Выполнить().Выбрать(); КоличествоЗаписей = Выборка.Количество(); ИндексЗаписи = 1; Счетчик = 0; ПоддержкаВнутреннегоСовместительства = БылаПоддержкаВнутреннегоСовместительства(); Если ПрефиксИмениТаблицы = "РегистрНакопления" Тогда МенеджерРегистров[ИмяРегистра].УстановитьИспользованиеИтогов(Ложь); КонецЕсли; Если КоличествоДокументовВОднойТранзакции <> 0 Тогда НачатьТранзакцию(); КонецЕсли; Пока Выборка.Следующий() Цикл Если КоличествоДокументовВОднойТранзакции <> 0 Тогда Если Счетчик >= КоличествоДокументовВОднойТранзакции Тогда Попытка ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное); ОтменитьТранзакцию(); КонецПопытки; НачатьТранзакцию(); Счетчик = 0; КонецЕсли; КонецЕсли; Счетчик = Счетчик + 1; #Если Клиент Тогда Состояние(ПрефиксИмениТаблицы + "." + ИмяРегистра + ". Обрабатывается набор записей " + ИндексЗаписи + " из " + КоличествоЗаписей); #КонецЕсли ЗапросПоДокументу.УстановитьПараметр("Регистратор", Выборка.Приказ); МТ = Новый МенеджерВременныхТаблиц; ЗапросПоДокументу.МенеджерВременныхТаблиц = МТ; ЗапросПоДокументу.Текст = ЗапросПоДокументуВТ; ЗапросПоДокументу.Выполнить(); Если ПоддержкаВнутреннегоСовместительства[Выборка.Организация] Тогда ЗапросПоДокументу.Текст = ЗапросПоДокументуТекст; КонецЕсли; ИндексЗаписи = ИндексЗаписи + 1; НаборЗаписей = МенеджерРегистров[ИмяРегистра].СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Значение = Выборка.Приказ; НаборЗаписей.ОбменДанными.Загрузка = Истина; ВыборкаПоДокументу = ЗапросПоДокументу.Выполнить().Выбрать(); МТ.Закрыть(); Если ВыборкаПоДокументу.Количество() = 0 Тогда Продолжить; КонецЕсли; Пока ВыборкаПоДокументу.Следующий() Цикл Строка = НаборЗаписей.Добавить(); ЗаполнитьЗначенияСвойств(Строка, ВыборкаПоДокументу); Если ИмяРегистра = "БУОсновныеНачисления" Тогда Строка.ПериодДействияКонец = КонецДня(Строка.ПериодДействияКонец); КонецЕсли; КонецЦикла; НаборЗаписей.Записать(); НаборЗаписей.Очистить(); КонецЦикла; Если КоличествоДокументовВОднойТранзакции <> 0 Тогда Попытка ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное); ОтменитьТранзакцию(); КонецПопытки; КонецЕсли; Если ПрефиксИмениТаблицы = "РегистрНакопления" Тогда МенеджерРегистров[ИмяРегистра].УстановитьИспользованиеИтогов(Истина); МенеджерРегистров[ИмяРегистра].ПересчитатьИтоги(); КонецЕсли; КонецПроцедуры // ЗаполнитьНаборЗаписейОрганизаций() |
|||
55
Kassidy_nd
06.02.13
✎
08:44
|
не дает полностью весь текст вставить! тут нельзя прикрепить файл в .tхt?
|
|||
56
Kassidy_nd
06.02.13
✎
08:46
|
// Процедура - обработчик события "ПередОткрытием" формы
// Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) КоличествоДокументовВОднойТранзакции = 100; КонецПроцедуры // Процедура - обработчик нажатия кнопки "Выполнить" // Процедура КнопкаВыполнитьНажатие(Кнопка) ВыполнитьОбработку(); КонецПроцедуры // Процедура выполняет обработку данных // Процедура ВыполнитьОбработку() Экспорт ОбновитьСотрудниковОрганизаций(); ОбновитьСотрудников(); ОбновитьДоговорников(); СоздатьСотрудниковБезПриказовОПриеме(); ЗаполнитьЗаполнениеПлановыхНачислений(); ОчиститьРегистрыОтФизлицаПриказа(); ОбновитьТекущиеДанныеСотрудников(); ЗаполнитьСотрудникаВЗанятыхШтатныхЕдиницах(); ЗаполнитьРегистрыКонтроляПериодов(); КонецПроцедуры // Функция возвращает соответствие значений учетной политики ПоддержкаВнутреннегоСовместительства // Функция БылаПоддержкаВнутреннегоСовместительства() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | УчетнаяПолитикаПоПерсоналуОрганизаций.УдалитьПоддержкаВнутреннегоСовместительства КАК ПоддержкаВнутреннегоСовместительства, | УчетнаяПолитикаПоПерсоналуОрганизаций.Организация КАК Организация |ИЗ | РегистрСведений.УчетнаяПолитикаПоПерсоналуОрганизаций КАК УчетнаяПолитикаПоПерсоналуОрганизаций"; Выборка = Запрос.Выполнить().Выбрать(); СоответствиеОрганизацииПоддержкиСовместительства = Новый Соответствие; Пока Выборка.Следующий() Цикл СоответствиеОрганизацииПоддержкиСовместительства.Вставить(Выборка.Организация, Выборка.ПоддержкаВнутреннегоСовместительства); КонецЦикла; Возврат СоответствиеОрганизацииПоддержкиСовместительства; КонецФункции // БылаПоддержкаВнутреннегоСовместительства() // Заполнение справочника "Сотрудники" по регистру сведений "РаботникиОрганизаций" // Процедура РегистрацияСотрудниковОрганизацийПоРегистру() // создание сотрудников по приказам о приеме на работу Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | РаботникиОрганизаций.Регистратор КАК Приказ |ИЗ | РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций |ГДЕ | РаботникиОрганизаций.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) И | РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу)"; ЗапросПоДокументу = Новый Запрос; ЗапросПоДокументу.Текст = "ВЫБРАТЬ | РаботникиОрганизаций.НомерСтроки КАК НомерСтроки, | РаботникиОрганизаций.УдалитьТабельныйНомер КАК Код, | РаботникиОрганизаций.УдалитьФизлицо.Наименование КАК Наименование, | РаботникиОрганизаций.УдалитьФизлицо КАК Физлицо, | ИСТИНА КАК Актуальность, | РаботникиОрганизаций.Организация КАК Организация, | РаботникиОрганизаций.ОбособленноеПодразделение, | РаботникиОрганизаций.Регистратор.УдалитьВидЗанятости КАК ВидЗанятости, | ТрудовойДоговорДокумент.Номер КАК НомерДоговора, | ТрудовойДоговорДокумент.Дата КАК ДатаДоговора, | РаботникиОрганизаций.ГрафикРаботы, | РаботникиОрганизаций.ТарифныйРазряд, | РаботникиОрганизаций.ПодразделениеОрганизации, | РаботникиОрганизаций.Должность, | РаботникиОрганизаций.ЗанимаемыхСтавок, | ПриемНаРаботуВОрганизациюРаботникиОрганизации.ДатаПриема КАК ДатаНачала, | ПриемНаРаботуВОрганизациюРаботникиОрганизации.ДатаУвольнения КАК ДатаОкончания, | ПриемНаРаботуВОрганизациюРаботникиОрганизации.ИспытательныйСрок, | ПриемНаРаботуВОрганизациюРаботникиОрганизации.СпособРасчета, | ТрудовойДоговорДокумент.ТарифнаяСтавка КАК ТарифнаяСтавка, | ТрудовойДоговорДокумент.ВалютаТарифнойСтавки КАК ВалютаТарифнойСтавки, | ТрудовойДоговорДокумент.ПерсональныеНадбавки.( | Надбавка, | Показатель1, | Показатель2, | Показатель3, | Показатель4, | Валюта1, | Валюта2, | Валюта3, | Валюта4 | ), | РаботникиОрганизаций.Период, | РаботникиОрганизаций.Регистратор, | РаботникиОрганизаций.Активность, | РаботникиОрганизаций.УдалитьФизлицо, | РаботникиОрганизаций.УдалитьПриказ, | РаботникиОрганизаций.УдалитьТабельныйНомер КАК ТабельныйНомер, | РаботникиОрганизаций.ПричинаИзмененияСостояния, | ВЫБОР | КОГДА ПриемНаРаботуВОрганизациюРаботникиОрганизации.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоДням) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоДням) | КОГДА ПриемНаРаботуВОрганизациюРаботникиОрганизации.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоЧасам) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам) | КОГДА ПриемНаРаботуВОрганизациюРаботникиОрганизации.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоДневнойТарифнойСтавке) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ТарифДневной) | КОГДА ПриемНаРаботуВОрганизациюРаботникиОрганизации.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ТарифЧасовой) | КОГДА ПриемНаРаботуВОрганизациюРаботникиОрганизации.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.СдельныйЗаработок) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.СдельнаяОплата) | ИНАЧЕ | ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ПустаяСсылка) | КОНЕЦ КАК ВидРасчета |ИЗ | РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации | ЛЕВОЕ СОЕДИНЕНИЕ Документ.УдалитьТрудовойДоговор КАК ТрудовойДоговорДокумент | ПО ПриемНаРаботуВОрганизациюРаботникиОрганизации.УдалитьТрудовойДоговор = ТрудовойДоговорДокумент.Ссылка | ПО (ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка = &Регистратор) | И РаботникиОрганизаций.УдалитьФизлицо = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо |ГДЕ | РаботникиОрганизаций.Регистратор = &Регистратор | И РаботникиОрганизаций.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Выборка = Запрос.Выполнить().Выбрать(); КоличествоЗаписей = Выборка.Количество(); ИндексЗаписи = 1; Пока Выборка.Следующий() Цикл #Если Клиент Тогда Состояние("Сотрудники организаций. Обрабатывается набор записей " + ИндексЗаписи + " из " + КоличествоЗаписей); #КонецЕсли ИндексЗаписи = ИндексЗаписи + 1; НаборЗаписей = РегистрыСведений.РаботникиОрганизаций.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Значение = Выборка.Приказ; НаборЗаписей.ОбменДанными.Загрузка = Истина; ЗапросПоДокументу.УстановитьПараметр("Регистратор", Выборка.Приказ); ВыборкаПоДокументу = ЗапросПоДокументу.Выполнить().Выбрать(); Пока ВыборкаПоДокументу.Следующий() Цикл Сотрудник = Справочники.СотрудникиОрганизаций.СоздатьЭлемент(); ЗаполнитьЗначенияСвойств(Сотрудник, ВыборкаПоДокументу); Сотрудник.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.ТрудовойДоговор; Сотрудник.СтруктурнаяЕдиница = ВыборкаПоДокументу.ОбособленноеПодразделение; Сотрудник.ПерсональныеНадбавки.Загрузить(ВыборкаПоДокументу.ПерсональныеНадбавки.Выгрузить()); Если Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство Тогда Сотрудник.Наименование = Сотрудник.Наименование + " (вн. совм.)"; Сотрудник.ПостфиксНаименования = "(вн. совм.)"; ИначеЕсли Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы Тогда Сотрудник.Наименование = Сотрудник.Наименование + " (осн.)"; Сотрудник.ПостфиксНаименования = "(осн.)"; Иначе Сотрудник.Наименование = Сотрудник.Наименование + " (совм.)"; Сотрудник.ПостфиксНаименования = "(совм.)"; КонецЕсли; Сотрудник.Записать(); Строка = НаборЗаписей.Добавить(); ЗаполнитьЗначенияСвойств(Строка, ВыборкаПоДокументу); Строка.Сотрудник = Сотрудник.Ссылка; КонецЦикла; НаборЗаписей.Записать(); НаборЗаписей.Очистить(); КонецЦикла; КонецПроцедуры // РегистрацияСотрудниковОрганизацийПоРегистру() // Заполнение справочника "Сотрудники" по документу "ПриемНаРаботуВОрганизацию" // Процедура РегистрацияСотрудниковОрганизацийПоДокументу() // создание сотрудников по приказам о приеме на работу Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Док.Ссылка КАК Документ |ИЗ | Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК Док |ГДЕ | Док.ФизЛицо <> ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) | И (НЕ Док.Ссылка.Проведен)"; ЗапросПоДокументу = Новый Запрос; ЗапросПоДокументу.Текст = "ВЫБРАТЬ | Прием.НомерСтроки, | Прием.УдалитьТабельныйНомер КАК Код, | Прием.ФизЛицо.Наименование КАК Наименование, | Прием.ФизЛицо КАК Физлицо, | ИСТИНА КАК Актуальность, | Прием.Ссылка.Организация.ГоловнаяОрганизация КАК Организация, | ВЫБОР | КОГДА Прием.Ссылка.Организация.ГоловнаяОрганизация = Прием.Ссылка.Организация | ТОГДА Прием.Ссылка.Организация.ГоловнаяОрганизация | ИНАЧЕ Прием.Ссылка.Организация | КОНЕЦ КАК ОбособленноеПодразделение, | Прием.Ссылка.УдалитьВидЗанятости КАК ВидЗанятости, | ТД.Номер КАК НомерДоговора, | ТД.Дата КАК ДатаДоговора, | Прием.ГрафикРаботы, | Прием.ПодразделениеОрганизации, | Прием.Должность, | Прием.ЗанимаемыхСтавок, | Прием.ДатаПриема КАК ДатаНачала, | Прием.ДатаУвольнения КАК ДатаОкончания, | Прием.ИспытательныйСрок, | Прием.СпособРасчета, | ТД.ТарифнаяСтавка КАК ТарифнаяСтавка, | ТД.ВалютаТарифнойСтавки КАК ВалютаТарифнойСтавки, | ТД.ПерсональныеНадбавки.( | Надбавка, | Показатель1, | Показатель2, | Показатель3, | Показатель4, | Валюта1, | Валюта2, | Валюта3, | Валюта4 | ), | ВЫБОР | КОГДА Прием.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоДням) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоДням) | КОГДА Прием.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоМесячнойТарифнойСтавкеПоЧасам) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам) | КОГДА Прием.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоДневнойТарифнойСтавке) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ТарифДневной) | КОГДА Прием.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ТарифЧасовой) | КОГДА Прием.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаОплатыТруда.СдельныйЗаработок) | ТОГДА ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.СдельнаяОплата) | ИНАЧЕ | ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ПустаяСсылка) | КОНЕЦ КАК ВидРасчета |ИЗ | Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК Прием | ЛЕВОЕ СОЕДИНЕНИЕ Документ.УдалитьТрудовойДоговор КАК ТД | ПО Прием.УдалитьТрудовойДоговор = ТД.Ссылка |ГДЕ | Прием.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | И Прием.ФизЛицо <> ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) | И Прием.Ссылка = &Регистратор"; Выборка = Запрос.Выполнить().Выбрать(); КоличествоЗаписей = Выборка.Количество(); ИндексЗаписи = 1; Счетчик = 0; Если КоличествоДокументовВОднойТранзакции <> 0 Тогда НачатьТранзакцию(); КонецЕсли; Пока Выборка.Следующий() Цикл Если КоличествоДокументовВОднойТранзакции <> 0 Тогда Если Счетчик >= КоличествоДокументовВОднойТранзакции Тогда Попытка ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное); ОтменитьТранзакцию(); КонецПопытки; НачатьТранзакцию(); Счетчик = 0; КонецЕсли; КонецЕсли; Счетчик = Счетчик + 1; #Если Клиент Тогда Состояние("Сотрудники организаций. Обрабатывается документ " + ИндексЗаписи + " из " + КоличествоЗаписей); #КонецЕсли ИндексЗаписи = ИндексЗаписи + 1; ДокументОбъект = Выборка.Документ.ПолучитьОбъект(); ДокументОбъект.ОбменДанными.Загрузка = Истина; ЗапросПоДокументу.УстановитьПараметр("Регистратор", Выборка.Документ); ВыборкаПоДокументу = ЗапросПоДокументу.Выполнить().Выбрать(); Если КоличествоДокументовВОднойТранзакции <> 0 Тогда НачатьТранзакцию(); КонецЕсли; Пока ВыборкаПоДокументу.Следующий() Цикл Сотрудник = Справочники.СотрудникиОрганизаций.СоздатьЭлемент(); ЗаполнитьЗначенияСвойств(Сотрудник, ВыборкаПоДокументу); Сотрудник.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.ТрудовойДоговор; Сотрудник.СтруктурнаяЕдиница = ВыборкаПоДокументу.ОбособленноеПодразделение; Сотрудник.ПерсональныеНадбавки.Загрузить(ВыборкаПоДокументу.ПерсональныеНадбавки.Выгрузить()); Если Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство Тогда Сотрудник.Наименование = Сотрудник.Наименование + " (вн. совм.)"; Сотрудник.ПостфиксНаименования = "(вн. совм.)"; ИначеЕсли Сотрудник.ВидЗанятости = Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы Тогда Сотрудник.Наименование = Сотрудник.Наименование + " (осн.)"; Сотрудник.ПостфиксНаименования = "(осн.)"; Иначе Сотрудник.Наименование = Сотрудник.Наименование + " (совм.)"; Сотрудник.ПостфиксНаименования = "(совм.)"; КонецЕсли; Сотрудник.Записать(); Строка = ДокументОбъект.РаботникиОрганизации.Найти(ВыборкаПоДокументу.НомерСтроки, "НомерСтроки"); Строка.Сотрудник = Сотрудник.Ссылка; КонецЦикла; Попытка ДокументОбъект.Записать(); Исключение Сообщить(" ошибка при обновлении " + ДокументОбъект.Ссылка + ": " + ОписаниеОшибки()); КонецПопытки; КонецЦикла; Если КоличествоДокументовВОднойТранзакции <> 0 Тогда Попытка ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное); ОтменитьТранзакцию(); КонецПопытки; КонецЕсли; КонецПроцедуры // РегистрацияСотрудниковОрганизацийПоДокументу() // Заполнение справочника "Сотрудники" по сотрудникам упр учета // Процедура РегистрацияСотрудников() // создание сотрудников по приказам о приеме на работу Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТрудовойДоговор", Перечисления.ВидыДоговоровСФизЛицами.ТрудовойДоговор); Запрос.УстановитьПараметр("ДоговорУправленческий", Перечисления.ВидыДоговоровСФизЛицами.ДоговорУправленческий); Запрос.УстановитьПараметр("ОсновноеМестоРаботы", Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы); Запрос.УстановитьПараметр("Совместительство", Перечисления.ВидыЗанятостиВОрганизации.Совместительство); Запрос.Текст = "ВЫБРАТЬ | Работники.Регистратор КАК Приказ, | Работники.УдалитьТабельныйНомер КАК Код, | Работники.ФизЛицо.Наименование КАК Наименование, | Работники.ФизЛицо КАК Физлицо, | ИСТИНА КАК Актуальность |ИЗ | РегистрСведений.Работники КАК Работники | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботу.Работники КАК ПриемНаРаботуРаботники | ПО Работники.НомерСтроки = ПриемНаРаботуРаботники.НомерСтроки | И Работники.Регистратор = ПриемНаРаботуРаботники.Ссылка | И (Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)) | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ВЫБОР | КОГДА (НЕ РаботникиОсновноеМесто.Сотрудник ЕСТЬ NULL ) | ТОГДА РаботникиОсновноеМесто.Сотрудник | КОГДА (НЕ РаботникиСовместительство.Сотрудник ЕСТЬ NULL ) | ТОГДА РаботникиСовместительство.Сотрудник | КОГДА (НЕ СотрудникиДУ.Сотрудник ЕСТЬ NULL ) | ТОГДА СотрудникиДУ.Сотрудник | ИНАЧЕ NULL | КОНЕЦ КАК Сотрудник, | ВЫБОР | КОГДА (НЕ РаботникиОсновноеМесто.Физлицо ЕСТЬ NULL ) | ТОГДА РаботникиОсновноеМесто.Физлицо | КОГДА (НЕ РаботникиСовместительство.Физлицо ЕСТЬ NULL ) | ТОГДА РаботникиСовместительство.Физлицо | КОГДА (НЕ СотрудникиДУ.Физлицо ЕСТЬ NULL ) | ТОГДА СотрудникиДУ.Физлицо | ИНАЧЕ NULL | КОНЕЦ КАК Физлицо | ИЗ | (ВЫБРАТЬ | МАКСИМУМ(СотрудникиДУ.Ссылка) КАК Сотрудник, | СотрудникиДУ.Физлицо КАК Физлицо | ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиДУ | ГДЕ | СотрудникиДУ.ВидДоговора = &ДоговорУправленческий | | СГРУППИРОВАТЬ ПО | СотрудникиДУ.Физлицо) КАК СотрудникиДУ | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | МАКСИМУМ(РаботникиОсновноеМесто.Сотрудник) КАК Сотрудник, | РаботникиОсновноеМесто.Сотрудник.Физлицо КАК Физлицо | ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних( | , | Сотрудник.ВидДоговора = &ТрудовойДоговор | И Сотрудник.ВидЗанятости = &ОсновноеМестоРаботы) КАК РаботникиОсновноеМесто | ГДЕ | РаботникиОсновноеМесто.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | | СГРУППИРОВАТЬ ПО | РаботникиОсновноеМесто.Сотрудник.Физлицо) КАК РаботникиОсновноеМесто | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | МАКСИМУМ(РаботникиСовместительство.Сотрудник) КАК Сотрудник, | РаботникиСовместительство.Сотрудник.Физлицо КАК Физлицо | ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних( | , | Сотрудник.ВидДоговора = &ТрудовойДоговор | И Сотрудник.ВидЗанятости = &Совместительство) КАК РаботникиСовместительство | ГДЕ | РаботникиСовместительство.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | | СГРУППИРОВАТЬ ПО | РаботникиСовместительство.Сотрудник.Физлицо) КАК РаботникиСовместительство | ПО РаботникиОсновноеМесто.Физлицо = РаботникиСовместительство.Физлицо | ПО СотрудникиДУ.Физлицо = РаботникиОсновноеМесто.Физлицо) КАК Сотрудники | ПО Работники.ФизЛицо = Сотрудники.Физлицо |ГДЕ | Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) | И ВЫБОР | КОГДА ПриемНаРаботуРаботники.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | ТОГДА Сотрудники.Сотрудник | ИНАЧЕ ПриемНаРаботуРаботники.Сотрудник | КОНЕЦ ЕСТЬ NULL | |УПОРЯДОЧИТЬ ПО | Приказ, | Работники.НомерСтроки"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.СледующийПоЗначениюПоля("Приказ") Цикл #Если Клиент Тогда Состояние("Сотрудники предприятия: " + Выборка.Приказ); #КонецЕсли Пока Выборка.Следующий() Цикл Сотрудник = Справочники.СотрудникиОрганизаций.СоздатьЭлемент(); ЗаполнитьЗначенияСвойств(Сотрудник, Выборка); Сотрудник.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.ДоговорУправленческий; Сотрудник.Записать(); КонецЦикла; КонецЦикла; КонецПроцедуры // РегистрацияСотрудников() // Заполнение справочника "Сотрудники" по договорникам // Процедура РегистрацияДоговорников() ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить(); // создание сотрудников по приказам о приеме на работу Запрос = Новый Запрос; ВидыДоговоров = Новый Массив; ВидыДоговоров.Добавить(Перечисления.ВидыДоговоровСФизЛицами.Авторский); ВидыДоговоров.Добавить(Перечисления.ВидыДоговоровСФизЛицами.Подряда); ВидыДоговоров.Добавить(Перечисления.ВидыДоговоровСФизЛицами.Лицензионный); Запрос.УстановитьПараметр("ВидыДоговоров", ВидыДоговоров); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ДоговорНаВыполнениеРаботСФизЛицом.Ссылка КАК Документ |ИЗ | Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК ДоговорНаВыполнениеРаботСФизЛицом |ГДЕ | ДоговорНаВыполнениеРаботСФизЛицом.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | И ДоговорНаВыполнениеРаботСФизЛицом.Физлицо <> ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) | И ДоговорНаВыполнениеРаботСФизЛицом.ВидДоговора В(&ВидыДоговоров)"; ЗапросПоДокументу = Новый Запрос; ЗапросПоДокументу.Текст = "ВЫБРАТЬ | ДоговорНаВыполнениеРаботСФизЛицом.Ссылка КАК Договор, | ДоговорНаВыполнениеРаботСФизЛицом.ВидДоговора, | ДоговорНаВыполнениеРаботСФизЛицом.ФизЛицо КАК Физлицо, | ДоговорНаВыполнениеРаботСФизЛицом.ФизЛицо.Наименование КАК Наименование, | ВЫБОР | КОГДА ДоговорНаВыполнениеРаботСФизЛицом.Организация.ГоловнаяОрганизация = ДоговорНаВыполнениеРаботСФизЛицом.Организация | ТОГДА ДоговорНаВыполнениеРаботСФизЛицом.Организация | ИНАЧЕ ДоговорНаВыполнениеРаботСФизЛицом.Организация.ГоловнаяОрганизация | КОНЕЦ КАК Организация, | ДоговорНаВыполнениеРаботСФизЛицом.Организация КАК ОбособленноеПодразделение, | ИСТИНА КАК Актуальность, | СотрудникиОрганизаций.Ссылка КАК Сотрудник, | ДоговорНаВыполнениеРаботСФизЛицом.СпособОтраженияВБухучете, | ВЫБОР | КОГДА ДоговорНаВыполнениеРаботСФизЛицом.СпособОтраженияВБухучете = ЗНАЧЕНИЕ(Справочник.СпособыОтраженияЗарплатыВРеглУчете.ПустаяСсылка) | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ КАК ИспользуетСпособОтраженияВБухучете |ИЗ | Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК ДоговорНаВыполнениеРаботСФизЛицом | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций | ПО ДоговорНаВыполнениеРаботСФизЛицом.ФизЛицо = СотрудникиОрганизаций.Физлицо | И ДоговорНаВыполнениеРаботСФизЛицом.Организация = СотрудникиОрганизаций.Организация | И ДоговорНаВыполнениеРаботСФизЛицом.ВидДоговора = СотрудникиОрганизаций.ВидДоговора |ГДЕ | ДоговорНаВыполнениеРаботСФизЛицом.Ссылка = &Регистратор"; Выборка = Запрос.Выполнить().Выбрать(); КоличествоЗаписей = Выборка.Количество(); // Вновь созданных сотрудников будем помещать в ТЗ, чтобы избежать многократного создания // сотрудников с одинаковыми физлицом и организацией СписокСозданныхСотрудников = Новый ТаблицаЗначений; СписокСозданныхСотрудников.Колонки.Добавить("Сотрудник"); СписокСозданныхСотрудников.Колонки.Добавить("Физлицо"); СписокСозданныхСотрудников.Колонки.Добавить("Организация"); СписокСозданныхСотрудников.Колонки.Добавить("ОбособленноеПодразделение"); СписокСозданныхСотрудников.Колонки.Добавить("ВидДоговора"); СтруктураПоиска = Новый Структура; ИндексЗаписи = 1; Счетчик = 0; Если КоличествоДокументовВОднойТранзакции <> 0 Тогда НачатьТранзакцию(); КонецЕсли; Пока Выборка.Следующий() Цикл Если КоличествоДокументовВОднойТранзакции <> 0 Тогда Если Счетчик >= КоличествоДокументовВОднойТранзакции Тогда Попытка ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное); ОтменитьТранзакцию(); КонецПопытки; НачатьТранзакцию(); Счетчик = 0; КонецЕсли; КонецЕсли; Счетчик = Счетчик + 1; #Если Клиент Тогда Состояние("Работающие по договору подряда. Обрабатывается документ " + ИндексЗаписи + " из " + КоличествоЗаписей); #КонецЕсли ИндексЗаписи = ИндексЗаписи + 1; ДокументОбъект = Выборка.Документ.ПолучитьОбъект(); ДокументОбъект.ОбменДанными.Загрузка = Истина; Если ДокументОбъект.Проведен Тогда НаборЗаписейПлановыеНачисления = РегистрыСведений.ПлановыеНачисленияРа |
|||
57
Kassidy_nd
06.02.13
✎
08:52
|
ами.ДоговорУправленческий);
Запрос.УстановитьПараметр("ОсновноеМестоРаботы", Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы); Запрос.УстановитьПараметр("Совместительство", Перечисления.ВидыЗанятостиВОрганизации.Совместительство); Запрос.Текст = "ВЫБРАТЬ | СобытиеРаботникиОрганизации.Ссылка КАК Приказ, | СобытиеРаботникиОрганизации.Работник.Наименование КАК Наименование, | СобытиеРаботникиОрганизации.Работник КАК Работник, | ИСТИНА КАК Актуальность |ИЗ | Документ.Событие.РаботникиОрганизации КАК СобытиеРаботникиОрганизации | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ВЫБОР | КОГДА (НЕ РаботникиОсновноеМесто.Сотрудник ЕСТЬ NULL ) | ТОГДА РаботникиОсновноеМесто.Сотрудник | КОГДА (НЕ РаботникиСовместительство.Сотрудник ЕСТЬ NULL ) | ТОГДА РаботникиСовместительство.Сотрудник | КОГДА (НЕ СотрудникиДУ.Сотрудник ЕСТЬ NULL ) | ТОГДА СотрудникиДУ.Сотрудник | ИНАЧЕ NULL | КОНЕЦ КАК Сотрудник, | ВЫБОР | КОГДА (НЕ РаботникиОсновноеМесто.Физлицо ЕСТЬ NULL ) | ТОГДА РаботникиОсновноеМесто.Физлицо | КОГДА (НЕ РаботникиСовместительство.Физлицо ЕСТЬ NULL ) | ТОГДА РаботникиСовместительство.Физлицо | КОГДА (НЕ СотрудникиДУ.Физлицо ЕСТЬ NULL ) | ТОГДА СотрудникиДУ.Физлицо | ИНАЧЕ NULL | КОНЕЦ КАК Физлицо | ИЗ | (ВЫБРАТЬ | МАКСИМУМ(СотрудникиДУ.Ссылка) КАК Сотрудник, | СотрудникиДУ.Физлицо КАК Физлицо | ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиДУ | ГДЕ | СотрудникиДУ.ВидДоговора = &ДоговорУправленческий | | СГРУППИРОВАТЬ ПО | СотрудникиДУ.Физлицо) КАК СотрудникиДУ | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | МАКСИМУМ(РаботникиОсновноеМесто.Сотрудник) КАК Сотрудник, | РаботникиОсновноеМесто.Сотрудник.Физлицо КАК Физлицо | ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних( | , | Сотрудник.ВидДоговора = &ТрудовойДоговор | И Сотрудник.ВидЗанятости = &ОсновноеМестоРаботы) КАК РаботникиОсновноеМесто | ГДЕ | РаботникиОсновноеМесто.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | | СГРУППИРОВАТЬ ПО | РаботникиОсновноеМесто.Сотрудник.Физлицо) КАК РаботникиОсновноеМесто | ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | МАКСИМУМ(РаботникиСовместительство.Сотрудник) КАК Сотрудник, | РаботникиСовместительство.Сотрудник.Физлицо КАК Физлицо | ИЗ | РегистрСведений.РаботникиОрганизаций.СрезПоследних( | , | Сотрудник.ВидДоговора = &ТрудовойДоговор | И Сотрудник.ВидЗанятости = &Совместительство) КАК РаботникиСовместительство | ГДЕ | РаботникиСовместительство.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение) | | СГРУППИРОВАТЬ ПО | РаботникиСовместительство.Сотрудник.Физлицо) КАК РаботникиСовместительство | ПО РаботникиОсновноеМесто.Физлицо = РаботникиСовместительство.Физлицо | ПО СотрудникиДУ.Физлицо = РаботникиОсновноеМесто.Физлицо) КАК Сотрудники | ПО СобытиеРаботникиОрганизации.Работник = Сотрудники.Физлицо |ГДЕ | ВЫБОР | КОГДА СобытиеРаботникиОрганизации.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | ТОГДА Сотрудники.Сотрудник | ИНАЧЕ СобытиеРаботникиОрганизации.Сотрудник | КОНЕЦ ЕСТЬ NULL | |УПОРЯДОЧИТЬ ПО | СобытиеРаботникиОрганизации.Ссылка.Дата, | СобытиеРаботникиОрганизации.НомерСтроки"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.СледующийПоЗначениюПоля("Приказ") Цикл #Если Клиент Тогда Состояние("Сотрудники предприятия: " + Выборка.Приказ); #КонецЕсли Пока Выборка.Следующий() Цикл Сотрудник = Справочники.СотрудникиОрганизаций.СоздатьЭлемент(); ЗаполнитьЗначенияСвойств(Сотрудник, Выборка); Сотрудник.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.ДоговорУправленческий; Сотрудник.Код = "0000000000"; Сотрудник.Записать(); КонецЦикла; КонецЦикла; КонецПроцедуры // СозданиеСотрудниковДляОшибочныхДанных() // Заполнение поля Сотрудник в регистре // Процедура ЗаполнитьНаборЗаписейОрганизаций(ПолеДаты, МенеджерРегистров, ИмяРегистра, ДопУсловие = "", ПериодНаКонецМесяца = Ложь) ИмяРеквизитаФизлицо = "УдалитьФизлицо"; Если ТипЗнч(МенеджерРегистров) = Тип("РегистрыСведенийМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрСведений"; Организация = "Организация"; ИначеЕсли ТипЗнч(МенеджерРегистров) = Тип("РегистрыНакопленияМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрНакопления"; Если ИмяРегистра = "РасчетПервойПоловиныМесяца" Тогда ИмяРеквизитаФизлицо = "Физлицо"; КонецЕсли; Организация = "Организация"; ИначеЕсли ТипЗнч(МенеджерРегистров) = Тип("РегистрыБухгалтерииМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрБухгалтерии"; Организация = "Организация"; ИначеЕсли ТипЗнч(МенеджерРегистров) = Тип("РегистрыРасчетаМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрРасчета"; ИмяРеквизитаФизлицо = "Физлицо"; Организация = "Организация.ГоловнаяОрганизация"; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Регистр.Организация КАК Организация, | Регистр.Регистратор КАК Приказ, | МИНИМУМ(Регистр." + ПолеДаты + ") КАК Период |ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр |ГДЕ | " + ДопУсловие + " Регистр.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | |СГРУППИРОВАТЬ ПО | Регистр.Организация, | Регистр.Регистратор | |УПОРЯДОЧИТЬ ПО | Период"; ЗапросПоДокументу = Новый Запрос; ЗапросПоДокументуВТ = "ВЫБРАТЬ | РаботникиОрганизаций.* |ПОМЕСТИТЬ ВТРаботникиОрганизаций |ИЗ | РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций |ГДЕ | РаботникиОрганизаций.УдалитьФизЛицо В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | Рег." + ИмяРеквизитаФизлицо + " | ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Рег | ГДЕ | Рег.Регистратор = &Регистратор) | |ИНДЕКСИРОВАТЬ ПО | Организация, | УдалитьФизлицо, | УдалитьПриказ"; ЗапросПоДокументуТекст = "ВЫБРАТЬ | Сотрудники.Сотрудник, | ЕСТЬNULL(Сотрудники.НомерСтроки, Регистр.НомерСтроки) КАК НомерСтроки, | Регистр.* |ИЗ | (ВЫБРАТЬ | Работники.Сотрудник КАК Сотрудник, | Регистр.НомерСтроки КАК НомерСтроки |ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ * ИЗ ВТРаботникиОрганизаций) КАК Работники | ПО Регистр." + ИмяРеквизитаФизлицо + " = Работники.УдалитьФизлицо | И Регистр.УдалитьПриказ = Работники.Регистратор | И Регистр." + Организация + " = Работники.Организация | И Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) | И Регистр.Регистратор = &Регистратор | //УСЛОВИЕ | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | РаботникиОрганизаций.Сотрудник, | Периоды.НомерСтроки | ИЗ | (ВЫБРАТЬ * ИЗ ВТРаботникиОрганизаций) КАК РаботникиОрганизаций | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | МИНИМУМ(ПериодыВсе.Период) КАК Период, | ПериодыВсе.Физлицо КАК Физлицо, | ПериодыВсе.Организация КАК Организация, | ПериодыВсе.НомерСтроки КАК НомерСтроки | ИЗ | (ВЫБРАТЬ | МАКСИМУМ(Работники.Период) КАК Период, | Регистр." + ИмяРеквизитаФизлицо + " КАК Физлицо, | Регистр." + Организация + " КАК Организация, | Регистр.НомерСтроки КАК НомерСтроки | ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ * ИЗ ВТРаботникиОрганизаций) КАК Работники | ПО Регистр." + ИмяРеквизитаФизлицо + " = Работники.УдалитьФизлицо | И Регистр." + Организация + " = Работники.Организация | И Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) | И (Регистр.Регистратор = &Регистратор) | И (Регистр.УдалитьПриказ = ЗНАЧЕНИЕ(Документ.ПриемНаРаботуВОрганизацию.ПустаяСсылка)) | И Работники.Период <= " + ?(ПериодНаКонецМесяца, "КОНЕЦПЕРИОДА(Регистр." + ПолеДаты + ", МЕСЯЦ)", "Регистр." + ПолеДаты)+" | //УСЛОВИЕ | | СГРУППИРОВАТЬ ПО | Регистр." + ИмяРеквизитаФизлицо + ", | Регистр." + Организация + ", | Регистр.НомерСтроки | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | МИНИМУМ(Работники.Период), | Регистр." + ИмяРеквизитаФизлицо + ", | Регистр." + Организация + ", | Регистр.НомерСтроки | ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ * ИЗ ВТРаботникиОрганизаций) КАК Работники | ПО Регистр." + ИмяРеквизитаФизлицо + " = Работники.УдалитьФизлицо | И Регистр." + Организация + " = Работники.Организация | И Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.ПриемНаРаботу) | И Регистр.Регистратор = &Регистратор | И Регистр.УдалитьПриказ = ЗНАЧЕНИЕ(Документ.ПриемНаРаботуВОрганизацию.ПустаяСсылка) | И Работники.Период > " + ?(ПериодНаКонецМесяца, "КОНЕЦПЕРИОДА(Регистр." + ПолеДаты + ", МЕСЯЦ)", "Регистр." + ПолеДаты)+" | //УСЛОВИЕ | | СГРУППИРОВАТЬ ПО | Регистр." + ИмяРеквизитаФизлицо + ", | Регистр." + Организация + ", | Регистр.НомерСтроки) КАК ПериодыВсе | | СГРУППИРОВАТЬ ПО | ПериодыВсе.Физлицо, | ПериодыВсе.Организация, | ПериодыВсе.НомерСтроки) КАК Периоды | ПО РаботникиОрганизаций.Организация = Периоды.Организация | И РаботникиОрганизаций.УдалитьФизлицо = Периоды.Физлицо | И РаботникиОрганизаций.Период = Периоды.Период | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | ПриказыДоДокумента.Сотрудник, | ПриказыДоДокумента.НомерСтроки | ИЗ | (ВЫБРАТЬ | ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник КАК Сотрудник, | Периоды.НомерСтроки КАК НомерСтроки | ИЗ | (ВЫБРАТЬ | МАКСИМУМ(НАЧАЛОПЕРИОДА(ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Дата, ДЕНЬ)) КАК Период, | Регистр." + ИмяРеквизитаФизлицо + " КАК Физлицо, | Регистр.Организация КАК Организация, | Регистр.НомерСтроки КАК НомерСтроки | ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации | ПО Регистр." + ИмяРеквизитаФизлицо + " = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо | И Регистр.Организация = ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Организация | И Регистр.Регистратор = &Регистратор | И Регистр.УдалитьПриказ = ЗНАЧЕНИЕ(Документ.ПриемНаРаботуВОрганизацию.ПустаяСсылка) | И (НЕ ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Проведен) | И (НАЧАЛОПЕРИОДА(ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Дата, ДЕНЬ) <= "+?(ПериодНаКонецМесяца, "КОНЕЦПЕРИОДА(Регистр." + ПолеДаты + ", МЕСЯЦ)", "Регистр." + ПолеДаты)+") | //УСЛОВИЕ | | СГРУППИРОВАТЬ ПО | Регистр." + ИмяРеквизитаФизлицо + ", | Регистр.Организация, | Регистр.НомерСтроки) КАК Периоды | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации | ПО (Периоды.Период = НАЧАЛОПЕРИОДА(ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Дата, ДЕНЬ)) | И Периоды.Физлицо = ПриемНаРаботуВОрганизациюРаботникиОрганизации.ФизЛицо | И (НЕ ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Проведен) | И Периоды.Организация = ПриемНаРаботуВОрганизациюРаботникиОрганизации.Ссылка.Организация) КАК ПриказыДоДокумента) КАК Сотрудники | ПРАВОЕ СОЕДИНЕНИЕ " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ПО Сотрудники.НомерСтроки = Регистр.НомерСтроки | //УСЛОВИЕ |ГДЕ | Регистр.Регистратор = &Регистратор | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Если (ИмяРегистра = "БУДополнительныеНачисления") ИЛИ (ИмяРегистра = "РасчетПервойПоловиныМесяца") Тогда ЗапросПоДокументуТекст = СтрЗаменить(ЗапросПоДокументуТекст, "//УСЛОВИЕ", "И Регистр.УдалитьПриказ <> ЗНАЧЕНИЕ(Документ.ПриемНаРаботуВОрганизацию.ПустаяСсылка)"); ИначеЕсли (ИмяРегистра = "ДополнительныеНачисленияРаботниковОрганизаций") Тогда ЗапросПоДокументуТекст = СтрЗаменить(ЗапросПоДокументуТекст, "//УСЛОВИЕ", "И Регистр.ДокументОснование = ЗНАЧЕНИЕ(Документ.ДоговорНаВыполнениеРаботСФизЛицом.ПустаяСсылка)"); КонецЕсли; Выборка = Запрос.Выполнить().Выбрать(); КоличествоЗаписей = Выборка.Количество(); ИндексЗаписи = 1; Счетчик = 0; ПоддержкаВнутреннегоСовместительства = БылаПоддержкаВнутреннегоСовместительства(); Если ПрефиксИмениТаблицы = "РегистрНакопления" Тогда МенеджерРегистров[ИмяРегистра].УстановитьИспользованиеИтогов(Ложь); КонецЕсли; Если КоличествоДокументовВОднойТранзакции <> 0 Тогда НачатьТранзакцию(); КонецЕсли; Пока Выборка.Следующий() Цикл Если КоличествоДокументовВОднойТранзакции <> 0 Тогда Если Счетчик >= КоличествоДокументовВОднойТранзакции Тогда Попытка ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное); ОтменитьТранзакцию(); КонецПопытки; НачатьТранзакцию(); Счетчик = 0; КонецЕсли; КонецЕсли; Счетчик = Счетчик + 1; #Если Клиент Тогда Состояние(ПрефиксИмениТаблицы + "." + ИмяРегистра + ". Обрабатывается набор записей " + ИндексЗаписи + " из " + КоличествоЗаписей); #КонецЕсли ЗапросПоДокументу.УстановитьПараметр("Регистратор", Выборка.Приказ); МТ = Новый МенеджерВременныхТаблиц; ЗапросПоДокументу.МенеджерВременныхТаблиц = МТ; ЗапросПоДокументу.Текст = ЗапросПоДокументуВТ; ЗапросПоДокументу.Выполнить(); Если ПоддержкаВнутреннегоСовместительства[Выборка.Организация] Тогда ЗапросПоДокументу.Текст = ЗапросПоДокументуТекст; КонецЕсли; ИндексЗаписи = ИндексЗаписи + 1; НаборЗаписей = МенеджерРегистров[ИмяРегистра].СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Регистратор.Значение = Выборка.Приказ; НаборЗаписей.ОбменДанными.Загрузка = Истина; ВыборкаПоДокументу = ЗапросПоДокументу.Выполнить().Выбрать(); МТ.Закрыть(); Если ВыборкаПоДокументу.Количество() = 0 Тогда Продолжить; КонецЕсли; Пока ВыборкаПоДокументу.Следующий() Цикл Строка = НаборЗаписей.Добавить(); ЗаполнитьЗначенияСвойств(Строка, ВыборкаПоДокументу); Если ИмяРегистра = "БУОсновныеНачисления" Тогда Строка.ПериодДействияКонец = КонецДня(Строка.ПериодДействияКонец); КонецЕсли; КонецЦикла; НаборЗаписей.Записать(); НаборЗаписей.Очистить(); КонецЦикла; Если КоличествоДокументовВОднойТранзакции <> 0 Тогда Попытка ЗафиксироватьТранзакцию(); Исключение Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное); ОтменитьТранзакцию(); КонецПопытки; КонецЕсли; Если ПрефиксИмениТаблицы = "РегистрНакопления" Тогда МенеджерРегистров[ИмяРегистра].УстановитьИспользованиеИтогов(Истина); МенеджерРегистров[ИмяРегистра].ПересчитатьИтоги(); КонецЕсли; КонецПроцедуры // ЗаполнитьНаборЗаписейОрганизаций() // Заполнение поля Сотрудник в регистре // Процедура ЗаполнитьНаборЗаписейСотрудникамиБезПриказовОПриеме(ПолеДаты, МенеджерРегистров, ИмяРегистра) ИмяРеквизитаФизлицо = "УдалитьФизлицо"; Если ТипЗнч(МенеджерРегистров) = Тип("РегистрыСведенийМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрСведений"; ИначеЕсли ТипЗнч(МенеджерРегистров) = Тип("РегистрыНакопленияМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрНакопления"; ИначеЕсли ТипЗнч(МенеджерРегистров) = Тип("РегистрыБухгалтерииМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрБухгалтерии"; ИначеЕсли ТипЗнч(МенеджерРегистров) = Тип("РегистрыРасчетаМенеджер") Тогда ПрефиксИмениТаблицы = "РегистрРасчета"; ИмяРеквизитаФизлицо = "Физлицо"; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Регистр.Организация КАК Организация, | Регистр.Регистратор КАК Приказ, | Регистр." + ПолеДаты + " |ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр |ГДЕ | Регистр.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | |УПОРЯДОЧИТЬ ПО | Регистр." + ПолеДаты; ЗапросПоДокументу = Новый Запрос; МТ = Новый МенеджерВременныхТаблиц; ЗапросПоДокументу.МенеджерВременныхТаблиц = МТ; ЗапросПоДокументу.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Регистр." + ИмяРеквизитаФизлицо + " КАК Физлицо |ПОМЕСТИТЬ ВТФизлица |ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр |ГДЕ | Регистр.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | |ИНДЕКСИРОВАТЬ ПО | " + ИмяРеквизитаФизлицо; ЗапросПоДокументу.Выполнить(); ЗапросПоДокументу.Текст = "ВЫБРАТЬ | Регистр.Организация КАК Организация, | Регистр." + ИмяРеквизитаФизлицо + " КАК Физлицо, | Регистр." + ИмяРеквизитаФизлицо + ".Наименование КАК ФизлицоНаименование, | Регистр.НомерСтроки КАК НомерСтроки, | ВЫБОР | КОГДА Регистр.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка) | ТОГДА Сотрудники.Сотрудник | ИНАЧЕ Регистр.Сотрудник | КОНЕЦ КАК Сотрудник, | Регистр.* |ИЗ | " + ПрефиксИмениТаблицы + "." + ИмяРегистра + " КАК Регистр | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СписокСотрудников.Сотрудник КАК Сотрудник, | СписокСотрудников.Физлицо КАК Физлицо, | СписокСотрудников.Сотрудник.Организация КАК Организация | ИЗ | (ВЫБРАТЬ | МАКСИМУМ(СотрудникиОсновноеМесто.Ссылка) КАК Сотрудник, | СотрудникиОсновноеМесто.Физлицо КАК Физлицо, | 1 КАК Приоритет | ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиОсновноеМесто | ГДЕ | СотрудникиОсновноеМесто.Физлицо В (ВЫБРАТЬ Физлицо ИЗ ВТФизЛица) | И СотрудникиОсновноеМесто.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ТрудовойДоговор) | И СотрудникиОсновноеМесто.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы) | | СГРУППИРОВАТЬ ПО | СотрудникиОсновноеМесто.Физлицо | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | СотрудникиСовместительство.Ссылка, | СотрудникиСовместительство.Физлицо, | 2 | ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиСовместительство | ГДЕ | СотрудникиСовместительство.Физлицо В (ВЫБРАТЬ Физлицо ИЗ ВТФизЛица) | И СотрудникиСовместительство.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ТрудовойДоговор) | И СотрудникиСовместительство.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | СотрудникиДУ.Ссылка, | СотрудникиДУ.Физлицо, | 3 | ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиДУ | ГДЕ | СотрудникиДУ.Физлицо В (ВЫБРАТЬ Физлицо ИЗ ВТФизЛица) | И СотрудникиДУ.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ДоговорУправленческий)) КАК СписокСотрудников | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СписокФизическихЛиц.Физлицо КАК Физлицо, | МИНИМУМ(СписокФизическихЛиц.Приоритет) КАК Приоритет | ИЗ | (ВЫБРАТЬ | СотрудникиОсновноеМесто.Физлицо КАК Физлицо, | 1 КАК Приоритет | ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиОсновноеМесто | ГДЕ | СотрудникиОсновноеМесто.Физлицо В (ВЫБРАТЬ Физлицо ИЗ ВТФизЛица) | И СотрудникиОсновноеМесто.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ТрудовойДоговор) | И СотрудникиОсновноеМесто.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы) | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | СотрудникиСовместительство.Физлицо, | 2 | ИЗ | Справочник.СотрудникиОрганизаций КАК СотрудникиСовместительство | ГДЕ | СотрудникиСовместительство.Физлицо В (ВЫБРАТЬ Физлицо ИЗ ВТФизЛица) | И СотрудникиСовместительство.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровСФизЛицами.ТрудовойДоговор) | И СотрудникиСовместительство.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.Совместительство) | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | СотрудникиДУ.Физлицо, | 3 &nbs |
|||
58
Wobland
06.02.13
✎
08:53
|
кто-нибудь это всё читал?
|
|||
59
Kassidy_nd
06.02.13
✎
08:55
|
(58) - (47) в общем ошибка здесь!
|
|||
60
Kassidy_nd
06.02.13
✎
08:58
|
вообще я понял что никто мне не поможет!
|
|||
61
cw014
06.02.13
✎
08:58
|
Я не вижу ошибки
|
|||
62
cw014
06.02.13
✎
08:58
|
По крайней мере той воды, что ты льешь в (0)
|
|||
63
Kassidy_nd
06.02.13
✎
09:01
|
(62) давай счас в личку постучусь?
|
|||
64
cw014
06.02.13
✎
09:03
|
(63) Если будешь стучать в личку - будет заплатно
|
|||
65
kosts
06.02.13
✎
09:07
|
Причина такой ошибки.
-Наличие в одном и то же запросе конструкции "Поместить ..." с одним и тем же именем таблицы. -Повторное выполнение запроса в котором есть создание такой же временной таблицы. |
|||
66
Kassidy_nd
06.02.13
✎
09:07
|
ну давай
|
|||
67
Kassidy_nd
06.02.13
✎
09:22
|
(65) а можно поподробнее
|
|||
68
kosts
06.02.13
✎
09:27
|
(67)
Ошибка первого типа
Второго
|
|||
69
Reset
06.02.13
✎
09:45
|
(68) Наверное, второго типа так имелось в виду :)
Запрос.Текст = "выбрать 1 Поместить ВТТаблица1"; Запрос.Выполнить(); Запрос.Выполнить(); |
|||
70
Reset
06.02.13
✎
09:47
|
+ собственно, во втором варианте автор почти признался в (44)(45)... ан нет ;)
|
|||
71
kosts
06.02.13
✎
10:03
|
(70) Тоже верно, еще одно причина - повторное выполнение запроса при отладке ))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |