Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 01:22

Соответствия регистров

Автор 19yellow92, 18 апр 2016, 21:24

0 Пользователей и 1 гость просматривают эту тему.

19yellow92

Всем снова здравствуйте. За ранее прошу не нервничать по поводу недопонимания. Опыта мало.
Есть 2 базы УПП. В источнике заполняется Р.С. Работники организаций, данные этого регистра необходимо выгрузить, и создать движения по уже существующим документам в базе приемнике, но только с Р..С. Работники. В документах прием, увольнение, кадровое перемещение организаций добавлена возможность проведения по Р.С. Работники
Обработка с ком соединением есть, ее необходимо доработать. В первой процедуре (ЗагрузитьВсеНажатие) создаю набор записей со всеми регистраторами из Р.С. Работники организаций. Во вторую процедуру (СравнитьИсточникПриемникТЗ) Необходимо прописать соответсвие некоторых реквизитов, которые отличаются в этих двух регистрах. Это Подразделения и Должности (в Работниках организаций используются справочники с окончанием "Организаций", а в Р.С. Работники, соответственно без данных окончаний). Данные в этих справочниках одинаковы по коду и наименованию. ВОПРОС: Как можно задать соответствия для этих двух реквизитов? И добавить в базу уже в другой регистр движения. (Вопрос объемный, за любую помощь заранее спасибо ))))


Процедура  ЗагрузитьВсеНажатие(Элемент)
   
    Сообщить("Обработка запущена: "+ТекущаяДата()+", пожалуйста, дождитесь окончания. " );
               
   
    ТаблицаРегистраторовКОМ.Очистить();
    ИндексТаблицаРегистраторовКОМ = 0;
   
    База = Неопределено;
    Соединение = Неопределено;
   
    Если Не ПроверкаПодключения(База, Соединение) Тогда
        Возврат;
    КонецЕсли;
   
    Попытка
        ЗапросКОМ = Соединение.NewObject("Запрос");
        ЗапросКОМ.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    РаботникиОрганизаций.Регистратор.Ссылка КАК Регистратор
        |ИЗ
        |    РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
        |ГДЕ
        |    РаботникиОрганизаций.Период МЕЖДУ &нПериода И &кПериода
        |
        |УПОРЯДОЧИТЬ ПО
        |    РаботникиОрганизаций.Регистратор.Дата";
       
        ЗапросКОМ.УстановитьПараметр("нПериода", ДатаНачало);
        ЗапросКОМ.УстановитьПараметр("кПериода",ДатаОкончание);
       
        ВыборкаКОМ = ЗапросКОМ.Выполнить().выбрать();       
           
        Пока ВыборкаКОМ.Следующий() Цикл
            НовыйРегистратор = ТаблицаРегистраторовКОМ.Добавить();
            НовыйРегистратор.Ссылка = ВыборкаКОМ.Регистратор;
        КонецЦикла;
       
    Исключение
        ТекстОшибки = СформироватьТекстСообщения(ОписаниеОшибки());
        Сообщить (ТекстОшибки);
        Предупреждение (ТекстОшибки);
        Отказ = Истина;
        Возврат
    КонецПопытки;   
   
    //если регистраторов больше 0
    Если ТаблицаРегистраторовКОМ.Количество() > 0 Тогда
       
        СравнитьИсточникПриемникТЗ();
    Иначе
        Сообщить("Не обнаружено объектов для записи!");
    КонецЕсли;
    Сообщить("Обработка завершена:  "+ТекущаяДата());   
   
   
КонецПроцедуры

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

    Запрос.УстановитьПараметр("кПериода", ДатаОкончание);
    Запрос.УстановитьПараметр("нПериода", ДатаНачало);
    Запрос.УстановитьПараметр("РегистраторКОМ", ЗначениеИзСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(Регистратор)));
   
    Выборка= Запрос.Выполнить().Выбрать();
   
    Пока Выборка.Следующий() Цикл
        мДокумент=Выборка.Регистратор;
        Набор=Выборка.Регистратор.Получитьобъект().Движения.Налоговый;     
        Набор.Прочитать();
        ТаблицаНаборов=Набор.Выгрузить();
    КонецЦикла;   
   
   
    Если мДокумент = ЗначениеИЗСтрокиВнутр(Соединение.ЗначениеВСтрокуВнутр(ТаблицаРегистраторовКОМ[ИндексТаблицаРегистраторовКОМ].Ссылка)) Тогда
        //проверка на идентичность, записываем наборы различных
        ПолностьюИдентичны = СравнитьТаблицыЗначений(ТаблицаНаборовКОМ,ТаблицаНаборов);
        Если ПолностьюИдентичны <> истина  тогда
            Набор.Отбор.Регистратор.Установить(мДокумент);
            Набор.Загрузить(ТаблицаНаборовКОМ);       
            Набор.Записать();
            Сообщить("Обработан документ:"+""+мДокумент);
        иначе
            ПоместитьСледующийТЗ();
        КонецЕсли;   
    иначе  Сообщить("Документ: "+" "+ мДокумент + " "+" "+" в текущей базе не обнаружен");
        ПоместитьСледующийТЗ() ;
    КонецЕсли;
    ПоместитьСледующийТЗ() ;
   
КонецПроцедуры


vitasw

А покажите-ка структуру этих обоих регистров скринами.

19yellow92

Цитата: vitasw от 18 апр 2016, 22:25
А покажите-ка структуру этих обоих регистров скринами.

Периодичность у обоих в пределах дня, и оба подчинены регистратору.


vitasw

Так я и думал, но на всякий случай все-таки решил уточнить...
А теперь попробуйте еще раз русским языком объяснить что вы хотите, потому что:
1. РС "работники" - это регистр управленческого учета, рс "РаботникиОрганизаций" - это РС бух. учета.
2. Как вы сами видите единственное поле, которое совпадает в этих 2-ух регистрах - это "должность", все остальное отличается как по наименованиям полей, так и по типам.
3. Эти 2 РС в принципе нельзя сравнивать, потому что они живут независимо.

19yellow92

Цитата: vitasw от 19 апр 2016, 10:03
Так я и думал, но на всякий случай все-таки решил уточнить...
А теперь попробуйте еще раз русским языком объяснить что вы хотите, потому что:
1. РС "работники" - это регистр управленческого учета, рс "РаботникиОрганизаций" - это РС бух. учета.
2. Как вы сами видите единственное поле, которое совпадает в этих 2-ух регистрах - это "должность", все остальное отличается как по наименованиям полей, так и по типам.
3. Эти 2 РС в принципе нельзя сравнивать, потому что они живут независимо.
Даже поле Должность нельзя сравнить.  Потому что в одном используется справочник Должности организаций, а в другом просто должности.
Почему нель сравнить? В измерении сотрудник - есть Физлицо, потом занимаемаемых ставок,график работы,удалитьтабельныйномер, причинаизменениясостояния одинаковые реквизиты. Разные подразделения и должности, но я думаю, что их как-то можно соотнести, по коду и наименованию (эти данные одинаковые), только я не знаю как )))
А про то, что эти регистры ведутся в разных учета,  я знаю.

vitasw

Цитата: 19yellow92 от 19 апр 2016, 10:49Почему нель сравнить?
Потому что нельзя сравнивать соленое с мягким.
Цитата: 19yellow92 от 19 апр 2016, 10:49В измерении сотрудник - есть Физлицо
Ииииииииии? по бух. учету может быть много сотрудников на одном физ лице.
Цитата: 19yellow92 от 19 апр 2016, 10:49потом занимаемаемых ставок,график работы,удалитьтабельныйномер, причинаизменениясостояния одинаковые реквизиты. Разные подразделения и должности, но я думаю, что их как-то можно соотнести, по коду и наименованию (эти данные одинаковые), только я не знаю как )))
Еще раз акцентирую внимание: бух учет и упр учет в общем случае - независимы и данные в них могут очень сильно отличаться. Если данные в бух. учете и упр. учете "условно" одинаковы - то это говорит только о том, что пользователь сам целенаправлено ручками формирует такую структуру данных. А полагаться на пользователей в любых вопросах - нельзя.
Идем далее. Насколько я понимаю, речь идет о двух разных базах, соответственно сопоставление может выполняться только по простым типам (строка, дата и т.д.). О том соответствуют ли, например хотя бы коды в разных справочниках(сотрудники - физ. лица) - это вам лучше знать.
В общем случае я бы сказал, что такая работа бесперспективная - очень много траха с сопоставлением данных, а на выходе получите очень маленький результат.

19yellow92

Цитата: vitasw от 19 апр 2016, 11:22
Цитата: 19yellow92 от 19 апр 2016, 10:49Почему нель сравнить?
Потому что нельзя сравнивать соленое с мягким.
Цитата: 19yellow92 от 19 апр 2016, 10:49В измерении сотрудник - есть Физлицо
Ииииииииии? по бух. учету может быть много сотрудников на одном физ лице.
Цитата: 19yellow92 от 19 апр 2016, 10:49потом занимаемаемых ставок,график работы,удалитьтабельныйномер, причинаизменениясостояния одинаковые реквизиты. Разные подразделения и должности, но я думаю, что их как-то можно соотнести, по коду и наименованию (эти данные одинаковые), только я не знаю как )))
Еще раз акцентирую внимание: бух учет и упр учет в общем случае - независимы и данные в них могут очень сильно отличаться. Если данные в бух. учете и упр. учете "условно" одинаковы - то это говорит только о том, что пользователь сам целенаправлено ручками формирует такую структуру данных. А полагаться на пользователей в любых вопросах - нельзя.
Идем далее. Насколько я понимаю, речь идет о двух разных базах, соответственно сопоставление может выполняться только по простым типам (строка, дата и т.д.). О том соответствуют ли, например хотя бы коды в разных справочниках(сотрудники - физ. лица) - это вам лучше знать.
В общем случае я бы сказал, что такая работа бесперспективная - очень много траха с сопоставлением данных, а на выходе получите очень маленький результат.
Коды и наименования одинаковые в справочнике. В справочник Должности данные автоматически добавляются при создании нового элемента в справочнике Должности организации. И подразделения так же.
Задача все-такт стоит именно в этом. Как можно сделать все-таки? Как сопоставить

vitasw

Ок, верю вам на слово.
В чем именно сложность в сопоставлении? Что именно не получается?

19yellow92

Цитата: vitasw от 19 апр 2016, 11:38
Ок, верю вам на слово.
В чем именно сложность в сопоставлении? Что именно не получается?
Сложность в самой данной задаче, я представляю это теоретически. И то, возможно не правильно, а как вывести практически, не знаю.как вообще можно это сделать ) хоть примерно...

vitasw

Оба регистра периодические, вопрос стоит в том чтобы получить аналогичные движения за весь период базы или сопоставить регистры по срезу последних на какую-то дату?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск