![]() |
Модераторы: stron |
![]() ![]() ![]() |
|
Gvo3D |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 13.2.2006 Репутация: нет Всего: нет |
Подскажите как лучше сделать перенос данных из седьмой бухгалтерии в торговлю 8.1... конкретно- документы Реализация.
не хочется делать 2 обработки импорт экспорт через хмл. Можно ли сделать это через Оле? Если можно пример кода инициализации |
|||
|
||||
AkelaSQL |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 14.9.2007 Где: Москва Репутация: 6 Всего: 7 |
Вот выдержки из восьмерочной обработки для получения данных из 77:
Функция Соединение1Cv77Ole(Объект,ПоказыватьСообщениеПриУдачномСоединение = Истина) Экспорт Перем Соединение, Кавычка; Кавычка = Символ(34); Соединение = Новый COMОбъект("V77.Application"); ПутьКБазе = "\\" + СокрЛП(Объект.ИмяСервера) + "\" + СокрЛП(Объект.ИмяБазыДанных); СтрокаСообщения = "Попытка соединения с " + ПутьКБазе + "..."; #Если Клиент Тогда Состояние(СтрокаСообщения); #Иначе Сообщить(СтрокаСообщения, СтатусСообщения.Информация); #КонецЕсли ИмяФайла = ПутьКБазе + "\1cv7.md"; ВыбФайл = Новый Файл(ИмяФайла); Если ВыбФайл.Существует() = Ложь Тогда Соединение = Ложь; Сообщить("База " + ПутьКБазе + " отсутствует! Соединение не установленно!!!", СтатусСообщения.Внимание); Возврат Соединение; КонецЕсли; Попытка Открыта = Соединение.Initialize(Соединение.RMTrade,"/D" + Кавычка + ПутьКБазе + Кавычка + " /N" + Кавычка + СокрЛП(Объект.ИмяПользователя) + Кавычка + "/P" + СокрЛП(Объект.Пароль),"NO_SPLASH_SHOW"); Исключение Соединение = Ложь; Открыта = Ложь; КонецПопытки; Если Открыта = Ложь Тогда #Если Клиент Тогда Ответ = Вопрос("ВНИМАНИЕ! Соединение с " + ПутьКБазе + " не установленно!!! |Возможно оно будет более удачным в монопольном режиме. |Попытаться соединиться в монопольном режиме?",РежимДиалогаВопрос.ДаНет,,КодВозвратаДиалога.Нет,"Ошибка соединения..."); Если Ответ = КодВозвратаДиалога.Да Тогда Соединение = Новый COMОбъект("V77.Application"); Открыта = Соединение.Initialize(Соединение.RMTrade,"/D" + Кавычка + ПутьКБазе + Кавычка + "/M /N" + Кавычка + СокрЛП(Объект.ИмяПользователя) + Кавычка + "/P" + СокрЛП(Объект.Пароль),"NO_SPLASH_SHOW"); КонецЕсли; #Иначе Соединение = Новый COMОбъект("V77.Application"); Открыта = Соединение.Initialize(Соединение.RMTrade,"/D" + Кавычка + ПутьКБазе + Кавычка + "/M /N" + Кавычка + СокрЛП(Объект.ИмяПользователя) + Кавычка + "/P" + СокрЛП(Объект.Пароль),"NO_SPLASH_SHOW"); #КонецЕсли КонецЕсли; Если Открыта = Истина Тогда Если ПоказыватьСообщениеПриУдачномСоединение = Истина Тогда Сообщить("Соединение с " + ПутьКБазе + " установленно успешно!", СтатусСообщения.Информация); КонецЕсли; Иначе Соединение = Ложь; Сообщить("Соединение с " + ПутьКБазе + " не установленно!!!", СтатусСообщения.Внимание); КонецЕсли; Возврат Соединение; КонецФункции //Соединение1Cv77Ole() Процедура ПолучитьДанные() Если Соединение = Ложь Тогда Соединение = Соединение1Cv77Ole(Источник); КонецЕсли; ОчиститьСообщения(); Запрос = Соединение.CreateObject("Query"); ТекстЗапроса = " |Обрабатывать НеПомеченныеНаУдаление; |Наименование = Справочник.Фирмы.Наименование; |Код = Справочник.Фирмы.Код; |Группировка Код Без Групп; |"; Запрос.ВключитьSQL(1); Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; СЗ = Новый СписокЗначений; СЗ.Очистить(); Пока Запрос.Группировка(1) = 1 Цикл СЗ.Добавить(Запрос.Код, Запрос.Наименование, Ложь); КонецЦикла; КодФирмаТорг=""; КодФирмаТорг = СЗ.ВыбратьЭлемент("Выберите фирму для импорта", КодФирмаТорг); Если КодФирмаТорг = Неопределено Тогда Предупреждение("Импорт невозможен, не выбрана фирма!",45,"Ошибка установки фильтров..."); Возврат; КонецЕсли; ТекстЗапроса = " |Обрабатывать НеПомеченныеНаУдаление; |Наименование = Справочник.Склады.Наименование; |Код = Справочник.Склады.Код; |Группировка Код Без Групп; |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; СЗ.Очистить(); Пока Запрос.Группировка(1) = 1 Цикл СЗ.Добавить(Запрос.Код, Запрос.Наименование, Ложь); КонецЦикла; КодСкладТорг = ""; КодСкладТорг = СЗ.ВыбратьЭлемент("Выберите склад для импорта", КодСкладТорг); Если КодСкладТорг = Неопределено Тогда Предупреждение("Импорт невозможен не выбрано склад!",45,"Ошибка установки фильтров..."); Возврат; КонецЕсли; ТекстЗапроса = " |Период с '" + Формат(НачПериода,"ДФ=dd.MM.yy") + "' по '" + Формат(КонПериода,"ДФ=dd.MM.yy") + "'; |ОбрабатыватьДокументы Проведенные; |КодСтроки = Документ.Реализация.НомерСтроки, | Документ.РеализацияРозница.НомерСтроки, | Документ.ОтчетККМ.НомерСтроки; |НомерДок = Документ.Реализация.НомерДок, | Документ.РеализацияРозница.НомерДок, | Документ.ОтчетККМ.НомерДок; |ДатаДок = Документ.Реализация.ДатаДок, | Документ.РеализацияРозница.ДатаДок, | Документ.ОтчетККМ.ДатаДок; |ТекДок = Документ.Реализация.ТекущийДокумент, | Документ.РеализацияРозница.ТекущийДокумент, | Документ.ОтчетККМ.ТекущийДокумент; |КодКонтрагента = Документ.Реализация.Контрагент.Код, | Документ.РеализацияРозница.Контрагент.Код, | Документ.ОтчетККМ.Контрагент.Код; |НаимКонтрагента = Документ.Реализация.Контрагент.Наименование, | Документ.РеализацияРозница.Контрагент.Наименование, | Документ.ОтчетККМ.Контрагент.Наименование; |ЮрФизЛицо = Документ.Реализация.Контрагент.ЮрФизЛицо, | Документ.РеализацияРозница.Контрагент.ЮрФизЛицо, | Документ.ОтчетККМ.Контрагент.ЮрФизЛицо; |КодСкубы = Документ.Реализация.Номенклатура.Артикул, | Документ.РеализацияРозница.Номенклатура.Артикул, | Документ.ОтчетККМ.Номенклатура.Артикул; |Карточка = Документ.Реализация.Карточка.Наименование, | Документ.РеализацияРозница.Карточка.Наименование, | Документ.ОтчетККМ.Карточка.Наименование; |КодНоменклатуры = Документ.Реализация.Номенклатура.Код, | Документ.РеализацияРозница.Номенклатура.Код, | Документ.ОтчетККМ.Номенклатура.Код; |НаимНоменклатуры = Документ.Реализация.Номенклатура.Наименование, | Документ.РеализацияРозница.Номенклатура.Наименование, | Документ.ОтчетККМ.Номенклатура.Наименование; |Производитель = Документ.Реализация.Номенклатура.ОсновноеСвойство.ЗначениеСвойства.Наименование, | Документ.РеализацияРозница.Номенклатура.ОсновноеСвойство.ЗначениеСвойства.Наименование, | Документ.ОтчетККМ.Номенклатура.ОсновноеСвойство.ЗначениеСвойства.Наименование; |Количество = Документ.Реализация.Количество, | Документ.РеализацияРозница.Количество, | Документ.ОтчетККМ.Количество; |ЦенаПродРуб = Документ.Реализация.Цена, | Документ.РеализацияРозница.Цена, | Документ.ОтчетККМ.Цена; |СуммаСтрТч = Документ.Реализация.Сумма, | Документ.РеализацияРозница.Сумма, | Документ.ОтчетККМ.Сумма; |ИдентДокумента = Документ.Реализация.ДокБух, | Документ.РеализацияРозница.ДокБух, | Документ.ОтчетККМ.ДокБух; |ФирмаКод = Документ.Реализация.Фирма.Код, | Документ.РеализацияРозница.Фирма.Код, | Документ.ОтчетККМ.Фирма.Код; |СкладКод = Документ.Реализация.Склад.Код, | Документ.РеализацияРозница.Склад.Код, | Документ.ОтчетККМ.Склад.Код; |ПроектКод = Документ.Реализация.Проект.Код, | Документ.РеализацияРозница.Проект.Код, | Документ.ОтчетККМ.Проект.Код; |Группировка Документ; |Группировка СтрокаДокумента; |Условие (ФирмаКод = " + Кавычка + СокрЛП(КодФирмаТорг.Значение) + Кавычка + "); |Условие (СкладКод = " + Кавычка + СокрЛП(КодСкладТорг.Значение) + Кавычка + "); |"; Если КонтролироватьУникальность = Истина Тогда ТекстЗапроса = ТекстЗапроса + "Условие (ПустаяСтрока(СокрЛП(ИдентДокумента)) = 1); |"; КонецЕсли; Если Вопрос("Выбрать по конкретному проекту?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда ТекстЗапросаДоп = " |Обрабатывать НеПомеченныеНаУдаление; |Наименование = Справочник.Проекты.Наименование; |Код = Справочник.Проекты.Код; |Группировка Код Без Групп Все; |"; Если Запрос.Выполнить(ТекстЗапросаДоп) = 0 Тогда Возврат; КонецЕсли; СЗ.Очистить(); Пока Запрос.Группировка(1) = 1 Цикл СЗ.Добавить(Запрос.Код, Запрос.Наименование, Ложь); КонецЦикла; КодПроектТорг = ""; КодПроектТорг = СЗ.ВыбратьЭлемент("Выберите проект для импорта"); Если КодПроектТорг = Неопределено Тогда Предупреждение("Проект не выбран! |Фильтр по проекту не установлен.");; КонецЕсли; Если Не(ЗначениеЗаполнено(СокрЛП(КодПроектТорг)))= Ложь Тогда ТекстЗапроса = ТекстЗапроса + "Условие (ПроектКод = " + Кавычка + СокрЛП(КодПроектТорг.Значение) + Кавычка + ");"; КонецЕсли; КонецЕсли; Состояние("Выполняю запрос. Пожалуйста подождите..."); Попытка Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Состояние("Заполняю таблицу результатов. Пожалуйста подождите..."); ТаблицаРезультат.Колонки.Очистить(); ТаблицаРезультат.Колонки.Добавить("Пометка", ПолучитьОписаниеТипаБулево(), "v",2); ТаблицаРезультат.Колонки.Добавить("КодСтроки", ПолучитьОписаниеТиповСтроки(10), "КодСтроки",8); ТаблицаРезультат.Колонки.Добавить("НомерДок", ПолучитьОписаниеТиповСтроки(25), "НомерДок",15); ТаблицаРезультат.Колонки.Добавить("ДатаДок", ПолучитьОписаниеТиповСтроки(20), "ДатаДок",20); ТаблицаРезультат.Колонки.Добавить("КодКонтрагента", ПолучитьОписаниеТиповСтроки(12), "КодКонтрагента",12); ТаблицаРезультат.Колонки.Добавить("НаимКонтрагента", ПолучитьОписаниеТиповСтроки(50),"НаимКонтрагента",20); ТаблицаРезультат.Колонки.Добавить("ИННКонтрагента", ПолучитьОписаниеТиповСтроки(12), "ИННКонтрагента",12); ТаблицаРезультат.Колонки.Добавить("КППКонтрагента", ПолучитьОписаниеТиповСтроки(7), "КППКонтрагента",7); ТаблицаРезультат.Колонки.Добавить("КодСкубы", ПолучитьОписаниеТиповСтроки(25), "КодСкубы",10); ТаблицаРезультат.Колонки.Добавить("Карточка", ПолучитьОписаниеТиповСтроки(20), "Карточка",10); ТаблицаРезультат.Колонки.Добавить("КодНоменклатуры", ПолучитьОписаниеТиповСтроки(10), "КодНоменклатуры",10); ТаблицаРезультат.Колонки.Добавить("Номенклатура", ПолучитьОписаниеТиповСтроки(40), "Номенклатура",40); ТаблицаРезультат.Колонки.Добавить("Производитель", ПолучитьОписаниеТиповСтроки(25), "Производитель",20); ТаблицаРезультат.Колонки.Добавить("НомПроизводителя",ПолучитьОписаниеТиповСтроки(25), "НомПроизв",7); ТаблицаРезультат.Колонки.Добавить("ГТД", ПолучитьОписаниеТиповСтроки(26), "ГТД",26); ТаблицаРезультат.Колонки.Добавить("КодСтраны", ПолучитьОписаниеТиповСтроки(30), "КодСтраны",5); ТаблицаРезультат.Колонки.Добавить("СтрПроисхождения",ПолучитьОписаниеТиповСтроки(15), "СтрПроисхождения",15); ТаблицаРезультат.Колонки.Добавить("Количество", ПолучитьОписаниеТиповЧисла(15,3)); ТаблицаРезультат.Колонки.Добавить("ЦенаЗакЕвро", ПолучитьОписаниеТиповЧисла(15,2)); ТаблицаРезультат.Колонки.Добавить("ЦенаЗакРуб", ПолучитьОписаниеТиповЧисла(15,2)); ТаблицаРезультат.Колонки.Добавить("ЦенаПродЕвро", ПолучитьОписаниеТиповЧисла(15,2)); ТаблицаРезультат.Колонки.Добавить("ЦенаПродРуб", ПолучитьОписаниеТиповЧисла(15,2)); ТаблицаРезультат.Колонки.Добавить("Сумма", ПолучитьОписаниеТиповЧисла(15,2)); ТаблицаРезультат.Колонки.Добавить("Документ", ПолучитьОписаниеТиповСтроки(80), "Документ",80); ТаблицаРезультат.Колонки.Добавить("ВидДокумента", ПолучитьОписаниеТиповСтроки(25), "ВидДокумента",25); ТаблицаРезультат.Колонки.Добавить("ИдентДокумента", ПолучитьОписаниеТиповСтроки(80), "ИдентДокумента",80); ДвижДокТорг = Соединение.CreateObject("Register.ПартииНаличие"); СчетчикСтрок = 0; ЭтаФорма.ЭлементыФормы.ТаблицаРезультат.СоздатьКолонки(); Пока Запрос.Группировка(1) = 1 Цикл ОбработкаПрерыванияПользователя(); ВидДокумента = СокрЛП(Запрос.ТекДок.Вид()); ТекИНН = СокрЛП(Запрос.ЮрФизЛицо.ИНН); ИНН = ПолучитьИНН(ТекИНН); Если ЗначениеЗаполнено(ИННКлиента) = Истина Тогда Если ИННКлиента <> ИНН Тогда Продолжить; КонецЕсли; КонецЕсли; КПП = ПолучитьКПП(ТекИНН); стрДокБух = СокрЛП(Запрос.ИдентДокумента); ИдентДокумента = Лев(стрДокБух,Найти(стрДокБух,"CR/LF")-1);//ссылка на документ в баз 8 Документ = Сред(стрДокБух,Найти(стрДокБух,"CR/LF")+5,Найти(стрДокБух,"CR/LF")+5-СтрДлина(стрДокБух)); //Название документа в базе 7 Пока Запрос.Группировка(2) = 1 Цикл Если (Число(Запрос.СуммаСтрТч) = 0) ИЛИ (Число(Запрос.Количество) = 0) Тогда Сообщить(ВидДокумента+" "+СокрЛП(Запрос.НомерДок)+ " В строке " + Строка(Запрос.КодСтроки) + " не указана сумма или колчество",СтатусСообщения.Важное); Продолжить; КонецЕсли; //Проходя в цикле по документам заполняем таблицу значений данными из запроса, то есть из документов и запросов НоваяСтрокатзИзДокумента = ТаблицаРезультат.Добавить(); НоваяСтрокатзИзДокумента.КодСтроки = СокрЛП(Запрос.КодСтроки); НоваяСтрокатзИзДокумента.НомерДок = СокрЛП(Запрос.НомерДок); НоваяСтрокатзИзДокумента.ДатаДок = СокрЛП(Запрос.ДатаДок); НоваяСтрокатзИзДокумента.КодКонтрагента = СокрЛП(Запрос.КодКонтрагента ); НоваяСтрокатзИзДокумента.НаимКонтрагента = СокрЛП(Запрос.НаимКонтрагента); НоваяСтрокатзИзДокумента.ИННКонтрагента = ИНН; НоваяСтрокатзИзДокумента.КППКонтрагента = КПП; НоваяСтрокатзИзДокумента.КодСкубы = СокрЛП(Запрос.КодСкубы); НоваяСтрокатзИзДокумента.Карточка = СокрЛП(Запрос.Карточка); НоваяСтрокатзИзДокумента.КодНоменклатуры = СокрЛП(Запрос.КодНоменклатуры); НоваяСтрокатзИзДокумента.Номенклатура = СокрЛП(Запрос.НаимНоменклатуры); НоваяСтрокатзИзДокумента.Производитель = СокрЛП(Запрос.Производитель); НоваяСтрокатзИзДокумента.Количество = Число(Запрос.Количество); НоваяСтрокатзИзДокумента.ЦенаПродРуб = Число(Запрос.СуммаСтрТч/Запрос.Количество); НоваяСтрокатзИзДокумента.Сумма = Число(Запрос.СуммаСтрТч); НоваяСтрокатзИзДокумента.Документ = Документ; НоваяСтрокатзИзДокумента.ВидДокумента = ВидДокумента; НоваяСтрокатзИзДокумента.ИдентДокумента = ИдентДокумента; ДвижДокТорг.ВыбратьДвиженияДокумента(Запрос.ТекДок.ТекущийДокумент()); Пока ДвижДокТорг.ПолучитьДвижение() = 1 Цикл Если ДвижДокТорг.НомерСтроки() = Запрос.КодСтроки Тогда НоваяСтрокатзИзДокумента.ГТД = СокрЛП(ДвижДокТорг.Партия.ГТД.Наименование); НоваяСтрокатзИзДокумента.КодСтраны = СокрЛП(ДвижДокТорг.Партия.СтранаПроисхождения.Код); НоваяСтрокатзИзДокумента.СтрПроисхождения = СокрЛП(ДвижДокТорг.Партия.СтранаПроисхождения.Наименование); Прервать; Иначе Продолжить; КонецЕсли; КонецЦикла; СчетчикСтрок = СчетчикСтрок + 1; Состояние("Обработанно строк ("+Формат(СчетчикСтрок,"ЧГ=") + ")"); КонецЦикла; КонецЦикла; Для каждого Кол Из ЭтаФорма.ЭлементыФормы.ТаблицаРезультат.Колонки Цикл Кол.ТолькоПросмотр = Истина; Если Кол.Имя = "Пометка" Тогда Кол.ТолькоПросмотр = Ложь; ИначеЕсли Кол.Имя = "КодСкубы" Тогда Кол.Ширина = 10; ИначеЕсли Кол.Имя = "Номенклатура" Тогда Кол.Ширина = 20; ИначеЕсли Кол.Имя = "НомерДок" Тогда Кол.ТекстШапки = "№ Док."; Кол.Ширина = 11; ИначеЕсли Кол.Имя = "Количество" Тогда Кол.ТекстШапки = "Кол-во"; Кол.Ширина = 8; ИначеЕсли Кол.Имя = "Карточка" Тогда Кол.Ширина = 12; ИначеЕсли Кол.Имя = "СтрПроисхождения" Тогда Кол.ТекстШапки = "Страна происх."; Кол.Ширина = 12; ИначеЕсли Кол.Имя = "НаимКонтрагента" Тогда Кол.ТекстШапки = "Контрагент"; Кол.Ширина = 25; ИначеЕсли Кол.Имя = "НомПроизводителя" Тогда Кол.Ширина = 5; ИначеЕсли Кол.Имя = "ГТД" Тогда Кол.Ширина = 30; ИначеЕсли Кол.Имя = "Производитель" Тогда Кол.Ширина = 15; ИначеЕсли (Кол.Имя = "КодСтроки") ИЛИ (Кол.Имя = "КППКонтрагента") ИЛИ (Кол.Имя = "КодНоменклатуры") ИЛИ (Кол.Имя = "ИдентДокумента") ИЛИ(Кол.Имя = "КодСтраны") ИЛИ (Кол.Имя="ВидДокумента") Тогда Кол.Видимость = Ложь; Иначе Кол.Ширина = 15; КонецЕсли; КонецЦикла; Для каждого стр Из ТаблицаРезультат Цикл Если СокрЛП(стр.Документ) = "" Тогда стр.Пометка = Истина; КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
|
||||
![]() ![]() ![]() |
Правила форума "1C: Предприятие, SAP, ERP и учётные системы" | |
|
Запрещается! 1. Обсуждение крэков, кейгенов и других подобных программ Пробуйте искать сами или обращайтесь в приват к участникам форума. Темы с подобными вещами будут немедленно удаляться, а нарушители - получать предупреждения. Также запрещается обсуждение проблем работы этих программ (что куда вписать, куда что скопировать и т.п...) 2. Давать ссылки на взломанные продукты
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | 1C: Предприятие, SAP, ERP и учётные системы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |