Правим справочники в Excel-е

Публикация № 16140

Обработки - Обработка справочников

313
Вроде бы ничего нового, но все же...
Очень удобно выгрузить справочник в Excel и там его уже "подкрутить" как хочешь, используя формулы, фильтры и тп.... или просто отдать неопытному пользователю для исправления названий, реквизитов и других реквизитов, при этом не переживая, что пользователь что-нибудь серьезно испортит...
Версия 2! Ввод новых элементов, редактируем даты, перечисления, справочники
05.02.09 - Теперь работает на подчиненных справочниках
29.03.12 - Добавлена возможность подбора элементов с помощью UCHOICE.ERT

Позволяет редактировать текстовые и числовые значения. Периодические значения читаются/записываются только на текущую дату. Есть простые фильтры (все/только неудаленные, по списку). Работает в любой конфигурации 7.7. Без ВК - только 1С и Ексель.

Тестировалась с 11-ой версией Excel-я (Office 2003), с другими версиями может "немного глючить" - сам не проверял.
Весь код, касающийся работы с Екселем подробно прокомментирован :) - может служить неплохим пособием для изучения методов работы с Excel по OLE.

P.S. На больших справочниках скорость конечно не очень...

Версия 2
Новое во второй версии:
Появилась возможность добавления новых элементов - просто дописываем снизу таблицы.
Появилась возможность редактировать Перечисления с контролем правильности заполнения.
Появилась возможность редактировать реквизиты типа "Справочник", но с небольшими ограничениями: Справочник должен содержать только уникальные наименования элементов, не должен быть подчиненным и общее кол-во элементов не должно превышать 255 штук!
Появилась возможность проверки данных без их записи в базу данных.
Оптимизирована загрузка из Екселя - чем меньше измененных элементов - тем быстрее загружается.

313

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

Наименование Файл Версия Размер
Версия 2!
.ert 52,00Kb
29.03.12
2045
.ert 52,00Kb 2045 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. ediks 327 29.07.08 13:08 Сейчас в теме
При установленной галке "Без групп" вылетает ошибка:
Если Запрос.Выполнить(ПостроитьТекстЗапроса())=0 тогда
{J:\1C\GMS\MSFO\REF2XLS.ERT(168)}: Группировка СсылкаНаЭлементБез <<?>> групп;
Запрос[11] : Переменная 'СсылкаНаЭлементБез' не опеределена
Ошибка при формировании запроса к справочнику.
3. Noy 1063 29.07.08 13:38 Сейчас в теме
(1) Таки опечатался.... Уже обновил.
(2) сенкс, а с реализацией есть серьезные недостатки?

тов.Сhe Burashka отдельное спасибо - всегда оперативно смотрит новые разработки и комментирует.
2. CheBurator 29.07.08 13:26 Сейчас в теме
4. mdzen 237 29.07.08 13:49 Сейчас в теме
5. europro 29.07.08 20:40 Сейчас в теме
6. tigrus 29.07.08 21:28 Сейчас в теме
Если код элемента справочника начинался с "нуля" (пример: 0000087), то после корректировки какого либо его реквизита код становистся "без нулей" (пример: 87)
Это НЕ ЕСТЬ ГУД.....
7. CheBurator 29.07.08 23:43 Сейчас в теме
(6) при выгрузке по оле надо выгружать не просто код типа спр.Код, а навроде
"'"+спр.код
10. Noy 1063 30.07.08 11:16 Сейчас в теме
(6) Сенкс за выловленный баг. Уже исправил - если тип кода текстовый - то формат ячеек ставится текстовый.
(7) лучше жестко устанавливать формат ячеек - надежнее.
(8) Подчиненные справочники этой обработкой не обрабатываются
(9) Попробуй свежую версию - возможно у тебя код текстовый (см. пост 6), если не получится - скинь мне excel файл - попробую посмотреть. fn()inbox.ru
8. v_clim 31 30.07.08 00:39 Сейчас в теме
А как с подчиненными справочниками быть?
9. sll 30.07.08 10:37 Сейчас в теме
а у меня вообще отказывается работать... "код не уникальный", и до свидания... это при том, что коды вообще никто не трогал :-\
11. Снп_1 30.07.08 11:48 Сейчас в теме
Очень не плохая обработка и я думаю будет очеь востребованной многими. Плюсую редко, но в данном случае явно "+"
12. ded00786 346 30.07.08 15:15 Сейчас в теме
Что ещё, кроме плюса, я могу добавить к сказанному?..
LAng; sotransa; +2 Ответить
13. Noy 1063 30.07.08 15:31 Сейчас в теме
(12) Спасибо, этого достаточно :)
14. malichenko.a 30.07.08 22:53 Сейчас в теме
Меня интересует, а есть такая же, только с загрузкой новых данных. Ато часто приходится корректировать данные с добавлением новых....
15. Noy 1063 31.07.08 09:14 Сейчас в теме
(14) Полно! как на этом портале (например http://infostart.ru/projects/?rubric=76) так и в инете по поиску
16. vsevolod 03.08.08 22:06 Сейчас в теме
Спасибо, хорошая обработка, вот только поставила в тупик: при выгрузке справочника номенклатуры с атрибутами наименование и штрихкод выгружает все наименование и часть штрихкодов (в справочнике 1C все штрихкода присвоены все EAN13) почему то некоторые штрихкода не выгружает. Что может быть?
17. Noy 1063 04.08.08 08:56 Сейчас в теме
(16) Скорее всего часть штрих-кодов находится в подчиненном справочнике (единицы измерения)
19. vsevolod 04.08.08 10:33 Сейчас в теме
В продложение (16) : Нет, штрихкодов в подчиненных справочниках нет, все они одинаково созданы в карточке товара номенклатуры при первом поступлении на склад.
18. Oleg_nsk 04.08.08 09:19 Сейчас в теме
первый раз в жизни плюсанул! а ускорить обработачку нельзя?
20. Noy 1063 04.08.08 10:44 Сейчас в теме
(18) Основной тормоз - получение/запись данных через ОЛЕ в Ексель. На подходе вторая версия, с большим функционалом, большей скорость загрузки (загружаются только измененные элементы, а не все подряд), но меньшая скорость выгрузки.
Ускорить можно, если выгружать/читать через АДО или используя скрипт+массив, ну или ВК (Йоксель например) - но слишком много переписывать.
За плюс - спасибо!
(19) Попробуй с диска ИТС универсальный отчет печати справочников - там сформируй отчет по своему справочнику и сравни с полученным из этой обработки. Я думаю что они будут идентичны. Просто мысль, что программа пропускает некоторые значения по своей прихоти - абсурдна ;)
21. Noy 1063 04.08.08 18:38 Сейчас в теме
Обновил. Если что - сильно не пинайте! Но критика нужна!
22. GluckMaster 13.08.08 08:03 Сейчас в теме
Извините за вопрос чайника... а как загрузить обработку в конфигурацию... требует код?
23. Noy 1063 13.08.08 09:41 Сейчас в теме
(22) Вы можете подключить в конфигурацию первую версию обработки. Вторую версию можете добавить в дополнительные возможности.
24. ruzelka 51 13.08.08 10:59 Сейчас в теме
25. Noy 1063 13.08.08 17:04 Сейчас в теме
(24) Спасибо. А то вон некоторые (22) уже в конфигурацию внедряют, а плюс поставить им лень!
26. kiselev 15.08.08 07:36 Сейчас в теме
Очень полезная вещь!
Спасибо за идею!
Обязательно буду внедрять!
+1
27. senya_i 28.08.08 15:46 Сейчас в теме
Обработочка Просто СУПЕР!!!
Очень сильно помогла!!
28. Andress 02.10.08 08:35 Сейчас в теме
29. strah4 02.10.08 16:08 Сейчас в теме
Мегаидея. Но сколькож труда вложено 5+
30. Денис77 04.10.08 14:46 Сейчас в теме
31. Abadonna 3824 04.10.08 15:58 Сейчас в теме
(30) Зачем Денису7.7 надо для 8.1? ;)
Денис77; +1 Ответить
32. Денис77 05.10.08 08:32 Сейчас в теме
Мне для версии 8.1 надо. Я работаю в 8.1.
33. Noy 1063 05.10.08 14:05 Сейчас в теме
(32) К сожалению я работаю в 7.7, 8.1 видел тока на картинках :)
Но в принципе там ничего сложного - все ОЛЕ-команды в первой версии обработки прокомментированы в коде - можешь смотреть как пример и переписать на 8.1

(31) 77 - это не версия, а скорее всего год выпуска :)
So_Pretty; +1 Ответить
34. Nik_O 17.10.08 17:56 Сейчас в теме
Добрый день.
Хорошая обработка и коментариев много. Спасибо.
Есть вопрос. Как диаграммы в EXCEL добавлять из
1С? Очень буду рад если поможите, а то инфы по
этому вопросу найти не могу.
35. Noy 1063 17.10.08 20:06 Сейчас в теме
(34) Диаграммы добавляются через объект Charts. Проще всего в любой книге Excel запустить макрос на запись, построить простейшую диаграмму, остановить макрос, а затем его просмотреть - там все достаточно просто. Значение констант (типа xlColumnClustered) можно посмотреть через View - Object Browser в Редакторе Visual Basic, методы (например SetSourceData) просто в справке.

Удачи.
36. Burguin 28.11.08 20:40 Сейчас в теме
Если б я умел так программировать...
Ной Вы супер!
37. Душелов 3899 29.11.08 00:22 Сейчас в теме
(36) Если Вы не умеете программировать, то чего вы хотите? Есть пожелания - велкам в раздел "работе". оговариваем деньги и сроки, и нет проблем.
38. Burguin 29.11.08 16:30 Сейчас в теме
(37) =) ДЫк я учусь! и не понятно ваше "то чего вы хотите"?, я же на сказал что я вообще не умею... так что Вы, Дядько, ошиблись =)
39. Душелов 3899 29.11.08 16:47 Сейчас в теме
(38) Признаю, был не прав, как говорится, "не в то окно" отправил :)
40. Burguin 29.11.08 17:02 Сейчас в теме
(39) =) Опа... 1с-ный умор...
Прикольно! =) МОжешь в личку еще подобных фраз накидать ?? а я на курсах потом повыеживаюсь =)
41. oksiel 19.12.08 17:01 Сейчас в теме
Не работает выгрузка Перечисления. На строке "Ексель.Range(Область).Validation.Add(3,1,1,("="+ОбластьЗначений));" вылетает с ошибкой
В "закрытой" версии то же самое.
Перечисление было Булево Да/Нет
42. Noy 1063 19.12.08 17:13 Сейчас в теме
(41) Это Excel "выеживается" - попробуй на другом компьютере запустить.
Сам замечал тоже самое, причем как-то странно - сегодня есть, завтра нету...
природу глюка так и не понял.
43. oksiel 19.12.08 17:15 Сейчас в теме
+(41) Excel 2003. Ставит 2007-й не собираюсь, т.к. привык к этому.
И еще забыл, респект свой выразить.
Долго искал что-то подобное, т.к. необходимо бывает выверить данные раздав их исполнителям и после внести в базу. Думал (если не найду), самому писать.
Большое СПАСИБО.
44. Noy 1063 19.12.08 17:39 Сейчас в теме
(41) Спасибо, что опять поднял тему этого глюка - теперь на свежую голову нашел в чем дело.
Все зависит от стиля ссылок, который устанавливается в параметрах (R1C1 ил A1,B1 и тд).
Перезалил обновленную (и открытую) версию...
45. msadu 24.12.08 18:43 Сейчас в теме
Спасибо большое. Было бы супер если выгрузить всех справочников разом по листам Excel книги
46. Noy 1063 25.12.08 14:19 Сейчас в теме
(45) Это уже будет какой-то "грабер" информации из базы :)
Не представляю где и кому может такое понадобиться.
47. Euroset 30.12.08 23:52 Сейчас в теме
спасибо тебе умный человек!!! Очень поможет найчиться с экселём работать и еженедельные отчеты выгружать! Плюс тебе однозначно =)
48. cipis52 05.01.09 11:49 Сейчас в теме
очень миленькая обработка.Благодарю за остроумие Автора!
51. Noy 1063 05.01.09 16:17 Сейчас в теме
(49) Судя по всему мою обработку ты даже не смотрел.
senator-1980; +1 Ответить
53. Noy 1063 06.01.09 09:25 Сейчас в теме
(52) Просто именно так, как ты указал в (49) в моей обработке и реализовано - отдельная колонка для ЗначениеВСтроку(), а наименования используются как идентификатор только в перечислениях и справочниках типа "Валюта" для указания реквизитов справочника, который редактируется.
Правда в примечание пихнуть не догадался - хотя и не сильно надо...
55. Ashwood 03.02.09 10:58 Сейчас в теме
При попытке выгрузки справочника Контрагенты вылетает ошибка:
Если (нужныйСправочник.ОсновноеПредставление<>"ВВидеНаименования") тогда
{...\1CV77\REF2XLS_V2_OPEN.ERT(259)}: Поле агрегатного объекта не обнаружено (ОсновноеПредставление)
При выгрузке справочника Цены выгружаются цены без привязки к номенклатуре. Работать с ними нельзя. Я так понимаю, это происходит из-за того, что обработка не работает с подчиненными справочниками.
56. Noy 1063 03.02.09 11:23 Сейчас в теме
По первой ошибке - так сразу и не скажу - надо бы в отладчике покрутить (может там реквизит неопределенного вида).
Да, обработка не работает с подчиненными справочниками, хотя там подправить недолго...
57. niceejik 04.02.09 18:13 Сейчас в теме
при выгрузке номенклатуры не выгружается цена...
как сделать выгрузку с ценой ?
58. zaic 114 05.02.09 10:21 Сейчас в теме
57. не выгружается поскольку незачем, цены там правятся по другому.
59. niceejik 05.02.09 10:27 Сейчас в теме
а как выгрузить номенклатуру с ценой в эксель и обратно потом
60. Noy 1063 05.02.09 11:07 Сейчас в теме
На скорую руку добавил вывод Владельца - можете редактировать цены.
61. ignio 87 06.03.09 15:12 Сейчас в теме
62. KingS 13.03.09 01:00 Сейчас в теме
Уже давно сказал + за хорошее исплонение, но вот представился случай непосредственно попробовать. Скажу так: мне очень понравилось!!! обработка работает стабильно с разными базами! Есть конечно некоторые минусы, но их можно решить и ручками. Автор молодец!
63. Andzhej 22.03.09 04:27 Сейчас в теме
64. itiro 24.03.09 13:44 Сейчас в теме
отлично просто! плюс

автору - еще бы добавить возможность корректировки цен
65. andreyshell 10.04.09 20:25 Сейчас в теме
Блин! Чертовски хочется все это под 8.1 !!!
66. Душелов 3899 10.04.09 21:17 Сейчас в теме
(65) Берет код 7-ки и переписываете под 8-ку. Тем более автор прокомментировал всю работу с экзелем.
67. maximus-72 12.04.09 22:40 Сейчас в теме
Эта прога мне пригодится, я пользователь 1С 7,7,
но дилетант. Прогу скачал, а как ее запустить чтоб работала?
Сорри )))
68. Noy 1063 13.04.09 08:29 Сейчас в теме
(67) В 1С меню Файл - Открыть - выбираешь скачанный файл...
69. subski 29.04.09 06:08 Сейчас в теме
ЗАМЕЧАТЕЛЬНАЯ ВЕСЧЬ, автору респект +
70. YooMax 13.05.09 15:34 Сейчас в теме
71. 1981ink 20.05.09 18:15 Сейчас в теме
Супер мульон плюсов, кто нибудь что нить подобное для 8 ки видел
72. ninny 02.08.09 11:44 Сейчас в теме
Обработка очень хорошая. Дурацкий вопрос.Как с помощью нее загнать базовую цену, если остатка на складе еще нет (для прайса).
73. NushaN 10 14.08.09 13:22 Сейчас в теме
Почему-то часто не видит изменений, г-рит, что данные в файле и справочнике идентичны :(, хотя реквизит полностью перезаполняется.
74. romanovkv 08.09.09 15:53 Сейчас в теме
А можно её доработать чтоб на 8-ке работала?
75. euro24 18.09.09 11:50 Сейчас в теме
Такая же ерунда как у NushaN:
Почему-то часто не видит изменений, г-рит, что данные в файле и справочнике идентичны :(, хотя реквизит полностью перезаполняется.
76. Noy 1063 18.09.09 12:48 Сейчас в теме
(75) , (73) Сбросьте мне два Excel-файла - до изменений и после - я попробую разобраться в чем дело.
fn()inbox.ru
80. мх 16 23.12.09 21:02 Сейчас в теме
(76) Ну и как? Сбросили они вам? Разобрались?
Я тоже заметил: вносил изменения во все элементы - но в одном из них изменение не фиксировалось. Справочник подчиненный (если это имеет какое-нибудь значение)
81. Noy 1063 23.12.09 22:42 Сейчас в теме
(80) Нет, никто не откликнулся.
82. мх 16 24.12.09 08:36 Сейчас в теме
(81) Если снова столкнусь с таким эффектом - какие файлы вам выслать?
1. До изменений (только что выгруженные данные)
и
2. После изменений (если изменения не определяются).
83. Noy 1063 24.12.09 09:01 Сейчас в теме
(82) лучше оба. если не получится - то хотя бы 'после изменений'
84. мх 16 24.12.09 09:50 Сейчас в теме
(83) Файлы отправил на указанный адрес.
Почему-то вышли большие. Хотя всего по 15 строк, а письмецо получилось на 10 мб.
Почтовый ящик выдержит?
85. Noy 1063 24.12.09 12:06 Сейчас в теме
(84) Ящик выдержал ;)
теперь о проблемах этой обработки:
файлы получаются большие - потому что я использую предпоследние колонки и предпоследние строки для хранения служебной информации.
проблема из (80) - глюк в коде обработки - последний элемент не записывается (точнее не анализируется).

С целью ускорить сравнение реквизитов я использовал хитрую (как я тогда думал) конструкцию - в конец файла (предпоследние колонки) добавлял что-то типа контрольной суммы (простая функция СЦЕПИТЬ). В процессе загрузки обработка проверяет только равенство предпоследних колонок - если они равны - реквизиты элемента не проверяются.
А на практике такая конструкция привела к тому, что если в редактируемом файле поменять структуру (достаточно добавить/удалить колонку), то предпоследние колонки "съезжают" со своих мест и обработка начинает работать неправильно. (так скорее всего и произошло в (73),(75)) .

Исправить этот глюк можно просто:
закомментировать строку 573
Если ПолучитьЗначениеЯчейки(Ексель,х,254)=ПолучитьЗначениеЯчейки(Ексель,х,255) тогда Продолжить; КонецЕсли;

тогда загрузка будет более медленная, но будут сверятся все элементы.

Сорри, если эта недоработка принесла кому-нибудь серьезные неудобства.
86. мх 16 24.12.09 12:58 Сейчас в теме
(85) Спасибо.
У меня, правда, номер строки немного другой - но не далеко от указанного.
Теперь, кажись, порядок.
77. s_sid15 23.09.09 14:43 Сейчас в теме
Спасибо автору.
Одна проблема. При загрузке кидает товар мимо папок групп. В чем причина?
Пробовал и в 2003 и в 2007. Такая же история.
78. Noy 1063 23.09.09 14:52 Сейчас в теме
(77) Если вы про "новый" товар - то так и должно быть. Раскидывать дальше нужно ручками.
Обработка позиционируется как "редактор" а не "импорт" соответственно и функционал по импорту только базовый.
79. s_sid15 23.09.09 16:00 Сейчас в теме
(78) Спасибо.
Жаль, что не раскидывает "новый" - это было бы вообще супер.
Но даже в таком состоянии - это лучшее, что я нашел.
87. bandy 16.03.10 14:37 Сейчас в теме
Отличная обработка, честно отработала. Спасибо огромное. Плюсую с удовольствием.
88. 2stars 25.11.10 16:50 Сейчас в теме
Я сама не программист, но пытаюсь облегчить себе работу при помощи вашей обрабраки:-) Может подскажите выбивается ошибка при попытке загрузки, как ее исправить.......
Если (ТекРеквизит.Тип="Строка") или (ТекРеквизит.Тип="Число") или (ТекРеквизит.Тип="Дата") или (ТекРеквизит.Тип="Перечисление") или (ТекРеквизит.Тип="Справочник") тогда
{C:\DOCUMENTS AND SETTINGS\1С ПРИМОЧКИ\REF2XLS_V2_OPEN.ERT(534)}:

Буду очень признательна!:-)
89. 2stars 25.11.10 16:53 Сейчас в теме
и еще Поле агрегатного объекта не обнаружено (Тип)
90. 2stars 25.11.10 17:38 Сейчас в теме
91. 2stars 25.11.10 17:40 Сейчас в теме
сама разобралась Все НО...... спасибо!!!!! :oops:
93. alon 172 21.09.11 17:18 Сейчас в теме
Я знал, что такая обработка должна существовать, только найти не мог!
94. Noy 1063 21.09.11 20:05 Сейчас в теме
(93) пожалуйта.
приходите еще...
95. nnv30 22.09.11 08:12 Сейчас в теме
И у меня почему-то не видит изменение, тоже говорит, что данные в файле и справочнике идентичны , хотя реквизит полностью перезаполняется. Если разобрались с этой проблемой подскажите. Может быть потому что реквизит периодический?
96. Noy 1063 22.09.11 09:34 Сейчас в теме
(95) колонки добавлял или удалял...
смотри (85) - там описана такая ситуация
97. nnv30 22.09.11 13:02 Сейчас в теме
Я закоментировала эту строку, теперь не говорит что данные в файле и справочнике идентичны, но при загрузки не заменяет изменённый реквизит.
98. Noy 1063 22.09.11 13:25 Сейчас в теме
(97) Периодические реквизиты менются на ТекущаяДата().
Отчет о загрузке изменений в справочник показывает изменения? Тип значения реквизита какой?
99. nnv30 22.09.11 13:54 Сейчас в теме
нет не показывает, меняю счет затрат в основных средствах
100. Noy 1063 22.09.11 14:07 Сейчас в теме
(99)
Позволяет редактировать текстовые и числовые значения.
...
Появилась возможность редактировать Перечисления с контролем правильности заполнения.
Появилась возможность редактировать реквизиты типа "Справочник", но с небольшими ограничениями
....

Данная обработка не редактирует такие типы значений. Для более комфортной работы не используйте режим "Не защищать лист (не рекомендуется)".
В других режимах (с защитой листа) значения, которые обработка не обрабатывает, будут защищены от редактирования.
101. nurislam 23.12.11 19:41 Сейчас в теме
Нормальная и очень нужная штука
102. nll.jojo 20.01.12 15:17 Сейчас в теме
103. egoel 28.02.12 09:44 Сейчас в теме
Ух ты какая шикарная штука!
104. alon 172 12.03.12 10:17 Сейчас в теме
Если у справочника есть реквизит типа справочник неопределенного вида, то выдает ошибку

Если (нужныйСправочник.ОсновноеПредставление<>"ВВидеНаименования") тогда
{REF2XLS_V2_OPEN.ERT(270)}: Поле агрегатного объекта не обнаружено (ОсновноеПредставление)
Оставьте свое сообщение