|
Web-сервис на запись данных (командировки, новый сотрудник) | ☑ | ||
---|---|---|---|---|
0
Renatsun
17.04.13
✎
14:23
|
День добрый,
Пишу сервисы для внешней системы. С чтением из справочников проблем нет, а вот запись данных для меня стала проблемой: 1. Прием сотрудника на работу Функция НовыйСотрудник(ФИО, Должность, ДатаНачалаРаботы, ИспСрок, Оклад, Подразделение, Организация, Совмещение, Студент, Пол) СпрФизЛиц=Справочники.ФизическиеЛица; НайденныйФизЛиц=СпрФизЛиц.НайтиПоНаименованию(ФИО); Если НайденныйФизЛиц=Неопределено Тогда НовЭлФизЛиц=СпрФизЛиц.СоздатьЭлемент(); НовЭлФизЛиц.Наименование=ФИО; НовЭлФизЛиц.Записать(); Иначе НовЭлФизЛиц=НайденныйФизЛиц; //.ПолучитьОбъект(); КонецЕсли; //Может нужно создать документ? //ДокПрием=Документы.ПриемНаРаботуВОрганизацию.СоздатьДокумент(); //ДокПрием.ФизическиеЛица=НовЭлФизЛиц.Ссылка; //ДокПрием.Записать(); СпрСотр=Справочники.СотрудникиОрганизаций; НовЭлСотр=СпрСотр.СоздатьЭлемент(); НовЭлСотр.Физлицо=НовЭлФизЛиц.Ссылка; НовЭлСотр.Наименование=ФИО; НовЭлСотр.ДатаПриемаНаРаботу=ДатаНачалаРаботы; НовЭлСотр.ТарифнаяСтавка=Оклад; НовЭлСотр.Записать(); Возврат 1; КонецФункции при вызове сервиса появляется следующее сообщение: "Неизвестная ошибка. {WebСервис.Сотрудники.Модуль(240)}: Ошибка при вызове метода контекста (Записать) по причине: {WebСервис.Сотрудники.Модуль(240)}: Ошибка при вызове метода контекста (Записать) по причине: по причине: Не удалось записать: "Сотрудник"!" При этом в справочнике Физичесих лиц запись появляется. В сотрудниках нет новых записей. 2. сервис регистрации командировок: Функция НоваяКомандировка(НомерДокумента, ДатаДокумента, Организация, КудаСтранаГород, КудаОрганизация, Основание, СотрудникФИО, ДатаС, ДатаПо, Цель, ИсточникФинансирования) ОтсДок=Документы.ОтсутствияНаРабочемМесте.СоздатьДокумент(); ОтсДок.Физлицо=Справочники.ФизическиеЛица.НайтиПоНаименованию(СотрудникФИО); ОтсДок.ДатаНачала=ДатаС; ОтсДок.ДатаОкончания=ДатаПо; ОтсДок.Дата=ДатаДокумента; ОтсДок.Записать(); КомДок=Документы.КомандировкиОрганизаций.СоздатьДокумент(); КомДок.УстановитьНовыйНомер(); КомДок.Номер=НомерДокумента; КомДок.Дата=ДатаДокумента; КомДок.Организация=Организация; КомДок.СтранаНазначения=КудаСтранаГород; КомДок.ОрганизацияНазначения=КудаОрганизация; КомДок.ОснованиеКомандировки=Основание; //ИсточникФинансирования; КомДок.Записать(); Возврат 1; КонецФункции Вроде-бы работает, документ создается, но не проводится и непонятно куда записывать поле "ИсточникФинансирования". И насколько корректна такая запись. Заранее, спасибо |
|||
1
ZoRN
17.04.13
✎
14:29
|
По поводу Сотрудника, проверь реквизиты обязательные для заполнения т.е. записи
|
|||
2
sikuda
17.04.13
✎
14:30
|
Смотри права под которым работает пользователь вэб-сервиса
|
|||
3
ZoRN
17.04.13
✎
14:31
|
по 2. РежимЗаписиДокумента.Проведение
|
|||
4
ZoRN
17.04.13
✎
14:32
|
(2) +1
|
|||
5
Renatsun
17.04.13
✎
14:35
|
(2) Нужны какие-то особые права? Я думал, если пишет в справочник Физлиц, то и в остальные запишет, счас проверил - стоит галка "полные права".
|
|||
6
Юрий Лазаренко
17.04.13
✎
14:47
|
(0) Попробуй вынеси данный код модулей веб-сервиса в обработку и запусти, там можно и отладку запустить, и тексты ошибок будут обширней.
|
|||
7
Renatsun
17.04.13
✎
15:17
|
(3) спасибо помогло. Хотя документ ОтсутствияНаРабочемМесте проводиться отказывается, видимо полей не хватает или его проводить не надо?
(0) Попробую, но учитывая мой недельный опыт, видимо придется почитать как создавать формы? или обработка не всегда с ними связана? (3) Реквизитов на "СотрудникиОрганизаций" обязательных нет (проверял по свойству "Проверка заполнения"). В примерах, только ФИО и оклад, народ пишет и вроде как должно работать Документ по командировке проводиться, но без сотрудников. Не могу найти реквизитов связывающих документы ОтсутствияНаРабочемМесте и КомандировкиОрганизаций. Как вообще можно посмотреть реляционную модель в 1С? |
|||
8
Renatsun
13.05.13
✎
15:17
|
Перенес в обработку прием сотрудника.
Вроде все получается, но сотрудник не появляется в списке сотрудников, приходится выходить на карточку сотрудника через физлицо. Как я понимаю это связано с тем, что стоит отметка на вкладке "Дополнительно" - "Не отображать в списках. Все опреции по сотруднику завершены". Почему высталяется данная отметка и как этого избежать? Код ниже: Процедура КнопкаВыполнитьНажатие(Кнопка) СпрФизЛиц=Справочники.ФизическиеЛица; ОригФИО=ФИО; НовЭлФизЛиц=СпрФизЛиц.НайтиПоНаименованию(ФИО); Если НовЭлФизЛиц=СпрФизЛиц.ПустаяСсылка() ИЛИ НовЭлФизЛиц = Неопределено Тогда НовЭлФизЛиц=СпрФизЛиц.СоздатьЭлемент(); //НовЭлФизЛиц.Заполнить НовЭлФизЛиц.Наименование=ФИО; //Перечисления.ПолФизическихЛиц.Женский. НовЭлФизЛиц.Пол=Пол; НовЭлФизЛиц.Записать(); Фамилия=ОбщегоНазначения.ВыделитьСлово(ФИО); Имя=ОбщегоНазначения.ВыделитьСлово(ФИО); Отчество=ОбщегоНазначения.ВыделитьСлово(ФИО); мНаборЗаписейФИО=РегистрыСведений.ФИОФизЛиц.СоздатьНаборЗаписей(); Элемент=мНаборЗаписейФИО.Добавить(); Элемент.Период=ТекущаяДата(); Элемент.Фамилия = Фамилия; Элемент.Имя = Имя; Элемент.Отчество = Отчество; Элемент.ФизЛицо = НовЭлФизЛиц.Ссылка; мНаборЗаписейФИО.Записать(Истина); КонецЕсли; НовЭлСотр=Справочники.СотрудникиОрганизаций.СоздатьЭлемент(); НовЭлСотр.Физлицо=НовЭлФизЛиц.Ссылка; НовЭлСотр.Наименование=ОригФИО; НовЭлСотр.ВидДоговора=Перечисления.ВидыДоговоровСФизЛицами.ТрудовойДоговор; НовЭлСотр.ВидЗанятости=Перечисления.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы; НовЭлСотр.ГрафикРаботы=Справочники.ГрафикиРаботы.НайтиПоНаименованию("Основной график"); НовЭлСотр.Должность=Справочники.ДолжностиОрганизаций.НайтиПоНаименованию(Должность); НовЭлСотр.ДатаНачала=ДатаНачалаРаботы; НовЭлСотр.Организация=Справочники.Организации.НайтиПоНаименованию(Организация); НовЭлСотр.ЗанимаемыхСтавок=1; НовЭлСотр.ВидРасчета=ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам; НовЭлСотр.Код=НовЭлСотр.ПолучитьОчереднойТабельныйНомер(); НовЭлСотр.Записать(); ДокПрием=Документы.ПриемНаРаботуВОрганизацию.СоздатьДокумент(); ДокПрием.Организация=Справочники.Организации.НайтиПоНаименованию(Организация); ДокПрием.УстановитьНовыйНомер(); //ДокПрием.Номер="6"; ДокПрием.Дата=ТекущаяДата(); НоваяCтрока=ДокПрием.РаботникиОрганизации.Добавить(); НоваяCтрока.ФизЛицо=НовЭлФизЛиц.Ссылка; НоваяCтрока.ПодразделениеОрганизации=Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию(Подразделение); НоваяCтрока.Должность=Справочники.ДолжностиОрганизаций.НайтиПоНаименованию(Должность); НоваяCтрока.ДатаПриема=ДатаНачалаРаботы; НоваяCтрока.Сотрудник=НовЭлСотр.Ссылка; НоваяCтрока.ГрафикРаботы=Справочники.ГрафикиРаботы.НайтиПоНаименованию("Основной график"); НоваяCтрока.СпособРасчета=Перечисления.СпособыРасчетаОплатыТруда.ПоЧасовойТарифнойСтавке; НоваяCтрока.ЗанимаемыхСтавок=1; НоваяCтрока.ИспытательныйСрок=ИспСрок; Оклады=ДокПрием.ОсновныеНачисления.Добавить(); Оклады.ФизЛицо=НовЭлФизЛиц.Ссылка; Оклады.Сотрудник=НовЭлСотр.Ссылка; Оклады.ВидРасчета=ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам; Оклады.Показатель1=Оклад; ДокПрием.Записать(РежимЗаписиДокумента.Проведение); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |