Выгрузка из БП 3.0 в УТ 11.4

14.11.20

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Данная публикация была создана для демонстрации решения по переносу данных из имеющейся БП 3.0 в новую УТ 11.4. Сложность заключалась в том, что некоторые документы (Поступления и Реализации) не переносятся в типовом варианте обмена (именно из Бухгалтерии в Торговлю, а не наоборот). Второй нюанс - это перенос договоров. Подробно о проблеме можно почитать здесь https://forum.infostart.ru/forum9/topic146589/ Однако, конкретного решения для своей задачи из указанной публикации найдено не было, но стало понятно, что правила формирования договоров указаны верно, и причина задвоения договоров при обмене таилась в другом. Но обо всём потихоньку...

Скачать файл

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

Наименование SM По подписке [?] Купить один файл
Правила обмена из БП 3.0.78.64 в УТ 11.4.12.61:
.xml 461,64Kb
222
222
1 SM
Скачать Купить за 1 850 руб.
Расширение для УТ 11.4.12.61 для безошибочного типового обмена:
.cfe 6,20Kb
70
70
1 SM
Скачать Купить за 1 850 руб.

Итак, имеется БП, в которой велся учет несколько лет.

На предприятии приняли решение, что удобнее было бы вести учет в УТ и периодически делать перенос данных в БП. 

То есть - задача перенести накопленные данные из БП в УТ, а затем настроить одностороннюю синхронизацию документов из УТ в БП.

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

1. Настраиваем типовую двустороннюю синхронизацию между БП и УТ. На просторах инета есть множество инструкций, вот ссылка на одну из них https://scloud.ru/techinfo_1c_online/sinkhronizatsiya-i-obmen-dannymi/nastroyka-sinkhronizatsii-mezhdu-ut-11-i-bp-3-0/

Добавлю лишь, что в настройках обеих баз сначала указываем "отправлять всю" нормативно-справочную информацию и "не отправлять" документы. На первом этапе необходимо отправить только нормативно-справочную информацию, так как после загрузки данных в УТ, необходимо сделать настройки ведения учета, такие как учетная политика и параметры ведения договоров. Позже настройку обмена документами поменяем на "отправлять все документы" с некоторой даты и зарегистрируем документы к обмену в составе обмена.

Итак, данные нормативно-справочной информации загружены в УТ. Настаиваем учетную политику.

Теперь подробнее о настройках ведения учета по договорам... По умолчанию в складских документах в УТ отсутствует поле "договор" (в поступлениях и реализациях). И если оставить ведение учета как есть, то после заведения новых документов и последующего переноса их в Бухгалтерию, для каждого контрагента будет создан новый договор "Основной договор", что категорически не приветствуется бухгалтерами )
Поэтому в УТ делаем парочку настроек: в разделе "НСИ и администрирование" - Настройка НСИ и разделов - CRM и маркетинг - "Настройки CRM" устанавливаем флаг "независимо вести партнеров и контрагентов", далее в разделе "НСИ и администрирование" - Настройка НСИ и разделов - "Закупки" - "соглашения и договоры с поставщиками" устанавливаем флаг "договоры с поставщиками", а также в пункте "Продажи" - "Оптовые продажи" раздела "НСИ и администрирование" устанавливаем флаг "договоры с клиентами".
После данных настроек в документах поступления и реализаций появится поле "договор", а так как все договоры были перенесены из бухгалтерии, то при заведении новых документов, а также при первоначально выгрузке документов из БП в УТ договор будет заполняться имеющимися данными.

На втором этапе типового обмена, перенесем документы из БП в УТ. Для этого в базе БП в настройках обмена необходимо поставить флаг "отправлять все документы с ...", указав начальную дату выгрузки, и в составе отправляемых данных регистрируем все документы и регистр сведений "Статусы документов". Выполняем обмен. Типовой обмен настроен, теперь в БП отключаем настройку "отправлять все документы с ...", устанавливаем "не отправлять".

2. Для нетипового переноса документов Поступления и Реализации из БП 3.0 в УТ 11.4 используем обработку "Универсальный обмен данными XML" и правила обмена, которые я прикладываю в данной публикации, предназначаются для ознакомления и доработки для нужд конкретной задачи.

Правила переносят документы: "Поступление товаров","Поступление услуг", "Поступление оборудования" и "Реализации". Так как все справочники были перенесены из БП в УТ типовым обменом, то правила переноса справочников настроены таким образом, что новые элементы не создаются.

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

Далее, просто настаиваете расписание типового обмена.

 

P.S. Хотелось бы отметить, что обмен настраивался между базами БП 3.0.78.64 и УТ 11.4.12.61.

При типовом обмене возникла ошибка отсутствия поля "Характеристика" в справочнике "Штрихкоды номенклатуры". Решается это установкой расширения в базе УТ. Создайте новое расширение (инструкцию можно найти на просторах инета), добавьте в него общий модуль "МенеджерОбменаЧерезУниверсальныйФормат" и в модуле переинициализируйте процедуру ПКО_Справочник_ШтрихкодыНоменклатуры_Получение_ПередЗаписьюПолученныхДанных.

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

На всякий случай Расширение прикладываю к публикации.

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

&Вместо("ДоговорИнструкцияКонвертацииПоДаннымВзаиморасчетов")
Функция РасшМОБ_ДоговорИнструкцияКонвертацииПоДаннымВзаиморасчетов(ПараметрыПоУмолчанию, КомпонентыОбмена, ОбъектРасчетов = Неопределено, ДанныеИБ = Неопределено)
	// Функция формирует и возвращает инструкция для выгрузки договора
	// по полученным параметрам и настройкам узла плана обмена.
	//
	// Функция, по сформированной инструкции, выполняет принудительную выгрузку договора в файл обмена.
	//
	// Перед вызовом этой функции выполняется проверка наличия договора в выгружаемом документе
	// или в объекте взаиморасчетов, если договор не найден, то выполняется вызов этой функции.
	
	СтруктураДанныеДоговора = Новый Структура(ДоговорФиксированнаяСтруктураКлючей());
	ДоговорЗаполнен = Ложь;
	СтруктураДанныеДоговора.ВидДоговора = ПараметрыПоУмолчанию.ВидДоговора;
	
	Если ЗначениеЗаполнено(ОбъектРасчетов)
		И ТипЗнч(ОбъектРасчетов) = Тип("СправочникСсылка.ДоговорыМеждуОрганизациями") Тогда
		
		ЗаполнитьЗначенияСвойств(СтруктураДанныеДоговора, ПараметрыПоУмолчанию,
			"Организация, Контрагент");
		
		РеквизитыИнтеркампани = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ОбъектРасчетов,
			"Дата, Номер, Наименование, ВалютаВзаиморасчетов, ПорядокОплаты");
		ЗаполнитьЗначенияСвойств(СтруктураДанныеДоговора, РеквизитыИнтеркампани);
	
		РасчетыУЕ = РеквизитыИнтеркампани.ПорядокОплаты = Перечисления.ПорядокОплатыПоСоглашениям.РасчетыВВалютеОплатаВРублях;	
		СтруктураДанныеДоговора.РасчетыВУсловныхЕдиницах = РасчетыУЕ;
		
		ДоговорЗаполнен = Истина;
			
	ИначеЕсли ЗначениеЗаполнено(ОбъектРасчетов)
		И ДанныеИБ <> Неопределено
		И Не ДопАналитикаПоДоговорам(КомпонентыОбмена).ДоговорВДоговор Тогда
		Если ТипЗнч(ОбъектРасчетов) = Тип("Структура") Тогда
			// Если в документе соглашение и заказ - 2 разных реквизита, то значения этих реквизитов передаются в структуре:
			// "Заказ" - Ссылка на Заказ клиента (поставщику).
			// "Соглашение" - Ссылка на Соглашение с клиентом (поставщиком).
			// "Сделки" - Ссылка на Сделку с клиентом.
			ЗаказСсылка      = Неопределено;
			СоглашениеСсылка = Неопределено;
			СделкаСсылка     = Неопределено;
			
			ЭтоЗаказ      = ОбъектРасчетов.Свойство("Заказ", ЗаказСсылка) И ЗначениеЗаполнено(ЗаказСсылка);
			ЭтоСоглашение = ОбъектРасчетов.Свойство("Соглашение", СоглашениеСсылка) И ЗначениеЗаполнено(СоглашениеСсылка);
			ЭтоСделка     = ОбъектРасчетов.Свойство("Сделка", СделкаСсылка) И ЗначениеЗаполнено(СделкаСсылка);
		Иначе
			// Подразумевается, что реквизит выгружаемого документа "Заказ" - имеет составной тип
			// и может быть Заказом, Соглашением, Сделкой или другим видом документа/справочника,
			// помимо этого у объекта, указанного в этом реквизите могут быть реквизиты "Соглашение" и/или "Сделка".
			ЗаказСсылка      = ОбъектРасчетов;
			СоглашениеСсылка = ОбъектРасчетов;
			СделкаСсылка     = ОбъектРасчетов;
			
			ЭтоЗаказ = ТипЗнч(ОбъектРасчетов) = Тип("ДокументСсылка.ЗаказКлиента")
				Или ТипЗнч(ОбъектРасчетов) = Тип("ДокументСсылка.ЗаказПоставщику");
			
			РеквизитыЗаказа = Новый Массив;
			Если ОбъектРасчетов.Метаданные().Реквизиты.Найти("Соглашение") <> Неопределено Тогда
				РеквизитыЗаказа.Добавить("Соглашение");
			КонецЕсли;
			Если ОбъектРасчетов.Метаданные().Реквизиты.Найти("Сделка") <> Неопределено Тогда
				РеквизитыЗаказа.Добавить("Сделка");
			КонецЕсли;
			
			Если РеквизитыЗаказа.Количество() > 0 Тогда
				СтруктураЗаказа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ОбъектРасчетов, РеквизитыЗаказа);
			Иначе
				СтруктураЗаказа = Новый Структура;
			КонецЕсли;
			
			ЭтоСоглашение = ТипЗнч(ОбъектРасчетов) = Тип("СправочникСсылка.СоглашенияСКлиентами")
				Или ТипЗнч(ОбъектРасчетов) = Тип("СправочникСсылка.СоглашенияСПоставщиками")
				Или (СтруктураЗаказа.Свойство("Соглашение", СоглашениеСсылка) И ЗначениеЗаполнено(СоглашениеСсылка));
				
			ЭтоСделка = ТипЗнч(ОбъектРасчетов) = Тип("СправочникСсылка.СделкиСКлиентами")
				Или (СтруктураЗаказа.Свойство("Сделка", СделкаСсылка) И ЗначениеЗаполнено(СделкаСсылка));
		КонецЕсли;
			
		Если ЭтоЗаказ Или ЭтоСоглашение Или ЭтоСделка Тогда
			Если ЭтоЗаказ И КомпонентыОбмена.ПараметрыКонвертации.НастройкиДопАналитикиПоДоговорам.ЗаказВДоговор Тогда
				
				Запрос = Новый Запрос;
				Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
				
				Запрос.УстановитьПараметр("Ссылка", ЗаказСсылка);
				
				Если ТипЗнч(ЗаказСсылка) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
					Запрос.Текст = 
					"ВЫБРАТЬ
					|	ЗаказКлиента.Ссылка КАК Ссылка,
					|	ЗаказКлиента.Контрагент КАК Контрагент,
					|	ЗаказКлиента.Организация КАК Организация,
					|	ЗаказКлиента.Дата КАК Дата,
					|	ЗаказКлиента.Номер КАК Номер,
					|	ЗаказКлиента.Валюта КАК Валюта,
					|	ЗаказКлиента.Представление КАК Представление,
					|	ЗаказКлиента.ПорядокОплаты = ЗНАЧЕНИЕ(Перечисление.ПорядокОплатыПоСоглашениям.РасчетыВВалютеОплатаВРублях) КАК РасчетыВУсловныхЕдиницах
					|ПОМЕСТИТЬ ВТ_Документ
					|ИЗ
					|	Документ.ЗаказКлиента КАК ЗаказКлиента
					|ГДЕ
					|	ЗаказКлиента.Ссылка = &Ссылка";
					Запрос.Выполнить();
				ИначеЕсли ТипЗнч(ЗаказСсылка) = Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента") Тогда
					Запрос.Текст = 
					"ВЫБРАТЬ
					|	ЗаявкаНаВозвратТоваровОтКлиента.Ссылка КАК Ссылка,
					|	ЗаявкаНаВозвратТоваровОтКлиента.Контрагент КАК Контрагент,
					|	ЗаявкаНаВозвратТоваровОтКлиента.Организация КАК Организация,
					|	ЗаявкаНаВозвратТоваровОтКлиента.Дата КАК Дата,
					|	ЗаявкаНаВозвратТоваровОтКлиента.Номер КАК Номер,
					|	ЗаявкаНаВозвратТоваровОтКлиента.Валюта КАК Валюта,
					|	ЗаявкаНаВозвратТоваровОтКлиента.Представление КАК Представление,
					|	ЗаявкаНаВозвратТоваровОтКлиента.ПорядокОплаты = ЗНАЧЕНИЕ(Перечисление.ПорядокОплатыПоСоглашениям.РасчетыВВалютеОплатаВРублях) КАК РасчетыВУсловныхЕдиницах
					|ПОМЕСТИТЬ ВТ_Документ
					|ИЗ
					|	Документ.ЗаявкаНаВозвратТоваровОтКлиента КАК ЗаявкаНаВозвратТоваровОтКлиента
					|ГДЕ
					|	ЗаявкаНаВозвратТоваровОтКлиента.Ссылка = &Ссылка";
					Запрос.Выполнить();
				ИначеЕсли ТипЗнч(ЗаказСсылка) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
					Запрос.Текст = 
					"ВЫБРАТЬ
					|	ЗаказПоставщику.Ссылка КАК Ссылка,
					|	ЗаказПоставщику.Контрагент КАК Контрагент,
					|	ЗаказПоставщику.Организация КАК Организация,
					|	ЗаказПоставщику.Дата КАК Дата,
					|	ЗаказПоставщику.Номер КАК Номер,
					|	ЗаказПоставщику.Валюта КАК Валюта,
					|	ЗаказПоставщику.Представление КАК Представление,
					|	ЗаказПоставщику.ПорядокОплаты = ЗНАЧЕНИЕ(Перечисление.ПорядокОплатыПоСоглашениям.РасчетыВВалютеОплатаВРублях) КАК РасчетыВУсловныхЕдиницах
					|ПОМЕСТИТЬ ВТ_Документ
					|ИЗ
					|	Документ.ЗаказПоставщику КАК ЗаказПоставщику
					|ГДЕ
					|	ЗаказПоставщику.Ссылка = &Ссылка";
					Запрос.Выполнить();
				КонецЕсли;
				
				Если Запрос.МенеджерВременныхТаблиц.Таблицы.Количество() > 0 Тогда
					
					Запрос.Текст = 
					"ВЫБРАТЬ
					|	ВТ_Документ.Ссылка КАК Ссылка,
					|	ВТ_Документ.Контрагент КАК Контрагент,
					|	ВТ_Документ.Организация КАК Организация,
					|	ВТ_Документ.Дата КАК Дата,
					|	ВТ_Документ.Номер КАК Номер,
					|	ВТ_Документ.Валюта КАК ВалютаВзаиморасчетов,
					|	ВТ_Документ.Представление КАК Наименование,
					|	ВТ_Документ.РасчетыВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах,
					|	КурсыВалютСрезПоследних.Курс КАК КурсВзаиморасчетов,
					|	КурсыВалютСрезПоследних.Кратность КАК КратностьВзаиморасчетов
					|ИЗ
					|	ВТ_Документ КАК ВТ_Документ
					|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДок, ) КАК КурсыВалютСрезПоследних
					|		ПО ВТ_Документ.Валюта = КурсыВалютСрезПоследних.Валюта";
					Запрос.УстановитьПараметр("ДатаДок", ДанныеИБ.Дата);
					
					Выборка = Запрос.Выполнить().Выбрать();
					Если Выборка.Следующий() Тогда
						ЗаполнитьЗначенияСвойств(СтруктураДанныеДоговора, Выборка);
						СтруктураДанныеДоговора.Наименование = ОбщегоНазначенияУТ.ПолучитьПредставлениеДокумента(ЗаказСсылка, Выборка.Номер, Выборка.Дата);
						ДоговорЗаполнен = Истина;
					КонецЕсли;
					
				КонецЕсли;
			КонецЕсли;
			
			Если ЭтоСоглашение И ДопАналитикаПоДоговорам(КомпонентыОбмена).СоглашениеВДоговор Тогда
				
				Запрос = Новый Запрос;
				Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
				
				Запрос.УстановитьПараметр("Ссылка", СоглашениеСсылка);
				
				Если ТипЗнч(СоглашениеСсылка) = Тип("СправочникСсылка.СоглашенияСКлиентами") Тогда
					Запрос.Текст = 
					"ВЫБРАТЬ
					|	СоглашенияСКлиентами.Ссылка КАК Ссылка,
					|	СоглашенияСКлиентами.Контрагент КАК Контрагент,
					|	СоглашенияСКлиентами.Организация КАК Организация,
					|	СоглашенияСКлиентами.Дата КАК Дата,
					|	СоглашенияСКлиентами.Номер КАК Номер,
					|	СоглашенияСКлиентами.Валюта КАК ВалютаВзаиморасчетов,
					|	СоглашенияСКлиентами.Наименование КАК Наименование,
					|	СоглашенияСКлиентами.Типовое КАК Типовое,
					|	СоглашенияСКлиентами.ПорядокОплаты = ЗНАЧЕНИЕ(Перечисление.ПорядокОплатыПоСоглашениям.РасчетыВВалютеОплатаВРублях) КАК РасчетыВУсловныхЕдиницах
					|ПОМЕСТИТЬ ВТ_Соглашение
					|ИЗ
					|	Справочник.СоглашенияСКлиентами КАК СоглашенияСКлиентами
					|ГДЕ
					|	СоглашенияСКлиентами.Ссылка = &Ссылка";
					Запрос.Выполнить();
				ИначеЕсли ТипЗнч(СоглашениеСсылка) = Тип("СправочникСсылка.СоглашенияСПоставщиками") Тогда
					Запрос.Текст = 
					"ВЫБРАТЬ
					|	СоглашенияСПоставщиками.Ссылка КАК Ссылка,
					|	СоглашенияСПоставщиками.Контрагент КАК Контрагент,
					|	СоглашенияСПоставщиками.Организация КАК Организация,
					|	СоглашенияСПоставщиками.Дата КАК Дата,
					|	СоглашенияСПоставщиками.Номер КАК Номер,
					|	СоглашенияСПоставщиками.Валюта КАК ВалютаВзаиморасчетов,
					|	СоглашенияСПоставщиками.Наименование КАК Наименование,
					|	ЛОЖЬ КАК Типовое,
					|	СоглашенияСПоставщиками.ПорядокОплаты = ЗНАЧЕНИЕ(Перечисление.ПорядокОплатыПоСоглашениям.РасчетыВВалютеОплатаВРублях) КАК РасчетыВУсловныхЕдиницах
					|ПОМЕСТИТЬ ВТ_Соглашение
					|ИЗ
					|	Справочник.СоглашенияСПоставщиками КАК СоглашенияСПоставщиками
					|ГДЕ
					|	СоглашенияСПоставщиками.Ссылка = &Ссылка";
					Запрос.Выполнить();
				КонецЕсли;
				
				Если Запрос.МенеджерВременныхТаблиц.Таблицы.Количество() > 0 Тогда
					
					Запрос.Текст = 
					"ВЫБРАТЬ
					|	СоглашенияСКлиентами.Ссылка КАК Ссылка,
					|	СоглашенияСКлиентами.Контрагент КАК Контрагент,
					|	СоглашенияСКлиентами.Организация КАК Организация,
					|	СоглашенияСКлиентами.Дата КАК Дата,
					|	СоглашенияСКлиентами.Номер КАК Номер,
					|	СоглашенияСКлиентами.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
					|	СоглашенияСКлиентами.Наименование КАК Наименование,
					|	СоглашенияСКлиентами.РасчетыВУсловныхЕдиницах КАК РасчетыВУсловныхЕдиницах,
					|	СоглашенияСКлиентами.Типовое КАК Типовое,
					|	КурсыВалютСрезПоследних.Курс КАК КурсВзаиморасчетов,
					|	КурсыВалютСрезПоследних.Кратность КАК КратностьВзаиморасчетов
					|ИЗ
					|	ВТ_Соглашение КАК СоглашенияСКлиентами
					|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДок, ) КАК КурсыВалютСрезПоследних
					|		ПО СоглашенияСКлиентами.ВалютаВзаиморасчетов = КурсыВалютСрезПоследних.Валюта";
					Запрос.УстановитьПараметр("ДатаДок", ДанныеИБ.Дата);
					
					Выборка = Запрос.Выполнить().Выбрать();
					Если Выборка.Следующий() Тогда
						ЗаполнитьЗначенияСвойств(СтруктураДанныеДоговора, Выборка);
						
						Если Не ЗначениеЗаполнено(СтруктураДанныеДоговора.Контрагент) Тогда
							Если ЕстьРеквизитДанныхИБ(ДанныеИБ, "Контрагент") Тогда
								СтруктураДанныеДоговора.Контрагент = ДанныеИБ.Контрагент;
							Иначе
								СтруктураДанныеДоговора.Контрагент = ПараметрыПоУмолчанию.Контрагент;
							КонецЕсли;
						КонецЕсли;
						
						Если Не ЗначениеЗаполнено(СтруктураДанныеДоговора.Организация) Тогда
							Если ЗначениеЗаполнено(ДанныеИБ.Организация) Тогда
								СтруктураДанныеДоговора.Организация = ДанныеИБ.Организация;
							Иначе
								СтруктураДанныеДоговора.Организация = ПараметрыПоУмолчанию.Организация;
							КонецЕсли;
						КонецЕсли;
						
						Если ТипЗнч(СоглашениеСсылка) = Тип("СправочникСсылка.СоглашенияСКлиентами") Тогда
							Наименование = ?(Выборка.Типовое, НСтр("ru = 'Типовое'"), НСтр("ru = 'Индивидуальное'")) + "; ";
						Иначе
						    Наименование = "";
						КонецЕсли;
						
						Наименование = Наименование + Выборка.Наименование
							+ " " + ?(ЗначениеЗаполнено(Выборка.Номер), "№" + Выборка.Номер, "")
							+ " " + ?(ЗначениеЗаполнено(Выборка.Дата), НСтр("ru = 'от'") + " " + Формат(Выборка.Дата, "ДЛФ=D"), "");
							
						СтруктураДанныеДоговора.Наименование = СокрЛП(Наименование);
						ДоговорЗаполнен = Истина;
					КонецЕсли;
					
				КонецЕсли;
				
			КонецЕсли;
			
			Если ЭтоСделка И ДопАналитикаПоДоговорам(КомпонентыОбмена).СделкаВДоговор Тогда
				Запрос = Новый Запрос(
				"ВЫБРАТЬ
				|	СделкиСКлиентами.Ссылка,
				|	СделкиСКлиентами.Код КАК Номер,
				|	"""" КАК Контрагент,
				|	"""" КАК Организация,
				|	СделкиСКлиентами.ДатаНачала КАК Дата,
				|	КурсыВалютСрезПоследних.Валюта КАК ВалютаВзаиморасчетов,
				|	СделкиСКлиентами.Наименование КАК Наименование,
				|	КурсыВалютСрезПоследних.Курс КАК КурсВзаиморасчетов,
				|	КурсыВалютСрезПоследних.Кратность КАК КратностьВзаиморасчетов
				|ИЗ
				|	Справочник.СделкиСКлиентами КАК СделкиСКлиентами,
				|	РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДок, Валюта = &Валюта) КАК КурсыВалютСрезПоследних
				|ГДЕ
				|	СделкиСКлиентами.Ссылка = &Ссылка");
				Запрос.УстановитьПараметр("Ссылка",  СделкаСсылка);
				Запрос.УстановитьПараметр("ДатаДок", ДанныеИБ.Дата);
				Запрос.УстановитьПараметр("Валюта",  ПараметрыПоУмолчанию.ВалютаВзаиморасчетов);
				
				Выборка = Запрос.Выполнить().Выбрать();
				Если Выборка.Следующий() Тогда
					ЗаполнитьЗначенияСвойств(СтруктураДанныеДоговора, Выборка);
					СтруктураДанныеДоговора.Организация = ДанныеИБ.Организация;
					Если ЕстьРеквизитДанныхИБ(ДанныеИБ, "Контрагент") Тогда
						СтруктураДанныеДоговора.Контрагент = ДанныеИБ.Контрагент;
					Иначе
						СтруктураДанныеДоговора.Контрагент = ПараметрыПоУмолчанию.Контрагент;
					КонецЕсли;
					Если ПараметрыПоУмолчанию.Свойство("РасчетыВУсловныхЕдиницах") Тогда
						СтруктураДанныеДоговора.РасчетыВУсловныхЕдиницах = ПараметрыПоУмолчанию.РасчетыВУсловныхЕдиницах;
					КонецЕсли;
					СтруктураДанныеДоговора.Наименование = ?(ЗначениеЗаполнено(СделкаСсылка.Метаданные().ПредставлениеОбъекта),
						СделкаСсылка.Метаданные().ПредставлениеОбъекта, СделкаСсылка.Метаданные().Синоним)
							+ ?(ЗначениеЗаполнено(Выборка.Номер), " " + Выборка.Номер, "");
					ДоговорЗаполнен = Истина;
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	//Если Не ДоговорЗаполнен Тогда
	//	ЗаполнитьЗначенияСвойств(СтруктураДанныеДоговора, ПараметрыПоУмолчанию, , "Дата, Номер");
	//	СтруктураДанныеДоговора.Наименование = НСтр("ru = 'Основной договор'");
	//ИначеЕсли ВерсияФорматаЧислом(КомпонентыОбмена.ВерсияФорматаОбмена) > ВерсияФорматаЧислом("1.3") Тогда
	//	СтруктураДанныеДоговора.ВнешнийИдентификатор = СтруктураДанныеДоговора.Наименование;
	//КонецЕсли;
	
	ДопРеквизиты = Новый ТаблицаЗначений;
	ДопРеквизиты.Колонки.Добавить("Свойство");
	ДопРеквизиты.Колонки.Добавить("ЗначениеСвойства");
	
	СтрокаДопРеквизитов = ДопРеквизиты.Добавить();
	СтрокаДопРеквизитов.Свойство = Новый Структура("Наименование", "ВиртуальныйДоговор");
	СтрокаДопРеквизитов.ЗначениеСвойства = "ВиртуальныйДоговор";
	
	СтруктураДанныеДоговора.Вставить("ДополнительныеРеквизиты", ДопРеквизиты);
	
	Договор = Новый Структура("Значение, ИмяПКО", СтруктураДанныеДоговора, "Справочник_ДоговорыКонтрагентов_ИзСтруктуры");
	
	ПравилоОбработки = КомпонентыОбмена.ПравилаОбработкиДанных.Найти("Справочник_ДоговорыКонтрагентов_Отправка", "Имя");
	Если Не ПравилоОбработки = Неопределено Тогда
		ОбменДаннымиXDTOСервер.ВыгрузкаОбъектаВыборки(КомпонентыОбмена, СтруктураДанныеДоговора, ПравилоОбработки);
	КонецЕсли;
	
	Возврат Договор;
КонецФункции

Также потребуется добавить расширение в бухгалтерии с общим модулем "МенеджерОбменаЧерезУниверсальныйФормат13" и переинициализацией процедуры:

&Вместо("ОсновнойДоговорКонтрагента")
Функция РасшМОБ_ОсновнойДоговорКонтрагента(Объект, Организация, Контрагент, ВалютаВзаиморасчетов)

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

 

Выгрузка из БП3 в УТ11 правила обмена задваиваются договор задвоение договоров

См. также

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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    138010    759    292    

404

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

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

45650 руб.

04.08.2015    162665    368    273    

358

Перенос данных 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 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

45650 руб.

15.04.2019    70311    173    146    

116

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

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

28000 руб.

15.12.2021    21744    144    40    

104

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

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

45650 руб.

31.10.2014    234053    93    330    

301

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

Переход и перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:ERP Управление предприятием 2.5 и 1С:Комплексную автоматизацию 2.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.227.x), ERP 2.5 (2.5.16.x), КА 2.5 (2.5.16.x) .

28000 руб.

24.06.2020    62311    50    27    

80

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

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

28000 руб.

23.07.2020    48366    208    64    

170

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

14580 руб.

18.02.2016    184465    572    509    

516
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Кукуруза 20.10.20 07:11 Сейчас в теме
Добрый день. Попытался воспользоваться правилами обмена с УТ на базе БСО: Бухгалтерия строительной организации. Это конфигурация по сути БП3.0, только с добавленным функционалом. Обмен не проходит с ошибкой:

Ошибка в обработчике события ПередВыгрузкойОбъекта
ПКО = ПриобретениеТоваровУслуг (Документ: Поступление (акты, накладные))
Объект = Отражение НДС к вычету 26 от 21.06.2019 12:00:02 (Отражение НДС к вычету)
Обработчик = ПередВыгрузкойОбъекта
ОписаниеОшибки = Поле объекта не обнаружено (ВидОперации)
ПозицияМодуля = (1)
КодСообщения = 41

Есть ли возможность доработать правила за дополнительную плату?
2. Kitri 95 20.10.20 12:38 Сейчас в теме
(1)Добрый день.
Можете скинуть структуру вашей базы, её нужно выгрузить с помощью файла выгрузки MD83Exp.epf
Если у вас его нет, могу скинуть на почту.
3. Serge_ASB 14.11.20 22:09 Сейчас в теме
Добрый вечер.
Прочел, что стандартным путем, через синхронизацию (универсальный формат данных) из БП 3.0 в УТ 11 документы товарные из бухи не выгружаются. У меня выгрузились только касса и банк.
Будет ли данные правила обмена "работать" гарантированно, или нужно будет внутри бухгалтерии тоже что-то подкорректировать, в каких-нибудь общих модулях?
4. Kitri 95 15.11.20 11:10 Сейчас в теме
(3)Добрый день.
Трудно сказать будет ли гарантированно работать данный обмен, особенно если версии конфигурации отличаются, или отличается ведение учета.
Есть недавний пример, в базе БП в счетах-фактурах документами-основаниями являются "Поступления доп.расходов".
В данных правилах нет выгрузки документа "Поступления доп.расходов", поэтому выгрузка работать не будет.
Я сама долго искала хоть какого-нибудь примерного обмена, чтобы правила писать не с "нуля", но так и не нашла. Пришлось делать самой.
Поэтому данные правила - это скорее пример, чтобы было с чего стартовать.
6. Cherepovets 08.12.20 17:55 Сейчас в теме
(3) Через редактор реквизитов, установи в плане обмене выгрузку торговых документов к примеру, и обмен по ним заработает. Тут правильно написали, из БУХ в УТ не улетают документы по поступлению объектов строительства к примеру.
5. Serge_ASB 16.11.20 08:19 Сейчас в теме
А, вообще, странно, что 1С считает безусловным порядок, где БП является на 110% получателем документов, и никак, кроме банка и кассы - не их отправитель.
Не пробовали, все-таки, в конфе найти и "отключить" "отключатель" регистрации документов товародвижения к обмену?
7. ilay73 22.03.21 20:16 Сейчас в теме
Здравствуйте, в правилах обмена предусмотрена возможности выгрузки из БП 3 документа Ввод остатков (по товарам)?
8. Kitri 95 23.03.21 09:15 Сейчас в теме
(7)Добрый день.
Да, ввод по остаткам товаров есть.
9. nicxxx 254 17.04.21 00:48 Сейчас в теме
Не работают ваши правила. Ругаются на ВидОперации, ИдентификаторСтроки. Вероятно, правило пытается примениться к объектам, где этих реквизитов нет. Например, правило для ПоступлениеТоваровУслуг пытается примениться к документам ПоступлениеДопРасходов.
10. Kitri 95 17.04.21 08:55 Сейчас в теме
(9)Да, возможно так и есть. В моей базе, видно, не было этих документов и у меня не ругалась.
11. user970589 11 01.07.22 11:48 Сейчас в теме
можно актуализировать правила на текущий день? есть интерес, я бы скачал. а дорабатывать не хочется, не факт, что потяну.
12. Kitri 95 04.07.22 13:43 Сейчас в теме
(11) Добрый день.
Можно актуализировать. На какие релизы программ УТ и БП?
13. user970589 11 04.07.22 17:51 Сейчас в теме
14. Kitri 95 05.07.22 10:43 Сейчас в теме
(13)
3.0.109.57 данный релиз не выпускался в виде полного дистрибутива.
Как-то долго обновления ставить на ранний релиз.
А можете скинуть структуры конфигураций, у вас наверное базы с этими релизами развернуты.
Для получения структуры нужно вложенную обработку открыть в режиме предприятия (в обеих базах по очереди), указать путь к файлу с названием релиза и выгрузить данные.
Затем эти структуры присылайте мне, а я их подгружу в правила и сделаю всю необходимую замену.
Или можно заменить 3.0.109.57 на 3.0.109.61... у меня этот релиз стоит развернутый
Прикрепленные файлы:
MD83Exp.epf
15. user970589 11 05.07.22 18:04 Сейчас в теме
(14)
заменить 3.0.109.57 на 3.0.109.61
- это нетрудно. давайте тогда так и сделаем. а ут сейчас выгружаю
16. user970589 11 05.07.22 18:07 Сейчас в теме
17. user970589 11 07.07.22 02:51 Сейчас в теме
(14) добрый день. когда можно скачать результат? время..
18. Slovar 28.07.22 13:06 Сейчас в теме
Добрый день. Тоже интересует. Есть ли актуальные правила?
neva-finans; БСК; +2 Ответить
19. neva-finans 09.04.23 14:50 Сейчас в теме
Добрый день, актуализировать правила не планируете?
Хотел применить на 3.0.133.17 и 11.5.8.329
20. Kitri 95 10.04.23 08:54 Сейчас в теме
(19) Добрый день. В ближайшее время не планирую, много других задач.
21. user694474_sp2 03.09.23 16:19 Сейчас в теме
Не надо правила дописывать, п1 выполнить в УТ, дальше в правилах регистрации убрать отбор по организации и выгрузить все
22. user1782657 10.09.23 10:48 Сейчас в теме
День добрый! не обновляли?
1с бп 3.0.141.39
1с ут 11.5.8.263
Оставьте свое сообщение