gifts2017

Загрузка справочников и документов из 7.7 в 8.2 (OLE)

Опубликовал Илья Васильев (swimdog) в раздел Программирование - Инструментарий

Доработанная версия обработки http://infostart.ru/public/66925/. Версия работает только в 8.2, добавлена работа со справочниками. Окно авторизации в 7.7 может быть не видно!! Переключение Alt-Tab!!

Доработанная версия обработки http://infostart.ru/public/66925/.

Версия работает только в 8.2, добавлена работа со справочниками.

Текст обработки открыт для изменения.

Окно авторизации в 7.7 может быть не видно!! Переключение Alt-Tab!!

Скачать файлы

Наименование Файл Версия Размер
Загрузка документов и справочников из 7.7 в 8.2 1969
.epf 30,45Kb
31.10.16
1969
.epf 30,45Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Андрей Аввакумов (Xenom) 20.04.11 17:14
Выбрал базу 7.7, восьмерка зависла((Терминальный сервер 2008 r2 (((
2. Алексей (Alex1c) 20.04.11 18:11
(0) При выборе базы появляется окошко входа в 1с 7.7, но его не видно. Добраться до него можно сворачивая разворачивая другие окна.

Недоработка при коннекте к 7.7. Нет возможности выбора версии 7.7. Не у всех отработает Новый COMОбъект("v77.Application"); Для SQL надо Новый COMОбъект("v77s.Application");
Остальное еще не смотрел
3. Илья Васильев (swimdog) 22.04.11 20:44
(1) она не зависла. Окно подключения к семерке может быть не видно. Переключение Alt-Tab
(2) поменял
4. varbasevisch 28.04.11 07:54
Попытался перенести платеж. поручение. Ни каких результатов. Такое ощущение - не создается OLE объект?
5. varbasevisch 28.04.11 13:05
Посоветуйте,чем можно срочно перегнать платежки из 7.7 в 1с 8.2 Бухгалтерию предприятия.
6. Илья Васильев (swimdog) 28.04.11 21:16
(5) я полагаю, что можно перегнать стандартными правилами конвертации бухгалтерия 77-82. Если в них нет плат. поручения, то можно взять эти правила за основу.
7. Олег Шалимов (CaSH_2004) 29.04.11 00:48
Очень мощная обработка, правда не без помарок. Вот например захожу на закладку справочнии и выбираю для 7 и 8 "Банковские счета"
Виден реквизит банки а у него для 7-ки тип реквизита "Справочник.Банки", а для 8-ки тип "Банки". Мне то понятно и без колонки Тип реквизита к какому типу что относится, т.к. знаю в оновном все реквизиты в типовых конфах, но если не секрет то что это? задумка или недоработка? Вроде уве должно быть максимально однотипным, а "Справочник.Банки" это гораздо нагляднее и правильнее, т.к. типа "Банки" в 1С не существует
новичка это вообще в супор ввести может :)
8. Анатолий Быков (awbyk) 12.05.11 16:53
Неплохо бы был отсортировать список семерочных баз по алфавиту, а то, когда баз на компе много,трудно искать нужную.
9. Edik Ganeev (andispell) 13.05.11 11:25
varbasevisch 28.04.11 7:54 Ссылка Цитата Ник
Попытался перенести платеж. поручение. Ни каких результатов. Такое ощущение - не создается OLE объект?

Та же проблема. Никакой реакции...
10. Елена Ш (Lunoli) 29.05.11 18:12
При переносе справочников поля код и наименование не указаны в общем списке...
А вообще больше спасибо автору:)
11. Илья Васильев (swimdog) 05.07.11 21:46
Внимание! Все вопросы по переносу документов можете адресовать автору обработки. Я добавил работу со справочниками. Документы я не переносил и не знаю как они должны переноситься.
12. Илья Васильев (swimdog) 06.07.11 23:57
(7), (8) Внес изменения. Теперь список баз отсортирован по названиям, синонимы пишутся полностью.
13. Дергачева Светлана (info-office) 13.07.11 15:54
Выдает сообщение "Ошибка подключения!"
Подскажите, пожалуйста, как исправить?
До переустановки системы все подключалось...
14. Михаил С. (Milanick) 15.07.11 13:58
Добрый день.
Коллега, не подскажите как правильно перенести справочник номенклатуры из 7ки в 8.2, с группами
15. Андрей Морковин (Test-Life) 21.07.11 17:28
Открываю обработку в 8.2.13.219 УТ 11.0.6.7.
Открывается абсолютно пустое маленькое окно ~2х7см, в правом нижнем углу одна единственная кнопка "все действия \/".
Подскажите, что делаю не так? Куда девается всё богатство этой обработки?
16. Дэн Счастливый (happyden) 04.09.11 22:33
Test-Life пишет:

Открываю обработку в 8.2.13.219 УТ 11.0.6.7.
Открывается абсолютно пустое маленькое окно ~2х7см, в правом нижнем углу одна единственная кнопка "все действия \/".
Подскажите, что делаю не так? Куда девается всё богатство этой обработки?

Открыть УТ в обычном приложении... Думаю что ты, дружище, уже открыл его, но оставляю сообщение потомкам :) Конфигуратор - Сервис - Параметры - Общие...
swimdog; Test-Life; +2 Ответить
17. DERL (DERL) 23.09.11 10:41
а обработка будет работать в самописной конфигурации 8.2???
18. Илья Васильев (swimdog) 23.09.11 21:06
19. ghOst Bu (ilonnaa) 29.09.11 17:44
Шикарная обработка сейчас заценю.
21. podolskholod podolsk (podolskholod) 14.10.11 15:25
Пробую перенести документы реализации ,поступление, платежное поручение через конвертацию данных.
Реализация не выгружается совсем.Поступление и платежки в файл выгружаются. При загрузке в 1с8.2 пишется, что документы загружены, но документов не видать.
РАБОТАЕТ ЛИ ДАННАЯ ОБРАБОТКА АВТОРА КОРРЕКТНО ?
22. Илья Васильев (swimdog) 16.10.11 20:48
(21) podolskholod, ответ в п. 11
23. Мирослав Зименко (Meshimoto) 18.10.11 12:49
Из бухгалтерии 7.7 в 8.2 справочники перенеслись корректно, документы тоже.
Главное показать какие реквизиты переносить.
Очень нужная вещь для начала.
24. Andrey Golubev (razzmuzz) 25.10.11 09:31
При выборе базы появляется окошко входа в 1с 7.7, но его не видно. Добраться до него можно сворачивая разворачивая другие окна.

Недоработка при коннекте к 7.7. Нет возможности выбора версии 7.7. Не у всех отработает Новый COMОбъект("v77.Application"); Для SQL надо Новый COMОбъект("v77s.Application"); При выборе базы появляется окошко входа в 1с 7.7, но его не видно. Добраться до него можно сворачивая разворачивая другие окна.

Недоработка при коннекте к 7.7. Нет возможности выбора версии 7.7. Не у всех отработает Новый COMОбъект("v77.Application"); Для SQL надо Новый COMОбъект("v77s.Application"); При выборе базы появляется окошко входа в 1с 7.7, но его не видно. Добраться до него можно сворачивая разворачивая другие окна.

Недоработка при коннекте к 7.7. Нет возможности выбора версии 7.7. Не у всех отработает Новый COMОбъект("v77.Application"); Для SQL надо Новый COMОбъект("v77s.Application"); При выборе базы появляется окошко входа в 1с 7.7, но его не видно. Добраться до него можно сворачивая разворачивая другие окна.

Недоработка при коннекте к 7.7. Нет возможности выбора версии 7.7. Не у всех отработает Новый COMОбъект("v77.Application"); Для SQL надо Новый COMОбъект("v77s.Application");
25. Алексей (daviels) 26.10.11 10:54
ну ка ну ка :) сейчас попробуем что за обработка. Отпишусь какие касяки, если найду конечно такие... ну вот народ пишет что что то уже есть. В целом думаю будет очень востребованный продукт
26. Илья Васильев (swimdog) 26.10.11 21:19
(25) daviels, это уже востребованный продукт, более 1100 скачавших пользователей
27. Илья Васильев (swimdog) 26.10.11 21:21
(24) razzmuzz, смотри описание обработки и п.3
28. Николай Козлов (Nikolenka) 26.10.11 23:08
(21) podolskholod,
Попробуйте в 8-ке в тех доках, что переносили, выключить сортировку по организации. Мне помогло, я увидел загруженные доки.
29. Anatoli Selevko (kakraz) 27.10.11 13:12
тоже возникла необходимость буду пробовать отпишусь как получилось)
32. Yuri Ochichenko (yuri_ochichenko) 06.11.11 18:44
Версия v7plus.dll должна быть не ниже 7.70.011
33. Taras Shewchenko (yuyu1) 06.11.11 18:50
(30) sanbkavolkov2, так и не отписался! Конвертировалась реализация из семёрки или нет ?
34. Алексей Козленков (ukgh) 07.11.11 07:27
35. Alex (Alexan78) 07.11.11 13:43
Нормальная обработка. Добавил на форму прогресс-бар, немного доработал код (выбор разных реквизитов по условиям)и теперь можно пользоваться с удобством. Автору респект!
36. Илья Васильев (swimdog) 07.11.11 22:12
(35) Alexan78, могу выложить, чтобы все пользовались
37. EleKa (eleka) 15.11.11 08:45
Это очень хорошая обработка,спасибо. Еще ничего, правда, не пробовала переносить, если получиться, напишу отдельное спасибо еще раз
38. avkit (avkit) 15.11.11 23:53
39. Asima (Asima) 09.12.11 06:50
Отличная обработка. При необходимости переноса большого объема документов!! Спасибо!
Единственная сложность - не переносит ед.измерения?
40. Сергей Васильев (leafoe) 18.12.11 01:22
Спасибо за обработку, 1с могли бы и на ИТС приложить подобное..
41. Николай Козлов (Nikolenka) 21.12.11 13:17
Возник вопрос: пытаюсь перенести справочник номеклатура из ТиС в БП 2.0. Выводится ошибка - перед записью необходимо определить единицу измерения. Кто сталкивался?
42. Николай Козлов (Nikolenka) 21.12.11 13:35
Что касается переноса из БП 7.7 в БП 8.2 - обработка отличная, хотя сейчас 1С-ники сделали перенос документов.
43. nanik nanik (nanik) 22.12.11 04:19
Спасибо, удобная обработка и очень полезна.
44. evgeny belov (Sbelyi78) 20.01.12 08:50
Спасибо. решил пару проблем с ее помощью
45. Максим Мухарев (Carw) 25.02.12 16:37
(42) Nikolenka, А не подскажете, где именно 1С-ники сделали перенос документов? Сейчас как раз необходимость в переносе возникла, а решения найти пока не получилось.
46. Николай (provnick) 31.05.12 09:58
Никак не отрабатывает Цикл
ДокумV7.ВыбратьСтроки();
Пока ДокумV7.ПолучитьСтроку() = 1 Цикл

По отладчику ДокумV7.ПолучитьСтроку() = 0 и, что делать непонятно, в 8.1 отрабатывалось и заполнялось
47. Н К (NataZ) 01.06.12 03:44
Подскажите, а из Предпринимателя 7.7 в 8.2 перенесет?
48. Николай (provnick) 01.06.12 08:10
Перенесет видимо все, что нужно, из любого вида документа в любой другой, только нужно знать, как обращаться к метаданным 77. Я столкнулся с проблемой переноса СФ. Табличной части в 77 нет, а в 8.2 есть, нужно обратиться к документу основанию в COMобъекте. То есть следующий код ДокумV7.ДокОснование.ВыбратьСтроки();
Пока ДокумV7.ДокОснование.ПолучитьСтроку() = 1 Цикл и ...не отрабатывает, то есть ДокОснования видит, количествоСтрок видит, Итог("Сумма") видит, но обратиться к табличной части не получается, ДокумV7.ДокОснование.Количество или ДокумV7.ДокОснование.Цена определяет как COMобъект, но значение как получить? Может, кто подскажет?
49. Николай (provnick) 01.06.12 09:10
Сам себе режиссер, видимо все уже это давно прошли, но может все таки кто то еще решает подобное. Разрешил вопрос присвоением ДокОсн = ДокумV7.ДокОснование; и дальше уже почти все получилось, детали дорабатываю. В целом идея хороша, но отравляет жизнь Alt+Tab. Если использовать ниже код, получается проще и без Alt+Tab
Процедура ПодключитьБазу()
База="";
База=Новый COMОбъект("V77.Application");
Попытка
СтрокаПодключения = "/D"""+СокрЛП(ПутьКБазе)+""" /N"""+СокрЛП(Пользователь)+""" /P"""+СокрЛП(Пароль)+"""";
Открыта=База.Initialize(База.RMTrade,СтрокаПодключения,"NO_SPLASH_SHOW");
Если Открыта Тогда
ЕстьПодключение = Истина;
Иначе
Предупреждение("Ошибка при подключении!");
ЕстьПодключение = Ложь;
КонецЕсли;
Исключение
Предупреждение("Ошибка при подключении!");
ЕстьПодключение = Ложь;
КонецПопытки;
подход проще,только на форму выводить нужно пользователя и т.д.,но работает в 8.2 быстро и наглядно, ну это уже как кому удобней.
50. Степашка Никулин (Styvi) 03.09.12 12:57
(49) provnick, "В целом идея хороша, но отравляет жизнь Alt+Tab.."

Не вижу трудностей - при подключении к 77 (если есть проблемы, типа неоткрытого периода и т.п.)
Если много открытых окон, то проще не Alt+Tab мучить, а "Запустить диспетчер задач" в правой кнопке панели задач внизу экрана... Окно запуска или сообщения 77 будет как раз досовского изображения (синее) и сверху - сразу перейти к нему и ответить, что просят...

Обработку ещё не качал, но планирую почитать код, что в ней есть хорошего для справочников (иерархия интересует)...
51. Eugeneer (Eugeneer) 07.09.12 12:29
На управляемых формах есть что то такое?
52. Илья Васильев (swimdog) 07.09.12 20:35
(51) Eugeneer, нет. обработку использовал всего пару раз, поэтому не заморачивался.
53. Дмитрий Ярославцев (DimanYa) 09.10.12 13:03
Переношу вашей обработкой данные, но возникла одна небольшая проблемка. Можете подсказать?
Суть проблемы такова: при подключение к Базе 1С 7.7 я получаю документ и могу работать со всеми его реквизитами, кроме реквизитов в которых содержатся другие объекты. Например документ "Поступление доп. расходов" у которого есть реквизит "Основание" в котором содержится документ основание. При обращении к данному реквизиту я получаю значение Com-объект и больше ничего получить не могу. Ни номера его, ни даты.
Может подскажете, как можно вытащить дополнительно эту информацию?
54. Илья Васильев (swimdog) 09.10.12 22:11
(53) DimanYa, Com-объект получается в базе приемнике, так как документ основания - это объект другой базы, который нельзя получить/просмотреть в базе приемнике. Зато можно получить его текстовые / числовые реквизиты. В том числе номер и дату.
Например, Документ.Документ-основание.Номер
55. Дмитрий Ярославцев (DimanYa) 11.10.12 05:34
(49) provnick, Спасибо.
Действительно если присвоить новой переменной значение этого объекта, то потом доступна работа с его реквизитами в дальнейшем.
56. Руслан Цуев (perceptron123) 11.11.12 18:03
Добрый день! Я совсем новичок в 1с. Переношу с помощью обработки справочник "Банковские счета", подскажите, пожалуйста, что надо написать вместо:

//НовыйСпрV8.Банк = СправV7.БанкОрганизации;
//НовыйСпрV8.БанкДляРасчетов = СправV7.БанкДляРасчетов;

- то есть как обработать реквизиты не простых типов (число, строка, булево и т.д.), а сложных типа справочник.банки? Приведите, пожалуйста один наглядный пример, дальше по-аналогии сам разберусь! =) Заранее спасибо!
57. Руслан Цуев (perceptron123) 11.11.12 20:49
Вроде разобрался с предыдущим вопросом, но возник другой. Возникает ошибка "Значение поля "Владелец" не заполнено или заполнено не верно". В Чем может быть косяк? Вот все изменения которые я внес в код который предлагает обработка:
СправБ8 = Справочники.Банки;
СправВ = Справочники.Валюты;
НовыйСпрV8.НомерСчета = СправV7.Номер;
НовыйСпрV8.Банк = СправБ8.НайтиПоРеквизиту("КоррСчет",СправV7.БанкОрганизации.КоррСчет);
НовыйСпрV8.БанкДляРасчетов = СправБ8.НайтиПоРеквизиту("КоррСчет",СправV7.БанкОрганизации.КоррСчет);
НовыйСпрV8.ТекстКорреспондента = СправV7.Корреспондент;
НовыйСпрV8.ВидСчета = СправV7.ВидСчета;
НовыйСпрV8.ВалютаДенежныхСредств = СправВ.НайтиПоКоду(643);
НовыйСпрV8.НомерИДатаРазрешения = СправV7.НомерИДатаРазрешения;
НовыйСпрV8.ДатаОткрытия = СправV7.ДатаОткрытияСчета;
НовыйСпрV8.ДатаЗакрытия = СправV7.ДатаЗакрытияСчета;
НовыйСпрV8.МесяцПрописью = Булево(СправV7.МесяцПрописью);
НовыйСпрV8.СуммаБезКопеек = СправV7.СуммаБез00Копеек;
НовыйСпрV8.ВсегдаУказыватьКПП = Булево(СправV7.ВсегдаУказыватьКПП);
НовыйСпрV8.Записать();
И листинг с полным текстом кода во вложении. Спасибо! =)
Прикрепленные файлы:
list.txt
58. Илья Васильев (swimdog) 11.11.12 21:53
(57) perceptron123, поле владелец у справочника Банковские счета это обычно справочник Контрагенты или Организации. То есть, это та карточка, для которой заполняется банковский счет.
Владелец должен быть указан 2 раза: в момент выборки данных в 7.7 и при записи новой карточки в 8.
59. Руслан Цуев (perceptron123) 12.11.12 17:50
Спасибо! =) Разобрался! Обработка хороша! =) С КД как новичку в 1с мне разобраться было совсем тяжело (слишком много терминов =)), здесь все понятнее. Из минусов - редактор кода (в 1с он и так ужасен, а тут еще и контекстная справка недоступна) и отсутствие заготовки в тексте автогенерируемого кода для реквизита "наименование", но это я скорее уже придираюсь... =)
60. Michael Sharp (warlomak) 07.02.13 16:08
Обработка очень помогла, написал за вечер правила для обмена между нестандартными конфами.
61. Michael Sharp (warlomak) 07.02.13 16:11
Если один недостаток, при сохранении не всегда потом опять загружаются процедуры.
62. aleksei (alekseies) 19.02.13 14:55
Из 7.7 в 8.2 ряд справочников перенесла нормально, документы также ......
Главное правильно показать какие реквизиты переносить.
Нужная вещь для начала. Плюсую ....
63. Никита Иванов (Niksea) 28.11.13 19:06
Добрый день!

Сегодня купили эту обработку, базу 7.7 она видит, с реестра данные взяла, но ошибка:

{ВнешняяОбработка.ЗагрузкаДокументовИСправочниковИз77.МодульОбъекта(20)}: Ошибка при вызове конструктора (COMОбъект)
БазаОлеТек = Новый COMОбъект("v77s.Application");
по причине:
Недопустимая строка с указанием класса

Что делать?


Решено.
Спасибо за оперативность, Александр! (нужно было установить SQL версию 1С 7.7)
64. Владимир 777 (MyPuK_OLD) 23.12.13 15:46
Всем доброго времени суток!!!
У данной обработки уж очень короткое описание..
Эта обработка создает в 8.2 номенклатуру копируя её Наименование, Код, Артикул и т. д. из 7.7? Имеет ли какое-то значение конфигурация? Или из любой 7.7 в любую 8.2 переноситься?
Сядут ли номенклатуры при таком переносе в свои же номенклатурные группы (имею ввиду Родителя, (папку более высокого уровня))
Или я что-то недопонимаю?..
Всем заранее Спасибо!
65. Илья Васильев (swimdog) 23.12.13 21:43
(64) MyPuK_OLD, обработка связывает 2 базы и дает возможность исполнить написанный ВАМИ код. А что, как и куда сядет зависит от кода.
66. Андрей К. (Abbra) 29.12.13 21:49
swimdog, так как все-таки с иерархией загружаемого справочника поступить?
есть варианты?
67. Андрей К. (Abbra) 30.12.13 00:22
решение иерархичности для номенклатура пуб7.7-номенклатура бп3.0:


СправV8 = Справочники.Номенклатура;
СправV7 = БазаОле.CreateObject("Справочник.Номенклатура");
СправV7.ВыбратьЭлементы();
Пока СправV7.ПолучитьЭлемент() = 1 Цикл
ОбработкаПрерыванияПользователя();
Если СправV7.ПометкаУдаления() = 1 Тогда
// Продолжить;
КонецЕсли;

Код = "З"+стПривестиНомерКДлине(СправV7.Код, 10);
НовыйСпрV8 = СправV8.НайтиПоКоду(Код);

если СправV7.уровень() = 1 тогда
иначе
КодРодителя = "З"+стПривестиНомерКДлине(СправV7.Родитель.Код, 10);
РодительСпрV8 = СправV8.НайтиПоКоду(КодРодителя);
КонецЕсли;

Если СправV7.ЭтоГруппа() Тогда
//Сообщить("Это группа");
Если НовыйСпрV8 = Неопределено ИЛИ НовыйСпрV8.Пустая() Тогда
НовыйСпрV8 = СправV8.СоздатьГруппу();
НовыйСпрV8.код = код;

Иначе
НовыйСпрV8 = НовыйСпрV8.ПолучитьОбъект();
Если НовыйСпрV8.Наименование <> СправV7.Наименование тогда
Сообщить("ТРЕВОГА ТРЕВОГА ВОЛК УНЕС ЗАЙЧАТ");
продолжить;
конецЕсли;
КонецЕсли;
НовыйСпрV8.Наименование = СправV7.Наименование;
//сообщить("1 уровень "+СправV7.уровень());
//сообщить("2 полный код "+СправV7.полныйкод());
если СправV7.уровень() = 1 тогда
НовыйСпрV8.Записать();
иначе
Если РодительСпрV8 = Неопределено ИЛИ РодительСпрV8.Пустая() Тогда
//Сообщить("код не найденного родителя "+кодродителя);
Сообщить("код не найденного родителя "+кодродителя+" код элемента"+НовыйСпрV8.код);
прервать;
//РодительСпрV8 = СправV8.СоздатьГруппу();
продолжить;
Иначе
НовыйСпрV8.Родитель = РодительСпрV8;
//Сообщить("Код родителя "+кодродителя);
//Сообщить("Нашли родителя "+РодительСпрV8);
НовыйСпрV8.Записать();

КонецЕсли;
КонецЕсли;
Иначе
//Сообщить("Это элемент");
Если НовыйСпрV8 = Неопределено ИЛИ НовыйСпрV8.Пустая() Тогда
НовыйСпрV8 = СправV8.СоздатьЭлемент();
НовыйСпрV8.код = код;
Иначе
НовыйСпрV8 = НовыйСпрV8.ПолучитьОбъект();
Если НовыйСпрV8.Наименование <> СправV7.Наименование тогда
Сообщить("ТРЕВОГА ТРЕВОГА ВОЛК УНЕС ЗАЙЧАТ");
продолжить;
конецЕсли;

КонецЕсли;
//Сообщить("в группе "+СправV7.родитель.код);
//Сообщить("Код родителя "+кодродителя);
если СправV7.уровень() = 1 тогда
НовыйСпрV8.Записать();
иначе
Если РодительСпрV8 = Неопределено ИЛИ РодительСпрV8.Пустая() Тогда
//РодительСпрV8 = СправV8.СоздатьГруппу();
Сообщить("код не найденного родителя "+кодродителя+" код элемента"+НовыйСпрV8.код);
продолжить;
Иначе
НовыйСпрV8.Родитель = РодительСпрV8;
//Сообщить("Код родителя "+кодродителя);
//Сообщить("Нашли родителя "+РодительСпрV8);
//НовыйСпрV8.Записать();

КонецЕсли;
КонецЕсли;


НовыйСпрV8.Наименование = СправV7.Наименование;
НовыйСпрV8.НаименованиеПолное = СправV7.ПолнНаименование;
НовыйСпрV8.Артикул = СправV7.Артикул;

НовыйСпрV8.ЕдиницаИзмерения = справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(СправV7.ЕдиницаИзмерения.Код);

//Если СправV7.СтавкаНДС = неопределено Тогда
//сообщить(""+БазаОле.ПустоеЗначение(СправV7.СтавкаНДС));
//Если БазаОле.ПустоеЗначение(СправV7.СтавкаНДС.Получить(БазаОле.ТекущаяДата())) <> 0 Тогда
//ИначеЕсли СправV7.СтавкаНДС.Ставка.Получить(БазаОле.ТекущаяДата()) = 18 Тогда НовыйСпрV8.СтавкаНДС = перечисления.СтавкиНДС.НДС18;
//ИначеЕсли СправV7.СтавкаНДС.Ставка.Получить(БазаОле.ТекущаяДата()) = 10 Тогда НовыйСпрV8.СтавкаНДС = перечисления.СтавкиНДС.НДС10;
//КонецЕсли;
НовыйСпрV8.СтавкаНДС = перечисления.СтавкиНДС.НДС18;
НовыйСпрV8.Комментарий = СправV7.Комментарий;

//Сообщить("услуга-"+СправV7.ВидНоменклатуры.ТипНоменклатуры.Идентификатор()+"-услуга");
НовыйСпрV8.Услуга = ?(СправV7.ВидНоменклатуры.ТипНоменклатуры.Идентификатор()="Услуга",Истина,Ложь);
//НовыйСпрV8.НоменклатурнаяГруппа = СправV7;
//НовыйСпрV8.СтранаПроисхождения = СправV7.СтранаПроисхождения;
//НовыйСпрV8.НомерГТД = СправV7.ГТД; //пустые
//НовыйСпрV8.СтатьяЗатрат = СправV7.;
//НовыйСпрV8.ОсновнаяСпецификацияНоменклатуры = СправV7.;
//НовыйСпрV8.Производитель = СправV7.;
//НовыйСпрV8.Импортер = СправV7.;
НовыйСпрV8.Записать();

КонецЕсли;
Если СправV7.ПометкаУдаления() = 1 Тогда
НовыйСпрV8.ПометкаУдаления = Истина;
НовыйСпрV8.Записать();
КонецЕсли;


КонецЦикла;
68. Андрей К. (Abbra) 30.12.13 00:24
выполнять несколько раз пока не пропадут сообщения "код не найденного родителя..."
69. Андрей К. (Abbra) 30.12.13 00:29
Если возникает сообщение "ТРЕВОГА..." то надо было перенумеровать справочник в 7.7
70. Андрей К. (Abbra) 30.12.13 03:34
вот еще загрузка материалов в номенклатуру
тут периодичность кодов в пределах подчинения
и ставки ндс разные - теперь переносятся


СправV8 = Справочники.Номенклатура;
СправV7 = БазаОле.CreateObject("Справочник.Материалы");
СтавкаНДСV7 = БазаОле.CreateObject("Справочник.СтавкиНДС");
СправV7.ВыбратьЭлементы();
Пока СправV7.ПолучитьЭлемент() = 1 Цикл
ОбработкаПрерыванияПользователя();
Если СправV7.ПометкаУдаления() = 1 Тогда
// Продолжить;
КонецЕсли;

ПолныйКод = СправV7.полныйкод();
// Сообщить("ПолныйКод "+ПолныйКод);
Р = "/";
Код = "М";
ур = 2;
Пока Найти(Полныйкод,Р) > 0 цикл
поз = Найти(Полныйкод,Р);
Код = Код + стПривестиНомерКДлине(Лев(ПолныйКод,поз-1),3-ур);
ур = 0;
ПолныйКод = сред(ПолныйКод,поз+1);
КонецЦикла;
Код = Код + стПривестиНомерКДлине(ПолныйКод,3-ур);
длинакода = СтрДлина(код);
Для сч = длинакода+1 по 11 цикл
Код = Код + "0";
КонецЦикла;
//Сообщить("Код "+код);

//Код = "М"+стПривестиНомерКДлине(СправV7.Код, 10);
НовыйСпрV8 = СправV8.НайтиПоКоду(Код);

если СправV7.уровень() = 1 тогда
иначе
ПолныйКод = СправV7.родитель.полныйкод();
//Сообщить("ПолныйКодРодителя "+ПолныйКод);
Р = "/";
КодРодителя = "М";
ур = 2;
Пока Найти(Полныйкод,Р) > 0 цикл
поз = Найти(Полныйкод,Р);
КодРодителя = КодРодителя + стПривестиНомерКДлине(Лев(ПолныйКод,поз-1),3-ур);
ур = 0;
ПолныйКод = сред(ПолныйКод,поз+1);
КонецЦикла;
КодРодителя = КодРодителя + стПривестиНомерКДлине(ПолныйКод,3-ур);
длинакода = СтрДлина(КодРодителя);
Для сч = длинакода+1 по 11 цикл
КодРодителя = КодРодителя + "0";
КонецЦикла;
//Сообщить("КодРодителя "+КодРодителя);

//КодРодителя = "З"+стПривестиНомерКДлине(СправV7.Родитель.Код, 10);
РодительСпрV8 = СправV8.НайтиПоКоду(КодРодителя);

КонецЕсли;

//продолжить;


Если СправV7.ЭтоГруппа() Тогда
//Сообщить("Это группа");
Если НовыйСпрV8 = Неопределено ИЛИ НовыйСпрV8.Пустая() Тогда
НовыйСпрV8 = СправV8.СоздатьГруппу();
НовыйСпрV8.код = код;

Иначе
НовыйСпрV8 = НовыйСпрV8.ПолучитьОбъект();
Если НовыйСпрV8.Наименование <> СправV7.Наименование тогда
Сообщить("ТРЕВОГА ТРЕВОГА ВОЛК УНЕС ЗАЙЧАТ");
продолжить;
конецЕсли;
КонецЕсли;
НовыйСпрV8.Наименование = СправV7.Наименование;
//сообщить("1 уровень "+СправV7.уровень());
//сообщить("2 полный код "+СправV7.полныйкод());
если СправV7.уровень() = 1 тогда
НовыйСпрV8.Записать();
иначе
Если РодительСпрV8 = Неопределено ИЛИ РодительСпрV8.Пустая() Тогда
//Сообщить("код не найденного родителя "+кодродителя);
Сообщить("код не найденного родителя "+кодродителя+" код элемента"+НовыйСпрV8.код);
прервать;
//РодительСпрV8 = СправV8.СоздатьГруппу();
продолжить;
Иначе
НовыйСпрV8.Родитель = РодительСпрV8;
//Сообщить("Код родителя "+кодродителя);
//Сообщить("Нашли родителя "+РодительСпрV8);
НовыйСпрV8.Записать();

КонецЕсли;
КонецЕсли;
Иначе
//Сообщить("Это элемент");
Если НовыйСпрV8 = Неопределено ИЛИ НовыйСпрV8.Пустая() Тогда
НовыйСпрV8 = СправV8.СоздатьЭлемент();
НовыйСпрV8.код = код;
Иначе
НовыйСпрV8 = НовыйСпрV8.ПолучитьОбъект();
Если НовыйСпрV8.Наименование <> СправV7.Наименование тогда
Сообщить("ТРЕВОГА ТРЕВОГА ВОЛК УНЕС ЗАЙЧАТ");
продолжить;
конецЕсли;

КонецЕсли;
//Сообщить("в группе "+СправV7.родитель.код);
//Сообщить("Код родителя "+кодродителя);
если СправV7.уровень() = 1 тогда
НовыйСпрV8.Записать();
иначе
Если РодительСпрV8 = Неопределено ИЛИ РодительСпрV8.Пустая() Тогда
//РодительСпрV8 = СправV8.СоздатьГруппу();
Сообщить("код не найденного родителя "+кодродителя+" код элемента"+НовыйСпрV8.код);
продолжить;
Иначе
НовыйСпрV8.Родитель = РодительСпрV8;
//Сообщить("Код родителя "+кодродителя);
//Сообщить("Нашли родителя "+РодительСпрV8);
//НовыйСпрV8.Записать();

КонецЕсли;
КонецЕсли;


НовыйСпрV8.Наименование = СправV7.Наименование;
НовыйСпрV8.НаименованиеПолное = СправV7.ПолнНаименование;
НовыйСпрV8.Артикул = СправV7.Артикул;

НовыйСпрV8.ЕдиницаИзмерения = справочники.КлассификаторЕдиницИзмерения.НайтиПоКоду(СправV7.ЕдиницаИзмерения.Код);

найдСтНДС = СтавкаНДСV7.НайтиЭлемент(СправV7.СтавкаНДС.получить(Дата(2013,12,31)));
//сообщить("материал "+СправV7.наименование);
//сообщить("ставка "+СтавкаНДСV7.ставка);

Если БазаОле.ПустоеЗначение(СтавкаНДСV7)=СтавкаНДСV7 или неопределено = СтавкаНДСV7 или найдстндс = 0 Тогда
НовыйСпрV8.СтавкаНДС="";
//сообщить("поймал "+СправV7.наименование);
//сообщить("ставка "+найдСтНДС.ставка.идентификатор);
//Если БазаОле.ПустоеЗначение(СправV7.СтавкаНДС.Получить(БазаОле.ТекущаяДата())) <> 0 Тогда
ИначеЕсли СтавкаНДСV7.ставка = 18 Тогда НовыйСпрV8.СтавкаНДС = перечисления.СтавкиНДС.НДС18;
ИначеЕсли СтавкаНДСV7.ставка = 10 Тогда НовыйСпрV8.СтавкаНДС = перечисления.СтавкиНДС.НДС10;
ИначеЕсли СтавкаНДСV7.ставка = 0 Тогда НовыйСпрV8.СтавкаНДС = перечисления.СтавкиНДС.БЕЗНДС;
КонецЕсли;
//НовыйСпрV8.СтавкаНДС = перечисления.СтавкиНДС.НДС18;
НовыйСпрV8.Комментарий = СправV7.Комментарий;

//Сообщить("услуга-"+СправV7.ВидНоменклатуры.ТипНоменклатуры.Идентификатор()+"-услуга");
//НовыйСпрV8.Услуга = ?(СправV7.ВидНоменклатуры.ТипНоменклатуры.Идентификатор()="Услуга",Истина,Ложь);
//НовыйСпрV8.НоменклатурнаяГруппа = СправV7;
//НовыйСпрV8.СтранаПроисхождения = СправV7.СтранаПроисхождения;
//НовыйСпрV8.НомерГТД = СправV7.ГТД; //пустые
//НовыйСпрV8.СтатьяЗатрат = СправV7.;
//НовыйСпрV8.ОсновнаяСпецификацияНоменклатуры = СправV7.;
//НовыйСпрV8.Производитель = СправV7.;
//НовыйСпрV8.Импортер = СправV7.;
НовыйСпрV8.Записать();

КонецЕсли;
Если СправV7.ПометкаУдаления() = 1 Тогда
НовыйСпрV8.ПометкаУдаления = Истина;
НовыйСпрV8.Записать();
КонецЕсли;


КонецЦикла;
71. Андрей К. (Abbra) 30.12.13 05:22
контрагенты


СправV8 = Справочники.Контрагенты;
СправV7 = БазаОле.CreateObject("Справочник.Контрагенты");
СправV7.ВыбратьЭлементы();
Пока СправV7.ПолучитьЭлемент() = 1 Цикл
ОбработкаПрерыванияПользователя();
Если СправV7.ПометкаУдаления() = 1 Тогда
// Продолжить;
КонецЕсли;

Код = "З"+стПривестиНомерКДлине(СправV7.Код, 8);
НовыйСпрV8 = СправV8.НайтиПоКоду(Код);

если СправV7.уровень() = 1 тогда
иначе
КодРодителя = "З"+стПривестиНомерКДлине(СправV7.Родитель.Код, 8);
РодительСпрV8 = СправV8.НайтиПоКоду(КодРодителя);
КонецЕсли;

Если СправV7.ЭтоГруппа() Тогда
//Сообщить("Это группа");
Если НовыйСпрV8 = Неопределено ИЛИ НовыйСпрV8.Пустая() Тогда
НовыйСпрV8 = СправV8.СоздатьГруппу();
НовыйСпрV8.код = код;

Иначе
НовыйСпрV8 = НовыйСпрV8.ПолучитьОбъект();
Если НовыйСпрV8.Наименование <> СправV7.Наименование тогда
Сообщить("ТРЕВОГА ТРЕВОГА ВОЛК УНЕС ЗАЙЧАТ");
продолжить;
конецЕсли;
КонецЕсли;
НовыйСпрV8.Наименование = СправV7.Наименование;
//сообщить("1 уровень "+СправV7.уровень());
//сообщить("2 полный код "+СправV7.полныйкод());
если СправV7.уровень() = 1 тогда
НовыйСпрV8.Записать();
иначе
Если РодительСпрV8 = Неопределено ИЛИ РодительСпрV8.Пустая() Тогда
//Сообщить("код не найденного родителя "+кодродителя);
Сообщить("код не найденного родителя "+кодродителя+" код элемента"+НовыйСпрV8.код);
прервать;
//РодительСпрV8 = СправV8.СоздатьГруппу();
продолжить;
Иначе
НовыйСпрV8.Родитель = РодительСпрV8;
//Сообщить("Код родителя "+кодродителя);
//Сообщить("Нашли родителя "+РодительСпрV8);
НовыйСпрV8.Записать();

КонецЕсли;
КонецЕсли;
Иначе
//Сообщить("Это элемент");
Если НовыйСпрV8 = Неопределено ИЛИ НовыйСпрV8.Пустая() Тогда
НовыйСпрV8 = СправV8.СоздатьЭлемент();
НовыйСпрV8.код = код;
Иначе
НовыйСпрV8 = НовыйСпрV8.ПолучитьОбъект();
Если НовыйСпрV8.Наименование <> СправV7.Наименование тогда
Сообщить("ТРЕВОГА ТРЕВОГА ВОЛК УНЕС ЗАЙЧАТ");
продолжить;
конецЕсли;

КонецЕсли;
//Сообщить("в группе "+СправV7.родитель.код);
//Сообщить("Код родителя "+кодродителя);
если СправV7.уровень() = 1 тогда
НовыйСпрV8.Записать();
иначе
Если РодительСпрV8 = Неопределено ИЛИ РодительСпрV8.Пустая() Тогда
//РодительСпрV8 = СправV8.СоздатьГруппу();
Сообщить("код не найденного родителя "+кодродителя+" код элемента"+НовыйСпрV8.код);
продолжить;
Иначе
НовыйСпрV8.Родитель = РодительСпрV8;
//Сообщить("Код родителя "+кодродителя);
//Сообщить("Нашли родителя "+РодительСпрV8);
//НовыйСпрV8.Записать();

КонецЕсли;
КонецЕсли;


НовыйСпрV8.Наименование = СправV7.Наименование;
НовыйСпрV8.НаименованиеПолное = СправV7.ПолнНаименование;
//НовыйСпрV8.ОбособленноеПодразделение = СправV7.;
НовыйСпрV8.ЮридическоеФизическоеЛицо = ?(СправV7.ВидКонтрагента.Идентификатор() = "Организация",перечисления.юридическоефизическоелицо.ЮридическоеЛицо,перечисления.юридическоефизическоелицо.ФизическоеЛицо);
//НовыйСпрV8.ГоловнойКонтрагент = СправV7.;
Инн = сокрлп(СправV7.ИНН);
Если стрДлина(Инн) = 12 или стрДлина(Инн) = 13 тогда
НовыйСпрV8.ЮридическоеФизическоеЛицо = перечисления.юридическоефизическоелицо.ФизическоеЛицо;
НовыйСпрV8.ИНН = лев(ИНН,12);
Иначе
НовыйСпрV8.ИНН = лев(ИНН,10);
НовыйСпрV8.КПП = сред(инн,12);
КонецЕсли;

НовыйСпрV8.КодПоОКПО = СправV7.ОКПО;
НовыйСпрV8.ДокументУдостоверяющийЛичность = "Паспорт "+СправV7.ДокументСерия+" "+СправV7.ДокументНомер+", выдан "+СправV7.ДокументДатаВыдачи+" "+СправV7.ДокументКемВыдан;
//НовыйСпрV8.ОсновнойБанковскийСчет = СправV7.;
//НовыйСпрV8.ОсновнойДоговорКонтрагента = СправV7.;
//НовыйСпрV8.ОсновноеКонтактноеЛицо = СправV7.;
НовыйСпрV8.Комментарий = ""+СправV7.ИНН+" "+СправV7.Комментарий;
//НовыйСпрV8.ДополнительнаяИнформация = СправV7.;
//НовыйСпрV8.УдалитьЮрФизЛицо = СправV7.;
ки = НовыйСпрV8.КонтактнаяИнформация;
ки.очистить();
ски = ки.добавить();
ски.тип = перечисления.ТипыКонтактнойИнформации.Телефон;
ски.вид = справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
ски.представление = СправV7.Телефоны;
ски = ки.добавить();
ски.тип = перечисления.ТипыКонтактнойИнформации.Адрес;
ски.вид = справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
ски.представление = СправV7.ЮридическийАдрес;
ски = ки.добавить();
ски.тип = перечисления.ТипыКонтактнойИнформации.Адрес;
ски.вид = справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента;
ски.представление = СправV7.ПочтовыйАдрес;
ки.свернуть("тип,вид,представление");

//ДанныеШапки.Вставить("АдресПокупателя", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПокупателе, "ЮридическийАдрес,"));
//СведенияОПокупателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Реквизиты.Покупатель, ВыборкаСФ.Дата);

НовыйСпрV8.Записать();
КонецЕсли;


Если СправV7.ПометкаУдаления() = 1 Тогда
НовыйСпрV8.ПометкаУдаления = Истина;
НовыйСпрV8.Записать();
КонецЕсли;

КонецЦикла;
72. Piter Antares (piterantares) 05.03.14 03:06
Тогда уж создай файлы под основные справочники и документы =)
Спасибо!
73. Vadim Петров (Vadim75) 22.10.14 16:21
Еще не скачивал обработку, предварительно хотелось бы узнать, как здесь реализована создание иерархической структуры для нового элемента в справочнике (контрагенты или номенклатура)? Спасибо.
74. Vadim Петров (Vadim75) 22.10.14 16:47
Подскажите, пожалуйста, как открыть обработку в 1с 8.3?
75. Илья Васильев (swimdog) 22.10.14 17:37
76. Илья Васильев (swimdog) 22.10.14 17:38
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа