выгрузка новых работников с одной базы в другую по сети
04.07.2008
21:49
#1
Задача.
Есть 2 базы Бухгалтерия 7.7.
Поставлен вопрос: а возможно ли автоматически и вручную выгружать с одной базы в другую (базы на разных компах) периодически новых (вновь принятых) сотрудников из одной базы в другую?
Есть 2 базы Бухгалтерия 7.7.
Поставлен вопрос: а возможно ли автоматически и вручную выгружать с одной базы в другую (базы на разных компах) периодически новых (вновь принятых) сотрудников из одной базы в другую?
08.07.2008
06:48
#3
Не подскажете каким образом организовать выгрузку? Имею в виду выгрузку новых работников по определенной дате.. В стандартной обрабоке не нашел этого.
08.07.2008
14:15
#4
Написать программку нужно. Боюсь, что стандартные обработки переноса не сделают выборку нужных сотрудников по какому то алгоритму. Я бы воспользовался конфигурацией Конвертация данных для решения задачи. В ней можно сделать то, что вам хочется. Но придется поразбираться как там все устроено и, прямо скажем, с первого раза быстро это не сделать. Сложная штука. Очень удобна для тех, кто ее освоил и умеет ею пользоваться. Задача у вас простая для решения, но описывать какие кнопки жать нужно, - много писать сюда придется. Если сильно нужно, я напишу. Будет что то вроде урока по использованию механизма для начинающих
09.07.2008
07:15
#5
"Мы сделали на основе OLE. При начале работы системы пользователем имеющим права на обработку происходит обновление справочника из другой конфигурации.
Константа.ДатаПоследнегоОбновленияСпрСотрудники - можно не использовать, тогда при каждой загрузке будет происходить обновление
Если это длительная процедура, то лучше периодически ее где-нибудь на сервера с помощью шедулера запускать 1С с именем пользователя, имеющим право на эту обработку.
Процедура ПриНачалеРаботыСистемы()
Если (Константа.ДатаПоследнегоОбновленияСпрСотрудники < ТекущаяДата()) и (ПравоДоступа("Использование","Обработка.ЗагрузкаСпрСотрудникиИзЗиК")=1) Тогда
ОткрытьФорму("Обработка.ЗагрузкаСпрСотрудникиИзЗиК");
КонецЕсли;
КонецПроцедуры // ПриНачалеРаботыСистемы()
В обработке
Процедура ПриОткрытии()
СтатусВозврата(0); //Форма не открывается
ВыбКонПериода = ТекущаяДата();
Сформировать();
Возврат;
КонецПроцедуры
Процедура Сформировать()
НачатьТранзакцию();
v7 = СоздатьОбъект("v77.Application");
Попытка
Если ПустоеЗначение(Константа.СтрокаАктивацииБазыЗарплатаИКадры) = 1 Тогда
ФС.ВыбратьКаталог(Путь, "Каталог базы данных");
init = v7.Initialize(v7.RMTrade,"/d"+СокрЛП(Путь)+"\ /nИмяПользователя /pПароль","NO_SPLASH_SHOW");
Иначе
init = v7.Initialize(v7.RMTrade,"/d"+СокрЛП(Константа.СтрокаАктивацииБазыЗарплатаИКадры),"NO_SPLASH_SHOW");
КонецЕсли;
Исключение
Предупреждение("Ошибка инициализации базы данных!");
Возврат;
КонецПопытки;
Сотр_ЗИК = v7.EvalExpr("СоздатьОбъект(""""Справочник.Сотрудники"""")");
Сотр_ЗИК.ВыбратьЭлементы();
Пока Сотр_ЗИК.ПолучитьЭлемент() =1 Цикл
Сообщить(Сотр_ЗИК.Наименование);
//Обработка полученных данных
КонецЦикла;
Константа.ДатаПоследнегоОбновленияСпрСотрудники = ТекущаяДата();
ЗафиксироватьТранзакцию();
КонецПроцедуры
"
Константа.ДатаПоследнегоОбновленияСпрСотрудники - можно не использовать, тогда при каждой загрузке будет происходить обновление
Если это длительная процедура, то лучше периодически ее где-нибудь на сервера с помощью шедулера запускать 1С с именем пользователя, имеющим право на эту обработку.
Процедура ПриНачалеРаботыСистемы()
Если (Константа.ДатаПоследнегоОбновленияСпрСотрудники < ТекущаяДата()) и (ПравоДоступа("Использование","Обработка.ЗагрузкаСпрСотрудникиИзЗиК")=1) Тогда
ОткрытьФорму("Обработка.ЗагрузкаСпрСотрудникиИзЗиК");
КонецЕсли;
КонецПроцедуры // ПриНачалеРаботыСистемы()
В обработке
Процедура ПриОткрытии()
СтатусВозврата(0); //Форма не открывается
ВыбКонПериода = ТекущаяДата();
Сформировать();
Возврат;
КонецПроцедуры
Процедура Сформировать()
НачатьТранзакцию();
v7 = СоздатьОбъект("v77.Application");
Попытка
Если ПустоеЗначение(Константа.СтрокаАктивацииБазыЗарплатаИКадры) = 1 Тогда
ФС.ВыбратьКаталог(Путь, "Каталог базы данных");
init = v7.Initialize(v7.RMTrade,"/d"+СокрЛП(Путь)+"\ /nИмяПользователя /pПароль","NO_SPLASH_SHOW");
Иначе
init = v7.Initialize(v7.RMTrade,"/d"+СокрЛП(Константа.СтрокаАктивацииБазыЗарплатаИКадры),"NO_SPLASH_SHOW");
КонецЕсли;
Исключение
Предупреждение("Ошибка инициализации базы данных!");
Возврат;
КонецПопытки;
Сотр_ЗИК = v7.EvalExpr("СоздатьОбъект(""""Справочник.Сотрудники"""")");
Сотр_ЗИК.ВыбратьЭлементы();
Пока Сотр_ЗИК.ПолучитьЭлемент() =1 Цикл
Сообщить(Сотр_ЗИК.Наименование);
//Обработка полученных данных
КонецЦикла;
Константа.ДатаПоследнегоОбновленияСпрСотрудники = ТекущаяДата();
ЗафиксироватьТранзакцию();
КонецПроцедуры
"
17.07.2008
14:44
#7
А вас не смущает в тексте: //Обработка полученных данных ?
Человек вам подсказку выдал, но это не полная реализация вашей задачи. Сделано практически все, что нужно, алгоритм готов процентов на 90%. А вставить его можно, например, в модуль формы справочника сотрудников под какую нибудь кнопку, будете ее нажимать и будет вам результат.
Человек вам подсказку выдал, но это не полная реализация вашей задачи. Сделано практически все, что нужно, алгоритм готов процентов на 90%. А вставить его можно, например, в модуль формы справочника сотрудников под какую нибудь кнопку, будете ее нажимать и будет вам результат.
Читают тему
(гостей: 1)