Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

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