Всем доброго дня. Суть проблемы. В бухгалтерии стоит 1с8 . Нужно дописать модуль, который будет дергать несколько справочников и документов из 1с, бухгалтерии. Главный бухгалтер залезть к ним и дописать свой модуль не дает. Написал свое, отдельно. Но как из своей конфы пользоваться справочниками и документами чужой конфы ?
В данной статье рассматривается способ программного формирования HTML документа, содержащего ссылки на объекты базы данных 1С, такие как справочники, документы и т.д. Показан пример построения обработчика события OnClick ПоляHTMLДокумента, для обработки клика на html-ссылке.
Предисловие
Однажды, дописывая обработку, создающую и модифицирующую, не суть важно какие документы, я подумал, что неплохо было бы вывести для пользователя некое резюме:
“Создан документ такой-то”
“Изменен документ такой-то” и т.д.
От обычного, в таких случаях, вывода информации в окно сообщений я сразу отказался, так как не удобно это, сначала читать в окне сообщений “Создан документ … ” а потом запоминать его номер, открывать соответствующий журнал (или форму списка) и искать там этот документ. А если документов много и пользователь хочет посмотреть все документы?(или выборочно) Насколько это неудобно я убедился при отладке обработки …
То, что в форме есть элемент управления именуемый ПолеHTMLДокумента я конечно знал, но вот представилась возможность познакомиться с ним поближе. Было решено реестр обработанных документов выводить в виде html документа содержащего ссылки на эти самые документы, а по клику на ссылке открывать форму соответствующего документа. Здесь мне многие могут возразить: “А почему бы для этих целей не использовать обычный макет, выводимый в табличный документ, а для открытия документов использовать расшифровку? И чем Ваш способ лучше?” Отвечаю: Конечно можно использовать, и мой способ ничем не лучше. Он просто другой. Ведь у хорошего программиста для решения одной задачи должно быть в арсенале несколько инструментов.
Итак, перейдем от слов к делу, в рамках данной статьи рассмотрим следующую задачу: Сформировать html-документ, содержащий ссылки на элементы справочника номенклатура, по клику требуется открывать форму соответствующего элемента. Создаем новый отчет, его форму, на форме размещаем элемент управления ПолеHTMLДокумента.
Текст модуля формы:
Ну вот html мы сформировали, теперь чтобы ссылки “ожили” надо написать обработчик события OnClick элемента управления ПолеHTMLДокумента.
Всё можно пробовать!
Заключение
Обратите внимание что ссылку я формировал следующим образом:
<ИмяОбъектаМетаданных>-<УникальныйИдентификатор> это сделано для того, чтобы в обработчике onclick можно было определить к какому объекту метаданных относится данный УникальныйИдентификатор, потому что имея ТОЛЬКО УникальныйИдентификатор невозможно определить к какому объекту метаданных он относиться. Точнее возможно, но уж слишком долго и неудобно – путем перебора всех метаданных в цикле, для каждого объекта метаданных выполнять попытку <ОбъектМетаданных>.ПолучитьСсылку(Новый УникальныйИдентификатор(НашУникальныйИдентификатор))
Хотя в нашем примере только один справочник, и указывать его вид было необязательно, и так понятно что это УникальныйИдентификатор элемента справочника Номенклатура, но вдруг Вам потребуется работать с несколькими справочниками, вот тут то мой способ задания ссылки Вам и пригодится. Скачивать файлы может только зарегистрированный пользователь!
P.S. Платформа 8.2 имеет встроенный механизм работы со ссылками на объекты БД и данная задача наверняка упростится, но это уже другая тема.
Источник: obrabotki.com
Программное формирование HTML-документа, содержащего ссылки на объекты базы данных 1С
В данной статье рассматривается способ программного формирования HTML документа, содержащего ссылки на объекты базы данных 1С, такие как справочники, документы и т.д. Показан пример построения обработчика события OnClick ПоляHTMLДокумента, для обработки клика на html-ссылке.
Предисловие
Однажды, дописывая обработку, создающую и модифицирующую, не суть важно какие документы, я подумал, что неплохо было бы вывести для пользователя некое резюме:
“Создан документ такой-то”
“Изменен документ такой-то” и т.д.
От обычного, в таких случаях, вывода информации в окно сообщений я сразу отказался, так как не удобно это, сначала читать в окне сообщений “Создан документ … ” а потом запоминать его номер, открывать соответствующий журнал (или форму списка) и искать там этот документ. А если документов много и пользователь хочет посмотреть все документы?(или выборочно) Насколько это неудобно я убедился при отладке обработки …
То, что в форме есть элемент управления именуемый ПолеHTMLДокумента я конечно знал, но вот представилась возможность познакомиться с ним поближе. Было решено реестр обработанных документов выводить в виде html документа содержащего ссылки на эти самые документы, а по клику на ссылке открывать форму соответствующего документа. Здесь мне многие могут возразить: “А почему бы для этих целей не использовать обычный макет, выводимый в табличный документ, а для открытия документов использовать расшифровку? И чем Ваш способ лучше?” Отвечаю: Конечно можно использовать, и мой способ ничем не лучше. Он просто другой. Ведь у хорошего программиста для решения одной задачи должно быть в арсенале несколько инструментов.
Итак, перейдем от слов к делу, в рамках данной статьи рассмотрим следующую задачу: Сформировать html-документ, содержащий ссылки на элементы справочника номенклатура, по клику требуется открывать форму соответствующего элемента. Создаем новый отчет, его форму, на форме размещаем элемент управления ПолеHTMLДокумента.
Ну вот html мы сформировали, теперь чтобы ссылки “ожили” надо написать обработчик события OnClick элемента управления ПолеHTMLДокумента.
Заключение
Обратите внимание что ссылку я формировал следующим образом:
<ИмяОбъектаМетаданных>-<УникальныйИдентификатор> это сделано для того, чтобы в обработчике onclick можно было определить к какому объекту метаданных относится данный УникальныйИдентификатор, потому что имея ТОЛЬКО УникальныйИдентификатор невозможно определить к какому объекту метаданных он относиться. Точнее возможно, но уж слишком долго и неудобно – путем перебора всех метаданных в цикле, для каждого объекта метаданных выполнять попытку <ОбъектМетаданных>.ПолучитьСсылку(Новый УникальныйИдентификатор(НашУникальныйИдентификатор))
Хотя в нашем примере только один справочник, и указывать его вид было необязательно, и так понятно что это УникальныйИдентификатор элемента справочника Номенклатура, но вдруг Вам потребуется работать с несколькими справочниками, вот тут то мой способ задания ссылки Вам и пригодится.
P.S. Платформа 8.2 имеет встроенный механизм работы со ссылками на объекты БД и данная задача наверняка упростится, но это уже другая тема. Источник
1. Заходим в УТ - Сервис — Обмена данными с 1С Бухгалтерия 8 — Настройка обмена.
В данном случае файловый вариант. Прописываем путь к базе БП.
2. Один из самых важных параметров Перенос себестоимости списания. Для того, чтобы себестоимость формировалась по данным конфигурации БП выбираем Не переносить, т.к. в конфигурацию БП могут быть введены док которые отсутствуют в УТ. Если выбрать Переносить, то колонки Документ оприходования и Сумма списания в док Реализация будут заполнены данными из УТ.
3. Далее укажем дату начала обмена и префикс документов. Префикс Базы будет прибавляться к Префиксу организации, так что количество символов для нумерации уменьшится. Лучше задавать Префикс базы и Префикс организации из одного символа.
4. Не будем делать полную синхронизацию (не известно сколько времени это займет, да и зачем), а выберем вариант в Фоновом режиме. По кнопке Дополнительно можно изменить количество объектов принудительной синхронизации. Оставим без изменения = 500.
5. По кнопке Готово произойдет создание элемента справочника НастройкаОбменаДанными и элменета Плана обмена. Будет предложено произвести обмен. Жмем НЕТ. На рисунке показан элемент справочника НастройкаОбменаДанными и ссылка на узел, элемент Плана обмена.
6. Теперь, если закрыть все окна, то узел обмена можно зайти Сервис - Обмен данными с 1С Бухгалтерия 8 — Выполнить обмен данными. Изменим правила. Поставим дату обмена с 01.06.2007 и обменяемся малым количеством документов.
7. Пока мы не собираемся включать автообмен и закладки Автообмен и Доп настройки автообмена для нас не важны. Перейдем на закладку Дополнительно. По умолчанию Элементов в транзакции = 0. т.е. при обмене будет записываться каждый элемент по отдельности. Это не оптимально. Вспоминаем, что при Проведении по партиям 1С автоматически предлагает 1000. Выбирайте значение от 200 до 1000.
8. Поскольку это наш первый обмен никакие изменения в базе НЕ зарегистрированы и если мы сразу сделаем обмен, то в него попадут только справочники и регистры сведений. Есть два способа регистрации изменений для выгрузки:
- перепроведение документов,
- обработкой Регистрация изменений для обмена.
9. Поскольку перепровести документы несложно рассмотрим работу с обработкой. Заходим в обработку (как показано на рисунке для релиза 10.3.5 или для релизе 10.3.6 в обработку через интерфейс не зайти, только Операции – Обработка – Регистрация изменений – Обмен данными управление торговлей бухгалтерия) и нажимаем кнопку «Зарегистрировать все – Для всех элементов». Несмотря на то, что изменения зарегистрированы для всех объектов и в табличной части обработки это видно, обмен произойдет с ограничением по дате в Плане обмена, т.е. с 01.06.07.
10. Галочка «Отображать объекты, для кот зарег изм» означает, что под всеми типами объектов обмена (Справочниками, Регистрами, Документами) мы получим ВСЕ ссылки на объекты обмена (например, док Реализация). Если нам необходимо посмотреть какие объекты обмениваются, то можно встав на тип объекта, например, РеализацияТоваровУслуг, нажать кнопку «Показать зарегистрированные изменения данного типа». Даже для демо база показ всех реализаций (их очень мало) подвисает на 1 минуту. Если нужно удалить объект из обмена, в данном случае документ Реализации, то нажимаем Ctrl + C.
11. В нашем случае уже все изменения зарегистрированы. Информация для ознакомления: есть возможность по кнопке «Добавить документы для обмена». Например, Расходный кассовый ордер. При этом программа предложит зарегистрировать все объекты данного типа (т.е. все Расходные кассовые ордера). Ответив «НЕТ» получим возможность подобрать документы вручную.
12. И еще маленький нюанс. Кнопка «Изменить номера» сообщений изменяет порядковый номер обмена. Это нужно если мы восстановили базу из архива и, соответственно, нумерация сообщений там будет старая.
13. Нажимаем «Выполнить обмен». При этом в базе БП можно работать. Все документы загружаются не проведенными.
14. После первого обмена, если зайти в Регистрацию изменений для обмена то можно увидеть, что все наши объекты так и остались зарегистрированными для обмена. Се ля 1С. Только после проведения второго обмена объекты уйдут из регистрации (т.е. база УТ получит подтверждение о том, что объекты успешно загружены в БП). Так, что нажимаем Выполнить обмен еще раз.
15. Теперь в базе БП у нас появились не проведенные документы. Заходим в БП Сервис – Проведение документов – выбираем “Проведенные и непроведенные” и период. Здесь внимательно. Надо предупредить пользователей, что сделать документ не проведенным не достаточно. Не нужные документы необходимо, помечать на удаление, а еще лучше регулярно удалять.
16. Не забывайте, если вы удалите «Узел обмена», то в базе останется «План обмена» и привязанный к нему регистр сведений «Соответствие объектов для обмена» останется целым. Регистр придется удалять как-нибудь самим. Такова воля создателя обмена.