Различия
Здесь показаны различия между двумя версиями данной страницы.
компоненты:асп_общие [2018/05/30 13:21] adminasp |
компоненты:асп_общие [2022/07/04 18:58] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Общий модуль АСП_Общие ====== | ||
- | |||
- | Содержит персональные процедуры и функции интеграции клиента. Единственный модуль, рекомендуемый к изменению в процессе интеграции.\\ | ||
- | При новой [[руководства_программиста:интеграция|интеграции]] необходимо проверить каждую функцию модуля а адаптировать поведение под требуемую логику.\\ | ||
- | При [[руководства_программиста:обновление|обновлении]] конфигурации по шаблону требуется уделять ему особое внимание. | ||
- | ===== Описание процедур и функций ===== | ||
- | |||
- | ==== Выборки по справочникам ==== | ||
- | |||
- | <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> | ||
- | ++++ описание | | ||
- | Внешняя обработка содержит транспортный модуль, который используется в разных местах интеграции. Для этого необходимо обеспечить подсистеме постоянный доступ к файлу обработки для загрузки и обращения.\\ | ||
- | Шаблон содержит несколько возможных решений по реализации данной проблемы. | ||
- | ++++ | ||