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

Хранилище

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

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



> Получить значение реквизита ДатаБазыИндекса в спр. Сотрудники 2 страниц V   1 2 >          
ignsv Подменю пользователя
сообщение 03.12.11, 18:07
Сообщение #1

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

Делаю перенос с 7.7 в 8.2. с БУХ в БУХ (знаю, надо пользоваться типовой обработкой. Но тут много индивидуального)
При формировании документа "Прием на работу в организацию" в 8.2. мне надо получать с спр.Сотрудники (7.7.) значение "Дата увеличения з/п" - ДатаБазыИндекса;

Тест такой:
спр - тут мы уже получили с 7.7 записи справочника и обрабатываем их...

        спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент() = 1 Цикл       
        
        СпрИ = Спр.ТекущийЭлемент();  
        Если СпрИ.ЭтоГруппа() = 1  Тогда    
        Продолжить;
        Иначе
                 сотр = Справочники.СотрудникиОрганизаций.НайтиПоНаименованию(СпрИ.Наименование).Ссылка;
                
        НовСтр     = Док.РаботникиОрганизации.Добавить();     
        НовСтр.ДатаПриема     = СпрИ.ДатаПриема;
        НовСтр.Сотрудник     = Сотр;
                                        .....


Проблема в чем : ДатаБазыИндекса - его и нету в списке реквизитов и получить его я не могу.
ни так : СпрИ.ДатаБазыИндекса
ни так:СпрИ.ДатаБазыИндекса .Получить(ДатаОстатков)

mister-x Подменю пользователя
сообщение 03.12.11, 18:10
Сообщение #2

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата
Проблема в чем : ДатаБазыИндекса - его и нету в списке реквизитов и получить его я не могу.
тобто це реквізит форми? якщо - так, тоді потрібно подивитись логіку його заповнення

ignsv Подменю пользователя
сообщение 03.12.11, 18:12
Сообщение #3

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

Вобщем подскажите как мне получить нужные значения . Заранее спасибо

ні.

стоп я вже запутався . я в 7.7 взагалі не працював . тобто так виходить що він реквізит форми

mister-x Подменю пользователя
сообщение 03.12.11, 18:23
Сообщение #4

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

а що у 8.2 немає реквізитів форми - є

Цитата
тоді потрібно подивитись логіку його заповнення
скористайтесь в модулі форми довідника у 7.7 контекстним пошуком ДатаБазыИндекса

ignsv Подменю пользователя
сообщение 03.12.11, 18:24
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

з коду довідника "Сотрудники" в 7.7:

1. спочатку ДатаБазыИндекса прив`язуються до ДатыПриема
Процедура ИзмДатаПриема()
    Если Выбран() = 0 Тогда
        ДатаБазыИндекса = ДатаПриема;
    КонецЕсли;
КонецПроцедуры


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


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

    Если ПустоеЗначение(ТекущийЭлемент()) = 1 Тогда
        ДатаБазыИндекса = глДатаНачалаРасчетаИндексации;
    Иначе
        ДатаБазыИндекса = глПрочитатьДатуИзмененияДоходаДляИндексации(ТекущаяДата(),"ПризнакИзмененияДоходаДляИндексации",ТекущийЭлемент());
        ДатаБазыИндекса = Макс(ДобавитьМесяц(ДатаБазыИндекса, -1), глДатаНачалаРасчетаИндексации)
    КонецЕсли;
    дСтараяДатаНачаларасчетаИндексации = ДатаБазыИндекса;

    УстДоступность();
КонецПроцедуры


Сообщение отредактировал mister-x - 03.12.11, 19:31
Причина редактирования: поправив границі коду

mister-x Подменю пользователя
сообщение 03.12.11, 19:32
Сообщение #6

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

ось ключові стрічки
ДатаБазыИндекса = глПрочитатьДатуИзмененияДоходаДляИндексации(ТекущаяДата(),"ПризнакИзмененияДоходаДляИндексации",ТекущийЭлемент());
ДатаБазыИндекса = Макс(ДобавитьМесяц(ДатаБазыИндекса, -1), глДатаНачалаРасчетаИндексации)

потрібно ще проаналізувати процедуру глПрочитатьДатуИзмененияДоходаДляИндексации і змінну глДатаНачалаРасчетаИндексации

Спасибо сказали: Домовик,

Pepe Подменю пользователя
сообщение 03.12.11, 20:18
Сообщение #7

Почти крутой
Иконка группы
Группа: Местный
Сообщений: 1434
Из: Ужгород
Спасибо сказали: 761 раз
Рейтинг: 230

Я так зрозумів, що це все потрібно для розрахунку індексації. Вона нараховується через два місяці після прийому співробітника:
...ДатаБазыИндекса = ДатаПриема
дСтараяДатаНачаларасчетаИндексации = ДатаБазыИндекса....,

або через два місяці після зміни ставки заробітної плати.

Сообщение отредактировал mister-x - 03.12.11, 21:27
Причина редактирования: код

Спасибо сказали: Домовик,

mister-x Подменю пользователя
сообщение 03.12.11, 21:26
Сообщение #8

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата
...ДатаБазыИндекса = ДатаПриема
перекидаються вже записані елементи довідника - тому процедура ИзмДатаПриема() не використовується

igmig65 Подменю пользователя
сообщение 03.12.11, 23:57
Сообщение #9

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 613
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

Цитата
Проблема в чем : ДатаБазыИндекса - его и нету в списке реквизитов и получить его я не могу.
ни так : СпрИ.ДатаБазыИндекса
ни так:СпрИ.ДатаБазыИндекса .Получить(ДатаОстатков)

В бух 77, этот реквизит заполняется функцией, при открытии элемента Вашего СпрИ. Чтоб получить актуальное значение(на вашу ДатуОстатков??или ДатуЗагрузки/выгрузки?), нужно найти значение (1) периодического реквизита ПризнакИзмененияДоходаДляИндексации текущего СпрИ на эту дату . тоестьэто целая функция (глобальная), которая возвращает дату: Функция глПрочитатьДатуИзмененияДоходаДляИндексации(НП, ИмяРеквизита, Объект = "") Экспорт

alex1c Подменю пользователя
сообщение 04.12.11, 13:16
Сообщение #10

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 235
Спасибо сказали: 45 раз
Рейтинг: 40

Цитата(igmig65 @ 03.12.11, 23:57) *
В бух 77, этот реквизит заполняется функцией, при открытии элемента Вашего СпрИ. Чтоб получить актуальное значение(на вашу ДатуОстатков??или ДатуЗагрузки/выгрузки?), нужно найти значение (1) периодического реквизита ПризнакИзмененияДоходаДляИндексации текущего СпрИ на эту дату . тоестьэто целая функция (глобальная), которая возвращает дату: Функция глПрочитатьДатуИзмененияДоходаДляИндексации(НП, ИмяРеквизита, Объект = "") Экспорт

а реквизит в справочнике называется "ПризнакИзмененияДоходаДляИндексации", но пользоваться надо функцией глПрочитатьДатуИзмененияДоходаДляИндексации

ignsv Подменю пользователя
сообщение 04.12.11, 15:14
Сообщение #11

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

если нужно запускать функцию для выдачи Искомой даты. Нужные параметры : 1.ПризнакИзмененияДоходаДляИндексации - 0/1 получаем. 2. дата тоже есть. 2.текущий элемент(спрИ) тоже есть.
Подскажите как мне заставить выполнять нужную функцию .. ( к справочнику в 7.7 я попадаю так:

ТекСправочникИ = "Сотрудники";
спр = БазаИ.CreateObject("Справочник."+ТекСправочникИ);

sava1 Подменю пользователя
сообщение 04.12.11, 16:37
Сообщение #12

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Варианта2
1.Выгружаем справочник из 7 а в 8 загружаем
2.По ОЛЕ - пишем 7-й запрос с получением даты изменения
2,5. Можно поиграться с EvalExpr() (в 7 написать функцию с Экспорт)

sava1 Подменю пользователя
сообщение 04.12.11, 19:05
Сообщение #13

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

вдогонку
V7 = Новый COMобъект("V77.Application");
СпрНом = V7.CreateObject("Справочник.Номенклатура");
СпрЦены = V7.CreateObject("Справочник.Цены");
Периодический = V7.CreateObject("Периодический");
....
....
Периодический.ИспользоватьОбъект("Цена",СпрЦены);
Периодический.ВыбратьЗначения();
Пока Периодический.ПолучитьЗначение() > 0 Цикл
   //В цикл не входит хотя в 1с7  4 раза изменялась цена

        Строка = СписокНовыхЦен.Добавить();
    Строка.Дата = Периодический.ДатаЗнач;
    Строка.Цена = Периодический.Значение;
КонецЦикла;
Причина редактирования: Выделяем код. Вофка.

Спасибо сказали: ignsv,

Домовик Подменю пользователя
сообщение 04.12.11, 23:53
Сообщение #14

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

зразу вибачаюсь, якщо нісенітниця, бо розумію проблему лише дуже абстрактно :
може тимчасово створити для об'єкту реквізит, промоделювати ситуацію розрахунку з присвоєнням значення реквізиту (тобто фізичному полю). а вісімки уже просто забрати готовеньке....

sava1 Подменю пользователя
сообщение 05.12.11, 8:08
Сообщение #15

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

в 8 нужно заполнить регистр сведений ПараметрыРасчетаИндексации

Спасибо сказали: Домовик,

ignsv Подменю пользователя
сообщение 06.12.11, 16:04
Сообщение #16

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

to sava1
регистр сведений ПараметрыРасчетаИндексации заполнен уже только не тем чем надо. Там стоят даты приема. а у нас есть более поздние даты Индексации ЗП


вот еще мучаюсь так:
Подключить(); 
    //    
    //
    //ТекСправочникИ = "Сотрудники";
    
    Сообщить("______________________________");
    Сообщить("Приказ о приёме");
    
    ТовОле = БазаИ.CreateObject("Справочник.Сотрудники");
    ТовОле.ВыбратьЭлементы();
    
    Пока ТовОле.ПолучитьЭлемент()=1 Цикл
        СпрИ = ТовОле.ТекущийЭлемент();
         Если СпрИ.ЭтоГруппа()= 1 ИЛИ СпрИ.ПометкаУдаления() = 1 Тогда
          Продолжить;
          КонецЕсли;
             // Пометка = Спри.ПризнакИзмененияДоходаДляИндексации.Получить(ДатаОстатков);
         //Если Пометка = 0 Тогда
         //Пометка = "0";
         //Иначе  Пометка = "1";
         //КонецЕсли;
        ДатаЗП = БазаИ.EvalExpr("глПрочитатьДатуИзмененияДоходаДляИндексации("+ "20110102,ПризнакИзмененияДоходаДляИндексации"+","+Спри.Наименование+")");// тут точно ошибка бо СПРИ.Наименование идет как Иванов В.В.
                                                                                                                          // и 1с не понимает  что такое "В."  
                                                                                                                          //как вариант: я окончательно запутался ))


можете подсказать как корректно передать параметры в функцию
знаю что надо передавать Строкой с 8-ки.
1й. параметр - дата на которую смотреть.
2й. Это признак (0,1) - реквизит
3й. текущий элемент

так передаеться с модуля справочника Сотрудники:
 ДатаБазыИндекса = глПрочитатьДатуИзмененияДоходаДляИндексации(ТекущаяДата(),"ПризнакИзмененияДоходаДляИндексации",ТекущийЭлемент());


так в общем модуле:
 Функция глПрочитатьДатуИзмененияДоходаДляИндексации(НП, ИмяРеквизита, Объект = "")  Экспорт

sava1 Подменю пользователя
сообщение 06.12.11, 16:09
Сообщение #17

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Что общего в 7 и 8 у Сотрудников (Код,Наименование,ИНН) - ?

ignsv Подменю пользователя
сообщение 06.12.11, 17:05
Сообщение #18

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 193
Спасибо сказали: 60 раз
Рейтинг: 0

Цитата(sava1 @ 06.12.11, 16:09) *
Что общего в 7 и 8 у Сотрудников (Код,Наименование,ИНН) - ?


Все, кроме Код.

Домовик Подменю пользователя
сообщение 06.12.11, 19:35
Сообщение #19

Ветеран
Иконка группы
Группа: Местный
Сообщений: 975
Из: Киев
Спасибо сказали: 168 раз
Рейтинг: 0

ДатаБазыИндекса = глПрочитатьДатуИзмененияДоходаДляИндексации(ТекущаяДата(),"ПризнакИзмененияДоходаДляИндексации",ТекущийЭлемент());

......это из модуля спр фирмы. датабазыиндекса -реквизит формы, но не реквизит объекта справочник. сделайте его реквизитом объекта, поставьте нужную рубочую дату и откройте справочник фирмы.

mister-x Подменю пользователя
сообщение 06.12.11, 19:42
Сообщение #20

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата
......это из модуля спр фирмы. датабазыиндекса -реквизит формы, но не реквизит объекта справочник. сделайте его реквизитом объекта, поставьте нужную рубочую дату и откройте справочник фирмы.
він сам по собі не заповниться, потрібна ще обробка для його заповнення

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


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

 

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