Массовая рассылка при помощи СБИС Коннект — различия между версиями

Материал из razgovorov.ru
Перейти к: навигация, поиск
(Новая страница: «==Задача== Всем организациям, перечисленных в таблице Excel, направить через СБИС один и тот…»)
 
Строка 10: Строка 10:
 
В файле должно быть два листа: «'''Лист1'''» и «'''Лист2'''».  
 
В файле должно быть два листа: «'''Лист1'''» и «'''Лист2'''».  
  
'''Важно! '''На данный момент нельзя устанавливать в файле какие-либо фильтры. Иначе при отправке такого файла возникнет ошибка. Подробнее см.в разделе «Известные проблемы».
+
===Лист1 - список получателей===
 
 
'''Лист1 - список получателей'''
 
 
# Первая строка является заголовком таблицы и должна содержать следующие заголовки: «ИНН», «КПП», «Название». Порядок следования столбцов не важен.
 
# Первая строка является заголовком таблицы и должна содержать следующие заголовки: «ИНН», «КПП», «Название». Порядок следования столбцов не важен.
 
# Начиная со второй строки идут данные о получателях.
 
# Начиная со второй строки идут данные о получателях.
  
Пример:
+
'''Важно! '''На данный момент нельзя устанавливать в файле какие-либо фильтры. Иначе при отправке такого файла возникнет ошибка. Подробнее см.в разделе «[#Известные проблемы]».
  
[[image:|624x257px]]
+
[[Файл:Массовая рассылка при помощи СБИС Коннект Лист1.png]]
  
'''Лист2 - параметры отправки'''
+
===Лист2 - параметры отправки===
 
# Ячейка B1 – ИНН отправителя
 
# Ячейка B1 – ИНН отправителя
 
# Ячейка B2 – КПП отправителя
 
# Ячейка B2 – КПП отправителя
Строка 31: Строка 29:
 
'''Важно!''' - рассылаемые файлы должны быть расположены вне рабочей папки СБИС Коннекта.
 
'''Важно!''' - рассылаемые файлы должны быть расположены вне рабочей папки СБИС Коннекта.
  
Пример:
+
[[Файл:Массовая рассылка при помощи СБИС Коннект Лист2.png]]
  
[[image:|624x259px]]
 
  
 
== Настройка СБИС Коннект ==
 
== Настройка СБИС Коннект ==
Строка 44: Строка 41:
 
## В поле «XSLT преобразование» указать необходимый файл.
 
## В поле «XSLT преобразование» указать необходимый файл.
 
# На вкладке «Архив» отключить ведение архива
 
# На вкладке «Архив» отключить ведение архива
 
[[image:|247x357px]][[image:|247x357px]]
 
  
 
== Известные проблемы ==
 
== Известные проблемы ==
Строка 57: Строка 52:
 
Необходимо пересоздать xls файл с нуля. Копирование данных и удаление фильтра не поможет.
 
Необходимо пересоздать xls файл с нуля. Копирование данных и удаление фильтра не поможет.
  
==XSLT==
+
==Пример XSLT==
 
<source lang='xml'>
 
<source lang='xml'>
 
<?xml version="1.0" encoding="windows-1251"?>
 
<?xml version="1.0" encoding="windows-1251"?>
<xml:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 
<xsl:output method="xml" indent="yes" encoding="windows-1251"/>
 
<xsl:output method="xml" indent="yes" encoding="windows-1251"/>
  
Строка 147: Строка 142:
  
 
<!-- Перебор строк второго листа, начиная со следующей после строки с заголовком таблицы рассылаемых файлов-->
 
<!-- Перебор строк второго листа, начиная со следующей после строки с заголовком таблицы рассылаемых файлов-->
<xsl:for-each select="//Лист[starts-with(@Название,'Лист2')]/Строка[preceding-sibling::Строка[contains(Столбец[@Номер='1']/@Значение,$ЗаголовокТаблицыРассылаемыхФайлов)]][Столбец[@Номер='1']/@Значение!='']">
+
<xsl:for-each select="//Лист[starts-with(@Название,'Лист2')]/Строка[preceding-sibling::Строка[contains(Столбец[@Номер='1']/
 +
@Значение,$ЗаголовокТаблицыРассылаемыхФайлов)]][Столбец[@Номер='1']/@Значение!='']">
 
<Вложение>
 
<Вложение>
 
<xsl:attribute name="ПорНомер">
 
<xsl:attribute name="ПорНомер">
Строка 157: Строка 153:
 
</Вложение>
 
</Вложение>
 
</xsl:for-each>
 
</xsl:for-each>
 
 
 
 
</Пакет>
 
</Пакет>
 
</xsl:template>
 
</xsl:template>
 
 
</xsl:stylesheet>
 
</xsl:stylesheet>
 
</source>
 
</source>
 +
[[Категория: СБИС Коннект]]

Версия 11:59, 28 января 2015

Задача

Всем организациям, перечисленных в таблице Excel, направить через СБИС один и тот же файл/файлы.

Для того чтобы произвести массовую рассылку файлов по списку клиентов необходимо:

  1. Подготовить один xls файл формата «Книга Excel 97-2003» со списком получателей и рассылаемых файлов.
  2. Настроить СБИС Коннект

Структура xls файла со списком получателей

В файле должно быть два листа: «Лист1» и «Лист2».

Лист1 - список получателей

  1. Первая строка является заголовком таблицы и должна содержать следующие заголовки: «ИНН», «КПП», «Название». Порядок следования столбцов не важен.
  2. Начиная со второй строки идут данные о получателях.

Важно! На данный момент нельзя устанавливать в файле какие-либо фильтры. Иначе при отправке такого файла возникнет ошибка. Подробнее см.в разделе «[#Известные проблемы]».

Массовая рассылка при помощи СБИС Коннект Лист1.png

Лист2 - параметры отправки

  1. Ячейка B1 – ИНН отправителя
  2. Ячейка B2 – КПП отправителя
  3. Ячейка B3 – тип отправляемого пакета документов ("ДокОтгрИсх" – документы реализации; "ДоговорИсх" – договоры; "КоррИсх" – корреспонденция) . Все возможные типы документов перечислены в описании формата конверта (Элемент ТипДок.
  4. Ячейка B4 – название регламента Если поле не заполнено, то документы будут отправлены по стандартному регламенту.
  5. Пятая строка – пустая.
  6. Ячейка A6 - записывается название шапки таблицы «Файлы»
  7. Начиная с седьмой строки, в таблицу записываются полные имена (путь + имя + расширение) файлов, которые будут рассылаться.

Важно! - рассылаемые файлы должны быть расположены вне рабочей папки СБИС Коннекта.

Массовая рассылка при помощи СБИС Коннект Лист2.png


Настройка СБИС Коннект

  1. Установить отдельный СБИС Коннект
  2. На вкладке «Обмен документами»:
    1. Отключить загрузку входящих документов
    2. Отключить загрузку исходящих статусов документов
    3. Установить формат обмена документов «Произвольный XLS».
    4. В поле «XSLT преобразование» указать необходимый файл.
  3. На вкладке «Архив» отключить ведение архива

Известные проблемы

'Проблема с фильтрами в xls файле.

Если в xls файле был установлен или есть на данный момент какой-либо фильтр, то при отправке такого файла возникнет ошибка вида: Объект 'Лист1$_' не найден ядром базы данных Microsoft Jet. Проверьте существование объекта и правильность имени и пути.

Способ решения:

Необходимо пересоздать xls файл с нуля. Копирование данных и удаление фильтра не поможет.

Пример XSLT

<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:output method="xml" indent="yes" encoding="windows-1251"/>

	
	<!-- Определяются номера столбцов в которых находятся ИНН,КПП, название получателей.
	Поиск происходит из заголовка таблицы по названию.
	-->
	<xsl:variable name="НомерСтолбца_НазваниеПолучателя" select="//Файл/Лист[starts-with(@Название,'Лист1')]/Строка[@Номер='1']/Столбец[contains(@Значение,'Название')]/@Номер"/>
	<xsl:variable name="НомерСтолбца_ИННПолучателя" select="//Файл/Лист[starts-with(@Название,'Лист1')]/Строка[@Номер='1']/Столбец[contains(@Значение,'ИНН')]/@Номер"/>
	<xsl:variable name="НомерСтолбца_КПППолучателя" select="//Файл/Лист[starts-with(@Название,'Лист1')]/Строка[@Номер='1']/Столбец[contains(@Значение,'КПП')]/@Номер"/>
		
	
	<!-- Указывается где хранятся ИНН/КПП отправителя.
	По-умолчанию на втором листе в первой и второй строке-->
	<xsl:variable name="ИНН_Отправителя" select="normalize-space(//Файл/Лист[starts-with(@Название,'Лист2')]/Строка[@Номер='1']/Столбец[@Номер='2']/@Значение)"/>
	<xsl:variable name="КПП_Отправителя" select="normalize-space(//Файл/Лист[starts-with(@Название,'Лист2')]/Строка[@Номер='2']/Столбец[@Номер='2']/@Значение)"/>
	
	<!-- Указывается где хранятся название регламента и тип документа (договор, корреспонденция и пр) 
	По-умолчанию на втором листе в третьей и четвертой строке -->
	<xsl:variable name="ТипДокумента" select="normalize-space(//Файл/Лист[starts-with(@Название,'Лист2')]/Строка[@Номер='3']/Столбец[@Номер='2']/@Значение)"/>
	<xsl:variable name="Регламент" select="normalize-space(//Файл/Лист[starts-with(@Название,'Лист2')]/Строка[@Номер='4']/Столбец[@Номер='2']/@Значение)"/>
	
	
	<!-- Заголовок таблицы в которой содержится список рассылаемых файлов-->
	<xsl:variable name="ЗаголовокТаблицыРассылаемыхФайлов">
		<xsl:text>Файлы</xsl:text>
	</xsl:variable>
		
	<xsl:template match="/">
		<xsl:apply-templates />
	</xsl:template>

	
	<xsl:template match="Файл">
		<Реестр>
			<xsl:apply-templates select="Лист[starts-with(@Название,'Лист1')]/Строка[@Номер!='1'][Столбец[@Номер=$НомерСтолбца_ИННПолучателя]/@Значение!='']" mode="Пакет"/>
		</Реестр>
	</xsl:template>

	<!--Формирование пакетов-->
	<xsl:template match="Строка" mode="Пакет">
	<Пакет>
		
		<xsl:if test="$ТипДокумента!=''">
			<xsl:attribute name="ТипДок">
				<xsl:value-of select="$ТипДокумента"/>
			</xsl:attribute>
		</xsl:if>

		<xsl:if test="$Регламент!=''">
			<Регламент>
				<xsl:attribute name="Название">
					<xsl:value-of select="$Регламент"/>
				</xsl:attribute>
			</Регламент>
		</xsl:if>

		<Отправитель>
			<xsl:attribute name="ИНН">
				<xsl:value-of select="$ИНН_Отправителя"/>
			</xsl:attribute>
			<xsl:attribute name="КПП">
				<xsl:value-of select="$КПП_Отправителя"/>
			</xsl:attribute>
		</Отправитель>
		

			<Получатель>
				<xsl:attribute name="ИНН">
					<xsl:value-of select="normalize-space(Столбец[@Номер=$НомерСтолбца_ИННПолучателя]/@Значение)"/>
				</xsl:attribute>
				
				<!-- Если длина ИНН 10 символов, то записывается КПП-->
				<xsl:if test="string-length(normalize-space(Столбец[@Номер=$НомерСтолбца_ИННПолучателя]/@Значение))=10">
					<xsl:attribute name="КПП">
						<xsl:value-of  select="normalize-space(Столбец[@Номер=$НомерСтолбца_КПППолучателя]/@Значение)"/>
					</xsl:attribute>
				</xsl:if>

				<xsl:if test="normalize-space(Столбец[@Номер=$НомерСтолбца_НазваниеПолучателя]/@Значение)!=''">
					<xsl:attribute name="Название">
						<xsl:value-of select="normalize-space(Столбец[@Номер=$НомерСтолбца_НазваниеПолучателя]/@Значение)"/>
					</xsl:attribute>
				</xsl:if>
			</Получатель>

			<!-- Перебор строк второго листа, начиная со следующей после строки с заголовком таблицы рассылаемых файлов-->
			<xsl:for-each select="//Лист[starts-with(@Название,'Лист2')]/Строка[preceding-sibling::Строка[contains(Столбец[@Номер='1']/
			@Значение,$ЗаголовокТаблицыРассылаемыхФайлов)]][Столбец[@Номер='1']/@Значение!='']">
				<Вложение>
						<xsl:attribute name="ПорНомер">
							<xsl:value-of select="position()"/>
						</xsl:attribute>
						<xsl:attribute name="ИмяФайла">
							<xsl:value-of select="Столбец[@Номер='1']/@Значение"/>
						</xsl:attribute>
				</Вложение>
			</xsl:for-each>
	</Пакет>
	</xsl:template>
</xsl:stylesheet>