Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Использование общего модуля 1С 8.2          
vlad_1984_vlad Подменю пользователя
сообщение 06.09.11, 14:47
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте уважаемые господа, я в 1С самоучка. У меня вопрос…такая ситуация – есть много шаблонов Word у каждом из них, ну к примеру, есть надпись «<НазваЮридичноїОсоби>», есть обыкновенная форма документа на которой на кнопку «Друк» наложен программный код по замене этой надписи в шаблоне на значение базы 1С:
//…………………………………………..
~НазваЮридичноїОсоби: //Мітка коду
Диапазон = НовыйДокумент.Range();
Поиск = Диапазон.find;
Поиск.ClearFormatting();
Поиск.Forward = Истина;        
продолжать = Поиск.Execute("<НазваЮридичноїОсоби>");
Если продолжать Тогда
    Диапазон.text = ЭтаФорма.ЭлементыФормы.Заклад.Значение.ЗакладСкорочено;
Перейти ~НазваЮридичноїОсоби //Перехід до мітки    
КонецЕсли;
//…………………………………………..

ВНИМАНИЕ ВОПРОС: возможно такое чтобы этот фрагмент кода использовался в общем модуле 1С и вызывался в модуле кнопки «Друк», так как писать постоянно этот код в каждом модуле не очень удобно? Конечно, я могу его скопировать в буфер и постоянно его вставлять, где он только нужен, но это не професионально как-то =)?

P.S. Версія 1С – 8.2, локальная машина не имеющая подключения к другим ПК.
Заранее благодарен за любые ответы!
Причина редактирования: Выделяйте код!

Vofka Подменю пользователя
сообщение 06.09.11, 14:52
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

1. Советую всётаки прочесть правила, ибо без них вы у нас долго не задержитесь продержитесь.
2. Если этот код перенести в общий модуль, то в каждом нужном документе прийдётся как минимум писать 1 строчку кода, которая будет вызывать эту процедуру.

vlad_1984_vlad Подменю пользователя
сообщение 06.09.11, 15:01
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Vofka @ 06.09.11, 15:52) *
1. Советую всётаки прочесть правила, ибо без них вы у нас долго не задержитесь продержитесь.
2. Если этот код перенести в общий модуль, то в каждом нужном документе прийдётся как минимум писать 1 строчку кода, которая будет вызывать эту процедуру.

Прочёл, про виделение кода, но после того как уже выложил, сорри =(.
Ну это понятно что мне нужно всётаки обращатся как-то в общий модуль, но я показал лишь часть кода, у меня примерно получается около 20 таких значений, и то только по самом учреждении, а ещё + ЮРЛица + ФизЛица многовато будет, я хотел-бы к этим данным обращатся одной строкой а не пол-дюженою =)

Fynjy Подменю пользователя
сообщение 06.09.11, 15:10
Сообщение #4

Сенсей Чака Норриса
**********
За вредность
Группа: Пользователи
Сообщений: 1994
Из: Ахметов сити
Спасибо сказали: 333 раз
Рейтинг: 0

Вау велкий и могучий гоуту в коде 69000000.gif 07000000.gif


Signature

vlad_1984_vlad Подменю пользователя
сообщение 06.09.11, 15:16
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Fynjy @ 06.09.11, 16:10) *
Вау велкий и могучий гоуту в коде 69000000.gif 07000000.gif

Я в курсе что много меток в коде не очень хорошо, но дело в том что в одном документе может быть несколько таких слов которые потребуют замены, без меток он лишь раз миняется, а с метками столько встречается сколько и меняется, правда видел примеры более умные, но они что-то меня не очень слушались =(

Vofka Подменю пользователя
сообщение 06.09.11, 15:28
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

По поводу меток я промолчал, т.к. не по этому поводу вопрос. vlad_1984_vlad, добавляете функцию в общий модуль с суффиксом Экспорт и вызываете её из нужных мест. Что именно у вас не получается?

pablo Подменю пользователя
сообщение 06.09.11, 15:30
Сообщение #7

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Диапазон = НовыйДокумент.Range();
Поиск = Диапазон.find;
Поиск.ClearFormatting();
Поиск.Forward = Истина;        
продолжать = Поиск.Execute("<НазваЮридичноїОсоби>");
Пока Продолжать цикл
Диапазон.text = ЭтаФорма.ЭлементыФормы.Заклад.Значение.ЗакладСкорочено;
Диапазон = НовыйДокумент.Range();
Поиск = Диапазон.find;
Поиск.ClearFormatting();
Поиск.Forward = Истина;        
продолжать = Поиск.Execute("<НазваЮридичноїОсоби>");
КонецЦикла;

Здесь все просто организуется без метки smile.gif


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Спасибо сказали: vlad_1984_vlad,

vlad_1984_vlad Подменю пользователя
сообщение 06.09.11, 15:43
Сообщение #8

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Vofka @ 06.09.11, 16:28) *
По поводу меток я промолчал, т.к. не по этому поводу вопрос. vlad_1984_vlad, добавляете функцию в общий модуль с суффиксом Экспорт и вызываете её из нужных мест. Что именно у вас не получается?

Меня интересует как обращатся к процедурам общего модуля в котрых не производится некаких расчётов.

Цитата(pablo @ 06.09.11, 16:30) *
Диапазон = НовыйДокумент.Range();
Поиск = Диапазон.find;
Поиск.ClearFormatting();
Поиск.Forward = Истина;        
продолжать = Поиск.Execute("<НазваЮридичноїОсоби>");
Пока Продолжать цикл
Диапазон.text = ЭтаФорма.ЭлементыФормы.Заклад.Значение.ЗакладСкорочено;
Диапазон = НовыйДокумент.Range();
Поиск = Диапазон.find;
Поиск.ClearFormatting();
Поиск.Forward = Истина;        
продолжать = Поиск.Execute("<НазваЮридичноїОсоби>");
КонецЦикла;

Здесь все просто организуется без метки smile.gif

ооооо, за это огромное спасибо, попробую, а то знаю беду задумчывости ПК когда много меток, хотя и циклы не особо им уступают, проверю на быстродействие, спасибо.

vlad_1984_vlad Подменю пользователя
сообщение 07.09.11, 9:03
Сообщение #9

Молчаливый
*
Группа: Пользователи
Сообщений: 7
Спасибо сказали: 0 раз
Рейтинг: 0

Междупрочим вот более лучший вариант, только-что разобрался, может кому-то пригодится, здесь не используются не метки, не циклы:
Поиск = НовыйДокумент.Content.Find;
Поиск.Execute("<НазваЮридичноїОсоби>" ,,,,,,,,,""+СокрЛП(ЭтаФорма.ЭлементыФормы.Заклад.Значение.ЗакладСкорочено),2);
Причина редактирования: Не используйте избыточное цитирование, особенно своих сообщений!!!

kivals Подменю пользователя
сообщение 08.09.11, 13:48
Сообщение #10

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

vlad_1984_vlad, этот код основан уже на знании VBA. Да и пояснить неплохо бы, что метод Execute() может в зависимости от параметра заменять все вхождения строки поиска.

pablo, я бы конструкцию вида
Поиск = Диапазон.find;
Поиск.ClearFormatting();
Поиск.Forward = Истина;        
продолжать = Поиск.Execute("<НазваЮридичноїОсоби>");
Пока Продолжать цикл
...
Диапазон = НовыйДокумент.Range();
Поиск = Диапазон.find;
Поиск.ClearFormatting();
Поиск.Forward = Истина;        
продолжать = Поиск.Execute("<НазваЮридичноїОсоби>");
КонецЦикла;


Заменил бы на:
Диапазон = НовыйДокумент.Range();
Пока Истина цикл
    Поиск = Диапазон.find;
    Поиск.ClearFormatting();
    Поиск.Forward = Истина;
    Если НЕ Поиск.Execute("<НазваЮридичноїОсоби>") Тогда Прервать; КонецЕсли; // Вот здесь условие прерывания цикла
    ...
КонецЦикла;


Причина в следующем: если этот код менять, то можно забыть заменить текст во втором вхождении и получить головную боль при отладке

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 18:46
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!