Версия для печати темы (https://pro1c.org.ua/index.php?s=e5200aab5556141569a105a20bacbb43&showtopic=5778)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Перенос данных с 1с Бухгалтерия 7.7 в Комплексный учет 8.2
Автор: meverikxp 26.12.11, 12:36
Здравствуйте, есть задание: перенести базу с 1С бухгалтерия для Украины 7.7 реализ (7.7.016) в Комплексный учет для бюджетных организаций Украины (1.0.15). Нужно перетянуть не только справочники, но и документы. В папке с реализом для 8.2 есть обработка для переносу данных но она для версии 2.0.
Подскажите как лучше реализовать обмен?. Спасибо!!!
Автор: Ardi 26.12.11, 13:03
Руками.
Автор: meverikxp 26.12.11, 14:08
Цитата(Ardi @ 26.12.11, 13:03)
Руками.
А более развернутой форме можно??? Где найти пример обработки с описанием для связи с базой 7.7 как это делается и т.д. Спасибо!!!
Автор: Batchir 26.12.11, 14:51
Мама моя дорогая, это ж что за бухгалтерия то такая ???
Тут руками конвертацию данных нужно использовать
Автор: meverikxp 26.12.11, 14:59
Цитата(Batchir @ 26.12.11, 14:51)
Мама моя дорогая, это ж что за бухгалтерия то такая ???
Тут руками конвертацию данных нужно использовать
Да я понимаю что это древняя бухгалтерия, но надо сделать. Просто направьте куда копать и что и где прочитать. Если можно дайте ссылки. Заранее ОГРОМНОЕ СПАСИБО!!!
Автор: Batchir 26.12.11, 16:07
Копайте в сторону конфигурации "Конвертация данных"
Ссылка на литературу: http://pro1c.org.ua/redirect.php?http://ifolder.ru/27615105
Автор: meverikxp 26.12.11, 16:11
Цитата(Batchir @ 26.12.11, 16:07) http://pro1c.org.ua/index.php?act=findpost&pid=39663
Спасибо, посмотрю.
Автор: MATEVI 27.12.11, 0:13
http://pro1c.org.ua/index.php?s=&showtopic=2251&view=findpost&p=14225
Автор: meverikxp 27.12.11, 14:15
Цитата(MATEVI @ 27.12.11, 0:13) http://pro1c.org.ua/index.php?act=findpost&pid=39700
Спс. буду пробовать. Потом отпишусь что получилось
Автор: WKBAPKA 27.12.11, 18:58
Цитата(meverikxp @ 27.12.11, 14:15)
Спс. буду пробовать. Потом отпишусь что получилось
дауж опишитесь!
Автор: alex040269 27.12.11, 19:45
КД 2.0 доступна для всех зарегистрированных на users.v8.1c.ru
Автор: meverikxp 28.12.11, 12:34
Список сотрудников перенесся без проблем, но должность, прием на работу и т.д нет это возможно перенести или нет?
Автор: Ardi 28.12.11, 12:38
Цитата(meverikxp @ 28.12.11, 13:34)
Список сотрудников перенесся без проблем, но должность, прием на работу и т.д нет это возможно перенести или нет?
К конвертации данных идут ряд брошурок. От 20 до 700 страниц.
Автор: mister-x 28.12.11, 13:27
Мeverikxp і в нас на форумі є книга до цієї конфіги, шукайте через http://pro1c.org.ua/index.php?s=&act=Search&mode=adv&f=256 Бояркин В.Э., Филатов А.И.
Автор: meverikxp 04.01.12, 10:38
Цитата(mister-x @ 28.12.11, 13:27) http://pro1c.org.ua/index.php?act=findpost&pid=39842 Бояркин В.Э., Филатов А.И.
Долблюсь уже с этой переноской несколько дней, список справочников перенес без проблем, но возникают сложности при переносе тех реквизитов которых нет в 7-ке, но обязательны в 8-ке, может подскажете как реализовать заполнение реквизитов, отсутствующих в 7-ке, при загрузке данных в 8-ку?
ЗЫ: Просматривал книги который вы порекомендовали, но там нет четкого описания решения проблемы.
Автор: Ardi 04.01.12, 10:54
Неправильный, но простой способ - это написать отдельную обработку которая потом дозаполнит эти реквизиты.
А правильный - это генерировать значения реквизитов при выгрузке из 7.7.
Автор: meverikxp 04.01.12, 11:02
Цитата(Ardi @ 04.01.12, 10:54)
Неправильный, но простой способ - это написать отдельную обработку которая потом дозаполнит эти реквизиты.
А правильный - это генерировать значения реквизитов при выгрузке из 7.7.
Ну в принципе я знаю что нужно генерировать, но какие правили создания реквизитов при выгрузке?
Автор: pablo 04.01.12, 11:17
Посмотрите демо-версию своей 8 конфигурации и определитесь, какие значения будут в тех или иных случаях. Ваш вопрос сильно контекстно-зависим.
Автор: meverikxp 04.01.12, 11:34
Цитата
Цитата(pablo @ 04.01.12, 11:17)
Посмотрите демо-версию своей 8 конфигурации и определитесь, какие значения будут в тех или иных случаях. Ваш вопрос сильно контекстно-зависим.
В принципе с значениями я определился. Ну например в справочнике сотрудники 8.2 есть реквизит Организация, но в 7-ке его нету, Как сделать так что бы при загрузке заполнять значение из справочника Организации
НайтиПоНаименованию("Наша Организация")
, как это реализовать?
Автор: 5_kopeek 04.01.12, 13:21
Цитата(meverikxp @ 04.01.12, 11:34)
Ну например в справочнике сотрудники 8.2 есть реквизит Организация, но в 7-ке его нету, Как сделать так что бы при загрузке заполнять значение из справочника Организации
НайтиПоНаименованию("Наша Организация")
, как это реализовать?
Создать при загрузке новый элемент справочника Организации по данным из аналогичного элемента справочника Фирмы выгружаемой базы.
Автор: meverikxp 04.01.12, 13:39
Цитата(5_kopeek @ 04.01.12, 13:21)
Создать при загрузке новый элемент справочника Организации по данным из аналогичного элемента справочника Фирмы выгружаемой базы.
Зачем? Он и так создан. Просто нужно присвоить ему значение, Но как это сделать в конвертации данных?
Автор: MATEVI 04.01.12, 14:15
Цитата(meverikxp @ 04.01.12, 13:39)
Зачем? Он и так создан. Просто нужно присвоить ему значение, Но как это сделать в конвертации данных?
Перед выгрузкой - Значение = Параметры.Организация;
Автор: meverikxp 04.01.12, 14:35
Цитата(MATEVI @ 04.01.12, 14:15)
Перед выгрузкой - Значение = Параметры.Организация;
Сделал так, но 7-ка при выгрузке пишет:
Цитата
Ошибка получения значения свойств объекта.
Объект."Сотрудник", свойство: Организация
И что с этим делать
Автор: MATEVI 04.01.12, 15:24
Цитата(meverikxp @ 04.01.12, 14:35)
Сделал так, но 7-ка при выгрузке пишет:
И что с этим делать
Добавить параметр Организация. Взять типовые правила посмотреть что у чему.
Автор: meverikxp 04.01.12, 15:40
Цитата(MATEVI @ 04.01.12, 15:24)
Добавить параметр Организация. Взять типовые правила посмотреть что у чему.
При выгрузке список параметров пуст и нет возможности добавить
Автор: meverikxp 04.01.12, 17:33
Пробую сделать обработку сам. создал соединение с базой 7.7 следующим кодом
Перем База,ЕстьПодключение;
Процедура КнопкаВыполнитьНажатие(Кнопка)
База="";
База=Новый COMОбъект("V77.Application");
Попытка
СтрокаПодключения = "/D"""+СокрЛП(ПутьКБазе)+""" /N"""+СокрЛП(Пользователь)+""" /P"""+СокрЛП(Пароль)+"""";
Открыта=База.Initialize(База.RMTrade,СтрокаПодключения,"NO_SPLASH_SHOW");
Если Открыта Тогда
ЕстьПодключение = Истина;
Иначе
Предупреждение("Ошибка при подключении!");
ЕстьПодключение = Ложь;
КонецЕсли;
Исключение
Предупреждение("Ошибка при подключении!");
ЕстьПодключение = Ложь;
КонецПопытки;
УправлениеДоступностью();
КонецПроцедуры
Процедура ПутьКБазеНачалоВыбора(Элемент, СтандартнаяОбработка)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
Диалог.Заголовок = "Укажите путь к базе ...";
Если Не Диалог.Выбрать() Тогда
Возврат;
КонецЕсли;
ПутьКБазе = Диалог.Каталог;
КонецПроцедуры
Процедура УправлениеДоступностью()
Если ЕстьПодключение Тогда
ЭлементыФормы.НадписьПодключения.Заголовок = "База успешно подключена";
ЭлементыФормы.НадписьПодключения.ЦветТекста = WebЦвета.Зеленый;
Иначе
ЭлементыФормы.НадписьПодключения.Заголовок = "База не подключена";
ЭлементыФормы.НадписьПодключения.ЦветТекста = WebЦвета.Красный;
КонецЕсли;
КонецПроцедуры;
Но теперь возник следующий вопрос: как из этого соединения взять данные, как к ним обращаться?
Автор: Ardi 05.01.12, 1:38
Функция ОткрытьФирму(Путь,Пользователь,Пароль="")
Бух=0;
Бух = новый COMОбъект("v77.application"); //СоздатьОбъект("V77.Application");
Открыта = Бух.Initialize(Бух.RMTrade, "/d"+Путь+" /N"+Пользователь+?(Пароль="",""," /P"+Пароль),"NO_SPLASH_SHOW");
//Открыта = Бух.Initialize(Бух.RMTrade, "","NO_SPLASH_SHOW");
Если Открыта = 0 Тогда
Предупреждение("Ошибка открытия информационной базы "+Путь);
Возврат 0;
КонецЕсли;
Возврат 1;
КонецФункции
Процедура КнопкаВыполнитьНажатие(Кнопка)
ВидНоменклатурыТовар=Справочники.ВидыНоменклатуры.НайтиПоКоду("000000001");
едИзмеренияШтука=Справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду("796");
Если ОткрытьФирму(ПутьКБазе,"Админов","")=0 Тогда
Возврат;
КонецЕсли;
спр=Бух.CreateObject("Справочник.Номенклатура");
спр.ВыбратьЭлементы();
Пока спр.ПолучитьЭлемент()=1 цикл
НайденнаяСсылка=Справочники.Номенклатура.НайтиПоКоду(спр.код);
если НайденнаяСсылка = Справочники.Номенклатура.ПустаяСсылка() Тогда
Если спр.ЭтоГруппа()=1 Тогда
нов= Справочники.Номенклатура.СоздатьГруппу();
Иначе
нов= Справочники.Номенклатура.СоздатьЭлемент();
КонецЕсли;
иначе
нов=НайденнаяСсылка.ПолучитьОбъект();
КонецЕсли;
Если спр.ЭтоГруппа()=1 Тогда
нов.Код=спр.код;
нов.Наименование=спр.Наименование;
нов.ВидНоменклатуры = ВидНоменклатурыТовар;
Иначе
нов.Код=спр.код;
нов.Наименование=спр.Наименование;
нов.НаименованиеПолное=спр.Наименование;
нов.ВидНоменклатуры = ВидНоменклатурыТовар;
нов.БазоваяЕдиницаИзмерения =едИзмеренияШтука;
нов.СтавкаНДС=СтавкаНДС(спр);
КонецЕсли;
нов.Родитель=Родитель(спр.Родитель.Код);
нов.записать();
если спр.пометкаУдаления()=1 Тогда
нов.УстановитьПометкуУдаления();
КонецЕсли;
тп=ТабличноеПоле1.Добавить();
тп.ссылка=нов.Ссылка;
сообщить(спр.ЭтоГруппа());
Если спр.ЭтоГруппа()=0 Тогда
нов.ЕдиницаХраненияОстатков=ДопЕдИзм(нов.Ссылка);
нов.ЕдиницаДляОтчетов=нов.ЕдиницаХраненияОстатков;
нов.Записать();
КонецЕсли;
//сообщить(спр.Наименование);
//сообщить(спр.Код);
//сообщить(спр.БазоваяЕдиница.наименование);
Конеццикла;
//Док=СоздатьОбъект("Документ.БанковскаяВыписка");
//Док.ВыбратьДокументы(НачДата,КонДата);
//Пока Док.ПолучитьДокумент()=1 Цикл
// Состояние(""+Док.ТекущийДокумент());
// Если Док.ТекущийДокумент().КоличествоСтрок()=0 Тогда
// Продолжить;
// КонецЕсли;
// ОбработатьБВ(Док);
// //Возврат;
//КонецЦикла;
Бух=0;
//Предупреждение("Обработка завершена!");
КонецПроцедуры
Автор: meverikxp 10.01.12, 11:04
Цитата(Ardi @ 05.01.12, 1:38)
Функция ОткрытьФирму(Путь,Пользователь,Пароль="")
....
КонецПроцедуры
Сделал так вроде получилось, но есть проблема с перенесением оклада, в базе 7.7 он есть, а на 8.2 значение "COMОбъект. Почему???
Автор: Ardi 10.01.12, 11:36
В отладчике писать склад.Код, склад.наименование а не склад
Тогда отладчик отобразит.
Автор: shurik_shurik 10.01.12, 12:01
Цитата(meverikxp @ 10.01.12, 12:04)
Сделал так вроде получилось, но есть проблема с перенесением оклада, в базе 7.7 он есть, а на 8.2 значение "COMОбъект. Почему???
Потому, что в базе 7.7 это периодический реквизит.
Автор: meverikxp 10.01.12, 12:10
Цитата(shurik_shurik @ 10.01.12, 12:01)
Потому, что в базе 7.7 это периодический реквизит.
Это ссылочный реквизит который ссылается на справочник Должности.Оклад, подскажите как его оттуда достать, пробовал Должности.Оклад не получается?
Автор: shurik_shurik 10.01.12, 12:31
Цитата(meverikxp @ 10.01.12, 13:10)
Это ссылочный реквизит который ссылается на справочник Должности.Оклад, подскажите как его оттуда достать, пробовал Должности.Оклад не получается?
нужно создать новый COM объект для справочника Должности, и использовать НайтиЭлемент по значению реквизита первого справочника
Автор: meverikxp 10.01.12, 12:41
Цитата(shurik_shurik @ 10.01.12, 12:31)
нужно создать новый COM объект для справочника Должности, и использовать НайтиЭлемент по значению реквизита первого справочника
Делаю так:
Спр77=База.CreateObject("Справочник.Сотрудники");
Спр77.ВыбратьЭлементы();
Пока спр77.ПолучитьЭлемент()=1 Цикл
...
Оклад77= База.CreateObject("Справочник.Должности");
Должность = Оклад77.НайтиЭлемент(Спр77.Должность);
Оклад = Должность.Оклад;
...
КонецЦикла
Пишет: Значение не является значением объектного типа (Оклад)
?????
Автор: shurik_shurik 10.01.12, 13:08
Цитата(meverikxp @ 10.01.12, 13:41)
Пишет: Значение не является значением объектного типа (Оклад)
В этом случае, оклад уже явно периодический реквизит. Можно попробовать дописать метод Получить(Дата).
Или лучше добавить строку Оклад77.ИспользоватьДату(<дата>).
И вынесете создание комобъекта на уровень выше относительно цикла обхода справочника сотрудники.
Кстати, строку тоже можно вписать до цикла.
Автор: meverikxp 10.01.12, 13:34
Цитата(shurik_shurik @ 10.01.12, 13:08)
В этом случае, оклад уже явно периодический реквизит. Можно попробовать дописать метод Получить(Дата).
Или лучше добавить строку Оклад77.ИспользоватьДату(<дата>).
И вынесете создание комобъекта на уровень выше относительно цикла обхода справочника сотрудники.
Кстати, строку тоже можно вписать до цикла.
Сделал так:
Спр77=База.CreateObject("Справочник.Сотрудники");
Спр77.ВыбратьЭлементы();
Оклад77= База.CreateObject("Справочник.Должности");
Оклад77.ИспользоватьДату('20111231');
Пока спр77.ПолучитьЭлемент()=1 Цикл
Если Спр77.ЭтоГруппа()=0 Тогда
Наименование = Спр77.Наименование;
Должность = Спр77.Должность;
Должность = Оклад77.НайтиЭлемент(Спр77.Должность);
Оклад = Должность.Оклад;
КонецЕсли;
КонецЦикла;
Но ошибка та же
Автор: shurik_shurik 10.01.12, 13:45
Цитата(meverikxp @ 10.01.12, 14:34)
Но ошибка та же
Если Вас не затруднит, полный текст ошибки, предварительно переименовав переменную Оклад на Оклад8, например.
Кстати, в методе ИспользоватьДату(), дату лучше указать в виде '31.12.11'
Автор: mister-x 10.01.12, 13:47
попробуйте всі методи і системні властивості бази до якої звертаєтесь (7.7) замінити на англ. відповідники - можливо, тут собака зарита
ЗІ. мені помогло коли я із бази 7.7 підключався до іншої бази 7.7 для переносу даних по OLE
Автор: meverikxp 10.01.12, 13:56
Цитата(mister-x @ 10.01.12, 13:47) http://pro1c.org.ua/index.php?act=findpost&pid=40817
Если Вас не затруднит, полный текст ошибки, предварительно переименовав переменную Оклад на Оклад8, например.
Кстати, в методе ИспользоватьДату(), дату лучше указать в виде '31.12.11'
Теперь ошибка выглядит так:
Значение не является значением объектного типа (Оклад)
Оклад8 = Должность.Оклад;
И как по другому написать дату формат в виде '31.12.11' - не определяет пишет " Неправильная константа типа Дата"
Автор: mister-x 10.01.12, 14:19
Цитата
Я точно не знаю как они будут по англ.
тут http://pro1c.org.ua/index.php?showtopic=5893 все є
Автор: meverikxp 10.01.12, 14:21
Цитата(mister-x @ 10.01.12, 14:19) http://pro1c.org.ua/index.php?act=findpost&pid=40823 все є
А пароль к архиву какой?
Автор: mister-x 10.01.12, 14:22
в правилах http://pro1c.org.ua/index.php?act=announce&f=265&id=6 вказано
Автор: Vofka 10.01.12, 14:24
Цитата
А пароль к архиву какой?
А правила читать дядя Петя будет?
mister-x, ну и зачем вы пароль указываете здесь? Пусть правила читает!
Автор: mister-x 10.01.12, 14:25
Цитата
mister-x, ну и зачем вы пароль указываете здесь? Пусть правила читает!
ок
Автор: meverikxp 10.01.12, 14:48
Цитата(Vofka @ 10.01.12, 14:24) http://pro1c.org.ua/index.php?act=findpost&pid=40827
попробуйте всі методи і системні властивості бази до якої звертаєтесь (7.7) замінити на англ. відповідники - можливо, тут собака зарита
ЗІ. мені помогло коли я із бази 7.7 підключався до іншої бази 7.7 для переносу даних по OLE
Сделал так:
Спр77=База.CreateObject("Справочник.Сотрудники");
Спр77.SelectItems();
Оклад77= База.CreateObject("Справочник.ШтатнийРозклад");
Оклад77.UseDate('20111231');
Пока спр77.GetItem()=1 Цикл
Если Спр77.ЭтоГруппа()=0 Тогда
Наименование = Спр77.Наименование;
Должность = Оклад77.FindItem(Спр77.Должность);
Оклад8 = Должность.Оклад;
Сообщить (Оклад8);
КонецЕсли;
КонецЦикла;
Ошибка та же
Автор: shurik_shurik 10.01.12, 15:33
Отладчиком пробовали?
И какая точно конфигурация базы 7.7. В стандартной бухгалтерии Оклад, это периодический реквизит справочника сотрудники, в бюджетной комплексной бухгалтерии тоже так.
Попробуйте строки Оклад8 = Должность.Оклад; Сообщить (Оклад8); заменить на Сообщить(Должность.Оклад), и еще перед этим напишите Сообщить(Должность.ТекущийЭлемент).
Автор: meverikxp 10.01.12, 16:19
Цитата(shurik_shurik @ 10.01.12, 15:33)
Отладчиком пробовали?
И какая точно конфигурация базы 7.7. В стандартной бухгалтерии Оклад, это периодический реквизит справочника сотрудники, в бюджетной комплексной бухгалтерии тоже так.
Попробуйте строки Оклад8 = Должность.Оклад; Сообщить (Оклад8); заменить на Сообщить(Должность.Оклад), и еще перед этим напишите Сообщить(Должность.ТекущийЭлемент).
Да, я всегда запускаю приложение в режиме отладки.
Насколько я понял это не стандартная конфигурация, а измененная, Справочник на самом деле называется не Должности, а ШтатнийРозклад, которого в стандартной конфе нету.
Попробовал сделать
Сообщить (Должность.Оклад)
та же ошибка, оклад не объективного типа
Автор: shurik_shurik 10.01.12, 16:34
А если так:
Если Спр77.ЭтоГруппа()=0 Тогда
Наименование = Спр77.Наименование;
Оклад77.FindItem(Спр77.Должность);
Оклад8 = Оклад77.Оклад;
Сообщить (Оклад8);
КонецЕсли;
Автор: meverikxp 10.01.12, 16:45
Цитата(shurik_shurik @ 10.01.12, 16:34)
А если так:
Если Спр77.ЭтоГруппа()=0 Тогда
Наименование = Спр77.Наименование;
Оклад77.FindItem(Спр77.Должность);
Оклад8 = Оклад77.Оклад;
Сообщить (Оклад8);
КонецЕсли;
Так сообщает для всех элементов "0".
Делал точку останова, так получается - Спр77.Должность - равняется например "Окулист" , а значение Оклад77.FindItem(Спр77.Должность) = 0, и тип число, судя по этому обработка не находит нужный элемент
Обнаружил некий интересный момент, на самом деле в справочнике сотрудники есть два реквизита Должность и посада, и именно посада имеет ссылочный тип на справочник ШтатныийРозклад и он тоже переодический, так если я правильно понял нужно искать именно от этого реквизита, но как, его значение сейчас равен COMОбъект
Автор: shurik_shurik 10.01.12, 17:50
Цитата(meverikxp @ 10.01.12, 17:45)
но как, его значение сейчас равен COMОбъект
Для начала попробовать скормить его методу FindItem, только желательно предварительно для переменной справочника СПР77 использовать UseDate.
Так-же можно попытаться использовать метод НайтиПоКоду(); Код получить через спр77.Посада.Код или ПолныйКод() в зависимости от настройки кодов в справочнике ШтатнийРозклад
Автор: meverikxp 10.01.12, 18:06
Цитата(shurik_shurik @ 10.01.12, 17:50)
Для начала попробовать скормить его методу FindItem, только желательно предварительно для переменной справочника СПР77 использовать UseDate.
Так-же можно попытаться использовать метод НайтиПоКоду(); Код получить через спр77.Посада.Код или ПолныйКод() в зависимости от настройки кодов в справочнике ШтатнийРозклад
Да, действительно получилось. УРА!!!!!
Автор: shurik_shurik 10.01.12, 21:53
Цитата(meverikxp @ 10.01.12, 19:06)
Да, действительно получилось. УРА!!!!!
Я очень рад за Вас
Автор: meverikxp 13.01.12, 15:10
Продолжая тему, как теперь загрузить остатки с чего начать? Ума не приложу!!!
Автор: Vofka 13.01.12, 15:48
Цитата
Продолжая тему
Я так не думаю. Или давайте тогда всё на форуме снесём и создадим 1 тему: "Автоматизация учета" и будем все всё в ней спрашивать. Тема закрыта. Создавайте новую тему и описывайте в ней
КОНКРЕТНУЮ проблему.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua