Выгрузка проводок ЗУП 3.1 -> КА 1.1

20.03.18

Учетные задачи - Зарплата

На настройку выгрузки проводок из ЗУП 3.1 в КА 1.1 я потратил 2 рабочих дня. Выгрузка еще не завершена, но большая часть, считаю, реализована. Задача интересна и как частный случай - выгрузка проводок ЗУП 3.1 -> КА 1.1, и как общий случай - настройка обмена между базами. Релизы конфигураций: Зарплата и управление персоналом, редакция 3.1 (3.1.5.129) Комплексная автоматизация, редакция 1.1 (1.1.96.1)

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Обработка выгрузки проводок из ЗУП 3.1 в КА 1.1
.epf 12,34Kb
24
24 Скачать (1 SM) Купить за 1 850 руб.
Обработка загрузки проводок в КА 1.1 из ЗУП 3.1
.epf 8,14Kb
19
19 Скачать (1 SM) Купить за 1 850 руб.

С конца прошлого года холдинг где я работаю начал переход на ЗУП 3.1. 

Вместе с этим появилось много задач в т.ч. выгрузка проводок в КА 1.1.  При этом все нужно сделать в кратчайшие сроки, ведь еще нужно выполнить много других задач.

Типового обмена между вышеуказанными решениями пока нет, а возможно, и никогда не будет.

Варианты обмена

Готовых решений я не нашел и начал решать задачу собственными силами.

Начал со знакомства с типовым обменом с другими конфигурациями. Технология обмена сильно изменилась, по сравнению с ЗиК, и ЗУП 2.5 (насчет ЗУП 2.5 могу ошибаться), привычной настройки проводок, и обработки выгрузки проводок теперь нет. Но все не так страшно, как кажется при беглом осмотре.

Для знакомства с настройкой обмена  пользовался информацией с сайта ИТС.

Информация для формирования бухгалтерских проводок заносится в:

  • справочник организации;
  • справочник подразделения;
  • справочник сотрудники;
  • виды начисления;
  • некоторые виды документов.

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

После заполнения способов отражения в БУ, можно сформировать документ "Отражение зарплаты в бухгалтерском учете". Заполнив документ увидим, что практически вся необходимая информация для формирования проводок у нас есть (скриншот с рабочей базы приложить не могу).

Типовой механизм предусматривает выгрузку элементов справочника "Отражение зарплаты в бухгалтерском учете" с последующим его заполнением (счетами и аналитикой) в бухгалтерской базе.

В книгах пишут, что человеку свойственно ходить привычными путями, пускай и не самыми лучшими.  На текущий момент, я считаю, что данный вариант лучше, но когда приступал к реализации выбрал альтернативный вариант, который также предложен на ИТС.

Я решил сделать выгрузку на подобие ЗиК, т.е. настройка формирования проводок настраивается в ЗУП.

В данном варианте нужно будет синхронизировать следующие данные:

  1.  Сотрудников. Данные по сотрудникам заполняются в каждой базе, элементы синхронизируются по реквизиту "ИНН".
  2. Бухгалтерские счета. Синхронизация по коду.
  3. Аналитика проводок:
    1. Перечисления - по имени.
    2. Элементы справочников по уникальному идентификатору.

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

Процедура КнопкаВыполнитьНажатие(Кнопка)
	// Вставить содержимое обработчика.
	
	Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(выбСправочник)) Тогда
		текGUID = выбСправочник.УникальныйИдентификатор();
	Иначе
		
		НужноеЗначение = выбСправочник; 
		ИмяПеречисления = НужноеЗначение.Метаданные().Имя;
		НужныйИндекс = Перечисления[ИмяПеречисления].Индекс(НужноеЗначение);
		ИмяЗначения = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[НужныйИндекс].Имя;
		
		текGUID = ИмяЗначения;		
	КонецЕсли;
	//Сообщить(СтрДлина(текGUID)); //36
КонецПроцедуры

Для хранения счетов и аналитики добавил дополнительные реквизиты к справочнику  "Способы отражения зарплаты в бухгалтерском учете" Администрирование -> общие настройки -> Дополнительные реквизиты и сведения

Дополнительные реквизиты

Для реквизита "Счет" длина строки 10, "Субконто" - 100, GUID - 36.

Далее настроил форму справочника  "Способы отражения зарплаты в бухгалтерском учете"

Форма элемента справочника

Реквизит "Субконто" используется следующим образом:

  1. При указании элемента справочника, только информативно.
  2. При указании значения перечисления - содержит имя перечисления, уникальный идентификатор при этом не заполняется.

Остальная информация для формирования проводок будет вводится в форме обработки выгрузки проводок.

Форма обработки выгрузки проводок

Сначала я пытался хранить данные из вышеуказанной формы в хранилище настроек, у меня так и не получилось сделать чтобы настройки были общими для всех пользователей. В итоге решил добавить дополнительное свойство  "НастройкиПроводок" для справочника организации, с типом строка неограниченной длины, как выяснилось позже, нельзя создать дополнительной свойство с типом - строка неограниченной длины. Остановился на варианте: дополнительное свойство для каждого взноса - длинной 830. 10  (длина кода счета) + 6 * (36 (Длина уникального идентификатора) + 100)  + символы разделители.

Дополнительный свойства справочника "Организации"

Дополнительные сведения

Теперь есть все необходимые данные для формирования проводок, приступаем к выгрузке.

Функции выгрузки выглядят следующим образом (обработки добавлены к статье, в тексте опишу только интересные, на мой взгляд, моменты)

&НаСервере
Функция ВыгрузитьПроводкиНаСервере()
	// Вставить содержимое обработчика.
	СписокДокументов = ВыгрузитьПроводкиНаСервере_ПолучитьСписокДокументов();
	
	ствСвойстваСпособовОтраженияБУ = ВыгрузитьПроводкиНаСервере_ПолучитьСвойстваОтбораженияБУ(СписокДокументов);
	
	стрВыгрузка = Новый Структура("Организация,НачалоПериода,КонецПериода,Проводки");
	стрВыгрузка.Организация = Организация.Наименование;
	стрВыгрузка.НачалоПериода = НачДата;
	стрВыгрузка.КонецПериода = КонДата;
	
	Проводки = Новый Массив();
	
	ВыгрузитьПроводкиНаСервере_СформироватьПроводкиПоНачислениям(СписокДокументов, ствСвойстваСпособовОтраженияБУ, Проводки);
	ВыгрузитьПроводкиНаСервере_СформироватьПроводкиПоВзносам(СписокДокументов, ствСвойстваСпособовОтраженияБУ, Проводки);
	ВыгрузитьПроводкиНаСервере_СформироватьПроводкиПоНДФЛ(СписокДокументов, ствСвойстваСпособовОтраженияБУ, Проводки);
	
	стрВыгрузка.Проводки = Проводки;
	
	ТекстXML = СтруктураВXML(стрВыгрузка, "ВыгрузкаЗУП_КА");
	
	Возврат ТекстXML;
	
КонецФункции

&НаКлиенте
Процедура ВыгрузитьПроводки(Команда)
	ТекстXML = ВыгрузитьПроводкиНаСервере();
	
	ЗаписьXML = Новый ЗаписьXML();
	ЗаписьXML.ОткрытьФайл(выбФайл, "windows-1251");
	ЗаписьXML.ЗаписатьОбъявлениеXML();
	ЗаписьXML.ЗаписатьБезОбработки(ТекстXML);

   	ЗаписьXML.Закрыть();
	
	ПоказатьПредупреждение(, "Обработка завершена");
	
КонецПроцедуры

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

Функция СтруктураВXML(вхСтруктура, НаименованиеКорневогоУзла)
	ТекстXML = "";	
	ЗаписьXML = Новый ЗаписьXML();
	ЗаписьXML.УстановитьСтроку("windows-1251");
	ЗаписьXML.ЗаписатьНачалоЭлемента(НаименованиеКорневогоУзла);
	
	Для Каждого Элемент Из вхСтруктура Цикл
		Если ТипЗнч(Элемент.Значение) = Тип("Структура") Тогда
			ЗаписьXML.ЗаписатьБезОбработки(СтруктураВXML(Элемент.Значение, Элемент.Ключ));
		ИначеЕсли ТипЗнч(Элемент.Значение) = Тип("Массив") Тогда
			ЗаписьXML.ЗаписатьНачалоЭлемента(Элемент.Ключ);
			Для Каждого СтрокаТаблицы Из Элемент.Значение Цикл
				ЗаписьXML.ЗаписатьБезОбработки(СтруктураВXML(СтрокаТаблицы, "Строка"));
			КонецЦикла;
			ЗаписьXML.ЗаписатьКонецЭлемента();
		Иначе
			ЗаписьXML.ЗаписатьАтрибут(Элемент.Ключ, XMLСтрока(Элемент.Значение));			
		КонецЕсли;		
	КонецЦикла;
	
	ЗаписьXML.ЗаписатьКонецЭлемента();
	ТекстXML = ЗаписьXML.Закрыть();
	Возврат ТекстXML;
	
КонецФункции

Данную функция я написал, когда делал обмен между базами 1С8 -> 1С77, также рассматривал стандартную реализацию, но решил что проще написать собственную.

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

Функция СведенияОВнешнейОбработке() Экспорт
    РегистрационныеДанные = Новый Структура;
    РегистрационныеДанные.Вставить("Наименование", "Выгрузка проводок ЗУП 3.1 -> КА 1.1");
    РегистрационныеДанные.Вставить("БезопасныйРежим", Ложь);
    РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");
    РегистрационныеДанные.Вставить("Версия", "1.0");
    РегистрационныеДанные.Вставить("Информация", "Обработка выгрузки проводок из ЗУП 3.1 в КА 1.1" );
    
    ///////////// команды /////////////////////////
	тзКоманд = Новый ТаблицаЗначений;
	тзКоманд.Колонки.Добавить("Идентификатор",             Новый ОписаниеТипов("Строка"));
	тзКоманд.Колонки.Добавить("Представление",             Новый ОписаниеТипов("Строка"));
	тзКоманд.Колонки.Добавить("Модификатор",             Новый ОписаниеТипов("Строка"));
	тзКоманд.Колонки.Добавить("ПоказыватьОповещение",     Новый ОписаниеТипов("Булево"));
	тзКоманд.Колонки.Добавить("Использование",             Новый ОписаниеТипов("Строка"));
	
	
	Идентификатор_Команды = "ОткрытьФорму";
	строкаКоманды = тзКоманд.Добавить();
	строкаКоманды.Идентификатор         = Идентификатор_Команды; 
	строкаКоманды.Представление         = "Открыть форму выгрузки проводок ЗУП 3.1 -> КА 1.1";
	строкаКоманды.ПоказыватьОповещение     = Истина;
	строкаКоманды.Использование         = "ОткрытиеФормы";
	
	РегистрационныеДанные.Вставить("Команды", тзКоманд);
    
    Возврат РегистрационныеДанные;
КонецФункции

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

Функция ПолучитьСчетСубконто(СчетКод, Субконто1, Субконто2, Субконто3)
	стрСчетСубконто = Новый Структура("Счет,Субконто1,Субконто2,Субконто3");
	
	текСчет = ПланыСчетов.Хозрасчетный.НайтиПоКоду(СчетКод);
	
	стрСчетСубконто.Счет = текСчет;
	
	Если СчетКод = "70" Тогда
		Запрос = Новый Запрос();
		Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	ФизическиеЛица.Ссылка
		|ИЗ
		|	Справочник.ФизическиеЛица КАК ФизическиеЛица
		|ГДЕ
		|	ФизическиеЛица.ИНН = &ИНН";
		
		Запрос.УстановитьПараметр("ИНН", Субконто1);
		Выборка = Запрос.Выполнить().Выбрать();		
		Если Выборка.Следующий() Тогда
			стрСчетСубконто.Субконто1 = Выборка.Ссылка;			
		Иначе
			стрСчетСубконто.Субконто1 = Справочники.ФизическиеЛица.ПустаяСсылка();			
		КонецЕсли;		
	Иначе
		Если текСчет.ВидыСубконто.Количество() > 0 Тогда
			ВидСубконто = текСчет.ВидыСубконто[0];
			Типы = ВидСубконто.ВидСубконто.ТипЗначения.Типы();
			текМетаданные = Метаданные.НайтиПоТипу(Типы[0]);
			
			Если Справочники.ТипВсеСсылки().СодержитТип(Типы[0]) Тогда
				УИД = Новый УникальныйИдентификатор(Субконто1);
				стрСчетСубконто.Субконто1 = Справочники[текМетаданные.Имя].ПолучитьСсылку(УИД);
			Иначе
				стрСчетСубконто.Субконто1 = Перечисления[текМетаданные.Имя][Субконто1];
			КонецЕсли			
		КонецЕсли;
		
		Если текСчет.ВидыСубконто.Количество() > 1 Тогда
			ВидСубконто = текСчет.ВидыСубконто[1];
			Типы = ВидСубконто.ВидСубконто.ТипЗначения.Типы();
			текМетаданные = Метаданные.НайтиПоТипу(Типы[0]);
			
			Если Справочники.ТипВсеСсылки().СодержитТип(Типы[0]) Тогда
				УИД = Новый УникальныйИдентификатор(Субконто2);
				стрСчетСубконто.Субконто2 = Справочники[текМетаданные.Имя].ПолучитьСсылку(УИД);
			Иначе
				стрСчетСубконто.Субконто2 = Перечисления[текМетаданные.Имя][Субконто2];
			КонецЕсли				
		КонецЕсли;
		
		Если текСчет.ВидыСубконто.Количество() > 2 Тогда
			ВидСубконто = текСчет.ВидыСубконто[2];
			Типы = ВидСубконто.ВидСубконто.ТипЗначения.Типы();
			текМетаданные = Метаданные.НайтиПоТипу(Типы[0]);
			
			Если Справочники.ТипВсеСсылки().СодержитТип(Типы[0]) Тогда
				УИД = Новый УникальныйИдентификатор(Субконто3);
				стрСчетСубконто.Субконто3 = Справочники[текМетаданные.Имя].ПолучитьСсылку(УИД);
			Иначе
				стрСчетСубконто.Субконто3 = Перечисления[текМетаданные.Имя][Субконто3];
			КонецЕсли	
		КонецЕсли;
	КонецЕсли;
	
	Возврат стрСчетСубконто;
	
КонецФункции

 

См. также

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.21.x).

35000 руб.

23.07.2020    56086    257    73    

212

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    145652    846    299    

438

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    74204    198    155    

137

SALE! 10%

Перенос данных 1C Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

55778 50200 руб.

04.08.2015    170626    357    282    

390

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    38302    108    70    

102

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.244.x) и БП 3.0 (3.0.172.x). Правила подходят для версии ПРОФ и КОРП.

35000 руб.

15.12.2021    26079    186    56    

142

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    82808    343    254    

292
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 20.03.18 10:51
Сообщение было скрыто модератором.
...
2. Brawler 460 20.03.18 11:39 Сейчас в теме
Вам стоило посмотреть БП 3.0.
Там на вход поступает документ из ЗУП 3.Х в котором конечно же нет проводок, но в нем говорится какие способы отражения должны быть использованы для формирования проводок.
Имея все суммы и способы отражения (аналитики в них нужно на стороне БП 3.Х заполнять) БП 3.0 генерирует проводки.
Я сам когда сидел думал над реализацией переноса отражения из ЗУП 3.Х в УПП обдумывал именно вариант работы как при обмене с ЗУП 3.Х и БП 3.0. Не супер сложно в правилах переноса данных цепляться за способы отражения описанные в КА/УПП, брать из них счета учета и субконто, а так как все суммы в ЗУП 3.Х в документе отражения ЗП расписаны по полочкам. то не сложно для отражения всяких там налогов прописать конкретные счета учетов...

+ еще есть, юзерам на стороне ЗУП 3.1 вообще не нужно заполнять аналитики в способах отражениях, все аналитики заполнены в КА/УПП и главное при переносе данных совместить способы отражения разных баз.
3. HAMMER_59 255 20.03.18 12:05 Сейчас в теме
(2) Практически в самом начале я так и написал, что если бы делал заново, тогда бы выгружал "способы отражения в БУ", а не проводки.
Лучшее - враг хорошего. Можно очень долго думать как сделать лучше, и ничего так и не сделать. Вариант вполне себе рабочий.
Также у варианта, который я реализовал есть неоспоримый плюс - не нужно вносить изменения в бухгалтерскую базу, в данном случае в КА 1.1. В случае с выгрузкой "способов отражения в БУ", придется эти данные где-то хранить, т.е. нужно будет вносить изменения в конфигурацию.
4. Brawler 460 20.03.18 12:38 Сейчас в теме
(3) Каждая реализация имеет право на свое существование.
Я немного не понял, что вам бы потребовалось менять на стороне КА, так как мои размышления по поводу обмена данными сводились все к тому, что на стороне КА ну в моем случае УПП, нужно данные перенести из документа отражения ЗП в ЗУП 3.Х, в документ отражения ЗП в УПП, при этом в УПП заполнить только первую вкладку документа там, где проводки. Все алгоритмы формирования проводок размещались бы в правилах переноса данных.
Способы отражения ЗП в УПП типовые и должны быть просто заполнены юзером. В ситуации когда к примеру происходит переход зарплатного блока из КА/УПП в отдельную базу ЗУП, то способы отражения как правило в большинстве своем уже есть и настроены.

Собственно аналогичные варианты решения проблемы уже есть https://infostart.ru/public/601831/

Еще раз оговорюсь, я не против вашего решения.
У всех видение ситуации свое и возможно у вас там есть заковырки в учете, которые проще решать так как они решены сейчас.
Оставьте свое сообщение