Имя: Пароль:
1C
1C 7.7
v7: Форма Т2 - "задвоение" записей
0 Balabass
 
15.06.12
04:16
У сотрудника есть 3 подряд идущих приказа по отпуску:
http://screencast.com/t/Sgz4paUUoUEv
В форме Т2 все ок:
http://screencast.com/t/BZ6up3qCpsJY

Но стоит начать вводить на основании Начисления отпусков:
http://screencast.com/t/0fwgjf3mnsOf
то начинается фигня какая то:
http://screencast.com/t/m5bxGl8KJt
Приказ один №001336, а записи по нему 2 с разными днями.
2 запись появляется при вводе Начисления по 2 приказу №001337.

Почему вдоит - непойму.
Кто нибудь сталкивался с таким случаем?
1 1C-band
 
15.06.12
04:22
Да в табелях ВСЕХ версий 1С И НЕ ТАКОЕ БЫВАЕТ! :-/
2 Мимохожий Однако
 
15.06.12
06:13
(0)Зачем ввели 3 отпуска подряд в один день?
3 Balabass
 
15.06.12
07:06
(2) компенсации и 1 отпуск.
4 Balabass
 
15.06.12
07:07
Ввел разными датами - не помогло.
5 Мимохожий Однако
 
15.06.12
07:09
(3)Расшифруй
6 Мимохожий Однако
 
15.06.12
07:09
Сделать на 3 приказа 1 документ в 1С попробуй
7 Balabass
 
15.06.12
07:09
Короче дело в начислении отпуска

//******************************************************************************
// Функция ПолучитьПриказПоОтпуску(ДокНачОтп)
//
// Параметры: ДокНачОтп - Документ.НачислениеОтпуска
//
// Описание: Возвращает документ.ПриказПоОтпуску, на основании которого и был введен документ ДокНачОтп.
//  Если приказПоОтпуску не найден, возвращает 0;
Функция ПолучитьПриказПоОтпуску(ДокНачОтп)
   
   Если ДокНачОтп.Вид() = "ОтпускПоУходуЗаРебенком" Тогда
       ДокументОснование = ДокНачОтп.ДокументОснование;
   Иначе
       ДокументОснование = ДокНачОтп.ДокОснование;
   КонецЕсли;
   
   ДокПриказ = СоздатьОбъект("Документ");
   ДокПриказ.ВыбратьПоЗначению(, , "Сотрудник", Сотрудник);
   Пока ДокПриказ.ПолучитьДокумент() = 1 Цикл
       Если ДокПриказ.ТекущийДокумент().Вид() = "ПриказПоОтпуску" Тогда
           Если ((ДокНачОтп.Начало = ДокПриказ.Начало) и (ДокНачОтп.Окончание = ДокПриказ.Окончание))
           или    (ДокументОснование = ДокПриказ.ТекущийДокумент()) Тогда
               Возврат ДокПриказ.ТекущийДокумент();
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
   Возврат 0;
КонецФункции // ПолучитьПриказПоОтпуску


У Компенсации отпуска нет ни Начало ни Окончание.
А проверка делается по этим рекувизитам - и они естественно сходятся.
8 Balabass
 
15.06.12
07:10
(6) Кадрым не нравится так.
Они хотят в Т2 видеть все до мельчайших подробностей.

Я думаю компенсацию сделать 1 документом.
9 Balabass
 
15.06.12
07:13
А если в

Если ((ДокНачОтп.Начало = ДокПриказ.Начало) и (ДокНачОтп.Окончание = ДокПриказ.Окончание))
           или    (ДокументОснование = ДокПриказ.ТекущийДокумент())

Сделать

Если ((ДокНачОтп.Начало = ДокПриказ.Начало) и (ДокНачОтп.Окончание = ДокПриказ.Окончание))
           и    (ДокументОснование = ДокПриказ.ТекущийДокумент())

Проверка по датам мне вообще не нравиться.
10 Balabass
 
15.06.12
07:15
Тут не прокатит если документ Приказ по отпуску исправлен другим документом.
AdBlock убивает бесплатный контент. 1Сергей