Имя: Пароль:
1C
 
1с ЗУП 3.1 ДоходВНатуральнойФорме программно
,
0 illiona
 
naïve
02.02.24
05:15
Добрый день. Создаю документ пустой в базе, затем обработка его заполняет, всё на форме вижу. Но при нажатии на кнопку пересчитать, у сотрудников исчезает Территория, если еще раз пересчитать она встает обратно. Не могу понять с чем это связано. При ручном вводе документа, Терриория не исчезает. Подскажите может кто сталкивался.
1 SleepyHead
 
гуру
02.02.24
08:00
(0) В табличной части "Начисления" нет колонки "Территория". Возможно, определяется по подразделению или месту получения дохода.

У вас обе эти колонки заполняются?
2 illiona
 
naïve
02.02.24
08:18
да, эти колонки заполняются в табличной части РаспределениеПоТерриториямУсловиямТруда, и при открытии документа территория заполнена.
3 SleepyHead
 
гуру
02.02.24
08:20
(2) Спрашивал про табличную часть "Начисления"
4 dchumak
 
02.02.24
08:21
(0) Скорее всего программно что-то недозаполнено (реквизит). Создайте 2 документа, один вручную, второй программно и сравните реквизиты в шапке и табличных частях (например, через консоль запросов).
5 Гена
 
гуру
02.02.24
08:25
(2) Программно куда сумму вносите? Только в свою ячейку или параллельно и в ячейку территории?
Для данного сотрудника точно уже есть территория или пусто?
6 SleepyHead
 
гуру
02.02.24
08:27
(5) При пересчете табличная часть "Распределение по территориям" пересчитывается. Как и все прочие, кроме "Начислений". А что в начислениях - автор молчит, как партизан.
7 Гена
 
гуру
02.02.24
08:29
(6) Уверены? По памяти вроде как не пересчитывается. Пересчитывается только по команде Отменить исправления сотрудника.
8 Gucci76
 
02.02.24
09:15
(0) Вы запускали процедуру программно:
Процедура ПерезаполнитьДанныеФормыНаСервере(Знач Сотрудники, СохранятьИсправления = Истина) Экспорт
9 illiona
 
naïve
02.02.24
09:21
Начисления программно тоже табличная часть заполняется
Заполнение территории:
НСт=ОбъектДляЗаполнения.РаспределениеПоТерриториямУсловиямТруда.Добавить();
НСт.Территория=Стр.Территория;
НСт.ИдентификаторСтроки=Идент;
НСт.Результат=Стр.Результат;
НСт.ДоляРаспределения=1;
10 Гена
 
гуру
02.02.24
09:31
(8) А может наоборот надо, = Ложь, раз идёт сумма в распределение по территориям? Нет?
11 Gucci76
 
02.02.24
09:37
(10) Я привел ссылку на саму процедуру в модуле формы документа ДоходыВнатуральнойФорме.
В ней параметры это массив сотрудников, которые надо пересчитать и флаг сохранения ручных исправлений (он без указания этого параметра будет Истина
исправления фиксируются специальным реквизитом - если его предварительно не указать, то думаю все равно 1С пересчитает
12 Гена
 
гуру
02.02.24
09:42
(11) Да это понятно. Я просто подумал, а может наоборот - надо отменить ручные исправления.
Короче, практика - критерий истины. Подождём результатов экспериментов автора.
13 illiona
 
naïve
02.02.24
09:43
В ручном добавлении доля 1
14 illiona
 
naïve
02.02.24
09:44
(11) Не поняла, что надо поставить?
15 SleepyHead
 
гуру
02.02.24
09:48
(7) Не уверен, но по логике должна именно пересчитываться.
Когда вы вносите данные в документ вручную, вы заполняете только табличную часть "Начисления".

Территория есть только в табличной части "Распределение по территориям", и она заполняется программно, по данным подразделения и места получения дохода.
16 Gucci76
 
02.02.24
11:19
(14) Вы все руками заполняете? Или потом запускаете типовой функционал расчета/перерасчета?
Рекомендую второй вариант, для этого воспользуйтесь процедурой из (8)
17 illiona
 
naïve
02.02.24
11:23
да все запускается вручную из файла
18 Gucci76
 
02.02.24
14:15
(17) Так там много различных табличных частей.
По идее надо заполнить таблицы Начисления и Показатели (ФизическиеЛица наверно сами заполнятся, но если не трудно...), а потом попросить 1С пересчитать с помощью процедуры из (8)
19 illiona
 
naïve
04.02.24
17:31
У меня получается есть ссылка на документ, а как запустить пересчет?
20 Gucci76
 
04.02.24
18:50
(19) Получить форму документа. И к ней через точку обратиться к процедуре (предварительно надо подготовить массив сотрудников)
21 Gucci76
 
04.02.24
18:51
ПараметрыФормы = Новый Структура("Ключ",Объект.ДокументСсылка);
УпрФорма = ПолучитьФорму("Документ.ДоходВНатуральнойФорме.ФормаОбъекта",ПараметрыФормы,ЭтаФорма);
УпрФорма.ПерезаполнитьДанныеФормыНаСервере(МассивСотрудников,Истина);
22 Gucci76
 
04.02.24
18:54
Почти во всех документах есть эта процедура (разовое, премия.....).
Вот в назначении планового начисления нет - и ни одна экспортная процедура не дает пересчитать программное заполнение документа ((((((
Может кто знает как посчитать размер доплаты в этом документе?
23 illiona
 
naïve
13.02.24
09:52
Еще вопрос. А табличная часть Показатели, как должна быть заполнена в случае, если начисление фиксированная сумма(не по формуле)?
24 Gucci76
 
13.02.24
11:21
(23) Никак.
25 SleepyHead
 
гуру
13.02.24
11:43
(23)

Как посмотреть, как должен быть заполнен документ:

1. Создайте документ вручную, проведите
2. В конфигураторе зайдите в модуль формы, поставьте точку останова в начало ПриСозданииНаСервере и откройте документ
3. Вы окажетесь в отладчике
4. Смотрите, что в документе, через Объект.Ссылка в табло или через вычисление выражения по Shfr+F9
26 illiona
 
naïve
14.02.24
06:30
C пересчетом решилось. Теперь другая проблема. Под расчетчиком в обработке:
прав не хватает именно в момент РасчетЗарплатыРасширенный.СоздатьМенеджерРасчета()
ПривилигированныйРежим не срабатывает.
А если пересчитать сотрудников из документа, то проходит это место). Может кто-то сталкивался с такой проблемой?
27 SleepyHead
 
гуру
14.02.24
06:58
(26) В обработке привелигированный режим не включается.
28 Гена
 
гуру
14.02.24
07:06
Придёт Волшебник и покажет вам обоим кузькину мать... Будете потом кричать, что вас насильно привели и привили...
29 SleepyHead
 
гуру
14.02.24
07:42
(28) Ну да, я все время в этом слове путаюсь. Хотя в школе учительница мне говорила, что у меня врождённая грамотность.
30 illiona
 
naïve
14.02.24
08:20
привилигированный режим стоит и в модуле где создается менеджер расчета. Подскажите как в обработке это сделать)
31 Страждущий
 
14.02.24
11:09
Нужно установить в обработке безопасный режим в ложь
32 SleepyHead
 
гуру
14.02.24
11:28
(31) Не всегда это помогает.

Может помочь, если дать обработке права на такой режим, прописав их в сведениях о внешней обработке, и подключив обработку в подсистему допобработок.

Но у меня пока такое не получилось, программист я еще так себе.

В любом случае, в отладке автор все равно будет использовать внешнюю  обработку, а в ней такой режим не поставишь.

Автор, копай сторону внешнего модуля РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима


    ВерсияБСП=СтандартныеПодсистемыСервер.ВерсияБиблиотеки();
ПараметрыРегистрации=ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(ВерсияБСП);
// ... тут подключаем вид обработки и так далее
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеПривилегированногоРежима();
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
33 illiona
 
naïve
16.02.24
04:53
При добавлении обработку в программу, через дополнительные обработки всё получилось
34 Гена
 
гуру
16.02.24
07:56
(33) Можно поздравить, уже перешли окончательно на ЗУП?
Натуралка в теме - это суточные сверх нормы?
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн