Асп общие

Материал из База знаний АО АСП
Версия от 22:57, 24 февраля 2025; Shihov (обсуждение | вклад) (Новая страница: «====== Общий модуль АСП_Общие ====== Содержит персональные процедуры и функции интеграции клиента. Единственный модуль, рекомендуемый к изменению в процессе интеграции.<br/>При новой интеграции необходимо проверить к...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску
Общий модуль АСП_Общие

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

Описание процедур и функций

Выборки по справочникам

<1c> // Функция, возвращающая запрос для выборки поднадзорных организаций // Используется при построении динамического отбора и заполнения таблицы организаций в обработке Функция ЗапросПоднадзорныхОрганизаций(Поместить=Ложь) Экспорт </1c> ++++ описание |

Должна возвращать запрос с полями

'Ссылка

' и

'Владелец

', где

  • Ссылка используется в качестве поднадзорного
  • Владелец - в качестве хозяйствующего

Параметр

'Поместить

' указывает, должен ли быть помещён запрос в виртуальную таблицу

'Ссылки

'.

Примеры:

<1c> // Вариант с использованием одного справочника Возврат ПоместитьЗапрос( "ВЫБРАТЬ | Организации.Ссылка, | Организации.Ссылка КАК Владелец |ИЗ | Справочник.Организации КАК Организации", Поместить); </1c> <1c> // Вариант с извлечением данных из регистра напрямую в случае множества справочников Возврат ПоместитьЗапрос( "ВЫБРАТЬ | АСП_Поднадзорные.Ссылка, | АСП_Поднадзорные.Владелец |ИЗ | РегистрСведений.АСП_Поднадзорные КАК АСП_Поднадзорные |ГДЕ | АСП_Поднадзорные.Владелец ССЫЛКА Справочник.Организации", Поместить); </1c> ++++

<1c> // Функция, возвращающая запрос для выборки поднадзорных контрагентов // Используется при построении динамического отбора и заполнения таблицы контрагентов в обработке Функция ЗапросПоднадзорныхКонтрагентов(Поместить=Ложь) Экспорт </1c> ++++ описание |

Должна возвращать запрос с полями

'Ссылка

' и

'Владелец

', где

  • Ссылка используется в качестве поднадзорного
  • Владелец - в качестве хозяйствующего

Параметр

'Поместить

' указывает, должен ли быть помещён запрос в виртуальную таблицу

'Ссылки

'.

Пример:

<1c> // универсальная выборка из регистра Возврат ПоместитьЗапрос( "ВЫБРАТЬ | * |ИЗ | РегистрСведений.АСП_Поднадзорные КАК АСП_Поднадзорные |ГДЕ | АСП_Поднадзорные.Владелец ССЫЛКА Справочник.Контрагенты", Поместить); </1c> ++++ <1c> // Функция, возвращающая запрос товаров для универсального отбора // и заполнения таблицы товаров в обработке Функция ЗапросТоваров(ВидСправочника = Неопределено, Поместить=Ложь) Экспорт </1c> ++++ описание |

Запрос должен возвращать одно поле

'Ссылка

'.

  • 'ВидСправочника
    
    ' - название вида справочника 1С, выбранного интерактивно
  • 'Поместить
    
    ' - режим помещения запроса в виртуальную таблицу
!: Для иерархического отображения запрос не должен содержать соединений.
Пример:

<1c> Если ВидСправочника = Неопределено Тогда ВидСправочника = "Номенклатура"; КонецЕсли; Возврат ПоместитьЗапрос( "ВЫБРАТЬ | Номенклатура.Ссылка | Номенклатура.Наименование КАК Представление |ИЗ | Справочник."+ВидСправочника+" КАК Номенклатура", Поместить); </1c> ++++

Подготовка к ХС/ПС к регистрации

<1c> // Получить полное наименование // для регистрации контрагентов в системе Меркурий Функция НаименованиеПолное(Контрагент) Экспорт </1c> ++++ описание | Функция получает ссылку на контрагента (хозяйствующего или поднадзорного) и возвращает строковое представление.
Используется только в запросах на регистрацию в Меркурии.

Пример:

<1c> Если ТипЗнч(Контрагент) = Тип("СправочникСсылка.Организации") ИЛИ ТипЗнч(Контрагент) = Тип("СправочникСсылка.Контрагенты") Тогда Возврат Контрагент.НаименованиеПолное; КонецЕсли; Возврат Контрагент.Наименование; </1c> ++++

<1c> //* Получить полное наименование товара Функция НаименованиеТовара(Товар) Экспорт </1c> ++++ описание | Функция получает ссылку на товар и возвращает его наименование. Используется при регистрации номенклатуры в Меркурии с наименованием, отличающимся от стандартного. Полезно в применении с характеристиками номенклатуры.

Пример:

<1c> Если Метаданные.Справочники.Найти("ХарактеристикиНоменклатуры")<>Неопределено И ТипЗнч(Товар)= Тип("СправочникСсылка.ХарактеристикиНоменклатуры") тогда Возврат Товар.Владелец.НаименованиеПолное + " ("+Товар.Наименование+")"; Иначе Возврат Товар.Наименование; КонецЕсли; </1c> ++++

<1c> //* Получить адрес организации/контрагента // ТипАдрес = "Юридический" / "Фактический" Функция ПолучитьАдрес(Объект, ТипАдреса) Экспорт

//* Установить адрес организации/контрагента Процедура УстановитьАдрес(Ссылка, ТипАдреса, Адрес) Экспорт </1c> ++++ описание | Функции получения и установки адресов в карточки контрагентов, связанные хозяйствующими и поднадзорными субъектами.

  • 'Ссылка
    
    ' - ссылка на элемент справочника
  • 'ТипАдреса
    
    ' - Юридический / Фактический
  • 'Адрес
    
    ' - новый адрес строкой

Функция также возвращает адрес строкой.
Используются в интеллектуальном механизме поиска реквизитов для регистрации контрагентов в системе Меркурий.

Пример см. в [[компоненты/шаблон|шаблоне]].

++++

<1c> //* функция получения кода ОКПФ, специфичного для конфигурации Функция КодОКПФ(Ссылка) Экспорт </1c> ++++ описание |

Функция возвращает код по ОКПФ по ссылке на элемент справочника хозяйствующего субъекта (Организации, Контрагенты).
Используется для заполнения поля хозяйствующего субъекта для регистрации в Меркурии.
Вызывается только из события

'АСП_ЗаписьСправочниковПриЗаписи

'.

Пример см. в [[компоненты/шаблон|шаблоне]].

++++

<1c> //* Тип создаваемого или редактируемого хозяйствующего субъекта: //1 - юридическое лицо; //2 - физическое лицо; //3 - индивидуальный предприниматель. Функция ТипКонтрагента(Ссылка) Экспорт </1c> ++++ описание |

Функция возвращает код типа субъекта по ссылке на элемент справочника хозяйствующего субъекта (Организации, Контрагенты).
Используется для заполнения поля хозяйствующего субъекта для регистрации в Меркурии.
Вызывается только из события

'АСП_ЗаписьСправочниковПриЗаписи

'.

Пример см. в [[компоненты/шаблон|шаблоне]].

++++

Запросы документов

<1c> //* Получение таблицы товаров от конфигурации Функция ЗапросТаблицыТоваров(ВидДокумента = Неопределено) Экспорт Функция ЗапросТаблицыПродукции(ВидДокумента = Неопределено) Экспорт Функция ЗапросТаблицыСырья(ВидДокумента = Неопределено) Экспорт Функция ЗапросТаблицыОприходования(ВидДокумента = Неопределено) Экспорт Функция ЗапросТаблицыСписания(ВидДокумента = Неопределено) Экспорт </1c> ++++ описание |

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

Правила построения запроса:

- запрос должен выбирать ссылки из виртуальной таблицы

'СсылкиВет

', которая подготавливается заранее динамическим фильтром; - для универсальности выборка может иметь левое соединение с таблицами документа

'РеализацияТоваровУслуг

', который заменится на __правильный__ для выполнения запроса автоматически; - запрос должен возвращать поля

'Ссылка

',

'Номенклатура

',

'Количество

',

'КоличествоУпаковок

' и

'Сумма

', сгруппированные по

'Ссылка

'; - запрос также может возвращать поля

'Категория

',

'Единица

',

'Упаковка

',

'ДатаВыработки

' и прочие поля для заполнения табличных частей сертификата.

Логика функций:
  • 'ЗапросТаблицыТоваров
    
    ' - универсальная функция, возвращающая запрос для заполнения таблицы документов в обработке для всех видов документов, а также возвращающая таблицы товаров для заполнения
    'входящих
    
    ' и
    'исходящих
    
    ' сертификатов.
  • 'ЗапросТаблицыПродукции
    
    ' и
    'ЗапросТаблицыСырья
    
    ' - используются только при заполнении производственных сертификатов.
  • 'ЗапросТаблицыОприходования
    
    ' и
    'ЗапросТаблицыСписания
    
    ' - используются только при заполнении инвентаризаций.
Пример см. в [[компоненты/шаблон|шаблоне]]. В примере используется один общий запрос, незначительно модифицируемый для всех видов документов.

++++ <1c> // получение контрагента документа вместе с ссылкой Функция ЗапросКонтрагентаДокумента(ВидДокумента) Экспорт </1c> ++++ описание |

Опциональная функция

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

++++

Внешние события

<1c> //+ Заполнение любых особых полей сертификата сразу после создания // Ссылка - ссылка на документ учётной базы, выступающий основанием // ОбъектСертификата - объект заполняемого сертификата Процедура ДозаполнитьПоляВетСертификата1С(Ссылка, ОбъектСертификата) Экспорт

//+ Заполнение любых особых полей сертификата сразу после записи Функция ДозаполнитьПоляВетСертификата1СПослеЗаписи(Ссылка, ОбъектСертификата) Экспорт

//+ Дозаполнение документов при разборе в очереди до регистрации // имеет смысл при использовании последовательной регистрации Процедура ДозаполнитьПоляВетСертификатов1СПоОчереди(СсылкаНаСертификат) Экспорт

//+ При проведении вет сертификата, после формирования движений // позволяет скорректировать подчиненные сертификаты после определения партий // имеет смысл при использовании последовательной регистрации // см. типовые решения "перемещение", "реализация из производства" и "удалённое производство" Процедура ДействияПослеПроведенияВетСертификата(Объект, Движения) Экспорт

//+ Перед регистрацией сертификата // выполняется перед регистрацией пачки однотипных сертификатов по документу основанию Процедура ДействияПередРегистрациейВетСертификата(Основание, ВидДокумента) Экспорт

//+ После успешной регистрации сертификата // позволяет скорректировать подчиненные сертификаты после подтверждения регистрации и получения ГУИДа // имеет смысл при использовании последовательной регистрации Процедура ДействияПослеРегистрацииВетСертификата(Ссылка, Обработка) Экспорт </1c>

Активирующие функции

<1c> //+ Создание ветеринарных документов на основании, возвращает количество созданных сертификатов // позволяет встроиться в процесс для формирования комплексных цепоцек Функция СоздатьВетДокиПоОснованию(Обработка, Документ, ВидДокумента=Неопределено) Экспорт СписСерт = Обработка.СформироватьОбновитьСертификаты1С(Документ, ВидДокумента).Количество(); Возврат СписСерт; КонецФункции

//+ Регистрация ветеринарного документа по основанию Процедура ЗарегистрироватьПоОснованию(Обработка, ВидДокумента, Документ) Экспорт Если ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Входящий Тогда Обработка.ЗарегистрироватьВходящуюПартию(Документ); ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Исходящий Тогда Обработка.ЗарегистрироватьТранспортнуюПартию(Документ); ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Производственный Тогда Обработка.ЗарегистрироватьПроизводственнуюПартию(Документ); ИначеЕсли ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Инвентаризация Тогда Обработка.ЗарегистрироватьИнвентаризацию(Документ); КонецЕсли; КонецПроцедуры

//+ Проведение ветеринарного документа по основанию Процедура ПровестиПоОснованию(Обработка, ВидДокумента, Документ) Экспорт СписВетДок = АСП_Функции.ПолучитьСписокВетДокументов(Документ);

Для Каждого ВетДок Из СписВетДок Цикл Объект = ВетДок.ПолучитьОбъект(); Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); КонецЦикла; КонецПроцедуры </1c>

Расширение интерфейса обработки

<1c> //+ расширения таблицы документов Процедура РасширитьТабДокументов(Таб, ТабФормы, ВидДокумента) Экспорт Процедура ЗаполнитьСтрокуТабДокументов(Строка, Документ, ВидДокумента) Экспорт </1c> ++++ описание |

Возможность расширить табличную часть выборки документов в обработке программным способом.

'Только для обычных форм

'.

  • 'Таб
    
    ' - таблица значений с данными
  • 'ТабФормы
    
    ' - элемент формы для отображения таблицы значений
  • 'ВидДокумента
    
    ' - справочник вид сертификата
Пример:

<1c> // добавление колонки с производимой продукцией Процедура РасширитьТабДокументов(Таб, ТабФормы, ВидДокумента) Экспорт АСП_Функции.ДобавитьКолонку(Таб, ТабФормы, 4, "Продукция", Тип("СправочникСсылка.Номенклатура")); ТабФормы.Продукция.Видимость = ВидДокумента.ТипСертификата = Перечисления.АСП_ТипВетСертификата.Производственный; КонецПроцедуры

Процедура ЗаполнитьСтрокуТабДокументов(Строка, Документ, ВидДокумента) Экспорт Если ТипЗнч(Документ) = Тип("ДокументСсылка.ОтчетПроизводстваЗаСмену") И Документ.Продукция.Количество()>0 Тогда Строка.Продукция = Документ.Продукция[0].Номенклатура; КонецЕсли; КонецПроцедуры </1c> ++++

Синхронизация регистров сведений

<1c> // подписка на запись справочников, причастных к работе в Меркурии Процедура АСП_ЗаписьСправочниковПриЗаписи(Источник, Отказ) Экспорт </1c> ++++ описание | Требуется обеспечения целостности данных, а именно дополнительных реквизитов Меркурия, хранящихся в регистрах сведений, а также их частичного автоматического заполнения.

См. пример в [[компоненты/шаблон|шаблоне]].

++++

Доступ к обработке

<1c> // Загрузка внешней обработки в параллельный контекст Функция ПолучитьОбъектОбработки() Экспорт </1c> ++++ описание | Внешняя обработка содержит транспортный модуль, который используется в разных местах интеграции. Для этого необходимо обеспечить подсистеме постоянный доступ к файлу обработки для загрузки и обращения.
Шаблон содержит несколько возможных решений по реализации данной проблемы. ++++