Эксель в умелых руках 1сника
fixin — 17.08.2016Была у меня такая задача - клиент предоставил список платежек, которые нужно было зарегистрировать в УТ, чтобы они мигрировали в БП. Они не попали туда из-за сбоев обмена.
Список был большой, порядка 300 документов, регистрировать вручную было неразумно.
Поэтому я прямо в Экселе сгенерировал код для 1С формулой вида:
=СЦЕПИТЬ("ЗАРЕГИСТРИРОВАТЬППИ("""; G2;""",'";ТЕКСТ(F2;"ГГГГММДД");"');")
На рисунке полученный код в последней колонке. Осталось только вставить код в обработку и запустить!
Такой метод часто применяется для решения разовых задач. Код 1С под катом.
Еще нюанс в том, что нужно было обрабатывать только выделенные желтым строки. Но их можно было отфильтровать автофильтром.
Проблема возникла в другом - в БП эти данные упорно не грузились. На саму обработку регистрации потратил полчаса и еще час, чтобы понять, почему. Все оказалось просто - в БП3 есть дата запрета загрузки. Увидел сообщения в журнале регистрации вида "Дате 25.09.2015 соответствует запрет загрузки данных для информационной базы "Управление торговлей, ред" по 30.06.2016 (установлена общая дата запрета)".
А так пока не залез в ЖР, дошел даже до того, что загрузил правила обмена в КД, думал, там какая-то заточка зашита. Бывает, иногда подтупливаю.
В форме по кнопке просто вызываю процедуру для каждой платежки и если она найдена, регистрирую ее на узле обмена.
Процедура КнопкаВыполнитьНажатие(Кнопка)
ЗАРЕГИСТРИРОВАТЬППИ("М0000005695",'20150908');
ЗАРЕГИСТРИРОВАТЬППИ("М0000005696",'20150909');
ЗАРЕГИСТРИРОВАТЬППИ("М0000005697",'20150910');
....
....
ЗАРЕГИСТРИРОВАТЬППИ("",'20151120');
ЗАРЕГИСТРИРОВАТЬППИ("",'20151218');
ЗАРЕГИСТРИРОВАТЬППИ("",'20160122');
ЗАРЕГИСТРИРОВАТЬППИ("",'20160219');
ЗАРЕГИСТРИРОВАТЬППИ("",'20160321');
КонецПроцедуры
Функция ЗАРЕГИСТРИРОВАТЬППИ(Номер,Дата)
Если ЗначениеЗаполнено(Номер) Тогда
З = Новый Запрос(
"ВЫБРАТЬ
| Т.Ссылка,
| Т.Дата,
| Т.Контрагент
|ИЗ
| Документ.ПлатежноеПоручениеВходящее КАК Т
|ГДЕ
| НАЧАЛОПЕРИОДА(Т.Дата, ДЕНЬ) = &Дата
| И Т.Номер = &Номер");
Иначе
З = Новый Запрос(
"ВЫБРАТЬ
| Т.Ссылка,
| Т.Дата,
| Т.Контрагент
|ИЗ
| Документ.ПлатежныйОрдерСписаниеДенежныхСредств
КАК Т
|ГДЕ
| НАЧАЛОПЕРИОДА(Т.Дата, ДЕНЬ) = &Дата
| И Т.Контрагент.Наименование = ""Рога и
Ко""");
КонецЕсли;
З.УстановитьПараметр("Номер", Номер);
З.УстановитьПараметр("Дата", Дата);
Выборка = З.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ИскДокумент = Выборка.Ссылка;
Сообщить(ИскДокумент);
ИскУзел =
ПланыОбмена.ОбменУправлениеТорговлей103БухгалтерияПредприятия30.НайтиПоКоду("002");
ПланыОбмена.ЗарегистрироватьИзменения(ИскУзел,
ИскДокумент);
Иначе
Сообщить("Не найден документ: " + Номер + " " +
Дата);
КонецЕсли;
КонецФункции
|
</> |