Имя: Пароль:
1C
1С v8
Помогите очистить временную таблицу
,
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
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)
Ошибка первого типа

Запрос.Текст = "выбрать 1
   Поместить ВТТаблица1
   ;
   выбрать 2
   Поместить ВТТаблица1";
Запрос.Выполнить();


Второго

Запрос.Текст = "выбрать 1
   Поместить ВТТаблица1";
Запрос.Выполнить();

Запрос.Текст = "выбрать 2
   Поместить ВТТаблица1";
Запрос.Выполнить();
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) Тоже верно, еще одно причина - повторное выполнение запроса при отладке ))