1с 77 распечатать справочники

Обновлено: 07.07.2024

Примечание - большая часть написанного здесь текста с примерами взята по памяти (пару лет назад изучал достаточно подробно, поэтому может что-то в алгоритмах не работать - я ведь их не копировал откуда-то, а прямо тут же и писал, так что за синтаксические ошибки не пинайте) - на данный момент я активно OLE не пользуюсь (не из-за каких-то проблем с самим OLE, а из-за отсутствия надобности в его использовании в текущий момент).

Основные преимущества, благодаря которым OLE активно используется:

  • Для вызывающей базы "по барабану" - какой тип вызываемой базы (DBF или SQL)
  • Объектами вызываемой базы можно управлять всеми известными методами работы с объектами в 1С (т.е. со справочниками работают методы ВыбратьЭлементы(), ИспользоватьДату() и т.п., с документами - ВыбратьДокументы() и т.п.), соответственно, можно напрямую решить - стоит отрабатывать конкретные объекты базы OLE или пропустить их.
Локальная версия (на одного пользователя): V77L.Application
Сетевая версия: V77.Application
Версия SQL: V77S.Application
Далее вместо термина "вызываемая база" будет написано просто "база OLE", а вместо термина "вызывающая база" - "местная база"

Теперь, мы должны знать несколько параметров для запуска базы OLE: Каталог базы, имя пользователя и пароль. Ну, наверное, еще и желание запустить 1С в монопольном режиме :)

Комментарий: функции СокрЛП() стоят в примере на случай, если пользователь захочет указанные выше переменные сделать в форме диалога, а проблема при этом состоит в том, что в алгоритм программа передаст полное значение реквизита (т.е. допишет в конце значения то количество пробелов, которое необходимо для получения полной длины строки (указана в свойствах реквизита диалога)).

Пример 2. Доступ к объектам базы OLE.

Запомните на будущее как непреложный факт:

  1. Из местной базы в базу OLE (и, соответственно, наоборот) напрямую методом присвоения можно перенести только числовые значения, даты и строки ограниченной длины. Т.е. местная база поймет прекрасно без дополнительных алгоритмов преобразования полученного значения только указанные типы значений. Кроме того, под ограничением строк подразумевается проблемы с пониманием в местной базе реквизитов объектов базы OLE типа "Строка неограниченной длины". К этому же еще надо добавить и периодические реквизиты. Естественно, под методом присвоения подразумеваются и попытки сравнить объекты разных баз в одном условии (например, в алгоритмах "Если" или "Пока" и т.п.).
  2. Есть проблемы при попытке перенести "пустую" дату - OLE может ее конвертировать, например, в 31.12.1899 года и т.п. Поэтому вам лучше заранее выяснить те значения, которые могут появится в местной базе при переносе "пустых" дат, чтобы предусмотреть условия преобразования их в местной базе.
Б) Доступ к справочникам и документам базы OLE (через функцию "CreateObject"): После создания объекта справочника или документа к ним применимы все методы, касающиеся таких объектов в 1С: Отсюда вывод: возможность доступа к объектам базы 1С через OLE требуется, в основном, только для определенной задачи - получить доступ к реквизитам определенного элемента справочника или документа. Однако, не забываем, что объекты базы OLE поддерживают все методы работы с ними, в т.ч. и "Новый()", т.е. приведем пример противоположный предыдущему: В) Доступ к регистрам базы OLE (Не сложнее справочников и документов): Г) Доступ к перечислениям базы OLE (аналогичен константе): Заметьте, что пользы для местной базы от переменной "ЗначениеПеречисленияOLE" особо-то и нет, ведь подобно справочнику и документу перечисление также напрямую недоступно для местной базы. Пожалуй, пример работы с ними может быть следующим (в качестве параметра условия): Е) Доступ к ВидамСубконто базы OLE (аналогичен перечислению): По аналогии со справочниками и документами работает объект "Периодический", план счетов работает по аналогии с ВидомСубконто, ну и далее в том же духе… Отдельную главу посвятим запросу, а сейчас… стоп. Еще пункт забыл!

Ж) Доступ к функциям и процедурам глобального модуля базы OLE!

Как же я про это забыл-то, а? Поскольку при запуске базы автоматически компилируется глобальный модуль, то нам становятся доступны функции и процедуры глобального модуля (поправлюсь - только те, у которых стоит признак "Экспорт"). Плюс к ним еще и различные системные функции 1С. А доступны они нам через функцию 1С OLE - EvalExpr(). Приведем примеры работы с базой OLE:

На самом деле, в последней строке примера я исхитрился и забежал немного вперед. Дело в том, что как и запрос (см. отдельную главу), так и EvalExpr() выполняются внутри базы OLE, причем команды передавается им обычной строкой, и поэтому надо долго думать, как передать необходимые ссылки на объекты базы OLE в строке текста местной базы. Так что, всегда есть возможность поломать голову над этим…

Алгоритмы преобразования объектов в "удобоваримый вид" между базами.

Ясно, что алгоритмы преобразования нужны не только для переноса объектов между и базами, но и для такой простой задачи, как попытки сравнить их между собой.

И еще раз обращу внимание: ОБЪЕКТЫ ОДНОЙ БАЗЫ ПРЕКРАСНО ПОНИМАЮТ ДРУГ ДРУГА, ПРОБЛЕМЫ ВОЗНИКАЮТ ТОЛЬКО ТОГДА, КОГДА ВЫ НАЧИНАЕТЕ СВЯЗЫВАТЬ МЕЖДУ СОБОЙ ОБЪЕКТЫ РАЗНЫХ БАЗ, т.е. команда

ДокОле . Фирма = СпрОле . ТекущийЭлемент ();
// где ДокОле - документ базы OLE, а СпрОле - справочник "Фирмы" базы OLE

будет прекрасно работать без ошибок. Не забывайте это, чтобы не перемудрить с алгоритмами!

Итак, повторяюсь, что напрямую перенести, да и просто сравнить можно только даты (причем не "пустые"), числа и строки ограниченной длины. Итак, как же нам сравнить объекты разных баз (не числа, не даты, не строки), т.е. как их преобразовать в эту самую строку/число/дату.

СКАЧАТЬ: Доступно только для зарегистированных пользователей

Например выберем один из самых распространенных справочников Контрагенты:


Выберете реквизиты, значения которых нужно выводить:

В данном окне выводятся все реквизиты данного справочника Контрагенты.


- Включить Все, т.е. все реквизиты отмечаются галочками.


- Отключить Все, т.е. все реквизиты будут не отмечены и выбираем только те которые необходимы нам при формировании печатной формы справочника.

Для того чтобы список выводился иерархически необходимо поставить галочку в поле Иерархический список.

Упорядочить по: нажимаем на галочку находящуюся в конце поля:


Т.е, данные можно упорядочить по: Наименование, Код, УНП или ИНН, Код ОКЮЛП.

Также можно выбирать Периодические реквизиты:



По нажатию на кнопку , появиться форма Выбор периода:


Например, у нас выбран справочник Контрагенты, выделены все реквизиты, упорядочить по Наименованию, сформируем данный отчет:


При переходе на вкладку Условия появиться форма представленная ниже:


В данной форма также можно выбирать справочник, и конечно же задавать различные условия по нажатию на кнопку Добавить, лидо двойным щелчком мыши по полю, изменять условия нажатием на кнопку Изменить, и удалять уже заданные условия нажатием на кнопку Удалить, например:


Затем нажимаем на кнопку Выбора в конце поля Значение:


Выбираем необходимое для нас значение двойным щелчком мыши и нажимаем на кнопку ОК.

Сформируем данный отчет с выбранным условием:


При нажатии на вкладку Настройки, появится форма представленная ниже:


На данной вкладке также можно выбирать справочник, а также Сохранить, Восстановить или Удалить Настройки.

Также вверху формы находиться две иконки:


По нажатию на кнопку - Описание, появиться форма представленная ниже:



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


Иногда необходимо срочно распечатать справочник с любым набор реквизитов. Без красоты и сложных фильтров.

Related Posts

28 Comments

Спасибо за внимание к моей обработке. Прошу прощения за мелкие ошибки. Исправил. Перезалил.

Огромное спасибо! Для нашей конторы очень нужная вещь. Сама не программист, но что-то пытаюсь доделать под свои нужды. Создан подчиненный справочник, данные есть, а вот как их достать для различных отчетов для меня засада. А тут так все просто! 🙂

Фигня какая-то, выбираешь группу, а он всё равно всё скопом забирает. Думал ,чтоя что-то не так делаю, пока не попробовал на 2-х разных базах.

(8)Исправил, файл перезалил.

Спасибо, нужно было быстро пару справочников распечатать.

Мне очень нужна обработка для печать справочников по выбранным реквизитам! Если уж придумали начислять баллы или как это называется, тогда пишите сколько нужно иметь баллов чтобы скачать ту или иную обработку

Мне очень нужна обработка для печать справочников по выбранным реквизитам! Если уж придумали начислять баллы или как это называется, тогда пишите сколько нужно иметь баллов чтобы скачать ту или иную обработку

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

Да отличная обработка, все нормально отрабатывает. Без проблем. Мне лично очень помогла. Спасибо автору большое. Не пришлось тратить свое драгоценное время.

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

Но подскажите, она не выгружает телефоны из справочника контрагентов, так как в ТиС это не реквизиты.

Подскажите, как можно выгрузить данные с телефонами. Спасибо!

А чем она отличается по функционалу от extrepsunireps
efprint.ert?

К сожалению не знаю,что это за обработка, поэтому не могу ответить про разницу.

(20) Yurus, на ИТС есть, универсальная печать справочников.

По комментариям я понял, что Ваша еще и с подчиненными справочниками работает, а типовая нет.

Извиняюсь за поздний ответ, был в отпуске.

У меня относительно простой вариант.

Читайте также: