gifts2017

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

Опубликовал Алексей Плутенко (Noy) в раздел Обработки - Обработка справочников

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

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

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

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

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

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

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

См. также

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

Комментарии

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

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

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

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

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

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

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

Сорри, если эта недоработка принесла кому-нибудь серьезные неудобства.
86. Михаил Хаов (мх) 24.12.09 12:58
(85) Спасибо.
У меня, правда, номер строки немного другой - но не далеко от указанного.
Теперь, кажись, порядок.
87. Андрей Боярщенок (bandy) 16.03.10 14:37
Отличная обработка, честно отработала. Спасибо огромное. Плюсую с удовольствием.
88. Alla Lapyreva (2stars) 25.11.10 16:50
Я сама не программист, но пытаюсь облегчить себе работу при помощи вашей обрабраки:-) Может подскажите выбивается ошибка при попытке загрузки, как ее исправить.......
Если (ТекРеквизит.Тип="Строка") или (ТекРеквизит.Тип="Число") или (ТекРеквизит.Тип="Дата") или (ТекРеквизит.Тип="Перечисление") или (ТекРеквизит.Тип="Справочник") тогда
{C:\DOCUMENTS AND SETTINGS\1С ПРИМОЧКИ\REF2XLS_V2_OPEN.ERT(534)}:

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

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

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