Содержит персональные процедуры и функции интеграции клиента. Единственный модуль, рекомендуемый к изменению в процессе интеграции.
При новой интеграции необходимо проверить каждую функцию модуля а адаптировать поведение под требуемую логику.
При обновлении конфигурации по шаблону требуется уделять ему особое внимание.
Выборки по справочникам
// Функция, возвращающая запрос для выборки поднадзорных организаций
// Используется при построении динамического отбора и заполнения таблицы организаций в обработке
Функция ЗапросПоднадзорныхОрганизаций(Поместить=Ложь) Экспорт
описание
Должна возвращать запрос с полями Ссылка и Владелец, где
Параметр Поместить указывает, должен ли быть помещён запрос в виртуальную таблицу Ссылки.
Примеры:
// Вариант с использованием одного справочника
Возврат ПоместитьЗапрос(
"ВЫБРАТЬ
| Организации.Ссылка,
| Организации.Ссылка КАК Владелец
|ИЗ
| Справочник.Организации КАК Организации", Поместить);
// Вариант с извлечением данных из регистра напрямую в случае множества справочников
Возврат ПоместитьЗапрос(
"ВЫБРАТЬ
| АСП_Поднадзорные.Ссылка,
| АСП_Поднадзорные.Владелец
|ИЗ
| РегистрСведений.АСП_Поднадзорные КАК АСП_Поднадзорные
|ГДЕ
| АСП_Поднадзорные.Владелец ССЫЛКА Справочник.Организации", Поместить);
// Функция, возвращающая запрос для выборки поднадзорных контрагентов
// Используется при построении динамического отбора и заполнения таблицы контрагентов в обработке
Функция ЗапросПоднадзорныхКонтрагентов(Поместить=Ложь) Экспорт
описание
Должна возвращать запрос с полями Ссылка и Владелец, где
Параметр Поместить указывает, должен ли быть помещён запрос в виртуальную таблицу Ссылки.
Пример:
// универсальная выборка из регистра
Возврат ПоместитьЗапрос(
"ВЫБРАТЬ
| *
|ИЗ
| РегистрСведений.АСП_Поднадзорные КАК АСП_Поднадзорные
|ГДЕ
| АСП_Поднадзорные.Владелец ССЫЛКА Справочник.Контрагенты", Поместить);
// Функция, возвращающая запрос товаров для универсального отбора
// и заполнения таблицы товаров в обработке
Функция ЗапросТоваров(ВидСправочника = Неопределено, Поместить=Ложь) Экспорт
описание
Запрос должен возвращать одно поле Ссылка.
ВидСправочника - название вида справочника 1С, выбранного интерактивно
Поместить - режим помещения запроса в виртуальную таблицу
Для иерархического отображения запрос не должен содержать соединений.
Пример:
Если ВидСправочника = Неопределено Тогда
ВидСправочника = "Номенклатура";
КонецЕсли;
Возврат ПоместитьЗапрос(
"ВЫБРАТЬ
| Номенклатура.Ссылка
| Номенклатура.Наименование КАК Представление
|ИЗ
| Справочник."+ВидСправочника+" КАК Номенклатура", Поместить);
Подготовка к ХС/ПС к регистрации
// Получить полное наименование
// для регистрации контрагентов в системе Меркурий
Функция НаименованиеПолное(Контрагент) Экспорт
описание
Функция получает ссылку на контрагента (хозяйствующего или поднадзорного) и возвращает строковое представление.
Используется только в запросах на регистрацию в Меркурии.
Пример:
Если ТипЗнч(Контрагент) = Тип("СправочникСсылка.Организации") ИЛИ ТипЗнч(Контрагент) = Тип("СправочникСсылка.Контрагенты") Тогда
Возврат Контрагент.НаименованиеПолное;
КонецЕсли;
Возврат Контрагент.Наименование;
//* Получить полное наименование товара
Функция НаименованиеТовара(Товар) Экспорт
описание
Функция получает ссылку на товар и возвращает его наименование. Используется при регистрации номенклатуры в Меркурии с наименованием, отличающимся от стандартного. Полезно в применении с характеристиками номенклатуры.
Пример:
Если Метаданные.Справочники.Найти("ХарактеристикиНоменклатуры")<>Неопределено И ТипЗнч(Товар)= Тип("СправочникСсылка.ХарактеристикиНоменклатуры") тогда
Возврат Товар.Владелец.НаименованиеПолное + " ("+Товар.Наименование+")";
Иначе
Возврат Товар.Наименование;
КонецЕсли;
//* Получить адрес организации/контрагента
// ТипАдрес = "Юридический" / "Фактический"
Функция ПолучитьАдрес(Объект, ТипАдреса) Экспорт
//* Установить адрес организации/контрагента
Процедура УстановитьАдрес(Ссылка, ТипАдреса, Адрес) Экспорт
описание
Функции получения и установки адресов в карточки контрагентов, связанные хозяйствующими и поднадзорными субъектами.
Ссылка - ссылка на элемент справочника
ТипАдреса - Юридический / Фактический
Адрес - новый адрес строкой
Функция также возвращает адрес строкой.
Используются в интеллектуальном механизме поиска реквизитов для регистрации контрагентов в системе Меркурий.
Пример см. в шаблоне.
//* функция получения кода ОКПФ, специфичного для конфигурации
Функция КодОКПФ(Ссылка) Экспорт
описание
Функция возвращает код по ОКПФ по ссылке на элемент справочника хозяйствующего субъекта (Организации, Контрагенты).
Используется для заполнения поля хозяйствующего субъекта для регистрации в Меркурии.
Вызывается только из события АСП_ЗаписьСправочниковПриЗаписи.
Пример см. в шаблоне.
//* Тип создаваемого или редактируемого хозяйствующего субъекта:
//1 - юридическое лицо;
//2 - физическое лицо;
//3 - индивидуальный предприниматель.
Функция ТипКонтрагента(Ссылка) Экспорт
описание
Функция возвращает код типа субъекта по ссылке на элемент справочника хозяйствующего субъекта (Организации, Контрагенты).
Используется для заполнения поля хозяйствующего субъекта для регистрации в Меркурии.
Вызывается только из события АСП_ЗаписьСправочниковПриЗаписи.
Пример см. в шаблоне.
Запросы документов
//* Получение таблицы товаров от конфигурации
Функция ЗапросТаблицыТоваров(ВидДокумента = Неопределено) Экспорт
Функция ЗапросТаблицыПродукции(ВидДокумента = Неопределено) Экспорт
Функция ЗапросТаблицыСырья(ВидДокумента = Неопределено) Экспорт
Функция ЗапросТаблицыОприходования(ВидДокумента = Неопределено) Экспорт
Функция ЗапросТаблицыСписания(ВидДокумента = Неопределено) Экспорт
описание
Функции, возвращающие двухуровневый запрос по документам и табличным частям.
Используется при интерактивном заполнении таблицы документов в обработке, а также при формировании сертификатов.
Правила построения запроса:
запрос должен выбирать ссылки из виртуальной таблицы СсылкиВет, которая подготавливается заранее динамическим фильтром;
для универсальности выборка может иметь левое соединение с таблицами документа РеализацияТоваровУслуг, который заменится на правильный для выполнения запроса автоматически;
запрос должен возвращать поля Ссылка, Номенклатура, Количество, КоличествоУпаковок и Сумма, сгруппированные по Ссылка;
запрос также может возвращать поля Категория, Единица, Упаковка, ДатаВыработки и прочие поля для заполнения табличных частей сертификата.
Логика функций:
ЗапросТаблицыТоваров - универсальная функция, возвращающая запрос для заполнения таблицы документов в обработке для всех видов документов, а также возвращающая таблицы товаров для заполнения входящих и исходящих сертификатов.
ЗапросТаблицыПродукции и ЗапросТаблицыСырья - используются только при заполнении производственных сертификатов.
ЗапросТаблицыОприходования и ЗапросТаблицыСписания - используются только при заполнении инвентаризаций.
Пример см. в шаблоне. В примере используется один общий запрос, незначительно модифицируемый для всех видов документов.
// получение контрагента документа вместе с ссылкой
Функция ЗапросКонтрагентаДокумента(ВидДокумента) Экспорт
описание
Опциональная функция. Позволяет использовать в качестве контрагента для сертификатов (поднадзорного) любой реквизит исходного документа с помощью уточнения на языке запросов. Общий пример см. в шаблоне.
Внешние события
//+ Заполнение любых особых полей сертификата сразу после создания
// Ссылка - ссылка на документ учётной базы, выступающий основанием
// ОбъектСертификата - объект заполняемого сертификата
Процедура ДозаполнитьПоляВетСертификата1С(Ссылка, ОбъектСертификата) Экспорт
//+ Заполнение любых особых полей сертификата сразу после записи
Функция ДозаполнитьПоляВетСертификата1СПослеЗаписи(Ссылка, ОбъектСертификата) Экспорт
//+ Дозаполнение документов при разборе в очереди до регистрации
// имеет смысл при использовании последовательной регистрации
Процедура ДозаполнитьПоляВетСертификатов1СПоОчереди(СсылкаНаСертификат) Экспорт
//+ При проведении вет сертификата, после формирования движений
// позволяет скорректировать подчиненные сертификаты после определения партий
// имеет смысл при использовании последовательной регистрации
// см. типовые решения "перемещение", "реализация из производства" и "удалённое производство"
Процедура ДействияПослеПроведенияВетСертификата(Объект, Движения) Экспорт
//+ Перед регистрацией сертификата
// выполняется перед регистрацией пачки однотипных сертификатов по документу основанию
Процедура ДействияПередРегистрациейВетСертификата(Основание, ВидДокумента) Экспорт
//+ После успешной регистрации сертификата
// позволяет скорректировать подчиненные сертификаты после подтверждения регистрации и получения ГУИДа
// имеет смысл при использовании последовательной регистрации
Процедура ДействияПослеРегистрацииВетСертификата(Ссылка, Обработка) Экспорт
Активирующие функции
//+ Создание ветеринарных документов на основании, возвращает количество созданных сертификатов
// позволяет встроиться в процесс для формирования комплексных цепоцек
Функция СоздатьВетДокиПоОснованию(Обработка, Документ, ВидДокумента=Неопределено) Экспорт
СписСерт = Обработка.СформироватьОбновитьСертификаты1С(Документ, ВидДокумента).Количество();
Возврат СписСерт;
КонецФункции
//+ Регистрация ветеринарного документа по основанию
Процедура ЗарегистрироватьПоОснованию(Обработка, ВидДокумента, Документ) Экспорт
Если ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Входящий Тогда
Обработка.ЗарегистрироватьВходящуюПартию(Документ);
ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Исходящий Тогда
Обработка.ЗарегистрироватьТранспортнуюПартию(Документ);
ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Производственный Тогда
Обработка.ЗарегистрироватьПроизводственнуюПартию(Документ);
ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Инвентаризация Тогда
Обработка.ЗарегистрироватьИнвентаризацию(Документ);
КонецЕсли;
КонецПроцедуры
//+ Проведение ветеринарного документа по основанию
Процедура ПровестиПоОснованию(Обработка, ВидДокумента, Документ) Экспорт
СписВетДок = АСП_Функции.ПолучитьСписокВетДокументов(Документ);
Для Каждого ВетДок Из СписВетДок Цикл
Объект = ВетДок.ПолучитьОбъект();
Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
КонецЦикла;
КонецПроцедуры
Расширение интерфейса обработки
//+ расширения таблицы документов
Процедура РасширитьТабДокументов(Таб, ТабФормы, ВидДокумента) Экспорт
Процедура ЗаполнитьСтрокуТабДокументов(Строка, Документ, ВидДокумента) Экспорт
описание
Возможность расширить табличную часть выборки документов в обработке программным способом. Только для обычных форм.
Таб - таблица значений с данными
ТабФормы - элемент формы для отображения таблицы значений
ВидДокумента - справочник вид сертификата
Пример:
// добавление колонки с производимой продукцией
Процедура РасширитьТабДокументов(Таб, ТабФормы, ВидДокумента) Экспорт
АСП_Функции.ДобавитьКолонку(Таб, ТабФормы, 4, "Продукция", Тип("СправочникСсылка.Номенклатура"));
ТабФормы.Продукция.Видимость = ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Производственный;
КонецПроцедуры
Процедура ЗаполнитьСтрокуТабДокументов(Строка, Документ, ВидДокумента) Экспорт
Если ТипЗнч(Документ) = Тип("ДокументСсылка.ОтчетПроизводстваЗаСмену") И Документ.Продукция.Количество()>0 Тогда
Строка.Продукция = Документ.Продукция[0].Номенклатура;
КонецЕсли;
КонецПроцедуры
Синхронизация регистров сведений
// подписка на запись справочников, причастных к работе в Меркурии
Процедура АСП_ЗаписьСправочниковПриЗаписи(Источник, Отказ) Экспорт
описание
Требуется обеспечения целостности данных, а именно дополнительных реквизитов Меркурия, хранящихся в регистрах сведений, а также их частичного автоматического заполнения.
См. пример в шаблоне.
Доступ к обработке
// Загрузка внешней обработки в параллельный контекст
Функция ПолучитьОбъектОбработки() Экспорт
описание
Внешняя обработка содержит транспортный модуль, который используется в разных местах интеграции. Для этого необходимо обеспечить подсистеме постоянный доступ к файлу обработки для загрузки и обращения.
Шаблон содержит несколько возможных решений по реализации данной проблемы.