powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / 1с Составление договора
12 сообщений из 12, страница 1 из 1
1с Составление договора
    #35407269
BHy4ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1с 7.7
Сразу говорю строго не судите, возможно вопрос очень глупый, но всеж "1с" запускаю всего второй раз :)
Надо составить договор с клиентами, где будут автоматически заполнянся поля с их данными (телефон, паспорт ...) и не только.
Договор составляется с шаблона. (doc)
Допустим в шаблоне написано:
Код: plaintext
1.
2.
3.
4.
Текст текст текст....
<Фирма>
<Пациент>
<ТелДом>

Выглядеть уже в готовом виде через 1с это будет примерно вот так:
Код: plaintext
1.
2.
3.
4.
Текст текст текст....
ОАО "Название фирмы"
Василий Васильевич
 123 - 456 
Допустим в конфигураторе у меня информация о пациенте хранится в "Справочники - Пациенты" (как я понял)
Допустим мне надо вывести в документе его имя я пишу в шаблоне: <Пациенты.Имя> Уже как только не пробовал "0".
Вопрос: как мне узнать название этих полей(<Фирма>, <Пациент> ....) ? Я так понимаю они находятся в режиме "Конфигирутора", но где именно их можно посмотреть так и не нашел.
...
Рейтинг: 0 / 0
1с Составление договора
    #35407318
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо пользоваться объектом Метаданные. Вот так выглядит обход реквизитов объекта (документа):
Код: plaintext
1.
2.
3.
4.
5.
Для каждого Реквизит Из СсылкаНаОбъект.Метаданные().Реквизиты Цикл
           Имя = Реквизит.Имя;
           Представление = Реквизит.Представление();
	   Значение = Строка(СсылкаНаОбъект[Реквизит.Имя]);
           Сообщить(Имя + " = " + Представление + " = " + """" + Значение + """");
КонецЦикла;
СсылкаНаОбъект - это ссылка на конкретный документ (не его описание в конфигураторе, а именно документ, созданный пользователем). Имя - имя реквизита, как оно задано в Конфигураторе. Представление - описание реквизита в Конфигураторе. Значение - значение конкретного реквизита в конкретном документе. Т.е. в процессе работы этого кода будут появляться сообщения вида:
Номер = Номер документа = "125"
Дата = Дата = "01.01.2008"
Контрагент = Контрагент = "Ромашка"
СуммаПоДокументу = Сумма по документу = "452.50"

Тоже самое можно сделать и со справочником.
...
Рейтинг: 0 / 0
1с Составление договора
    #35407416
BHy4ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я так понял, это надо прописывать в глобальном модуле ? А там как ? Без разници где я буду писать год (я имею ввиду позицию, в конце, середине).
...
Рейтинг: 0 / 0
1с Составление договора
    #35407440
BHy4ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть некоторые работающие поля т.е. при вводе в шаблоне: <СтрокаВрача1>, <Пациент> ... (методом тыка). Искал эти слова в "Глобальном модуле" ничего нету, что-то похожее на выше приведенный код тоже нету. Можно ли брать значения без написание подобного кода, ведь в предыдущих приведенных значениях он не требовался.
...
Рейтинг: 0 / 0
1с Составление договора
    #35407443
BHy4ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. если я вишу в шаблоне: <СтрокаВрача1>. То уже в сформированном документе он выдает мне нужное значение.
...
Рейтинг: 0 / 0
1с Составление договора
    #35407457
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, понятно. Видимо действительно "1С запускаю второй раз".

Код экспорта в Word можно писать где угодно. Просто надо подумать, как это лучше организовать. Можно оформить прямо в модуле конкретного документа, можно сделать отдельную обработку, но я бы посоветовал вынести всё в общий модуль и оформить все это хозяйство в виде функции, например: ВыгрузкаОбъектаВШаблонWord(СсылкаНаОбъект) Экспорт
Алгоритм функции такой:
Сначала создаем COM-объект Word.
Word = Новый COMОбъект("Word.Application");
Потом организуем цикл, который я уже описал. Внутри цикла организуем получение значений реквизитов конкретного документа и вызываем методы Word'a Find.Execute (см. справочник по VBA). Т.е. программа бежит по реквизитам документа, получает их значения и пытается найти соответствие имени реквизита имени параметра в шаблоне. Если находит, то происходит замена. Потом берется следующий реквизит и так далее. После завершения цикла записываем измененный шаблон через SaveAs(ИмяФайла) (cм справку по VBA).
Схематично примерно так. Главный плюс - так можно выводить любой документ, не заботясь о его структуре. Если нужны еще и табличные части, то придется попотеть еще.
...
Рейтинг: 0 / 0
1с Составление договора
    #35407464
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BHy4okЕсть некоторые работающие поля т.е. при вводе в шаблоне: <СтрокаВрача1>, <Пациент> ... (методом тыка). Искал эти слова в "Глобальном модуле" ничего нету, что-то похожее на выше приведенный код тоже нету. Можно ли брать значения без написание подобного кода, ведь в предыдущих приведенных значениях он не требовался. Стоп. Так код подстановки уже написан или нет? Если он чего-то там формирует, то значит написан. Тогда вариантов два:
1. Параметры с угловыми скобками - это просто имена реквизитов. Искать их надо не в коде, а слева, в панели "Конфигурация". Нужно найти необходимый документ, раскрыть его и посмотреть ветку "Реквизиты". По идее, параметр в шаблоне равен имени реквизита. Т.е. Дата = <Дата>, Контрагент = <Контрагент> и т.д.
2. Соответствие параметров для конкретного документа хранится в каком-то справочнике. Нужно найти этот справочник, открыть его в пользовательском режиме (не из Конфигуратора) и посмотреть на его содержимое.
3. Тоже самое, что и п.2, только вместо справочника нужно глянуть в регистры сведений.
...
Рейтинг: 0 / 0
1с Составление договора
    #35407477
BHy4ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да код уже написан. Мне надо отредактировать сам шаблон, спс за подсказку. Буду искать.
...
Рейтинг: 0 / 0
1с Составление договора
    #35407511
BHy4ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все так мутно :)
Если мне надо договор по пациентам значит это: справочники - пациенты.
Захожу в ветку "документы", нахожу там "договор".
Там две колонки реквизитов: "Реквизиты шапки", "Реквизиты табличной части". Вторая вообще пустая. Из первой колонки шаблон реагирует только на "Пациент", все.
Пытаюсь добавить туда-же "Имя"(чтобы в шаблоне оно распознавалось) Пишу: индефикатор - Имя.
Синоним - Имя. Тип значения - выбираю "Справочник пациенты". НОЛЬ !
В самом справочнике поле "Имя" есть.
Теперь я вообще запустался :(
...
Рейтинг: 0 / 0
1с Составление договора
    #35407567
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Главное не отчаиваться. Ничего там сложного не должно быть. Надо найти код экспорт в Word. Ключевое выражение для глобального поиска по конфигурации - "Word.Application". Надо посмотреть, откуда берутся данные для подстановки и всё. Но для этого надо найти кусок кода, который за это отвечает.
...
Рейтинг: 0 / 0
1с Составление договора
    #35407821
BHy4ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В глобальном модуле по ключу "Word.Application" ничего нету. Вбивал просто "Word" тоже ничего.
...
Рейтинг: 0 / 0
1с Составление договора
    #35408462
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BHy4okВ глобальном модуле по ключу "Word.Application" ничего нету. Вбивал просто "Word" тоже ничего.Надо через глобальный поиск работать. Отметить галочкой "Модули" и искать. Тогда поиск просмотрит все модули в системе, не только общие, но и модули форм, документов и т.д. Т.е. вообще весь код, какой есть в конфигурации. Скорее всего, это где-то в другом месте сидит.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / 1с Составление договора
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]