К списку форумов К списку вопросов
Как в 1С 8 загрузить из файла предопределенные элементы для справочника
sarknn
22.09.2004 - 10:23
В 8-ке появилась такая возможность создавать в конфигурации предопределенные элементы справочника а вот если их много и они есть в виде например текстового файла можно их как нить загрузить в справочник ???
Дяпти
1 - 22.09.2004 - 10:27
Загружаешь как непредопределенные потом меняешь пару столбцов в таблице, если SQL.
Дяпти
2 - 22.09.2004 - 10:31
+(1) Забудь, не взлетает.
sarknn
3 - 22.09.2004 - 10:35
И у меня не взлетела :)))
А как же быть механизм переопределенных реквизитов удобный но вкалачивать их большое количество руками в конфигураторе это пытка для программиста ...
Дяпти
4 - 22.09.2004 - 10:37
Дело в том, что предопределенные элементы находят свое отражение прям в конфе, а не только в таблицах. Если умеешь ковырять конфу не через конфигуратор - тогда возможно, иначе нет.
Dymor
5 - 22.09.2004 - 10:39
Предопределенные элементы справочника нужны только если надо из языка по имени на них ссылаться. Мне сложно представить ситуацию, когда нужно много таких элементов. Можно примерчик?
Дяпти
6 - 22.09.2004 - 10:43
(5) Возможно, что количество и состав элементов должны быть заранее определены. В v7 такое решалось путем обработки, заполняющей справочники в новой конфе при первом запуске. В v8 целесообразнее решать через предопределенные элементы.
sarknn
7 - 22.09.2004 - 10:48
Полностью согласен с Дяпти именно для этих целей есть всевозможные Классификаторы, Реестры норм, Отраслевые справочники и т.д. переопределенные элементы являються частью конфигурации и было бы очень удобно их загружать в нее как переопределенные элементы ... IMHO
Dymor
8 - 22.09.2004 - 10:55
(6,7) Не согласен. Собственно, программисты 1С тоже не согласны :))) - посмотрите любую типовую. Предопределенные элемены нужны, повторюсь, в единственном случае - если в конфигурации идет обращение к ним из встроенного языка. Можно разрешить пользователю менять любые свойства элемента, в т.ч. код и наименование,(хотя можно и запретить конечно) и при этом элемент для конфигурации будет однозначно определяться именем.
Дяпти
9 - 22.09.2004 - 11:00
(8) Смотрю УПП. Виды субконто - предопределенные элементы :-)))
Dymor
10 - 22.09.2004 - 11:07
(9) Ну так я про что!
Как идет обращение к видам субконто?
Всегда что-то типа: "ПланыВидовХарактеристик.ВидыСубконто.Контрагенты"
То есть по имени.
Дяпти
11 - 22.09.2004 - 11:10
(10) А также поискал по Ctrl+Shift+F в конфе слово "РапортРуководителю_ДенежныеСредства_ПриходПоСтатьям", которое является предопределенным элементом плана видов характеристик "ПраваПользователей" - ни фига не нашел :-))) А это как понимать?
sarknn
12 - 22.09.2004 - 11:22
Дяпти ну че ты убеждаешь Dymora??? Бывают ситуации когда это необходимо и оправдано это очевидно например когда происходят незначительные изменения в отраслевых классификаторах гораздо проще их учесть при обновлении конфигурации чем файлом новой редакции + обработкой и т.д.
Если ему нет в этом смысла можно рогом упираться ... оправдывать 1С вопрос ведь простой МОЖНО или НЕТ и нефига тратить время на разбор полетов НАДО НЕНАДО ... IMHO ...
Дяпти
13 - 22.09.2004 - 11:29
(12) Гыгы, да ясен пень :-))) И ваще мое глубокое имхо: каждый дp0чит как он хОчет.
sarknn
14 - 22.09.2004 - 11:33
Пока что вывод: НЕТ, поскольку в конфигураторе ни че подобного нет, а программно признак "Предопределенный" - только по чтению ...
Vi0let
15 - 22.09.2004 - 12:19
пишеш прогу используя Win API (ну или скриптами) для эмуляции нажатий на клавиатуру
открываешь окно заполнения предопроеделенных элементов
ну а дальше - насколько фантазии хватит
 
ценность этого совета зависит, канешна, от пропорционального соотношения выделки и овчинки
gg
16 - 22.09.2004 - 12:47
(13) прога ненужна достаточно vbscript + AppActivate + SendKeys или даже 1с + AppActivate + SendKeys
sarknn
17 - 22.09.2004 - 12:52
gg ... С этого места поподробнее :)))
gg
18 - 22.09.2004 - 13:45
например открываем конфигуратор 8.0 открываем окно с вводом предопределенных элементов справочника. Создаем файл с расширением vbs пишем туда:
   Dim fso, MyFile
   set fso = CreateObject("Scripting.FileSystemObject")
   set WshShell = WScript.CreateObject("WScript.Shell")
   WshShell.AppActivate "1380" <-------- здесь PID процесса конфигуратора 8.0 можно в деспетчере задач посмотреть
   set MyFile = fso.OpenTextFile("c:\1.txt", 1)
   Do While MyFile.AtEndOfStream <> True
  r = MyFile.ReadLine
  WshShell.SendKeys("{INSERT}"+r+"{TAB}{TAB}"+r+"^~")
   Loop
   MyFile.Close
создаем файл c:\1.txt записываем туда что то вроде
item1
item2
item3
Выполняем vbs. Будут созданы предопределенные элементы с именами item1, item2, item3 и такими же наименованиями.
sarknn
19 - 22.09.2004 - 15:00
GG !!! Спасибушки все работает. Очень мне помог.
snc
20 - 22.09.2004 - 16:50
Лучше все-таки классификаторы хранить в базе а не в конфе потому, что:
1) У предопределённых - только имя и код, других реквизитов нету.
2) Если идет обновление конфы и в одном элементе изменилось наименование, а пользователь поменял наименование, то после обновления оно не изменится. Соответственно обновление классификаторов по конфе здесь не прокатит, нужно писать обработки.
3) А если запрещать редактирование - это хлопотно, стандартных способов нет, и если ошибка какая, то надо выгонять всех из базы, или оставить права на редактирование админу, но опять же это все надо программировать.
Вывод - самый лучший способ - обработки. Например, есть обработка по загрузке справочников из Excel'я. Чем она хуже?

К списку вопросов на форуме 1C

>>