Сказ о том, как в одной крупной компании документооборот внедряли, или проблемы типовых обменов между КА и ДО

Публикация № 1319201 10.11.20

Управление - Внедрение ИТ-системы

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

Приветствую всех. Сегодня пойдет речь о том, как на одной крупной компании внедряли 1С:Документооборот 2.1 в связке с КА 2.4. Вроде бы системы типовые, мы практически не добавляли ничего в них, но проблем было столько, что я решил изложить их в статье. Может, кому-то пригодится это в дальнейшем, и не придется тратить кучу времени на поиск решений.

КА -комплексная автоматизация, ДО - документооборот.

Итак, базы развернуты, опубликованы, можем начинать. А начнем с синхронизации...

Этап 1: Синхронизация

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

Неверное имя колонки
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(8431)}:        Коллекция.Колонки.Добавить(ИмяПоля);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(8310)}:    КоллекцияГруппировки = ИнициализацияТаблицыПоКлючевымПолям(МассивКлючевыхПолейПоиска);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(9955)}:                ЗагрузитьТабличнуюЧасть(Объект, Имя, ИнформацияОТипах, ПараметрыОбъекта, Правило);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(16050)}:            ПоследнийОбъектЗагрузки = ПрочитатьОбъект();
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(2663)}:        ПроизвестиЧтениеДанныхВРежимеВнешнегоСоединения(ЧтениеСообщения);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(5794)}:        ОбработкаОбменаДаннымиВнешнееСоединение.ВыполнитьВыгрузкуДанных(ОбработкаДляЗагрузкиДанных);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(2936)}:            ВыполнитьДействиеОбменаДляУзлаИнформационнойБазыПоВнешнемуСоединению(Отказ,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(34)}:    ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4884)}:    Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(724)}:        ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыПроцедуры);
{ОбщийМодуль.ДлительныеОперации.Модуль(715)}:    ВыполнитьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры);

 

Что ж, делать нечего...Идем в отладку. И что мы там наблюдаем? Довольно интересную картину.

По какой-то причине у нас две колонки с одним наименованием.

Идем в правила конвертации и видим, что в тч контактной информации две строки с конвертацией реквизита ДействуетС, удаляем лишнюю строку, заменяем правила - и о чудо, все работает.

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

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

Этап 2.Интеграция (бесшовка).

Историю о настройке бесшовной интеграции начну с небольшого описания работы самого механизма.

На стороне КА имеются следующие объекты:

ПланОбмена : ИнтеграцияС1СДокументооборотомПереопределяемый

РегистрСведений: ОчередьСообщенийВ1СДокументооборот

При изменении объекта, участвующего в интеграции, этот объект регистрируется на узле плана обмена. Далее фоновое задание вызывает процедуру модуля, в котором соответственно выполняются последовательно три процедуры:

ИнтеграцияС1СДокументооборотОбмен.ПодготовитьДанныеДляОтправки();

ИнтеграцияС1СДокументооборотОбмен.ОтправитьДанные();

ИнтеграцияС1СДокументооборотОбмен.ПолучитьДанные();

ПодготовитьДанныеДляОтправки();  - формирует пакеты в формате xml и помещает их в регистр сведений ОчередьСообщенийВ1СДокументооборот в виде двоичных данных. При этом пакеты формируются с контролем длины пакета, при превышении длины пакет разбивается на части. В одном пакете может содержаться несколько объектов, а значит если возникнет проблема загрузки хотя бы одного объекта из пакета - пакет не прогрузится. По факту это сделано в угоду производительности, но при этом сказалось на устойчивости системы. (В итоге после согласования с заказчиком была механизм был изменен под логику ОдинОбъект-ОдинПакет см. далее)

ОтправитьДанные() - получает записи регистра, получает из двоичных данных пакет, формирует на основе пакетов запрос, выполняет этот запрос на стороне ДО. В случае успешного выполнения запись в регистре удаляется.

Минус этого метода - все пакеты обрабатываются в одной конструкции Попытка-Исключение. Если хотя бы один пакет  с ошибкой, все остальные пакеты уже не обрабатываются.

Также была переделана - каждый пакет обрабатывается в отдельной попытке.

ПолучитьДанные() - в цикле с уловием, пока есть необработанные пакеты на стороне ДО формируется запрос, который передает на сторону ДО номер последнего успешно обработанного пакета и возвращает в КА новый пакет, после чего данный пакет обрабатывается на стороне ДО. В типовом варианте также при возникновении ошибки загрузка останавливается. (Также была доработана).

На стороне ДО:

План обмена ИнтегрированныеСистемы

регистр сведений ОчередиСообщенийОбменаСИнтегрированнымиСистемами

справочник: СообщенияИнтегрированныхСистем

Фоновое задание формирует пакет xml и в виде двоичных данных записывает его в справочник.

Далее на стороне КА вызывается процедура ПолучитьДанные()

при успешном получении элемент справочника помечается на удаление.

2.1 Выгрузка из ДО в КА (не те правила подставляются)

ИнтеграцияС1СДокументооборотОбмен  ПолучитьДанные();

В этой процедуре для объекта производится поиск подходящего правила. Ниже представлен скриншот функции, получающей правило интеграции для объекта.

Как видно из текста запроса, выбирается первое попавшееся правило, у которого тип исходного и конечного объекта совпадают с условием. В нашем случае для договоров было  3 правила, отличающихся заполнением реквизитов и видом внутреннего документа. В итоге при выгрузке выбиралось некорректное правило и дальше весь обмен стопорился с ошибками (набор заполняемых полей во всех 3 правилах был разным). Указано, что функция эта устарела, но при этом даже в самых последних релизах до сих пор используется.

Заменяем на функцию, указанную в рекомендациях (заодно делаем для себя дополнительную запись в Журнал регистрации.

Теперь правило определяются корректно и большая часть ошибок уже решена. Едем дальше...

2.2 Обмен заявками на расходование ДС по физ лицам

После создания правила для Заявки на расходование ДС - Внутренний документ (Заявка на расходование ДС) с частью заявок появились проблемы. А именно, у заявки вид хоз. операции "Выдача подотчетнику" банковский счет с владельцем физ. лицо. В правиле для банковского счета стоит флаг Обновлять. В ДО у банковского счета во владельцах справочника Физ. лица нет в принципе. При обмене из-за этого возникает ошибка "ОбщийМодуль.ИнтеграцияС1СДокументооборот.Модуль(467) Значение не является значением объектного типа (name)". - по отладке это как раз момент заполнения владельца у банковского счета. Сейчас пока выключили обновление у банковского счета, но это решение временное. параллельно написали в ТП 1с. 

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

 

2.3 Обмен статусами документов

В КА помимо статуса в объекте есть регистр сведений СостоянияСогласованияВДокументообороте. В процедуре получения данных из ДО в этот регистр записываются данные по статусу, если они есть в пакете. После записи в регистр вызывается процедура ИнтеграцияС1СДокументооборотПереопределяемый.ПриИзмененииСостоянияСогласования в которой на текущий момент ничего нет (процедура пустая). Я предполагаю, что данный регистр в дальнейшем нужно обрабатывать, получая статус и объект по идентификатору и далее изменять статус в самом объекте. Но мы идем немного другим путем и прописываем соответствия статусов непосредственно в правилах интеграции.

Перечь статусов в КА и ДО не соответствует, поэтому их нужно синхронизировать с помощью выражений.

Из КА в ДО:

Если Параметры.Источник.Статус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.НеСогласована Тогда
	Параметры.Результат = "НеСогласован";
ИначеЕсли Параметры.Источник.Статус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.Согласована Тогда
	Параметры.Результат = "Согласован";
ИначеЕсли Параметры.Источник.Статус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.КОплате Тогда
	Параметры.Результат = "Согласован";
ИначеЕсли Параметры.Источник.Статус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.Отклонена Тогда
	Параметры.Результат = "НеСогласован";
КонецЕсли;
ЗаписьЖурналаРегистрации("интеграция Отправка",УровеньЖурналаРегистрации.Информация,,Параметры.Результат,,);

Из ДО в КА:

пСтатус = Неопределено;
Если Параметры.Источник.statusApproval.name = "Согласован" Тогда
    пСтатус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.Согласована;
ИначеЕсли Параметры.Источник.statusApproval.name = "Не согласован" Тогда
    пСтатус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.НеСогласована;
ИначеЕсли Параметры.Источник.statusApproval.name = "На согласовании" Тогда
    пСтатус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.НеСогласована;
КонецЕсли;
пСтатусДляЖР = "статус " + Параметры.Источник.status.name+"; объект "+Параметры.Источник.title+"; ст согл "+Параметры.Источник.statusApproval.name;
ЗаписьЖурналаРегистрации("интеграция Получение",УровеньЖурналаРегистрации.Информация,,пСтатусДляЖР,,);
Параметры.Результат = пСтатус;

 

Также столкнулись с такой проблемой: в КА заявку перевели в статус "К оплате", через некоторое время из ДО прилетает статус "Согласовано". Пришлось на стороне КА делать проверку, если статус "К оплате", то обмен его уже изменить не может. Такие заявки контролируются ответственным пользователем.

3. Меняем логику работы обмена.

После обсуждений с заказчиком было принято решение о том, что текущую логику работы обмена нужно поменять. А именно:

-сделать проверку на количество итераций по ошибочным пакетам при загрузке из ДО в КА;

-если ошибочный пакет грузится повторно, присваиваем ему статус обработанного с занесением ошибки в ЖР (в дальнейшем планируется отдельный регистр + рассылка ошибок по ответственным);

-под каждый объект делаем свой пакет, т.е если в очереди будет ошибочный объект, то он не повлияет на остальные пакеты в очереди;

В итоге доработки выглядят так:

 
 на стороне КА ИнтеграцияС1СДокументооборотОбмен

 

&Вместо("ПолучитьДанные")
Процедура is4b_ПолучитьДанные()
	Попытка
		
		Прокси = ИнтеграцияС1СДокументооборотПовтИсп.ПолучитьПрокси();
		
		ПоддерживаетсяОбновлениеФайлов = 
			ИнтеграцияС1СДокументооборотПовтИсп.ДоступенФункционалВерсииСервиса("2.1.9.1.CORP");
		ОбъектыКОбновлениюПечатныхФорм = Новый ТаблицаЗначений;
		ОбъектыКОбновлениюПечатныхФорм.Колонки.Добавить("Объект");
		ОбъектыКОбновлениюПечатныхФорм.Колонки.Добавить("ОбъектXDTO");
		ОбъектыКОбновлениюПечатныхФорм.Колонки.Добавить("Правило");
		
		УзелДокументооборота = ИнтеграцияС1СДокументооборотПовтИсп.УзелДокументооборота();
		СоставПланаОбмена = Метаданные.ПланыОбмена.ИнтеграцияС1СДокументооборотомПереопределяемый.Состав;
		
		ПрочитаныВсеСообщения = Ложь;
		
		МассивОшибочныхПакетов = Новый Массив;
		СчетчикИтераций = 0;
		Пока Не ПрочитаныВсеСообщения 
			И МассивОшибочныхПакетов.Количество()<10 
			И СчетчикИтераций<50 Цикл
			СчетчикИтераций = СчетчикИтераций+1;
			//Каждое сообщение обрабатываем в отдельной попытке
			Попытка
			
			Запрос = ИнтеграцияС1СДокументооборот.СоздатьОбъект(Прокси, "DMGetChangesRequest");
			Запрос.lastMessageId = Константы.НомерПоследнегоПринятогоСообщенияДокументооборота.Получить();
			
			Ответ = Прокси.execute(Запрос);
			ИнтеграцияС1СДокументооборот.ПроверитьВозвратВебСервиса(Прокси, Ответ);
			
			//bmv
			//проверяем, если уже была попытка записи и завершилась с ошибокой
			//то помечаем этот пакет, как обработанный в ДО
			ИндексПакетаВМассиве =МассивОшибочныхПакетов.Найти(Ответ.messageId);
			Если ИндексПакетаВМассиве<>Неопределено Тогда
				МассивОшибочныхПакетов.Удалить(ИндексПакетаВМассиве);
				НомерИсходный = Константы.НомерПоследнегоПринятогоСообщенияДокументооборота.Получить();
				НомерПринятый = Строка(Ответ.messageId);
				Если НомерИсходный <> НомерПринятый Тогда
					Константы.НомерПоследнегоПринятогоСообщенияДокументооборота.Установить(НомерПринятый);
				КонецЕсли;
				Продолжить;
			КонецЕсли;

			//bmv

			Для каждого ОбъектXDTO Из Ответ.objects Цикл
				
								
				
				Если ОбъектXDTO.objectId.type = "DMInternalDocumentTemplate"
					Или ОбъектXDTO.objectId.type = "DMIncomingDocumentTemplate"
					Или ОбъектXDTO.objectId.type = "DMOutgoingDocumentTemplate" Тогда
					
					Справочники.ПравилаИнтеграцииС1СДокументооборотом.ОбновитьПравилаПоШаблону(ОбъектXDTO);
					
					Продолжить;
					
				КонецЕсли;
				
				Ссылки = ИнтеграцияС1СДокументооборот.СсылкиПоВнешнимОбъектам(ОбъектXDTO);
				
				Для Каждого ОбъектСсылка Из Ссылки Цикл
					
					//Правило = Справочники.ПравилаИнтеграцииС1СДокументооборотом.ПравилоИнтеграцииОбъекта(
					//	ОбъектСсылка, ОбъектXDTO.objectId.type);
					
					//bmv 26_10_20
					Правило = Неопределено;
					Правила = ИнтеграцияС1СДокументооборотВызовСервера.ПодходящиеПравила(ОбъектСсылка,ОбъектXDTO);
					Если Правила.Количество()=1 Тогда
						Правило = Правила[0].Ссылка;
					КонецЕсли;
					ЗаписьЖурналаРегистрации("ПолучениеИзДО.ПодборПравилИнтеграции", УровеньЖурналаРегистрации.Информация,,ОбъектСсылка,"Выбрано правило "+ Правило);
					//bmv 26_10_20
					Если Правило = Неопределено Тогда
						Продолжить;
					КонецЕсли;
					
					Если ОбъектXDTO.Свойства().Получить("files") <> Неопределено
						И ОбъектXDTO.Установлено("files") Тогда
						
						Если ОбъектXDTO.files.Количество() <> 0 Тогда
							ИнтеграцияС1СДокументооборотПереопределяемый.ПриПоявленииПрисоединенныхФайловДокументооборота(
								ОбъектXDTO.objectId.id,
								ОбъектXDTO.objectId.type,
								ОбъектСсылка);
						Иначе
							ИнтеграцияС1СДокументооборотПереопределяемый.ПриУдаленииПрисоединенныхФайловДокументооборота(
								ОбъектXDTO.objectId.id,
								ОбъектXDTO.objectId.type,
								ОбъектСсылка);
						КонецЕсли;
						
					КонецЕсли;
					
					Объект = ОбъектСсылка.ПолучитьОбъект();
					
					ИсходнаяПометкаУдаления = Объект.ПометкаУдаления;
					
					Обновление = Истина;
					ТребуетсяПерепроведение = Ложь;
					ЕстьИзменения = Справочники.ПравилаИнтеграцииС1СДокументооборотом.ЗаполнитьОбъектПоОбъектуXDTO(
						Прокси,
						Объект,
						ОбъектXDTO,
						Правило,
						Обновление,
						ТребуетсяПерепроведение);
						
					Если ЕстьИзменения Тогда
							
						Если Объект.ПометкаУдаления
							И Не ИсходнаяПометкаУдаления Тогда
							
							МетаданныеОбъекта = Объект.Метаданные();
							Если Метаданные.Документы.Содержит(МетаданныеОбъекта)
								И МетаданныеОбъекта.Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить
								И Объект.Проведен Тогда
								Объект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
							Иначе
								Объект.ОбменДанными.Загрузка = Истина;
								Объект.Записать();
							КонецЕсли;
							
						Иначе
							
											
							ЗаполненКорректно = Объект.ПроверитьЗаполнение();
							
							Если ЗаполненКорректно Тогда
								Если ТребуетсяПерепроведение Тогда
									Объект.Записать(РежимЗаписиДокумента.Проведение,
										РежимПроведенияДокумента.Неоперативный);
								Иначе
									Объект.ОбменДанными.Загрузка = Истина;
									Объект.Записать();
								КонецЕсли;
							Иначе
								СообщенияПользователю = ПолучитьСообщенияПользователю(Истина);
								ТекстСообщения = "";
								Для Каждого СообщениеПользователю Из СообщенияПользователю Цикл 
									ТекстСообщения = ТекстСообщения + СообщениеПользователю.Текст + Символы.ПС;
								КонецЦикла;
								ВызватьИсключение ТекстСообщения;
							КонецЕсли;
							
						КонецЕсли;
						
						Если ПоддерживаетсяОбновлениеФайлов
							И ИнтеграцияС1СДокументооборотКлиентСервер.ЭтоДокумент(ОбъектXDTO.objectId.type) Тогда
							КОбновлению = ОбъектыКОбновлениюПечатныхФорм.Добавить();
							КОбновлению.Объект = Объект;
							КОбновлению.ОбъектXDTO = ОбъектXDTO;
							КОбновлению.Правило = Правило;
						КонецЕсли;
					
						Если СоставПланаОбмена.Содержит(Объект.Метаданные()) Тогда
							ПланыОбмена.УдалитьРегистрациюИзменений(УзелДокументооборота, Объект.Ссылка);
						КонецЕсли;
						
					КонецЕсли;
					
				КонецЦикла;
				
			КонецЦикла;
			
			// С версии 1.4.8 выполняется обновление состояний согласования на стороне ИС.
			Если Ответ.Свойства().Получить("records") <> Неопределено Тогда
				
				Для каждого ОбъектXDTO Из Ответ.records Цикл
					
					ЗапросСвязанныйОбъект = Новый Запрос(
						"ВЫБРАТЬ ПЕРВЫЕ 1
						|	Объект
						|ИЗ
						|	РегистрСведений.ОбъектыИнтегрированныеС1СДокументооборотом
						|ГДЕ
						|	ТипОбъектаДО = &ТипОбъектаДО
						|	И ИдентификаторОбъектаДО = &ИдентификаторОбъектаДО
						|");
					Если ИнтеграцияС1СДокументооборот.ПроверитьТип(Прокси, ОбъектXDTO, 
						"DMApprovalStateRecord") Тогда
						ЗапросСвязанныйОбъект.УстановитьПараметр("ТипОбъектаДО",
							ОбъектXDTO.type);
						ЗапросСвязанныйОбъект.УстановитьПараметр("ИдентификаторОбъектаДО",
							ОбъектXDTO.id);
						Выборка = ЗапросСвязанныйОбъект.Выполнить().Выбрать();
						Если Выборка.Следующий() Тогда
							Если ОбъектXDTO.status = Неопределено Тогда // запись удалена (например, прерывание)
								ИнтеграцияС1СДокументооборотВызовСервера.ПриИзмененииСостоянияСогласования(
									ОбъектXDTO.id,
									ОбъектXDTO.type,
									Неопределено,
									Ложь,
									Выборка.Объект);
							Иначе
								ИдентификаторСостояния = ОбъектXDTO.status.objectId.id;
								Состояние = Перечисления.СостоянияСогласованияВДокументообороте[ИдентификаторСостояния];
								ИнтеграцияС1СДокументооборотВызовСервера.ПриИзмененииСостоянияСогласования(
									ОбъектXDTO.id,
									ОбъектXDTO.type,
									Состояние,
									Ложь,
									Выборка.Объект,
									ОбъектXDTO.name,
									ОбъектXDTO.date);
							КонецЕсли;
						КонецЕсли;
					КонецЕсли;					
									
				КонецЦикла;
				
			КонецЕсли;
			
			НомерИсходный = Константы.НомерПоследнегоПринятогоСообщенияДокументооборота.Получить();
			НомерПринятый = Строка(Ответ.messageId);
			Если НомерИсходный <> НомерПринятый Тогда
				Константы.НомерПоследнегоПринятогоСообщенияДокументооборота.Установить(НомерПринятый);
			КонецЕсли;
			
			ПрочитаныВсеСообщения = (Ответ.messageId = Неопределено);
			
			ОбновитьПечатныеФормы(ОбъектыКОбновлениюПечатныхФорм);
			
		Исключение
			МассивОшибочныхПакетов.Добавить(Ответ.messageId);
			Инфо = ОписаниеОшибки();
			ЗаписьЖурналаРегистрации(
			ИнтеграцияС1СДокументооборот.ИмяСобытияЖурналаРегистрации(
				НСтр("ru = 'Получение данных'",
					ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())),
			УровеньЖурналаРегистрации.Ошибка,
			,
			Запрос.Тип().Имя,
			Запрос.Тип().Имя + Символы.ПС + Инфо+"; ИД пакета: "+Ответ.messageId);
		КонецПопытки;
	
		КонецЦикла; 
		
	Исключение
		Инфо = ОписаниеОшибки();
		ЗаписьЖурналаРегистрации(
			ИнтеграцияС1СДокументооборот.ИмяСобытияЖурналаРегистрации(
				НСтр("ru = 'Получение данных'",
					ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())),
			УровеньЖурналаРегистрации.Ошибка,
			,
			Запрос.Тип().Имя,
			Запрос.Тип().Имя + Символы.ПС + Инфо);
		
	КонецПопытки; 

КонецПроцедуры

&Вместо("ПодготовитьДанныеДляОтправки")
Процедура is4b_ПодготовитьДанныеДляОтправки()
	УзелДокументооборота = ИнтеграцияС1СДокументооборотПовтИсп.УзелДокументооборота();
	
	Прокси = ИнтеграцияС1СДокументооборотПовтИсп.ПолучитьПрокси();
	
	// Выборка всех изменений для данной интегрированной системы
	ИнтегрированныеОбъекты = ПолучитьМассивЗарегистрированныхДанных(УзелДокументооборота);
	
	Если ИнтегрированныеОбъекты.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	//bmv 30_10_20
	МассивУспешноОбработаны = Новый Массив;
	//bmv 30_10_20
	Для Каждого ИнтегрированныйОбъект Из ИнтегрированныеОбъекты Цикл
		//bmv 30_10_20
		//под каждый объект свой пакет
		ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
		ЗаписьXML = Новый ЗаписьXML;
		ЗаписьXML.ОткрытьФайл(ИмяВременногоФайла, "UTF-8");
		ЗаписьXML.ЗаписатьОбъявлениеXML();
		ЗаписьXML.ЗаписатьНачалоЭлемента("Message");
		//bmv 30_10_20
		
		ОбъектXDTO = ИнтеграцияС1СДокументооборот.ПолучитьXDTOИзмененийИзОбъекта(Прокси, ИнтегрированныйОбъект);
		
		Если ОбъектXDTO = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		
		Попытка
			Прокси.ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
			//bmv 30_10_20
			МассивУспешноОбработаны.Добавить(ИнтегрированныйОбъект);
			//bmv 30_10_20
		Исключение
			Инфо = ОписаниеОшибки();
			ЗаписьЖурналаРегистрации(
				ИнтеграцияС1СДокументооборот.ИмяСобытияЖурналаРегистрации(НСтр("ru = 'Выгрузка XDTO в XML'",
					ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())),
				УровеньЖурналаРегистрации.Ошибка,
				,
				ОбъектXDTO.Тип().Имя,
				ОбъектXDTO.Тип().Имя + Символы.ПС + Инфо);
		КонецПопытки;
		//bmv 30_10_20
		ЗаписьXML.ЗаписатьКонецЭлемента();
		ЗаписьXML.Закрыть();
		ДвоичныеДанныеСообщения = Новый ДвоичныеДанные(ИмяВременногоФайла);
		ДанныеСообщения = Новый ХранилищеЗначения(ДвоичныеДанныеСообщения, Новый СжатиеДанных(9));
	
		РегистрыСведений.ОчередьСообщенийВ1СДокументооборот.ДобавитьСообщение(ДанныеСообщения);
		#Если Сервер Тогда
		УдалитьФайлы(ИмяВременногоФайла);
		#КонецЕсли
		//bmv 30_10_20
	КонецЦикла;
	
	
	//bmv 30_10_20
	//Для Каждого ИнтегрированныйОбъект Из ИнтегрированныеОбъекты Цикл
	Если МассивУспешноОбработаны.Количество()>0 Тогда
		Для Каждого ИнтегрированныйОбъект Из МассивУспешноОбработаны Цикл
			ПланыОбмена.УдалитьРегистрациюИзменений(УзелДокументооборота, ИнтегрированныйОбъект.Объект);
		КонецЦикла;
	КонецЕсли;
	//bmv 30_10_20
КонецПроцедуры

&Вместо("ОтправитьДанные")
Процедура is4b_ОтправитьДанные()
	Попытка
		
		ИдентификаторСообщения = Неопределено;
		МоментВремени = Неопределено;
		
		Запрос = Новый Запрос(
			"ВЫБРАТЬ
			|	ОчередьСообщенийВ1СДокументооборот.МоментВремени КАК МоментВремени,
			|	ОчередьСообщенийВ1СДокументооборот.Данные КАК Данные,
			|	ОчередьСообщенийВ1СДокументооборот.Идентификатор КАК Идентификатор
			|ИЗ
			|	РегистрСведений.ОчередьСообщенийВ1СДокументооборот КАК ОчередьСообщенийВ1СДокументооборот
			|
			|УПОРЯДОЧИТЬ ПО
			|	МоментВремени");
		
		Результат = Запрос.Выполнить();
		
		Если Результат.Пустой() Тогда
			Возврат;
		КонецЕсли; 
		
		Прокси = ИнтеграцияС1СДокументооборотПовтИсп.ПолучитьПрокси();
		
		//Запрос = ИнтеграцияС1СДокументооборот.СоздатьОбъект(Прокси, "DMPutChangesRequest");
		//ОбщийРазмерСообщений = 0;
		ПредельныйРазмерСообщений = 
			ИнтеграцияС1СДокументооборотВызовСервера.МаксимальныйРазмерПередаваемогоФайла();
		
		Выборка = Результат.Выбрать();
		
		Пока Выборка.Следующий() Цикл
			//bmv 30_10_20
			Попытка
			Запрос = ИнтеграцияС1СДокументооборот.СоздатьОбъект(Прокси, "DMPutChangesRequest");
			ИдентификаторСообщения = Выборка.Идентификатор;
			МоментВремени = Выборка.МоментВремени;
			
			ДвоичныеДанные = Выборка.Данные.Получить();
			РазмерДвоичныеДанные = ДвоичныеДанные.Размер();
			//ОбщийРазмерСообщений = ОбщийРазмерСообщений + ДвоичныеДанные.Размер();
			
			//Если ОбщийРазмерСообщений > ПредельныйРазмерСообщений
			//	И Запрос.objects.Количество() > 0 Тогда
			
			Если РазмерДвоичныеДанные>ПредельныйРазмерСообщений Тогда
				ЗаписьЖурналаРегистрации(
				НСтр("ru = 'Интеграция с 1С:Документооборотом.Отправка данных'",
				ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
				УровеньЖурналаРегистрации.Ошибка,
				Метаданные.РегистрыСведений.ОчередьСообщенийВ1СДокументооборот,
				Строка(ИдентификаторСообщения),
				" превышен максимальный размер пакета");
				Продолжить;
			КонецЕсли;
				//Результат = Прокси.execute(Запрос);
				//ИнтеграцияС1СДокументооборот.ПроверитьВозвратВебСервиса(Прокси, Результат);
				
				//Запрос = ИнтеграцияС1СДокументооборот.СоздатьОбъект(Прокси, "DMPutChangesRequest");
				//ОбщийРазмерСообщений = 0;
				
			
			ИмяФайлаСообщенияОбмена = ПолучитьИмяВременногоФайла("xml");
			ДвоичныеДанные.Записать(ИмяФайлаСообщенияОбмена);
			
			ЧтениеXML = Новый ЧтениеXML;
			ЧтениеXML.ОткрытьФайл(ИмяФайлаСообщенияОбмена);
			ЧтениеXML.Прочитать();
			ЧтениеXML.Прочитать();
			
			Пока ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Цикл
				// Выполняется последовательное чтение одного объекта за другим
				ТипXDTO = Прокси.ФабрикаXDTO.Тип("http://www.1c.ru/dm", ЧтениеXML.Имя);
				ОбъектXDTO = Прокси.ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипXDTO);
				Запрос.objects.Добавить(ОбъектXDTO);
			КонецЦикла;
			
			ЧтениеXML = Неопределено;
			#Если Сервер Тогда
			УдалитьФайлы(ИмяФайлаСообщенияОбмена);
			#КонецЕсли
			Результат = Прокси.execute(Запрос);
			ИнтеграцияС1СДокументооборот.ПроверитьВозвратВебСервиса(Прокси, Результат);
			//если ошибок нет, сразу удаляем запись в регистре
			МенеджерЗаписи = РегистрыСведений.ОчередьСообщенийВ1СДокументооборот.СоздатьМенеджерЗаписи();
			ЗаполнитьЗначенияСвойств(МенеджерЗаписи, Выборка);
			МенеджерЗаписи.Удалить();

		Исключение
				Инфо = ОписаниеОшибки();
				ЗаписьЖурналаРегистрации(
				НСтр("ru = 'Интеграция с 1С:Документооборотом.Отправка данных'",
				ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
				УровеньЖурналаРегистрации.Ошибка,
				Метаданные.РегистрыСведений.ОчередьСообщенийВ1СДокументооборот,
				Строка(ИдентификаторСообщения),
				Запрос.Тип().Имя + Символы.ПС + Инфо);
			    ОбновитьДанныеПоОшибке(ИдентификаторСообщения, МоментВремени, Инфо);
			КонецПопытки;
		КонецЦикла; 
		
		//Если Запрос.objects.Количество() > 0 Тогда
		//	Результат = Прокси.execute(Запрос);
		//	ИнтеграцияС1СДокументооборот.ПроверитьВозвратВебСервиса(Прокси, Результат);
		//КонецЕсли;
		
		//Выборка.Сбросить();
		
		//Пока Выборка.Следующий() Цикл
			
						
		//КонецЦикла;
		
	Исключение
		
		Инфо = ОписаниеОшибки();
		
		ЗаписьЖурналаРегистрации(
			НСтр("ru = 'Интеграция с 1С:Документооборотом.Отправка данных'",
				ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
			УровеньЖурналаРегистрации.Ошибка,
			Метаданные.РегистрыСведений.ОчередьСообщенийВ1СДокументооборот,
			Строка(ИдентификаторСообщения),
			Запрос.Тип().Имя + Символы.ПС + Инфо);
		ОбновитьДанныеПоОшибке(ИдентификаторСообщения, МоментВремени, Инфо);	
		
		
	КонецПопытки; 

КонецПроцедуры

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

 

 
На стороне ДО модуль ОбработкаЗапросовXDTOОбмен

 


&Вместо("ФормированиеСообщений")
Процедура is4b_ФормированиеСообщений()
	ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания();
	
	УзлыОбмена = ОбработкаЗапросовXDTOПовтИсп.ПолучитьУзлыОбменаИнтегрированныхСистем();
	
	Если Не ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюСИнтегрированнымиСистемами") Тогда
		Для каждого ИнтегрированнаяСистема Из УзлыОбмена Цикл
			ПланыОбмена.УдалитьРегистрациюИзменений(ИнтегрированнаяСистема);
		КонецЦикла; 
		Возврат;
	КонецЕсли; 
	
	Для каждого ИнтегрированнаяСистема Из УзлыОбмена Цикл
		СформироватьПакетыОбмена(ИнтегрированнаяСистема);
		//Сообщение = СоздатьНовоеСообщение(ИнтегрированнаяСистема);
		//СформироватьПакетОбмена(Сообщение, ИнтегрированнаяСистема);
	КонецЦикла;
КонецПроцедуры

Процедура СформироватьПакетыОбмена(Узел)
	УстановитьПривилегированныйРежим(Истина);
	
	ПараметрыСеанса.УзелИнтегрированнойСистемы = Узел; // для кода, формирующего XDTO-объекты
	
	МассивНеобработанныхОбъектов = Новый Массив;	
	//Сначала получаем все данные с момента последнего обмена
	НомерСообщения = 1;
	ПланыОбмена.ВыбратьИзменения(Узел, НомерСообщения);
		
	// Выборка всех изменений
	ДанныеДляПередачи = ПолучитьДанныеДляПередачи(Узел, НомерСообщения);
		
	//КоличествоОбъектовВсего = ДанныеДляПередачи.Количество();
	//ВВыборкеЕстьДанные = КоличествоОбъектовВсего > 0;
		НачатьТранзакцию();
	//В цикле по выбранным объектам формируем сообщения и заполняем данными
	Для Каждого ЭлементДанных Из ДанныеДляПередачи Цикл
			ОбъектыXDTO = Новый Массив;
			ЗаписиXDTO = Новый Массив;

			Сообщение = СоздатьНовоеСообщение(Узел);
			НачалоПодготовки = ТекущаяУниверсальнаяДатаВМиллисекундах();
			ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
			ЗаписьXML = Новый ЗаписьXML;
			ЗаписьXML.ОткрытьФайл(ИмяВременногоФайла, "UTF-8");
			ЗаписьXML.ЗаписатьОбъявлениеXML();
			Попытка
				ПолучитьXDTOИзОбъекта(ЭлементДанных, ОбъектыXDTO, ЗаписиXDTO);
				//ВызватьИсключение("тест"); //тестируем ошибочную ситуацию
			Исключение
				Инфо = ИнформацияОбОшибке();
				ЗаписьЖурналаРегистрации(
					НСтр("ru = 'Обмен с интегрированными системами.Формирование сообщения'", Метаданные.ОсновнойЯзык.КодЯзыка),
					УровеньЖурналаРегистрации.Ошибка,,
					ЭлементДанных,
					ПодробноеПредставлениеОшибки(Инфо));
				//ВызватьИсключение;
				
				//Если формирование объекта прошло с ошибкой, тогда удаляем сообщение для этого пакета, очищаем записьХМЛ
				СообщениеОбъект = Сообщение.ПолучитьОбъект();
				СообщениеОбъект.Удалить();
				ЗаписьXML.Закрыть();
				УдалитьФайлы(ИмяВременногоФайла);
				МассивНеобработанныхОбъектов.Добавить(ЭлементДанных);
			    Продолжить;				
			КонецПопытки;
			// Расчет процента готовности сообщения.
			// Максимальное значение 99, т.к. необходимо гарантировать, 
			//	что не будет выполняться попытка передать сообщение клиенту до того,
			//	как данные сообщения будут записаны.
			СчетчикОбъектов = 1;
			ПроцентГотовности = Окр(99 * СчетчикОбъектов);
			РегистрыСведений.СтепеньГотовностиСообщенийИнтегрированныхСистем.УстановитьПроцентГотовности(
				Сообщение, ПроцентГотовности);
				
				КонецПодготовки = ТекущаяУниверсальнаяДатаВМиллисекундах();
		
			РегистрыСведений.СведенияОСообщенияхОбменаСИнтегрированнымиСистемами.ЗаписатьВремяПодготовки(
			Сообщение,
			(КонецПодготовки - НачалоПодготовки)/1000);

			
			ВыгрузитьМассивXDTOВСообщение(ИмяВременногоФайла, ЗаписьXML, ОбъектыXDTO, ЗаписиXDTO, Сообщение);
			УдалитьФайлы(ИмяВременногоФайла);

		КонецЦикла;
		ПланыОбмена.УдалитьРегистрациюИзменений(Узел, НомерСообщения);
		//Если были ошибочные данные, перерегистрируем их на узле
		Если МассивНеобработанныхОбъектов.Количество()>0 Тогда
			Для Каждого ОшибочныйОбъект Из МассивНеобработанныхОбъектов Цикл
				ПланыОбмена.ЗарегистрироватьИзменения(Узел,ОшибочныйОбъект);
			КонецЦикла;
		КонецЕслИ;
		ЗафиксироватьТранзакцию();
КонецПроцедуры


&Вместо("ПолучитьИзменения")
Функция is4b_ПолучитьИзменения(Сообщение)
	Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюСИнтегрированнымиСистемами") = Ложь Тогда 
		Константы.ИспользоватьСинхронизациюСИнтегрированнымиСистемами.Установить(Истина);
	КонецЕсли; 
	
	Ответ = ОбработкаЗапросовXDTO.СоздатьОбъект("DMGetChangesResponse");
	Узел = ОбработкаЗапросовXDTOКОРП.УзелИнтегрированнойСистемыПоСообщению(Сообщение);
	
	ИдентификаторПринятогоСообщения = Сообщение.lastMessageId;
	
	Если ИдентификаторПринятогоСообщения <> Неопределено Тогда
		Запрос = Новый Запрос;
		Запрос.Текст = 
			"ВЫБРАТЬ ПЕРВЫЕ 1
			|	СообщенияИнтегрированныхСистем.Ссылка
			|ИЗ
			|	Справочник.СообщенияИнтегрированныхСистем КАК СообщенияИнтегрированныхСистем
			|ГДЕ
			|	СообщенияИнтегрированныхСистем.ПометкаУдаления = ЛОЖЬ
			|	И СообщенияИнтегрированныхСистем.ИдентификаторСообщения = &ИдентификаторСообщения
			|	И СообщенияИнтегрированныхСистем.Входящее = ЛОЖЬ";
		Запрос.УстановитьПараметр("ИдентификаторСообщения", Строка(ИдентификаторПринятогоСообщения));
		ВыборкаПринятыеСообщения = Запрос.Выполнить().Выбрать();
		Если ВыборкаПринятыеСообщения.Следующий() Тогда
			ПринятоеСообщение = ВыборкаПринятыеСообщения.Ссылка;
			ПринятоеСообщениеОбъект = ПринятоеСообщение.ПолучитьОбъект();
			ПринятоеСообщениеОбъект.УстановитьПометкуУдаления(Истина);
			РегистрыСведений.СведенияОСообщенияхОбменаСИнтегрированнымиСистемами.ЗаписатьДатуПередачиКлиенту(
				ПринятоеСообщение,
				ТекущаяДатаСеанса());
			ИдентификаторПринятогоСообщения = Неопределено;
		Иначе
			ИдентификаторПринятогоСообщения = Неопределено;
		КонецЕсли;
	КонецЕсли;

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	СообщенияИнтегрированныхСистем.Ссылка,
		|	СообщенияИнтегрированныхСистем.ДанныеСообщения КАК Данные,
		|	СообщенияИнтегрированныхСистем.ДатаСоздания КАК ДатаСоздания,
		|	СообщенияИнтегрированныхСистем.ИдентификаторСообщения
		|ИЗ
		|	Справочник.СообщенияИнтегрированныхСистем КАК СообщенияИнтегрированныхСистем
		|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
		|	РегистрСведений.ОчередиСообщенийОбменаСИнтегрированнымиСистемами КАК ОчередиСообщенийОбменаСИнтегрированнымиСистемами
		|ПО
		|	СообщенияИнтегрированныхСистем.Очередь = ОчередиСообщенийОбменаСИнтегрированнымиСистемами.Очередь
		|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
		|	РегистрСведений.СтепеньГотовностиСообщенийИнтегрированныхСистем КАК СтепеньГотовностиСообщенийИнтегрированныхСистем
		|ПО
		|	СообщенияИнтегрированныхСистем.Ссылка = СтепеньГотовностиСообщенийИнтегрированныхСистем.Сообщение
		|ГДЕ
		|	ОчередиСообщенийОбменаСИнтегрированнымиСистемами.ИнтегрированнаяСистема = &ИнтегрированнаяСистема
		|	И НЕ СообщенияИнтегрированныхСистем.ПометкаУдаления
		|	И СтепеньГотовностиСообщенийИнтегрированныхСистем.ПроцентГотовности = 100
		|
		|УПОРЯДОЧИТЬ ПО
		|	ДатаСоздания УБЫВ";
	Запрос.УстановитьПараметр("ИнтегрированнаяСистема", Узел);
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	Если Выборка.Следующий() Тогда
		
		ИмяФайлаСообщенияОбмена = ПолучитьИмяВременногоФайла("xml");
		ДвоичныеДанные = Выборка.Данные.Получить();
		ДвоичныеДанные.Записать(ИмяФайлаСообщенияОбмена);
		СсылочныйТип = ФабрикаXDTO.Тип("http://www.1c.ru/dm", "DMObject");
			
		ЧтениеXML = Новый ЧтениеXML;
		ЧтениеXML.ОткрытьФайл(ИмяФайлаСообщенияОбмена);
		
		ЧтениеXML.Прочитать(); // корневой элемент "Message"
		
		ЧтениеXML.Прочитать();
		Пока ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Цикл
			ТипXDTO = ФабрикаXDTO.Тип("http://www.1c.ru/dm", ЧтениеXML.Имя);
			ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ТипXDTO);
			Если СсылочныйТип.ЭтоПотомок(ТипXDTO) Тогда
				Ответ.objects.Добавить(ОбъектXDTO);
			Иначе // записи РС и тому подобные объекты не ссылочных типов
				Ответ.records.Добавить(ОбъектXDTO);
			КонецЕсли;
		КонецЦикла;
			
		Ответ.messageId = Строка(Выборка.ИдентификаторСообщения);
		
	КонецЕсли; 
	
	Возврат Ответ;
КонецФункции


 

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

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Torin 551 10.11.20 14:58 Сейчас в теме
(0) Отличная статья.+
user1174740; +1 Ответить
3. maks_20 155 10.11.20 16:06 Сейчас в теме
28. hdv 15.11.21 23:02 Сейчас в теме
Спасибо за статью, многое прояснило.

(3) maks_20 вы пишите
"Также столкнулись с такой проблемой: в КА заявку перевели в статус "К оплате", через некоторое время из ДО прилетает статус "Согласовано". Пришлось на стороне КА делать проверку, если статус "К оплате", то обмен его уже изменить не может. Такие заявки контролируются ответственным пользователем."
но не указали как это решили. у нас ровно такая же проблема. Казначеи не дожидаясь согласования в ДО переводят в ERP заявку в статус "К оплате", т.к. знают что платеж точно согласуют, а платить надо оперативно (например зарплата, налоги). И при изменении статуса останавливается обмен, т.к. типовая проверка не дает менять статус "К оплате".
Прошу вас поделиться кодом на произвольном языке в правилах для Статуса как вы проверяете уже присвоенный статус в объекте КА.
Буду очень благодарен
29. maks_20 155 16.11.21 11:17 Сейчас в теме
(28) Добрый день. Данную проблему решали не в правилах интеграции. В расширении для процедуры модуля объекта ЗаявкаНаРасходованиеДенежныхСредств заменил процедуру ПроверитьНаличиеОплатыЗаявки на свою:

&Вместо("ПроверитьНаличиеОплатыЗаявки")
Процедура is4b_ПроверитьНаличиеОплатыЗаявки(Отказ)
	Если Не ЭтоНовый() Тогда 
		//bmv 22_10_20
		Попытка
		СтарыйСтатус = Ссылка.Статус;
		Если СтарыйСтатус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.КОплате
			И Статус <> Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.КОплате
			И ПараметрыСеанса.ТекущийПользователь.Наименование="<Не указан>" Тогда     //Фоновое задание, если пользователь не указан для него в настройках
			Статус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.КОплате;
			ЗаписьЖурналаРегистрации("Попытка смена статуса с Оплачено",УровеньЖурналаРегистрации.Информация,,Ссылка);
			Возврат;
		КонецЕсли;	
		Исключение
		//только для сохранения работоспособности раб базы
		КонецПопытки;
		//bmv 22_10_20	
		Если Статус <> Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.КОплате Тогда
		
		УстановитьПривилегированныйРежим(Истина);
		
		Запрос = Новый Запрос("
		|ВЫБРАТЬ
		|	ДенежныеСредства.СуммаРасход КАК Оплачено
		|ИЗ
		|	РегистрНакопления.ДенежныеСредстваКВыплате.Обороты(,,Период,
		|		ЗаявкаНаРасходованиеДенежныхСредств = &Заявка
		|	) КАК ДенежныеСредства
		|ГДЕ
		|	ДенежныеСредства.СуммаРасход > 0
		|");
		Запрос.УстановитьПараметр("Заявка", Ссылка);
		
		Выборка = Запрос.Выполнить().Выбрать();
		Если Выборка.Следующий() Тогда
			Текст = НСтр("ru = 'Заявка оплачена. Нельзя изменять статус заявки ""К оплате""'");
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
				Текст,
				ЭтотОбъект,
				"Статус",
				,
				Отказ);
		КонецЕсли;
		
	КонецЕсли;
	КонецЕсли;
КонецПроцедуры
Показать
30. hdv 22.11.21 10:59 Сейчас в теме
(29)
Добрый день. Мне все же удалось решить проблему через шаблон правил бесшовной интеграции. Если кому-то будет интересным, решение:
СтатусЗаявкиERP = Неопределено;
Параметры.Результат = Неопределено;

Если Параметры.Приемник <> Неопределено Тогда
	СтатусЗаявкиERP = Параметры.Приемник.Статус;
КонецЕсли;

Если СтатусЗаявкиERP <> Неопределено Тогда // удалось получить ссылку на объект и его статус, проверяем дальше
	Если СтатусЗаявкиERP <> Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.КОплате Тогда
		пСтатус = Неопределено;
		Попытка
			Если Параметры.Источник.statusApproval.name = "Согласован" Тогда
			    пСтатус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.Согласована;
			ИначеЕсли Параметры.Источник.statusApproval.name = "Не согласован" Тогда
			    пСтатус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.НеСогласована;
			ИначеЕсли Параметры.Источник.statusApproval.name = "На согласовании" Тогда
			    пСтатус = Перечисления.СтатусыЗаявокНаРасходованиеДенежныхСредств.НеСогласована;
			КонецЕсли;
		Исключение
		КонецПопытки;
	Иначе
		пСтатус = СтатусЗаявкиERP;
	КонецЕсли;
	Параметры.Результат = пСтатус;
КонецЕсли;
Показать
2. MSK_Step 22 10.11.20 15:14 Сейчас в теме
4. RustIG 10.11.20 17:22 Сейчас в теме
(0) спасибо за опыт!
как полит.корректно вы написали в конце
Как показывает практика, даже если разворачивать "из коробки" типовые решения, то корректно они работают далеко не всегда.


вопросы из зала:
1) что за префикс "is4b_" ?
2) сколько человек с вашей стороны участвовало при решении проблем интеграции, тестировании, переговоров с заказчиком?
3) сколько времени потрачено на решение проблем?
5. maks_20 155 10.11.20 19:54 Сейчас в теме
(4) Префикс нашей команды, отмечаем им свои доработки, чтобы не путать с чужими. На внедрении ДО участвовало 3 человека: руководитель проекта, он же общался с заказчиком, специалист-консультант (занимался настройкой бизнес-процессов и тестированием) и программист. На настройку синхронизации и интеграции (с периодическим обсуждениями с заказчиком) ушло почти 2 недели.
6. 5277209 11.11.20 11:40 Сейчас в теме
Отличная статья! Спасибо! Уточните плиз, ДО проф или корп?
7. maks_20 155 11.11.20 11:55 Сейчас в теме
(6) Спасибо за отзыв. ДО версии КОРП.
8. baykovsky 11.11.20 12:02 Сейчас в теме
Спасибо за статью.
Типовые правила обмена между ДО и КА не предусматривают возможности отбора объектов. Т.е. грузится абсолютно все. Нет возможности установить отбор по одной организации или например указать, что синхронизировать надо только номенклатуру и контрагентов. Как вы решали эту проблему?
11. maks_20 155 11.11.20 12:42 Сейчас в теме
(8) дорабатывали правила регистрации.
9. kolya_tlt 77 11.11.20 12:15 Сейчас в теме
информация о стабильных релизах БИД не разглашается по понятным причинам. обратившись к сообществу на фб или вк вы бы получили стабильную сборку от команды разработки ДО или релиз на который нужно обновиться.
10. maks_20 155 11.11.20 12:37 Сейчас в теме
(9) Большая часть проблем именно в модулях на стороне КА, мы ставили самые последние релизы и там те же проблемы, по крайней мере касательно интеграции.
12. Kovekh 11.11.20 14:02 Сейчас в теме
Добрый человек, спасибо вам большое за первый пункт!
Вы бы знали, как долго я пытался найти эту ошибку. Такая вываливалась при обмене ERP-ДО в части контрагентов и организаций. Причём ДО уже у нас поднялся с 12 до 21, а в синхронизации всё та же дичь)
13. user1080690 11.11.20 16:29 Сейчас в теме
При всем уважении, статья вызывает улыбку.
Крупная компания и проект на 3 человека с акцентом на копание в коде выглядит забавно.
14. maks_20 155 11.11.20 16:39 Сейчас в теме
(13) На всем проекте работает 11 человек. Конкретно документооборотом занимается 3 человека. Если для Вас статья получилась забавной, что ж, это Ваше мнение, спорить с ним смысла не вижу.
papche; RSConsulting; +2 Ответить
16. papche 543 12.11.20 10:08 Сейчас в теме
(13) Я думаю, на описанные задачи можно было бы посадить команду в 10 чел. И написать свою подсистему с обменом, повсюду вплетая типовой функционал. Ну и тогда было бы солиднее?
17. maks_20 155 12.11.20 10:47 Сейчас в теме
(16) Все возможно. вопрос в том, за чей счет будет вестись разработка. Ведь наладить типовой обмен в любом случае будет быстрее, чем разработать свою систему. Не каждый заказчик согласится оплачивать лишние часы. Разрабатывать аналог обмена за счет компании имеет смысл, если в дальнейшем планируется массовая продажа этих разработок другим клиентам.
18. papche 543 12.11.20 10:57 Сейчас в теме
(17) Ваш подход мне кажется рациональным. А размер команды должен быть адекватным в первую очередь выполняемым работам, а не размерам компании заказчика.
15. Константин С. 728 12.11.20 08:24 Сейчас в теме
Не реклама.
Берите Бит-финанс, там утверждение заявок можно в одной системе сделать.
19. SergeyTY 13.11.20 08:49 Сейчас в теме
спасибо что выводите в свет проблемы 1С и делитесь с решениями. КА я бы сравнил с кактусом: колется, но приходится... пока донесешь проблему до техподдержки, приходишь к мысли что лучше самому все сделать вручную.
20. sulig 62 23.11.20 15:47 Сейчас в теме
Отличная статья. Прошел почти все этапы. "не те правила подставляются" - нет базы под рукой, но насколько я помню это решается условиями применимости. С итерациями - спорное решение, я разбирал каждое событие и фиксил чтобы подобный инцидент не приводил к остановке обмена, сейчас обмен встает не чаще 1 раза за 3 месяца. Как решили проблему с авторизацией или для вас это не являлось проблемой?
21. maks_20 155 24.11.20 09:34 Сейчас в теме
(20) Спасибо. Условиями применимости к сожалению не решалась проблема. Изначально хотели ими обойтись. По поводу итераций - тут было согласовано с заказчиком. Сейчас у нас сделан отчет, который три раза в день рассылает ошибки обмена. Ответственный за обмены человек анализирует ошибки и далее оперативно их исправляет. Массив ошибок с момента внедрения уменьшился в десятки раз. А с авторизацией проблем не было кстати.
22. vihrov_av 22.12.20 09:43 Сейчас в теме
Всё четко и по делу. Прошел каждый из этих шагов при внедрении ERP + ДО.
К пункту 2.3 Обмен статусами документов добавлю:
Периодически сталкивался с такой проблемой когда согласование в ДО прошло и статус в ДО поменялся, а в ERP нет. Спустя какое то время удалось выяснить что некоторые процессы пользователи считают супер срочными и создавай документы в ERP и запускай процесс согласования не закрывают сам документ, а сразу же обзванивают участников процесса для оперативности согласования. И так как объект заблокирован, регламентное задание не может его изменить.
23. LomayaZakat 11.05.21 13:34 Сейчас в теме
Спасибо. Всё тоже самое.
24. xKEEPERx 24.08.21 00:30 Сейчас в теме
Подскажите, а откуда берётся вот это?
// Выборка всех изменений для данной интегрированной системы
ИнтегрированныеОбъекты = ПолучитьМассивЗарегистрированныхДанных(УзелДокументооборота);
25. maks_20 155 06.09.21 08:24 Сейчас в теме
(24) Это типовая функция в модуле ИнтеграцияС1СДокументооборотОбмен
26. xKEEPERx 06.09.21 08:42 Сейчас в теме
(25)спасибо, уже разобрался. У меня она по другому называется.
27. Skripagan 29.09.21 12:10 Сейчас в теме
Отличная статья. Спасибо !
Один вопрос, может не по теме, но может сможете подсказать.

Как я понимаю, обмена по правилам между ЗУП - ДО нет . Т.е. начальная синхронизация в таком составе баз невозможна ? Спасибо.
Оставьте свое сообщение

См. также

Ошибка №1 внедрения "Бюджетирования" в 1С:ERP2 и 1С:КА2: настройка статей бюджетов и статей ДДС 1-в-1 Промо

Бюджетирование и планирование Внедрение ИТ-системы Анализ и проектирование ИТ-систем Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Управленческий учет Бесплатно (free)

В цикле статей я хочу поделиться ошибками во внедрении подсистемы «Бюджетирование», которые мне приходится исправлять после коллег на реальных проектах, и лучшими приемами по автоматизации бюджетирования на 1С:ERP 2 и 1C:КА 2. Сегодня поговорим и о самой распространенной ошибке – настройке статей бюджетов 1-в-1 к справочнику «Статьи ДДС».

13.06.2018    41036    SergeyN    97    

Планирование производства и контроль управления операциями в 1С:ERP: кейс внедрения на лакокрасочном предприятии

Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Химическая промышленность Бесплатно (free)

Как реализовать в 1С:ERP сквозное планирование производства и управление на уровне отдельных технологических операций? Разберём на примере нашего кейса внедрения.

06.12.2022    244    ystetsenko    0    

ГОЗ в новой реальности, и как реализовать 275-ФЗ в 1С

Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Бухгалтерский учет Бесплатно (free)

Вместе с аналитиком «Внедренцы и Программисты» Екатериной Семёновой рассмотрели особенности выполнения гособоронзаказа и возможности автоматизации части необходимых процессов в 1С.

29.11.2022    472    ystetsenko    0    

Автоматизация контроля качества входного молочного сырья и готовой продукции в пищевой молочной промышленности в 1С:Молокозавод   

Внедрение ИТ-системы Готовая продукция, работы и услуги Логистика, склад и ТМЦ Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В статье рассмотрим, как с помощью модуля 1С: Молокозавод автоматизировать контроль качества сырья молочных продуктов и готовой продукции предприятия молочной промышленности.

28.11.2022    206    Koder_Line    0    

Такие разные франчайзи. Часть вторая: Особенности реализации крупных проектов, Глава 2. Проектная технология при внедрении «1С:ERP» Промо

Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Очередная статья о бизнесе франчайзи 1С. Здесь мы постараемся рассказать о том, какой подход используется при относительно крупных проектах, в частности, при внедрении «1С:ERP», дадим описание этапов проекта, укажем, какие риски имеет каждый этап работ, расскажем, уместны ли при внедрении «1С:ERP» такие модные методики, как Agile, автоматизированное тестирование и пр. Автор статьи Андрей Мироненко.

24.04.2017    33904    1СERP    85    

Функционал 1С:Аренда и управление недвижимостью

Инструкции пользователю Внедрение ИТ-системы Платформа 1С v8.3 Конфигурации 1cv8 Недвижимость, риэлторская деятельность Бухгалтерский учет Бесплатно (free)

В данной статье описывается функционал 1С:Аренда и управления недвижимостью. Рассмотрим, как с помощью данного функционала решить задачи в сфере сдачи в аренду всех видов помещений.

22.11.2022    401    Koder_Line    0    

Переход с АС Смета 3.2 на 1С:БГУ 2.0

Обмен между базами 1C Внедрение ИТ-системы Платформа 1С v8.3 1С:Бухгалтерия государственного учреждения Россия Бухгалтерский учет Бесплатно (free)

Участвуя в проектах перехода в облако (по технологии 1С:Фреш) в проектах компании ООО НПФ «Форус» столкнулись с необходимостью переноса данных из системы "АС СМЕТА" версии 3.2 (разработчик НПО "КРИСТА", далее АС Смета) в программную конфигурацию 1С:Бухгалтерия Государственного Учреждения 8 ред.2.0 (далее БГУ). В этой статье хочу рассказать про то, как работать с АС Смета, а также поделиться опытом перехода.

10.11.2022    231    dimodin    0    

Внедрять ли 1С в условиях кризиса и неопределенности?

Управление проектом Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

В наши дни бизнес сталкивается с последствиями кризиса и высокой степенью неопределённости. Возникает потребность переосмыслить приоритеты, в том числе в вопросах автоматизации и цифровизации. Стоит ли решаться на внедрение 1С в текущих условиях? Стоит ли продолжать уже стартовавший проект? Попробуем разобраться, опираясь на мнение экспертов.

25.10.2022    566    ystetsenko    2    

УПП: Хроники малобюджетного внедрения (Часть 3) Промо

Готовая продукция, работы и услуги Внедрение ИТ-системы Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бесплатно (free)

Можно ли внедрять УПП на небольших фирмах с небольшими затратами? Это попытка рассказать об итерационной технологии внедрения на живом конкретном примере. Один раз в неделю Заказчик присылает свою базу и вопросы по ней, на один час автор связывается со IT-специалистом клиента по Skype и консультирует его. Прошло два месяца. Результаты перед вами.

10.09.2012    31022    PAVI    34    

Топология склада. Рекомендации по организации адресного хранения на складе. 1С WMS

Внедрение ИТ-системы Платформа 1С v8.3 Бесплатно (free)

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

14.10.2022    650    AMA666    0    

Проектный челлендж: переход с SAP на 1С:ERP за 1,5 месяца

Управление проектом Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Управленческий учет Бесплатно (free)

Как поступить, если SAP скоро отключат, а продолжать отгрузки и сдавать отчетность как-то нужно? Возможно ли перевести финансовый и оперативный контур на новую ERP за несколько недель? С этими вопросами мы впервые столкнулись в марте 2022 года, когда к нам обратилась компания Zentiva в России. Руководитель проектов ГК «КОРУС Консалтинг» Денис Плющ – о том, как сократить цикл внедрения ERP, и в чем особенности проектного подхода в «экстремальных» условиях.

03.10.2022    761    user1852960    2    

1С:ERP и 1C:KA: что выбрать заказчику, чтобы не переплатить?

Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Бесплатно (free)

Обидно приобрести дорогостоящую систему для автоматизации и не использовать её на полную мощность. Также не хочется оказаться в ситуации, когда имеющейся функциональности не хватает. В этой статье мы вместе с техническим директором компании «Внедренцы и Программисты» Анастасией Синяковой сравнили одни из самых популярных программ 1С — «1С:ERP Управление предприятием» и «1С:Комплексная автоматизация».

30.09.2022    2989    ystetsenko    1    

Есть 2 подхода к внедрению информационных систем. На примере 1С УПП 8 Промо

Внедрение ИТ-системы Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бесплатно (free)

С детальным ТЗ? Или без серьезного ТЗ? Какой лучше? И где успех более вероятен?

26.01.2012    127861        53    

Умыть руки или закатать рукава? О роли руководства в проекте внедрения ERP

Управление проектом Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

По данным рейтингового агентства «Эксперт РА», в 20% случаев ключевым фактором успеха при внедрении ERP-систем в России становится участие руководства. И наоборот: невнимание руководителей к проекту — основная причина провалов (40%). Что стоит учесть, чтобы не попасть в печальную статистику? Разбираемся вместе с главой отдела внедрения компании «Внедренцы и Программисты» Дианой Винокуровой.

27.09.2022    792    ystetsenko    0    

Автоматизация ОТК: как лакокрасочная компания снижает себестоимость изделий на 3–5%

Адаптация типовых решений Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Управленческий учет Бесплатно (free)

Добиться высокого качества продукции минимальными усилиями? Легко. Читайте кейс компании «Внедренцы и программисты»: как доработка «1С:ERP» помогла лакокрасочной компании отсеять некачественное сырьё и сократить себестоимость изделий.

19.09.2022    345    ystetsenko    4    

Я - ЗУПер!

Внедрение ИТ-системы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

09.09.2022    4408    biimmap    65    

Принципы внедрения и сопровождения учета на базе 1С Промо

Внедрение ИТ-системы Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Соображения о методологии внедрения и сопровождения учета на базе систем 1С в виде коротких принципов, пояснений и иллюстраций к ним в виде примеров и выводов. Относится, преимущественно, к бухгалтерскому учету, однако применимо к любой отрасли, и, мне кажется, не обязательно к 1С. Целью написания статьи было изложить практически доступную информацию, а не завалить теорией, несмотря на получившийся объем. Статья предназначена для специалистов по внедрению, содержит, помимо технической информации, бухгалтерию и налоги.

19.01.2012    68574    stvorl    185    

Переход с SAP HR на 1С ЗУП 3.х

Управление проектом Внедрение ИТ-системы Платформа 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Задача: перейти с SAP HR на ЗУП 3.х. Выполнялась сложно, прошла с приключениями. Рассказываю к чему надо быть готовым, когда перед вами поставили такую, без сомнений, амбициозную задачу. *картинка взята из интернета*

31.08.2022    1705    VKuser24804875    11    

PROSTO:СКУД для интеграции 1С и СКУД: руководство по установке программного продукта

Внешние источники данных Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Рассмотрим, как сделать интеграцию типовых конфигураций 1С и популярных СКУД RusGuard, Parsec, Sigur и др. при помощи готового решения PROSTO:СКУД, а именно — за счет его внедрения в виде подсистемы.

18.08.2022    906    ProgrammingStore    8    

ТОиР: Учет показателей эксплуатации

Внедрение ИТ-системы Платформа 1С v8.3 Конфигурации 1cv8 Россия Управленческий учет Бесплатно (free)

Процесс учета показателей эксплуатации предназначен для сбора и хранения сведений о техническом состоянии оборудования во время его эксплуатации. Выходные данные процесса необходимы для планирования ремонтных воздействий.

18.08.2022    570    Desnol_Soft    0    

Обзор новшеств редакции БП 2.0 по сравнению с 1.6 Промо

Закрытие периода Внедрение ИТ-системы Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Франчайзи, автоматизация бизнеса Россия Налоговый учет НДС УСН Бесплатно (free)

Чем отличается редакция БП 2.0 от редакции 1.6. На что нужно обратить внимание при переходе на новую редакцию.

13.12.2010    21438    KapasMordorov    30    

ТОиР: Учет оборудования и нормативов

Внедрение ИТ-системы Платформа 1С v8.3 Конфигурации 1cv8 Россия Управленческий учет Бесплатно (free)

Первичным процессом ТОиР является учет оборудования и нормативов. Как функция управления он представляет собой систему сбора и поддержания в актуальном состоянии информации об оборудовании предприятия, его характеристиках, нормативах ремонта и ТО, а также предоставления остальным процессам ТОИР.

15.08.2022    588    Desnol_Soft    0    

Электронный журнал в 1С:Образование 5

Инструкции пользователю Внедрение ИТ-системы Платформа 1С v8.3 Конфигурации 1cv8 Обучение, бизнес-тренинг, курсы Бесплатно (free)

В данной статье будет описана относительно новая разработка компании 1С – конфигурация «1С:Образование 5. Школа», а именно – одна из основных её частей – электронный журнал. Будет дан обзор на то, как работать с основным инструментарием электронного журнала.

15.08.2022    504    Koder_Line    0    

EAM-система для российского бизнеса

Внедрение ИТ-системы Платформа 1С v8.3 Конфигурации 1cv8 Россия Управленческий учет Бесплатно (free)

Автоматизация ТОиР предполагает совершенствование процессов управления ремонтами и обслуживанием оборудования (а также иных материальных активов предприятий — таких, как инженерная инфраструктура, здания и сооружения, технические средства) с целью повышения показателей эффективности этих процессов, сокращения простоев и поддержания максимальной готовности и работоспособности оборудования, что в итоге приводит к снижению затрат на его эксплуатацию и повышает прибыльность предприятия.

01.08.2022    857    Desnol_Soft    0    

Импортозамещение для ERP — социальная сеть управления предприятием

Анализ и проектирование ИТ-систем Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

Мы находимся в самом начале развития автоматизированных систем, наподобие древним строителям, которые подгоняли архитектуру своего строения под имеющиеся булыжники и в результате получали конструкцию с непредсказуемой архитектурой и непредвиденными затратами. Разнообразие элементов автоматизированной системы должно быть чрезвычайно малым, простым и одновременно универсальным, чтобы стоимость и сложность системы определялась не способом, а количеством простых-рутинных соединений, как современная кирпичная укладка, традиционная в строительстве на протяжении уже многих веков.

19.07.2022    1142    sereginseregin    8    

Ни в ЗУП ногой!? А мне нравится! Часть 3. Как меня туда занесло?

Зарплата Кадровый учет Внедрение ИТ-системы Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 2.5 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и кадры 7.7 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Ни для кого не секрет, что ЗУП - одно из сложнейших решений в линейке 1С. Многие разработчики и аналитики не любят им заниматься. Тяжело представить, чтоб начинающий разработчик/аналитик стал по доброй воле работать в сфере управления персоналом и расчета заработной платы. В данной серии статьей будет рассказано, какие видятся плюсы в этом решении и как справляться с его минусами. Кратко расскажу, как встать на этот путь, приведу примеры выполненных задач.

18.07.2022    2654    biimmap    7    

Обзор модуля "Хомнет Лизинг ФСБУ 25". Переход на ФСБУ 25. Ввод начальных данных

Займы, кредит, лизинг Регламентированный учет и отчетность Внедрение ИТ-системы Бухгалтерский учет Конфигурации 1cv8 Россия Бухгалтерский учет Бесплатно (free)

Модуль "Хомнет Лизинг ФСБУ 25" – это встраиваемый модуль в Бухгалтерскую систему БЛК. Рассмотрим, какие инструменты есть в Модуле ФСБУ для реализации перехода на учет ФСБУ 25. Модуль ФСБУ разделен на три части: 1) Ретроспективный расчет ГФСБУ (рассмотрим подробно) 2) Ввод начальных остатков (рассмотрим подробно) 3) Регулярный учет. Раскрою последовательность ввода первоначальных остатков и документов для переход на на ФСБУ 25 и ретроспективного расчета графиков ФСБУ.

13.07.2022    908    PEHATA    2    

1С:Документооборот как прикладное решение оптимизации кадровых бизнес-процессов в организации

Документооборот и делопроизводство Внедрение ИТ-системы Платформа 1С v8.3 1С:Документооборот Россия Управленческий учет Бесплатно (free)

Использование 1С:Документооборот для оптимизации кадровых процессов в организации. Перенос работы с кадровыми документами (прием, увольнение, табеля и др.) в 1С:Документооборот. Опыт внедрения (с позиции консультанта-сопровожденца), описание процессов по каждому документу, взаимодействие с программистами и т.д.

06.07.2022    1971    qwerfff    2    

Как мы адресный склад внедряли на КА 2

Логистика, склад и ТМЦ Внедрение ИТ-системы Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Бесплатно (free)

Краткая история внедрения адресного склада на 1С:Комплексная автоматизация 2. Какие механизмы использовали и что доработали, с какими проблемами столкнулись. Поступила нам задачка по переводу оптового склада с ТиС 7.7 на 1С:КА. Нужно организовать: адресный склад и учет товаров по партиям. Бизнес-процесс достаточно стандартный: это прием заказ от покупателя, объединение заказов под отгрузку, сборка заказов на складе и загрузка все этого в авто, с последующим оформлением реализации и всех печатных документов. Схема вроде стандартная и поддерживается в типовом решении КА2, но не все так просто, как кажется в начале…

05.07.2022    2788    pro-rok    53    

Ни в ЗУП ногой!? А мне нравится! Часть 2. Плюсы решения, где они прячутся?

Зарплата Кадровый учет Внедрение ИТ-системы Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 2.5 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и кадры 7.7 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Бухгалтерский учет Бесплатно (free)

Ни для кого не секрет, что ЗУП - одно из сложнейших решений в линейке 1С. Многие разработчики и аналитики не любят им заниматься. Тяжело представить, чтобы начинающий разработчик/аналитик стал по доброй воле работать в сфере управления персоналом и расчета заработной платы. В данной серии статьей будет рассказано, какие видятся плюсы в этом решении и как справляться с его минусами. Кратко расскажу, как встать на этот путь, приведу примеры выполненных задач.

04.07.2022    4176    biimmap    49    

Цифровое лето в разгаре: вышел новый релиз 1С:ТОИР 2 КОРП

Управление услугами и сервисом Внедрение ИТ-системы Платформа 1С v8.3 Конфигурации 1cv8 Россия Управленческий учет Бесплатно (free)

В новом релизе системы «1С:ТОИР Управление ремонтами и обслуживанием оборудования 2 КОРП» 2.0.44.1, который увидел свет в конце июня, расширены возможности работы с произвольными заданиями: цепочка связанных документов по ТОиР стала более информативной, а расследование причин остановки оборудования — прозрачным. Помимо этого, упростилась работа с типовыми объектами ремонта. В паспорте объекта ремонта теперь можно видеть информацию не только по оборудованию, но также и по относящимся к нему запчастям. Оптимизирована проверка рецидивных дефектов.

01.07.2022    439    Desnol_Soft    2    

Переход с SAP на 1С: стоит ли?

Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

В этом материале мы, конечно, не ответим на вопрос, стоит или не стоит переходить с SAP на 1С:ERP. Однако мы обсудим многие тонкие и сложные моменты, знание которых поможет вам принять взвешенное решение.

17.06.2022    7465    1СERP    76    

1С:Документооборот КОРП: отличия версий 2.4. и 3.0

Документооборот и делопроизводство Внедрение ИТ-системы Платформа 1С v8.3 Бизнес-процессы 1С:Документооборот 1С:ERP Управление предприятием 2 Россия Управленческий учет Бесплатно (free)

В начале 2022г. фирма 1С выпустила новую версию 3.0 1С:Документооборот КОРП (далее 1С:ДО). И в данном материале мы представим некоторые существенные отличия версии 3.0 от ее предшественника.

07.06.2022    2425    Aprsoft    10    

РКМ ГОЗ: автоматизация. Ускоряем подготовку больше, чем в 20 раз

Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

Предприятиям, исполняющим гособоронзаказ (ГОЗ), работа по формированию расчетно-калькуляционных материалов (РКМ) доставляет немало трудностей. В данной статье мы поделимся своим опытом создания инструментов подготовки РКМ на базе программного продукта «1С:ERP:Управление предприятием» (1C:ERP), на примере проекта внедрения в ГК «Информтехника» (победителя конкурса «1С:Проект года»).

07.06.2022    2051    1СERP    7    

Самый быстрый способ получить эффект от автоматизации производства в 1С:ERP

Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Управленческий учет Бесплатно (free)

Нам часто задают вопросы про автоматизацию производства, в частности, про ее планирование: с чего лучше начать. Интересно то, что до сих пор в производственных и ИТ-сообществах не сформулированы четкие критерии для определения готовности предприятия к автоматизации, как нет и внятного прогноза результата, который будет получен при реализации проекта с определенными вводными данными. Наши специалисты внедрения, эксперты ВЦ «Раздолье», проанализировали завершенные проекты, а также - большое количество запросов по автоматизации планирования производства и постарались систематизировать полученные данные, чтобы помочь Вам определиться с оптимальной дорожной картой и лучшим маршрутом следования. Итак, о выборе стратегии автоматизации.

03.06.2022    3024    1СERP    21    

Как автоматизировать учет по проектам в 1С:Бухгалтерии

Учет доходов и расходов Внедрение ИТ-системы Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Бесплатно (free)

В статье рассматриваются различные варианты организации управленческого учета по проектам в "1С:Бухгалтерии".

30.05.2022    2423    accounting_cons    7    

Новый релиз 1С:ТОИР 2 КОРП: юзабилити и еще раз юзабилити

Управление услугами и сервисом Внедрение ИТ-системы Платформа 1С v8.3 Конфигурации 1cv8 Россия Управленческий учет Бесплатно (free)

В конце апреля увидел свет новый релиз системы «1С:ТОИР Управление ремонтами и обслуживанием оборудования 2 КОРП» (2.0.43.1). Основные изменения коснулись совершенствования процессов управления активами, которые позволят использовать систему в условиях российских предприятий для достижения установленных целей с заданной результативностью и эффективностью.

08.05.2022    834    Desnol_Soft    0    

Переход с УПП на ERP с сохранением документов. Фантастика или реальность?

Внедрение ИТ-системы Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 Бесплатно (free)

В последнее время задача перехода с УПП становится все более актуальной. Причина – ожидаемое снятие УПП с поддержки и более продвинутые возможности последних версий конфигураций 1С. О том, какие методики переноса данных из УПП в ERP можно применить, и как в автоматическом режиме убедиться, что все перенеслось корректно, на конференции Infostart Event 2021 Moscow Premiere рассказал Сергей Сорокин.

28.04.2022    2475    primat    2    

Чек-лист из 10 вопросов: что учесть при импортозамещении

Внедрение ИТ-системы Платформа 1С v8.3 Конфигурации 1cv8 Россия Управленческий учет Бесплатно (free)

Переход на отечественное ПО произойдёт, и крайне важно не относиться к этому формально, а видеть в этом стимул для развития. Импортонезависимость отлично совмещается с инновациями.

28.04.2022    678    Desnol_Soft    6    

Импортозамещение для автоматизации ТОиР: своевременно и доступно

Внедрение ИТ-системы Платформа 1С v8.3 Россия Управленческий учет Бесплатно (free)

В марте 2022 года об уходе с российского рынка объявили несколько крупных поставщиков программного обеспечения, в числе которых Oracle и SAP, которые разрабатывают софт для автоматизации производства, в том числе в сфере ТОиР (EAM). Никто не хочет оказаться без поддержки и обновлений приобретенных ранее систем, от которых зависят основные бизнес-процессы компаний. Встал вопрос: как быть? Насколько распространена практика импортозамещения? И в чем риски «переезда» на отечественное ПО? А что делать тем, кто еще только выбирает решение для автоматизации — есть ли достойная альтернатива импортным системам?

27.04.2022    780    Desnol_Soft    0    

Признаки и причины неуспешных внедрений 1С: ERP

Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Почему абсолютное число внедрений 1С: ERP неуспешно? Рапорты об успешном внедрении 1С: ERP изложены на множестве интернет-страниц предприятий и интеграторов, а при приёме специалистов 1С на работу часто требуют наличие «успешных» проектов за спиной. Неужели действительно существуют примеры множества успешных внедрений ERP? Спроста ли при подборе специалистов по ERP в вакансиях требуют наличия «успешных» проектов, да ещё полного цикла. Что можно и как нужно считать успешным внедрением для бизнеса крупной системы учёта ERP класса. Как внедрить ERP, чтобы она повысила эффективность бизнеса, а не создала центр бесполезных затрат.

22.04.2022    6231    roman72    19    

Переход с 1С:УПП на 1C:ERP. Переделываем интеграции, использующие SQL запросы к СУБД (на примере УПП -> QlikView -> ERP)

Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

При переходе с УПП на ЕРП меняется структура метаданных и требуется изменять интеграции, использующие SQL запросы к СУБД. В статье представлены инструменты, которые помогут упростить переход.

11.04.2022    2465    1СERP    42    

Переход с 1С:УПП на 1C:ERP. Переезд пользователей с сохранением прежних прав

Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Бесплатно (free)

В очередной статье, посвящённой практике перехода с 1С:УПП на 1С:ERP, мы рассмотрим перенос пользователей в новую автоматизированную систему с сохранением прежних прав на примере кейса одного из наших заказчиков, крупного производителя кофейной продукции. Автор статьи: Дмитрий Малышев - разработчик 1С с 2004 года на платформах 1С 7.7, 8.1, 8.2, 8.3. Сертификат «1С:Эксперт по технологическим вопросам». Участник 30 проектов полного цикла внедрения 1С:УПП и 1C:ERP.

25.03.2022    2535    1СERP    2    

Вышли обновления 1С:ТОИР 2 КОРП для предприятий

Управление услугами и сервисом Внедрение ИТ-системы Платформа 1С v8.3 Россия Управленческий учет Бесплатно (free)

В статье я подробно расскажу о том, что нового появилось в релизе «1С:ТОИР Управление ремонтами и обслуживанием оборудования 2 КОРП» 2.0.42.1 (выход в марте 2022 г.). В новой версии системы в 20 раз увеличились ускорение расчета планово-предупредительных ремонтов, добавлены улучшения UX-дизайна и обновлено мобильное приложение «Мобильная бригада ТОИР 2 КОРП». 

23.03.2022    671    Desnol_Soft    0    

Виды учета в 1С: ERP Управление холдингом

Внедрение ИТ-системы Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление холдингом Бухгалтерский учет Налоговый учет Управленческий учет Бесплатно (free)

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

12.03.2022    2500    user662404_itlexusss    3    

Как сформировать команду проекта цифровизации ТОиР? Из "Отряда самоубийц" — в "команду мечты"

Управление проектом Управление командой Внедрение ИТ-системы Платформа 1С v8.3 Конфигурации 1cv8 Беларусь Россия Казахстан Управленческий учет Бесплатно (free)

В этой статье я поделюсь инсайтами авторской проектной технологии и опыта автоматизации ТОиР, которые мы развиваем и аккумулируем вот уже более 15 лет.

11.03.2022    1605    Desnol_Soft    0