Имя: Пароль:
1C
1С v8
БП 3.0: Ведомость на выплату ЗП (программное создание)
,
0 dft2014
 
03.07.14
12:12
БП 3.0, платформа 8.2 (УФ)

Пытаюсь программно создать док-т "Ведомость на выплату зарплаты", выдает ошибку при записи:
"Дате по объекту соответствует запрет изменения данных для всех пользователей по 31.05.2014 (установлена общая дата запрета)."

Изначально, есть Эксель-файл, с него считываю данные на форму обработки. Далее на форме есть кнопка с командой "СоздатьВедомость". Вот ее код:


&НаСервере
Процедура СоздатьВедомость()
    
    Ведомость = Документы.ВедомостьНаВыплатуЗарплаты.СоздатьДокумент();
    Ведомость.Организация = Объект.Организация;
    Ведомость.ВидМестаВыплаты = Перечисления.ВидыМестВыплатыЗарплаты.ЗарплатныйПроект;
    
    Ведомость.Дата = ТекущаяДата();
    Ведомость.Комментарий = "Загружено из Excel-файла " + ТекущаяДата();
    
    ТЧВедомость = Ведомость.Зарплата;
    
    Для каждого Стр Из Объект.Сотрудники Цикл
        
        НоваяСтрокаТЧ = ТЧВедомость.Добавить();
        НоваяСтрокаТЧ.ФизическоеЛицо = Стр.ФизЛицо;
        НоваяСтрокаТЧ.Сумма = Стр.Сумма;
        
    КонецЦикла;
    
    Попытка
        Ведомость.Записать();
    Исключение
        Сообщить("Ошибка при записи документа!!!");
    КонецПопытки;
    
КонецПроцедуры


В конфигураторе так и не разобралась, как в этом док-те присваивается код и номер в при создании документа "Ведомость на выплату зарплаты": на форме и в модуле всего пара-тройка процедур, но какая отвечает за присвоение номера и даты - не разобралась! Вероятно из-за этого и ошибка выходит. Подскажите пож-та, в УФ все так запутали и спрятали, что раньше было доступно.
1 Kamas
 
03.07.14
12:14
(0) "Дате по объекту соответствует запрет изменения данных для всех пользователей по 31.05.2014 (установлена общая дата запрета)." -говорит что стоит дата запрета и вестимо дата документа меньше этой даты
2 dft2014
 
03.07.14
12:15
(1) Дата запрета у нас действительно стоит 31.05.2014, но я создаю документ текущей датой - 03.07.2014. Но мне кажется, что проблема не в этом, а в том, что в УФ надо как-то по-хитрому присваивать дату в док-те "Ведомость на выплату зарплаты". Обычный код:
Ведомость.Дата = ТекущаяДата();
не проходит...
3 Kamas
 
03.07.14
12:18
(2) еще как проходит обычно
4 dft2014
 
03.07.14
12:22
(3) В других док-тах проходит, а именно в этом - нет. В док-те "Ведомость на выплату зарплаты" в модулях всего несколько строк, но про присвоение номера и даты - не нашла где.

Помогите!!!
5 anatoly
 
03.07.14
12:26
в Исключение вставить еще вывод даты документа - а потом думать почему она такая
6 dft2014
 
03.07.14
12:36
(5) Добавила:

Попытка
        Ведомость.Записать();
        //    Ведомость.Записать(РежимЗаписиДокумента.Проведение);
    Исключение
        Сообщить("Ошибка при проведении!!! " + Ведомость.Дата);
    КонецПопытки;

Выдает 03.07.2014. Т.е. дату присваивает правильную, больше чем дата запрета! В чем тогда еще может быть причина???
7 dft2014
 
03.07.14
13:46
Ап!
8 dft2014
 
03.07.14
15:05
Вроде нашла причину - дело не в дате, а в том, что программно не прописала реквизит "ПериодРегистрации" (в пользовательском режиме он называется "Месяц начисления"), вот он на форме: http://s020.radikal.ru/i706/1407/96/97d7532c2c94.jpg

Ошибку эту нашла, прописав:

Попытка
        Ведомость.Записать();
    Исключение
        Сообщить("Ошибка при проведении!!! " + Ведомость.Дата + " --- " + Ведомость.ПериодРегистрации);
    КонецПопытки;


И он выдал Ошибка при проведении 03.07.2014 --- 01.01.0001 0.00.00
Т.е. пустой период, из-за этого и не записывается!!!

Подскажите, как его прописать. Не могу никак разобраться в дебрях этого док-та!!!
9 anatoly
 
03.07.14
15:08
присвоить значение также как Дате.
ну может в НачалоМесяца() еще
10 piter3
 
03.07.14
15:09
Ведомость.ПериодРегистрации
11 dft2014
 
03.07.14
15:13
(10) Это понятно, что это Ведомость.ПериодРегистрации. Но там вызывается Процедура "ЗаполнитьМесяцПоДате", которая заполняет дату как месяц. На фото в (8) это видно. Как ее использовать в моей внешней обработке?
12 piter3
 
03.07.14
15:15
а что нельзя Ведомость.ПериодРегистрации=НачалоМесяца(дата)
13 piter3
 
03.07.14
15:21
просто попробуйте,а потом балуйтесь Процедура "ЗаполнитьМесяцПоДате",
14 dft2014
 
03.07.14
15:21
(12) Не срабатывает...

Написала:
Ведомость.ПериодРегистрации = Месяц(ТекущаяДата());
тоже не срабатывает...
15 piter3
 
03.07.14
15:22
(14) да вбейте блин Ведомость.ПериодРегистрации=НачалоМесяца(дата).
если сп не читаете сделайте чего говорят
16 dft2014
 
03.07.14
15:25
(15) Я же уже ответила в (14), что: Ведомость.ПериодРегистрации=НачалоМесяца(ТекущаяДата());
не срабатывает.
17 dft2014
 
03.07.14
15:35
В типовом механизме, в модуле формы, в процедуре ПриСозданииНаСервере(Отказ, СтандартнаяОбработка), прописано:

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


Как мне этот код по заполнению Периода, запихнуть в мою обработку???
18 MrStomak
 
03.07.14
15:35
(16) Значит, проблема не в этом реквизите. Но его всё равно нужно заполнять.
19 MrStomak
 
03.07.14
15:36
(17) Это всё байда для того чтобы периодрегистрации красиво показывать. Ты же не форму программно создаёшь, а сам документ, поэтому это не важно.
20 MrStomak
 
03.07.14
15:37
Написала:
Ведомость.ПериодРегистрации = Месяц(ТекущаяДата());
тоже не срабатывает...

15) Я же уже ответила в (14), что: Ведомость.ПериодРегистрации=НачалоМесяца(ТекущаяДата());
не срабатывает.


Так ты как написала? первый вариант - неверен.
21 pavelul73
 
03.07.14
15:43
может все же не в этом реевизите дело?
Попробуйте
Попытка
док.записать();
Исключение
сообщить(ОписаниеОшибки());
КонецПопытки
22 dft2014
 
03.07.14
15:43
(20) Я написала:
Ведомость.ПериодРегистрации = НачалоМесяца(ТекущаяДата());
23 anatoly
 
03.07.14
15:44
какой тип у этого реквизита ПериодРегистрации ?
24 piter3
 
03.07.14
15:45
(23)дата
25 piter3
 
03.07.14
15:45
(22)и?
26 dft2014
 
03.07.14
15:50
(23) Дата
27 dft2014
 
03.07.14
15:51
Написала:

Процедура СохранитьВедомость()
    
    Ведомость = Документы.ВедомостьНаВыплатуЗарплаты.СоздатьДокумент();
    Ведомость.Организация = Объект.Организация;
    Ведомость.ВидМестаВыплаты = Перечисления.ВидыМестВыплатыЗарплаты.ЗарплатныйПроект;
    
    Ведомость.ПериодРегистрации = НачалоМесяца(ТекущаяДата());   // добавила
    Сообщить("*** " + Ведомость.ПериодРегистрации);
    
    Ведомость.Дата = ТекущаяДата();
    Ведомость.Комментарий = "Загружено из Excel-файла " + ТекущаяДата();
    
    ТЧВедомость = Ведомость.Зарплата;
    
    Для каждого Стр Из Объект.Сотрудники Цикл
        
        НоваяСтрокаТЧ = ТЧВедомость.Добавить();
        НоваяСтрокаТЧ.ФизическоеЛицо = Стр.ФизЛицо;
        НоваяСтрокаТЧ.Сумма = Стр.Сумма;
        
    КонецЦикла;
    
    Попытка
        Ведомость.Записать();
    Исключение
        Сообщить(ОписаниеОшибки());
        Сообщить("Ошибка при проведении!!! " + Ведомость.Дата + " --- " + Ведомость.ПериодРегистрации);
    КонецПопытки;
    
КонецПроцедуры


Ошибки не выдает, но и сообщений никаких не выдает. Документ тоже не создает...
28 MrStomak
 
03.07.14
15:53
(27) Если ничего не выдаёт, значит всё создаёт, ты просто не там смотришь, не обновляешь или еще чего.
29 Borteg
 
03.07.14
15:54
Поможет после всего напиши
Сообщение = Новый СообщениеПользователю();
Сообщение.текст = Ведомость.Ссылка;
Сообщение.установитьДанные(Ведомость.Ссылка.получитьОбъект());
Сообщение.сообщить();
В появившемся сообщение ткни на ссылку и передет в этот документ
30 Borteg
 
03.07.14
15:56
а так вообще в тройке много разных ведомостей, для внешних ведомостей и для ведомостей бухи разные ведомости, так что скорее всего просто не туда смотрим
31 Borteg
 
03.07.14
15:57
Сообщение = Новый СообщениеПользователю();
Сообщение.текст = Ведомость.Ссылка;
Сообщение.установитьДанные(Ведомость);
Сообщение.сообщить();
вот так лучше не заметил что там создание
32 dft2014
 
03.07.14
16:03
Я в шоке от УФ!!! Все это время ведомости - создавались, после того как строчку написала: Ведомость.ПериодРегистрации=НачалоМесяца(ТекущаяДата());
!!!!!

Они в общем журнале не отображались: кнопки обновить в нем нет, поэтому я думала, что увижу вновь созданные ведомости. Он у меня все время открытым был...
Нет слов...

Всем СПАСИБО!!!