Настройка внешней обработки СБИС для 1С 8.х — различия между версиями
(→Структура файла) |
(→Файл настроек конфигурации) |
||
Строка 86: | Строка 86: | ||
В данном файле описаны общие параметры, необходимые для работы обработки | В данном файле описаны общие параметры, необходимые для работы обработки | ||
− | |||
====Имя файла==== | ====Имя файла==== | ||
− | |||
Название файла формируется по шаблону «ВО82[Код конфигурации]_Конфигурация.sbis3.xml» Например, для Бухгалтерии 2.0 это будет ВО2БУХ2_Конфигурация.sbis3.xml | Название файла формируется по шаблону «ВО82[Код конфигурации]_Конфигурация.sbis3.xml» Например, для Бухгалтерии 2.0 это будет ВО2БУХ2_Конфигурация.sbis3.xml | ||
Строка 100: | Строка 98: | ||
*КА - Комплексная автоматизация | *КА - Комплексная автоматизация | ||
*БГУ - Бухгалтерия госучреждений 1 | *БГУ - Бухгалтерия госучреждений 1 | ||
− | + | ||
====Структура файла==== | ====Структура файла==== | ||
− | + | ||
Содержит плоским списком параметры конфигурации, которые необходимы для работы обработки: | Содержит плоским списком параметры конфигурации, которые необходимы для работы обработки: | ||
<source lang="xml"> | <source lang="xml"> | ||
Строка 190: | Строка 188: | ||
</source> | </source> | ||
К этой строке в конце обработкой будет дописан путь к каталогу, где лежит нужный dbf-файл с номенклатурой поставщика либо со статусами. | К этой строке в конце обработкой будет дописан путь к каталогу, где лежит нужный dbf-файл с номенклатурой поставщика либо со статусами. | ||
− | |||
− | |||
===Файлы настроек реестров Продажа / Покупка=== | ===Файлы настроек реестров Продажа / Покупка=== |
Версия 16:49, 19 января 2017
Содержание
[убрать]- 1 Общее описание
- 2 Состав обработки
- 3 Основные принципы настройки
- 4 Первый запуск обработки
- 5 Файлы настроек (инишки)
- 6 Описание параметров в файлах настроек
- 7 Исправление ошибок в настройках
- 8 Настройка
- 9 Пользовательские фильтры в реестрах Продажа/Покупка
Общее описание
Внешняя обработка обмена электронными документами для 1С позволяет выгружать файлы документов реализации и актов сверки взаиморасчетов для последующей отправки их контрагентам, а также загружать файлы, присланные контрагентами. Все потребительские настройки выведены в интерфейс обработки, здесь рассматриваются вопросы адаптации внешней обработки под нестандартные конфигурации или особые пожелания клиентов.
Почему возникает необходимость настройки?
Конфигурации 1С зачастую изменяются пользователями, в результате таблицы, поля, предусмотренные в типовой конфигурации, могут называться по-другому, или вообще отсутствовать.
Что можно настраивать во внешней обработке?
Что можно настраивать | Уровень знаний |
---|---|
Отправка документов | |
Добавление не поддерживаемого реестра документов в раздел Продажа | Средний |
Содержание реестров документов в раздела Продажа | Средний |
Список документов 1С которые необходимы для формирования одного пакета документов | Средний |
Параметры фильтрации списка документов для каждого реестра | Продвинутый |
Какие электронные документы будут сформированы из документа 1С | Средний |
Изменить источники данных для реквизитов электронных документов | Начальный |
Добавить новые реквизиты в стандартные электронные документы | Начальный |
Описать условия заполнения реквизитов электронных документов | Продвинутый |
Описать условия формирования пакета документов | Продвинутый |
Добавить к пакету документов не формализованный xls или pdf документ сформированный из макета документа 1С | Средний |
Загрузка документов | |
Определить какие электронные документы можно загружать в 1С | Средний |
Определить какие документы 1С можно создать из электронного документа | Средний |
Определить какие реквизиты документа 1С будут заполнены | Начальный |
Описать условия заполнения реквизитов документа 1С | Продвинутый |
Состав обработки
Обработка состоит из одного файла:
- для толстого клиента Sbis1C.epf
- для управляемых форм Sbis1C_UF.epf
Файл обработки при запуске распаковывает на диск:
- ActiveX компонент который отвечает за взаимодействие с СБИС через https
- Конфигурационные XML файлы описывающие источники данных необходимые для работы обработки.
Обработка может быть дополнена пользовательской обработкой ВнешниеФункции_Клиент.epf.
Основные принципы настройки
- Код самой обработки ни при каких условиях не изменяется.
- Конфигурационные файлы выгружаемые обработкой ни при каких условиях не изменяются.
- Вся настройка производится в пользовательских конфигурационных файлах путем переопределения параметров, либо добавления новых.
- При необходимости написать функцию для получения какого либо значения или изменения алгоритма выгрузки создается пользовательская обработка "ВнешниеФункции_Клиент.epf" в которой переопределяются имеющихся функции или создаются новые. Обработка "ВнешниеФункции_Клиент.epf" должна лежать в каталоге настроек.
Первый запуск обработки
- Запустить 1С. Добавить обработку в список дополнительных внешних обработок. Для этого заходим в меню Сервис/Дополнительные отчеты и обработки/Дополнительные внешние обработки. В открывшемся окне нажимаем добавить и выбираем файл обработки.
- Запустить обработку.
- При запуске обработка сама выгрузит файлы настроек в каталог C:\Sbis1C. Для клиент-серверной 1С, запущенной в управляемом режиме, этот каталог будет располагаться на сервере. При необходимости каталог настроек можно изменить на вкладке Настройки/Файлы настроек в обработке.
Если конфигурация клиента нестандартная в Служебных сообщениях появится список ошибок – говорящих о том, что в базе данных нет каких-то полей или они заданы неверно.
Файлы настроек (инишки)
У 1С есть множество разнообразных конфигураций, которые могут заметно отличаться друг от друга по способу хранения данных. Для того, чтобы не делать отдельную обработку под каждую конфигурацию, или не делать кучу условий внутри одной обработки, мы используем файлы настроек, которые говорят обработке, где в текущей конфигурации хранится необходимое значение.
Файлы настроек, это xml файлы определенного формата. По старой традиции мы их называем инишками (в внешней обработке первой версии, это были ini файлы).
Для каждой конфигурации делается отдельный набор инишек. Для наиболее популярных конфигураций готовые наборы инишек (стандартные) уже включены в обработку.
Если обработка при запуске определила, что у Вас одна из поддерживаемых версий 1С, то она автоматически установит нужный набор инишек.
Стандартные инишки автоматически обновляются вместе с обработкой, именно поэтому их нельзя редактировать. Для внесения исправлений в стандартные инишки реализован механизм заплаток - Пользовательских файлов настроек (пользовательских инишек).Пользовательские инишки отличаются от стандартных расширением файла ( у стандартного расширение .sbis3.xml, у пользовательского .xml). При каждом запуске обработки формируется сводный файл настроек, в котором параметры из пользовательской инишки заменяют аналогичные параметры стандартной.
Как было сказано ранее, для каждой конфигурации делается отдельный набор файлов настроек. Данный набор состоит из:
Файл настроек конфигурации
В данном файле описаны общие параметры, необходимые для работы обработки
Имя файла
Название файла формируется по шаблону «ВО82[Код конфигурации]_Конфигурация.sbis3.xml» Например, для Бухгалтерии 2.0 это будет ВО2БУХ2_Конфигурация.sbis3.xml
Коды типовых конфигураций поддерживаемых обработкой:
- БУХ1 - Бухгалтерия предприятия 1.6
- БУХ2 - Бухгалтерия предприятия 2.0
- БУХ3 - Бухгалтерия предприятия 3.0
- УТ10 - Управление торговлей 10.х
- УТ11 - Управление торговлей 11.х
- УПП - Управление производственным предприятием 1
- КА - Комплексная автоматизация
- БГУ - Бухгалтерия госучреждений 1
Структура файла
Содержит плоским списком параметры конфигурации, которые необходимы для работы обработки:
<!--Данные для поиска контрагента в справочнике по ИНН/КПП (определяется название справочника и реквизитов, в которых хранятся ИНН и КПП)-->
<Контрагенты>Справочник.Контрагенты</Контрагенты>
<Контрагенты_ИНН>[Контрагенты].ИНН</Контрагенты_ИНН>
<Контрагенты_КПП>[Контрагенты].КПП</Контрагенты_КПП>
<!--Данные для поиска организации в справочнике по ИНН/КПП (определяется название справочника и реквизитов, в которых хранятся ИНН и КПП)-->
<Организации>Справочник.Организации</Организации>
<Организации_ИНН>[Организации].ИНН</Организации_ИНН>
<Организации_КПП>[Организации].КПП</Организации_КПП>
<!--Определение формы работы со статусами. В зависимости от места хранения статусов электронных документов возможны значения: 'Статусы_Регистры' и 'Статусы_ДБФ'-->
<ФормаРаботыСоСтатусами>'Статусы_Регистры'</ФормаРаботыСоСтатусами>
<!--Определение формы работы с номенклатурой контрагентов. В зависимости от места хранения сопоставления номенклатуры возможны значения: 'СопоставлениеНоменклатуры_ДБФ',
'СопоставлениеНоменклатуры_Регистры', 'СопоставлениеНоменклатуры_Справочники','СопоставлениеНоменклатуры_СуммовойУчет'.
'СопоставлениеНоменклатуры_ДБФ' - означает, что сопоставление нашей номенклатуры с номенклатурой контрагента хранится в dbf-файлах в подкаталоге НоменклатураПоставщиков каталога настроек.
'СопоставлениеНоменклатуры_Регистры' - сопоставление номенклатуры хранится в регистре сведений (обычно этот регистр называется "НоменклатураКонтрагентов")
'СопоставлениеНоменклатуры_Справочники' - сопоставление хранится в справочнике (обычно справочник называется "НоменклатураПоставщиков")
'СопоставлениеНоменклатуры_СуммовойУчет' - используется, если ведется суммовой учет и в сопоставлении номенклатуры нет необходимости. В этом случае любой номенклатуре контрагента
сопоставляется одна и та же карточка номенклатуры в нашей системе. Для определения, какая именно это будет карточка необходимо добавить параметр "СуммовойУчетКодНоменклатуры",
в котором указать в одинарных кавычках код номенклатуры.-->
<ФормаРаботыСНоменклатуройПоставщика>'СопоставлениеНоменклатуры_ДБФ'</ФормаРаботыСНоменклатуройПоставщика>
<!--Определение параметров для сопоставления номенклатуры в случае, если сопоставление хранится в базе 1С (в справочнике или регистре сведений)-->
<НоменклатураПоставщиков Отбор_Идентификатор="НоменклатураПоставщиков_Идентификатор" Отбор_Владелец="НоменклатураПоставщиков_Контрагент">Справочник.НоменклатураПоставщиков</НоменклатураПоставщиков>
<НоменклатураПоставщиков_Наименование Данные="Название">[НоменклатураПоставщиков].Наименование</НоменклатураПоставщиков_Наименование>
<НоменклатураПоставщиков_Идентификатор Данные="Идентификатор">[НоменклатураПоставщиков].Идентификатор</НоменклатураПоставщиков_Идентификатор>
<НоменклатураПоставщиков_Номенклатура Данные="Номенклатура">[НоменклатураПоставщиков].Номенклатура</НоменклатураПоставщиков_Номенклатура>
<НоменклатураПоставщиков_Характеристика Данные="Характеристика">''</НоменклатураПоставщиков_Характеристика>
<НоменклатураПоставщиков_Контрагент Данные="Контрагент">[НоменклатураПоставщиков].Владелец</НоменклатураПоставщиков_Контрагент>
<!--Данные для автоматического создания карточек номенклатуры-->
<!--Параметр Номенклатура так же используется при сопоставлении номенклатуры. Он определяет, из какого справочника выбирается наша номенклатура, при сопоставлении с номенклатурой контрагента.-->
<Номенклатура>Справочник.Номенклатура</Номенклатура>
<Номенклатура_Наименование Данные="Название">[Номенклатура].Наименование</Номенклатура_Наименование>
<Номенклатура_ПолноеНаименование Данные="Название">[Номенклатура].НаименованиеПолное</Номенклатура_ПолноеНаименование>
<Номенклатура_ЕдиницаИзмерения>[Номенклатура].БазоваяЕдиницаИзмерения</Номенклатура_ЕдиницаИзмерения>
<ЕдиницаИзмерения>Справочник.КлассификаторЕдиницИзмерения</ЕдиницаИзмерения>
<Номенклатура_Комментарий>[Номенклатура].Комментарий</Номенклатура_Комментарий>
<Номенклатура_Услуга>[Номенклатура].Услуга</Номенклатура_Услуга>
<!--Параметр ХарактеристикиНоменклатуры определяет, из какого справочника выбирается характеристика номенклатуры, при сопоставлении с номенклатурой контрагента.
В стандартных настройках отсутствует. Используется только в случае хранения характеристик в нестандартном справочнике (например, справочник "Характеристики", а не "ХарактеристикиНоменклатуры")-->
<ХарактеристикиНоменклатуры>Справочник.Характеристики</ХарактеристикиНоменклатуры>
Описание основных параметров:
Форма работы со статусами Понять, в каком состоянии находится документ (доставлен ли он до контрагента, утвержден или отклонен), можно по статусу электронного документа. По умолчанию статус и идентификатор электронного документа, соответствующего документу 1С, записываются в регистр сведений (ЗначенияСвойствОбъектов или ДополнительныеСведения в зависимости от конфигурации). При этом в файле настроек конфигурации указана форма работы со статусами 'Статусы_Регистры'.
Если в конфигурации нет таких регистров или другого места для хранения статусов, в файле настроек необходимо указать 'Статусы_ДБФ' - в этом случае статусы будут храниться в dbf-файле в каталоге настроек обработки.
Форма работы с номенклатурой контрагентов Перед загрузкой полученных документов необходимо сопоставить номенклатуру контрагента со своей. Результат этого сопоставления сохраняется, чтобы в следующий раз, когда от контрагента придет документ с такой же номенклатурой, сопоставление происходило автоматически. По умолчанию сопоставление записывается в dbf-файлы в подкаталоге НоменклатураПоставщиков каталога настроек обработки. При этом в файле настроек конфигурации указана форма работы с номенклатурой контрагентов 'СопоставлениеНоменклатуры_ДБФ'.
Во многих конфигурациях 1С есть специальные справочники или регистры сведений для хранения сопоставления номенклатуры. Запись
<ФормаРаботыСНоменклатуройПоставщика>'СопоставлениеНоменклатуры_Регистры'</ФормаРаботыСНоменклатуройПоставщика>
означает, что сопоставление номенклатуры будет храниться в регистре сведений (обычно этот регистр называется "НоменклатураКонтрагентов"). Минус такого варианта в том, что в большинстве конфигураций данный регистр не позволяет сопоставить нескольким видам номенклатуры контрагента одну и ту же карточку своей номенклатуры.
Запись
<ФормаРаботыСНоменклатуройПоставщика>'СопоставлениеНоменклатуры_Справочники'</ФормаРаботыСНоменклатуройПоставщика>
означает, что сопоставление номенклатуры будет храниться в справочнике (обычно справочник называется "НоменклатураПоставщиков").
Примечание. При загрузке исходящих документов (в случае, если документы были сформированы и отправлены из другой учетной системы), если необходимо сопоставить номенклатуру другой учетной системы с номенклатурой в текущей базе 1С и сопоставление хранится в регистрах или справочниках, то в справочнике Контрагенты должен быть заведен контрагент с реквизитами нашей организации (ИНН/КПП), так как для исходящего документа владельцем номенклатуры контрагента является наша организация.
При суммовом учете в сопоставлении номенклатуры нет необходимости. В этом случае любой номенклатуре контрагента сопоставляется одна и та же карточка номенклатуры в нашей системе. В этом случае необходимо указать форму работы с номенклатурой 'СопоставлениеНоменклатуры_СуммовойУчет'. Для определения, какая именно карточка номенклатуры будет сопоставлена со всей номенклатурой контрагента, необходимо добавить параметр "СуммовойУчетКодНоменклатуры", в котором указать в одинарных кавычках код номенклатуры:
<СуммовойУчетКодНоменклатуры>'00000456'</СуммовойУчетКодНоменклатуры>
Строка подключения к dbf-файлам Дополнительно в файле настроек конфигурации может быть указан параметр "СтрокаПодключенияДБФ". Он необходим в том случае, если на компьютере не установлен драйвер работы с dbf-файлами, используемый обработкой по умолчанию (Microsoft dBASE Driver) и при этом сопоставление номенклатуры либо статусы хранятся в dbf. Например:
<СтрокаПодключенияДБФ>'Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties="DBASE IV;";Data Source='</СтрокаПодключенияДБФ>
К этой строке в конце обработкой будет дописан путь к каталогу, где лежит нужный dbf-файл с номенклатурой поставщика либо со статусами.
Файлы настроек реестров Продажа / Покупка
Разделы Продажа/Покупка внешней обработки содержат подразделы, в которых отображаются списки документов 1С, например, "Реализация товаров и услуг", "Акт об оказании производственных услуг", "Заказ поставщику" и другие. Из этих разделов документы 1С можно отправить контрагентам в электронном виде. Список пунктов меню раздела Продажа - динамический. Он зависит от количества инишек находящихся в каталоге настроек.
Состав подразделов в Продаже/Покупке определяется файлами настроек.
Имя файла
Структура файла
Дополнительные возможности выгрузки
Форма формирования файла
Проверка заполнения кодов номенклатуры контрагента
Выгрузка одной табличной части в разные документы по условию
Прикрепление внешнего файла к пакету
Формирование пакета электронных документов
Файлы настроек загрузки
В разделе внешней обработки Полученные отображаются электронные документы, полученные от контрагентов. Какие из этих документов можно загрузить в 1С, определяется файлами настроек для загрузки.
Имя файла
Структура файла
Описание параметров в файлах настроек
Прямое обращение к данным из базы
Есть два ключевых слова, которые означают, что в данный параметр файла настроек нужно поместить ссылку на текущий выгружаемый объект 1С (документ или элемент справочника):
- Документ
- ЗаписьСправочника
Например, следующая запись означает, что при выгрузке определенного документа 1С в параметре "Документ" будет ссылка на этот документ.
<Документ>Документ.РеализацияТоваровУслуг</Документ>
В стандартных файлах настроек не используется выгрузка элементов справочника, но в пользовательском файле это вполне можно настроить. Например, если мы хотим отправлять в электронном виде договоры контрагентов (хранящиеся в справочнике "Договоры контрагентов"), то запись в файле настроек будет выглядеть так:
<Документ>ЗаписьСправочника.ДоговорыКонтрагентов</Документ>
В этом случае в параметре "Документ" будет ссылка на выгружаемый договор.
Обращение к данным через ранее определенный параметр
Ранее определенный параметр пишется в квадратных скобках. После скобки ставится точка и далее название реквизита (табличной части, значение перечисления). Например:
<Сторона_ИНН>[Сторона].ИНН</Сторона_ИНН>
Чтобы понять, какое значение попадет в данный параметр, нужно проследить всю цепочку параметров. Смотрим определение параметра "Сторона":
<Сторона>[Документ].Организация</Сторона>
Далее смотрим определение параметра "Документ":
<Документ>Документ.РеализацияТоваровУслуг</Документ>
Про параметр "Документ" мы уже знаем, что это прямое обращение к выгружаемому документу. Таким образом, мы понимаем, что в параметре "Сторона_ИНН" будет ИНН организации из выгружаемого документа.
Присвоение параметру строкового значения
В ряде случаев не требуется брать значение из 1С, т.к. оно заранее известно - например тип документа является константой, в этих случаях это значение можно явно присвоить параметру.
<Файл_Формат>'ЭДОНакл'</Файл_Формат>
Строковая константа заключается в одинарные кавычки
Выбор документов (запрос к базе)
С помощью запроса выбираются документы из базы 1С. Выбранные документы отображаются в определенном подразделе разделов Продажа или Покупка. Запросом определяется состав документов, отправляемых контрагенту одним комплектом.
Результатом выполнения запроса является таблица, с определенным набором полей:
- Документ - основной документ комплекта
- ДокументПроведен - признак проведения документа, используется при отображении пиктограммы документа в реестре
- ДокументПометкаУдаления - признак удаления документа, используется при отображении пиктограммы документа в реестре
- ДатаДокумента - дата документа, отображается в реестре документов
- НомерДокумента - номер документа, отображается в реестре документов
- Контрагент - название контрагента, отображается в реестре документов
- Организация - название организации, отображается в реестре документов
- Комментарий - комментарий документа, отображается в реестре документов
- Склад - склад документа, отображается в реестре документов
- СуммаДокумента - сумма документа, отображается в реестре документов
- Приложение - документ, связанный с основным документом комплекта
- СуммаПриложения - сумма связанного документа
- ДатаПриложения - дата связанного документа
- НомерПриложения - номер связанного документа
- СтатусЭД - статус электронного документа (заполнен, если документ уже отправлен в электронном виде), отображается пиктограммой в реестре документов
Дополнительно могут быть заполнены поля:
- ФайлНастроекДокумента - название файла настроек, который будет использован при выгрузке основного документа комплекта (без префиксов и расширения, например, "СчетФактураНаАванс")
- ФайлНастроекПриложения - название файла настроек, который будет использован при выгрузке документа-приложения (без префиксов и расширения)
При обработке результата запроса записи группируются по основному документу, таким образом мы получаем запись с одним основным документом и несколькими приложениями - все это при отправке контрагенту попадет в один комплект документов. Наглядно это можно увидеть, открыв карточку документа из реестров в разделах Продажа или Покупка.
Запрос содержит стандартный набор параметров:
- ДатНач - начальная дата, с которой запрашиваются документы
- ДатКон - конечная дата, по которую запрашиваются документы
- Контрагент - контрагент, по которому отбираются документы
- ЗначениеКонтрагентЗаполнено - признак заполненности фильтра по контрагенту
- ТекущаяОрганизация - организация, по которой отбираются документы
- ЗначениеТекущаяОрганизацияЗаполнено - признак заполненности фильтра по организации
- ТекущийДокумент - определенный документ (заполняется при использовании внешней обработки, как внешней печатной формы определенного документа)
- ЗначениеТекущийДокументЗаполнено - признак заполненности параметра ТекущийДокумент
Значения параметров берутся из фильтра, установленного в интерфейсе обработки.
Могут быть установлены дополнительные параметры при использовании пользовательских фильтров (см. раздел про пользовательские фильтры)
Текст запроса прописывается в параметр <ЗапросСпискаДокументов>, например:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
РеализацияТоваровУслуг.Ссылка,
РеализацияТоваровУслуг.Проведен,
РеализацияТоваровУслуг.ПометкаУдаления,
РеализацияТоваровУслуг.Дата,
РеализацияТоваровУслуг.Номер,
РеализацияТоваровУслуг.Контрагент.Наименование КАК Контрагент,
РеализацияТоваровУслуг.Организация.Наименование КАК Организация,
ВЫРАЗИТЬ(РеализацияТоваровУслуг.Комментарий КАК СТРОКА(1000)) КАК Комментарий,
РеализацияТоваровУслуг.Склад.Наименование КАК Склад,
РеализацияТоваровУслуг.СуммаДокумента,
РеализацияТоваровУслуг.СчетНаОплатуПокупателю КАК Приложение,
РеализацияТоваровУслуг.СчетНаОплатуПокупателю.СуммаДокумента КАК СуммаПриложения,
РеализацияТоваровУслуг.СчетНаОплатуПокупателю.Дата КАК ДатаПриложения,
РеализацияТоваровУслуг.СчетНаОплатуПокупателю.Номер КАК НомерПриложения
ПОМЕСТИТЬ ВТ_Реализация
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
((РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон) ИЛИ (НЕ &ЗначениеДатаКонЗаполнено И РеализацияТоваровУслуг.Дата > &ДатаНач))
И ((РеализацияТоваровУслуг.Контрагент = &Контрагент) ИЛИ (РеализацияТоваровУслуг.Контрагент В Иерархии(&Контрагент)) ИЛИ (НЕ &ЗначениеКонтрагентЗаполнено))
И ((РеализацияТоваровУслуг.Организация = &ТекущаяОрганизация) ИЛИ (НЕ &ЗначениеТекущаяОрганизацияЗаполнено))
И ((РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент) ИЛИ (НЕ &ЗначениеТекущийДокументЗаполнено))
И НЕ РеализацияТоваровУслуг.ПометкаУдаления;
ВЫБРАТЬ
ВТ_Реализация.Ссылка КАК Документ,
ВТ_Реализация.Проведен КАК ДокументПроведен,
ВТ_Реализация.ПометкаУдаления КАК ДокументПометкаУдаления,
ВТ_Реализация.Дата КАК ДатаДокумента,
ВТ_Реализация.Номер КАК НомерДокумента,
ВТ_Реализация.Контрагент КАК Контрагент,
ВТ_Реализация.Организация КАК Организация,
ВТ_Реализация.Комментарий КАК Комментарий,
ВТ_Реализация.Склад КАК Склад,
ВТ_Реализация.СуммаДокумента КАК СуммаДокумента,
ВТ_Реализация.Приложение КАК Приложение,
ВТ_Реализация.СуммаПриложения КАК СуммаПриложения,
ВТ_Реализация.ДатаПриложения КАК ДатаПриложения,
ВТ_Реализация.НомерПриложения КАК НомерПриложения,
ЗначенияСвойствОбъектов.Значение КАК СтатусЭД
ИЗ
ВТ_Реализация
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ПО ВТ_Реализация.Ссылка = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство.Наименование = "ДокументСБИС_Статус"
ГДЕ
НЕ ВТ_Реализация.Приложение = ЗНАЧЕНИЕ(Документ.СчетНаОплатуПокупателю.ПустаяСсылка)
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ВТ_Реализация.Ссылка КАК Документ,
ВТ_Реализация.Проведен КАК ДокументПроведен,
ВТ_Реализация.ПометкаУдаления КАК ДокументПометкаУдаления,
ВТ_Реализация.Дата КАК ДатаДокумента,
ВТ_Реализация.Номер КАК НомерДокумента,
ВТ_Реализация.Контрагент КАК Контрагент,
ВТ_Реализация.Организация КАК Организация,
ВТ_Реализация.Комментарий КАК Комментарий,
ВТ_Реализация.Склад КАК Склад,
ВТ_Реализация.СуммаДокумента КАК СуммаДокумента,
СвязьДокументов.Ссылка КАК Приложение,
СвязьДокументов.Ссылка.СуммаДокумента КАК СуммаПриложения,
СвязьДокументов.Ссылка.Дата КАК ДатаПриложения,
СвязьДокументов.Ссылка.Номер КАК НомерПриложения,
ЗначенияСвойствОбъектов.Значение КАК СтатусЭД
ИЗ
ВТ_Реализация
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СвязьДокументов
ПО ВТ_Реализация.Ссылка = СвязьДокументов.ДокументОснование
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ПО ВТ_Реализация.Ссылка = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство.Наименование = "ДокументСБИС_Статус"
УПОРЯДОЧИТЬ ПО
ДатаДокумента, НомерДокумента
Текст запроса формируется по правилам 1С. Назначения блоков:
- «ИЗ» - таблица, из которой выбираются данные
- «ВЫБРАТЬ» - выбираемые поля
- «ГДЕ» - условие выбора
- «КАК» - присвоение логического имени для более простой адресации
- «УПОРЯДОЧИТЬ ПО» - правила сортировки
В приведенном примере в один комплект попадают 3 документа - Реализация товаров и услуг, Счет на оплату покупателю и Счет-фактура выданный.
Обращение к данным через формулу
Для несложных вычислений не обязательно писать функцию во внешней обработке, можно использовать формулы.
Формула имеет следующий вид: ^[операция](параметр1,параметр2,...).
В качестве параметров могут быть указаны строковые значения или ранее определенные параметры файла настроек.
Реализованы следующие варианты формул:
- Сложение строк или чисел: +
<Основание_Номер>[Основание].Номер</Основание_Номер>
<Основание_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Основание].Дата</Основание_Дата>
<НазваниеЗаказа>^+('Заказ №',Основание_Номер,' от ',Основание_Дата)</НазваниеЗаказа>
В примере параметр НазваниеЗаказа определяется с помощью формулы. Знак + означает операцию сложения. В скобках указывается произвольное количество параметров. Все параметры должны быть одинакового типа (строка или число).
- Операции сравнения: >, <, =, !=
<Параметр_Значение>^=([Договор].Номер,'111','Договор 111','')</Параметр_Значение>
Для операций сравнения всегда указывается 4 параметра. К первым двум параметрам применяется сама операция (в примере проверяется, что номер договора равен "111"). Если условие выполняется, то возвращается значение третьего параметра, иначе - значение четвертого параметра. То есть, если номер договора будет равен "111", то в реквизит Параметр_Значение попадет строка "Договор 111", а иначе пустая строка.
- Проверка заполнения: =, !=
<Параметр_Значение>^=([Документ].Комментарий,[Документ].Комментарий,'Комментарий не заполнен')</Параметр_Значение>
В случае, если для операций = и != указано три параметра, то выполняется проверка заполненности (незаполненности для !=) первого параметра. Если условие выполняется (параметр заполнен), то возвращается значение второго параметра, иначе - значение третьего параметра. В примере если у документа заполнен комментарий, то вернется текст комментария, а иначе текст "Комментарий не заполнен".
- Составные условия: И, ИЛИ
<ЗаполненаГООрганизации>^=([Организация].ГоловнаяОрганизация,'Истина','Ложь')</ЗаполненаГООрганизации>
<Отправитель_Роль>^И([Организация].ОбособленноеПодразделение,ЗаполненаГООрганизации,'ОтправительПакета','Отправитель')</Отправитель_Роль>
Для данных операций указывается произвольное количество параметров, из которых предпоследний - это значение, возвращаемое в случае выполнения условия, а последний - в случае невыполнения. Все параметры кроме двух последних, должны иметь тип Булево. Для операции "И" для выполнения условия необходимо, чтобы все параметры принимали значение Истина - в этом случае вернется предпоследний параметр, иначе - последний. Для операции "ИЛИ" достаточно, чтобы один из параметров принимал значение Истина - в этом случае вернется предпоследний параметр, иначе - последний.
В примере Отправитель_Роль примет значение "ОтправительПакета" в случае, если у организации установлен флаг "Обособленное подразделение" и заполнена головная организация, иначе Отправитель_Роль примет значение "Отправитель".
- Получение подстроки: Сред
<ИнициалыИмя>^Сред([СотрудникКонтрагент].Имя,'1','1')</ИнициалыИмя>
Первый параметр - исходная строка. Второй параметр - номер символа с которого берем подстроку. Третий параметр - количество выбираемых символов. Если параметр не указан, то выбираются символы до конца строки.
Обращение к данным через функцию
Если выше перечисленных способов не достаточно чтобы рассчитать значение параметра, вы можете написать свою функцию для его расчета.
Для сохранения возможности автообновления основной обработки, все новые функции реализованные для конкретного клиента размещаются в отдельной внешней обработке - которая должна называться "ВнешниеФункции_Клиент.epf" и находиться в каталоге с файлами настроек. Функции для расчета параметров должны быть помещены в форму "РаботаСДокументами1С" этой внешней обработки.
Для того, чтобы параметр рассчитывался при помощи функции, необходимо указать её название в фигурных скобках. Указанная функция будет искаться сначала в основной обработке, затем в обработке "ВнешниеФункции_Клиент.epf".
<ТаблДок_Цена>{сбисВычислитьЦену()}</ТаблДок_Цена>
Функции для расчета параметров имеют единственный параметр Контекст - это структура, содержащая все ранее вычисленные параметры данного файла настроек.
Результат выполнения функции записывается в указанный параметр.
Атрибуты в файлах настроек
Атрибут "Имя" используется для именования множественных узлов. Например, <мСторона Имя="Грузоотправитель">.
Атрибут "Формат" используется для приведения значения параметра к определенному формату. Например, запись
<ТаблДок_Кол_во Формат="ЧЦ=17; ЧДЦ=3; ЧРД=.; ЧГ=0; ЧН=0.000">[ТаблДок].Количество</ТаблДок_Кол_во>
говорит о том, что атрибут "Кол-во" будет записан в выгружаемый файл с тремя знаками после запятой.
Атрибут "Тип" в обязательном порядке задается для параметров, содержащих табличную часть документа, например,
<ТаблДок Тип="ТабличнаяЧасть">[Документ].Товары</ТаблДок>
Так же он обязательно задается вместе с атрибутом формат для даты, которую необходимо выгрузить в файл в определенном формате. Например,
<Документ_Дата Тип="Дата" Формат="ДФ=dd.MM.yyyy">[Документ].Дата</Документ_Дата>
Атрибуты вида "Отбор_..." используются при необходимости выбрать запись справочника, регистра сведений или строку табличной части, отвечающую определенным условиям. Например, нам нужно получить адрес организации из регистра сведений КонтактнаяИнформация. У данного регистра есть измерения "Объект", "Тип" и "Вид". Для установки отбора по данным измерениям мы задаем атрибуты "Отбор_Объект", "Отбор_Тип" и "Отбор_Вид":
<АдресЮЛ Отбор_Вид="[ВидыКонтактнойИнформации].ЮрАдресОрганизации" Отбор_Объект="Сторона" Отбор_Тип="[ТипыКонтактнойИнформации].Адрес">РегистрыСведений.КонтактнаяИнформация</АдресЮЛ>
Значения атрибутов задаются так же, как значения самих параметров, то есть в данном случае - это ссылки на ранее определенные параметры. Для справочников и табличных частей отбор задается аналогично, только не по измерениям, а по реквизитам, по которым необходимо произвести поиск.
Атрибут "Кэш" используется для кэширования значений параметров, одинаковых для нескольких документов в одном пакете. Например, в одном пакете выгружается накладная, счет-фактура и счет. В каждом документе присутствуют данные по одному и тому же контрагенту (адрес, телефон, факс). Чтобы не искать заново эту информацию в базе 1С для каждого документа, данные кладутся в кэш, что существенно ускоряет выгрузку. Есть одно особенное значение атрибута "Кэш" - это "Организация". Т.к. в базе 1С часто присутствует всего одна организация (иногда несколько, но в любом случае не так много, как контрагентов) имеет смысл кэшировать информацию по организации не в рамках одного пакета, а в целом в рамках запуска внешней обработки.
Атрибуты в файлах настроек для загрузки документов
Атрибут "Данные" - в значении атрибута указывается путь, откуда должно быть взято значение из загружаемого файла. Например, запись
<Документ_НомерВх Данные="Файл.Документ.Номер">[Документ].НомерВходящегоДокумента</Документ_НомерВх>
означает, что реквизит "НомерВходящегоДокумента" в создаваемом при загрузке документе 1С будет заполнен из атрибута "Номер" узла "Документ" полученного файла.
Атрибут "Вычислить" используется, если при загрузке документа определенный реквизит нужно заполнить не значением из файла, а вычислить с помощью функции либо заполнить определенным значение перечислений, либо строковой константой. Например, запись
<ВидыОпераций>Перечисление.ВидыОперацийПоступлениеТоваровУслуг</ВидыОпераций>
<ВидОперации Вычислить="[ВидыОпераций].ПокупкаКомиссия">[Документ].ВидОперации</ВидОперации>
означает, что в создаваемом документе 1С реквизит "ВидОперации" будет заполнен значением "ПокупкаКомиссия" перечисления "ВидыОперацийПоступлениеТоваровУслуг".
Запись
<Договор Вычислить="{ЗаполнитьДоговор()}">[Документ].ДоговорКонтрагента</Договор>
означает, что реквизит "ДоговорКонтрагента" в создаваемом документе 1С будет заполнен с помощью функции ЗаполнитьДоговор(). Функция описана в модуле формы "РаботаСДокументами1С" внешней обработки. Как и любую функцию, вызываемую из файла настроек, ее можно переопределить в аналогичной форме обработки "ВнешниеФункции_Клиент.epf"
В атрибуте "Вычислить" так же можно использовать функции из общих модулей конфигурации. Название модуля и функции при этом разделяются точкой:
<КурсВалюты Вычислить="{МодульВалютногоУчета.ПолучитьКурсВалюты(Документ.ВалютаДокумента, Документ.ДатаВходящегоДокумента)}">КурсВалюты</КурсВалюты>.
В случае вызова функции из общих модулей необходимо указать параметры функции.
Атрибут "ВычислитьНаСервере" используется в управляемом приложении. Нужен для вызова функции из общего модуля, работающего только на сервере. Например, для бухгалтерии 3.0 получаем курс валюты:
<КурсВалюты ВычислитьНаСервере="{РаботаСКурсамиВалют.ПолучитьКурсВалюты(Документ.ВалютаДокумента, Документ.ДатаВходящегоДокумента)}">КурсВалюты</КурсВалюты>
Исправление ошибок в настройках
Если при запуске обработки выдается протокол проверки файлов настроек, значит необходимо внести изменения в настройки.
Для файла настроек, в котором обнаружены ошибки, обработка автоматически создает пользовательский файл настроек, в котором присутствуют только те параметры, в которых обнаружены ошибки. Пользовательский файл настроек называется так же, как и основной, только без расширения sbis3. Например, для файла "ВО82БУХ2_РеализацияТоваровУслуг.sbis3.xml" пользовательский файл будет называться "ВО82БУХ2_РеализацияТоваровУслуг.xml". Любые изменения производятся только в пользовательском файле, так как стандартные файлы настроек обновляются при обновлении обработки.
Если ошибок несколько, то начинаем исправлять их по-одной. Возможно, при исправлении значения одного параметра, другие ошибки пропадут сами, т.к. параметры связаны между собой. После исправления ошибки закрываем протокол проверки, нажимаем кнопку "Проверить настройки" в обработке и смотрим, остались ли еще ошибки. И так далее, пока не будут исправлены все ошибки.
В конфигурации реквизит назван по-другому
Диагностика
В протоколе проверки выдается ошибка:
- Не найден реквизит "Договор".
- Значение параметра: [Документ].Договор
- Полный путь параметра: Документ.РеализацияТоваровУслуг.Договор
- Таблица доступных реквизитов: РеализацияТоваровУслуг
Т.о., мы понимаем, что в БД у документа РеализацияТоваровУслуг нет реквизита Договор.
Решение
В протоколе проверки ищем таблицу РеализацияТоваровУслуг (в тексте ошибки указано название таблицы доступных реквизитов). В таблице ищем реквизит по смыслу похожий на "Договор".
Видим, что есть реквизит "ДоговорКонтрагента". В пользовательском файле настроек вместо параметра [Документ].Договор пишем [Документ].ДоговорКонтрагента.
При наличии доступа в конфигуратор названия реквизитов можно посмотреть там, вместо того, чтобы искать нужную таблицу в протоколе проверки.
В конфигурации реквизит хранится в другом месте
Диагностика
В протоколе проверки выдается ошибка:
- Не найден реквизит "НомерГТД".
- Значение параметра: [ТаблДок].НомерГТД
- Полный путь параметра: Документ.РеализацияТоваровУслуг.ТабличнаяЧасть.Товары.НомерГТД
- Таблица доступных реквизитов: Товары
Т.о., мы понимаем, что в БД у документа РеализацияТоваровУслуг в табличной части Товары нет реквизита НомерГТД.
Решение
В протоколе проверки ищем таблицу Товары. В таблице ищем реквизит по смыслу похожий на "НомерГТД" - ничего похожего на НомерГТД не видим. Получается, что либо номера ГТД не ведутся вообще, либо хранятся в каком-то другом месте. Логичнее всего, что если его нет в табличной части документа, возможно он есть в карточке номенклатуры. Такую же логику можно применить к единицам измерения: в некоторых конфигурациях они указываются в табличной части документа, а в некоторых - только в карточке номенклатуры.
В протоколе проверки находим таблицу доступных реквизитов номенклатуры (в таблице Товары есть ее название - обычно это "Номенклатура"). Видим, что в номенклатуре есть реквизит НомерГТД, а значит в пользовательском файле настроек мы заменяем значение параметра [ТаблДок].НомерГТД на [Номенклатура].НомерГТД (параметр [Номенклатура] у нас уже определен в стандартном файле настроек)
Аналогичные поиски реквизитов можно выполнять и в конфигураторе (при наличии доступа в него). В открывшемся окне в табличной части Товары документа РеализацияТоваровУслуг ничего похожего на НомерГТД не видим
Спрашиваем у клиента, где они заполняют номера ГТД. В нашем примере номер ГТД хранился не в документе реализации, а в справочнике Номенклатуры.
Более сложный, но самый правильный вариант узнать, где хранится нужный реквизит - это посмотреть модуль печатной формы документа в 1С, чтобы понять, откуда данные выводятся на печать.
Документы хранятся в нестандартном реестре
Диагностика
В протоколе проверки выдается ошибка:
- "Неправильный текст запроса.
- ({(14, 2)}: Таблица не найдена ""Документ.КорректировкаРеализации""
- <<?>>Документ.КорректировкаРеализации КАК КорректировкаРеализации)"
Т.о., мы понимаем, что в БД нет документа КорректировкаРеализации.
Решение
Самый простой вариант, если в данной конфигурации вообще не ведутся документы такого типа. В этом случае просто удаляем и стандартный и пользовательский файлы настроек.
Второй вариант - документы данного типа ведутся, но называются по-другому, например "КорректировкаРеализацииТоваров". В этом случае создаем новый пользовательский файл настроек по имени документа и полностью заполняем его. За основу можно взять стандартный файл корректировки реализации и внести в него необходимые изменения.
Настройка
Бывают случаи, когда ошибок в файлах настроек нет, но клиент хочет чтобы при выгрузке или при загрузке документов определенные реквизиты рассчитывались нестандартным способом.
Изменение выгрузки документа
Изменение выгрузки существующего реквизита
Например, мы хотим, чтобы при выгрузке накладной сумма НДС бралась не из реквизита СуммаНДС табличной части Товары документа Реализация товаров и услуг, а рассчитывалась с помощью функции.
Для этого создаем пользовательский файл настроек. В пользовательском файле не должно быть лишних параметров - только тот, который мы хотим изменить, но должна соблюдаться структура вложенности узлов xml. То есть в нашем случае пользовательский файл будет выглядеть следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<ини>
<мФайл Имя="ЭДОНакл">
<мТаблДок Имя="Товары">
<СуммаНДС>{сбисВычислитьСуммуНДС()}</СуммаНДС>
</мТаблДок>
</мФайл>
</ини>
где сбисВычислитьСуммуНДС() - функция, которую мы должны определить в модуле формы "РаботаСДокументами1С" обработки "ВнешниеФункции_Клиент.epf"
Добавление параметра в выгружаемый файл
При необходимости выгрузить какую-то дополнительную информацию по документу, мы добавляем в пользовательский файл настроек параметры. Например, хотим добавить информацию о производителе товара. Информация о нем хранится в номенклатуре. Соответственно параметры добавляем в табличную часть. Пользовательский файл настроек будет выглядеть следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<ини>
<мФайл Имя="ЭДОНакл">
<мТаблДок Имя="Товары">
<Производитель>[Номенклатура].Производитель</Производитель>
<мПараметр Имя="НаимПроизв">
<Параметр_Имя>'НаимПроизв'</Параметр_Имя>
<Параметр_Значение>[Производитель].Наименование</Параметр_Значение>
</мПараметр>
<мПараметр Имя="ИННПроизв">
<Параметр_Имя>'ИННПроизв'</Параметр_Имя>
<Параметр_Значение>[Производитель].ИНН</Параметр_Значение>
</мПараметр>
<мПараметр Имя="КПППроизв">
<Параметр_Имя>'КПППроизв'</Параметр_Имя>
<Параметр_Значение>[Производитель].КПП</Параметр_Значение>
</мПараметр>
</мТаблДок>
</мФайл>
</ини>
В данном случае мы добавили три параметра в табличную часть документа НаимПроизв, ИННПроиз, КПППроизв - наименовании, ИНН, КПП производителя. Данная информация будет присутствовать в выгружаемом файле. При необходимости ее можно вывести в печатную форму документа - для этого необходимо сделать пользовательскую визуализацию документа.
Аналогичным способом можно добавить параметры и в шапку документа.
Используемые параметры
В параметры можно выгрузить абсолютно любую информацию, а также задать для них любые имена. НО! Для систематизации данных, чтобы однотипная информация всегда выгружалась в параметр с определенным именем, составлен список параметров, которые рекомендуется использовать:
Имя параметра | Описание параметра | Комментарий | |
---|---|---|---|
Параметры шапки документа | |||
GLNПокуп | GLN покупателя | Глобальный идентификационный номер GLN (Global Location Number) представляет собой 13-разрядный цифровой код (номер), предназначенный для идентификации предприятий, функциональных подразделений, физических местоположений. Данные параметры необходимо заполнять при обмене EDI | |
GLNПост | GLN поставщика | ||
GLNГрузОтпр | GLN грузоотправителя | ||
GLNГрузПолуч | GLN грузополучателя | ||
ДоверДата | Дата доверенности | Сведения о доверенности | |
ДоверНомер | Номер доверенности | ||
ДоверКем | Кем выдана доверенность | ||
ДоверКому | Кому выдана доверенность | ||
Договор | Название договора | Используются для документов, у которых в формате отсутствует информация о договоре | |
ДоговорДата | Дата договора | ||
ДоговорНомер | Номер договора | ||
ЗаказДата | Дата заказа | Сведения о заказе. Указываются в накладной, созданной на основании данного заказа. | |
ЗаказНомер | Номер заказа | ||
Заказчик | Наименование заказчика | Используются в акте выполненных работ, так как по формату ФНС не предусмотрена информация о заказчике. При наличии выводятся в печатную форму. | |
ЗаказчикИНН | ИНН заказчика | ||
ЗаказчикКПП | КПП заказчика | ||
ЗаказчикАдрес | Адрес заказчика | ||
ИнфШапка | Информация, выводимая перед шапкой документа | Используются для вывода любой дополнительной информации в печатной форме документа. См. раздел Визуализация дополнительной информации | |
ИнфПередТабл | Информация, выводимая перед табличной частью документа | ||
ИнфПослеТабл | Информация, выводимая после табличной части документа | ||
ИнфПодвал | Информация, выводимая после подвала документа | ||
КодПокуп | Код филиала покупателя | Код филиала участника. Используется при наличии нескольких филиалов с одинаковыми ИНН/КПП для однозначного определения участника документооборота. | |
КодПост | Код филиала поставщика | ||
КодГрузОтпр | Код филиала грузоотправителя | ||
КодГрузПолуч | Код филиала грузополучателя | ||
КолМестВсего | Количество мест всего | Используется в документах, где форматом не предусмотрено указание количества мест | |
КСчетПокуп | Корреспондентский счет покупателя | Используются в накладной, так как по формату данные реквизиты не предусмотрены. При наличии выводятся в печатную форму. | |
КСчетПост | Корреспондентский счет поставщика | ||
КСчетГрузОтпр | Корреспондентский счет грузоотправителя | ||
КСчетГрузПолуч | Корреспондентский счет грузополучателя | ||
НаимПокуп | Наименование покупателя | Используются для физических лиц, так как по формату предусмотрено только ФИО, а в печатной форме нужно полное наименование. При наличии выводятся в печатную форму. | |
НаимПост | Наименование поставщика | ||
НаимГрузОтпр | Наименование грузоотправителя | ||
НаимГрузПолуч | Наименование грузополучателя | ||
ОбщийВес | Общий вес товаров | Используется в документах, где данный реквизит не предусмотрен форматом | |
ОснованиеДата | Дата документа-основания | Сведения о документе-основании. Используется в счете-фактуре для указания реквизитов накладной/акта. В случае отправки счета-фактуры отдельным пакетом при загрузке на стороне получателя производится поиск документа основания по данным реквизитам. | |
ОснованиеНомер | Номер документа-основания | ||
ПРД | Сведения о платежно-расчетных документах | Используется если данные хранятся одной произвольной строкой и нет возможности записать отдельно дату и номер, как предусмотрено форматом счета-фактуры. | |
РСчетПокуп | Расчетный счет покупателя | Используются в документах, где по формату не предусмотрены банковские реквизиты. | |
РСчетПост | Расчетный счет поставщика | ||
РСчетГрузОтпр | Расчетный счет грузоотправителя | ||
РСчетГрузПолуч | Расчетный счет грузополучателя | ||
Срок | Срок поставки товара | Используется в документах, где данный реквизит не предусмотрен форматом | |
СФДата | Дата счета-фактуры | Сведения о счете-фактуре, для которого текущий документ является основанием. | |
СФНомер | Номер счета-фактуры | ||
ТТНДата | Дата товарно-транспортной накладной | Сведения о товарно-транспортной накладной | |
ТТННомер | Номер товарно-транспортной накладной | ||
Параметры табличной части документа | |||
GTIN | GTIN товара | Глобальный номер товара (Global Trade Item Number; GTIN) предназначен для уникальной идентификации продукта в торговле. Данный параметр необходимо заполнять при обмене EDI. | |
Брутто | Масса брутто | Используется в документах, где форматом не предусмотрено указание массы брутто, либо при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом. | |
КолМест | Количество мест (упаковок) | Используется в документах, где форматом не предусмотрено указание количества мест, либо при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом. | |
Кол_во | Количество | Используется при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом. При наличии данного параметра он выводится в печатную форму вместо стандартного атрибута Кол_во. | |
НаимПроизв | Наименование производителя | Сведения об алкогольной продукции | |
ИННПроизв | ИНН производителя | ||
КПППроизв | КПП производителя | ||
КодВидаАлкПрод | Код вида алкогольной продукции по классификатору | ||
Нетто | Масса нетто | Используется в документах, где форматом не предусмотрено указание массы нетто, либо при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом. | |
Площадь | Площадь объекта | ||
Цена | Цена | Используется при необходимости указать большее количество знаков после запятой, чем предусмотрено форматом, либо при необходимости указать цену, включающую НДС. При наличии данного параметра он выводится в печатную форму вместо стандартного атрибута Цена. |
Визуализация дополнительной информации
Довольно часто печатная форма документа у клиента незначительно отличается от стандартной, например, выводится строчка с какой-то дополнительной информацией перед табличной частью. Чтобы для каждого такого клиента не делать отдельную визуализацию, существует особая группа параметров, которые автоматически попадают в печатную форму документа:
- ИнфШапка - значение параметра отображается в шапке документа
- ИнфПередТабл - значение параметра отображается перед табличной частью документа
- ИнфПослеТабл - значение параметра отображается после табличной части документа
- ИнфПодвал - значение параметра отображается в подвале документа
Например, клиент хочет в счет-фактуре перед табличной частью видеть название договора. В этом случае в пользовательский файл настроек добавляется параметр "ИнфПередТабл":
<?xml version="1.0" encoding="utf-8"?>
<ини>
<мФайл Имя="СчФктр">
<мПараметр Имя="ИнфПередТабл">
<Параметр_Имя>'ИнфПередТабл'</Параметр_Имя>
<Параметр_Значение>[Договор].Наименование</Параметр_Значение>
</мПараметр>
</мФайл>
</ини>
При необходимости к добавляемой строке можно применить форматирование (с помощью html-кода). Например, название договора должно выводиться жирным шрифтом. В этом случае параметр придется определить через внешнюю функцию:
<?xml version="1.0" encoding="utf-8"?>
<ини>
<мФайл Имя="СчФктр">
<ДоговорНаименование>[Договор].Наименование</ДоговорНаименование>
<мПараметр Имя="ИнфПередТабл">
<Параметр_Имя>'ИнфПередТабл'</Параметр_Имя>
<Параметр_Значение>{сбисИнфПередТаблСФ()}</Параметр_Значение>
</мПараметр>
</мФайл>
</ини>
Внешняя функция будет выглядеть следующим образом:
&НаКлиенте
Функция сбисИнфПередТаблСФ(Контекст) Экспорт
Возврат "<b>"+Контекст.ДоговорНаименование+"</b>";
КонецФункции
В результате получим печатную форму:
Изменение загрузки документа
Чаще всего при загрузке документов возникает необходимость дозаполнить какие-то реквизиты документа, которые при загрузке остались пустыми, т.к. в электронном документе присутствуют далеко не все данные, которые есть в документе 1С.
Самый простой пример - всегда при загрузке писать в комментарии документа "Загружен с online.sbis.ru". Для этого в пользовательский файл настроек добавляем строку (соблюдая структуру основного файла настроек):
<?xml version="1.0" encoding="utf-8"?>
<ини>
<мДокумент Имя="ПоступлениеТоваровУслуг">
<Документ_Комментарий Вычислить="'Загружен с online.sbis.ru'">[Документ].Комментарий</Документ_Комментарий>
</мДокумент>
</ини>
Немного сложнее - хотим в загружаемом документе заполнять реквизит "ПодразделениеОрганизации", который ссылается на справочник "ПодразделенияОрганизаций", всегда одним и тем же значением - Основным подразделением.
Для этого смотрим код этого подразделения в справочнике 1С. Пусть это будет код "000000001".
В пользовательский файл настроек необходимо добавить две строки (соблюдая структуру основного файла настроек):
<?xml version="1.0" encoding="utf-8"?>
<ини>
<мДокумент Имя="ПоступлениеТоваровУслуг">
<ПодразделениеОрганизаций Отбор_Код="'000000001'">Справочник.ПодразделенияОрганизаций</ПодразделениеОрганизаций>
<Документ_ПодразделениеОрганизации Вычислить="[ПодразделениеОрганизаций]">[Документ].ПодразделениеОрганизации</Документ_ПодразделениеОрганизации>
</мДокумент>
</ини>
Данная запись означает, что в справочнике "ПодразделенияОрганизаций" будет выбрана запись с кодом "000000001" и полученным значением будет заполнен реквизит документа "ПодразделениеОрганизации".
Аналогично можно заполнить реквизит определенным значением перечисления. Например, в документе поступления в 1С есть реквизит "ВариантРасчетаНДС", который выбирается из перечислений "ВариантыРасчетаНДС". Чтобы заполнить данный реквизит при загрузке документа значением перечисления "ВСумме" делаем пользовательский файл настроек:
<?xml version="1.0" encoding="utf-8"?>
<ини>
<мДокумент Имя="ПоступлениеТоваровУслуг">
<ВариантыРасчетаНДС>Перечисление.ВариантыРасчетаНДС</ВариантыРасчетаНДС>
<ВариантРасчетаНДС Вычислить="[ВариантыРасчетаНДС].ВСумме">[Документ].ВариантРасчетаНДС</ВариантРасчетаНДС>
</мДокумент>
</ини>
Более сложный вариант, когда реквизит надо заполнить не просто каким-то определенным значением перечисления, справочника или константой, а произвести определенные вычисления. В этом случае реквизит определяется с помощью функции, которую мы должны описать в модуле формы "РаботаСДокументами1С" обработки "ВнешниеФункции_Клиент.epf". Например, в загружаемом документе мы хотим заполнить "Ответственного" в зависимости от текущего пользователя. Для этого в файле настроек пишем:
<?xml version="1.0" encoding="utf-8"?>
<ини>
<мДокумент Имя="ПоступлениеТоваровУслуг">
<Ответственный Вычислить="{сбисОпределитьОтветственного()}">[Документ].Ответственный</Ответственный>
</мДокумент>
</ини>
А в обработке "ВнешниеФункции_Клиент.epf" описываем функцию сбисОпределитьОтветственного(), которая в зависимости от тех или иных условий должна вернуть нужную нам запись справочника "Пользователи".
Пользовательские фильтры в реестрах Продажа/Покупка
Документы в разделах внешней обработки Продажа и Покупка можно фильтровать по нескольким параметрам:
- период
- статус
- организация
- контрагент
Кроме этого есть возможность добавить пользовательские параметры фильтра. Причем пользовательские фильтры можно добавлять как в целом для всех реестров документов в разделе Продажа или Покупка, так и по-отдельности для каждого типа документа. Рассмотрим механизм на примере добавления фильтра по договору.
Добавление пользовательского фильтра состоит из двух шагов:
- Создание формы фильтра во ВнешниеФункции_Клиент.epf
- Добавление условие отбора по новому параметру фильтра в запрос в файле настроек
Создание пользовательской формы фильтра
Имя пользовательской формы фильтра формируется по шаблону: "Фильтр_Раздел_[Название раздела]_[Имя настройки]", где название раздела - это "Продажа" или "Покупка", а имя настройки - имя файла настроек, на основании которого строится данный реестр документов (без префикса и расширения).
Если фильтр добавляется для всех реестров раздела Продажа, то форму нужно назвать "Фильтр_Раздел_Продажа_Шаблон". Если фильтр добавляется для одного типа документов, например, для Оказания услуг, то форма называется соответственно "Фильтр_Раздел_Продажа_ОказаниеУслуг".
Процесс создания формы фильтра немного отличается для обычных и управляемых форм.
Управляемые формы
Необходимо скопировать из основной обработки форму "ФормаУстановкиФильтра" во ВнешниеФункции_Клиент.epf и переименовать ее(по шаблону, описанному выше). Теперь при открытии фильтра из соответствующего реестра обработки будет открываться именно эта форма, а не стандартная.
Далее на форму добавляем реквизит, в нашем случае "ФильтрДоговор" с типом "СправочникСсылка.ДоговорыКонтрагентов" и соответствующее поле в интерфейсе формы:
В модуле формы добавляем функцию "сбисСписокДопПараметровФильтра", которая должна возвращать список значений с названиями дополнительных полей фильтра:
&НаКлиенте
Функция сбисСписокДопПараметровФильтра() Экспорт
СписокДопЭлементов = Новый СписокЗначений;
СписокДопЭлементов.Добавить("ФильтрДоговор");
Возврат СписокДопЭлементов
КонецФункции
В процедуре "ПриОткрытии" добавляем чтение дополнительных параметров фильтра из объекта Кэш.ПараметрыФильтра (Кэш - общая переменная формы "ФормаГлавноеОкно" обработки):
Для Каждого Элемент Из ЭтаФорма.ВладелецФормы.Кэш.ПараметрыФильтра Цикл
ЭтаФорма[Элемент.Ключ] = Элемент.Значение;
КонецЦикла;
В процедуре "Отобрать" добавляем запись дополнительных параметров фильтра в Кэш.ПараметрыФильтра. В нашем случае:
ЭтаФорма.ВладелецФормы.Кэш.ПараметрыФильтра.Вставить("ФильтрДоговор",ФильтрДоговор);
И при необходимости в процедуре "ФильтрОчистить" добавляем очистку дополнительных параметров фильтра.
Обычные формы
Создаем во ВнешниеФункции_Клиент.epf форму, называем ее по шаблону, описанному выше.
В основной обработке открываем форму "ФормаГлавноеОкно", копируем из нее "ПанельУстановкиФильтра":
Вставляем скопированную панель в пользовательскую форму. Немного растягиваем панель вниз и на свободное место добавляем поле "ФильтрДоговор" и надпись к нему:
В модуле формы добавляем функцию "сбисСписокДопПараметровФильтра", которая должна возвращать список значений с названиями дополнительных полей фильтра, включая надписи:
Функция сбисСписокДопПараметровФильтра() Экспорт
СписокДопЭлементов = Новый СписокЗначений;
СписокДопЭлементов.Добавить("ФильтрДоговор");
СписокДопЭлементов.Добавить("НадписьДоговор");
Возврат СписокДопЭлементов
КонецФункции
В отличие от управляемых форм, при запуске обработки все поля из данного списка будут скопированы в панель установки фильтра на главном окне, а сама пользовательская форма при работе открываться не будет.
Добавление условия в запрос
Чтобы пользовательский фильтр участвовал в отборе документов, необходимо добавить условие с новым параметром в запрос списка документов. Имя параметра соответствует имени поля, которое мы добавили в пользовательскую форму фильтра. В нашем случае - это "ФильтрДоговор".
Как обычно все изменения делаются в пользовательском файле настроек. Выносим в него параметр "ЗапросСпискаДокументов" с текстом запроса из основного файла настроек. В условия отбора добавляем договор:
...
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
(РеализацияТоваровУслуг.ДоговорКонтрагента = &ФильтрДоговор или &ФильтрДоговор=Значение(Справочник.ДоговорыКонтрагентов.ПустаяСсылка))
И ((РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон) ИЛИ (НЕ &ЗначениеДатаКонЗаполнено И РеализацияТоваровУслуг.Дата > &ДатаНач))
И ((РеализацияТоваровУслуг.Контрагент = &Контрагент) ИЛИ (РеализацияТоваровУслуг.Контрагент В Иерархии(&Контрагент)) ИЛИ (НЕ &ЗначениеКонтрагентЗаполнено))
И ((РеализацияТоваровУслуг.Организация = &ТекущаяОрганизация) ИЛИ (НЕ &ЗначениеТекущаяОрганизацияЗаполнено))
И ((РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент) ИЛИ (НЕ &ЗначениеТекущийДокументЗаполнено))
И НЕ РеализацияТоваровУслуг.ПометкаУдаления;
...