Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Обработка проведения()          
Time dont wait Подменю пользователя
сообщение 28.10.09, 9:04
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

Помогите разобраться !!
Есть документ приема на работу сотрудника и справочник с сотрудниками,разбитый на работающих и уволеных, в каждой группе есть несколько подразделений (подгруппы).
В документе при указании о подразделения должна производится запись в соответствующюю подгруппу.
Я написал цикл в обработке проведения, но он не работает!?
Вот код:



Если (Отделение.Выбран()="MAGNA") тогда
СпрСтр = СоздатьОбъект("Справочник.Сотрудники");
Родитель = СоздатьОбъект("Справочник.Сотрудники");
Родитель.НайтиПоНаименованию("MAGNA");
СпрСтр.ИспользоватьРодителя("MAGNA");
СпрСтр.ИспользоватьДату(ДатаДок);
СпрСтр.Новый();
СпрСтр.Родитель = "MAGNA";
СпрСтр.Код = НомерДок;
СпрСтр.ДатаДок = ДатаДок;
СпрСтр.Сотрудник = Співробітник;
...
СпрСтр.Записать();

КонецЕсли;

MATEVI Подменю пользователя
сообщение 28.10.09, 9:13
Сообщение #2

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2203
Из: Одесса
Спасибо сказали: 968 раз
Рейтинг: 796.3

1. Ошибка № 1
Если (Отделение.Выбран()="MAGNA") тогда

Выбран()
Синтаксис:
Выбран()
Назначение:
Возвращает флаг выбора элемента справочника: 1 - если элемент справочника выбран, 0 - если не выбран.

Вы скажите Вы бухгалтер? Проще написать код готовый... Так как у Вас все неправильно

Time dont wait Подменю пользователя
сообщение 28.10.09, 9:20
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

Я начинаю изучать 1с, две недели только сижу, ну а как правильно написать?Подскажи если не трудно
типа :
Если (Отделение.Выбран()=1) тогда

но тогда как мне определить подгруппу?

Time dont wait Подменю пользователя
сообщение 28.10.09, 9:20
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

надо написать цикл в цикле?

MATEVI Подменю пользователя
сообщение 28.10.09, 9:33
Сообщение #5

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2203
Из: Одесса
Спасибо сказали: 968 раз
Рейтинг: 796.3

Цитата(Time dont wait @ 28.10.09, 10:20) *
надо написать цикл в цикле?

Цикл тут не причем.
Начне с того что я не до конца понимаю задачу. Что Вы хотите сделать. При приеме на работу не заходя в справочники создать нового сотрудника и физ лицо?

MATEVI Подменю пользователя
сообщение 28.10.09, 9:35
Сообщение #6

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2203
Из: Одесса
Спасибо сказали: 968 раз
Рейтинг: 796.3

Цитата(Time dont wait @ 28.10.09, 10:20) *
Я начинаю изучать 1с, две недели только сижу, ну а как правильно написать?Подскажи если не трудно
типа :
Если (Отделение.Выбран()=1) тогда

но тогда как мне определить подгруппу?

Что такое отделение? Такого реквизита в документе нет.
Определить группу ЭтоГруппа()

Time dont wait Подменю пользователя
сообщение 28.10.09, 9:38
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

Да. И при выборе отделения в которое я хочу его записать, запись должна происходить в группу Работающие, которая разбита на подгруппы - отделения, в выбранное пользователем отделение.

MATEVI Подменю пользователя
сообщение 28.10.09, 9:44
Сообщение #8

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2203
Из: Одесса
Спасибо сказали: 968 раз
Рейтинг: 796.3

Цитата(Time dont wait @ 28.10.09, 10:38) *
Да. И при выборе отделения в которое я хочу его записать, запись должна происходить в группу Работающие, которая разбита на подгруппы - отделения, в выбранное пользователем отделение.

А как Вы собираетесь записывать необходимые значения ревизитов справочника ФизЛица и Сотрудники.
ФИО дату приема и многое другое? Ведь насколько я знаю при приеме сначала заводятся эти справочники.

Time dont wait Подменю пользователя
сообщение 28.10.09, 9:52
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

Ето все есть, отделение выбираю со справочника Отделения и тд.тп.
Конфигурация самописная, просто сначала я производил запись непосредственно в грРаботающие, а
теперь возникла потребность в том чтобы разбить грРаботающие на подгруппы (отделения) , типа :
Админперсонал;
Отдел Кадров;
...

Но не знаю как ето сделать?
Тоесть заполняю данные в поля документа, и записываю в подгруппу, которую указываю сотруднику в документе..
Понятно?

Time dont wait Подменю пользователя
сообщение 28.10.09, 9:54
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

И зпись происходит в выбраное отделение(подгруппу), которое находится в грРаботающие.

MATEVI Подменю пользователя
сообщение 28.10.09, 9:56
Сообщение #11

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2203
Из: Одесса
Спасибо сказали: 968 раз
Рейтинг: 796.3

Цитата(Time dont wait @ 28.10.09, 10:52) *
Ето все есть, отделение выбираю со справочника Отделения и тд.тп.
Конфигурация самописная, просто сначала я производил запись непосредственно в грРаботающие, а
теперь возникла потребность в том чтобы разбить грРаботающие на подгруппы (отделения) , типа :
Админперсонал;
Отдел Кадров;
...

Но не знаю как ето сделать?
Тоесть заполняю данные в поля документа, и записываю в подгруппу, которую указываю сотруднику в документе..
Понятно?

А написали в ветке зарплата икадры. Относящейся к типой конфе.
Тогда примерно Вот так


Если Отделение.Выбран() = 1 Тогда
Если Отделение.Наименование ="MAGNA" тогда

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

СпрСтр.Родитель = ТекРод;//"MAGNA";


Спасибо сказали: Time dont wait,

Time dont wait Подменю пользователя
сообщение 28.10.09, 10:04
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

Род.НайтиПоНаименованию("MAGNA",0,1)=1

0 - ето группа
1- подгруппа
тоесть в данном случае поиск производится в подгруппах
А если две группы то ищет и в то и в другой?

Time dont wait Подменю пользователя
сообщение 28.10.09, 10:10
Сообщение #13

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

И если не тяжело, напишите код для докУвольнение.
чтобы с грРаботающие и например подгрMAGNA кидало в грУволенные в ту же подгруппу

MATEVI Подменю пользователя
сообщение 28.10.09, 10:42
Сообщение #14

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2203
Из: Одесса
Спасибо сказали: 968 раз
Рейтинг: 796.3

Цитата(Time dont wait @ 28.10.09, 11:04) *
Род.НайтиПоНаименованию("MAGNA",0,1)=1

0 - ето группа
1- подгруппа
тоесть в данном случае поиск производится в подгруппах
А если две группы то ищет и в то и в другой?

нет =1 возвращет если найдено искомое наименование. А ...,0,1) 0 - искать внутри установленого подчинения

НайтиПоНаименованию(<?>,,);
Синтаксис:
НайтиПоНаименованию(<Наименование>,<Режим>,<ФлагПоиска>)
Назначение:
Найти элемент справочника по наименованию.
Возвращает: 1 - если действие выполнено;
0 - если действие не выполнено (элемент не найден).
Параметры:
<Наименование> - строка с наименованием искомого элемента справочника,
<Режим> - необязательный параметр. Число: 1 - поиск внутри установленного подчинения (родителя); 0 - поиск во всем справочнике вне зависимости от родителя. Значение по умолчанию - 1.
<ФлагПоиска> - необязательный параметр. Число: 1 - найти точное соответствие наименования; 0 - найти наименование по первым символам. Значение по умолчанию - 0.
Замечание:
Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.



//Если Отделение.Наименование ="MAGNA" тогда

// для любых отделений
НаименованиеОтделения = СокрЛП(Отделение.Наименование);

СпрСтр = СоздатьОбъект("Справочник.Сотрудники");
Род = СоздатьОбъект("Справочник.Сотрудники");
Если Род.НайтиПоНаименованию(НаименованиеОтделения,0,1)=1 Тогда
ТекРод = Род.ТекущийЭлемент();
Иначе
ТекРод = "";
Сообщить("Не найден родитель!");
КонецЕсли;


Спасибо сказали: Time dont wait,

Time dont wait Подменю пользователя
сообщение 28.10.09, 11:08
Сообщение #15

Общительный
**
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0

А если брать к примеру документ Увольнение, тогда етот циклможно заключить сюда:
Процедура ОбработкаПроведения()

СпрСпв = СоздатьОбъект("Справочник.Співробітники");
СпрСпв.ИспользоватьДату(ДатаЗвільнення);
СпрСпв.НайтиЭлемент(Співробітник);
СпрСпв.ДатаЗвільнення = ДатаЗвільнення;
// Цикл
СпрСпв.Родитель = Звільнені;
СпрСпв.Записать();


КонецПроцедуры

//------------------------------------------------------------------------
Процедура ОбработкаУдаленияПроведения()

СпрСпв = СоздатьОбъект("Справочник.Співробітники");
СпрСпв.НайтиЭлемент(Співробітник);
СпрСпв.Родитель = Працюючі;
СпрСпв.ДатаЗвільнення = 0;
СпрСпв.Записать();
КонецПроцедуры

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 3:44
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!