gifts2017

Как ограничить типовой обмен УТ - БП по дате документов

Опубликовал Алексей Козаченко (borman) в раздел Программирование - Практика программирования

Довольно часто случается, что бухгалтер требует ограничить выгружаемые из УТ документы по дате (чаще всего только слева). Как это сделать быстро и без внесения изменений в конфигурации? Оказывается достаточно просто и без навыков в программировании.

На входе имеем: уже настроенный обмен УТ -> БП, первый обмен уже совершен, что не маловажно.

Для начала открываем в УТ справочник "Настройки обмена данными" и выбираем нужную настройку. Находим и нажимаем кнопку "Сохранить правила в файл" и собственно сохраняем правила в файл.

Сохранение/загрузка правил

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

Далее можно идти двумя путями.

Сложный путь. Для тех, кто хочет понимать что делает.

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

             ДатаНачала = УзелДляОбмена.ДатаНачалаВыгрузкиДокументов;

             ВвестиДату(ДатаНачала,"Введите дату начала",ЧастиДаты.Дата);                       

             Параметры.Вставить("ДатаНачалаВыгрузкиДокументов",ДатаНачала);

Редактирование конвертации

      4. Сохраняем и выгружаем новые правила в файл.

      5. Заменяем в УТ правила обмена на новые.

 

Простой путь.

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

ДатаНачала = УзелДляОбмена.ДатаНачалаВыгрузкиДокументов; ВвестиДату(ДатаНачала,"Введите дату начала",ЧастиДаты.Дата); Параметры.Вставить("ДатаНачалаВыгрузкиДокументов",ДатаНачала);

Сохраняем изменения. В конфигурации УТ производим обратную загрузку правил обмена в настройку.


Готово, пользуйтесь на здоровье.

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Роман Мишкин (smilejka) 11.07.12 09:32
А почему просто в настройках обмена не указать дату начала выгрузки документов?

Смотреть

Зачем свой велосипед изобретать?
2. Сергей Ожерельев (Поручик) 11.07.12 09:52
(1) Потому, что эта дата выставляется один раз при настройке обмена, ранее неё идет сворачивание базы.
3. Alex Misanets (Misanets) 11.07.12 09:54
(1) smilejka, ну нет, автор предлагает механизм универсальный не требующий постоянных изменений правил.
4. Роман Мишкин (smilejka) 11.07.12 09:58
(2) Поручик,
Дату можно менять через определенный период - срабатывает. Проверено личным опытом - при начальной настройке стояла дата 01.01.2012. В конце 1 квартала поставил дату 01.04.2012 - при перепроведении документов за март - они не выгружаются.
5. Сергей Ожерельев (Поручик) 11.07.12 09:59
(3) Ага, вот как раз правила требуется постоянно обновлять, с каждым релизом управления торговлей или бухгалтерии предприятия.
6. Роман Мишкин (smilejka) 11.07.12 10:09
(3) Misanets,
А что же это по Вашему, как не корректировка правил... Поручик правильно заметил: при обновлении - правила обновляются и их снова нужно редактировать.
7. Алексей Козаченко (borman) 11.07.12 11:24
(1) Вы совершенно правы. Думаю статейку надо удалить, как не актуальную.
Век живи - век учись :)
8. Tiger77 (Tiger77) 11.07.12 14:20
Статейка все же нужная, как пример фильтрации документов по другим реквизитам.
antares_of; +1 Ответить
9. Евгений Федоров (FedorovEvg) 14.07.12 16:45
Если статья предназначена новичкам, то им действительно придется обновлять правила каждый раз после обновления. Не есть гуд.
Если статья предназначена программистам, то они сами разберутся с конвертацией, ничего сложного в ней нет, есть книжки+есть довольно подробная справка.
В самой конвертации есть примеры разных фильтров и возможностей.
Нужность статьи не понимаю.
10. Максим Некрасов (SiriusM) 17.07.12 22:42
попробуйте по моему скрину, должно работать, в настройках узла..., для меня с каждым обменом какой-нибудь сюрприз)))
Прикрепленные файлы:
11. Алексей Лапицкий (Lapitskiy) 16.10.12 20:23
Даже если ограничить выгрузку датой, то у узла останется "навечно" память об объектах, которые нужно было когда-то выгрузить, и если случайно как-то не укажем "дату с...", то весь многолетний "ворох" доков и справочников полезет прямо в БУХ.
12. Владимир Б (antares_of) 29.10.12 11:14
Статья во первых действительно полезна как пример фильтрации. А во вторых, то что нужно менять каждый раз при обновлении это проблема программиста. Но есть же еще и пользователь, который не хочет каждый раз искать правила и менять там дату. Да и вообще может по просту забывать это делать и тогда каждый раз будут проблемы и выгружать придется по сто раз, да и еще возможно исправлять потом всю базу.
13. Стервятник (Elected) 14.10.15 16:05
Спасибо за статью! Раньше был настроен автоматический обмен между УТ и БП. Затирались доки в БП, которые зачем-то редактировались бухгалтерами. Сделал, чтобы был ручной обмен и все довольны!
14. WWWolfy (WWWolfy) 29.08.16 13:43
Может кому пригодится.
В УТ10 добавил код в процедуру
Общие модули - ПроцедурыОбменаДанными - ПроизвестиОбменДаннымиПоНастройке()
Доработка меняет дату ДатаНачалаВыгрузкиДокументов в узле (должны быть права) на основе даты запрета редактирования (границы).
Код сработает при любом обмене - вручную или по регламенту.

Должна стоять галка "Применять дату запрета редактирования для полных прав" (в настройках учёта),
иначе ГраницыЗапретаИзмененияДанных будет всегда Неопределено и тогда даты по Организациям надо получать запросом.

// Процедура поизводит обмен данными по настройке обмена
Процедура ПроизвестиОбменДаннымиПоНастройке(СтруктураНастроекОбменаДанными)
	
//MURDerобмен меняем дату ДатаНачалаВыгрузкиДокументов  для того, чтобы не выгружались старые данные
СоответствиеГраницЗапрета = ПараметрыСеанса.ГраницыЗапретаИзмененияДанных.Получить();
// Для пользователя с полными правами проверок выполнять не нужно
Если НЕ (СоответствиеГраницЗапрета = Неопределено) Тогда
	текУзел = СтруктураНастроекОбменаДанными.ДанныеНастройки.УзелИнформационнойБазы;
	ДатаУзла = текУзел.ДатаНачалаВыгрузкиДокументов;
	ДатаМаксимум = ДатаУзла;

	спОрганизации = текУзел.Организации;
	Для Каждого текОрганизация из спОрганизации Цикл
		ГраницаПоОрганизации = СоответствиеГраницЗапрета[текОрганизация.Организация];
		// Если определена то используется общая дата запрета изменения данных
		Если ГраницаПоОрганизации = Неопределено Тогда
			ГраницаПоОрганизации = СоответствиеГраницЗапрета["ОбщаяДатаЗапретаРедактирования"];
		КонецЕсли;
		
		Если НЕ ГраницаПоОрганизации = Неопределено Тогда
			ДатаМаксимум = Макс(ДатаМаксимум, ГраницаПоОрганизации);
		КонецЕсли;		
	КонецЦикла;
	//исправляем
	Если ДатаУзла<ДатаМаксимум Тогда
		обУзел = текУзел.ПолучитьОбъект();
		обУзел.ДатаНачалаВыгрузкиДокументов = НачалоДня(ДатаМаксимум+1); //
		обУзел.Записать();
	КонецЕсли;
КонецЕсли;
...Показать Скрыть