Эксель в умелых руках 1сника

топ 100 блогов fixin17.08.2016

Была у меня такая задача - клиент предоставил список платежек, которые нужно было зарегистрировать в УТ, чтобы они мигрировали в БП. Они не попали туда из-за сбоев обмена.

Список был большой, порядка 300 документов, регистрировать вручную было неразумно.

Эксель в умелых руках 1сника

Поэтому я прямо в Экселе сгенерировал код для 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");
  ПланыОбмена.ЗарегистрироватьИзменения(ИскУзел, ИскДокумент);
 Иначе
  Сообщить("Не найден документ: " + Номер + " " + Дата);
 КонецЕсли;
КонецФункции

Оставить комментарий

Архив записей в блогах:
Только не гуглить и в справочники/словари не лазать. Будем максимально честными. Как бы вы написали в_пол_уха? View Poll: итак, как пишется в_пол_уха Update. На всякий случай: опрос автор блога проводит не с целью унизить/обидеть или продемонстрировать свой бесконечный ...
Сегодня особенный день. Трагический и радостный.Радостный - день снятия блокады ...
Хотела написать про борьбу с пианино, я тут задумалась что у меня не получается толком разобрать ни одну классическую пьесу — играешь ее две недели, а она почти как новая, по нотам еще ничего, но запомнить не получается ни кусочка. Ради эксперимента я попробовала разучить джазовый ...
Доктор мне не только разрешил, но и посоветовал ходить. Проходя мимо библиотеки, набрал себе новых книжек. Эта детская, для изучающих немецкий. Начинается на французском, о том, как мальчик приехал в Берлин, к нему начинают обращаться по-немецки, но он понимает через слово, ...
дорогие друзья, мы ищем произведение литературы эротического содержания для ...