Компьютеры Windows Интернет

Внешняя обработка в 1с 8.3. Добавление внешней обработки в базу. Дополнительные внешние отчеты

Внешние обработки – очень удобный инструмент для компаний, использующих типовые конфигурации на 1С:Предприятие 8.3. Они позволяют не тратить силы и средства на обновления 1С, давая возможность обновлять базы одной кнопкой в режиме простого пользователя. Используя механизм библиотеки стандартных подсистем, можно добавить различные кнопки в документы и справочники, не изменяя типовую конфигурацию. Рассмотрим пример создания и подключения внешней обработки в одной из конфигураций 1С.

Создаем внешнюю обработку в 1С 8.3

Чтобы создать новую внешнюю обработку, используем конфигуратор. Через меню «Файл» выбираем команду создания «Новый…» и определяемся, что мы будем создавать внешнюю обработку. В открывшемся окне задаем имя, и при нажатии «Enter» оно заполняется автоматически. Также это имя вам предложит система в качестве названия файла при сохранении.

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

  • Реквизит – поле для установки номенклатуры;
  • Кнопку, которая выполнит вызов кода.

Добавляем реквизит «Номенклатура» с типом данных «СправочникСсылка.Номенклатура» в соответствующем разделе и кнопку «Показать» в меню «Команды» -> «Команды формы».

Чтобы на форме отразились добавленные данные, их необходимо перетащить в элементы формы, расположенные в левой верхней части. Есть возможность поменять местами элементы с помощью синих стрелок. Чтобы созданная нами кнопка выполняла задуманное, ей нужно назначить процедуру. Через контекстное меню выберем «Действие команды», и на вопрос, где нужен обработчик, ответим: «Создать на клиенте и процедуру на сервере».


Фрагмент 1

&НаКлиенте Процедура Показать(Команда) ПоказатьНаСервере(); КонецПроцедуры &НаСервере Процедура ПоказатьНаСервере() //Вставить содержимое обработчика. КонецПроцедуры

Мы выбрали создание процедуры на сервере, так как хотим в качестве результата получить выборку из базы данных. На клиенте у нас нет такой возможности, поэтому потребуется подключение к серверу, который и обменивается с БД данными. Теперь нам необходимо написать код, который реализует задуманное нами. Будет использоваться запрос и вывод всех документов через функцию «Сообщить()».


Фрагмент 2

&НаКлиенте Процедура Показать(Команда) ПоказатьНаСервере(Номенклатура); КонецПроцедуры &НаСервере Процедура ПоказатьНаСервере(Номенклатура) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ЗаказКлиентаСостав.Ссылка КАК Ссылка | ИЗ | Документ.ЗаказКлиента.Состав КАК ЗаказКлиентаСостав | ГДЕ | ЗаказКлиентаСостав.Номенклатура = &Номенклатура"; Запрос.УстановитьПараметр("Номенклатура", Номенклатура); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить(ВыборкаДетальныеЗаписи.Ссылка); КонецЦикла; КонецПроцедуры

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

Чтобы разместить внешнюю обработку в разделе 1С, необходимо ей в модуле объекта прописать процедуру «СведенияОВнешнейОбработке». В основном меню обработки нажмите «Действия» и выберите «Модуль объекта». Здесь необходимо прописать все нужные для 1С настройки, чтобы система поняла, что от нее требуется и что за файл перед ней. На скриншоте изображен код функции «СведенияОВнешнейОбработке».

Функция СведенияОВнешнейОбработке() Экспорт ДанныеДляРег = Новый Структура(); ДанныеДляРег.Вставить("Наименование","Новая внешняя обработка"); ДанныеДляРег.Вставить("БезопасныйРежим", Истина); ДанныеДляРег.Вставить("Версия", "ver.: 1.001"); ДанныеДляРег.Вставить("Вид", "ДополнительнаяОбработка"); ТабЗнКоманды = Новый ТаблицаЗначений; ТабЗнКоманды.Колонки.Добавить("Идентификатор"); ТабЗнКоманды.Колонки.Добавить("Использование"); ТабЗнКоманды.Колонки.Добавить("Представление"); НовСтрока = ТабЗнКоманды.Добавить(); НовСтрока.Идентификатор = "НоваяВнешняяОбработка"; НовСтрока.Использование = "ОткрытиеФормы"; НовСтрока.Представление = "Новая внешняя обработка"; ДанныеДляРег.Вставить("Команды", ТабЗнКоманды); Возврат ДанныеДляРег; КонецФункции

Фрагмент 3

Подключение внешней обработки в 1С

Перед тем, как подключать внешнюю обработку к типовой конфигурации, необходимо включить использование этого инструмента. В «Администрировании» в подпункте «Печатные формы, отчеты и обработки» устанавливаем флаг напротив нужного нам механизма. Нам становится доступна кнопка перехода к справочнику дополнительных обработок и отчетов.


При переходе к списку создадим новую строчку в нем, и система предложит выбрать файл. Выбираем сделанную нами и сохраненную обработку, и конфигурация 1С самостоятельно заполняет большинство полей. Через кнопку «Выполнить» мы уже можем проверить работоспособность нашей обработки, но это не слишком удобно для остальных пользователей. Чтобы у пользователей появилась наша команда, и они могли сделать вызов, нам необходимо:

  • Указать размещение объекта. Нажатием на «Не определено» мы открываем окно разделов и укажем, в каких разделах будет доступна операция;
  • Выбрать пользователей, у которых данная команда появится в меню «Дополнительные обработки» выбранных разделов без лишних настроек. Для этого в табличной части нужно выбрать пункт «Быстрый доступ» и добавить в правую половину ответственных пользователей;
  • На вкладке «Дополнительная информация» вы можете указать папку, в которой будет находиться загруженная обработка;
  • После нажатия клавиши «Записать» в выбранном разделе в меню «Дополнительные обработки» пользователи обнаружат нашу команду и смогут ею воспользоваться.

Если мы хотим внести изменения в нашу обработку, необходимо сначала выгрузить ее из базы. Для этого в справочнике «Дополнительные обработки и отчеты» найдите нужную строчку и воспользуйтесь командой «Выгрузить в файл…». Внесите изменения, сохраните обработку и через клавишу «Загрузить из файла…» найдите измененный файл epf, не меняя параметры. После записи все пользователи увидят внесенные изменения.

Если вы используете не типовую или снятую с поддержки базу 1С, то воспользуйтесь возможностью загрузить обработку через конфигуратор. В дереве объектов в разделе «Обработки» создайте новую обработку и через контекстное меню выберите «Заменить на внешнюю обработку, отчет…». Останется лишь настроить запуск внешней обработки из нужного раздела, включив добавленную обработку в нужную подсистему.


Работа с внешними обработками весьма удобна и позволяет избежать многих конфликтов. Единственный их существенный недостаток – они не обновляются автоматически вместе с конфигурацией. То есть, если разработчики поменяли название документа или справочника в основной конфигурации, нам придется вручную выполнять настройку обработки.

В верхем меню заходим Сервис ->->.

Появляется форма списка справочника внешних обработок. В верхнем меню нажимаем кнопку Добавить .

Появится форма добавление нового объект. Нажимаем но кнопку открыть, и выбираем файл с нужной обработкой. После того как вы выбрали нужный файл, при необходимости, задайте имя обработки(поле Наименование). После этого нужно нажать ОК, чтобы сохранить сделанные изменения.

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

На этом все! Процесс добавления обработки в конфигурацию завершен. Чтобы впоследствии открывать эту обработку, заходите по старому пути: Сервис ->Дополнительные отчеты и обработки ->Дополнительные внешние обработки .

Для БП 3.0, ЗУП 3.0, УТ 11, ERP 2.0.

Внешние обработки для 1С:Предприятие 8 бывают нескольких видов. В данной инструкции я покажу, как прикреплять обработки по групповой модификации и обработки по заполнению конкретных объектов.

Для первого случая добавим обработку по заполнению справочника номенклатуры из Эксель.

Переходим в соответствующий раздел программы:


Необходимо, чтобы был установлен признак использования дополнительных отчетов и обработок, переходим по гиперссылке в список внешних объектов:

В списке нажимаем Создать :


В открывшемся диалоговом окне выбираем нужный файл с обработкой:


Заполнилась карточка нового внешнего объекта в программе, осталось только настроить размещение (разделы программы, из которых будет доступна обработка):


В качестве размещения выбираем произвольный раздел (или несколько):


Записываем и закрываем карточку внешнего объекта:


Теперь откроем обработку из интерфейса:


Список пустой, нажимаем Настроить список :


Выбираем нашу обработку:


Теперь она доступна для выбора. Чтобы открыть обработку, нужно нажать Выполнить :


Теперь посмотрим, как добавляется обработка по заполнению (модификации) конкретных объектов. Для примера возьмем внешнюю обработку, которая прикрепляет сканы к выбранным элементам справочников или документам системы. Начало добавления такой обработки не отличается от предыдущего варианта. Различие в том, что в данном случае размещение заполняется автоматически (и не разделом программы, а типами объектов базы):


При желании список размещения можно скорректировать (не добавить дополнительное размещение, а убрать лишнее ):


Для принятия изменения карточку внешнего объекта также нужно записать.

Для того, чтобы воспользоваться обработкой, необходимо зайти в конкретный объект базы (из списка размещения), нажать пункт Заполнить в командной панели и выбрать команду:

Детали оплаты Стоимость, лицензирование, использование несколькими пользователями Стоимость продукта - 0 рублей . Количество рабочих мест неограничено. Дополнительного лицензирования не требуется. Какие варианты оплаты? Можете оплатить с банковской карты (Visa, Mastercard или Мир), яндекс-кошелька или отправить ИНН вашей организации для выставления счета (от ИП). При оплате от юрлица по необходимости предоставляются закрывающие документы. Безопасна ли оплата на сайте? Оплата банковской картой или через яндекс-кошелек на данном сайте абсолютно безопасна. Сайт имеет SSL-сертификат - уникальную цифровую подпись для надежной защиты при передаче данных. Как получить файл после оплаты? После оплаты вам автоматически в течение одной минуты будет отправлено письмо на электронную почту со ссылкой для скачивания продукта (свой адрес вы указываете при оплате).

Технические вопросы Как добавить продукт в базу? Вы можете внедрить продукт самостоятельно, посмотрев инструкцию . Если у вас с этим возникнут сложности, я могу помочь. Свяжитесь со мной и мы назначим конкретное время для связи. Если разработка не запустится (или будет работать неправильно) В таком случае первым делом проверьте по инструкции, корректно ли вы подключили разработку. Если проверка ничего не дала, сделайте скрин ошибки и отправьте мне по почте с указанием названия разработки. На ваш выбор я могу или исправить ошибку и выслать новую версию файла, или вернуть деньги. Если разработка сломается после обновления Вам нужно будет связаться со мной, сообщить номер нового релиза вашей конфигурации и название приобретенной вами разработки. После этого я вышлю адаптированную версию файла по почте. Можно ли доработать разработку своими силами? Да, можно. Исходный код открыт и доступен для любой доработки, никаких ограничений нет. Вносятся ли изменения в конфигурацию? Нет, внедрение разработки никак не меняет конфигурацию базы данных и на последующих обновлениях не отразится. Есть ли демо-версия? Нет, демо-доступ к разработке предоставить не могу.

Прочие вопросы Продажа разработок в нерабочее время/праздники/выходные Продажа на сайте осуществляется в автоматическом режиме круглосуточно, без выходных, праздников и перерывов на обед. Обновляются ли разработки? Некоторые разработки время от времени обновляются и совершенствуются. При обновлении продуктов вы будете получать оповещения по электронной почте с описанием изменений и ссылкой для скачивания (бесплатно). Также у вас есть возможность отправлять свои пожелания по доработкам. Предоставляются ли закрывающие документы При оплате по счету предоставляется акт выполненных работ с печатью и подписью (скан и/или оригинал Почтой России, по запросу). Возврат денежных средств Денежные средства за покупку разработок сайта возвращаются незамедлительно в полном объеме в следующих случаях:

  • разработка не запускается или работает с ошибками в вашей базе, и вы отказываетесь от ее адаптации,
  • разработка не соответствует функционалу, заявленному в описании.

Возникла проблема с оплатой?

Оплата на сайте работает на основе платежного сервиса Яндекса. Если у вас он не работает, могу предположить что вы находитесь не в России, и в вашей стране Яндекс не работает (или работает нестабильно).

Что делать?

Вы можете произвести оплату альтернативными способами:

  • карта сбербанка: 4276 3000 2875 5851
  • яндекс-кошелек: 410011805420743

В примечании к платежу обязательно указывайте идентификатор продукта 68 , и свой адрес электронной почты, куда я потом отправлю ссылку для скачивания разработки.

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

В режиме 1С Предприятие внешнюю обработку 1С можно запустить на выполнение, открыв ее как любой другой файл, хранящийся на диске. Такая обработка будут работать точно так же, как если бы они входили в состав прикладного решения.

Любая существующая в конфигурации обработка может быть преобразована во внешнюю, и наоборот. Кроме этого внешние обработки 1С могут быть добавлены в структуру прикладного решения как новые объекты.

Для использования внешней обработки1С при работе с системой 1С Предприятие необходимо открыть так же, как это делается в конфигураторе. Но следует иметь в виду, что в системе 1С Предприятие внешняя обработка открывается только для использования то есть пользователь не может его редактировать.

Компиляция модуля внешней обработки выполняется при открытии внешней обработки, поэтому после редактирования внешней обработки в конфигураторе и ее сохранения нужно вновь открыть эту обработку в системе 1С Предприятие.

Редактирование внешней обработки 1С выполняется в конфигураторе. Чтобы открыть существующую внешнюю обработку, выберите пункт Файл - Открыть. В выданном на экран стандартном диалоге выберите тип файла - Внешняя обработка - и укажите имя открываемого файла внешней обработки. При открытии внешней обработки в конфигураторе автоматически открывается диалог редактирования объекта. В отличии от других объектов конфигурации отладка внешней обработки 1С производиться без перезапуска 1С Предприятия.

Преимущества внешней обработки 1С: сохранение внешней обработки и открытие ее в предприятии на той же конфигурации и компьютере всегда занимает пару секунд; некоторые функционалы программы можно вынести во внешние обработки и при изменении этих частей, не нужно будет пересылать всю конфигурацию, достаточно будет изменить обработку и отправить ее пользователю; чтобы исправить ошибку в базе где много пользователей можно сохранить отчет как внешнюю обработку и внести в нее нужные изменения и отдать пользователям, а затем не спеша в удобное время вставить внешнюю обработку на замену неправильного отчета; многие программисты распространяют свои новые решения, реализованные для каких-либо типовых конфигураций не копируя всю базу.

Недостатки внешней обработки 1С : с помощью внешней обработки нельзя создать новый документ или справочник; все, что не касается структуры базы, обработка может делать.

Чтобы создать внешнюю обработку нужно зайти в конфигуратор, найти отчет операции по датам в дереве конфигурации. Затем в контекстном меню выбрать пункт сохранить как внешнюю обработку и указать место куда ее сохранить.

Довольно часто, когда во время консультации возникает необходимость решить какой-то сложный вопрос, я предлагаю своим клиентам реализовать его в программе 1С с использованием либо внешней обработки , либо внешней печатной формы . И не редко сталкиваюсь с тем, что человек просто не знаком с такой возможностью программ на платформе 1С Предприятие 8. Иногда даже ругаются на меня, считая, что разработка и внедрение в состав их конфигурации таких обработок приведет к невозможности автоматически обновлять программу. Что придется платить большие деньги за обновление программы.

Чтобы разъяснить подобные вопросы, а также рассказать о том какие полезные возможности дают внешние обработки и внешние печатные формы я решил написать эту статью. В статье я не буду рассматривать техническую сторону процесса создания обработки. Об этом скорее всего будет рассказано в другой публикации. Здесь я постараюсь объяснить саму суть механизма и привести конкретные примеры тех случаев, когда внешние обработки и печатные формы могут принести пользу пользователю.

В статье пойдет речь о следующих вариантах дополнительных внешних подключаемых объектах:

  • Дополнительные внешние обработки табличных частей;
  • Дополнительные внешние печатные формы;
  • Дополнительные внешние отчеты;
  • Дополнительные внешние обработки.

Что такое дополнительные внешние обработки, отчеты и печатные формы




Для начала мне хотелось бы рассказать в целом о том, что же такое эти внешние обработки, отчеты и печатные формы . Довольно часто при работе с типовой конфигурацией будь то 1С ЗУП или 1С Бухгалтерия Предприятия или какая-то другая конфигурация, возникает необходимость в каком-то функционале, который не предусмотрен разработчиками 1С. Например, может потребоваться печатная форма , которая не является регламентированной, но используется для внутренних нужд организации. Или требуется определенным образом обработать (изменить, скорректировать) имеющиеся в базе данные. Например, изменить определенный реквизит в документах за требуемый период, что делать вручную неудобно при больших объемах информации.

В этом случае есть два варианта. Первый , мы можем доработать саму конфигурацию, саму программу. После этого она перестанет быть типовой и обновлять её теми довольно простыми способами, о которых я писал , не получится. Обновление нетиповой конфигурации — это процесс более длительный и серьезный, поэтому при таком подходе вероятнее всего придется ежемесячно платить специалисту 1С за обновление программы. Второй вариант – это разработать или попросить разработать внешнюю обработку или печатную форму (отчет). Это по сути внешний модуль, который также разрабатывается на языке программирования 1С в Конфигураторе, но не вносит изменений в типовую конфигурацию. Он существует независимо от самой конфигурации. Для их хранения используется специальные справочники: пункт главного меню «Сервис» -> «Дополнительные отчеты и обработки».

Дополнительные внешние обработки по заполнению табличных частей

Семинар «Лайфхаки по 1C ЗУП 3.1»
Разбор 15-ти лайфхаков по учету в 1с зуп 3.1:

ЧЕК-ЛИСТ по проверке расчета зарплаты в 1С ЗУП 3.1
ВИДЕО - ежемесячная самостоятельная проверка учета:

Начисление зарплаты в 1С ЗУП 3.1
Пошаговая инструкция для начинающих:

Теперь давайте в отдельности посмотрим, какие возможности нам даст каждый из четырех доступных внешних модулей. Начнем с внешних обработок табличных частей . Мне кажется, эти обработки табличных частей документов наиболее полно иллюстрируют то, как можно довольно серьезно доработать программу, при этом не прибегая к редактированию типовой конфигурации, а обходиться лишь внешними обработками.

Чтобы стало более понятно, приведу конкретный пример из своей практике, в котором для решения поставленной задачи я использовал внешние обработки табличных частей . В конфигурации «1С Зарплата и Управление Персоналом» редакции 2.5 есть документ «Оплата праздничных и выходных дней» (об этом документе подробно написано ). В типовом виде этот документ предоставляет возможность автоматического заполнения табличной части сотрудниками «Работавшими в праздники».

Бухгалтер попросил реализовать возможность заполнения этого документа сотрудниками, рабочие дни которых по графику приходились на выходные, т.е. «Работавшими в выходные» .

Этот файл был загружен в справочник «Внешние обработки табличных частей» (пункт меню «Сервис» -> «Дополнительные отчеты и обработки» -> «Дополнительные внешние обработки табличных частей»). При создании элемента этого справочника было указано к какому документу относится загружаемая обработка – «Оплата праздничных и выходных дней организации», а также к какой табличной части – «Сотрудники». В нашем примере табличная часть у документа одна, но в других документах их может быть несколько, поэтому и требуется конкретно указать, к какой из них относится обработка.

В результате добавления этой обработки в справочник «Дополнительные внешние обработки по заполнению табличных частей» в самом документе «Оплата праздничных и выходных частей» появится кнопка «Заполнить» с выпадающим списком, в котором будет возможность запустить эту обработку. В нашем случае в выпадающем списке доступна кнопка «Заполнение воскресений». Её нажатие запускает алгоритм, который содержится в обработке. В данном примере табличная часть заполнится сотрудниками, у которых рабочие дни пришлись на выходной день. Обратите внимания, что этой кнопки ранее не было (скриншот выше).

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

Дополнительные внешние печатные формы

Семинар «Лайфхаки по 1C ЗУП 3.1»
Разбор 15-ти лайфхаков по учету в 1с зуп 3.1:

ЧЕК-ЛИСТ по проверке расчета зарплаты в 1С ЗУП 3.1
ВИДЕО - ежемесячная самостоятельная проверка учета:

Начисление зарплаты в 1С ЗУП 3.1
Пошаговая инструкция для начинающих:

Этот вариант очень похож на предыдущий. Вы скорее всего видели и знаете, что почти у каждого документа и даже у некоторых элементов справочников есть печатные формы. Они, как правила располагаются в правом нижнем углу формы элемента справочника или документа. Иногда типовых печатных форм оказывается недостаточно. Например, у организации может быть своя собственная форма трудового договора. Напомню, что типовая печатная форма «Трудовой договор» находится в составе формы справочника «Сотрудники».

В состав этих печатных форм справочника можно добавить и свои собственные. Для этого создается внешняя печатная форма, имеющая расширение “.epf”. Затем для неё создается элемент справочника«Дополнительные внешние печатные формы» (пункт меню «Сервис» -> «Дополнительные отчеты и обработки») и файлик с расширением “.epf” добавляется в этот элемент справочника. Также необходимо указать для какого документа или справочника добавляется обработка.

В результате в составе печатных форм элементов справочника «Сотрудники» появится ещё одна форма – «Трудовой договор (ООО Альфа)», которой до этого не было. А её внешний вид и заполнение данными определяет программист в файле “.epf”.

Эта возможность добавлять нужные печатный формы для документов и справочников, также бывает очень часто востребована и является, по моему мнению, довольно удобным функционалом программ на платформе 1С Предприятие.

Дополнительные внешние отчеты

В этом случае можно разработать внешний отчет . Это файл формата “.erf”. Именно этот файл будет определять внешний вид отчета, то, какие данные конфигурации он будет использовать, а какие запрашивать у пользователя (например, период, отбор по сотрудникам или по подразделениям). Файл создается в конфигураторе 1С на языке программирования 1С.

Внешний отчет можно хранить в составе конфигурации, используя справочник «Дополнительные внешние отчеты» (пункт меню «Сервис» -> «Дополнительные отчеты и обработки»). Они не имеют отношения к конкретному документу или справочнику, эту информацию указывать не требуется.

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

Запустить внешний отчет можно и используя пункт меню «Файл» -> «Открыть». Этот вариант можно использовать, если Вам удобнее хранить внешние отчеты не в составе программы, а просто в папках компьютера.

Дополнительные внешние обработки

Внешние обработки имеют примерно такой же смысл, что и внешние отчеты. Но в отличие от отчетов, которые используются для просмотра данных информационной базы в удобном для пользователя формате, обработки предназначены для изменения, редактирования или преобразования данных информационный базы. Спектр задач, решаемых с помощью внешних обработок довольно широк.

Например , обработка для выгрузки ведомостей на выплату заработной платы. Не смотря на наличие в ЗУП типовой обработки (про неё читайте ), иногда она может не подойти для конкретного банка и разрабатывается внешняя обработка, которая преобразует и выгружает сведения в нужном формате.

Приведу ещё один пример совершенно простенькой, но довольно востребованной обработки. Если в 1С ЗУП в течение года не вести документ «Перечисление НДФЛ в бюджет», то при формировании 2-НДФЛ за год поле «Перечислено» у каждого сотрудника будет нулевым, что как правило фактически неверно. Вводить документ «Перечисление НДФЛ в бюджет» за весь год бывает довольно утомительно, учитывая особенности самого документа. Но можно сделать внешнюю обработку, которая в сформированном 2-НДФЛ просто заполнит поле «Перечислено» у каждого сотрудника, на основании значений в поле «Исчислено». Обычно бухгалтерам очень нравится такой вариант.

Внешние обработки имеют точно такие же два варианта хранения и запуска: либо использовать справочник «Дополнительные внешние обработки» (пункт меню «Сервис» -> «Дополнительные отчеты и обработки»), либо пункт главного меню «Файл» -> «Открыть».

На этом сегодня всё!

Чтобы узнать первыми о новых публикациях подписывайтесь на обновления моего блога:

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

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

Создание конфигураций 1С: добавляем обработку

Продолжаем изучение азов создания конфигураций на 1С.

На этом уроке мы вместе создадим новую обработку, а затем напишем для неё команды, которые демонстрируют работу со справочником "Сотрудники".

Возвращаемся в конфигуратор и открываем дерево конфигурации.

Добавляем новую обработку

Правой кнопкой нажимаем на разделе "Обработки" и выбираем пункт "Добавить":

Открылось окно создания новой обработки. Перейдём на закладку "Основные" и укажем в качестве имени обработки "ОбработкаСправочников":

Создаём форму для обработки

Перейдём на закладку "Формы" нажмём на зелёный плюсик, чтобы добавить новую форму (визуальное представление нашей обработки):

Появился конструктор создания формы. Оставим всё по умолчанию и нажмём "Готово":

Открылась новая форма:

Создаём новую команду для формы

Перейдём на закладку "Команды"->"Команды формы":

Добавим новую команду (зелёный плюсик):

И в свойствах новой команды укажем имя "ВыводВсехСотрудников":

Нажмём в её же свойствах на лупу рядом с полем "Действие", чтобы задать обработчик команды. Выберем вариант создания обработчика "НаКлиенте" и нажмём "ОК":

Нас перенесло в модуль формы в процедуру-обработчик команды "ВыводВсехСотрудников":

Пишем код обработчика команды

Теперь наша задача написать код на внутреннем языке 1С, который будет перебирать все элементы справочника "Сотрудники".

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

Поэтому давайте допишем в конце модуля процедуру такого вида:

Обратите внимание, что перед ней я указал признак "&НаСервере". Это означает, что она будет выполняться на сервере, а значит мы можем из неё читать данные справочника.

Теперь организуем вызов этой процедуры из клиентской "ВыводВсехСотрудников":

Тут логика такая:

  1. Пользователь вызывает команду "ВыводВсехСотрудников" (например, нажатием на кнопку, которой у нас ещё правда нет)
  2. Команда запускает одноименную процедуру-обработчик "ВыводВсехСотрудников" на клиенте (ведь кнопка, а значит и команда находятся на клиенте)
  3. Клиентская процедура "ВыводВсехСотрудников" делает вызов серверной процедуры "ВыводВсехСотрудниковНаСервере"
  4. Серверная процедура "ВыводВсехСотрудниковНаСервере" читает данные справочника из базы и выводит их в окно сообщений

Нам осталась самая малость - написать код процедуры "ВыводВсехСотрудниковНаСервере", который пробегается по элементам справочника "Сотрудники" и выводит их в окно сообщений.

Это на самом деле несложно. Обход всех справочников в 1С однотипен. А значит научившись это делать сейчас со справочником "Сотрудники", вы сможете делать также и с любыми другими справочниками.

Для доступа к данным справочника используется менеджер, доступ к которому осуществляется так:

Менеджер = Справочники. Сотрудники;

В этом предложении ключевая часть находится справа от знака равно. Слева - это просто переменная, в которую мы сохраняем менеджер, чтобы работать с ним дальше. Имя этой переменной могло быть не только "Менеджер", но и любое другое - хоть "Барабашка".

Что представляет из себя менеджер справочника? Менеджер - это ещё не сами данные справочника. Менеджер - это некоторый программный объект (можете представлять его себе в виде чёрного ящика), через который мы можем что-либо делать со справочником.

Менеджер справочника - это как бы такая прослойка между нашим кодом и данными справочника. И получается, что, если нам требуется прочитать все элементы справочника, то мы не можем этого сделать напрямую. Мы можем только попросить об этом нашу прослойку между нами и справочником, то есть менеджер.

Чтобы сделать это - необходимо вызвать встроенный в менеджер метод "Выбрать". Вызывается он через точку после имени переменной, в которой хранится менеджер, и возвращает коллекцию элементов справочника:

Менеджер = Справочники. Сотрудники; Выборка = Менеджер. Выбрать() ;

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

Выборка представляет собой объект - опять же думайте о нём как о ящике, но ещё не сами данные. Особенность этого объекта в том, что он умеет перебирать элементы нужного нам справочника. Причём перебирает он их динамически. Это означает, что использование выборки не считывает все элементы справочника сразу, а выбирает их порциями из базы данных.

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

Чтобы получить очередную порцию данных из выборки, необходимо вызвать у выборки встроенный в неё метод "Следующий". Получение порций данных (одна порция соответствует одному элементу справочника) обычно происходит в цикле:

Когда данные (элементы справочника) в выборке закончатся, метод "Следующий" вернёт Ложь и цикл прекратится.

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

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