Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
компоненты:асп_общие [2017/12/05 23:10] adminasp [Описание процедур и функций] |
компоненты:асп_общие [2022/07/04 18:58] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Общий модуль АСП_Общие ====== | ====== Общий модуль АСП_Общие ====== | ||
- | Содержит персональный процедуры и функции интеграции. Единственный модуль, рекомендуемый к изменению в процессе интеграции. При обновлении конфигурации по шаблону требуется уделять ему особое внимание. | + | Содержит персональные процедуры и функции интеграции клиента. Единственный модуль, рекомендуемый к изменению в процессе интеграции.\\ |
+ | При новой [[руководства_программиста:интеграция|интеграции]] необходимо проверить каждую функцию модуля а адаптировать поведение под требуемую логику.\\ | ||
+ | При [[руководства_программиста:обновление|обновлении]] конфигурации по шаблону требуется уделять ему особое внимание. | ||
===== Описание процедур и функций ===== | ===== Описание процедур и функций ===== | ||
- | <code bsl> | + | ==== Выборки по справочникам ==== |
- | //* Запросы по хозяйтсвующим и поднадзорным | + | |
+ | <1c> | ||
+ | // Функция, возвращающая запрос для выборки поднадзорных организаций | ||
+ | // Используется при построении динамического отбора и заполнения таблицы организаций в обработке | ||
Функция ЗапросПоднадзорныхОрганизаций(Поместить=Ложь) Экспорт | Функция ЗапросПоднадзорныхОрганизаций(Поместить=Ложь) Экспорт | ||
- | Для Сч = 1 по 10 Цикл | + | </1c> |
- | КонецЦикла; | + | ++++ описание | |
- | Возврат 2; | + | Должна возвращать запрос с полями **Ссылка** и **Владелец**, где |
- | КонецФункции | + | * Ссылка используется в качестве поднадзорного |
+ | * Владелец - в качестве хозяйствующего | ||
+ | Параметр **Поместить** указывает, должен ли быть помещён запрос в виртуальную таблицу **Ссылки**. | ||
+ | //Примеры:// | ||
+ | <1c> | ||
+ | // Вариант с использованием одного справочника | ||
+ | Возврат ПоместитьЗапрос( | ||
+ | "ВЫБРАТЬ | ||
+ | | Организации.Ссылка, | ||
+ | | Организации.Ссылка КАК Владелец | ||
+ | |ИЗ | ||
+ | | Справочник.Организации КАК Организации", Поместить); | ||
+ | </1c> | ||
+ | <1c> | ||
+ | // Вариант с извлечением данных из регистра напрямую в случае множества справочников | ||
+ | Возврат ПоместитьЗапрос( | ||
+ | "ВЫБРАТЬ | ||
+ | | АСП_Поднадзорные.Ссылка, | ||
+ | | АСП_Поднадзорные.Владелец | ||
+ | |ИЗ | ||
+ | | РегистрСведений.АСП_Поднадзорные КАК АСП_Поднадзорные | ||
+ | |ГДЕ | ||
+ | | АСП_Поднадзорные.Владелец ССЫЛКА Справочник.Организации", Поместить); | ||
+ | </1c> | ||
+ | ++++ | ||
+ | |||
+ | <1c> | ||
+ | // Функция, возвращающая запрос для выборки поднадзорных контрагентов | ||
+ | // Используется при построении динамического отбора и заполнения таблицы контрагентов в обработке | ||
Функция ЗапросПоднадзорныхКонтрагентов(Поместить=Ложь) Экспорт | Функция ЗапросПоднадзорныхКонтрагентов(Поместить=Ложь) Экспорт | ||
- | + | </1c> | |
+ | ++++ описание | | ||
+ | Должна возвращать запрос с полями **Ссылка** и **Владелец**, где | ||
+ | * Ссылка используется в качестве поднадзорного | ||
+ | * Владелец - в качестве хозяйствующего | ||
+ | Параметр **Поместить** указывает, должен ли быть помещён запрос в виртуальную таблицу **Ссылки**. | ||
+ | //Пример:// | ||
+ | <1c> | ||
+ | // универсальная выборка из регистра | ||
+ | Возврат ПоместитьЗапрос( | ||
+ | "ВЫБРАТЬ | ||
+ | | * | ||
+ | |ИЗ | ||
+ | | РегистрСведений.АСП_Поднадзорные КАК АСП_Поднадзорные | ||
+ | |ГДЕ | ||
+ | | АСП_Поднадзорные.Владелец ССЫЛКА Справочник.Контрагенты", Поместить); | ||
+ | </1c> | ||
+ | ++++ | ||
+ | <1c> | ||
+ | // Функция, возвращающая запрос товаров для универсального отбора | ||
+ | // и заполнения таблицы товаров в обработке | ||
Функция ЗапросТоваров(ВидСправочника = Неопределено, Поместить=Ложь) Экспорт | Функция ЗапросТоваров(ВидСправочника = Неопределено, Поместить=Ложь) Экспорт | ||
+ | </1c> | ||
+ | ++++ описание | | ||
+ | Запрос должен возвращать одно поле **Ссылка**. | ||
+ | * **ВидСправочника** - название вида справочника 1С, выбранного интерактивно | ||
+ | * **Поместить** - режим помещения запроса в виртуальную таблицу | ||
+ | :!: Для иерархического отображения запрос не должен содержать соединений. | ||
+ | //Пример:// | ||
+ | <1c> | ||
+ | Если ВидСправочника = Неопределено Тогда | ||
+ | ВидСправочника = "Номенклатура"; | ||
+ | КонецЕсли; | ||
+ | Возврат ПоместитьЗапрос( | ||
+ | "ВЫБРАТЬ | ||
+ | | Номенклатура.Ссылка | ||
+ | | Номенклатура.Наименование КАК Представление | ||
+ | |ИЗ | ||
+ | | Справочник."+ВидСправочника+" КАК Номенклатура", Поместить); | ||
+ | </1c> | ||
+ | ++++ | ||
+ | |||
+ | ==== Подготовка к ХС/ПС к регистрации ==== | ||
- | //* Получить полное наименование | + | <1c> |
+ | // Получить полное наименование | ||
+ | // для регистрации контрагентов в системе Меркурий | ||
Функция НаименованиеПолное(Контрагент) Экспорт | Функция НаименованиеПолное(Контрагент) Экспорт | ||
+ | </1c> | ||
+ | ++++ описание | | ||
+ | Функция получает ссылку на контрагента (хозяйствующего или поднадзорного) и возвращает строковое представление.\\ | ||
+ | Используется только в запросах на регистрацию в Меркурии. | ||
+ | //Пример:// | ||
+ | <1c> | ||
+ | Если ТипЗнч(Контрагент) = Тип("СправочникСсылка.Организации") ИЛИ ТипЗнч(Контрагент) = Тип("СправочникСсылка.Контрагенты") Тогда | ||
+ | Возврат Контрагент.НаименованиеПолное; | ||
+ | КонецЕсли; | ||
+ | Возврат Контрагент.Наименование; | ||
+ | </1c> | ||
+ | ++++ | ||
- | //* Получить головного контрагента | + | <1c> |
- | // применяется к организациям и контрагентам | + | //* Получить полное наименование товара |
- | Функция ГоловнойКонтрагент(Контрагент) Экспорт | + | Функция НаименованиеТовара(Товар) Экспорт |
+ | </1c> | ||
+ | ++++ описание | | ||
+ | Функция получает ссылку на товар и возвращает его наименование. Используется при регистрации номенклатуры в Меркурии с наименованием, отличающимся от стандартного. Полезно в применении с характеристиками номенклатуры. | ||
+ | //Пример:// | ||
+ | <1c> | ||
+ | Если Метаданные.Справочники.Найти("ХарактеристикиНоменклатуры")<>Неопределено И ТипЗнч(Товар)= Тип("СправочникСсылка.ХарактеристикиНоменклатуры") тогда | ||
+ | Возврат Товар.Владелец.НаименованиеПолное + " ("+Товар.Наименование+")"; | ||
+ | Иначе | ||
+ | Возврат Товар.Наименование; | ||
+ | КонецЕсли; | ||
+ | </1c> | ||
+ | ++++ | ||
+ | <1c> | ||
//* Получить адрес организации/контрагента | //* Получить адрес организации/контрагента | ||
// ТипАдрес = "Юридический" / "Фактический" | // ТипАдрес = "Юридический" / "Фактический" | ||
Строка 30: | Строка 130: | ||
//* Установить адрес организации/контрагента | //* Установить адрес организации/контрагента | ||
Процедура УстановитьАдрес(Ссылка, ТипАдреса, Адрес) Экспорт | Процедура УстановитьАдрес(Ссылка, ТипАдреса, Адрес) Экспорт | ||
+ | </1c> | ||
+ | ++++ описание | | ||
+ | Функции получения и установки адресов в карточки контрагентов, связанные хозяйствующими и поднадзорными субъектами. | ||
+ | * **Ссылка** - ссылка на элемент справочника | ||
+ | * **ТипАдреса** - Юридический / Фактический | ||
+ | * **Адрес** - новый адрес строкой | ||
+ | Функция также возвращает адрес строкой.\\ | ||
+ | Используются в интеллектуальном механизме поиска реквизитов для регистрации контрагентов в системе Меркурий.\\ | ||
+ | //Пример см. в [[компоненты:шаблон|шаблоне]].// | ||
+ | ++++ | ||
+ | <1c> | ||
//* функция получения кода ОКПФ, специфичного для конфигурации | //* функция получения кода ОКПФ, специфичного для конфигурации | ||
- | Функция РазобратьНаименованиеВОПФ(Наименование) | ||
- | |||
- | //* функция получения кода ОКПФ | ||
Функция КодОКПФ(Ссылка) Экспорт | Функция КодОКПФ(Ссылка) Экспорт | ||
+ | </1c> | ||
+ | ++++ описание | | ||
+ | Функция возвращает код по ОКПФ по ссылке на элемент справочника хозяйствующего субъекта (Организации, Контрагенты).\\ | ||
+ | Используется для заполнения поля хозяйствующего субъекта для регистрации в Меркурии.\\ | ||
+ | Вызывается только из события **АСП_ЗаписьСправочниковПриЗаписи**.\\ | ||
+ | //Пример см. в [[компоненты:шаблон|шаблоне]].// | ||
+ | ++++ | ||
- | //* функция получения ОГРН | + | <1c> |
- | Функция КодОГРН(Ссылка) Экспорт | + | |
//* Тип создаваемого или редактируемого хозяйствующего субъекта: | //* Тип создаваемого или редактируемого хозяйствующего субъекта: | ||
//1 - юридическое лицо; | //1 - юридическое лицо; | ||
Строка 45: | Строка 158: | ||
//3 - индивидуальный предприниматель. | //3 - индивидуальный предприниматель. | ||
Функция ТипКонтрагента(Ссылка) Экспорт | Функция ТипКонтрагента(Ссылка) Экспорт | ||
+ | </1c> | ||
+ | ++++ описание | | ||
+ | Функция возвращает код типа субъекта по ссылке на элемент справочника хозяйствующего субъекта (Организации, Контрагенты).\\ | ||
+ | Используется для заполнения поля хозяйствующего субъекта для регистрации в Меркурии.\\ | ||
+ | Вызывается только из события **АСП_ЗаписьСправочниковПриЗаписи**.\\ | ||
+ | //Пример см. в [[компоненты:шаблон|шаблоне]].// | ||
+ | ++++ | ||
+ | ==== Запросы документов ==== | ||
+ | |||
+ | <1c> | ||
//* Получение таблицы товаров от конфигурации | //* Получение таблицы товаров от конфигурации | ||
- | Функция ОперацияПоКоду(Код) Экспорт | ||
- | |||
- | Функция ОбщийЗапросТоваров() | ||
- | |||
Функция ЗапросТаблицыТоваров(ВидДокумента = Неопределено) Экспорт | Функция ЗапросТаблицыТоваров(ВидДокумента = Неопределено) Экспорт | ||
- | |||
Функция ЗапросТаблицыПродукции(ВидДокумента = Неопределено) Экспорт | Функция ЗапросТаблицыПродукции(ВидДокумента = Неопределено) Экспорт | ||
- | |||
Функция ЗапросТаблицыСырья(ВидДокумента = Неопределено) Экспорт | Функция ЗапросТаблицыСырья(ВидДокумента = Неопределено) Экспорт | ||
- | |||
Функция ЗапросТаблицыОприходования(ВидДокумента = Неопределено) Экспорт | Функция ЗапросТаблицыОприходования(ВидДокумента = Неопределено) Экспорт | ||
- | |||
Функция ЗапросТаблицыСписания(ВидДокумента = Неопределено) Экспорт | Функция ЗапросТаблицыСписания(ВидДокумента = Неопределено) Экспорт | ||
+ | </1c> | ||
+ | ++++ описание | | ||
+ | Функции, возвращающие двухуровневый запрос по документам и табличным частям.\\ | ||
+ | Используется при интерактивном заполнении таблицы документов в обработке, а также при формировании сертификатов.\\ | ||
+ | //Правила построения запроса:// | ||
+ | - запрос должен выбирать ссылки из виртуальной таблицы **СсылкиВет**, которая подготавливается заранее динамическим фильтром; | ||
+ | - для универсальности выборка может иметь левое соединение с таблицами документа **РеализацияТоваровУслуг**, который заменится на __правильный__ для выполнения запроса автоматически; | ||
+ | - запрос должен возвращать поля **Ссылка**, **Номенклатура**, **Количество**, **КоличествоУпаковок** и **Сумма**, сгруппированные по **Ссылка**; | ||
+ | - запрос также может возвращать поля **Категория**, **Единица**, **Упаковка**, **ДатаВыработки** и прочие поля для заполнения табличных частей сертификата. | ||
+ | |||
+ | //Логика функций:// | ||
+ | * **ЗапросТаблицыТоваров** - универсальная функция, возвращающая запрос для заполнения таблицы документов в обработке для всех видов документов, а также возвращающая таблицы товаров для заполнения **входящих** и **исходящих** сертификатов. | ||
+ | * **ЗапросТаблицыПродукции** и **ЗапросТаблицыСырья** - используются только при заполнении производственных сертификатов. | ||
+ | * **ЗапросТаблицыОприходования** и **ЗапросТаблицыСписания** - используются только при заполнении инвентаризаций. | ||
+ | |||
+ | //Пример см. в [[компоненты:шаблон|шаблоне]]. В примере используется один общий запрос, незначительно модифицируемый для всех видов документов.// | ||
+ | ++++ | ||
+ | <1c> | ||
+ | // получение контрагента документа вместе с ссылкой | ||
+ | Функция ЗапросКонтрагентаДокумента(ВидДокумента) Экспорт | ||
+ | </1c> | ||
+ | ++++ описание | | ||
+ | //Опциональная функция//. Позволяет использовать в качестве контрагента для сертификатов (поднадзорного) любой реквизит исходного документа с помощью уточнения на языке запросов. Общий пример см. в [[компоненты:шаблон|шаблоне]]. | ||
+ | ++++ | ||
+ | ==== Внешние события ==== | ||
- | //* Заполнение любых особых полей сертификата сразу после создания | + | <1c> |
+ | //+ Заполнение любых особых полей сертификата сразу после создания | ||
+ | // Ссылка - ссылка на документ учётной базы, выступающий основанием | ||
+ | // ОбъектСертификата - объект заполняемого сертификата | ||
Процедура ДозаполнитьПоляВетСертификата1С(Ссылка, ОбъектСертификата) Экспорт | Процедура ДозаполнитьПоляВетСертификата1С(Ссылка, ОбъектСертификата) Экспорт | ||
Строка 67: | Строка 210: | ||
Функция ДозаполнитьПоляВетСертификата1СПослеЗаписи(Ссылка, ОбъектСертификата) Экспорт | Функция ДозаполнитьПоляВетСертификата1СПослеЗаписи(Ссылка, ОбъектСертификата) Экспорт | ||
- | //+ Дозаполнение документов при разборе в очереди | + | //+ Дозаполнение документов при разборе в очереди до регистрации |
+ | // имеет смысл при использовании последовательной регистрации | ||
Процедура ДозаполнитьПоляВетСертификатов1СПоОчереди(СсылкаНаСертификат) Экспорт | Процедура ДозаполнитьПоляВетСертификатов1СПоОчереди(СсылкаНаСертификат) Экспорт | ||
//+ При проведении вет сертификата, после формирования движений | //+ При проведении вет сертификата, после формирования движений | ||
+ | // позволяет скорректировать подчиненные сертификаты после определения партий | ||
+ | // имеет смысл при использовании последовательной регистрации | ||
+ | // см. типовые решения "перемещение", "реализация из производства" и "удалённое производство" | ||
Процедура ДействияПослеПроведенияВетСертификата(Объект, Движения) Экспорт | Процедура ДействияПослеПроведенияВетСертификата(Объект, Движения) Экспорт | ||
//+ Перед регистрацией сертификата | //+ Перед регистрацией сертификата | ||
+ | // выполняется перед регистрацией пачки однотипных сертификатов по документу основанию | ||
Процедура ДействияПередРегистрациейВетСертификата(Основание, ВидДокумента) Экспорт | Процедура ДействияПередРегистрациейВетСертификата(Основание, ВидДокумента) Экспорт | ||
//+ После успешной регистрации сертификата | //+ После успешной регистрации сертификата | ||
+ | // позволяет скорректировать подчиненные сертификаты после подтверждения регистрации и получения ГУИДа | ||
+ | // имеет смысл при использовании последовательной регистрации | ||
Процедура ДействияПослеРегистрацииВетСертификата(Ссылка, Обработка) Экспорт | Процедура ДействияПослеРегистрацииВетСертификата(Ссылка, Обработка) Экспорт | ||
+ | </1c> | ||
- | //* Получить вес товара | + | ==== Активирующие функции ==== |
- | Функция ПолучитьВесТовара(Товар) Экспорт | + | |
- | // Загрузка внешней обработки в параллельный контекст | + | <1c> |
- | Функция ПолучитьОбъектОбработки() Экспорт | + | //+ Создание ветеринарных документов на основании, возвращает количество созданных сертификатов |
- | + | // позволяет встроиться в процесс для формирования комплексных цепоцек | |
- | // Общие функции | + | |
- | //+ Создание ветеринарного документа на основании, возвращает количество созданных | + | |
Функция СоздатьВетДокиПоОснованию(Обработка, Документ, ВидДокумента=Неопределено) Экспорт | Функция СоздатьВетДокиПоОснованию(Обработка, Документ, ВидДокумента=Неопределено) Экспорт | ||
+ | СписСерт = Обработка.СформироватьОбновитьСертификаты1С(Документ, ВидДокумента).Количество(); | ||
+ | Возврат СписСерт; | ||
+ | КонецФункции | ||
//+ Регистрация ветеринарного документа по основанию | //+ Регистрация ветеринарного документа по основанию | ||
Процедура ЗарегистрироватьПоОснованию(Обработка, ВидДокумента, Документ) Экспорт | Процедура ЗарегистрироватьПоОснованию(Обработка, ВидДокумента, Документ) Экспорт | ||
+ | Если ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Входящий Тогда | ||
+ | Обработка.ЗарегистрироватьВходящуюПартию(Документ); | ||
+ | ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Исходящий Тогда | ||
+ | Обработка.ЗарегистрироватьТранспортнуюПартию(Документ); | ||
+ | ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Производственный Тогда | ||
+ | Обработка.ЗарегистрироватьПроизводственнуюПартию(Документ); | ||
+ | ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Инвентаризация Тогда | ||
+ | Обработка.ЗарегистрироватьИнвентаризацию(Документ); | ||
+ | КонецЕсли; | ||
+ | КонецПроцедуры | ||
//+ Проведение ветеринарного документа по основанию | //+ Проведение ветеринарного документа по основанию | ||
Процедура ПровестиПоОснованию(Обработка, ВидДокумента, Документ) Экспорт | Процедура ПровестиПоОснованию(Обработка, ВидДокумента, Документ) Экспорт | ||
+ | СписВетДок = АСП_Функции.ПолучитьСписокВетДокументов(Документ); | ||
+ | |||
+ | Для Каждого ВетДок Из СписВетДок Цикл | ||
+ | Объект = ВетДок.ПолучитьОбъект(); | ||
+ | Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); | ||
+ | КонецЦикла; | ||
+ | КонецПроцедуры | ||
+ | </1c> | ||
+ | ==== Расширение интерфейса обработки ==== | ||
+ | |||
+ | <1c> | ||
//+ расширения таблицы документов | //+ расширения таблицы документов | ||
Процедура РасширитьТабДокументов(Таб, ТабФормы, ВидДокумента) Экспорт | Процедура РасширитьТабДокументов(Таб, ТабФормы, ВидДокумента) Экспорт | ||
+ | Процедура ЗаполнитьСтрокуТабДокументов(Строка, Документ, ВидДокумента) Экспорт | ||
+ | </1c> | ||
+ | ++++ описание | | ||
+ | Возможность расширить табличную часть выборки документов в обработке программным способом. **Только для обычных форм**. | ||
+ | * **Таб** - таблица значений с данными | ||
+ | * **ТабФормы** - элемент формы для отображения таблицы значений | ||
+ | * **ВидДокумента** - справочник вид сертификата | ||
+ | |||
+ | //Пример:// | ||
+ | <1c> | ||
+ | // добавление колонки с производимой продукцией | ||
+ | Процедура РасширитьТабДокументов(Таб, ТабФормы, ВидДокумента) Экспорт | ||
+ | АСП_Функции.ДобавитьКолонку(Таб, ТабФормы, 4, "Продукция", Тип("СправочникСсылка.Номенклатура")); | ||
+ | ТабФормы.Продукция.Видимость = ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Производственный; | ||
+ | КонецПроцедуры | ||
Процедура ЗаполнитьСтрокуТабДокументов(Строка, Документ, ВидДокумента) Экспорт | Процедура ЗаполнитьСтрокуТабДокументов(Строка, Документ, ВидДокумента) Экспорт | ||
+ | Если ТипЗнч(Документ) = Тип("ДокументСсылка.ОтчетПроизводстваЗаСмену") И Документ.Продукция.Количество()>0 Тогда | ||
+ | Строка.Продукция = Документ.Продукция[0].Номенклатура; | ||
+ | КонецЕсли; | ||
+ | КонецПроцедуры | ||
+ | </1c> | ||
+ | ++++ | ||
- | // подписки на справочники | + | ==== Синхронизация регистров сведений ==== |
+ | |||
+ | <1c> | ||
+ | // подписка на запись справочников, причастных к работе в Меркурии | ||
Процедура АСП_ЗаписьСправочниковПриЗаписи(Источник, Отказ) Экспорт | Процедура АСП_ЗаписьСправочниковПриЗаписи(Источник, Отказ) Экспорт | ||
+ | </1c> | ||
+ | ++++ описание | | ||
+ | Требуется обеспечения целостности данных, а именно дополнительных реквизитов Меркурия, хранящихся в регистрах сведений, а также их частичного автоматического заполнения. | ||
+ | //См. пример в [[компоненты:шаблон|шаблоне]].// | ||
+ | ++++ | ||
+ | |||
+ | ==== Доступ к обработке ==== | ||
+ | <1c> | ||
+ | // Загрузка внешней обработки в параллельный контекст | ||
+ | Функция ПолучитьОбъектОбработки() Экспорт | ||
+ | </1c> | ||
+ | ++++ описание | | ||
+ | Внешняя обработка содержит транспортный модуль, который используется в разных местах интеграции. Для этого необходимо обеспечить подсистеме постоянный доступ к файлу обработки для загрузки и обращения.\\ | ||
+ | Шаблон содержит несколько возможных решений по реализации данной проблемы. | ||
+ | ++++ | ||
- | </code> |